diff --git a/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/freeswitch/FreeswitchApplication.java b/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/freeswitch/FreeswitchApplication.java index cf2944b48957fb20d069650d360b68a1a4135e9e..c31f6768acce51c4cb15b6469a4e678157b5b6f9 100755 --- a/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/freeswitch/FreeswitchApplication.java +++ b/akka-bbb-fsesl/src/main/java/org/bigbluebutton/freeswitch/voice/freeswitch/FreeswitchApplication.java @@ -153,6 +153,11 @@ public class FreeswitchApplication { EjectAllUsersCommand cmd = (EjectAllUsersCommand) command; System.out.println("Sending EjectAllUsersCommand for conference = [" + cmd.getRoom() + "]"); manager.ejectAll(cmd); + } else if (command instanceof TransferUsetToMeetingCommand) { + TransferUsetToMeetingCommand cmd = (TransferUsetToMeetingCommand) command; + System.out.println("Sending TransferUsetToMeetingCommand for conference = [" + + cmd.getRoom() + "]"); + manager.tranfer(cmd); } else if (command instanceof RecordConferenceCommand) { manager.record((RecordConferenceCommand) command); } else if (command instanceof DeskShareBroadcastRTMPCommand) { diff --git a/bbb-screenshare/app/src/main/java/org/bigbluebutton/app/screenshare/red5/Red5AppService.java b/bbb-screenshare/app/src/main/java/org/bigbluebutton/app/screenshare/red5/Red5AppService.java index 5e12768b6f707b48ebbda62d4b01b9dda12e2513..a95ec614e3a9700afb308914a1bf7f3165f3eec9 100755 --- a/bbb-screenshare/app/src/main/java/org/bigbluebutton/app/screenshare/red5/Red5AppService.java +++ b/bbb-screenshare/app/src/main/java/org/bigbluebutton/app/screenshare/red5/Red5AppService.java @@ -1,88 +1,103 @@ -package org.bigbluebutton.app.screenshare.red5; - -import java.util.HashMap; -import java.util.Map; - -import org.red5.logging.Red5LoggerFactory; -import org.red5.server.api.Red5; -import org.slf4j.Logger; - -import com.google.gson.Gson; - - -public class Red5AppService { - private static Logger log = Red5LoggerFactory.getLogger(Red5AppService.class, "screenshare"); - - private Red5AppHandler handler; - - /** - * Called from the client to pass us the userId. - * - * We need to do this as we can't have params on the connect call - * as FFMpeg won't be able to connect. - * @param userId - */ - public void setUserId(Map<String, Object> msg) { - String meetingId = Red5.getConnectionLocal().getScope().getName(); - String userId = (String) msg.get("userId"); - - Red5.getConnectionLocal().setAttribute("MEETING_ID", meetingId); - Red5.getConnectionLocal().setAttribute("USERID", userId); - - String connType = getConnectionType(Red5.getConnectionLocal().getType()); - String connId = Red5.getConnectionLocal().getSessionId(); - - Map<String, Object> logData = new HashMap<String, Object>(); - logData.put("meetingId", meetingId); - logData.put("userId", userId); - logData.put("connType", connType); - logData.put("connId", connId); - logData.put("event", "user_joining_bbb_screenshare"); - logData.put("description", "User joining BBB Screenshare."); - - Gson gson = new Gson(); - String logStr = gson.toJson(logData); - - log.info("User joining bbb-screenshare: data={}", logStr); - } - - private String getConnectionType(String connType) { - if ("persistent".equals(connType.toLowerCase())) { - return "RTMP"; - } else if("polling".equals(connType.toLowerCase())) { - return "RTMPT"; - } else { - return connType.toUpperCase(); - } - } - - public void isScreenSharing(Map<String, Object> msg) { - String meetingId = Red5.getConnectionLocal().getScope().getName(); - log.debug("Received check if publishing for meeting=[{}]", meetingId); - String userId = (String) Red5.getConnectionLocal().getAttribute("USERID"); - - handler.isScreenSharing(meetingId, userId); - } - - public void startShareRequest(Map<String, Object> msg) { - Boolean record = (Boolean) msg.get("record"); - String meetingId = Red5.getConnectionLocal().getScope().getName(); - log.debug("Received startShareRequest for meeting=[{}]", meetingId); - String userId = (String) Red5.getConnectionLocal().getAttribute("USERID"); - - handler.startShareRequest(meetingId, userId, record); - } - - public void stopShareRequest(Map<String, Object> msg) { - String meetingId = Red5.getConnectionLocal().getScope().getName(); - String streamId = (String) msg.get("streamId"); - log.debug("Received stopShareRequest for meeting=[{}]", meetingId); - - handler.stopShareRequest(meetingId, streamId); - } - - - public void setAppHandler(Red5AppHandler handler) { - this.handler = handler; - } -} +package org.bigbluebutton.app.screenshare.red5; + +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +import org.red5.logging.Red5LoggerFactory; +import org.red5.server.api.IConnection; +import org.red5.server.api.Red5; +import org.slf4j.Logger; + +import com.google.gson.Gson; + + +public class Red5AppService { + private static Logger log = Red5LoggerFactory.getLogger(Red5AppService.class, "screenshare"); + + private Red5AppHandler handler; + + /** + * Called from the client to pass us the userId. + * + * We need to do this as we can't have params on the connect call + * as FFMpeg won't be able to connect. + * @param userId + */ + public void setUserId(Map<String, Object> msg) { + String meetingId = Red5.getConnectionLocal().getScope().getName(); + String userId = (String) msg.get("userId"); + + String connType = getConnectionType(Red5.getConnectionLocal().getType()); + String sessionId = Red5.getConnectionLocal().getSessionId(); + + /** + * Find if there are any other connections owned by this user. If we find one, + * that means that the connection is old and the user reconnected. Clear the + * userId attribute so that messages would not be sent in the defunct connection. + */ + Set<IConnection> conns = Red5.getConnectionLocal().getScope().getClientConnections(); + for (IConnection conn : conns) { + String connUserId = (String) conn.getAttribute("USERID"); + if (connUserId != null && connUserId.equals(userId) && conn.getSessionId().equals(sessionId)) { + conn.removeAttribute("USERID"); + } + } + + Red5.getConnectionLocal().setAttribute("MEETING_ID", meetingId); + Red5.getConnectionLocal().setAttribute("USERID", userId); + + Map<String, Object> logData = new HashMap<String, Object>(); + logData.put("meetingId", meetingId); + logData.put("userId", userId); + logData.put("connType", connType); + logData.put("connId", sessionId); + logData.put("event", "user_joining_bbb_screenshare"); + logData.put("description", "User joining BBB Screenshare."); + + Gson gson = new Gson(); + String logStr = gson.toJson(logData); + + log.info("User joining bbb-screenshare: data={}", logStr); + } + + private String getConnectionType(String connType) { + if ("persistent".equals(connType.toLowerCase())) { + return "RTMP"; + } else if("polling".equals(connType.toLowerCase())) { + return "RTMPT"; + } else { + return connType.toUpperCase(); + } + } + + public void isScreenSharing(Map<String, Object> msg) { + String meetingId = Red5.getConnectionLocal().getScope().getName(); + log.debug("Received check if publishing for meeting=[{}]", meetingId); + String userId = (String) Red5.getConnectionLocal().getAttribute("USERID"); + + handler.isScreenSharing(meetingId, userId); + } + + public void startShareRequest(Map<String, Object> msg) { + Boolean record = (Boolean) msg.get("record"); + String meetingId = Red5.getConnectionLocal().getScope().getName(); + log.debug("Received startShareRequest for meeting=[{}]", meetingId); + String userId = (String) Red5.getConnectionLocal().getAttribute("USERID"); + + handler.startShareRequest(meetingId, userId, record); + } + + public void stopShareRequest(Map<String, Object> msg) { + String meetingId = Red5.getConnectionLocal().getScope().getName(); + String streamId = (String) msg.get("streamId"); + log.debug("Received stopShareRequest for meeting=[{}]", meetingId); + + handler.stopShareRequest(meetingId, streamId); + } + + + public void setAppHandler(Red5AppHandler handler) { + this.handler = handler; + } +} diff --git a/bigbluebutton-client/build.xml b/bigbluebutton-client/build.xml index 4a1f8c3f9c5b7846e6a0838d1a5d72195fa00180..b847072fe6ba52ac7ca4e782f1005b95fd2e0ac6 100755 --- a/bigbluebutton-client/build.xml +++ b/bigbluebutton-client/build.xml @@ -441,10 +441,12 @@ <copy todir="${OUTPUT_DIR}/lib/" > <fileset dir="${PROD_RESOURCES_DIR}/lib"/> </copy> + <copy todir="${OUTPUT_DIR}/help/" > + <fileset dir="${PROD_RESOURCES_DIR}/help"/> + </copy> <copy file="${PROD_RESOURCES_DIR}/BigBlueButtonTest.html" todir="${OUTPUT_DIR}" overwrite="true"/> <copy file="${PROD_RESOURCES_DIR}/BigBlueButton.html" todir="${OUTPUT_DIR}" overwrite="true"/> <copy file="${PROD_RESOURCES_DIR}/DeskshareStandalone.html" todir="${OUTPUT_DIR}" overwrite="true"/> - <copy file="${PROD_RESOURCES_DIR}/screenshare-help.html" todir="${OUTPUT_DIR}" overwrite="true"/> <copy file="${PROD_RESOURCES_DIR}/get_flash_player.gif" todir="${OUTPUT_DIR}" overwrite="true"/> <copy file="${PROD_RESOURCES_DIR}/bbb.gif" todir="${OUTPUT_DIR}" overwrite="true"/> <copy file="${PROD_RESOURCES_DIR}/avatar.png" todir="${OUTPUT_DIR}" overwrite="true"/> diff --git a/bigbluebutton-client/locale/en_US/bbbResources.properties b/bigbluebutton-client/locale/en_US/bbbResources.properties index 360f6d7177c3bab3bd1034baef2bd6256e72eb9f..467349955e342b2abb36ca7d4581ba8ea9b43441 100755 --- a/bigbluebutton-client/locale/en_US/bbbResources.properties +++ b/bigbluebutton-client/locale/en_US/bbbResources.properties @@ -436,6 +436,8 @@ bbb.caption.window.minimizeBtn.accessibilityName = Minimize the Closed Caption W bbb.caption.window.maximizeRestoreBtn.accessibilityName = Maximize the Closed Caption Window bbb.caption.transcript.noowner = None bbb.caption.transcript.youowner = You +bbb.caption.transcript.pastewarning.title = Caption Paste Warning +bbb.caption.transcript.pastewarning.text = Cannot paste text longer than {0} characters. You pasted {1} characters. bbb.caption.option.label = Options bbb.caption.option.language = Language: bbb.caption.option.language.tooltip = Select Caption Language diff --git a/bigbluebutton-client/resources/config.xml.template b/bigbluebutton-client/resources/config.xml.template index f0c7f77e4a152a77085b7e8db392e12b5650f925..093d326a93d5c438ed29845d70313b479a8bd075 100755 --- a/bigbluebutton-client/resources/config.xml.template +++ b/bigbluebutton-client/resources/config.xml.template @@ -49,7 +49,7 @@ autoStart="false" autoFullScreen="false" baseTabIndex="201" - help="http://HOST/client/screenshare-help.html" + help="http://HOST/client/help/screenshare-help.html" /> <module name="PhoneModule" url="http://HOST/client/PhoneModule.swf?v=VERSION" @@ -118,6 +118,7 @@ <module name="CaptionModule" url="http://HOST/client/CaptionModule.swf?v=VERSION" uri="rtmp://HOST/bigbluebutton" dependsOn="UsersModule" + maxPasteLength="1024" baseTabIndex="701" /> diff --git a/bigbluebutton-client/resources/prod/BigBlueButton.html b/bigbluebutton-client/resources/prod/BigBlueButton.html index ef5304de6b66b4ec7f72a4baf2d8d49b350fbdc6..c2bdad7cbfbebe38dac37cd4513e8781934c6370 100755 --- a/bigbluebutton-client/resources/prod/BigBlueButton.html +++ b/bigbluebutton-client/resources/prod/BigBlueButton.html @@ -141,7 +141,7 @@ // and reuse them to join via the HTML5 client enterRequest = $.ajax({ dataType: 'json', - url: '/bigbluebutton/api/enter' + url: '/bigbluebutton/api/enter' + document.location.search }); enterRequest.done(function(enterData) { @@ -152,7 +152,7 @@ if ((meetingId != null) && (userId != null) && (authToken != null)) { // redirect to the html5 client with the received info // format <IP>/html5client/<meetingId>/<userId>/<authToken> - document.location.pathname = "/html5client/"+meetingId+"/"+userId+"/"+authToken; + document.location.pathname = "/html5client/join/"+meetingId+"/"+userId+"/"+authToken; } else { // go back to the redirection page document.location.pathname = originalPath; diff --git a/bigbluebutton-client/resources/prod/help/CSS/bbb-bootstrap.css b/bigbluebutton-client/resources/prod/help/CSS/bbb-bootstrap.css new file mode 100755 index 0000000000000000000000000000000000000000..28e01bd002612450e90c072382752a1484125e76 --- /dev/null +++ b/bigbluebutton-client/resources/prod/help/CSS/bbb-bootstrap.css @@ -0,0 +1,116 @@ +/*! + * This stylesheet is a subset of Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ + +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: bold; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; +} +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #2b542c; +} +.alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #245269; +} +.alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.alert-warning hr { + border-top-color: #f7e1b5; +} +.alert-warning .alert-link { + color: #66512c; +} +.alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.alert-danger hr { + border-top-color: #e4b9c0; +} +.alert-danger .alert-link { + color: #843534; +} +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; +} +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; +} +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; +} +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .15s linear; +} +.fade.in { + opacity: 1; +} diff --git a/bigbluebutton-client/resources/prod/help/CSS/bijou.min.css b/bigbluebutton-client/resources/prod/help/CSS/bijou.min.css new file mode 100755 index 0000000000000000000000000000000000000000..a30102f7e0157fe7991f58a2c186f4810cd9e3cd --- /dev/null +++ b/bigbluebutton-client/resources/prod/help/CSS/bijou.min.css @@ -0,0 +1,241 @@ +a { + font-size:.95em; + text-decoration:none; + color:#5f90b0 +} +a:hover { + color:#406882 +} +* { + margin:0; + padding:0; + font-family:"Helvetica Neue",Helvetica,Arial,sans-serif; + -webkit-box-sizing:border-box; + -moz-box-sizing:border-box; + box-sizing:border-box +} +.container { + width:1000px; + margin:0 auto +} +.pull-left { + float:left +} +.pull-right { + float:right +} +.row { + min-height:2em; + line-height:2em; + width:100% +} +.span { + float:left; + display:inline; + min-height:1em; + margin:0 .5% 20px +} +.span:four-child { + margin-left:0 +} +.span:last-child { + margin-right:0 +} +.one { + width:8% +} +.two { + width:16% +} +.three { + width:24% +} +.four { + width:32% +} +.five { + width:40% +} +.six { + width:48% +} +.seven { + width:56% +} +.eight { + width:64% +} +.nine { + width:72% +} +.ten { + width:80% +} +.eleven { + width:88% +} +.twelve { + width:100% +} +.container:after { + content:"\0020"; + display:block; + height:0; + clear:both; + visibility:hidden +} +.row:after,.row:before { + content:'\0020'; + display:block; + overflow:hidden; + visibility:hidden; + width:0; + height:0 +} +.row:after { + clear:both +} +.row { + zoom:1 +} +h1,h2,h3,h4,h5,h6 { + font-weight:400; + color:#42444c +} +h1 { + font-size:2.5em; + line-height:1em +} +h2 { + font-size:1.75em; + line-height:1em; + margin-bottom:.375em +} +h3 { + font-size:1.125em +} +h4 { + font-size:1.1em; + font-weight:700 +} +.table { + width:100%; + border-spacing:0; + border-collapse:collapse; + text-align:left +} +.table td,.table th { + border-bottom:2px #d1d1d1 solid; + padding:8px 12px +} +.table td { + border-bottom:1px #d4d4d4 solid +} +.table.table-striped tbody tr:nth-child(2n+1) { + background-color:#f3f3f3 +} +.table.table-bordered,.table.table-bordered td,.table.table-bordered th { + border:1px solid #CCC +} +.button { + border:0; + border-radius:4px; + outline:0; + cursor:pointer +} +.button.small { + padding:7px 20px; + font-size:.95em +} +.button.large { + padding:10px 45px; + font-size:1.1em +} +.button.primary { + color:#FFF; + background:#5f90b0 +} +.button.primary:hover { + background:#5589ab +} +.button.success { + color:#FFF; + background:#4daf7c +} +.button.success:hover { + background:#48a474 +} +.button.danger { + color:#FFF; + background:#e6623c +} +.button.danger:hover { + background:#e4572e +} +.navbar { + background:#FFF; + padding:10px; + margin-bottom:60px; + border-bottom:1px #F2F2F2 solid; + text-align:center +} +.navbar h4 { + color:#191919; + font-weight:200 +} +.navbar li { + display:inline-block; + padding:.3em 15px 0 0 +} +.navbar li:last-child { + padding-right:0 +} +.navbar.fixed { + position:fixed; + left:0; + right:0; + top:0 +} +.alert { + padding:15px; + margin:10px 0; + border-radius:3px +} +.alert.primary { + background:#e8eff3; + border:1px solid #c5d7e3 +} +.alert.success { + background:#daeee4; + border:1px solid #b6dfca +} +.alert.danger { + background:#fdf4f1; + border:1px solid #f7cfc4 +} +@media only screen and (min-width:768px) and (max-width:999px) { + .container { + width:768px + } +} +@media only screen and (max-width:767px) { + .container { + width:300px + } + .container .span { + width:100%!important + } + .container .table { + width:100%; + display:block; + overflow:auto + } +} +@media only screen and (min-width:480px) and (max-width:767px) { + .container { + width:420px + } + .container .table { + display:table + } +} diff --git a/bigbluebutton-client/resources/prod/help/CSS/css b/bigbluebutton-client/resources/prod/help/CSS/css new file mode 100755 index 0000000000000000000000000000000000000000..f538889b193a3d6d920b04faf0676cc2c87bc007 --- /dev/null +++ b/bigbluebutton-client/resources/prod/help/CSS/css @@ -0,0 +1,8 @@ +/* latin */ +@font-face { + font-family: 'Rokkitt'; + font-style: normal; + font-weight: 400; + src: local('Rokkitt'), local('Rokkitt-Regular'), url(http://fonts.gstatic.com/s/rokkitt/v10/o9LMKUV9IIiOIghfS6ZGbALUuEpTyoUstqEm5AMlJo4.woff2) format('woff2'); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2212, U+2215, U+E0FF, U+EFFD, U+F000; +} diff --git a/bigbluebutton-client/resources/prod/help/CSS/diggdigg-style.css b/bigbluebutton-client/resources/prod/help/CSS/diggdigg-style.css new file mode 100755 index 0000000000000000000000000000000000000000..7d204e7906840bda1c63784e6b9b8cec70163e4d --- /dev/null +++ b/bigbluebutton-client/resources/prod/help/CSS/diggdigg-style.css @@ -0,0 +1,284 @@ +.FBConnectButton_Small,.FBConnectButton_RTL_Small { + border-left:1px solid #1a356e; + width:54px; + background:-5px -232px!important +} + +.FBConnectButton_Small .FBConnectButton_Text { + margin-left:12px!important +} + +.dd-digg-ajax-load,.dd-reddit-ajax-load,.dd-dzone-ajax-load,.dd-ybuzz-ajax-load,.dd-twitter-ajax-load,.dd-fbshare-ajax-load,.dd-fblike-ajax-load,.dd-delicious-ajax-load,.dd-sphinn-ajax-load,.dd-gbuzz-ajax-load,.dd-fbshareme-ajax-load,.dd-tweetmeme-ajax-load,.dd-linkedin-ajax-load,.dd-google1-ajax-load { + width:50px; + height:22px; + background:url(../image/ajax-loader.gif) no-repeat center +} + +.dd_delicious { + display:block; + color:#000; + font:16px arial; + text-decoration:none; + width:50px; + height:60px; + text-align:center +} + +.dd_delicious a:link,.dd_delicious a:visited,.dd_delicious a:active,.dd_delicious a:hover { + text-decoration:none; + color:#000 +} + +.dd_delicious_normal_image { + text-align:center; + height:60px; + margin-top:3px; + padding:0; + text-align:center; + width:50px; + display:block; + background:url(../image/delicious.png) no-repeat +} + +.dd_delicious_compact_image { + text-align:center; + height:22px; + padding:0; + text-align:center; + width:50px; + display:block; + background:url(../image/delicious-compact.png) no-repeat +} + +.dd_delicious_compact_image span { + font-size:10px +} + +.dd_comments { + text-align:center; + height:16px; + margin-top:3px; + padding:0; + text-align:center; + width:50px; + display:block; + background:url(../image/comments-link.png) no-repeat +} + +.dd_button a:link,.dd_button a:visited,.dd_button a:active { + text-decoration:none; + color:#000 +} + +#dd_ajax_float { + text-align:center; + border:1px solid #bbb; + min-width:55px; + width:auto; + -webkit-border-top-right-radius:5px; + -webkit-border-bottom-right-radius:5px; + -webkit-border-bottom-left-radius:5px; + -webkit-border-top-left-radius:5px; + -moz-border-radius-topright:5px; + -moz-border-radius-bottomright:5px; + -moz-border-radius-bottomleft:5px; + -moz-border-radius-topleft:5px; + border-top-right-radius:5px; + border-bottom-right-radius:5px; + border-bottom-left-radius:5px; + border-top-left-radius:5px; + -moz-background-clip:padding; + -webkit-background-clip:padding-box; + -webkit-box-shadow:1px 0 15px rgba(0,0,0,.2); + -moz-box-shadow:1px 0 15px rgba(0,0,0,.2); + box-shadow:1px 0 15px rgba(0,0,0,.2); + padding:5px; + position:absolute; + display:none; + left:-120px; + font:10px/16px Arial; + background:padding-box #fff +} + +#dd_ajax_float .dd_button_v { + width:auto; + height:auto; + line-height:0; + padding:4px 1px +} + +#dd_ajax_float iframe { + margin:0 +} + +#dd_start,#dd_end { + float:left; + clear:both +} + +.dd_outer { + width:100%; + height:0; + position:absolute; + top:0; + left:0; + z-index:9999 +} + +.dd_inner { + margin:0 auto; + position:relative +} + +.dd_post_share { + padding:0; + margin-bottom:6px; + display:block +} + +.dd_post_share_left { + float:left +} + +.dd_post_share_right { + float:right +} + +.dd_buttons img { + border:none; + border-width:0; + border-color:#000; + border-style:none +} + +#dd_name { + color:#a9a9a9; + font-size:8px; + text-align:center; + margin:8px 0 6px; + padding:0; + line-height:0 +} + +#dd_name a:link,#dd_name a:visited,#dd_name a:active { + text-decoration:none; + color:#a9a9a9; + border:0 +} + +#dd_name a:hover { + text-decoration:underline; + color:#a9a9a9; + border:0 +} + +.dd_button { + float:left; + padding:4px +} + +.dd_fblike_xfbml_ajax_left_float { + padding-left:3px +} + +.dd_google1_ajax_left_float { + margin-left:-1px +} + +.dd_linkedin_ajax_left_float { + margin-left:-2px; + margin-bottom:-5px +} + +html { + overflow-y:scroll +} + +.dd_button_spacer { + padding-top:8px +} + +#dd_comments { + clear:both!important; + width:50px; + height:60px; + font-family:arial +} + +#dd_comments a:link,#dd_comments a:visited,#dd_comments a:active,#dd_comments a:hover { + text-decoration:none +} + +#dd_comments .clcount { + text-align:center; + color:#444; + display:block; + font-size:20px; + height:34px; + padding:4px 0; + position:relative; + text-align:center; + width:50px; + line-height:24px; + background:url(../image/comments-count.png) no-repeat left top +} + +#dd_comments .ccount { + color:#444; + font-size:17px; + text-align:center; + text-decoration:none +} + +#dd_comments .clink { + text-align:center; + height:16px; + margin-top:3px; + padding:0; + text-align:center; + width:50px; + display:block; + background:url(../image/comments-link.png) no-repeat +} + +.dd_button_extra_v { + padding:1px 4px +} + +.st_email_custom { + padding:2px 4px 3px; + border:1px solid #ddd; + -moz-border-radius:2px; + cursor:pointer; + margin-bottom:2px; + background:url(../image/email.png) no-repeat 3px 4px +} + +#dd_print_button { + padding:1px 4px 3px; + border:1px solid #ddd; + -moz-border-radius:2px; + cursor:pointer; + margin-bottom:2px; + background:url(../image/print.png) no-repeat 3px 2px +} + +#dd_email_text { + padding:0 0 0 18px; + font-size:10px +} + +#dd_print_text { + padding:0 0 0 14px; + font-size:10px +} + +#dd_print_text a:link,#dd_print_text a:visited,#dd_print_text a:active { + color:#000; + text-decoration:none +} + +#dd_print_text a:hover { + color:#00f; + text-decoration:underline +} \ No newline at end of file diff --git a/bigbluebutton-client/resources/prod/help/CSS/facebook-comments-hidewpcomments.css b/bigbluebutton-client/resources/prod/help/CSS/facebook-comments-hidewpcomments.css new file mode 100755 index 0000000000000000000000000000000000000000..d3067856e025d5d9118c764707d7ec834a00d730 --- /dev/null +++ b/bigbluebutton-client/resources/prod/help/CSS/facebook-comments-hidewpcomments.css @@ -0,0 +1,9 @@ +@charset "UTF-8"; + +/*****************************/ +/* Hide the WordPress commenting form +/*****************************/ + +#respond, #commentform, #addcomment, .entry-comments { + display: none; +} diff --git a/bigbluebutton-client/resources/prod/help/CSS/facebook-comments-widgets.css b/bigbluebutton-client/resources/prod/help/CSS/facebook-comments-widgets.css new file mode 100755 index 0000000000000000000000000000000000000000..26a36b005d6db3c6f8c2c702117654221997395a --- /dev/null +++ b/bigbluebutton-client/resources/prod/help/CSS/facebook-comments-widgets.css @@ -0,0 +1,77 @@ +@charset "UTF-8"; + +/*****************************/ +/* Dashboard widget styles +/*****************************/ + + +/*****************************/ +/* Normal, page widget styles + + displayed here in order rendered +/*****************************/ +/* Each post is styled as follows: +<li class="fbc_rc_comment old/even"> + <div class="fbc_rc_comment-meta"> + <cite class="fbc_rc_comment-author"> + <a href="https://www.facebook.com/profile.php?id=FACEBOOKID"> + USERNAME + </a> + </cite> + <abbr class="fbc_rc_date"> + Date/Time + </abbr> + </div> + <img class="avatar" height="50" width="50" /> + <div class="fbc_rc_text"> + COMMENT CONTENT + </div> + <div class="fbc_rc_permalink"> + <a href=permalink> + Post or Page Title + </a> + </div> +</li> +*/ + +/* Main widget, which is enclosed in a ul */ +#fbc_rc_widget { + width: auto; + margin-left:0 !important; /* override WP default */ +} +li.fbc_rc_comment { + min-height: 80px; /* to prevent overlap */ + height:100%; + position:relative; + margin:2px; + border-bottom: 1px dotted rgba(88,88,88,1); +} +/* odd and even are so you can style alternating posts differently, if you'd like to */ +ul#fbc_rc_widget li.odd { } +ul#fbc_rc_widget li.even { + background-color:rgba(222,222,251,1); +}/* change to float:left to display avatars on the left of comments */ + +/* encloses both author and date */ +.fbc_rc_comment-meta { } +.fbc_rc_comment-author { } +.fbc_rc_date { + font-size:.8em; +} + +ul#fbc_rc_widget .avatar { + float: right; /* change to float:left to display avatars on the left of comments */ + padding-bottom: 2px; +} + +/* main comment text */ +.fbc_rc_text { + margin: 5px; + padding-bottom:25px; /* to prevent post titles from overlapping with comment text */ +} + +.fbc_rc_permalink { + position: absolute; + bottom: 2px; +} + diff --git a/bigbluebutton-client/resources/prod/help/CSS/font-awesome.min.css b/bigbluebutton-client/resources/prod/help/CSS/font-awesome.min.css new file mode 100755 index 0000000000000000000000000000000000000000..99250931937678981f7448a4749074ed51631983 --- /dev/null +++ b/bigbluebutton-client/resources/prod/help/CSS/font-awesome.min.css @@ -0,0 +1,1495 @@ +/*! + * Font Awesome 4.1.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face { + font-family:'FontAwesome'; + src:url('../fonts/fontawesome-webfont.eot?v=4.1.0'); + src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.1.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff?v=4.1.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.1.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.1.0#fontawesomeregular') format('svg'); + font-weight:normal; + font-style:normal +} +.fa { + display:inline-block; + font-family:FontAwesome; + font-style:normal; + font-weight:normal; + line-height:1; + -webkit-font-smoothing:antialiased; + -moz-osx-font-smoothing:grayscale +} +.fa-lg { + font-size:1.33333333em; + line-height:.75em; + vertical-align:-15% +} +.fa-2x { + font-size:2em +} +.fa-3x { + font-size:3em +} +.fa-4x { + font-size:4em +} +.fa-5x { + font-size:5em +} +.fa-fw { + width:1.28571429em; + text-align:center +} +.fa-ul { + padding-left:0; + margin-left:2.14285714em; + list-style-type:none +} +.fa-ul>li { + position:relative +} +.fa-li { + position:absolute; + left:-2.14285714em; + width:2.14285714em; + top:.14285714em; + text-align:center +} +.fa-li.fa-lg { + left:-1.85714286em +} +.fa-border { + padding:.2em .25em .15em; + border:solid .08em #eee; + border-radius:.1em +} +.pull-right { + float:right +} +.pull-left { + float:left +} +.fa.pull-left { + margin-right:.3em +} +.fa.pull-right { + margin-left:.3em +} +.fa-spin { + -webkit-animation:spin 2s infinite linear; + -moz-animation:spin 2s infinite linear; + -o-animation:spin 2s infinite linear; + animation:spin 2s infinite linear +} +@-moz-keyframes spin { + 0% { + -moz-transform:rotate(0deg) + } + 100% { + -moz-transform:rotate(359deg) + } +} +@-webkit-keyframes spin { + 0% { + -webkit-transform:rotate(0deg) + } + 100% { + -webkit-transform:rotate(359deg) + } +} +@-o-keyframes spin { + 0% { + -o-transform:rotate(0deg) + } + 100% { + -o-transform:rotate(359deg) + } +} +@keyframes spin { + 0% { + -webkit-transform:rotate(0deg); + transform:rotate(0deg) + } + 100% { + -webkit-transform:rotate(359deg); + transform:rotate(359deg) + } +} +.fa-rotate-90 { + filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform:rotate(90deg); + -moz-transform:rotate(90deg); + -ms-transform:rotate(90deg); + -o-transform:rotate(90deg); + transform:rotate(90deg) +} +.fa-rotate-180 { + filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform:rotate(180deg); + -moz-transform:rotate(180deg); + -ms-transform:rotate(180deg); + -o-transform:rotate(180deg); + transform:rotate(180deg) +} +.fa-rotate-270 { + filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform:rotate(270deg); + -moz-transform:rotate(270deg); + -ms-transform:rotate(270deg); + -o-transform:rotate(270deg); + transform:rotate(270deg) +} +.fa-flip-horizontal { + filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -webkit-transform:scale(-1, 1); + -moz-transform:scale(-1, 1); + -ms-transform:scale(-1, 1); + -o-transform:scale(-1, 1); + transform:scale(-1, 1) +} +.fa-flip-vertical { + filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -webkit-transform:scale(1, -1); + -moz-transform:scale(1, -1); + -ms-transform:scale(1, -1); + -o-transform:scale(1, -1); + transform:scale(1, -1) +} +.fa-stack { + position:relative; + display:inline-block; + width:2em; + height:2em; + line-height:2em; + vertical-align:middle +} +.fa-stack-1x,.fa-stack-2x { + position:absolute; + left:0; + width:100%; + text-align:center +} +.fa-stack-1x { + line-height:inherit +} +.fa-stack-2x { + font-size:2em +} +.fa-inverse { + color:#fff +} +.fa-glass:before { + content:"\f000" +} +.fa-music:before { + content:"\f001" +} +.fa-search:before { + content:"\f002" +} +.fa-envelope-o:before { + content:"\f003" +} +.fa-heart:before { + content:"\f004" +} +.fa-star:before { + content:"\f005" +} +.fa-star-o:before { + content:"\f006" +} +.fa-user:before { + content:"\f007" +} +.fa-film:before { + content:"\f008" +} +.fa-th-large:before { + content:"\f009" +} +.fa-th:before { + content:"\f00a" +} +.fa-th-list:before { + content:"\f00b" +} +.fa-check:before { + content:"\f00c" +} +.fa-times:before { + content:"\f00d" +} +.fa-search-plus:before { + content:"\f00e" +} +.fa-search-minus:before { + content:"\f010" +} +.fa-power-off:before { + content:"\f011" +} +.fa-signal:before { + content:"\f012" +} +.fa-gear:before,.fa-cog:before { + content:"\f013" +} +.fa-trash-o:before { + content:"\f014" +} +.fa-home:before { + content:"\f015" +} +.fa-file-o:before { + content:"\f016" +} +.fa-clock-o:before { + content:"\f017" +} +.fa-road:before { + content:"\f018" +} +.fa-download:before { + content:"\f019" +} +.fa-arrow-circle-o-down:before { + content:"\f01a" +} +.fa-arrow-circle-o-up:before { + content:"\f01b" +} +.fa-inbox:before { + content:"\f01c" +} +.fa-play-circle-o:before { + content:"\f01d" +} +.fa-rotate-right:before,.fa-repeat:before { + content:"\f01e" +} +.fa-refresh:before { + content:"\f021" +} +.fa-list-alt:before { + content:"\f022" +} +.fa-lock:before { + content:"\f023" +} +.fa-flag:before { + content:"\f024" +} +.fa-headphones:before { + content:"\f025" +} +.fa-volume-off:before { + content:"\f026" +} +.fa-volume-down:before { + content:"\f027" +} +.fa-volume-up:before { + content:"\f028" +} +.fa-qrcode:before { + content:"\f029" +} +.fa-barcode:before { + content:"\f02a" +} +.fa-tag:before { + content:"\f02b" +} +.fa-tags:before { + content:"\f02c" +} +.fa-book:before { + content:"\f02d" +} +.fa-bookmark:before { + content:"\f02e" +} +.fa-print:before { + content:"\f02f" +} +.fa-camera:before { + content:"\f030" +} +.fa-font:before { + content:"\f031" +} +.fa-bold:before { + content:"\f032" +} +.fa-italic:before { + content:"\f033" +} +.fa-text-height:before { + content:"\f034" +} +.fa-text-width:before { + content:"\f035" +} +.fa-align-left:before { + content:"\f036" +} +.fa-align-center:before { + content:"\f037" +} +.fa-align-right:before { + content:"\f038" +} +.fa-align-justify:before { + content:"\f039" +} +.fa-list:before { + content:"\f03a" +} +.fa-dedent:before,.fa-outdent:before { + content:"\f03b" +} +.fa-indent:before { + content:"\f03c" +} +.fa-video-camera:before { + content:"\f03d" +} +.fa-photo:before,.fa-image:before,.fa-picture-o:before { + content:"\f03e" +} +.fa-pencil:before { + content:"\f040" +} +.fa-map-marker:before { + content:"\f041" +} +.fa-adjust:before { + content:"\f042" +} +.fa-tint:before { + content:"\f043" +} +.fa-edit:before,.fa-pencil-square-o:before { + content:"\f044" +} +.fa-share-square-o:before { + content:"\f045" +} +.fa-check-square-o:before { + content:"\f046" +} +.fa-arrows:before { + content:"\f047" +} +.fa-step-backward:before { + content:"\f048" +} +.fa-fast-backward:before { + content:"\f049" +} +.fa-backward:before { + content:"\f04a" +} +.fa-play:before { + content:"\f04b" +} +.fa-pause:before { + content:"\f04c" +} +.fa-stop:before { + content:"\f04d" +} +.fa-forward:before { + content:"\f04e" +} +.fa-fast-forward:before { + content:"\f050" +} +.fa-step-forward:before { + content:"\f051" +} +.fa-eject:before { + content:"\f052" +} +.fa-chevron-left:before { + content:"\f053" +} +.fa-chevron-right:before { + content:"\f054" +} +.fa-plus-circle:before { + content:"\f055" +} +.fa-minus-circle:before { + content:"\f056" +} +.fa-times-circle:before { + content:"\f057" +} +.fa-check-circle:before { + content:"\f058" +} +.fa-question-circle:before { + content:"\f059" +} +.fa-info-circle:before { + content:"\f05a" +} +.fa-crosshairs:before { + content:"\f05b" +} +.fa-times-circle-o:before { + content:"\f05c" +} +.fa-check-circle-o:before { + content:"\f05d" +} +.fa-ban:before { + content:"\f05e" +} +.fa-arrow-left:before { + content:"\f060" +} +.fa-arrow-right:before { + content:"\f061" +} +.fa-arrow-up:before { + content:"\f062" +} +.fa-arrow-down:before { + content:"\f063" +} +.fa-mail-forward:before,.fa-share:before { + content:"\f064" +} +.fa-expand:before { + content:"\f065" +} +.fa-compress:before { + content:"\f066" +} +.fa-plus:before { + content:"\f067" +} +.fa-minus:before { + content:"\f068" +} +.fa-asterisk:before { + content:"\f069" +} +.fa-exclamation-circle:before { + content:"\f06a" +} +.fa-gift:before { + content:"\f06b" +} +.fa-leaf:before { + content:"\f06c" +} +.fa-fire:before { + content:"\f06d" +} +.fa-eye:before { + content:"\f06e" +} +.fa-eye-slash:before { + content:"\f070" +} +.fa-warning:before,.fa-exclamation-triangle:before { + content:"\f071" +} +.fa-plane:before { + content:"\f072" +} +.fa-calendar:before { + content:"\f073" +} +.fa-random:before { + content:"\f074" +} +.fa-comment:before { + content:"\f075" +} +.fa-magnet:before { + content:"\f076" +} +.fa-chevron-up:before { + content:"\f077" +} +.fa-chevron-down:before { + content:"\f078" +} +.fa-retweet:before { + content:"\f079" +} +.fa-shopping-cart:before { + content:"\f07a" +} +.fa-folder:before { + content:"\f07b" +} +.fa-folder-open:before { + content:"\f07c" +} +.fa-arrows-v:before { + content:"\f07d" +} +.fa-arrows-h:before { + content:"\f07e" +} +.fa-bar-chart-o:before { + content:"\f080" +} +.fa-twitter-square:before { + content:"\f081" +} +.fa-facebook-square:before { + content:"\f082" +} +.fa-camera-retro:before { + content:"\f083" +} +.fa-key:before { + content:"\f084" +} +.fa-gears:before,.fa-cogs:before { + content:"\f085" +} +.fa-comments:before { + content:"\f086" +} +.fa-thumbs-o-up:before { + content:"\f087" +} +.fa-thumbs-o-down:before { + content:"\f088" +} +.fa-star-half:before { + content:"\f089" +} +.fa-heart-o:before { + content:"\f08a" +} +.fa-sign-out:before { + content:"\f08b" +} +.fa-linkedin-square:before { + content:"\f08c" +} +.fa-thumb-tack:before { + content:"\f08d" +} +.fa-external-link:before { + content:"\f08e" +} +.fa-sign-in:before { + content:"\f090" +} +.fa-trophy:before { + content:"\f091" +} +.fa-github-square:before { + content:"\f092" +} +.fa-upload:before { + content:"\f093" +} +.fa-lemon-o:before { + content:"\f094" +} +.fa-phone:before { + content:"\f095" +} +.fa-square-o:before { + content:"\f096" +} +.fa-bookmark-o:before { + content:"\f097" +} +.fa-phone-square:before { + content:"\f098" +} +.fa-twitter:before { + content:"\f099" +} +.fa-facebook:before { + content:"\f09a" +} +.fa-github:before { + content:"\f09b" +} +.fa-unlock:before { + content:"\f09c" +} +.fa-credit-card:before { + content:"\f09d" +} +.fa-rss:before { + content:"\f09e" +} +.fa-hdd-o:before { + content:"\f0a0" +} +.fa-bullhorn:before { + content:"\f0a1" +} +.fa-bell:before { + content:"\f0f3" +} +.fa-certificate:before { + content:"\f0a3" +} +.fa-hand-o-right:before { + content:"\f0a4" +} +.fa-hand-o-left:before { + content:"\f0a5" +} +.fa-hand-o-up:before { + content:"\f0a6" +} +.fa-hand-o-down:before { + content:"\f0a7" +} +.fa-arrow-circle-left:before { + content:"\f0a8" +} +.fa-arrow-circle-right:before { + content:"\f0a9" +} +.fa-arrow-circle-up:before { + content:"\f0aa" +} +.fa-arrow-circle-down:before { + content:"\f0ab" +} +.fa-globe:before { + content:"\f0ac" +} +.fa-wrench:before { + content:"\f0ad" +} +.fa-tasks:before { + content:"\f0ae" +} +.fa-filter:before { + content:"\f0b0" +} +.fa-briefcase:before { + content:"\f0b1" +} +.fa-arrows-alt:before { + content:"\f0b2" +} +.fa-group:before,.fa-users:before { + content:"\f0c0" +} +.fa-chain:before,.fa-link:before { + content:"\f0c1" +} +.fa-cloud:before { + content:"\f0c2" +} +.fa-flask:before { + content:"\f0c3" +} +.fa-cut:before,.fa-scissors:before { + content:"\f0c4" +} +.fa-copy:before,.fa-files-o:before { + content:"\f0c5" +} +.fa-paperclip:before { + content:"\f0c6" +} +.fa-save:before,.fa-floppy-o:before { + content:"\f0c7" +} +.fa-square:before { + content:"\f0c8" +} +.fa-navicon:before,.fa-reorder:before,.fa-bars:before { + content:"\f0c9" +} +.fa-list-ul:before { + content:"\f0ca" +} +.fa-list-ol:before { + content:"\f0cb" +} +.fa-strikethrough:before { + content:"\f0cc" +} +.fa-underline:before { + content:"\f0cd" +} +.fa-table:before { + content:"\f0ce" +} +.fa-magic:before { + content:"\f0d0" +} +.fa-truck:before { + content:"\f0d1" +} +.fa-pinterest:before { + content:"\f0d2" +} +.fa-pinterest-square:before { + content:"\f0d3" +} +.fa-google-plus-square:before { + content:"\f0d4" +} +.fa-google-plus:before { + content:"\f0d5" +} +.fa-money:before { + content:"\f0d6" +} +.fa-caret-down:before { + content:"\f0d7" +} +.fa-caret-up:before { + content:"\f0d8" +} +.fa-caret-left:before { + content:"\f0d9" +} +.fa-caret-right:before { + content:"\f0da" +} +.fa-columns:before { + content:"\f0db" +} +.fa-unsorted:before,.fa-sort:before { + content:"\f0dc" +} +.fa-sort-down:before,.fa-sort-desc:before { + content:"\f0dd" +} +.fa-sort-up:before,.fa-sort-asc:before { + content:"\f0de" +} +.fa-envelope:before { + content:"\f0e0" +} +.fa-linkedin:before { + content:"\f0e1" +} +.fa-rotate-left:before,.fa-undo:before { + content:"\f0e2" +} +.fa-legal:before,.fa-gavel:before { + content:"\f0e3" +} +.fa-dashboard:before,.fa-tachometer:before { + content:"\f0e4" +} +.fa-comment-o:before { + content:"\f0e5" +} +.fa-comments-o:before { + content:"\f0e6" +} +.fa-flash:before,.fa-bolt:before { + content:"\f0e7" +} +.fa-sitemap:before { + content:"\f0e8" +} +.fa-umbrella:before { + content:"\f0e9" +} +.fa-paste:before,.fa-clipboard:before { + content:"\f0ea" +} +.fa-lightbulb-o:before { + content:"\f0eb" +} +.fa-exchange:before { + content:"\f0ec" +} +.fa-cloud-download:before { + content:"\f0ed" +} +.fa-cloud-upload:before { + content:"\f0ee" +} +.fa-user-md:before { + content:"\f0f0" +} +.fa-stethoscope:before { + content:"\f0f1" +} +.fa-suitcase:before { + content:"\f0f2" +} +.fa-bell-o:before { + content:"\f0a2" +} +.fa-coffee:before { + content:"\f0f4" +} +.fa-cutlery:before { + content:"\f0f5" +} +.fa-file-text-o:before { + content:"\f0f6" +} +.fa-building-o:before { + content:"\f0f7" +} +.fa-hospital-o:before { + content:"\f0f8" +} +.fa-ambulance:before { + content:"\f0f9" +} +.fa-medkit:before { + content:"\f0fa" +} +.fa-fighter-jet:before { + content:"\f0fb" +} +.fa-beer:before { + content:"\f0fc" +} +.fa-h-square:before { + content:"\f0fd" +} +.fa-plus-square:before { + content:"\f0fe" +} +.fa-angle-double-left:before { + content:"\f100" +} +.fa-angle-double-right:before { + content:"\f101" +} +.fa-angle-double-up:before { + content:"\f102" +} +.fa-angle-double-down:before { + content:"\f103" +} +.fa-angle-left:before { + content:"\f104" +} +.fa-angle-right:before { + content:"\f105" +} +.fa-angle-up:before { + content:"\f106" +} +.fa-angle-down:before { + content:"\f107" +} +.fa-desktop:before { + content:"\f108" +} +.fa-laptop:before { + content:"\f109" +} +.fa-tablet:before { + content:"\f10a" +} +.fa-mobile-phone:before,.fa-mobile:before { + content:"\f10b" +} +.fa-circle-o:before { + content:"\f10c" +} +.fa-quote-left:before { + content:"\f10d" +} +.fa-quote-right:before { + content:"\f10e" +} +.fa-spinner:before { + content:"\f110" +} +.fa-circle:before { + content:"\f111" +} +.fa-mail-reply:before,.fa-reply:before { + content:"\f112" +} +.fa-github-alt:before { + content:"\f113" +} +.fa-folder-o:before { + content:"\f114" +} +.fa-folder-open-o:before { + content:"\f115" +} +.fa-smile-o:before { + content:"\f118" +} +.fa-frown-o:before { + content:"\f119" +} +.fa-meh-o:before { + content:"\f11a" +} +.fa-gamepad:before { + content:"\f11b" +} +.fa-keyboard-o:before { + content:"\f11c" +} +.fa-flag-o:before { + content:"\f11d" +} +.fa-flag-checkered:before { + content:"\f11e" +} +.fa-terminal:before { + content:"\f120" +} +.fa-code:before { + content:"\f121" +} +.fa-mail-reply-all:before,.fa-reply-all:before { + content:"\f122" +} +.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before { + content:"\f123" +} +.fa-location-arrow:before { + content:"\f124" +} +.fa-crop:before { + content:"\f125" +} +.fa-code-fork:before { + content:"\f126" +} +.fa-unlink:before,.fa-chain-broken:before { + content:"\f127" +} +.fa-question:before { + content:"\f128" +} +.fa-info:before { + content:"\f129" +} +.fa-exclamation:before { + content:"\f12a" +} +.fa-superscript:before { + content:"\f12b" +} +.fa-subscript:before { + content:"\f12c" +} +.fa-eraser:before { + content:"\f12d" +} +.fa-puzzle-piece:before { + content:"\f12e" +} +.fa-microphone:before { + content:"\f130" +} +.fa-microphone-slash:before { + content:"\f131" +} +.fa-shield:before { + content:"\f132" +} +.fa-calendar-o:before { + content:"\f133" +} +.fa-fire-extinguisher:before { + content:"\f134" +} +.fa-rocket:before { + content:"\f135" +} +.fa-maxcdn:before { + content:"\f136" +} +.fa-chevron-circle-left:before { + content:"\f137" +} +.fa-chevron-circle-right:before { + content:"\f138" +} +.fa-chevron-circle-up:before { + content:"\f139" +} +.fa-chevron-circle-down:before { + content:"\f13a" +} +.fa-html5:before { + content:"\f13b" +} +.fa-css3:before { + content:"\f13c" +} +.fa-anchor:before { + content:"\f13d" +} +.fa-unlock-alt:before { + content:"\f13e" +} +.fa-bullseye:before { + content:"\f140" +} +.fa-ellipsis-h:before { + content:"\f141" +} +.fa-ellipsis-v:before { + content:"\f142" +} +.fa-rss-square:before { + content:"\f143" +} +.fa-play-circle:before { + content:"\f144" +} +.fa-ticket:before { + content:"\f145" +} +.fa-minus-square:before { + content:"\f146" +} +.fa-minus-square-o:before { + content:"\f147" +} +.fa-level-up:before { + content:"\f148" +} +.fa-level-down:before { + content:"\f149" +} +.fa-check-square:before { + content:"\f14a" +} +.fa-pencil-square:before { + content:"\f14b" +} +.fa-external-link-square:before { + content:"\f14c" +} +.fa-share-square:before { + content:"\f14d" +} +.fa-compass:before { + content:"\f14e" +} +.fa-toggle-down:before,.fa-caret-square-o-down:before { + content:"\f150" +} +.fa-toggle-up:before,.fa-caret-square-o-up:before { + content:"\f151" +} +.fa-toggle-right:before,.fa-caret-square-o-right:before { + content:"\f152" +} +.fa-euro:before,.fa-eur:before { + content:"\f153" +} +.fa-gbp:before { + content:"\f154" +} +.fa-dollar:before,.fa-usd:before { + content:"\f155" +} +.fa-rupee:before,.fa-inr:before { + content:"\f156" +} +.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before { + content:"\f157" +} +.fa-ruble:before,.fa-rouble:before,.fa-rub:before { + content:"\f158" +} +.fa-won:before,.fa-krw:before { + content:"\f159" +} +.fa-bitcoin:before,.fa-btc:before { + content:"\f15a" +} +.fa-file:before { + content:"\f15b" +} +.fa-file-text:before { + content:"\f15c" +} +.fa-sort-alpha-asc:before { + content:"\f15d" +} +.fa-sort-alpha-desc:before { + content:"\f15e" +} +.fa-sort-amount-asc:before { + content:"\f160" +} +.fa-sort-amount-desc:before { + content:"\f161" +} +.fa-sort-numeric-asc:before { + content:"\f162" +} +.fa-sort-numeric-desc:before { + content:"\f163" +} +.fa-thumbs-up:before { + content:"\f164" +} +.fa-thumbs-down:before { + content:"\f165" +} +.fa-youtube-square:before { + content:"\f166" +} +.fa-youtube:before { + content:"\f167" +} +.fa-xing:before { + content:"\f168" +} +.fa-xing-square:before { + content:"\f169" +} +.fa-youtube-play:before { + content:"\f16a" +} +.fa-dropbox:before { + content:"\f16b" +} +.fa-stack-overflow:before { + content:"\f16c" +} +.fa-instagram:before { + content:"\f16d" +} +.fa-flickr:before { + content:"\f16e" +} +.fa-adn:before { + content:"\f170" +} +.fa-bitbucket:before { + content:"\f171" +} +.fa-bitbucket-square:before { + content:"\f172" +} +.fa-tumblr:before { + content:"\f173" +} +.fa-tumblr-square:before { + content:"\f174" +} +.fa-long-arrow-down:before { + content:"\f175" +} +.fa-long-arrow-up:before { + content:"\f176" +} +.fa-long-arrow-left:before { + content:"\f177" +} +.fa-long-arrow-right:before { + content:"\f178" +} +.fa-apple:before { + content:"\f179" +} +.fa-windows:before { + content:"\f17a" +} +.fa-android:before { + content:"\f17b" +} +.fa-linux:before { + content:"\f17c" +} +.fa-dribbble:before { + content:"\f17d" +} +.fa-skype:before { + content:"\f17e" +} +.fa-foursquare:before { + content:"\f180" +} +.fa-trello:before { + content:"\f181" +} +.fa-female:before { + content:"\f182" +} +.fa-male:before { + content:"\f183" +} +.fa-gittip:before { + content:"\f184" +} +.fa-sun-o:before { + content:"\f185" +} +.fa-moon-o:before { + content:"\f186" +} +.fa-archive:before { + content:"\f187" +} +.fa-bug:before { + content:"\f188" +} +.fa-vk:before { + content:"\f189" +} +.fa-weibo:before { + content:"\f18a" +} +.fa-renren:before { + content:"\f18b" +} +.fa-pagelines:before { + content:"\f18c" +} +.fa-stack-exchange:before { + content:"\f18d" +} +.fa-arrow-circle-o-right:before { + content:"\f18e" +} +.fa-arrow-circle-o-left:before { + content:"\f190" +} +.fa-toggle-left:before,.fa-caret-square-o-left:before { + content:"\f191" +} +.fa-dot-circle-o:before { + content:"\f192" +} +.fa-wheelchair:before { + content:"\f193" +} +.fa-vimeo-square:before { + content:"\f194" +} +.fa-turkish-lira:before,.fa-try:before { + content:"\f195" +} +.fa-plus-square-o:before { + content:"\f196" +} +.fa-space-shuttle:before { + content:"\f197" +} +.fa-slack:before { + content:"\f198" +} +.fa-envelope-square:before { + content:"\f199" +} +.fa-wordpress:before { + content:"\f19a" +} +.fa-openid:before { + content:"\f19b" +} +.fa-institution:before,.fa-bank:before,.fa-university:before { + content:"\f19c" +} +.fa-mortar-board:before,.fa-graduation-cap:before { + content:"\f19d" +} +.fa-yahoo:before { + content:"\f19e" +} +.fa-google:before { + content:"\f1a0" +} +.fa-reddit:before { + content:"\f1a1" +} +.fa-reddit-square:before { + content:"\f1a2" +} +.fa-stumbleupon-circle:before { + content:"\f1a3" +} +.fa-stumbleupon:before { + content:"\f1a4" +} +.fa-delicious:before { + content:"\f1a5" +} +.fa-digg:before { + content:"\f1a6" +} +.fa-pied-piper-square:before,.fa-pied-piper:before { + content:"\f1a7" +} +.fa-pied-piper-alt:before { + content:"\f1a8" +} +.fa-drupal:before { + content:"\f1a9" +} +.fa-joomla:before { + content:"\f1aa" +} +.fa-language:before { + content:"\f1ab" +} +.fa-fax:before { + content:"\f1ac" +} +.fa-building:before { + content:"\f1ad" +} +.fa-child:before { + content:"\f1ae" +} +.fa-paw:before { + content:"\f1b0" +} +.fa-spoon:before { + content:"\f1b1" +} +.fa-cube:before { + content:"\f1b2" +} +.fa-cubes:before { + content:"\f1b3" +} +.fa-behance:before { + content:"\f1b4" +} +.fa-behance-square:before { + content:"\f1b5" +} +.fa-steam:before { + content:"\f1b6" +} +.fa-steam-square:before { + content:"\f1b7" +} +.fa-recycle:before { + content:"\f1b8" +} +.fa-automobile:before,.fa-car:before { + content:"\f1b9" +} +.fa-cab:before,.fa-taxi:before { + content:"\f1ba" +} +.fa-tree:before { + content:"\f1bb" +} +.fa-spotify:before { + content:"\f1bc" +} +.fa-deviantart:before { + content:"\f1bd" +} +.fa-soundcloud:before { + content:"\f1be" +} +.fa-database:before { + content:"\f1c0" +} +.fa-file-pdf-o:before { + content:"\f1c1" +} +.fa-file-word-o:before { + content:"\f1c2" +} +.fa-file-excel-o:before { + content:"\f1c3" +} +.fa-file-powerpoint-o:before { + content:"\f1c4" +} +.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before { + content:"\f1c5" +} +.fa-file-zip-o:before,.fa-file-archive-o:before { + content:"\f1c6" +} +.fa-file-sound-o:before,.fa-file-audio-o:before { + content:"\f1c7" +} +.fa-file-movie-o:before,.fa-file-video-o:before { + content:"\f1c8" +} +.fa-file-code-o:before { + content:"\f1c9" +} +.fa-vine:before { + content:"\f1ca" +} +.fa-codepen:before { + content:"\f1cb" +} +.fa-jsfiddle:before { + content:"\f1cc" +} +.fa-life-bouy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before { + content:"\f1cd" +} +.fa-circle-o-notch:before { + content:"\f1ce" +} +.fa-ra:before,.fa-rebel:before { + content:"\f1d0" +} +.fa-ge:before,.fa-empire:before { + content:"\f1d1" +} +.fa-git-square:before { + content:"\f1d2" +} +.fa-git:before { + content:"\f1d3" +} +.fa-hacker-news:before { + content:"\f1d4" +} +.fa-tencent-weibo:before { + content:"\f1d5" +} +.fa-qq:before { + content:"\f1d6" +} +.fa-wechat:before,.fa-weixin:before { + content:"\f1d7" +} +.fa-send:before,.fa-paper-plane:before { + content:"\f1d8" +} +.fa-send-o:before,.fa-paper-plane-o:before { + content:"\f1d9" +} +.fa-history:before { + content:"\f1da" +} +.fa-circle-thin:before { + content:"\f1db" +} +.fa-header:before { + content:"\f1dc" +} +.fa-paragraph:before { + content:"\f1dd" +} +.fa-sliders:before { + content:"\f1de" +} +.fa-share-alt:before { + content:"\f1e0" +} +.fa-share-alt-square:before { + content:"\f1e1" +} +.fa-bomb:before { + content:"\f1e2" +} diff --git a/bigbluebutton-client/resources/prod/help/CSS/inlinestylesheet0 b/bigbluebutton-client/resources/prod/help/CSS/inlinestylesheet0 new file mode 100755 index 0000000000000000000000000000000000000000..7b034f12bc3f58c347f21b367fec9386ffa72b46 --- /dev/null +++ b/bigbluebutton-client/resources/prod/help/CSS/inlinestylesheet0 @@ -0,0 +1,3 @@ +.SandboxRoot { + display: none; +} diff --git a/bigbluebutton-client/resources/prod/help/CSS/inlinestylesheetnum10 b/bigbluebutton-client/resources/prod/help/CSS/inlinestylesheetnum10 new file mode 100755 index 0000000000000000000000000000000000000000..fc5475dea9e7ef8001a4c67f199d7a1479d02fe3 --- /dev/null +++ b/bigbluebutton-client/resources/prod/help/CSS/inlinestylesheetnum10 @@ -0,0 +1,35 @@ +.home-highlights .home-highlights-content { +overflow: hidden; +margin-bottom: 20px; +color: #464646; +} + +.home-highlights h4 { +margin: 0; +font-size: 160%; +line-height: 120%; +color: #30406b; +} + +h1, h2, h3, h4, h5, h6 { +font-family: 'Open Sans', sans-serif !important; + +} + +h1.overview { +font-family: "Open Sans","Lucida Grande","Lucida Sans Unicode",Helvetica,Arial,sans-serif; + +} + +img.aligncenter { +padding: 2px; +} + +span.post-comment iframe { + width:150px !important; +} + +.post-meta .post-comment{ + background: none!important; + padding-left:0px; +} \ No newline at end of file diff --git a/bigbluebutton-client/resources/prod/help/CSS/inlinestylesheetnum5 b/bigbluebutton-client/resources/prod/help/CSS/inlinestylesheetnum5 new file mode 100755 index 0000000000000000000000000000000000000000..00233919680be61f7310b04c1f46c97574a2c5d3 --- /dev/null +++ b/bigbluebutton-client/resources/prod/help/CSS/inlinestylesheetnum5 @@ -0,0 +1,13 @@ + +img.wp-smiley, +img.emoji { + display: inline !important; + border: none !important; + box-shadow: none !important; + height: 1em !important; + width: 1em !important; + margin: 0 .07em !important; + vertical-align: -0.1em !important; + background: none !important; + padding: 0 !important; +} diff --git a/bigbluebutton-client/resources/prod/help/CSS/inlinestylesheetnum9 b/bigbluebutton-client/resources/prod/help/CSS/inlinestylesheetnum9 new file mode 100755 index 0000000000000000000000000000000000000000..bfa7043cac45e3ba905459ad96fe5a39423adff9 --- /dev/null +++ b/bigbluebutton-client/resources/prod/help/CSS/inlinestylesheetnum9 @@ -0,0 +1,75 @@ + +#headerwrap { +background-image: none; +background-color: #dbebf6; +} + +#nav-bar { +background-image: url(http://r2.bigbluebutton.org/wp-content/themes/suco/uploads/bg/bg1.png); +background-color: #30406b; +background-repeat: repeat-x; +} + +#upperwrap { +background-image: url(http://r2.bigbluebutton.org/wp-content/themes/suco/uploads/bg/bg1.png); +background-color: #F4F4F4 ; +} + +.home-highlightswrap { +background-image: none; +background-color: #fff; +} + +#body { +background-image: none; +background-color: #ffffff; +} + +.footer-widgetswrap { +background-image: none; +background-color: #262626; +} + +#footerwrap { +background-image: none; +background-color: #2a2a2a; +} + +h1 { +font-family: Arial, Helvetica, sans-serif; +color: #00445e; +} + +h2 { +font-family: Arial, Helvetica, sans-serif; +color: #00445e; +} + +h3 { +font-family: Arial, Helvetica, sans-serif; +color: #00445e; +} + +h4 { +font-family: Arial, Helvetica, sans-serif; +color: #30406b; +} + +h5 { +font-family: Arial, Helvetica, sans-serif; +color: #30406b; +} + +h6 { +font-family: Arial, Helvetica, sans-serif; +} + +#main-nav a:hover, #main-nav li:hover > a { +color: #fff; +} + +#main-nav .current_page_item a, #main-nav .current-menu-item a { +color: #fff; +background-color: #1a243f; +} + diff --git a/bigbluebutton-client/resources/prod/help/CSS/media-queries.css b/bigbluebutton-client/resources/prod/help/CSS/media-queries.css new file mode 100755 index 0000000000000000000000000000000000000000..955cc8e598563a98df2483294249f2163432d6d9 --- /dev/null +++ b/bigbluebutton-client/resources/prod/help/CSS/media-queries.css @@ -0,0 +1,470 @@ +@media screen and (max-width: 980px) { + + /* set img max-width */ + img { + width: auto\9; /* ie8 */ + max-width: 100%; + height: auto; + } + + /************************************************************************************ + STRUCTURE + *************************************************************************************/ + .pagewidth, #slider { + max-width: 94%; + } + + /* content */ + #content { + margin: 7% 0 5%; + } + .sidebar1 #content { + max-width: 67.8%; + } + + /* sidebar */ + #sidebar { + margin: 7% 0 5%; + max-width: 26.2%; + } + #sidebar .secondary { + max-width: 47%; + } + + /************************************************************************************ + GRID + *************************************************************************************/ + .col4-1, + .col4-2, + .col4-3, + .col3-1, + .col3-2, + .col2-1 + { + margin-left: 2%; + } + .col4-1 { + max-width: 23%; + } + .col4-2, .col2-1 { + max-width: 48%; + } + .col4-3 { + max-width: 72%; + } + .col3-1 { + max-width: 31%; + } + .col3-2 { + max-width: 62%; + } + + + /************************************************************************************ + SLIDER + *************************************************************************************/ + #slider .slide-feature-image { + max-width: 40%; + margin-right: 3%; + margin-bottom: 2%; + } + #slider .slide-content { + padding: 1% 0 0; + font-size: 100%; + line-height: 130%; + overflow: visible; + } + #slider img { + width: auto\9; /* ie8 */ + max-width: 98.5%; + height: auto; + } + + /************************************************************************************ + LAYOUTS + *************************************************************************************/ + /* list post */ + .list-post .post, + .list-post .type-page, + .list-post .attachment { + width: 80% !important; + } + + /* grid4 */ + .grid4 .post { + width: 23.125%; + margin-left: 2.5%; + } + + /* grid3 */ + .grid3 .post { + width: 31%; + margin-left: 3.5%; + } + + /* grid2 */ + .grid2 .post { + width: 48%; + margin-left: 3.75%; + } + + .social-widget { + color:#30406B; + } + +} + +@media screen and (max-width: 760px) { + + /************************************************************************************ + STRUCTURE + *************************************************************************************/ + .sidebar1 #content { + width: 100%; + max-width: 100%; + float: none; + clear: both; + } + + /* sidebar */ + #sidebar { + width: 100%; + max-width: 100%; + float: none; + clear: both; + } + #sidebar .secondary { + width: 48%; + } + + /************************************************************************************ + HEADER + *************************************************************************************/ + /* reset absolute elements to static */ + #header .social-widget, #site-logo, #site-description, #header #searchform, #main-nav { + position: static !important; + float: none; + clear: both; + } + + /* header */ + #header { + height: auto; + } + + #header .rss a { + color:#30406B; + } + + /* header widget */ + .header-widget { + position: static !important; + float: none; + text-align: left; + clear: both; + margin: 0; + } + .header-widget .widget { + margin: 0 0 10px; + } + + /* nav bar */ + #nav-bar { + height: 10px; + position: static !important; + } + + /* social widget */ + #header .social-widget { + padding: 5px 0 20px; + } + + /* search form */ + #header #searchform { + position: absolute; + top: 0; + left: inherit; + right: 0; + width: 150px; + } + #header #searchform #s { + display:none; + /* float: right; + width: 85px;*/ + } + #header #searchform input#s:focus { + width: 150px; + } + + /* site logo */ + #site-logo { + /* margin: 15px 100px 10px 0; */ + padding-top:30px; + } + #site-logo a { + font-size: 30px; + } + + /* site description */ + #site-description { + margin: 0 0 10px; + } + + /************************************************************************************ + MAIN NAV + *************************************************************************************/ + #main-nav { + width:100%; + height: auto; + margin: 10px 0; + padding:10px; + background-color: #30406B; + } + #main-nav a { + } + + /************************************************************************************ + SLIDER + *************************************************************************************/ + #slider .slide-post-title { + font-size: 260%; + line-height: 100%; + margin: 0 0 1%; + } + #slider .slide-content { + font-size: 90%; + } + #slider .caption { + font-size: 80%; + line-height: 120%; + } + + /************************************************************************************ + HOME HIGHLIGHTS + *************************************************************************************/ + .home-highlights .home-highlights-content { + overflow: visible; + } + + /************************************************************************************ + LAYOUTS + *************************************************************************************/ + /* list post */ + .list-post .post, + .list-post .type-page, + .list-post .attachment { + width: 78% !important; + } + + /************************************************************************************ + FOOTER + *************************************************************************************/ + .footer-nav { + padding-right: 200px; + } + .footer-nav li { + margin: 0 8px 5px 0; + } + +} + +@media screen and (max-width: 600px) { + + /************************************************************************************ + LAYOUTS + *************************************************************************************/ + /* list post */ + .list-post .post, + .list-post .type-page, + .list-post .attachment { + padding-left: 0 !important; + width: 100% !important; + max-width: 100% !important; + } + .list-post .post-meta { + width: 100%; + text-align: left; + /* position: static; */ + display: block; + height: 60px; + } + .list-post .post-meta span { + display: block; + margin: 0 5px 0 0; + border: none; + clear:both; + } + .list-post .post-icon { + /* width: 27px; + height: 30px; + display: block; + float: left; + margin: 2px 14px 5px 0; + border: none; + position: static; */ + } + + .list-post .post-title { + margin:0; + } + + .list-post .post-meta .post-date { + margin-bottom:0px; + } + + + /* grid4 */ + .grid4 .post, .sidebar1 .grid4 .post { + width: 100%; + margin-left: 0; + float: none; + } + + /* grid3 */ + .grid3 .post, .sidebar1 .grid3 .post { + width: 100%; + margin-left: 0; + float: none; + } + + /* action text */ + .action-text { + padding: 3% 4%; + } + .action-text .button { + position: static; + clear: both; + width: auto; + margin: 2% 0 0; + } + +} + +@media screen and (max-width: 480px) { + + /* disable webkit text size adjust (for iPhone) */ + html { + -webkit-text-size-adjust: none; + } + + /************************************************************************************ + GRID + *************************************************************************************/ + .col4-1, + .col4-2, .col2-1, + .col4-3, + .col3-1, + .col3-2 { + margin-left: 0; + width: 100%; + max-width: 100%; + } + + /************************************************************************************ + HEADER + *************************************************************************************/ + #header hgroup { + text-align: left; + } + + /* site logo */ + #site-logo { + font-size: 42px; + text-align: left; + padding: 0 90px 0 0; + width: auto; + /* margin: 10px 0; */ + padding-top: 30px; + } + + /* site description */ + #site-description { + text-align: left; + margin: 0 0 10px; + } + + /* searchform */ + #header #searchform { + top: 0; + left: inherit; + right: 0; + width: 150px; + } + #header #searchform #s { + display:none; + /* float: right; + width: 85px; */ + } + + /* social widget */ + .social-widget { + position: static !important; + margin: 10px 0; + float: none; + padding: 0; + } + + /************************************************************************************ + LAYOUTS + *************************************************************************************/ + /* grid4 */ + .grid4 .post { + font-size: 100%; + } + + /* grid2 */ + .grid2 .post, .sidebar1 .grid2 .post { + width: 100%; + margin-left: 0; + float: none; + } + + /* post title */ + .post-title { + margin: 0 0 2px !important; + padding-top: 4px; + font-size: 2em !important; + } + + /************************************************************************************ + POST NAV + *************************************************************************************/ + .post-nav .prev, .post-nav .next { + display: block; + width: 100%; + clear: both; + margin-bottom: 10px; + } + + /************************************************************************************ + COMMENTS + *************************************************************************************/ + .commentlist { + padding-left: 0; + } + .commentlist .commententry { + clear: left; + } + .commentlist .avatar { + float: left; + width: 40px; + height: 40px; + margin: 0 10px 10px 0; + } + + /* commentlist sub-levels */ + .commentlist ul, .commentlist ol { + margin: 0 0 0 7%; + } + + /************************************************************************************ + FOOTER + *************************************************************************************/ + #footer-logo { + position: static !important; + } + .footer-nav { + padding: 0; + } + +} \ No newline at end of file diff --git a/bigbluebutton-client/resources/prod/help/CSS/prettyPhoto.css b/bigbluebutton-client/resources/prod/help/CSS/prettyPhoto.css new file mode 100755 index 0000000000000000000000000000000000000000..97894c59eda8eb52ff959dbb376628c89af2f695 --- /dev/null +++ b/bigbluebutton-client/resources/prod/help/CSS/prettyPhoto.css @@ -0,0 +1,6 @@ +div.pp_default .pp_top,div.pp_default .pp_top .pp_middle,div.pp_default .pp_top .pp_left,div.pp_default .pp_top .pp_right,div.pp_default .pp_bottom,div.pp_default .pp_bottom .pp_left,div.pp_default .pp_bottom .pp_middle,div.pp_default .pp_bottom .pp_right{height:13px}div.pp_default .pp_top .pp_left{background:url(images/prettyPhoto/default/sprite.png) -78px -93px no-repeat}div.pp_default .pp_top .pp_middle{background:url(images/prettyPhoto/default/sprite_x.png) top left repeat-x}div.pp_default .pp_top .pp_right{background:url(images/prettyPhoto/default/sprite.png) -112px -93px no-repeat}div.pp_default .pp_content .ppt{color:#f8f8f8}div.pp_default .pp_content_container .pp_left{background:url(images/prettyPhoto/default/sprite_y.png) -7px 0 repeat-y;padding-left:13px}div.pp_default .pp_content_container .pp_right{background:url(images/prettyPhoto/default/sprite_y.png) top right repeat-y;padding-right:13px}div.pp_default .pp_next:hover{background:url(images/prettyPhoto/default/sprite_next.png) center right no-repeat;cursor:pointer}div.pp_default .pp_previous:hover{background:url(images/prettyPhoto/default/sprite_prev.png) center left no-repeat;cursor:pointer}div.pp_default .pp_expand{background:url(images/prettyPhoto/default/sprite.png) 0 -29px no-repeat;cursor:pointer;width:28px;height:28px}div.pp_default .pp_expand:hover{background:url(images/prettyPhoto/default/sprite.png) 0 -56px no-repeat;cursor:pointer}div.pp_default .pp_contract{background:url(images/prettyPhoto/default/sprite.png) 0 -84px no-repeat;cursor:pointer;width:28px;height:28px}div.pp_default .pp_contract:hover{background:url(images/prettyPhoto/default/sprite.png) 0 -113px no-repeat;cursor:pointer}div.pp_default .pp_close{width:30px;height:30px;background:url(images/prettyPhoto/default/sprite.png) 2px 1px no-repeat;cursor:pointer}div.pp_default .pp_gallery ul li a{background:url(images/prettyPhoto/default/default_thumb.png) center center #f8f8f8;border:1px solid #aaa}div.pp_default .pp_gallery a.pp_arrow_previous,div.pp_default .pp_gallery a.pp_arrow_next{position:static;left:auto}div.pp_default .pp_nav .pp_play,div.pp_default .pp_nav .pp_pause{background:url(images/prettyPhoto/default/sprite.png) -51px 1px no-repeat;height:30px;width:30px}div.pp_default .pp_nav .pp_pause{background-position:-51px -29px}div.pp_default a.pp_arrow_previous,div.pp_default a.pp_arrow_next{background:url(images/prettyPhoto/default/sprite.png) -31px -3px no-repeat;height:20px;width:20px;margin:4px 0 0}div.pp_default a.pp_arrow_next{left:52px;background-position:-82px -3px}div.pp_default .pp_content_container .pp_details{margin-top:5px}div.pp_default .pp_nav{clear:none;height:30px;width:105px;position:relative}div.pp_default .pp_nav .currentTextHolder{font-family:Georgia;font-style:italic;font-color:#999;font-size:11px;left:75px;line-height:25px;position:absolute;top:2px;margin:0;padding:0 0 0 10px}div.pp_default .pp_close:hover,div.pp_default .pp_nav .pp_play:hover,div.pp_default .pp_nav .pp_pause:hover,div.pp_default .pp_arrow_next:hover,div.pp_default .pp_arrow_previous:hover{opacity:0.7}div.pp_default .pp_description{font-size:11px;font-weight:700;line-height:14px;margin:5px 50px 5px 0}div.pp_default .pp_bottom .pp_left{background:url(images/prettyPhoto/default/sprite.png) -78px -127px no-repeat}div.pp_default .pp_bottom .pp_middle{background:url(images/prettyPhoto/default/sprite_x.png) bottom left repeat-x}div.pp_default .pp_bottom .pp_right{background:url(images/prettyPhoto/default/sprite.png) -112px -127px no-repeat}div.pp_default .pp_loaderIcon{background:url(images/prettyPhoto/default/loader.gif) center center no-repeat}div.light_rounded .pp_top .pp_left{background:url(images/prettyPhoto/light_rounded/sprite.png) -88px -53px no-repeat}div.light_rounded .pp_top .pp_right{background:url(images/prettyPhoto/light_rounded/sprite.png) -110px -53px no-repeat}div.light_rounded .pp_next:hover{background:url(images/prettyPhoto/light_rounded/btnNext.png) center right no-repeat;cursor:pointer}div.light_rounded .pp_previous:hover{background:url(images/prettyPhoto/light_rounded/btnPrevious.png) center left no-repeat;cursor:pointer}div.light_rounded .pp_expand{background:url(images/prettyPhoto/light_rounded/sprite.png) -31px -26px no-repeat;cursor:pointer}div.light_rounded .pp_expand:hover{background:url(images/prettyPhoto/light_rounded/sprite.png) -31px -47px no-repeat;cursor:pointer}div.light_rounded .pp_contract{background:url(images/prettyPhoto/light_rounded/sprite.png) 0 -26px no-repeat;cursor:pointer}div.light_rounded .pp_contract:hover{background:url(images/prettyPhoto/light_rounded/sprite.png) 0 -47px no-repeat;cursor:pointer}div.light_rounded .pp_close{width:75px;height:22px;background:url(images/prettyPhoto/light_rounded/sprite.png) -1px -1px no-repeat;cursor:pointer}div.light_rounded .pp_nav .pp_play{background:url(images/prettyPhoto/light_rounded/sprite.png) -1px -100px no-repeat;height:15px;width:14px}div.light_rounded .pp_nav .pp_pause{background:url(images/prettyPhoto/light_rounded/sprite.png) -24px -100px no-repeat;height:15px;width:14px}div.light_rounded .pp_arrow_previous{background:url(images/prettyPhoto/light_rounded/sprite.png) 0 -71px no-repeat}div.light_rounded .pp_arrow_next{background:url(images/prettyPhoto/light_rounded/sprite.png) -22px -71px no-repeat}div.light_rounded .pp_bottom .pp_left{background:url(images/prettyPhoto/light_rounded/sprite.png) -88px -80px no-repeat}div.light_rounded .pp_bottom .pp_right{background:url(images/prettyPhoto/light_rounded/sprite.png) -110px -80px no-repeat}div.dark_rounded .pp_top .pp_left{background:url(images/prettyPhoto/dark_rounded/sprite.png) -88px -53px no-repeat}div.dark_rounded .pp_top .pp_right{background:url(images/prettyPhoto/dark_rounded/sprite.png) -110px -53px no-repeat}div.dark_rounded .pp_content_container .pp_left{background:url(images/prettyPhoto/dark_rounded/contentPattern.png) top left repeat-y}div.dark_rounded .pp_content_container .pp_right{background:url(images/prettyPhoto/dark_rounded/contentPattern.png) top right repeat-y}div.dark_rounded .pp_next:hover{background:url(images/prettyPhoto/dark_rounded/btnNext.png) center right no-repeat;cursor:pointer}div.dark_rounded .pp_previous:hover{background:url(images/prettyPhoto/dark_rounded/btnPrevious.png) center left no-repeat;cursor:pointer}div.dark_rounded .pp_expand{background:url(images/prettyPhoto/dark_rounded/sprite.png) -31px -26px no-repeat;cursor:pointer}div.dark_rounded .pp_expand:hover{background:url(images/prettyPhoto/dark_rounded/sprite.png) -31px -47px no-repeat;cursor:pointer}div.dark_rounded .pp_contract{background:url(images/prettyPhoto/dark_rounded/sprite.png) 0 -26px no-repeat;cursor:pointer}div.dark_rounded .pp_contract:hover{background:url(images/prettyPhoto/dark_rounded/sprite.png) 0 -47px no-repeat;cursor:pointer}div.dark_rounded .pp_close{width:75px;height:22px;background:url(images/prettyPhoto/dark_rounded/sprite.png) -1px -1px no-repeat;cursor:pointer}div.dark_rounded .pp_description{margin-right:85px;color:#fff}div.dark_rounded .pp_nav .pp_play{background:url(images/prettyPhoto/dark_rounded/sprite.png) -1px -100px no-repeat;height:15px;width:14px}div.dark_rounded .pp_nav .pp_pause{background:url(images/prettyPhoto/dark_rounded/sprite.png) -24px -100px no-repeat;height:15px;width:14px}div.dark_rounded .pp_arrow_previous{background:url(images/prettyPhoto/dark_rounded/sprite.png) 0 -71px no-repeat}div.dark_rounded .pp_arrow_next{background:url(images/prettyPhoto/dark_rounded/sprite.png) -22px -71px no-repeat}div.dark_rounded .pp_bottom .pp_left{background:url(images/prettyPhoto/dark_rounded/sprite.png) -88px -80px no-repeat}div.dark_rounded .pp_bottom .pp_right{background:url(images/prettyPhoto/dark_rounded/sprite.png) -110px -80px no-repeat}div.dark_rounded .pp_loaderIcon{background:url(images/prettyPhoto/dark_rounded/loader.gif) center center no-repeat}div.dark_square .pp_left,div.dark_square .pp_middle,div.dark_square .pp_right,div.dark_square .pp_content{background:#000}div.dark_square .pp_description{color:#fff;margin:0 85px 0 0}div.dark_square .pp_loaderIcon{background:url(images/prettyPhoto/dark_square/loader.gif) center center no-repeat}div.dark_square .pp_expand{background:url(images/prettyPhoto/dark_square/sprite.png) -31px -26px no-repeat;cursor:pointer}div.dark_square .pp_expand:hover{background:url(images/prettyPhoto/dark_square/sprite.png) -31px -47px no-repeat;cursor:pointer}div.dark_square .pp_contract{background:url(images/prettyPhoto/dark_square/sprite.png) 0 -26px no-repeat;cursor:pointer}div.dark_square .pp_contract:hover{background:url(images/prettyPhoto/dark_square/sprite.png) 0 -47px no-repeat;cursor:pointer}div.dark_square .pp_close{width:75px;height:22px;background:url(images/prettyPhoto/dark_square/sprite.png) -1px -1px no-repeat;cursor:pointer}div.dark_square .pp_nav{clear:none}div.dark_square .pp_nav .pp_play{background:url(images/prettyPhoto/dark_square/sprite.png) -1px -100px no-repeat;height:15px;width:14px}div.dark_square .pp_nav .pp_pause{background:url(images/prettyPhoto/dark_square/sprite.png) -24px -100px no-repeat;height:15px;width:14px}div.dark_square .pp_arrow_previous{background:url(images/prettyPhoto/dark_square/sprite.png) 0 -71px no-repeat}div.dark_square .pp_arrow_next{background:url(images/prettyPhoto/dark_square/sprite.png) -22px -71px no-repeat}div.dark_square .pp_next:hover{background:url(images/prettyPhoto/dark_square/btnNext.png) center right no-repeat;cursor:pointer}div.dark_square .pp_previous:hover{background:url(images/prettyPhoto/dark_square/btnPrevious.png) center left no-repeat;cursor:pointer}div.light_square .pp_expand{background:url(images/prettyPhoto/light_square/sprite.png) -31px -26px no-repeat;cursor:pointer}div.light_square .pp_expand:hover{background:url(images/prettyPhoto/light_square/sprite.png) -31px -47px no-repeat;cursor:pointer}div.light_square .pp_contract{background:url(images/prettyPhoto/light_square/sprite.png) 0 -26px no-repeat;cursor:pointer}div.light_square .pp_contract:hover{background:url(images/prettyPhoto/light_square/sprite.png) 0 -47px no-repeat;cursor:pointer}div.light_square .pp_close{width:75px;height:22px;background:url(images/prettyPhoto/light_square/sprite.png) -1px -1px no-repeat;cursor:pointer}div.light_square .pp_nav .pp_play{background:url(images/prettyPhoto/light_square/sprite.png) -1px -100px no-repeat;height:15px;width:14px}div.light_square .pp_nav .pp_pause{background:url(images/prettyPhoto/light_square/sprite.png) -24px -100px no-repeat;height:15px;width:14px}div.light_square .pp_arrow_previous{background:url(images/prettyPhoto/light_square/sprite.png) 0 -71px no-repeat}div.light_square .pp_arrow_next{background:url(images/prettyPhoto/light_square/sprite.png) -22px -71px no-repeat}div.light_square .pp_next:hover{background:url(images/prettyPhoto/light_square/btnNext.png) center right no-repeat;cursor:pointer}div.light_square .pp_previous:hover{background:url(images/prettyPhoto/light_square/btnPrevious.png) center left no-repeat;cursor:pointer}div.facebook .pp_top .pp_left{background:url(images/prettyPhoto/facebook/sprite.png) -88px -53px no-repeat}div.facebook .pp_top .pp_middle{background:url(images/prettyPhoto/facebook/contentPatternTop.png) top left repeat-x}div.facebook .pp_top .pp_right{background:url(images/prettyPhoto/facebook/sprite.png) -110px -53px no-repeat}div.facebook .pp_content_container .pp_left{background:url(images/prettyPhoto/facebook/contentPatternLeft.png) top left repeat-y}div.facebook .pp_content_container .pp_right{background:url(images/prettyPhoto/facebook/contentPatternRight.png) top right repeat-y}div.facebook .pp_expand{background:url(images/prettyPhoto/facebook/sprite.png) -31px -26px no-repeat;cursor:pointer}div.facebook .pp_expand:hover{background:url(images/prettyPhoto/facebook/sprite.png) -31px -47px no-repeat;cursor:pointer}div.facebook .pp_contract{background:url(images/prettyPhoto/facebook/sprite.png) 0 -26px no-repeat;cursor:pointer}div.facebook .pp_contract:hover{background:url(images/prettyPhoto/facebook/sprite.png) 0 -47px no-repeat;cursor:pointer}div.facebook .pp_close{width:22px;height:22px;background:url(images/prettyPhoto/facebook/sprite.png) -1px -1px no-repeat;cursor:pointer}div.facebook .pp_description{margin:0 37px 0 0}div.facebook .pp_loaderIcon{background:url(images/prettyPhoto/facebook/loader.gif) center center no-repeat}div.facebook .pp_arrow_previous{background:url(images/prettyPhoto/facebook/sprite.png) 0 -71px no-repeat;height:22px;margin-top:0;width:22px}div.facebook .pp_arrow_previous.disabled{background-position:0 -96px;cursor:default}div.facebook .pp_arrow_next{background:url(images/prettyPhoto/facebook/sprite.png) -32px -71px no-repeat;height:22px;margin-top:0;width:22px}div.facebook .pp_arrow_next.disabled{background-position:-32px -96px;cursor:default}div.facebook .pp_nav{margin-top:0}div.facebook .pp_nav p{font-size:15px;padding:0 3px 0 4px}div.facebook .pp_nav .pp_play{background:url(images/prettyPhoto/facebook/sprite.png) -1px -123px no-repeat;height:22px;width:22px}div.facebook .pp_nav .pp_pause{background:url(images/prettyPhoto/facebook/sprite.png) -32px -123px no-repeat;height:22px;width:22px}div.facebook .pp_next:hover{background:url(images/prettyPhoto/facebook/btnNext.png) center right no-repeat;cursor:pointer}div.facebook .pp_previous:hover{background:url(images/prettyPhoto/facebook/btnPrevious.png) center left no-repeat;cursor:pointer}div.facebook .pp_bottom .pp_left{background:url(images/prettyPhoto/facebook/sprite.png) -88px -80px no-repeat}div.facebook .pp_bottom .pp_middle{background:url(images/prettyPhoto/facebook/contentPatternBottom.png) top left repeat-x}div.facebook .pp_bottom .pp_right{background:url(images/prettyPhoto/facebook/sprite.png) -110px -80px no-repeat}div.pp_pic_holder a:focus{outline:none}div.pp_overlay{background:#000;display:none;left:0;position:absolute;top:0;width:100%;z-index:9500}div.pp_pic_holder{display:none;position:absolute;width:100px;z-index:10000}.pp_content{height:40px;min-width:40px}* html .pp_content{width:40px}.pp_content_container{position:relative;text-align:left;width:100%}.pp_content_container .pp_left{padding-left:20px}.pp_content_container .pp_right{padding-right:20px}.pp_content_container .pp_details{float:left;margin:10px 0 2px}.pp_description{display:none;margin:0}.pp_social{float:left;margin:7px 0 0}.pp_social .facebook{float:left;position:relative;top:-1px;margin-left:5px;width:55px;overflow:hidden}.pp_social .twitter{float:left}.pp_nav{clear:right;float:left;margin:3px 10px 0 0}.pp_nav p{float:left;margin:2px 4px}.pp_nav .pp_play,.pp_nav .pp_pause{float:left;margin-right:4px;text-indent:-10000px}a.pp_arrow_previous,a.pp_arrow_next{display:block;float:left;height:15px;margin-top:3px;overflow:hidden;text-indent:-10000px;width:14px}.pp_hoverContainer{position:absolute;top:0;width:100%;z-index:2000}.pp_gallery{display:none;left:50%;margin-top:-50px;position:absolute;z-index:10000}.pp_gallery div{float:left;overflow:hidden;position:relative}.pp_gallery ul{float:left;height:35px;position:relative;white-space:nowrap;margin:0 0 0 5px;padding:0}.pp_gallery ul a{border:1px rgba(0,0,0,0.5) solid;display:block;float:left;height:33px;overflow:hidden}.pp_gallery ul a img{border:0}.pp_gallery li{display:block;float:left;margin:0 5px 0 0;padding:0}.pp_gallery li.default a{background:url(images/prettyPhoto/facebook/default_thumbnail.gif) 0 0 no-repeat;display:block;height:33px;width:50px}.pp_gallery .pp_arrow_previous,.pp_gallery .pp_arrow_next{margin-top:7px!important}a.pp_next{background:url(images/prettyPhoto/light_rounded/btnNext.png) 10000px 10000px no-repeat;display:block;float:right;height:100%;text-indent:-10000px;width:49%}a.pp_previous{background:url(images/prettyPhoto/light_rounded/btnNext.png) 10000px 10000px no-repeat;display:block;float:left;height:100%;text-indent:-10000px;width:49%}a.pp_expand,a.pp_contract{cursor:pointer;display:none;height:20px;position:absolute;right:30px;text-indent:-10000px;top:10px;width:20px;z-index:20000}a.pp_close{position:absolute;right:0;top:0;display:block;line-height:22px;text-indent:-10000px}.pp_loaderIcon{display:block;height:24px;left:50%;position:absolute;top:50%;width:24px;margin:-12px 0 0 -12px}#pp_full_res{line-height:1!important}#pp_full_res .pp_inline{text-align:left}#pp_full_res .pp_inline p{margin:0 0 15px}div.ppt{color:#fff;display:none;font-size:17px;z-index:9999;margin:0 0 5px 15px}div.pp_default .pp_content,div.light_rounded .pp_content{background-color:#fff}div.pp_default #pp_full_res .pp_inline,div.light_rounded .pp_content .ppt,div.light_rounded #pp_full_res .pp_inline,div.light_square .pp_content .ppt,div.light_square #pp_full_res .pp_inline,div.facebook .pp_content .ppt,div.facebook #pp_full_res .pp_inline{color:#000}div.pp_default .pp_gallery ul li a:hover,div.pp_default .pp_gallery ul li.selected a,.pp_gallery ul a:hover,.pp_gallery li.selected a{border-color:#fff}div.pp_default .pp_details,div.light_rounded .pp_details,div.dark_rounded .pp_details,div.dark_square .pp_details,div.light_square .pp_details,div.facebook .pp_details{position:relative}div.light_rounded .pp_top .pp_middle,div.light_rounded .pp_content_container .pp_left,div.light_rounded .pp_content_container .pp_right,div.light_rounded .pp_bottom .pp_middle,div.light_square .pp_left,div.light_square .pp_middle,div.light_square .pp_right,div.light_square .pp_content,div.facebook .pp_content{background:#fff}div.light_rounded .pp_description,div.light_square .pp_description{margin-right:85px}div.light_rounded .pp_gallery a.pp_arrow_previous,div.light_rounded .pp_gallery a.pp_arrow_next,div.dark_rounded .pp_gallery a.pp_arrow_previous,div.dark_rounded .pp_gallery a.pp_arrow_next,div.dark_square .pp_gallery a.pp_arrow_previous,div.dark_square .pp_gallery a.pp_arrow_next,div.light_square .pp_gallery a.pp_arrow_previous,div.light_square .pp_gallery a.pp_arrow_next{margin-top:12px!important}div.light_rounded .pp_arrow_previous.disabled,div.dark_rounded .pp_arrow_previous.disabled,div.dark_square .pp_arrow_previous.disabled,div.light_square .pp_arrow_previous.disabled{background-position:0 -87px;cursor:default}div.light_rounded .pp_arrow_next.disabled,div.dark_rounded .pp_arrow_next.disabled,div.dark_square .pp_arrow_next.disabled,div.light_square .pp_arrow_next.disabled{background-position:-22px -87px;cursor:default}div.light_rounded .pp_loaderIcon,div.light_square .pp_loaderIcon{background:url(images/prettyPhoto/light_rounded/loader.gif) center center no-repeat}div.dark_rounded .pp_top .pp_middle,div.dark_rounded .pp_content,div.dark_rounded .pp_bottom .pp_middle{background:url(images/prettyPhoto/dark_rounded/contentPattern.png) top left repeat}div.dark_rounded .currentTextHolder,div.dark_square .currentTextHolder{color:#c4c4c4}div.dark_rounded #pp_full_res .pp_inline,div.dark_square #pp_full_res .pp_inline{color:#fff}.pp_top,.pp_bottom{height:20px;position:relative}* html .pp_top,* html .pp_bottom{padding:0 20px}.pp_top .pp_left,.pp_bottom .pp_left{height:20px;left:0;position:absolute;width:20px}.pp_top .pp_middle,.pp_bottom .pp_middle{height:20px;left:20px;position:absolute;right:20px}* html .pp_top .pp_middle,* html .pp_bottom .pp_middle{left:0;position:static}.pp_top .pp_right,.pp_bottom .pp_right{height:20px;left:auto;position:absolute;right:0;top:0;width:20px}.pp_fade,.pp_gallery li.default a img{display:none} + +/* hide social */ +.pp_social { + display: none; +} \ No newline at end of file diff --git a/bigbluebutton-client/resources/prod/help/CSS/shortcodes.css b/bigbluebutton-client/resources/prod/help/CSS/shortcodes.css new file mode 100755 index 0000000000000000000000000000000000000000..e1323e181caafdf9fe7b767d4a341508c4799424 --- /dev/null +++ b/bigbluebutton-client/resources/prod/help/CSS/shortcodes.css @@ -0,0 +1,1039 @@ +/************************************************************************************ +BUTTONS +*************************************************************************************/ +a.button { + text-decoration: none !important; + color: #333; + font: 100% Arial, Helvetica, sans-serif; + padding: 5px 13px; + margin: 0 3px 5px 0; + + border: solid 1px #aaa; + + background: #f5f5f5; + background: -moz-linear-gradient(top, #f6f6f6 0%, #dfdfdf 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f6f6f6), color-stop(100%,#dfdfdf)); + background: -webkit-linear-gradient(top, #f6f6f6 0%,#dfdfdf 100%); + background: -o-linear-gradient(top, #f6f6f6 0%,#dfdfdf 100%); + background: -ms-linear-gradient(top, #f6f6f6 0%,#dfdfdf 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f6f6f6', endColorstr='#dfdfdf',GradientType=0 ); + background: linear-gradient(top, #f6f6f6 0%,#dfdfdf 100%); + + vertical-align: middle; + display: inline-block; + zoom:1; + *display:inline; + + text-shadow: 0 1px 0 rgba(255,255,255,.5); + + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + + -webkit-box-shadow: 0 1px 0 rgba(0,0,0,.1), inset 0 1px 0 rgba(255,255,255,.5), inset 0 -1px 0 rgba(255,255,255,.3); + -moz-box-shadow: 0 1px 0 rgba(0,0,0,.1), inset 0 1px 0 rgba(255,255,255,.5), inset 0 -1px 0 rgba(255,255,255,.3); + box-shadow: 0 1px 0 rgba(0,0,0,.1), inset 0 1px 0 rgba(255,255,255,.5), inset 0 -1px 0 rgba(255,255,255,.3); +} +a.button:hover { + text-decoration: none; + background: #f6f6f6; +} + +/* color */ +a.button.flat { + background: #f5f5f5; +} + +a.button.yellow { + border-color: #edad14; + background: #ffe20b; + background: -moz-linear-gradient(top, #fff21e 0%, #ffd901 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fff21e), color-stop(100%,#ffd901)); + background: -webkit-linear-gradient(top, #fff21e 0%,#ffd901 100%); + background: -o-linear-gradient(top, #fff21e 0%,#ffd901 100%); + background: -ms-linear-gradient(top, #fff21e 0%,#ffd901 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fff21e', endColorstr='#ffd901',GradientType=0 ); + background: linear-gradient(top, #fff21e 0%,#ffd901 100%); +} +a.button.yellow:hover { + background: #fff21e; +} +a.button.yellow.flat { + background: #ffe20b; +} + +a.button.orange { + border-color: #a3620a; + background: #f9800f; + background: -moz-linear-gradient(top, #ff9a22 0%, #f46e01 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ff9a22), color-stop(100%,#f46e01)); + background: -webkit-linear-gradient(top, #ff9a22 0%,#f46e01 100%); + background: -o-linear-gradient(top, #ff9a22 0%,#f46e01 100%); + background: -ms-linear-gradient(top, #ff9a22 0%,#f46e01 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ff9a22', endColorstr='#f46e01',GradientType=0 ); + background: linear-gradient(top, #ff9a22 0%,#f46e01 100%); + color: #fff !important; + text-shadow: 0 -1px 0 rgba(0,0,0,.4); +} +a.button.orange:hover { + background: #ff9a22; +} +a.button.orange.flat { + background: #f9800f; +} + +a.button.blue { + border-color: #0076a3; + background: #49b3fc; + background: -moz-linear-gradient(top, #76c7ff 0%, #1da0fa 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#76c7ff), color-stop(100%,#1da0fa)); + background: -webkit-linear-gradient(top, #76c7ff 0%,#1da0fa 100%); + background: -o-linear-gradient(top, #76c7ff 0%,#1da0fa 100%); + background: -ms-linear-gradient(top, #76c7ff 0%,#1da0fa 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#76c7ff', endColorstr='#1da0fa',GradientType=0 ); + background: linear-gradient(top, #76c7ff 0%,#1da0fa 100%); + color: #fff !important; + text-shadow: 0 -1px 0 rgba(0,0,0,.4); +} +a.button.blue:hover { + background: #76c7ff; +} +a.button.blue.flat { + background: #49b3fc; +} + +a.button.green { + border-color: #4e7521; + background: #76ab3b; + background: -moz-linear-gradient(top, #90c356 0%, #649a27 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#90c356), color-stop(100%,#649a27)); + background: -webkit-linear-gradient(top, #90c356 0%,#649a27 100%); + background: -o-linear-gradient(top, #90c356 0%,#649a27 100%); + background: -ms-linear-gradient(top, #90c356 0%,#649a27 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#90c356', endColorstr='#649a27',GradientType=0 ); + background: linear-gradient(top, #90c356 0%,#649a27 100%); + color: #fff !important; + text-shadow: 0 -1px 0 rgba(0,0,0,.4); +} +a.button.green:hover { + background: #90c356; +} +a.button.green.flat { + background: #76ab3b; +} + +a.button.red { + border-color: #9e0b0f; + background: #e41d24; + background: -moz-linear-gradient(top, #fb4e55 0%, #d7020a 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fb4e55), color-stop(100%,#d7020a)); + background: -webkit-linear-gradient(top, #fb4e55 0%,#d7020a 100%); + background: -o-linear-gradient(top, #fb4e55 0%,#d7020a 100%); + background: -ms-linear-gradient(top, #fb4e55 0%,#d7020a 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fb4e55', endColorstr='#d7020a',GradientType=0 ); + background: linear-gradient(top, #fb4e55 0%,#d7020a 100%); + color: #fff !important; + text-shadow: 0 -1px 0 rgba(0,0,0,.4); +} +a.button.red:hover { + background: #fb4e55; +} +a.button.red.flat { + background: #e41d24; +} + +a.button.black { + border-color: #000000; + background: #111; + background: -moz-linear-gradient(top, #4f4f4f 0%, #030303 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#4f4f4f), color-stop(100%,#030303)); + background: -webkit-linear-gradient(top, #4f4f4f 0%,#030303 100%); + background: -o-linear-gradient(top, #4f4f4f 0%,#030303 100%); + background: -ms-linear-gradient(top, #4f4f4f 0%,#030303 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#4f4f4f', endColorstr='#030303',GradientType=0 ); + background: linear-gradient(top, #4f4f4f 0%,#030303 100%); + color: #eee !important; + text-shadow: 0 -1px 0 rgba(0,0,0,.8); +} +a.button.black:hover { + background: #4f4f4f; +} +a.button.black.flat { + background: #111; +} + +a.button.purple { + border-color: #350d4c; + background: #7933ac; + background: -moz-linear-gradient(top, #9655c6 0%, #661e9b 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#9655c6), color-stop(100%,#661e9b)); + background: -webkit-linear-gradient(top, #9655c6 0%,#661e9b 100%); + background: -o-linear-gradient(top, #9655c6 0%,#661e9b 100%); + background: -ms-linear-gradient(top, #9655c6 0%,#661e9b 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#9655c6', endColorstr='#661e9b',GradientType=0 ); + background: linear-gradient(top, #9655c6 0%,#661e9b 100%); + color: #fff !important; + text-shadow: 0 -1px 0 rgba(0,0,0,.6); +} +a.button.purple:hover { + background: #9655c6; +} +a.button.purple.flat { + background: #7933ac; +} + +a.button.gray { + border-color: #656565; + background: #888888; + background: -moz-linear-gradient(top, #adadad 0%, #707070 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#adadad), color-stop(100%,#707070)); + background: -webkit-linear-gradient(top, #adadad 0%,#707070 100%); + background: -o-linear-gradient(top, #adadad 0%,#707070 100%); + background: -ms-linear-gradient(top, #adadad 0%,#707070 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#adadad', endColorstr='#707070',GradientType=0 ); + background: linear-gradient(top, #adadad 0%,#707070 100%); + color: #fff !important; + text-shadow: 0 -1px 0 rgba(0,0,0,.3); +} +a.button.gray:hover { + background: #adadad; +} +a.button.gray.flat { + background: #888888; +} + +/* light gradient */ +a.button.light-yellow { + border-color: #cbc67d; + background: #fef8a5; + background: -moz-linear-gradient(top, #fefcdf 0%, #fef79c 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fefcdf), color-stop(100%,#fef79c)); + background: -webkit-linear-gradient(top, #fefcdf 0%,#fef79c 100%); + background: -o-linear-gradient(top, #fefcdf 0%,#fef79c 100%); + background: -ms-linear-gradient(top, #fefcdf 0%,#fef79c 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fefcdf', endColorstr='#fef79c',GradientType=0 ); + background: linear-gradient(top, #fefcdf 0%,#fef79c 100%); +} +a.button.light-yellow:hover { + background: #fefcdf; +} +a.button.light-yellow.flat { + background: #fef8a5; +} + +a.button.light-blue { + border-color: #95becf; + background: #c5efff; + background: -moz-linear-gradient(top, #e9f9ff 0%, #c1eeff 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#e9f9ff), color-stop(100%,#c1eeff)); + background: -webkit-linear-gradient(top, #e9f9ff 0%,#c1eeff 100%); + background: -o-linear-gradient(top, #e9f9ff 0%,#c1eeff 100%); + background: -ms-linear-gradient(top, #e9f9ff 0%,#c1eeff 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#e9f9ff', endColorstr='#c1eeff',GradientType=0 ); + background: linear-gradient(top, #e9f9ff 0%,#c1eeff 100%); +} +a.button.light-blue:hover { + background: #e9f9ff; +} +a.button.light-blue.flat { + background: #c5efff; +} + +a.button.light-green { + border-color: #b0c98b; + background: #ebf8d6; + background: -moz-linear-gradient(top, #f9fff0 0%, #e5f6cb 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f9fff0), color-stop(100%,#e5f6cb)); + background: -webkit-linear-gradient(top, #f9fff0 0%,#e5f6cb 100%); + background: -o-linear-gradient(top, #f9fff0 0%,#e5f6cb 100%); + background: -ms-linear-gradient(top, #f9fff0 0%,#e5f6cb 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f9fff0', endColorstr='#e5f6cb',GradientType=0 ); + background: linear-gradient(top, #f9fff0 0%,#e5f6cb 100%); +} +a.button.light-green:hover { + background: #f9fff0; +} +a.button.light-green.flat { + background: #ebf8d6; +} + +a.button.pink { + border-color: #de9db9; + background: #facde1; + background: -moz-linear-gradient(top, #fdecf3 0%, #f9c1d9 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fdecf3), color-stop(100%,#f9c1d9)); + background: -webkit-linear-gradient(top, #fdecf3 0%,#f9c1d9 100%); + background: -o-linear-gradient(top, #fdecf3 0%,#f9c1d9 100%); + background: -ms-linear-gradient(top, #fdecf3 0%,#f9c1d9 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fdecf3', endColorstr='#f9c1d9',GradientType=0 ); + background: linear-gradient(top, #fdecf3 0%,#f9c1d9 100%); +} +a.button.pink:hover { + background: #fdecf3; +} +a.button.pink.flat { + background: #facde1; +} + +a.button.lavender { + border-color: #c0a8d9; + background: #ecd9ff; + background: -moz-linear-gradient(top, #f7f0fe 0%, #e8d1ff 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f7f0fe), color-stop(100%,#e8d1ff)); + background: -webkit-linear-gradient(top, #f7f0fe 0%,#e8d1ff 100%); + background: -o-linear-gradient(top, #f7f0fe 0%,#e8d1ff 100%); + background: -ms-linear-gradient(top, #f7f0fe 0%,#e8d1ff 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f7f0fe', endColorstr='#e8d1ff',GradientType=0 ); + background: linear-gradient(top, #f7f0fe 0%,#e8d1ff 100%); +} +a.button.lavender:hover { + background: #f7f0fe; +} +a.button.lavender.flat { + background: #ecd9ff; +} + +/* button size */ +a.button.small { + font-size: 85%; + font-weight: normal; + padding: 3px 8px; +} +a.button.large { + font-size: 120%; + font-weight: bold; + padding: 8px 20px; +} +a.button.xlarge { + font-size: 150%; + font-weight: bold; + padding: 12px 26px; +} + +/* button shape */ +a.button.rect { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +a.button.rounded { + -webkit-border-radius: 20em; + -moz-border-radius: 20em; + border-radius: 20em; +} + +/* button embossed */ +a.button.embossed { + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.5), inset 0 -2px 0 rgba(0,0,0,.2), inset 0 -3px 0 rgba(255,255,255,.2); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.5), inset 0 -2px 0 rgba(0,0,0,.2), inset 0 -3px 0 rgba(255,255,255,.2); + box-shadow: inset 0 1px 0 rgba(255,255,255,.5), inset 0 -2px 0 rgba(0,0,0,.2), inset 0 -3px 0 rgba(255,255,255,.2); + padding-top: 4px; + padding-bottom: 6px; +} +a.button.embossed.small, +a.button.small.embossed { + -webkit-box-shadow: inset 0 -1px 0 rgba(0,0,0,.2), inset 0 -2px 0 rgba(255,255,255,.2); + -moz-box-shadow: inset 0 -1px 0 rgba(0,0,0,.2), inset 0 -2px 0 rgba(255,255,255,.2); + box-shadow: inset 0 -1px 0 rgba(0,0,0,.2), inset 0 -2px 0 rgba(255,255,255,.2); + padding-top: 1px; + padding-bottom: 2px; +} +a.button.embossed.large, +a.button.large.embossed { + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.5), inset 0 -3px 0 rgba(0,0,0,.2), inset 0 -4px 0 rgba(255,255,255,.2); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.5), inset 0 -3px 0 rgba(0,0,0,.2), inset 0 -4px 0 rgba(255,255,255,.2); + box-shadow: inset 0 1px 0 rgba(255,255,255,.5), inset 0 -3px 0 rgba(0,0,0,.2), inset 0 -4px 0 rgba(255,255,255,.2); + padding-top: 6px; + padding-bottom: 10px; +} +a.button.embossed.xlarge, +a.button.xlarge.embossed { + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.5), inset 0 -3px 0 rgba(0,0,0,.2), inset 0 -5px 0 rgba(255,255,255,.2); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.5), inset 0 -3px 0 rgba(0,0,0,.2), inset 0 -5px 0 rgba(255,255,255,.2); + box-shadow: inset 0 1px 0 rgba(255,255,255,.5), inset 0 -3px 0 rgba(0,0,0,.2), inset 0 -5px 0 rgba(255,255,255,.2); + padding-top: 10px; + padding-bottom: 14px; +} + + +/* button active */ +.button:active { + position: relative; + top: 1px; +} + +/************************************************************************************ +HR +*************************************************************************************/ +hr { + height: 1px; + border: none; + border-top: solid 1px #ccc; + clear: both; +} +hr.red { + border-color: #F30; +} +hr.blue { + border-color: #69F; +} +hr.pink { + border-color: #F9C; +} +hr.light-gray { + border-color: #ddd; +} +hr.dark-gray { + border-color: #999; +} +hr.black { + border-color: #000; +} +hr.yellow { + border-color: #FF0; +} +hr.orange { + border-color: #F90; +} +hr.white { + border-color: #fff; +} + +/************************************************************************************ +GRID +*************************************************************************************/ +.col, +.col4-1, +.col4-2, +.col4-3, +.col3-1, +.col3-2, +.col2-1 +{ + float: left; +} +.col4-1 { + width: 25%; +} +.col4-2, +.col2-1 { + width: 50%; +} +.col4-3 { + width: 75%; +} +.col3-1 { + width: 33%; +} +.col3-2 { + width: 66%; +} +.sidebar1 .col.first, +.sidebar1 .col4-1.first, +.sidebar1 .col4-2.first, +.sidebar1 .col4-3.first, +.sidebar1 .col3-1.first, +.sidebar1 .col3-2.first, +.sidebar1 .col2-1.first +.col.first, +.col4-1.first, +.col4-2.first, +.col4-3.first, +.col3-1.first, +.col3-2.first, +.col2-1.first { + margin-left: 0; + clear: left; +} + +/************************************************************************************ +QUOTE +*************************************************************************************/ +.shortcode.quote { + background: url(../img/shortcodes/quote.png) no-repeat 1px 2px; + padding: 0 5px 0 26px; + margin: 0 0 30px; +} + +/************************************************************************************ +SHORTCODE BOX +*************************************************************************************/ +.shortcode.box { + background: #f6f6f6; + border: solid 1px #ddd; + padding: 7px 15px; + margin: 0 0 15px; + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.4); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.4); + box-shadow: inset 0 1px 0 rgba(255,255,255,.4); +} + +/* box color */ +.shortcode.box.blue { + background: #3cafff; + border-color: #2786cf; + color: #fff !important; +} +.shortcode.box.green { + background: #78ac3e; + border-color: #5e8127; + color: #fff !important; +} +.shortcode.box.red { + background: #ed1c24; + border-color: #b81e14; + color: #fff !important; +} +.shortcode.box.purple { + background: #722ea4; + border-color: #471e72; + color: #fff !important; +} +.shortcode.box.yellow { + background: #fff200; + border-color: #ffd200; +} +.shortcode.box.orange { + background: #f7941d; + border-color: #c56102; + color: #fff !important; +} +.shortcode.box.light-yellow { + background: #fffcd3; + border-color: #dedba3; +} +.shortcode.box.light-blue { + background: #d9f4fe; + border-color: #a4cfe0; +} +.shortcode.box.lavender { + background: #f2e6fe; + border-color: #d1bae9; +} +.shortcode.box.pink { + background: #ffe6f1; + border-color: #f0b6cf; +} +.shortcode.box.light-green { + background: #edf6df; + border-color: #b8cd97; +} +.shortcode.box.gray { + background: #9e9e9e; + border-color: #858585; + color: #fff !important; +} +.shortcode.box.black { + background: #111; + border-color: #000; + color: #fff !important; +} + +/* box link */ +.shortcode.box.purple a, +.shortcode.box.orange a, +.shortcode.box.green a, +.shortcode.box.blue a, +.shortcode.box.black a, +.shortcode.box.gray a, +.shortcode.box.red a { + color: #fffabb !important; +} + +/* box rounded */ +.shortcode.box.rounded { + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + border-radius: 8px; +} + +/* box shadow */ +.shortcode.box.shadow { + -webkit-box-shadow: 0 1px 1px rgba(0,0,0,.1); + -moz-box-shadow: 0 1px 1px rgba(0,0,0,.1); + box-shadow: 0 1px 1px rgba(0,0,0,.1); +} + +/* box icon */ +.shortcode.box.announcement { + background-image: url(../img/shortcodes/annoucement.png); + background-repeat: no-repeat; + background-position: 8px 5px; + padding-left: 70px; + min-height: 55px; +} +.shortcode.box.comment { + background-image: url(../img/shortcodes/comment.png); + background-repeat: no-repeat; + background-position: 8px 5px; + padding-left: 70px; + min-height: 55px; +} +.shortcode.box.question { + background-image: url(../img/shortcodes/question.png); + background-repeat: no-repeat; + background-position: 8px 5px; + padding-left: 70px; + min-height: 55px; +} +.shortcode.box.upload { + background-image: url(../img/shortcodes/upload.png); + background-repeat: no-repeat; + background-position: 8px 5px; + padding-left: 70px; + min-height: 55px; +} +.shortcode.box.download { + background-image: url(../img/shortcodes/download.png); + background-repeat: no-repeat; + background-position: 8px 5px; + padding-left: 70px; + min-height: 55px; +} +.shortcode.box.highlight { + background-image: url(../img/shortcodes/highlight.png); + background-repeat: no-repeat; + background-position: 8px 5px; + padding-left: 70px; + min-height: 55px; +} +.shortcode.box.map { + background-image: url(../img/shortcodes/map.png); + background-repeat: no-repeat; + background-position: 8px 5px; + padding-left: 70px; + min-height: 55px; +} +.shortcode.box.warning { + background-image: url(../img/shortcodes/warning.png); + background-repeat: no-repeat; + background-position: 8px 5px; + padding-left: 70px; + min-height: 55px; +} +.shortcode.box.info { + background-image: url(../img/shortcodes/info.png); + background-repeat: no-repeat; + background-position: 8px 5px; + padding-left: 70px; + min-height: 55px; +} +.shortcode.box.note { + background-image: url(../img/shortcodes/note.png); + background-repeat: no-repeat; + background-position: 8px 5px; + padding-left: 70px; + min-height: 55px; +} +.shortcode.box.contact { + background-image: url(../img/shortcodes/contact.png); + background-repeat: no-repeat; + background-position: 8px 5px; + padding-left: 70px; + min-height: 55px; +} + +/* box heading */ +.shortcode.box h1, +.shortcode.box h2, +.shortcode.box h3, +.shortcode.box h4, +.shortcode.box h5, +.shortcode.box h6 { + margin: 2px 0 3px; +} + +/************************************************************************************ +AUTHOR BOX +*************************************************************************************/ +.shortcode.author-box { + background: #f6f6f6; + border: solid 1px #ddd; + padding: 10px 15px; + margin: 15px 0; + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.4); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.4); + box-shadow: inset 0 1px 0 rgba(255,255,255,.4); +} +.shortcode.author-box .author-avatar { + float: left; + margin: 0 15px 5px 0; +} +.shortcode.author-box .author-avatar img { + padding: 4px; + background: #fff; + -webkit-box-shadow: 0 1px 1px rgba(0,0,0,.15); + -moz-box-shadow: 0 1px 1px rgba(0,0,0,.15); + box-shadow: 0 1px 1px rgba(0,0,0,.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.shortcode.author-box .author-name { + margin: 2px 0 5px; +} +.shortcode.author-box .author-bio { + overflow: hidden; +} + +/* author box color */ +.shortcode.author-box.blue { + background: #3cafff; + border-color: #2786cf; + color: #fff !important; +} +.shortcode.author-box.green { + background: #78ac3e; + border-color: #5e8127; + color: #fff !important; +} +.shortcode.author-box.red { + background: #ed1c24; + border-color: #b81e14; + color: #fff !important; +} +.shortcode.author-box.purple { + background: #722ea4; + border-color: #471e72; + color: #fff !important; +} +.shortcode.author-box.yellow { + background: #fff200; + border-color: #ffd200; +} +.shortcode.author-box.orange { + background: #f7941d; + border-color: #c56102; + color: #fff !important; +} +.shortcode.author-box.light-yellow { + background: #fffcd3; + border-color: #dedba3; +} +.shortcode.author-box.light-blue { + background: #d9f4fe; + border-color: #a4cfe0; +} +.shortcode.author-box.lavender { + background: #f2e6fe; + border-color: #d1bae9; +} +.shortcode.author-box.pink { + background: #ffe6f1; + border-color: #f0b6cf; +} +.shortcode.author-box.light-green { + background: #edf6df; + border-color: #b8cd97; +} +.shortcode.author-box.gray { + background: #9e9e9e; + border-color: #858585; + color: #fff !important; +} +.shortcode.author-box.black { + background: #111; + border-color: #000; + color: #fff !important; +} + +/* author box link */ +.shortcode.author-box.purple a, +.shortcode.author-box.orange a, +.shortcode.author-box.green a, +.shortcode.author-box.blue a, +.shortcode.author-box.black a, +.shortcode.author-box.gray a, +.shortcode.author-box.red a { + color: #fffabb !important; +} + +/* author box rounded */ +.shortcode.author-box.rounded { + -webkit-border-radius: 8px; + -moz-border-radius: 8px; + border-radius: 8px; +} + +/* author box shadow */ +.shortcode.author-box.shadow { + -webkit-box-shadow: 0 1px 1px rgba(0,0,0,.1); + -moz-box-shadow: 0 1px 1px rgba(0,0,0,.1); + box-shadow: 0 1px 1px rgba(0,0,0,.1); +} + +/************************************************************************************ +FLICKR +*************************************************************************************/ +.shortcode .flickr_badge_image { + margin: 10px 0; +} +.shortcode .flickr_badge_image img { + margin-right: 12px; + margin-bottom: 12px; + float: left; +} + +/************************************************************************************ +MAP +*************************************************************************************/ +.shortcode.map .map-container { + margin: 0 0 15px; + border: solid 1px #ccc; +} + +/************************************************************************************ +LIST POSTS +*************************************************************************************/ +/* set slides img max-width */ +.shortcode img { + width: auto\9; /* ie8 */ + max-width: 100%; + height: auto; +} + +/* base post */ +.shortcode .post { + margin-bottom: 30px; +} + +/* base post image */ +.shortcode .post-image { + margin: 0 0 7px; +} + +/* base post title */ +.shortcode .post-title { + font-size: 150%; + margin: 0 0 3px; + padding: 0; +} +.col4-1 .shortcode .post-title { + font-size: 115%; +} +.col3-1 .shortcode .post-title { + font-size: 130%; +} +.col2-1 .shortcode .post-title, +.col4-2 .shortcode .post-title { + font-size: 145%; +} + +/* base post date */ +.shortcode .post-date { + color: inherit !important; + font-weight: bold !important; + font-size: 100% !important; + width: auto !important; + float: none !important; + display: block !important; + margin: 2px 0 !important; + text-align: left !important; + background: none !important; + filter: none !important; + border: none !important; + -webkit-box-shadow: none !important; + -moz-box-shadow: none !important; + box-shadow: none !important; + -webkit-border-radius: 0 !important; + -moz-border-radius: 0 !important; + border-radius: 0 !important; +} + +/* base post meta */ +.shortcode .post-meta { + font-size: 85%; + line-height: 190%; + margin: 0 0 10px; + padding: 0; + border: none; +} +.shortcode .post-meta span { + position: static !important; + display: inline !important; + margin: 0 7px 0 0; + padding: 0; + width: auto; + border: none; + line-height: normal; +} +.shortcode .post-meta a { + position: static !important; + display: inline !important; +} +.shortcode .post-meta .post-author { + background: url(../img/shortcodes/post-author.png) no-repeat 0 2px; + padding: 2px 0 2px 16px; +} +.shortcode .post-meta .post-category { + background: url(../img/shortcodes/post-category.png) no-repeat 0 2px; + padding: 2px 0 2px 16px; +} +.shortcode .post-meta .post-tag { + background: url(../img/shortcodes/post-tag.png) no-repeat 0 3px; + padding: 2px 0 2px 16px; +} +.shortcode .post-meta .post-comment a { + background: url(../img/shortcodes/post-comment.png) no-repeat 0 2px; + padding: 2px 0 2px 16px; + width: auto; + height: auto; + font-size: 100%; + text-shadow: none; + text-align: left; +} + +/* post layout styles */ +/* grid4 post */ +.shortcode.grid4 .post { + width: 23%; + margin-left: 2.5%; + float: left; +} + +/* grid3 post */ +.shortcode.grid3 .post { + width: 30%; + margin-left: 3.5%; + float: left; +} + +/* grid2 post */ +.shortcode.grid2 .post { + width: 48%; + margin-left: 3.75%; + float: left; +} + +/* grid2-thumb post */ +.shortcode.grid2-thumb .post { + width: 48%; + margin-left: 4%; + float: left; +} +.shortcode.grid2-thumb .post-image { + float: left; + margin: 5px 14px 10px 0; +} +.shortcode.grid2-thumb .post-content { + overflow: hidden; +} + +/* list thumb post */ +.shortcode.list-thumb-image .post-image { + float: left; + margin: 7px 16px 10px 0; +} +.shortcode.list-thumb-image .post-content { + overflow: hidden; +} + +/* list large image */ +.shortcode.list-large-image .post-image { + float: left; + margin: 7px 22px 10px 0; +} +.shortcode.list-large-image .post-content { + overflow: hidden; +} + +/************************************************************************************ +SLIDER +*************************************************************************************/ +.shortcode.slider, +.shortcode.post-slider { + margin: 0 0 30px; +} +.shortcode.slider .post, +.shortcode.post-slider .post { + margin: 0; +} + +/* base slides */ +.shortcode .slides { + margin: 0; + padding: 0; + height: auto !important; +} +.shortcode .slides li { + list-style: none; + margin: 0; + padding: 0 0 0; + width: 100px; + height: auto !important; + float: left; +} +.shortcode .slides .post { + padding-right: 10px; +} + +/* slides base h1,h2,h3,h4,h5,h6 */ +.shortcode .slides h1, +.shortcode .slides h2, +.shortcode .slides h3, +.shortcode .slides h4, +.shortcode .slides h5, +.shortcode .slides h6 { + margin: 0 0 5px; +} + +/* slides post image */ +.shortcode .slides .post-image { + margin: 0 0 5px; +} + +/* slides post title */ +.shortcode .slides .post-title { + padding-right: 10px; + margin: 0 0 5px; + font-size: 140%; +} + +/* slides post content */ +.shortcode .slides .post-content { + padding-right: 11px; + font-size: 95%; +} + +/* slider-nav */ +.shortcode .slider-nav { + text-align: center; + margin: 15px auto 10px; + border: none; +} +.shortcode .slider-nav a { + font: 14px/100% Arial, Helvetica, sans-serif; + min-width: 24px; + min-height: 20px; + line-height: 100%; + text-decoration: none; + text-align: center; + margin: 0 3px; + padding: 4px 0 0; + vertical-align: middle; + display: inline-block; + zoom:1; + *display:inline; + -webkit-border-radius: 10em; + -moz-border-radius: 10em; + border-radius: 10em; +} +.shortcode .slider-nav a { + color: #666; + text-shadow: 0 1px 0 rgba(255,255,255,.8); + border: solid 1px #ccc; + background: #e9e9e9; + background: -moz-linear-gradient(top, #ffffff 0%, #dbdbdb 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ffffff), color-stop(100%,#dbdbdb)); + background: -webkit-linear-gradient(top, #ffffff 0%,#dbdbdb 100%); + background: -o-linear-gradient(top, #ffffff 0%,#dbdbdb 100%); + background: -ms-linear-gradient(top, #ffffff 0%,#dbdbdb 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#dbdbdb',GradientType=0 ); + background: linear-gradient(top, #ffffff 0%,#dbdbdb 100%); + -webkit-box-shadow: inset 0 -1px 1px rgba(255,255,255,.4); + -moz-box-shadow: inset 0 -1px 1px rgba(255,255,255,.4); + box-shadow: inset 0 -1px 1px rgba(255,255,255,.4); +} +.shortcode .slider-nav a:hover { + background: #f4f4f4; +} \ No newline at end of file diff --git a/bigbluebutton-client/resources/prod/help/CSS/style.css b/bigbluebutton-client/resources/prod/help/CSS/style.css new file mode 100755 index 0000000000000000000000000000000000000000..5284d0ca87a1df4bb50e8a1267129d78abf36b30 --- /dev/null +++ b/bigbluebutton-client/resources/prod/help/CSS/style.css @@ -0,0 +1,739 @@ +/* +Theme Name: Suco Child +Description: Child theme for Suco theme +Template: suco +*/ + +@import url("../suco/style.css"); + +/* write custom css below */ + + +/************************************************************************************ +CUSTOM TYPOGRAPHY +*************************************************************************************/ +p { margin: 0.5em 0 1.0em; padding: 0; line-height: 20px; } +p.imgtext { margin: 0 0 0 0; padding: 0 0 35px 0; font-family: Georgia; font-style: italic; color: #666; font-size: 14px; text-align: center; } +p.subhead { margin-top:-15px; padding-bottom:10px; font-family: Georgia; font-style: italic; color: #666; font-size: 22px; text-align: center;} +p.subfeat { margin-top:-10px; padding-bottom:15px; font-family: Georgia; font-style: italic; color: #666; font-size: 18px; } +.list-post .post-title { margin: 0 0 10px 0; font-size: 28px !important; text-align: left !important; } +#slider p { /* color:#6d8c9e;*/ color: #777;} +.action-text h2, .action-text h3, .action-text h4 { font-size: 26px; line-height: 110%; margin: 0 0 2px; color: #333333; } +#overview h1 { text-align: center; font-size: 48px; padding: 20px 0 0 0; } +h4 { color: #333; } +h5 { color: ##00445E !important;} +/************************************************************************************ +CUSTOM BUTTONS +*************************************************************************************/ +/* Orange Action Button */ +.action-text .button { + background: #e08e19; + background-image: -webkit-gradient(linear, center top, center bottom, from(#f2ab2b), to(#e17b19)); + background-image: -webkit-linear-gradient(top, #f2ab2b, #e17b19); + background-image: -moz-linear-gradient(top, #f2ab2b, #e17b19); + background-image: -o-linear-gradient(top, #f2ab2b, #e17b19); + background-image: -ms-linear-gradient(top, #f2ab2b, #e17b19); + background-image: linear-gradient(top, #f2ab2b, #e17b19); + padding: 10px 20px; + font: 26px/100% Rokkitt, Arial, Helvetica, sans-serif; + color: #fff; + text-decoration: none; + position: absolute; + top: 15px; + right: 20px; + border: solid 1px #cb8521; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.5); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.5); + box-shadow: inset 0 1px 0 rgba(255,255,255,.5); +} +.action-text .button:hover { background:#e08e19; text-decoration: none; } + + +/*Buttons*/ +a.button.green { + border-color: #4e7521; + + background: #76ab3b; + background: -moz-linear-gradient(top, #90c356 0%, #649a27 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#90c356), color-stop(100%,#649a27)); + background: -webkit-linear-gradient(top, #90c356 0%,#649a27 100%); + background: -o-linear-gradient(top, #90c356 0%,#649a27 100%); + background: -ms-linear-gradient(top, #90c356 0%,#649a27 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#90c356', endColorstr='#649a27',GradientType=0 ); + background: linear-gradient(top, #90c356 0%,#649a27 100%); + + + color: #fff !important; + text-shadow: 0 -1px 0 rgba(0,0,0,.4); +} +a.button.green:hover { + background: #90c356; +} +a.button.green.flat { + background: #76ab3b; +} + +/************************************************************************************ +HEADER +*************************************************************************************/ +#header #searchform #s { + width: 120px; + color: #666; + background: #f2f2f2; + padding-left: 10px !important; + float: right; + -webkit-box-shadow: inset 0 2px 2px rgba(0,0,0,.7), 0 1px 0 rgba(255,255,255,.1); + -moz-box-shadow: inset 0 2px 2px rgba(0,0,0,.7), 0 1px 0 rgba(255,255,255,.1); + box-shadow: inset 0 2px 2px rgba(0,0,0,.7), 0 1px 0 rgba(255,255,255,.1); + -webkit-border-radius: 12px; + -moz-border-radius: 12px; + border-radius: 12px; + -webkit-transition: width .7s; + -moz-transition: width .7s; + transition: width .7s; +} + +#header a { + color: #fff; +} + +a { + color: #30406b; +} + +.social-widget { + color:#fff; +} + +#header #searchform { display:none;} + +/************************************************************************************ +MAIN NAVIGATION +*************************************************************************************/ +#main-nav { + margin: 0; + padding: 0; + position: absolute; + left: 0; + bottom: 12px; + z-index: 100; +} + +#main-nav li { + margin: 0; + padding: 0; + list-style: none; + float: left; + position: relative; +} + +/************************************************************************************ +MAIN LEVEL NAVIGATION +*************************************************************************************/ +#main-nav a { + color: #fff; + display: block; + padding: 5px 15px; + margin: 0 5px 0 0; + text-decoration: none; + font-weight: bold; +} + +/* main level link :hover */ +#main-nav a:hover, #main-nav li:hover > a { + background: #1a243f; + color: #fff; + -webkit-box-shadow: inset 0 2px 2px rgba(0,0,0,.7), 0 1px 0 rgba(255,255,255,.1); + -moz-box-shadow: inset 0 2px 2px rgba(0,0,0,.7), 0 1px 0 rgba(255,255,255,.1); + box-shadow: inset 0 2px 2px rgba(0,0,0,.7), 0 1px 0 rgba(255,255,255,.1); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +/* current link */ +#main-nav .current_page_item a, #main-nav .current-menu-item a { + background: #161211; + color: #c8ad6c; + -webkit-box-shadow: inset 0 2px 2px rgba(0,0,0,.7), 0 1px 0 rgba(255,255,255,.1); + -moz-box-shadow: inset 0 2px 2px rgba(0,0,0,.7), 0 1px 0 rgba(255,255,255,.1); + box-shadow: inset 0 2px 2px rgba(0,0,0,.7), 0 1px 0 rgba(255,255,255,.1); + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +/* current link :hover */ +#main-nav .current_page_item a:hover, #main-nav .current-menu-item a:hover { + color: #fff; +} + +/* sub-levels link */ +#main-nav ul a, #main-nav .current_page_item ul a, #main-nav ul .current_page_item a, #main-nav .current-menu-item ul a, #main-nav ul .current-menu-item a, #main-nav li:hover > ul a { + color: #666; + font-weight: normal; + padding: 7px 0 7px 15px; + margin: 0; + width: 180px; + background: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +/* sub-levels link :hover */ +#main-nav ul a:hover, #main-nav .current_page_item ul a:hover, #main-nav ul .current_page_item a:hover, #main-nav .current-menu-item ul a:hover, #main-nav ul .current-menu-item a:hover, #main-nav li:hover > ul a:hover { + color: #00445E; + background-color: #EFF8FB; +} +/* sub-level ul */ +#main-nav ul { + margin-top: -3px; + padding: 5px 0; + list-style: none; + position: absolute; + background: #fff; + border: solid 1px #ccc; + z-index: 100; + display: none; + -webkit-border-top-left-radius: 0px; + -webkit-border-top-right-radius: 5px; + -webkit-border-bottom-right-radius: 5px; + -webkit-border-bottom-left-radius: 5px; + -moz-border-radius-topleft: 0px; + -moz-border-radius-topright: 5px; + -moz-border-radius-bottomright: 5px; + -moz-border-radius-bottomleft: 5px; + border-top-left-radius: 0px; + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; +} +#main-nav ul li { + background: none; + padding: 0; + margin: 0; + display: block; +} +/* sub-sub-level dropdown */ +#main-nav ul ul { + left: 190px; + top: -2px; +} +/* show dropdown ul on hover */ +#main-nav li:hover > ul { + display: block; +} + +/************************************************************************************ +PAGE NAVIGATION (BLOG) +*************************************************************************************/ +.pagenav a { + color: white; + text-decoration: none; + background: #273d6c; + padding: 2px 6px; + border: solid 1px #1a2744; + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2); + box-shadow: inset 0 1px 0 rgba(255,255,255,.2); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + border-image: initial; +} + +.pagenav a:hover { + background:#142240; +} + +a.button.blue-opaque { + border: 1px solid #7996ac; + background: #b1c8da; + color: #fff !important; + text-shadow: 0 1px #71AEC2; +} +a.button.blue-opaque:hover { + background: #9ab3c7; +} +a.button.blue-opaque.flat { + background: #76ab3b; +} + + +input[type="reset"], input[type="submit"] { + background: #273D6C !important; + border: 1px solid #1A2744; +} + + + +/************************************************************************************ +BANNER +*************************************************************************************/ +#headerwrap { + background-color: #EFF8FB; +} + +.welcome-message { + font: 280%/110% Rokkitt, Arial, Helvetica, sans-serif; + color: #573a1e; + text-align: center; + margin-bottom: 35px; +} + +/* Slider */ +#slider .slides li { + background: none !important; + position: relative; + color:#6D8C9E;; + margin: 0; + padding: 0; + width: 978px; + list-style-type:square; + float: left; +} + +/************************************************************************************ +FEATURE HIGHLIGHTS +*************************************************************************************/ +.home-highlightswrap { +position: relative; +background: #3D2C29 url(images/dash-bg.png) repeat-x 0 bottom; +border-top: 0 !important; +-webkit-box-shadow: inset 0 2px 3px rgba(0,0,0,.3); +-moz-box-shadow: inset 0 2px 3px rgba(0,0,0,.3); +box-shadow: inset 0 2px 3px rgba(0,0,0,.3); +} + +.home-highlights .home-highlights-content { + color:#777 !important; +} + +.home-highlights .icon { +padding: 0 0 0 5px; +float: left; +position: relative; +} + +/************************************************************************************ +FEATURE PAGE +*************************************************************************************/ +#roles { height:520px; } +#roles .first{ margin-left:0px; padding: 10px 0px 10px 0px; clear:left;} +#roles .col3-1{ padding: 10px 0px 0px 0px; } + +#presentations { height:425px; padding-top:45px; } +#listeners { padding-top:45px; height:350px;} +#chat { padding-top:45px; height:350px;} +#deskshare { padding-top:45px; height:375px;} +#small-f {padding-top:45px; height:325px; } + +/************************************************************************************ +OPEN SOURCE COMPONENTS PAGE +*************************************************************************************/ +#os_cmp img { float:left; padding: 0 15px 0 0; } +#os_cmp .first{ margin-left:0px; padding: 10px 20px 10px 0px; clear:left; max-width: 45%;} +#os_cmp .col2-1{ padding: 15px 20px 0px 0px; max-width: 45%; } + +/************************************************************************************ +VIDEO PAGE +*************************************************************************************/ +/* Tutorial Videos */ +#vid_tut{ height:100%; width:auto; display:block; float:left; } +#vid_tut img { border: 5px solid #fff;} +#vid_tut .first { margin-left:0px; clear:left; } +#vid_tut .col2-1{ max-width: 42%; } + +/* Developer Videos */ +#vid_dev{ height:100%; width:auto; display:block; float:left; margin:20px 0 0 0; } +#vid_dev img { border: 5px solid #fff;} +#vid_dev .first { margin-left:0px !important; clear:left; } +#vid_dev .col2-1{ max-width: 42%; } + +.play { background:transparent url(/wp-content/uploads/2011/12/play.png) no-repeat; padding: 8px 6px 15px 40px; font-weight:bold; } +.youvid{ border:5px white; } + +/************************************************************************************ +SUPPORT PAGE +*************************************************************************************/ +#c_support .first{ margin-left:0px; padding: 10px 20px 10px 0px; clear:left; max-width: 45%; height:215px;} +#c_support .col2-1 { padding: 15px 20px 0px 0px; max-width: 45%; height:215px;} +#open_source .first{ margin-left:0px; padding: 10px 20px 10px 0px; clear:left; max-width: 45%;} +#open_source .col2-1{ padding: 15px 20px 0px 0px; max-width: 45%; } + +/************************************************************************************ +COMMERCIAL SUPPORT +*************************************************************************************/ +.heading { + padding: 8px 6px 5px 50px; + font-family: Arial, Helvetica, sans-serif; + color: #30406B; + font-size: 1.6em; + line-height: 1.4em; + font-weight: normal; + text-shadow: 0 2px 0 rgba(0, 0, 0, .15); +} + +/************************************************************************************ +OPEN SOURCE INTEGRATIONS +*************************************************************************************/ +.wordpress { background:transparent url(/wp-content/uploads/2011/12/wordpress_icon.png) no-repeat; } +.joomla { background:transparent url(/wp-content/uploads/2011/12/joomla_icon.png) no-repeat; } +.drupal { background:transparent url(/wp-content/uploads/2011/12/drupal_icon.png) no-repeat; } +.moodle { background:transparent url(/wp-content/uploads/2011/12/moodle_icon.png) no-repeat; } +.sakai{ background:transparent url(/wp-content/uploads/2011/12/sakai_icon.png) no-repeat; } +.tiki { background:transparent url(/wp-content/uploads/2011/12/tiki_icon.png) no-repeat; } +.efront { background:transparent url(/wp-content/uploads/2011/12/efront_icon.png) no-repeat; } +.redmine { background:transparent url(/wp-content/uploads/2011/12/redmine_icon.png) no-repeat; } +.foswiki { background:transparent url(/wp-content/uploads/2011/12/foswiki_icon.png) no-repeat; } +.atutor { background:transparent url(/wp-content/uploads/2012/04/atutor_logo.png) no-repeat; } +.fedena { background:transparent url(/wp-content/uploads/2012/09/fedena_logo.png) no-repeat; } + +/************************************************************************************ +BLOG +*************************************************************************************/ +.post-title a { + color: #30406B; + text-decoration: none; + font-weight:bold; +} + +.post-image img, .widget .feature-posts-list .post-img, .widget .flickr_badge_image img, .commentlist .avatar, .recent-comments-list .avatar, #body .gallery img, .attachment img { + adding: 2px; + background: white; + border: solid 2px #E3E3E3; + border-bottom-color: #DDD; + border-image: initial; +} + +.list-post .post-image { + margin: 15px 0 15px; +} + +.sidebar1 .list-post .post, .sidebar1 .list-post .hentry, .sidebar1 .list-post .type-page, .sidebar1 .list-post .attachment { + padding-left: 130px; + width: 550px; + position: relative; + margin-bottom: 100px; +} + +.h_overview { text-align:center; padding-bottom:20px;} +.header-widget h1, .header-widget h2, .header-widget h3, .header-widget h4, .header-widget h5, .header-widget h6 { + margin: 0; + padding: 0; + color: #00445E; +} +.blue {color: #00445E !important; } + + +input[type="text"], input[type="password"], textarea, input[type="search"] { +background: #eee; +border: 1px solid #cccccc; +padding: 6px 10px; +-webkit-border-radius: 5px; +-moz-border-radius: 5px; +border-radius: 5px; +-webkit-appearance: none; +border-image: initial; +} + +.post-nav span span { background: #273D6C !important; border:1px solid #1a2744; } +.commentlist .comment-reply-link { background: #273D6C !important; border:1px solid #1a2744; } + + + +/************************************************************************************ +SIDEBAR WIDGET +*************************************************************************************/ +.action-text { + background: #f9f9f8; + border: solid 1px #ccc; + position: relative; + margin-top: 40px; + padding: 15px 200px 15px 25px; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; + -webkit-box-shadow: 0 1px 0 rgba(0,0,0,.1); + -moz-box-shadow: 0 1px 0 rgba(0,0,0,.1); + box-shadow: 0 1px 0 rgba(0,0,0,.1); + clear:both; +} + +#text-4{ + border-bottom: solid 1px #CCC; + padding: 40px 0 30px; + border: 1px solid #CCC; + border: 1px solid white; + -moz-box-shadow: 0 0 5px #999; + -webkit-box-shadow: 0 0 5px #999; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + background: -moz-linear-gradient(top, whiteSmoke, #F0F0F0); + background: -webkit-gradient(linear, left top, left bottom, from(whiteSmoke), to(#F0F0F0)); +} + +#text-4{ padding: 20px !important; } + +#themify-feature-posts-3, #themify-recent-comments-3{ + border-bottom: solid 1px #CCC; + padding: 20px !important; + border: 1px solid #CCC; + border: 1px solid white; + -moz-box-shadow: 0 0 5px #999; + -webkit-box-shadow: 0 0 5px #999; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + background: -moz-linear-gradient(top, whiteSmoke, #F0F0F0); + background: -webkit-gradient(linear, left top, left bottom, from(whiteSmoke), to(#F0F0F0)); +} + +#sidebar .widget_text{ + border-bottom: solid 1px #CCC; + padding: 20px !important; + border: 1px solid #CCC; + border: 1px solid white; + -moz-box-shadow: 0 0 5px #999; + -webkit-box-shadow: 0 0 5px #999; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + background: -moz-linear-gradient(top, whiteSmoke, #F0F0F0); + background: -webkit-gradient(linear, left top, left bottom, from(whiteSmoke), to(#F0F0F0)); +} + + +#sidebar .widget_ns_mailchimp { + border-bottom: solid 1px #CCC; + padding: 20px !important; + border: 1px solid #CCC; + border: 1px solid white; + -moz-box-shadow: 0 0 5px #999; + -webkit-box-shadow: 0 0 5px #999; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + background: -moz-linear-gradient(top, whiteSmoke, #F0F0F0); + background: -webkit-gradient(linear, left top, left bottom, from(whiteSmoke), to(#F0F0F0)); +} + +#ns_widget_mailchimp-email-3 { + + background-color:#fff; + width:90%; + margin-bottom:10px; +} + +/************************************************************************************ +WRAPS +*************************************************************************************/ +.sub_wrap{ + display: block; + float:left; + padding: 20px; + border: 1px solid #CCC; + border: 1px solid white; + -moz-box-shadow: 0 0 5px #999; + -webkit-box-shadow: 0 0 5px #999; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + background: -moz-linear-gradient(top, whiteSmoke, #F0F0F0); + margin: 0 0 40px 35px; + background: -webkit-gradient(linear, left top, left bottom, from(whiteSmoke), to(#F0F0F0)); +} + +#upperwrap { + background-image: url(http://r2.bigbluebutton.org/wp-content/themes/suco/uploads/bg/bg1.png); + background-color: #fff; + background: #fff url(images/fibre-bg.png); + border-bottom: none !important; + padding: 40px 0 30px; +} + + + +/************************************************************************************ +Turning Off ShareThis On The Slider Section +*************************************************************************************/ +.slide-content .stButton .facebook { + display:none; + margin:0; + padding:0; +} + + .slide-content .stButton .twitter { + display:none; + margin:0; + padding:0; +} + +.slide-content .stButton .email { + display:none; + margin:0; + padding:0; +} + +.slide-content .stButton .sharethis { + display:none; + margin:0; + padding:0; +} + +/************************************************************************************ +Turning Off ShareThis On The Highlights Section +*************************************************************************************/ + .home-highlights .home-highlights-content .stButton .facebook { + display:none; + margin:0; + padding:0; +} + +.home-highlights .home-highlights-content .stButton .twitter { + display:none; + margin:0; + padding:0; +} + +.home-highlights .home-highlights-content .stButton .email { + display:none; + margin:0; + padding:0; +} + +.home-highlights .home-highlights-content .stButton .sharethis { + display:none; + margin:0; + padding:0; +} + + + +/************************************************************************************ +CUSTOM TABLE +*************************************************************************************/ +table.table2{ + font-family:Arial, Helvetica, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 22px; + border-collapse:collapse; + border-right:1px dotted #e0e0e0; + border-left:1px dotted #e0e0e0; + border-bottom:1px dotted #e0e0e0; +} + +.table2 thead th { + padding:20px 10px 20px 10px; + color:#fff; + font-size: 20px; + background-color:#252625; + font-weight:normal; + text-shadow:1px 1px 1px #000; +} + +.table2 thead th:empty{ + background:transparent; + -moz-box-shadow:none; + -webkit-box-shadow:none; + box-shadow:none; +} +.table2 thead :nth-last-child(1){ + border-right:none; +} + +.table2 thead :first-child, +.table2 tbody :nth-last-child(1){ + border:none; +} + +.table2 tbody th{ + vertical-align:top; + color: #00445E; + padding:25px; + text-shadow:1px 1px 1px #ccc; + background-color:#eff8fb; +} + +.table2 tbody td{ + padding:25px; + background: -moz-linear-gradient(100% 25% 90deg, #fefefe, #f9f9f9); + background: -webkit-gradient(linear, 0% 0%, 0% 25%, from(#f9f9f9), to(#fefefe)); + border-right:1px dotted #e0e0e0; + text-shadow:-1px 1px 1px #fff; + color:#777; +} + + +/************************************************************************************ +FOOTER +*************************************************************************************/ +#footer-logo { display:none; } +#footer { clear: both; position: relative; min-height: 25px; color: #B3AEAC; padding: 15px 0; } + + + + + +/* ------------------ + styling for the tables + ------------------ */ + +#hor-minimalist-b +{ + font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; + font-size: 12px; + background: #fff; + /* margin: 45px; */ + width: 480px; + border-collapse: collapse; + text-align: left; +} +#hor-minimalist-b th +{ + font-size: 18px; + font-weight: bold; + color: #00445E; + padding: 10px 8px; + border-bottom: 2px solid #00445E; +} +#hor-minimalist-b td +{ + border-bottom: 1px solid #ccc; + color: #777; + padding: 6px 8px; +} +#hor-minimalist-b tbody tr:hover td +{ + color: #444; +} + + +/* My changes */ +p.nocomments, #respond h3 { display: none; } + +.clearfix { + *zoom: 1; + &:before, + &:after { + display: table; + content: ""; + } + &:after { + clear: both; + } +} + +.home-highlights div:nth-child(7) { + margin-left:0 !important; +} + +.home-highlights div:nth-child(8) { + margin-left:30px; + clear:none !important; +} \ No newline at end of file diff --git a/bigbluebutton-client/resources/prod/help/CSS/style1.css b/bigbluebutton-client/resources/prod/help/CSS/style1.css new file mode 100755 index 0000000000000000000000000000000000000000..6705688396b1d66bd566e428c679bed121445cee --- /dev/null +++ b/bigbluebutton-client/resources/prod/help/CSS/style1.css @@ -0,0 +1,1787 @@ +/* +Theme Name: Suco +Theme URI: http://themify.me/themes/suco +Version: 1.1.5 +Author: Themify +Author URI: http://www.themify.me + +--------- + +DO NOT EDIT THIS FILE. + +If you need to overwrite the CSS styling, create a new custom_style.css +in the theme folder and it will automatically load in the <head>. + +*/ + +/************************************************************************************ +RESET +*************************************************************************************/ +html, body, address, blockquote, div, dl, form, h1, h2, h3, h4, h5, h6, ol, p, pre, table, ul, +dd, dt, li, tbody, td, tfoot, th, thead, tr, button, del, ins, map, object, +a, abbr, acronym, b, bdo, big, br, cite, code, dfn, em, i, img, kbd, q, samp, small, span, +strong, sub, sup, tt, var, legend, fieldset, figure { + margin: 0; + padding: 0; +} + +img, fieldset { + border: 0; +} + +/* set html5 elements to block */ +article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { + display: block; +} + +/************************************************************************************ +GENERAL STYLING +*************************************************************************************/ +body { + font: .81em/150% Arial, Helvetica, sans-serif; + background: #403430 url(images/crossed-bg.png); + color: #777; +} +a { + text-decoration: none; + outline: none; + color: #9b885d; +} +a:hover { + text-decoration: underline; +} +p { + margin: 0 0 1.2em; + padding: 0; +} +small { + font-size: 87%; +} +blockquote { + font: italic 110%/130% "Times New Roman", Times, serif; + padding: 8px 30px 15px; +} + +/* list */ +ul, ol { + margin: 1em 0 1.4em 24px; + padding: 0; + line-height: 140%; +} +li { + margin: 0 0 .5em 0; + padding: 0; +} + +/* headings */ +h1, h2, h3, h4, h5, h6 { + line-height: 1.4em; + margin: 20px 0 .4em; + font-family: Rokkitt, Arial, Helvetica, sans-serif; + color: #3f2103; + font-weight: normal; + text-shadow: 0 2px 0 rgba(0,0,0,.15); +} +h1 { + font-size: 2.4em; +} +h2 { + font-size: 2em; +} +h3 { + font-size: 1.8em; +} +h4 { + font-size: 1.6em; +} +h5 { + font-size: 1.4em; +} +h6 { + font-size: 1em; +} + +/* form elements */ +input, textarea, select, input[type=search] { + font-size: 100%; + font-family: inherit; +} + +/* form field style */ +input[type=text], input[type=password], textarea, input[type=search] { + background: #ddd; + border: none; + padding: 6px 10px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + -webkit-appearance: none; +} +input[type=text]:focus, input[type=password]:focus, textarea:focus, input[type=search]:focus { + outline: none; + background: #eee; +} + +/* form field width */ +input[type=text], input[type=search] { + width: 240px; + max-width: 96%; +} +textarea { + line-height: 150%; + width: 96%; +} + +/* search input */ +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + display: none; +} + +/* form buttons */ +input[type=reset], input[type=submit] { + padding: 8px 20px; + line-height: 100%; + color: #fff; + font-weight: bold; + background: #d7400d; + border: solid 1px #681d06; + text-shadow: 0 -1px 0 rgba(0,0,0,.4); + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2); + box-shadow: inset 0 1px 0 rgba(255,255,255,.2); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +input[type=reset]:hover, input[type=submit]:hover { + background: #c62807; +} + +/************************************************************************************ +STRUCTURE +*************************************************************************************/ +.pagewidth { + width: 978px; + margin: 0 auto; +} + +/* body */ +#body { + padding: 0 0 40px; + background: #fff url(images/noise-bg.png); +} + +/* upperwrap */ +#upperwrap { + background: #ded0a8 url(images/fibre-bg.png); + border-bottom: solid 1px #ccc; + padding: 40px 0 30px; +} + +/* content */ +#content { + margin: 40px 0 60px; +} +.sidebar1 #content { + width: 680px; + float: left; +} + +/* sidebar */ +#sidebar { + width: 252px; + float: right; + margin: 40px 0 60px; +} + +/* sidebar left */ +.sidebar-left #content { + float: right; +} +.sidebar-left #sidebar { + float: left; +} + +/* sidebar-none content */ +.sidebar-none #content { + width: 100%; + float: none; +} + +/************************************************************************************ +GRID +*************************************************************************************/ +.col, +.col4-1, +.col4-2, +.col4-3, +.col3-1, +.col3-2, +.col2-1 { + float: left; + margin-left: 30px; +} +.col4-1 { + width: 222px; +} +.col4-2, .col2-1 { + width: 474px; +} +.col4-3 { + width: 726px; +} +.col3-1 { + width: 306px; +} +.col3-2 { + width: 642px; +} +.col.first, +.col4-1.first, +.col4-2.first, +.col4-3.first, +.col3-1.first, +.col3-2.first, +.col2-1.first { + margin-left: 0; + clear: left; +} + +/* sidebar1 grid */ +.sidebar1 .col4-1, +.sidebar1 .col4-2, +.sidebar1 .col4-3, +.sidebar1 .col3-1, +.sidebar1 .col3-2, +.sidebar1 .col2-1 +{ + margin-left: 2%; +} +.sidebar1 .col4-1 { + max-width: 23%; +} +.sidebar1 .col4-2, .sidebar1 .col2-1 { + max-width: 48%; +} +.sidebar1 .col4-3 { + max-width: 72%; +} +.sidebar1 .col3-1 { + max-width: 31%; +} +.sidebar1 .col3-2 { + max-width: 62%; +} + +/************************************************************************************ +HEADER +*************************************************************************************/ +#headerwrap { + position: relative; +} +#header { + position: relative; + height: 180px; + color: #b3aeac; + z-index: 100; +} +#header a { + color: #c7af77; +} + +/* site logo */ +#site-logo { + margin: 0; + position: absolute; + top: 30px; + font: small-caps 50px/100% Rokkitt, Arial, Helvetica, sans-serif; + letter-spacing: 1px; + text-shadow: 0 2px 0 rgba(0,0,0,.2); +} +#site-logo a { + text-decoration: none; + color: #fff; +} +#site-logo a:hover { + text-decoration: none; +} + +/* site description */ +#site-description { + margin: 0; + font: 14px/100% Rokkitt, Arial, Helvetica, sans-serif; + text-transform: uppercase; + position: absolute; + top: 85px; + color: #bdb9b7; +} + +/* nav bar */ +#nav-bar { + background: #261e1c url(images/dash-bg.png) repeat-x 0 bottom; + border-top: solid 1px #000; + width: 100%; + height: 50px; + position: absolute; + z-index: 1; + bottom: 0; + left: 0; + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 -1px 3px rgba(0,0,0,.2); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 -1px 3px rgba(0,0,0,.2); + box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 -1px 3px rgba(0,0,0,.2); +} + + +/************************************************************************************ +SEARCH FORM +*************************************************************************************/ +#header #searchform { + position: absolute; + right: 0; + top: 85px; + width: 160px; +} +#header #searchform #s { + width: 120px; + color: #a5a099; + background: #221b19 url(images/search.png) no-repeat 8px center; + padding-left: 28px; + float: right; + -webkit-box-shadow: inset 0 2px 2px rgba(0,0,0,.7), 0 1px 0 rgba(255,255,255,.1); + -moz-box-shadow: inset 0 2px 2px rgba(0,0,0,.7), 0 1px 0 rgba(255,255,255,.1); + box-shadow: inset 0 2px 2px rgba(0,0,0,.7), 0 1px 0 rgba(255,255,255,.1); + -webkit-border-radius: 12px; + -moz-border-radius: 12px; + border-radius: 12px; + -webkit-transition: width .7s; + -moz-transition: width .7s; + transition: width .7s; +} +#header #searchform #s:focus { + width: 140px; +} + +/************************************************************************************ +SOCIAL WIDGET +*************************************************************************************/ +.social-widget { + float: right; + margin-top: -1px; + position: absolute; + bottom: 10px; + right: 0; +} +.social-widget a { + text-decoration: none; +} +.social-widget a:hover { + text-decoration: none; +} +.social-widget .widget { + display: inline-block; + zoom:1; + *display:inline; + margin: 0 5px 0 0; +} +.social-widget .widget div { + display: inline; +} +.social-widget .widgettitle { + width: auto; + font: bold 100% Arial, Helvetica, sans-serif; + text-transform: none; + border: none; + letter-spacing: 0; + position: static; + display: inline-block; + zoom:1; + *display:inline; + margin: 5px 8px 2px 0; + padding: 0; + background: transparent; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +.social-widget ul { + margin: 6px 0 0 !important; + padding: 0; + display: inline; +} +.social-widget ul li { + padding: 0 2px 5px 0; + margin: 0; + display: inline-block; + zoom:1; + *display:inline; + border: none !important; + clear: none; + line-height: 100%; +} +.social-widget li img { + vertical-align: middle; + margin-top: -5px; +} + +/* rss */ +.social-widget .rss { + display: inline; +} +.social-widget .rss a { + background: url(images/rss.png) no-repeat left center; + padding: 3px 0 2px 30px; + display: inline-block; + zoom:1; + *display:inline; +} + +/************************************************************************************ +HEADER WIDGET +*************************************************************************************/ +.header-widget { + position: absolute; + top: 20px; + right: 0; + line-height: 130%; + text-align: right; +} +.header-widget h1, +.header-widget h2, +.header-widget h3, +.header-widget h4, +.header-widget h5, +.header-widget h6 { + margin: 0; + padding: 0; + color: #fff; +} + +/************************************************************************************ +MAIN NAVIGATION +*************************************************************************************/ +#main-nav { + margin: 0; + padding: 0; + position: absolute; + left: 0; + bottom: 12px; + z-index: 100; +} +#main-nav li { + margin: 0; + padding: 0; + list-style: none; + float: left; + position: relative; +} +/* main level link */ +#main-nav a { + color: #fff; + display: block; + padding: 5px 15px; + margin: 0 5px 0 0; + text-decoration: none; + font-weight: bold; +} +/* main level link :hover */ +#main-nav a:hover, #main-nav li:hover > a { + color: #c8ad6c; +} +/* current link */ +#main-nav .current_page_item a, #main-nav .current-menu-item a { + background: #161211; + color: #c8ad6c; + -webkit-box-shadow: inset 0 2px 2px rgba(0,0,0,.7), 0 1px 0 rgba(255,255,255,.1); + -moz-box-shadow: inset 0 2px 2px rgba(0,0,0,.7), 0 1px 0 rgba(255,255,255,.1); + box-shadow: inset 0 2px 2px rgba(0,0,0,.7), 0 1px 0 rgba(255,255,255,.1); + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} +/* current link :hover */ +#main-nav .current_page_item a:hover, #main-nav .current-menu-item a:hover { + color: #fff; +} +/* sub-levels link */ +#main-nav ul a, #main-nav .current_page_item ul a, #main-nav ul .current_page_item a, #main-nav .current-menu-item ul a, #main-nav ul .current-menu-item a, #main-nav li:hover > ul a { + color: #666; + font-weight: normal; + padding: 7px 0 7px 15px; + margin: 0; + width: 180px; + background: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} +/* sub-levels link :hover */ +#main-nav ul a:hover, #main-nav .current_page_item ul a:hover, #main-nav ul .current_page_item a:hover, #main-nav .current-menu-item ul a:hover, #main-nav ul .current-menu-item a:hover, #main-nav li:hover > ul a:hover { + background: #F3F3F3; + color: #000; + color: black; +} +/* sub-level ul */ +#main-nav ul { + margin: 0; + padding: 5px 0; + list-style: none; + position: absolute; + background: #fff; + border: solid 1px #ccc; + z-index: 100; + display: none; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + -webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2); + -moz-box-shadow: 0 1px 2px rgba(0,0,0,.2); + box-shadow: 0 1px 2px rgba(0,0,0,.2); +} +#main-nav ul li { + background: none; + padding: 0; + margin: 0; + display: block; +} +/* sub-sub-level dropdown */ +#main-nav ul ul { + left: 190px; + top: -2px; +} +/* show dropdown ul on hover */ +#main-nav li:hover > ul { + display: block; +} + +/************************************************************************************ +WELCOME MESSAGE +*************************************************************************************/ +.welcome-message { + font: 280%/110% Rokkitt, Arial, Helvetica, sans-serif; + color: #573a1e; + text-align: center; + margin-bottom: 35px; +} + +/************************************************************************************ +SLIDER +*************************************************************************************/ +#slider { + overflow: hidden; + position: relative; + color: #736357; + font-size: 115%; + line-height: 130%; +} +#slider .slide-post-title { + margin: 0 0 10px; + font-size: 56px; + line-height: 110%; + color: #603913; +} +#slider p { + margin: 0 0 20px; + padding: 0; +} +#slider .slides a { + text-decoration: none; + color: #f26522; +} +#slider .slides a:hover { + text-decoration: underline; +} +#slider .slides { + margin: 0 0 20px; + padding: 0; + overflow: hidden; +} +#slider .slides li { + background: none !important; + position: relative; + margin: 0; + padding: 0; + width: 978px; + list-style: none; + float: left; +} + +/* default slide */ +#slider .slide-feature-image { + float: left; + margin: 0 30px 0 0; + vertical-align: text-bottom; +} +#slider .slide-content { + overflow: hidden; + padding: 30px 0 0 0; +} + +/* image caption wrap */ +#slider .image-caption-wrap { + position: relative; + font-size: 13px; + line-height: 140%; +} +#slider .image-caption-wrap .caption { + position: absolute; + bottom: 0; + left: 0; + padding: 15px 20px 10px; + z-index: 5; + background: url(images/slide-caption-bg.png); + color: #ccc; +} +#slider .image-caption-wrap h3 { + color: #fff; + margin: 0 0 5px; + padding: 0; + font: bold 140%/120% Arial, Helvetica, sans-serif; +} +#slider .image-caption-wrap p { + margin: 0; +} +#slider .image-caption-wrap a { + text-decoration: none; + color: #fff; +} +#slider .image-caption-wrap a:hover { + text-decoration: underline; +} + +/* image only slide */ +#slider .image-slide { + text-align: center; +} +/* FlexSlider Necessary Styles */ +#slider { + width: 100%; + margin: 0; + padding: 0; +} +#slider .slides > li { + display: none; +} +/* slider image styles */ +#slider .slider-image-caption img, +#slider .slider-image-only img { + padding: 4px; + background: #fff; + border: solid 1px #ccc; + border-bottom-color: #aaa; +} + +/* slider navigation */ +#slider .flex-control-nav { + text-align: center; + display: block; + width: 100%; + padding: 0; + margin: 0; +} +#slider .flex-control-nav li { + display: inline; + margin: 0; + padding: 0; +} +#slider .flex-control-nav a { + display: inline-block; + zoom:1; + *display:inline; + background: url(images/slide-nav.png) no-repeat -40px 0; + width: 10px; + height: 11px; + padding: 2px; + margin: 0 2px 1px; + text-indent: -250px; + overflow: hidden; + cursor: pointer; +} +#slider .flex-control-nav a:hover { + background-position: -20px 0; +} +#slider .flex-control-nav a.active { + background-position: 0 0; +} + +/* next previous slide button */ +#slider .flex-direction-nav { + margin: 0; + padding: 0; +} +#slider .flex-direction-nav li { + margin: 0; + padding: 0; + list-style: none; +} +#slider .flex-direction-nav a { + display: block; + width: 49px; + height: 49px; + text-indent: -900em; + overflow: hidden; + position: absolute; + z-index: 2000; + top: 50%; + margin-top: -60px; + display: none; +} +#slider .flex-direction-nav .prev { + background: url(images/slide-next-prev.png) no-repeat; + left: 7px; +} +#slider .flex-direction-nav .next { + background: url(images/slide-next-prev.png) no-repeat 0 -49px; + right: 7px; +} +#slider .flex-direction-nav .carousel-disabled { + opacity: .2; +} +#slider:hover .flex-direction-nav a { + display: block; +} + +/* slide buttons */ +#slider a.button { + color: #000; +} +#slider a.button:hover { + text-decoration: none; +} +#slider a.black { + color: #fff; +} + +/************************************************************************************ +HOME HIGHLIGHTS +*************************************************************************************/ +.home-highlightswrap { + position: relative; + background: #3d2c29 url(images/dash-bg.png) repeat-x 0 bottom; + border-top: solid 1px #000; + -webkit-box-shadow: inset 0 2px 3px rgba(0,0,0,.3); + -moz-box-shadow: inset 0 2px 3px rgba(0,0,0,.3); + box-shadow: inset 0 2px 3px rgba(0,0,0,.3); +} +.home-highlights { + padding: 30px 0 10px; + color: #b1aba9; + position: relative; +} +.home-highlights h4 { + margin: 0; + font-size: 160%; + line-height: 120%; + color: #fff; +} +.home-highlights .icon { + padding: 5px 0 0 5px; + float: left; + position: relative; +} +.home-highlights .icon img{ + margin: 0 15px 0 0; +} +.home-highlights .icon .zoom { + position: absolute; + top: 0; + left: 0; + width: 27px; + height: 27px; + display: block; + background: url(images/zoom-icon.png) no-repeat; +} +.home-highlights .home-highlights-content { + overflow: hidden; + margin-bottom: 20px; +} + +/************************************************************************************ +HOMEPAGE CALL OF ACTION TEXT +*************************************************************************************/ +.action-text { + background: #fbf2d4; + border: solid 1px #cebe8f; + position: relative; + margin-top: 40px; + padding: 15px 200px 15px 25px; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; + -webkit-box-shadow: 0 1px 0 rgba(0,0,0,.1); + -moz-box-shadow: 0 1px 0 rgba(0,0,0,.1); + box-shadow: 0 1px 0 rgba(0,0,0,.1); +} +.action-text h2, +.action-text h3, +.action-text h4 + { + font-size: 26px; + line-height: 110%; + margin: 0 0 2px; + color: #483633; +} +.action-text p { + margin: 0 0 5px; +} + +/* action button */ +.action-text .button { + background: #d43b0c; + padding: 10px 20px; + font: 26px/100% Rokkitt, Arial, Helvetica, sans-serif; + color: #fff; + text-decoration: none; + position: absolute; + top: 15px; + right: 20px; + border: solid 1px #681d06; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.5); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.5); + box-shadow: inset 0 1px 0 rgba(255,255,255,.5); +} +.action-text .button:hover { + text-decoration: none; +} + +/************************************************************************************ +HOME WIDGETS +*************************************************************************************/ +.home-widgets { + padding: 50px 0 20px; +} + +/************************************************************************************ +AUTHOR PAGE +*************************************************************************************/ +.author-bio { + margin: 0 0 30px; +} +.author-bio .author-avatar { + float: left; + margin: 0 15px 0 0; +} +.author-bio .author-avatar img { + background: #fff; + padding: 4px; + border: solid 1px #ccc; +} +.author-bio .author-name { + margin: 0 0 5px; + padding: 0; + font-size: 160%; +} +.author-posts-by { + margin: 0 0 20px; + padding: 10px 0 0; + font-size: 140%; + text-transform: uppercase; + border-top: double 4px #ccc; + border-color: rgba(118,118,118,.3); +} + +/************************************************************************************ +PAGE TITLE +*************************************************************************************/ +.page-title { + margin: 0; + padding: 0; + font-size: 360%; + line-height: 110%; +} + +/************************************************************************************ +CATEGORY SECTIONS +*************************************************************************************/ +.category-section { + clear: both; + margin-bottom: 30px; +} +.category-section-title { + font-size: 120%; + text-transform: uppercase; + margin: 0 0 20px; +} + +/************************************************************************************ +POST +*************************************************************************************/ +.post, .hentry { + margin-bottom: 40px; + position: relative; +} +.post-title { + margin: 0 0 5px; + padding: 0; + line-height: 110%; + font-size: 200%; +} +.post-title a { + color: #3f2103; + text-decoration: none; +} +.post-title a:hover { + text-decoration: none; +} + +/* post image */ +.post-image { + margin: 0 0 15px; +} + +/* post meta */ +.post-meta { + font-size: 90%; +} +.post-meta .post-date { + font-weight: bold; + margin-right: 5px; +} +.post-meta .post-author { + background: url(images/post-author.png) no-repeat 0 2px; + padding-left: 16px; + margin-right: 7px; +} +.post-meta .post-comment { + background: url(images/post-comment.png) no-repeat 0 2px; + padding-left: 16px; + margin-right: 7px; +} +.post-meta .post-category { + background: url(images/post-category.png) no-repeat 0 2px; + padding-left: 16px; + margin-right: 7px; +} +.post-meta .post-tag { + background: url(images/post-tag.png) no-repeat 0 2px; + padding-left: 16px; + margin-right: 7px; +} + +/* list post */ +.sidebar1 .list-post .post, +.sidebar1 .list-post .hentry, +.sidebar1 .list-post .type-page, +.sidebar1 .list-post .attachment { + padding-left: 130px; + width: 550px; + position: relative; +} +.sidebar-none .list-post .post, +.sidebar-none .lit-post .hentry, +.sidebar-none .list-post .type-page, +.sidebar-none .list-post .attachment { + padding-left: 130px; + width: 856px; +} +.list-post .post, +.lit-post .hentry, +.list-post .type-page, +.list-post .attachment { + position: relative; + margin-bottom: 60px; + min-height: 200px; +} +.list-post .post-title { + margin: 0 0 10px; + font-size: 34px; +} +.list-post .post-image { + margin: 0 0 15px; +} +.list-post .post-meta { + /* font-size: 85%; + width: 115px; + position: absolute; + left: 0; + top: 55px; */ + margin-bottom:60px; +} +.list-post .post-meta span { + display: block; + margin: 0 5px 5px 0; + padding-top: 5px; + /* border-top: solid 1px #ccc; */ + background-position: 0 7px; + display: block; + float: left; +} +.list-post .post-meta .post-date { + margin-bottom: 10px; + display: block; + float:left; +} + +.post-date { + /* font-size: 30px; + line-height: 36px; */ + font-size: 16px; + line-height: 28px; + padding-right: 10px; +} + +/************************************************************************************ +LAYOUTS +*************************************************************************************/ +/* grid4 post */ +.grid4 .post { + font-size: 90%; + width: 222px; + margin-left: 30px; + margin-bottom: 30px; + float: left; +} +.sidebar1 .grid4 .post { + width: 23%; + margin-left: 2.5%; +} +.grid4 .post-title { + font-size: 1.7em; + margin: 5px 0; +} + +/* grid3 post */ +.grid3 .post { + width: 306px; + margin-left: 30px; + margin-bottom: 30px; + float: left; +} +.sidebar1 .grid3 .post { + width: 30%; + margin-left: 3.5%; +} +.grid3 .post-title { + font-size: 1.9em; + margin: 5px 0; +} + +/* grid2 post */ +.grid2 .post { + width: 474px; + margin-left: 30px; + margin-bottom: 30px; + float: left; +} +.sidebar1 .grid2 .post { + width: 48%; + margin-left: 3.75%; +} +.grid2 .post-title { + margin: 5px 0; + font-size: 2em; +} + +/* grid2-thumb post */ +.grid2-thumb .post { + width: 48%; + margin-left: 4%; + margin-bottom: 30px; + float: left; +} +.grid2-thumb .post-title { + margin: 5px 0; + font-size: 1.8em; +} +.grid2-thumb .post-image { + float: left; + margin: 5px 14px 10px 0; +} +.grid2-thumb .post-content { + overflow: hidden; +} + +/* thumb post */ +.list-thumb-image .post-image { + float: left; + margin: 7px 16px 10px 0; +} +.list-thumb-image .post-content { + overflow: hidden; +} + +/* large image post */ +.list-large-image .post-image { + float: left; + margin: 7px 22px 10px 0; +} +.list-large-image .post-content { + overflow: hidden; +} + +/************************************************************************************ +POST FORMATS +*************************************************************************************/ +/* audio format */ +.format-audio .audio-image img { + float: left; + margin: 0 20px 10px 0; +} +.format-audio .audio-player { + padding: 8px 0 10px; +} +.post audio { + max-width: 100%; +} + +/* quote format */ +.format-quote .quote-content { + font: italic 120%/130% "OFL Sorts Mill Goudy TT", Georgia, Times, serif; +} +.format-quote .quote-author { + margin: 0 0 10px; + font-style: normal; + font-variant: small-caps; + text-align: right; + letter-spacing: .1em; + font-family: "OFL Sorts Mill Goudy TT", Georgia, Times, serif; +} + +/* video format */ +.post-video { + position: relative; + padding-bottom: 56.25%; + padding-top: 30px; + height: 0; + overflow: hidden; + font-size:.9em; + margin-bottom: 15px; +} +.post-video iframe, +.post-video object, +.post-video embed { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +/* format link */ +.format-link .post-title a { + background: url(images/link-arrow.png) no-repeat right center; + padding-right: 26px; +} + +/************************************************************************************ +POST ICON +*************************************************************************************/ +.post-icon { +/* background: #bba265 url(images/icon-post.png) no-repeat center center; + width: 36px; + height: 36px; + display: block; + float: left; + margin: 2px 14px 0px 0; + border: solid 1px #948051; + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2); + box-shadow: inset 0 1px 0 rgba(255,255,255,.2); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +*/ +} +.list-post .post-icon { + margin: 0 0 10px; + display: block; + position: absolute; + top: 0; + left: 0; +} +.format-audio .post-icon { + background-image: url(images/icon-audio.png); +} +.format-gallery .post-icon { + background-image: url(images/icon-gallery.png); +} +.format-link .post-icon { + background-image: url(images/icon-link.png); +} +.format-quote .post-icon { + background-image: url(images/icon-quote.png); +} +.format-status .post-icon { + background-image: url(images/icon-status.png); +} +.format-aside .post-icon { + background-image: url(images/icon-aside.png); +} +.format-video .post-icon { + background-image: url(images/icon-video.png); +} +.format-image .post-icon { + background-image: url(images/icon-image.png); +} +.format-chat .post-icon { + background-image: url(images/icon-chat.png); +} + +/************************************************************************************ +PAGE NAVIGATION +*************************************************************************************/ +.pagenav { + clear: both; + padding-bottom: 20px; + text-align: right; + margin: 20px 0; +} +.pagenav a, .pagenav span { + line-height: 100%; + padding: 3px 6px; + margin: 0 3px; + vertical-align: middle; + display: inline-block; + zoom:1; + *display:inline; +} +.pagenav a { + color: #fff; + text-decoration: none; + background: #bba265; + padding: 2px 6px; + border: solid 1px #948051; + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2); + box-shadow: inset 0 1px 0 rgba(255,255,255,.2); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.pagenav a:hover { + background-color: #a68e53; + text-decoration: none; +} +.pagenav .current { + color: #666; + text-decoration: none; +} + + +/************************************************************************************ +POST NAVIGATION +*************************************************************************************/ +.post-nav { + margin: 0 0 30px; + padding: 15px 0; + clear: both; + font-size: 110%; +} +.post-nav span { + width: 45%; +} +.post-nav a { + text-decoration: none; + font-size: 110%; +} +.post-nav a:hover { + text-decoration: none; +} +.post-nav .prev { + float: left; +} +.post-nav .prev a { + padding: 6px 0 6px 0; + display: block; +} +.post-nav .next { + float: right; + text-align: right; +} +.post-nav .next a { + padding: 6px 0 6px 0; + display: block; +} + +/* post nav arrow */ +.post-nav span span { + color: #fff; + font: normal 22px/100% "Times New Roman", Times, serif; + display: block; + float: left; + text-align: center; + margin: -6px 10px 17px 0; + background: #bba265; + width: 26px; + height: 26px; + display: block; + float: left; + border: solid 1px #948051; + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2); + box-shadow: inset 0 1px 0 rgba(255,255,255,.2); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.post-nav .next span { + float: right; + margin-left: 10px; + margin-right: 0; +} + + +/************************************************************************************ +COMMENTS +*************************************************************************************/ +.commentwrap { + position: relative; + clear: both; +} + +/* comment title */ +.comment-title, #reply-title { + font-size: 220%; + margin: 0 0 10px; + padding: 0; +} + +/* comment pagenav */ +.commentwrap .pagenav { + border: none; +} +.commentwrap .pagenav.top { + margin: 0; + position: absolute; + top: 15px; + right: 0; +} + +/* commentlist */ +.commentlist { + margin: 0; + padding: 5px 0 0; + border-top: solid 1px #ddd; +} +.commentlist li { + margin: 0; + padding: 15px 0 0; + list-style: none; + position: relative; +} + +/* commentlist sub-levels */ +.commentlist ul, .commentlist ol { + margin: 0 0 0 90px; + padding: 0; +} + +/* commentlist author line */ +.commentlist .comment-author { + margin: 2px 0 5px; + padding: 0; +} +.commentlist .avatar { + float: left; + margin: 0 15px 0 0; +} +.commentlist cite { + font-size: 140%; + font-style: normal; +} +.commentlist cite a { + text-decoration: none; +} +.commentlist .bypostauthor cite { + background: url(images/icon-author-comment.png) no-repeat 0 2px; + padding-left: 18px; +} +.commentlist .comment-time { + font-size: 75%; + text-transform: uppercase; +} +/* commententry */ +.commentlist .commententry { + border-bottom: solid 1px #ddd; + position: relative; + min-height: 40px; + overflow: hidden; + padding-bottom: 5px; +} + +/* reply link */ +.commentlist .reply { + position: absolute; + right: 0; + top: 20px; +} +.commentlist .comment-reply-link { + font-size: 11px; + line-height: 100%; + color: #fff; + text-transform: uppercase; + text-decoration: none; + background: #bba265; + padding: 2px 6px; + border: solid 1px #948051; + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2); + box-shadow: inset 0 1px 0 rgba(255,255,255,.2); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +.commentlist .comment-reply-link:hover { + text-decoration: none; +} + +/* respond */ +#respond { + margin: 40px 0 30px; + padding: 10px 0 0; + position: relative; + clear: both; +} +#respond #cancel-comment-reply-link { + position: absolute; + top: 20px; + right: 0; + font-size: 80%; + font-weight: normal; + line-height: 100%; + text-decoration: none; + padding: 5px 10px; + display: block; + color: #fff; + background: #d7400d; + border: solid 1px #681d06; + text-shadow: 0 -1px 0 rgba(0,0,0,.4); + -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2); + -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2); + box-shadow: inset 0 1px 0 rgba(255,255,255,.2); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} +#respond #cancel-comment-reply-link:hover { + background: #c62807; +} + +/* comment form */ +#commentform { + margin: 0; + padding: 0; +} +#commentform input[type=text] { + width: 206px; + margin-right: 5px; +} +#commentform label { + font-weight: bold; +} +#commentform label small { + font-weight: normal; +} +#commentform textarea { + height: 140px; +} + +/************************************************************************************ +SIDEBAR +*************************************************************************************/ +.widget { + margin: 0 0 30px; +} +.widgettitle { + margin: 0 0 10px; + padding: 0; + font-size: 165%; +} +.widget ul { + margin: 0; + padding: 0; +} +.widget li { + margin: 0; + padding: 6px 0; + list-style: none; + clear: both; + border-top: solid 1px #ddd; +} +.widget ul ul { + margin: 6px 0 -6px 0px; + padding: 0; + border-top: none; +} +.widget ul ul li { + margin: 0; + padding-left: 10px; +} + +/************************************************************************************ +WIDGET STYLES +*************************************************************************************/ +/* calendar widget */ +.widget #wp-calendar caption { + font-weight: bold; + padding-bottom: 10px; +} +.widget #wp-calendar td { + width: 31px; + padding: 4px 2px; + text-align: center; +} + +/* feature posts widget */ +.widget .feature-posts-list br { + display: none; +} +.widget .feature-posts-list .post-img { + margin: 4px 12px 10px 0; + float: left; +} +.widget .feature-posts-list small { + font: italic 90% "Times New Roman", Times, serif; + display: block; + margin: 0 0 3px; +} +.widget .feature-posts-list .feature-posts-title { + margin: 4px 0 3px; +} +.widget .feature-posts-list .post-excerpt { + display: block; +} + +/* twitter widget */ +.widget .twitter-list .twitter-timestamp { + font: italic 90% "Times New Roman", Times, serif; +} +.widget .follow-user { + margin: 0; + padding: 5px 0; +} + +/* links widget */ +.widget .links-list img, .widget_links img { + vertical-align: middle; + margin-right: 7px; +} + +/* recent comments widget */ +.recent-comments-list .avatar { + margin-right: 12px; + float: left; +} + +/* flickr widget */ +.widget .flickr_badge_image { + margin-right: 12px; + margin-bottom: 12px; + float: left; +} +.widget .flickr_badge_image img { + width: 60px; + height: 60px; +} + +/* search widget */ +#sidebar #searchform { + position: static; +} +#sidebar #searchform #s { + width: 93%; +} + +/************************************************************************************ +FOOTER +*************************************************************************************/ +/* footer widgets */ +.footer-widgetswrap { + background: #261e1c url(images/dash-bg.png) repeat-x 0 0; + border-bottom: solid 1px #000; + padding: 15px 0 0; + -webkit-box-shadow: inset 0 -1px 0 rgba(255,255,255,.1), 0 1px 2px rgba(0,0,0,.3); + -moz-box-shadow: inset 0 -1px 0 rgba(255,255,255,.1), 0 1px 2px rgba(0,0,0,.3); + box-shadow: inset 0 -1px 0 rgba(255,255,255,.1), 0 1px 2px rgba(0,0,0,.3); +} +.footer-widgets { + color: #b3aeac; +} +.footer-widgets .widget { + margin-top: 20px; + margin-bottom: 30px; +} +.footer-widgets .widget li { + border-color: #514b49; +} +.footer-widgets .widgettitle { + color: #fff; +} +.footer-widgets a { + color: #c7af77; +} + +/* footer */ +#footer { + clear: both; + position: relative; + min-height: 100px; + color: #b3aeac; + padding: 30px 0; +} +#footer a { + color: #c7af77; +} + +/* footer nav */ +.footer-nav { + clear: both; + margin: 0 0 5px; + padding: 0; +} +.footer-nav li { + padding: 0; + margin: 0 20px 0 0; + display: inline; + list-style: none; +} +.footer-nav a { + font-weight: bold; +} + +/* footer logo */ +#footer-logo { + position: absolute; + top: 34px; + right: 0; + font: small-caps 36px/100% Rokkitt, Arial, Helvetica, sans-serif; + text-shadow: 0 2px 0 rgba(0,0,0,.2); +} +#footer-logo a { + color: #fff; + text-decoration: none; +} +#footer-logo a:hover { + text-decoration: none; +} + +/* footer text */ +.footer-text { + font-size: 90%; +} + +/************************************************************************************ +GALLERY +*************************************************************************************/ +#body .gallery { + margin: 5px 0 10px; +} + +#body .gallery img { + border: none; +} + +/* gallery item */ +#body .gallery dl { + margin: 0 12px 10px 0; + display: inline-block; + vertical-align: top; + zoom:1; + *display:inline; + width: auto; + float: none; + text-align: center; +} +/* gallery caption */ +#body .gallery dd { + width: 140px; + line-height: 120%; + font-size: 90%; + text-align: center; + margin: 5px 0 0; +} +/* get rid of br tag */ +.gallery br { + display:none; +} + +/************************************************************************************ +WORDPRESS POST FORMATTING +*************************************************************************************/ +img.alignleft, img.aligncenter, img.alignright, img.alignnone { + margin-bottom: 15px; +} +.alignleft { + float: left; + margin-right: 30px; +} +.alignright { + float: right; + margin-left: 30px; +} +.aligncenter { + text-align: center; + display: block; + margin-left: auto; + margin-right: auto; +} +.wp-caption { + text-align: center; + margin-bottom: 15px; + max-width: 100%; +} +.wp-caption-text { + font: italic 95%/120% Georgia, "Times New Roman", Times, serif; + margin: 6px 0; +} + +/* *********************************************************************************** +IMAGE STYLES +*************************************************************************************/ +.post-image img, +.widget .feature-posts-list .post-img, +.widget .flickr_badge_image img, +.commentlist .avatar, +.recent-comments-list .avatar, +#body .gallery img, +.attachment img { + padding: 2px; + background: #fff; + border: solid 1px #e3e3e3; + border-bottom-color: #ddd; +} + +img.alignleft, img.aligncenter, img.alignright, img.alignnone, .wp-caption img, { + + padding: 2px; + +} + +/************************************************************************************ +CLEAR & ALIGNMENT +*************************************************************************************/ +.clear { + clear: both; +} +.left { + float: left; +} +.right { + float: right; +} +.textleft { + text-align: left; +} +.textright { + text-align: right; +} +.textcenter { + text-align: center; +} + +/* clearfix */ +.clearfix:after, .widget li:after, #body:after, #footer:after, footer:after, .pagenav:after, #main-nav:after, #main-nav:after, .menu:after, .gallery:after, #content:after +{ visibility: hidden; display: block; font-size: 0; content: " "; clear: both; height: 0; } +.clearfix, .widget li, #body, #footer, footer, .pagenav, #main-nav, #main-nav, .menu, .gallery, #content +{ display: inline-block; } +/* clearfix for ie7 */ +.clearfix, .widget li, #body, #footer, footer, .pagenav, #main-nav, #main-nav, .menu, .gallery, #content +{ display: block; zoom: 1; } + +p.nocomments, #respond h3 { display: none; } diff --git a/bigbluebutton-client/resources/prod/help/CSS/syndication_bundle_v1_a8b7ca7f4dc426e605bae285b2162e52c8f1021d.css b/bigbluebutton-client/resources/prod/help/CSS/syndication_bundle_v1_a8b7ca7f4dc426e605bae285b2162e52c8f1021d.css new file mode 100755 index 0000000000000000000000000000000000000000..8bda83c879521f129404e12fcba5b0949a163c12 --- /dev/null +++ b/bigbluebutton-client/resources/prod/help/CSS/syndication_bundle_v1_a8b7ca7f4dc426e605bae285b2162e52c8f1021d.css @@ -0,0 +1,1236 @@ +.TwitterCard .u-linkClean,.TwitterCard .u-linkClean:hover,.TwitterCard .u-linkClean:focus,.TwitterCard .u-linkClean:active { + text-decoration:none +} +.TwitterCard .u-linkComplex,.TwitterCard .u-linkComplex:hover,.TwitterCard .u-linkComplex:focus,.TwitterCard .u-linkComplex:active { + text-decoration:none +} +.TwitterCard .u-linkComplex:hover .u-linkComplex-target,.TwitterCard .u-linkComplex:focus .u-linkComplex-target,.TwitterCard .u-linkComplex:active .u-linkComplex-target { + text-decoration:underline +} +.TwitterCard .u-linkBlock,.TwitterCard .u-linkBlock:hover,.TwitterCard .u-linkBlock:focus,.TwitterCard .u-linkBlock:active { + display:block; + text-decoration:none +} +.TwitterCard .u-linkPseudo { + display:inline; + padding:0; + border:0; + margin:0; + background:transparent; + color:inherit; + cursor:pointer; + font:inherit +} +.TwitterCard .u-linkPseudo:hover,.TwitterCard .u-linkPseudo:focus,.TwitterCard .u-linkPseudo:active { + background:transparent; + color:inherit +} +.TwitterCard .FlexEmbed { + position:relative; + overflow:hidden; + height:0; + padding:0 +} +.TwitterCard .FlexEmbed-item,.TwitterCard .FlexEmbed iframe,.TwitterCard .FlexEmbed embed,.TwitterCard .FlexEmbed object { + position:absolute; + left:0; + top:0; + width:100%; + height:100% +} +.TwitterCard .FlexEmbed--16by9 { + padding-bottom:56.25% +} +.TwitterCard .FlexEmbed--4by3 { + padding-bottom:75% +} +.TwitterCard .Button { + -webkit-appearance:none; + background:transparent; + border:1px solid; + -moz-box-sizing:border-box; + box-sizing:border-box; + color:inherit; + cursor:pointer; + display:inline-block; + font:inherit; + line-height:normal; + margin:0; + padding:.4em .75em; + position:relative; + text-align:center; + text-decoration:none; + -moz-user-select:none; + -ms-user-select:none; + -webkit-user-select:none; + user-select:none; + vertical-align:middle; + white-space:nowrap +} +.TwitterCard .Button:hover,.TwitterCard .Button:focus,.TwitterCard .Button:active { + text-decoration:none +} +.TwitterCard .Button:disabled,.TwitterCard .Button.is-disabled { + cursor:default +} +.TwitterCard .Button::-moz-focus-inner { + border:0; + padding:0 +} +.TwitterCard .Button--full { + display:block; + width:100% +} +.TwitterCard { + background:transparent; + color:inherit; + overflow:hidden +} +.TwitterCard--animation { + animation-duration:150ms; + animation-name:fadeInTwitterCard; + animation-timing-function:cubic-bezier(0.9,0,.9,0) +} +.TwitterCard b,.TwitterCard strong { + font-weight:700 +} +.TwitterCard a[tabindex="-1"] { + outline:0 +} +.TwitterCard .is-emojiCharacter { + font-weight:400!important +} +.TwitterCard-title { + font-size:1em; + margin:0 0 .15em +} +.TwitterCard-thumbnail { + width:97%; + width:calc(100% - 1em) +} +.TwitterCard-thumbnail--appIcon { + border-radius:17%; + width:66% +} +.TwitterCard-attribution--avatar { + border-radius:2px; + vertical-align:middle; + width:20px +} +.TwitterCard-attribution--name { + font-size:1em; + vertical-align:middle +} +.TwitterCard-container { + border-radius:.42857em; + border-width:1px; + border-style:solid; + border-color:#E1E8ED; + box-sizing:border-box; + color:inherit!important; + overflow:hidden +} +.TwitterCard-container[data-theme=dark] { + border-color:#8899A6 +} +.TwitterCard-container--clickable { + cursor:pointer; + outline-offset:-1px; + transition:background-color .15s ease-in-out,border-color .15s ease-in-out +} +.TwitterCard-container--clickable:hover { + background:#F5F8FA; + border-color:#8899A6; + border-color:rgba(136,153,166,.5) +} +.TwitterCard-container--clickable[data-theme=dark]:hover { + background-color:rgba(255,255,255,.1); + border-color:#FFF +} +.tcu-linkImgFocus:focus { + outline:2px solid!important; + outline-offset:-2px +} +.tcu-linkImgFocus img { + display:block +} +.tcu-resetMargin { + margin:0 +} +@keyframes fadeInTwitterCard { + from { + opacity:0 + } + to { + opacity:1 + } +} +.TwitterCard .showOnSuccess,.TwitterCard .showOnError { + display:none +} +.TwitterCard .successElements .showOnSuccess,.TwitterCard .errorElements .showOnError { + display:block +} +.TwitterCard .hideOnSuccess,.TwitterCard .hideOnError { + display:block +} +.TwitterCard .successElements .hideOnSuccess,.TwitterCard .errorElements .hideOnError { + display:none +} +.tcu-dir[dir=rtl] { + direction:rtl!important; + text-align:right!important; + unicode-bidi:embed +} +.tcu-dir[dir=ltr] { + direction:ltr!important; + text-align:left!important; + unicode-bidi:embed +} +.tcu-imageAspect--1to1:before { + padding-top:100% +} +.tcu-imageAspect--1to2:before { + padding-top:200% +} +.tcu-imageAspect--2to1:before { + padding-top:50% +} +.tcu-imageAspect--1_91to1:before { + padding-top:52.25% +} +.tcu-imageAspect--3to4:before { + padding-top:133.33% +} +.tcu-imageAspect--4to3:before { + padding-top:75% +} +.tcu-imageAspect--5to2:before { + padding-top:40% +} +.tcu-imageAspect--16to9:before { + padding-top:56.25% +} +.tcu-imageAspect--4to1:before { + padding-top:25% +} +.tcu-imageContainer { + position:relative; + width:100%; + overflow:hidden +} +.tcu-imageContainer:before { + content:""; + display:block +} +.tcu-imageWrapper { + position:absolute; + top:-1px; + left:-1px; + bottom:-1px; + right:-1px; + background-size:cover; + background-position:center; + background-repeat:no-repeat +} +.tcu-imageWrapper img { + width:100%; + height:100%; + opacity:0 +} +.tcu-graylink { + color:#AAA; + text-decoration:none +} +.tcu-graylink:focus,.tcu-graylink:active,.tcu-graylink:hover { + text-decoration:underline +} +.tcu-clickable:hover { + cursor:pointer +} +.tcu-textWrap--break { + word-wrap:break-word +} +.tcu-textMute { + color:#777 +} +.tcu-textSmall { + font-size:.857em +} +.tcu-textUppercase { + text-transform:uppercase +} +.tcu-textLowercase { + text-transform:lowercase +} +.tcu-textCapitalize { + text-transform:capitalize +} +.tcu-textEllipse { + max-height:1.3em; + white-space:nowrap; + overflow:hidden; + text-overflow:ellipsis +} +.tcu-textBold { + font-weight:700 +} +.tcu-textBold .is-emojiCharacter { + font-weight:400 +} +.tcu-textEllipse--multiline { + overflow:hidden +} +.tcu-textInherit { + color:inherit +} +.tcu-textInherit:not(:focus):not(:hover):not(:active) { + color:inherit; + font-weight:inherit; + text-decoration:inherit +} +.tcu-textInheritAll,.tcu-textInheritAll:hover,.tcu-textInheritAll:focus,.tcu-textInheritAll:active,.tcu-textInheritAll:visited { + color:inherit +} +.TwitterCardsGrid .u-textNext { + text-align:right +} +.TwitterCardsGrid .u-textPrev { + text-align:left +} +.TwitterCardsGrid-rtl .u-textNext { + text-align:left +} +.TwitterCardsGrid-rtl .u-textPrev { + text-align:right +} +.TwitterCardsGrid { + display:block; + position:relative; + text-align:left +} +.TwitterCardsGrid .TwitterCardsGrid-col--1 { + float:left; + margin-right:.32333em; + width:7%; + width:calc(8.33333% - .30556em) +} +.TwitterCardsGrid .TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--1 { + margin-right:0; + width:8.33333% +} +.TwitterCardsGrid-rtl .TwitterCardsGrid-col--1 { + float:right; + margin-right:0; + margin-left:.32333em +} +.TwitterCardsGrid-rtl.TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--1,.TwitterCardsGrid-rtl .TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--1 { + margin-left:0 +} +.TwitterCardsGrid .TwitterCardsGrid-col--2 { + float:left; + margin-right:.32333em; + width:15%; + width:calc(16.66667% - .27778em) +} +.TwitterCardsGrid .TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--2 { + margin-right:0; + width:16.66667% +} +.TwitterCardsGrid-rtl .TwitterCardsGrid-col--2 { + float:right; + margin-right:0; + margin-left:.32333em +} +.TwitterCardsGrid-rtl.TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--2,.TwitterCardsGrid-rtl .TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--2 { + margin-left:0 +} +.TwitterCardsGrid .TwitterCardsGrid-col--3 { + float:left; + margin-right:.32333em; + width:24%; + width:calc(25% - .25em) +} +.TwitterCardsGrid .TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--3 { + margin-right:0; + width:25% +} +.TwitterCardsGrid-rtl .TwitterCardsGrid-col--3 { + float:right; + margin-right:0; + margin-left:.32333em +} +.TwitterCardsGrid-rtl.TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--3,.TwitterCardsGrid-rtl .TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--3 { + margin-left:0 +} +.TwitterCardsGrid .TwitterCardsGrid-col--4 { + float:left; + margin-right:.32333em; + width:32%; + width:calc(33.33333% - .22222em) +} +.TwitterCardsGrid .TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--4 { + margin-right:0; + width:33.33333% +} +.TwitterCardsGrid-rtl .TwitterCardsGrid-col--4 { + float:right; + margin-right:0; + margin-left:.32333em +} +.TwitterCardsGrid-rtl.TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--4,.TwitterCardsGrid-rtl .TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--4 { + margin-left:0 +} +.TwitterCardsGrid .TwitterCardsGrid-col--5 { + float:left; + margin-right:.32333em; + width:40%; + width:calc(41.66667% - .19444em) +} +.TwitterCardsGrid .TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--5 { + margin-right:0; + width:41.66667% +} +.TwitterCardsGrid-rtl .TwitterCardsGrid-col--5 { + float:right; + margin-right:0; + margin-left:.32333em +} +.TwitterCardsGrid-rtl.TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--5,.TwitterCardsGrid-rtl .TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--5 { + margin-left:0 +} +.TwitterCardsGrid .TwitterCardsGrid-col--6 { + float:left; + margin-right:.32333em; + width:49%; + width:calc(50% - .16667em) +} +.TwitterCardsGrid .TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--6 { + margin-right:0; + width:50% +} +.TwitterCardsGrid-rtl .TwitterCardsGrid-col--6 { + float:right; + margin-right:0; + margin-left:.32333em +} +.TwitterCardsGrid-rtl.TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--6,.TwitterCardsGrid-rtl .TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--6 { + margin-left:0 +} +.TwitterCardsGrid .TwitterCardsGrid-col--7 { + float:left; + margin-right:.32333em; + width:57%; + width:calc(58.33333% - .13889em) +} +.TwitterCardsGrid .TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--7 { + margin-right:0; + width:58.33333% +} +.TwitterCardsGrid-rtl .TwitterCardsGrid-col--7 { + float:right; + margin-right:0; + margin-left:.32333em +} +.TwitterCardsGrid-rtl.TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--7,.TwitterCardsGrid-rtl .TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--7 { + margin-left:0 +} +.TwitterCardsGrid .TwitterCardsGrid-col--8 { + float:left; + margin-right:.32333em; + width:65%; + width:calc(66.66667% - .11111em) +} +.TwitterCardsGrid .TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--8 { + margin-right:0; + width:66.66667% +} +.TwitterCardsGrid-rtl .TwitterCardsGrid-col--8 { + float:right; + margin-right:0; + margin-left:.32333em +} +.TwitterCardsGrid-rtl.TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--8,.TwitterCardsGrid-rtl .TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--8 { + margin-left:0 +} +.TwitterCardsGrid .TwitterCardsGrid-col--9 { + float:left; + margin-right:.32333em; + width:74%; + width:calc(75% - .08333em) +} +.TwitterCardsGrid .TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--9 { + margin-right:0; + width:75% +} +.TwitterCardsGrid-rtl .TwitterCardsGrid-col--9 { + float:right; + margin-right:0; + margin-left:.32333em +} +.TwitterCardsGrid-rtl.TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--9,.TwitterCardsGrid-rtl .TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--9 { + margin-left:0 +} +.TwitterCardsGrid .TwitterCardsGrid-col--10 { + float:left; + margin-right:.32333em; + width:82%; + width:calc(83.33333% - .05556em) +} +.TwitterCardsGrid .TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--10 { + margin-right:0; + width:83.33333% +} +.TwitterCardsGrid-rtl .TwitterCardsGrid-col--10 { + float:right; + margin-right:0; + margin-left:.32333em +} +.TwitterCardsGrid-rtl.TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--10,.TwitterCardsGrid-rtl .TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--10 { + margin-left:0 +} +.TwitterCardsGrid .TwitterCardsGrid-col--11 { + float:left; + margin-right:.32333em; + width:90%; + width:calc(91.66667% - .02778em) +} +.TwitterCardsGrid .TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--11 { + margin-right:0; + width:91.66667% +} +.TwitterCardsGrid-rtl .TwitterCardsGrid-col--11 { + float:right; + margin-right:0; + margin-left:.32333em +} +.TwitterCardsGrid-rtl.TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--11,.TwitterCardsGrid-rtl .TwitterCardsGrid-noColSpacing .TwitterCardsGrid-col--11 { + margin-left:0 +} +.TwitterCardsGrid .TwitterCardsGrid-col--12 { + float:left; + width:100%; + clear:both +} +.TwitterCardsGrid .TwitterCardsGrid-col--end { + margin-right:0 +} +.TwitterCardsGrid .TwitterCardsGrid-col--end~* { + clear:left +} +.TwitterCardsGrid .TwitterCardsGrid-col--spacerAll,.TwitterCardsGrid-rtl .TwitterCardsGrid-col--spacerAll { + margin:.32333em +} +.TwitterCardsGrid .TwitterCardsGrid-col--spacerPrevNext,.TwitterCardsGrid-rtl .TwitterCardsGrid-col--spacerPrevNext { + margin-left:.32333em; + margin-right:.32333em +} +.TwitterCardsGrid .TwitterCardsGrid-col--spacerPrev,.TwitterCardsGrid-rtl .TwitterCardsGrid-col--spacerNext { + margin-left:.32333em +} +.TwitterCardsGrid .TwitterCardsGrid-col--spacerNext,.TwitterCardsGrid-rtl .TwitterCardsGrid-col--spacerPrev { + margin-right:.32333em +} +.TwitterCardsGrid .TwitterCardsGrid-col--spacerTopBottom,.TwitterCardsGrid-rtl .TwitterCardsGrid-col--spacerTopBottom { + margin-top:.32333em; + margin-bottom:.32333em +} +.TwitterCardsGrid .TwitterCardsGrid-col--spacerTop,.TwitterCardsGrid-rtl .TwitterCardsGrid-col--spacerTop { + margin-top:.32333em +} +.TwitterCardsGrid .TwitterCardsGrid-col--spacerBottom,.TwitterCardsGrid-rtl .TwitterCardsGrid-col--spacerBottom { + margin-bottom:.32333em +} +.TwitterCardsGrid .TwitterCardsGrid-col--spacerNone,.TwitterCardsGrid-rtl .TwitterCardsGrid-col--spacerNone { + margin-top:0; + margin-bottom:0; + margin-left:0; + margin-right:0 +} +.TwitterCardsGrid .TwitterCardsGrid-float--next { + float:right +} +.TwitterCardsGrid .TwitterCardsGrid-float--prev { + float:left +} +.TwitterCardsGrid-rtl { + text-align:right +} +.TwitterCardsGrid-rtl .TwitterCardsGrid-col--end { + margin-left:0 +} +.TwitterCardsGrid-rtl .TwitterCardsGrid-col--end~* { + clear:right +} +.TwitterCardsGrid-rtl .TwitterCardsGrid-float--next { + float:left +} +.TwitterCardsGrid-rtl .TwitterCardsGrid-float--prev { + float:right +} +.TwitterCardsGrid .TwitterCardsGrid-el--fullWidth { + width:100% +} +.TwitterCard .Button--default { + background-color:#f5f5f5; + background-image:linear-gradient(#fff,#eee); + border-color:#ccc; + border-radius:4px; + font-weight:700; + margin-top:1em; + padding:.5em 1em +} +.TwitterCard .Button--default:hover,.TwitterCard .Button--default:focus,.TwitterCard .Button--default:active { + background:#eee; + border-color:#aaa; + color:inherit +} +.TwitterCard .Button--default:active { + box-shadow:inset 0 2px 5px -1px rgba(0,0,0,.2) +} +.TwitterCard .Button--smallGray { + background-color:#f5f8fA; + background-image:linear-gradient(0rad,#f5f8fA,#fff); + border:1px solid #e1e8ed; + border-radius:.25em; + font-weight:700; + margin-top:.5em; + padding:.5em 1em; + outline-offset:-4px!important +} +.TwitterCard .Button--smallGray[disabled] { + cursor:not-allowed +} +.TwitterCard .Button--smallGray:not([disabled]):hover,.TwitterCard .Button--smallGray:not([disabled]):focus,.TwitterCard .Button--smallGray:not([disabled]):active { + border:1px solid #E1E1EA; + background-color:#e1e8ed; + background-image:linear-gradient(0rad,#e1e8ed,#fff); + color:inherit +} +.TwitterCard .Button--smallGray:not([disabled]):active { + box-shadow:inset 0 2px 5px -1px rgba(0,0,0,.2) +} +.TwitterCard .Button--smallGray[data-theme=dark] { + background-color:transparent; + background-image:none; + border-color:#FFF; + color:#FFF +} +.TwitterCard .Button--smallGray[data-theme=dark]:not([disabled]):hover,.TwitterCard .Button--smallGray[data-theme=dark]:not([disabled]):focus,.TwitterCard .Button--smallGray[data-theme=dark]:not([disabled]):active { + background-color:rgba(255,255,255,.1); + background-image:none; + border-color:#FFF +} +.TwitterCard a.u-buttonLabel,.TwitterCard a.u-buttonLabel:hover,.TwitterCard a.u-buttonLabel:focus,.TwitterCard a.u-buttonLabel:active { + text-decoration:none; + color:#292F33 +} +.TwitterCard .BuyNowCard-content { + padding:1em; + box-sizing:border-box +} +.TwitterCard .BuyNowCard-content .TwitterCard-title { + max-height:1.3em!important; + white-space:nowrap!important +} +.TwitterCard .BuyNowCard-byline { + color:#AAB8C2; + margin-bottom:0 +} +.TwitterCard .BuyNowCard-image.TwitterCardsGrid-col--12 { + background-color:transparent +} +.TwitterCard .BuyNowCard-image--horizontal .tcu-imageWrapper { + background-size:cover!important +} +.TwitterCard .BuyNowCard-image--vertical .tcu-imageWrapper { + background-size:contain!important +} +.TwitterCard .BuyNowCard-image .tcu-imageWrapper { + background-color:#FFF +} +.TwitterCard .MomentCard { + background-color:#FFF +} +.TwitterCard .MomentCard-cover { + border-color:inherit; + border-right-width:1px; + border-right-style:solid; + box-sizing:border-box +} +.TwitterCard .MomentCard-content { + padding:1.14286em 1em +} +.TwitterCard .MomentCard-title .TwitterCard-title { + font-size:1.14286em; + line-height:1.25em; + margin-bottom:.35714em; + max-height:2.5em; + overflow:hidden +} +.TwitterCard .MomentCard-title h2 { + font-weight:500 +} +.TwitterCard .MomentCard-subtitle { + color:#8899A6; + font-size:1em; + font-weight:300; + margin:.57143em 0; + position:relative +} +.TwitterCard .MomentCard-author,.TwitterCard .MomentCard-authorName { + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap +} +.TwitterCard .MomentCard-authorName { + color:#292F33; + display:inline-block; + font-weight:500; + max-width:60%; + vertical-align:middle +} +.TwitterCard .MomentCard-authorScreenName { + vertical-align:middle +} +.TwitterCard .MomentCard-authorAvatar { + border-radius:2px; + height:1em; + margin-right:.21429em; + vertical-align:middle; + width:1em +} +.TwitterCard .MomentCard-description p { + color:#8899A6; + font-weight:300; + max-height:6.5em +} +.TwitterCard .MomentCard-badge { + bottom:1.35714em; + color:#8899A6; + font-size:1em; + position:absolute +} +.TwitterCard .MomentCard-badgeText { + font-weight:300; + line-height:1.3em; + margin-left:1.1em +} +.TwitterCard .MomentCard-iconLightning { + background-image:url(//ton.twimg.com/tfw/assets/lightning_backup_v1_3275c7700965edb5fb32ecaec770602c42674edd.png); + background-image:url(//ton.twimg.com/tfw/assets/lightning_v1_de331faee24508022200dae98bac0dc01db54f32.svg); + background-repeat:no-repeat; + background-size:cover; + bottom:1px; + display:inline-block; + height:1.07143em; + position:absolute; + width:.57143em +} +.TwitterCard .MomentCard-iconVerified { + background-image:url(//ton.twimg.com/tfw/assets/verified_v1_de2dc8d110b03567621d054ebb48770d5fe228c6.svg); + background-repeat:no-repeat; + background-size:cover; + display:inline-block; + height:1em; + vertical-align:middle; + width:1em +} +.TwitterCard .MomentCard--unavailable { + background:#E1E8ED; + border-radius:.35714em; + color:#8899A6; + padding:.85714em; + text-align:center +} +.TwitterCard .MomentCard:not([data-card-breakpoints~=w500]) .MomentCard-cover { + width:40%; + width:calc(41.66667% - .19444em) +} +.TwitterCard .MomentCard:not([data-card-breakpoints~=w500]) .MomentCard-contentContainer { + width:57%; + width:calc(58.33333% - .13889em) +} +.TwitterCard .MomentCard:not([data-card-breakpoints~=w500]) .MomentCard-description p { + max-height:2.6em +} +.TwitterCard .MomentCard:not([data-card-breakpoints~=w450]) .MomentCard-description p { + max-height:1.3em +} +.TwitterCard .MomentCard:not([data-card-breakpoints~=w400]) .MomentCard-description { + display:none!important +} +.TwitterCard .MomentCard:not([data-card-breakpoints~=w300]) .MomentCard-title .TwitterCard-title,.TwitterCard .MomentCard:not([data-card-breakpoints~=w300]) .MomentCard-subtitle,.TwitterCard .MomentCard:not([data-card-breakpoints~=w300]) .MomentCard-badge { + font-size:.92857em +} +.TwitterCard .MomentCard.TwitterCardsGrid-rtl .MomentCard-cover { + border-left-width:1px; + border-left-style:solid; + border-right:0 +} +.TwitterCard .PollXChoice { + box-sizing:border-box; + transition:all .3s cubic-bezier(0.5,1.2,.5,1.2) +} +.TwitterCard .PollXChoice--noTransitions * { + transition:none!important; + transition-duration:0s!important; + transition-property:none!important +} +.TwitterCard .PollXChoice[data-poll-image=true] .tcu-imageWrapper { + top:0; + left:0; + bottom:0; + right:0; + box-shadow:inset 0 0 50px rgba(0,0,0,.1) +} +.TwitterCard .PollXChoice[data-poll-image=true] .tcu-imageWrapper:before { + position:absolute; + height:100%; + width:100%; + content:"" +} +.TwitterCard .PollXChoice-pollWrapper { + position:relative; + overflow:hidden; + border-radius:.35714em +} +.TwitterCard .PollXChoice-optionsWrapper { + box-sizing:border-box; + padding-left:4px; + padding-right:4px +} +.TwitterCard [data-poll-state=closed] .PollXChoice-optionsWrapper,.TwitterCard [data-poll-state=final] .PollXChoice-optionsWrapper { + padding-left:0; + padding-right:0 +} +.TwitterCard [data-poll-image=true] .PollXChoice-optionsWrapper { + color:#FFF; + text-shadow:0 0 1px #000; + bottom:0; + position:absolute; + padding-left:1.28571em; + padding-right:1.28571em; + padding-top:9.14286em; + padding-bottom:1em; + background:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.7) 100%) +} +.TwitterCard [data-poll-image=true][data-poll-state=closed] .PollXChoice-optionsWrapper,.TwitterCard [data-poll-image=true][data-poll-state=final] .PollXChoice-optionsWrapper { + padding-left:1.92857em; + padding-right:1.92857em +} +.TwitterCard [data-poll-image=true][data-poll-state=final][data-poll-init-state=final] .PollXChoice-optionsWrapper { + padding-left:1.28571em; + padding-right:1.28571em; + padding-bottom:1.28571em +} +.TwitterCard .PollXChoice-optionContainer { + margin-bottom:.57143em; + position:relative; + box-sizing:border-box +} +.TwitterCard .PollXChoice[data-theme=dark][data-poll-state=closed] .PollXChoice-optionContainer,.TwitterCard .PollXChoice[data-theme=dark][data-poll-state=final] .PollXChoice-optionContainer { + color:#292F33 +} +.TwitterCard [data-poll-vote-majority*="1"] .PollXChoice-optionContainer[data-poll-index="1"] .PollXChoice-choice--chart { + background:#77C7F7 +} +.TwitterCard [data-poll-vote-majority*="1"][data-poll-image=true] .PollXChoice-optionContainer[data-poll-index="1"] .PollXChoice-choice--chart { + background:rgba(255,255,255,.4) +} +.TwitterCard [data-poll-vote-majority*="2"] .PollXChoice-optionContainer[data-poll-index="2"] .PollXChoice-choice--chart { + background:#77C7F7 +} +.TwitterCard [data-poll-vote-majority*="2"][data-poll-image=true] .PollXChoice-optionContainer[data-poll-index="2"] .PollXChoice-choice--chart { + background:rgba(255,255,255,.4) +} +.TwitterCard [data-poll-vote-majority*="3"] .PollXChoice-optionContainer[data-poll-index="3"] .PollXChoice-choice--chart { + background:#77C7F7 +} +.TwitterCard [data-poll-vote-majority*="3"][data-poll-image=true] .PollXChoice-optionContainer[data-poll-index="3"] .PollXChoice-choice--chart { + background:rgba(255,255,255,.4) +} +.TwitterCard [data-poll-vote-majority*="4"] .PollXChoice-optionContainer[data-poll-index="4"] .PollXChoice-choice--chart { + background:#77C7F7 +} +.TwitterCard [data-poll-vote-majority*="4"][data-poll-image=true] .PollXChoice-optionContainer[data-poll-index="4"] .PollXChoice-choice--chart { + background:rgba(255,255,255,.4) +} +.TwitterCard .PollXChoice-optionContainer .PollXChoice-progress { + display:inline-block; + max-width:100%; + margin-left:.64286em; + margin-right:.64286em; + overflow:hidden; + transition-duration:.3s; + transition-timing-function:cubic-bezier(0.5,1.2,.5,1.2); + transition-property:width,margin-left,margin-right +} +.TwitterCard .TwitterCardsGrid-rtl .PollXChoice-optionContainer .PollXChoice-progress { + margin-left:.64286em; + margin-right:.64286em +} +.TwitterCard .PollXChoice-optionContainer .PollXChoice-progress span { + opacity:0 +} +.TwitterCard [data-poll-state=opened] .PollXChoice-optionContainer .PollXChoice-progress { + max-width:0; + margin-left:-3em; + margin-right:3em +} +.TwitterCard .TwitterCardsGrid-rtl[data-poll-state=opened] .PollXChoice-optionContainer .PollXChoice-progress { + margin-left:3em; + margin-right:-3em +} +.TwitterCard .PollXChoice-optionContainer .PollXChoice-choice { + overflow:hidden; + position:relative; + display:block; + border-radius:.35714em; + cursor:inherit; + text-overflow:ellipsis; + white-space:nowrap +} +.TwitterCard [data-poll-state=opened] .PollXChoice-optionContainer .PollXChoice-choice:hover { + cursor:pointer +} +.TwitterCard .PollXChoice-optionContainer .PollXChoice-choice--selected { + width:0; + height:1em; + display:inline-block; + transition:width .3s cubic-bezier(0.5,1.2,.5,1.2); + padding:.14286em; + background-size:100%; + background-repeat:no-repeat; + background-position:center center +} +.TwitterCard [data-poll-user-choice] .PollXChoice-optionContainer .PollXChoice-choice--selected { + width:1em; + margin-left:.64286em +} +.TwitterCard .TwitterCardsGrid-rtl[data-poll-user-choice] .PollXChoice-optionContainer .PollXChoice-choice--selected { + margin-left:0; + margin-right:.64286em +} +.TwitterCard [data-poll-user-choice="1"] .PollXChoice-optionContainer .PollXChoice-choice--selected[data-poll-index="1"] { + background-image:url(//ton.twimg.com/tfw/assets/checkmark_circle_v1_06f15f494d711c69b89c759b68d1fcbbecdca631.svg) +} +.TwitterCard [data-poll-user-choice="1"][data-poll-image=true] .PollXChoice-optionContainer .PollXChoice-choice--selected[data-poll-index="1"] { + background-image:url(//ton.twimg.com/tfw/assets/checkmark_circle_white_v1_f84278ac7fea1dc5e4dae8d85c26ac5ac2b094ea.svg) +} +.TwitterCard [data-poll-user-choice="2"] .PollXChoice-optionContainer .PollXChoice-choice--selected[data-poll-index="2"] { + background-image:url(//ton.twimg.com/tfw/assets/checkmark_circle_v1_06f15f494d711c69b89c759b68d1fcbbecdca631.svg) +} +.TwitterCard [data-poll-user-choice="2"][data-poll-image=true] .PollXChoice-optionContainer .PollXChoice-choice--selected[data-poll-index="2"] { + background-image:url(//ton.twimg.com/tfw/assets/checkmark_circle_white_v1_f84278ac7fea1dc5e4dae8d85c26ac5ac2b094ea.svg) +} +.TwitterCard [data-poll-user-choice="3"] .PollXChoice-optionContainer .PollXChoice-choice--selected[data-poll-index="3"] { + background-image:url(//ton.twimg.com/tfw/assets/checkmark_circle_v1_06f15f494d711c69b89c759b68d1fcbbecdca631.svg) +} +.TwitterCard [data-poll-user-choice="3"][data-poll-image=true] .PollXChoice-optionContainer .PollXChoice-choice--selected[data-poll-index="3"] { + background-image:url(//ton.twimg.com/tfw/assets/checkmark_circle_white_v1_f84278ac7fea1dc5e4dae8d85c26ac5ac2b094ea.svg) +} +.TwitterCard [data-poll-user-choice="4"] .PollXChoice-optionContainer .PollXChoice-choice--selected[data-poll-index="4"] { + background-image:url(//ton.twimg.com/tfw/assets/checkmark_circle_v1_06f15f494d711c69b89c759b68d1fcbbecdca631.svg) +} +.TwitterCard [data-poll-user-choice="4"][data-poll-image=true] .PollXChoice-optionContainer .PollXChoice-choice--selected[data-poll-index="4"] { + background-image:url(//ton.twimg.com/tfw/assets/checkmark_circle_white_v1_f84278ac7fea1dc5e4dae8d85c26ac5ac2b094ea.svg) +} +.TwitterCard .PollXChoice-optionContainer .PollXChoice-choice--chart { + background:#E1E8ED; + position:absolute; + top:0; + left:0; + width:0; + height:100%; + border-top-left-radius:.35714em; + border-bottom-left-radius:.35714em; + transition:all .3s cubic-bezier(0.5,1.2,.5,1.2); + opacity:1 +} +.TwitterCard .TwitterCardsGrid-rtl .PollXChoice-optionContainer .PollXChoice-choice--chart { + left:inherit; + right:0; + border-top-left-radius:0; + border-bottom-left-radius:0; + border-top-right-radius:.35714em; + border-bottom-right-radius:.35714em +} +.TwitterCard [data-poll-image=true] .PollXChoice-optionContainer .PollXChoice-choice--chart { + background:rgba(255,255,255,.2) +} +.TwitterCard [data-poll-state=opened] .PollXChoice-optionContainer .PollXChoice-choice--chart { + opacity:0 +} +.TwitterCard [data-poll-state=final] .PollXChoice-optionContainer .PollXChoice-choice--chart { + border-top-right-radius:.35714em; + border-bottom-right-radius:.35714em +} +.TwitterCard .TwitterCardsGrid-rtl[data-poll-state=final] .PollXChoice-optionContainer .PollXChoice-choice--chart { + border-top-left-radius:.35714em; + border-bottom-left-radius:.35714em +} +.TwitterCard .PollXChoice-optionContainer .PollXChoice-choice--radio { + position:relative; + display:inline-block; + box-sizing:border-box; + border:1px solid #8899A6; + width:1.3em; + height:1.3em; + border-radius:1em; + vertical-align:middle; + margin-right:.64286em; + transition:all .3s cubic-bezier(0.5,1.2,.5,1.2); + background-size:100%; + background-repeat:no-repeat +} +.TwitterCard .TwitterCardsGrid-rtl .PollXChoice-optionContainer .PollXChoice-choice--radio { + margin-right:0; + margin-left:.64286em; + margin-top:.14286em +} +.TwitterCard [data-poll-image=true] .PollXChoice-optionContainer .PollXChoice-choice--radio { + border:1px solid #FFF +} +.TwitterCard [data-poll-state=closed] .PollXChoice-optionContainer .PollXChoice-choice--radio,.TwitterCard [data-poll-state=final] .PollXChoice-optionContainer .PollXChoice-choice--radio { + width:0; + height:0; + margin-right:0; + margin-left:0; + border-width:0; + opacity:0 +} +.TwitterCard .PollXChoice-optionContainer .PollXChoice-choice--input { + position:relative; + display:none +} +.TwitterCard .PollXChoice-optionContainer .PollXChoice-choice--input:checked+.PollXChoice-choice--radio { + border-color:#19CF86; + background-image:url(//ton.twimg.com/tfw/assets/checkmark_circle_green_v1_7c9f3050c9f6a85f83ede3cad267976a1633f0cc.svg) +} +.TwitterCard .PollXChoice-optionContainer .PollXChoice-choice--text { + position:relative; + display:inline-block; + padding-top:.28571em; + padding-bottom:.28571em +} +.TwitterCard .PollXChoice-optionContainer .PollXChoice-choice--text span { + vertical-align:middle +} +.TwitterCard .PollXChoice-optionContainer .PollXChoice-choice--anchor { + display:block; + border:0; + margin:0; + padding:0; + position:relative; + color:#292F33; + text-decoration:none; + outline:0 +} +.TwitterCard .PollXChoice-optionContainer .PollXChoice-choice--anchor:link,.TwitterCard .PollXChoice-optionContainer .PollXChoice-choice--anchor:visited,.TwitterCard .PollXChoice-optionContainer .PollXChoice-choice--anchor:hover,.TwitterCard .PollXChoice-optionContainer .PollXChoice-choice--anchor:active { + color:#292F33; + text-decoration:none; + outline:0 +} +.TwitterCard .PollXChoice[data-theme=dark] .PollXChoice-optionContainer .PollXChoice-choice--anchor:link,.TwitterCard .PollXChoice[data-theme=dark] .PollXChoice-optionContainer .PollXChoice-choice--anchor:visited,.TwitterCard .PollXChoice[data-theme=dark] .PollXChoice-optionContainer .PollXChoice-choice--anchor:hover,.TwitterCard .PollXChoice[data-theme=dark] .PollXChoice-optionContainer .PollXChoice-choice--anchor:active { + color:#FFF +} +.TwitterCard .PollXChoice-footer { + color:#8899A6; + clear:both; + box-sizing:border-box +} +.TwitterCard [data-poll-image=true] .PollXChoice-footer { + color:#FFF +} +.TwitterCard .PollXChoice-footer span { + vertical-align:middle +} +.TwitterCard .PollXChoice-footer .PollXChoice-info { + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + margin:-2px -4px 0 -4px; + transition:all .3s cubic-bezier(0.5,1.2,.5,1.2) +} +.TwitterCard .PollXChoice-footer .PollXChoice-info span { + margin-top:calc(6px + .5em) +} +.TwitterCard [data-poll-state=closed] .PollXChoice-footer .PollXChoice-info,.TwitterCard [data-poll-state=final] .PollXChoice-footer .PollXChoice-info { + margin-left:0 +} +.TwitterCard .PollXChoice-footer .PollXChoice-info .PollXChoice-vote { + display:inline-block; + margin-right:.64286em; + margin-top:0; + padding:4px; + border:1px solid transparent; + border-radius:.33333em; + transition:all .3s cubic-bezier(0.5,1.2,.5,1.2) +} +.TwitterCard .TwitterCardsGrid-rtl .PollXChoice-footer .PollXChoice-info .PollXChoice-vote { + margin-left:.64286em; + margin-right:0 +} +.TwitterCard .PollXChoice-footer .PollXChoice-info .PollXChoice-vote:active { + border-color:#19CF86 +} +.TwitterCard .PollXChoice-footer .PollXChoice-info .PollXChoice-vote button { + margin-top:0!important; + outline:0 +} +.TwitterCard .PollXChoice-footer .PollXChoice-info .PollXChoice-vote a { + display:block; + position:relative; + color:#292F33; + text-decoration:none; + outline:0; + margin-top:0 +} +.TwitterCard .PollXChoice-footer .PollXChoice-info .PollXChoice-vote a:link,.TwitterCard .PollXChoice-footer .PollXChoice-info .PollXChoice-vote a:visited,.TwitterCard .PollXChoice-footer .PollXChoice-info .PollXChoice-vote a:hover,.TwitterCard .PollXChoice-footer .PollXChoice-info .PollXChoice-vote a:active { + color:#292F33; + text-decoration:none; + outline:0 +} +.TwitterCard .PollXChoice[data-theme=dark] .PollXChoice-footer .PollXChoice-info .PollXChoice-vote a { + background-color:transparent; + background-image:none; + border-color:#FFF; + color:#FFF +} +.TwitterCard .PollXChoice[data-theme=dark]:link .PollXChoice-footer .PollXChoice-info .PollXChoice-vote a,.TwitterCard .PollXChoice[data-theme=dark]:visited .PollXChoice-footer .PollXChoice-info .PollXChoice-vote a,.TwitterCard .PollXChoice[data-theme=dark]:hover .PollXChoice-footer .PollXChoice-info .PollXChoice-vote a,.TwitterCard .PollXChoice[data-theme=dark]:active .PollXChoice-footer .PollXChoice-info .PollXChoice-vote a { + background-color:rgba(255,255,255,.1); + background-image:none; + border-color:#FFF +} +.TwitterCard [data-poll-state=closed] .PollXChoice-footer .PollXChoice-info .PollXChoice-vote,.TwitterCard [data-poll-state=final] .PollXChoice-footer .PollXChoice-info .PollXChoice-vote { + width:0; + margin-right:0; + margin-left:0; + overflow:hidden; + padding-left:0; + padding-right:0; + border-left:0; + border-right:0; + border-color:transparent +} +.TwitterCard [data-poll-state=closed] .PollXChoice-footer .PollXChoice-info .PollXChoice-vote:active,.TwitterCard [data-poll-state=final] .PollXChoice-footer .PollXChoice-info .PollXChoice-vote:active { + border-color:transparent +} +.TwitterCard [data-poll-image=true][data-poll-state=final][data-poll-init-state=final] .PollXChoice-footer .PollXChoice-info .PollXChoice-vote { + display:none!important +} +.TwitterCard .ProductAdCard-destination { + color:#8899A6; + max-height:1.3em; + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap +} +.TwitterCard .ProductAdCard-destination .vanityUrl { + text-transform:lowercase +} +.TwitterCard .ProductAdCard--small .ProductAdCard-content { + padding:.55em .7em .7em +} +.TwitterCard .ProductAdCard--small .ProductAdCard-content .Button--smallGray { + float:left; + margin-top:2.1em +} +.TwitterCard .SummaryCard-content { + padding:.75em; + box-sizing:border-box; + text-decoration:none +} +.TwitterCard .SummaryCard-content .TwitterCard-title { + max-height:1.3em; + white-space:nowrap; + overflow:hidden; + text-overflow:ellipsis +} +.TwitterCard .SummaryCard-content p { + overflow:hidden +} +.TwitterCard .SummaryCard-content .Button--smallGray { + float:left; + margin-top:.5em +} +.TwitterCard .SummaryCard-destination { + text-transform:lowercase; + color:#8899A6; + max-height:1.3em; + white-space:nowrap; + overflow:hidden; + text-overflow:ellipsis +} +.TwitterCard .SummaryCard-image { + background-color:#E1E8ED; + border-style:solid; + border-color:inherit; + border-width:0 +} +.TwitterCard .SummaryCard-image .tcu-imageWrapper { + background-image:url(//ton.twimg.com/tfw/assets/link_v1_e64f66f5650df987d97cc5f00c4cb5987f367028.svg); + background-size:3em; + transition-property:opacity; + transition-timing-function:cubic-bezier(0.9,0,.9,0); + transition-duration:0s +} +.TwitterCard .SummaryCard--small .SummaryCard-image { + width:8.81667em; + border-right-width:1px +} +.TwitterCard .SummaryCard--small .SummaryCard-contentContainer { + width:calc(100% - 8.81667em - 2px) +} +.TwitterCard .SummaryCard--small .SummaryCard-content p { + max-height:3.9em +} +.TwitterCard .SummaryCard--small:not([data-card-breakpoints~=w400]) .SummaryCard-image { + width:7.51667em; + height:7.51667em +} +.TwitterCard .SummaryCard--small:not([data-card-breakpoints~=w400]) .SummaryCard-contentContainer { + width:calc(100% - 7.51667em - 2px) +} +.TwitterCard .SummaryCard--small:not([data-card-breakpoints~=w400]) .SummaryCard-content p { + max-height:2.6em +} +.TwitterCard .SummaryCard--small:not([data-card-breakpoints~=w300]) .SummaryCard-image { + width:6.21667em; + height:6.21667em +} +.TwitterCard .SummaryCard--small:not([data-card-breakpoints~=w300]) .SummaryCard-contentContainer { + width:calc(100% - 6.21667em - 2px) +} +.TwitterCard .SummaryCard--small:not([data-card-breakpoints~=w300]) .SummaryCard-content p { + max-height:1.3em; + white-space:nowrap; + overflow:hidden; + text-overflow:ellipsis +} +.TwitterCard .SummaryCard--large[data-pe-name] .TwitterCard-title { + white-space:normal; + max-height:2.6em; + padding-right:1em +} +.TwitterCard .SummaryCard--large .SummaryCard-image { + border-bottom-width:1px +} +.TwitterCard .SummaryCard--large .SummaryCard-content { + padding-left:1em; + padding-right:1em +} +.TwitterCard .SummaryCard--large .SummaryCard-content p { + max-height:2.6em +} +.TwitterCard .SummaryCard--large .SummaryCard-content .Button--smallGray { + float:right; + margin-top:.25em +} +.TwitterCard .SummaryCard--large:not([data-card-breakpoints~=w300]) .SummaryCard-content p { + max-height:1.3em; + white-space:nowrap; + overflow:hidden; + text-overflow:ellipsis +} diff --git a/bigbluebutton-client/resources/prod/help/CSS/timeline.32e4c4ad05a2b0fae454cc63470e160f.light.ltr.css b/bigbluebutton-client/resources/prod/help/CSS/timeline.32e4c4ad05a2b0fae454cc63470e160f.light.ltr.css new file mode 100755 index 0000000000000000000000000000000000000000..79d47f85c1f21d6b4a3a9b9d149b38bfa45854df --- /dev/null +++ b/bigbluebutton-client/resources/prod/help/CSS/timeline.32e4c4ad05a2b0fae454cc63470e160f.light.ltr.css @@ -0,0 +1,1296 @@ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html { + font-family:sans-serif; + -ms-text-size-adjust:100%; + -webkit-text-size-adjust:100% +} +body { + margin:0 +} +article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary { + display:block +} +audio,canvas,progress,video { + display:inline-block; + vertical-align:baseline +} +audio:not([controls]) { + display:none; + height:0 +} +[hidden],template { + display:none +} +a { + background-color:transparent +} +a:active,a:hover { + outline:0 +} +abbr[title] { + border-bottom:1px dotted +} +b,strong { + font-weight:700 +} +dfn { + font-style:italic +} +h1 { + font-size:2em; + margin:.67em 0 +} +mark { + background:#ff0; + color:#000 +} +small { + font-size:80% +} +sub,sup { + font-size:75%; + line-height:0; + position:relative; + vertical-align:baseline +} +sup { + top:-.5em +} +sub { + bottom:-.25em +} +img { + border:0 +} +svg:not(:root) { + overflow:hidden +} +figure { + margin:1em 40px +} +hr { + -moz-box-sizing:content-box; + box-sizing:content-box; + height:0 +} +pre { + overflow:auto +} +code,kbd,pre,samp { + font-family:monospace,monospace; + font-size:1em +} +button,input,optgroup,select,textarea { + color:inherit; + font:inherit; + margin:0 +} +button { + overflow:visible +} +button,select { + text-transform:none +} +button,html input[type=button],input[type=reset],input[type=submit] { + -webkit-appearance:button; + cursor:pointer +} +button[disabled],html input[disabled] { + cursor:default +} +button::-moz-focus-inner,input::-moz-focus-inner { + border:0; + padding:0 +} +input { + line-height:normal +} +input[type=checkbox],input[type=radio] { + -moz-box-sizing:border-box; + box-sizing:border-box; + padding:0 +} +input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button { + height:auto +} +input[type=search] { + -webkit-appearance:textfield; + -moz-box-sizing:content-box; + box-sizing:content-box +} +input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration { + -webkit-appearance:none +} +fieldset { + border:1px solid silver; + margin:0 2px; + padding:.35em .625em .75em +} +legend { + border:0; + padding:0 +} +textarea { + overflow:auto +} +optgroup { + font-weight:700 +} +table { + border-collapse:collapse; + border-spacing:0 +} +td,th { + padding:0 +} +.u-block { + display:block!important +} +.u-hidden { + display:none!important +} +.u-hiddenVisually { + position:absolute!important; + overflow:hidden!important; + width:1px!important; + height:1px!important; + padding:0!important; + border:0!important; + clip:rect(1px,1px,1px,1px)!important +} +.u-inline { + display:inline!important +} +.u-inlineBlock { + display:inline-block!important; + max-width:100% +} +.u-table { + display:table!important +} +.u-tableCell { + display:table-cell!important +} +.u-tableRow { + display:table-row!important +} +.u-cf:after,.u-cf:before { + content:" "; + display:table +} +.u-cf:after { + clear:both +} +.u-nbfc { + overflow:hidden!important +} +.u-nbfcAlt { + display:table-cell!important; + width:10000px!important +} +.u-floatLeft { + float:left!important +} +.u-floatRight { + float:right!important +} +.u-textBreak { + word-wrap:break-word!important +} +.u-textCenter { + text-align:center!important +} +.u-textLeft { + text-align:left!important +} +.u-textRight { + text-align:right!important +} +.u-textInheritColor { + color:inherit!important +} +.u-textKern { + text-rendering:optimizeLegibility; + -webkit-font-feature-settings:"kern" 1,"kern"; + -moz-font-feature-settings:"kern" 1,"kern"; + font-feature-settings:"kern" 1,"kern"; + -webkit-font-kerning:normal; + -moz-font-kerning:normal; + font-kerning:normal +} +.u-textNoWrap { + white-space:nowrap!important +} +.u-textTruncate { + max-width:100%; + overflow:hidden!important; + text-overflow:ellipsis!important; + white-space:nowrap!important; + word-wrap:normal!important +} +blockquote,button,h1,h2,h3,h4,h5,h6,iframe,ol,p,ul { + margin:0; + padding:0; + list-style:none; + border:none +} +b,i { + font-weight:400; + font-style:normal +} +abbr,abbr[title] { + border-bottom:0 +} +.SandboxRoot { + direction:ltr; + text-align:left +} +.SandboxRoot { + display:block; + background:0 0; + font:normal normal 14px/1.4 Helvetica,Roboto,"Segoe UI",Calibri,sans-serif; + color:#292F33; + white-space:normal; + white-space:initial +} +a { + color:#3b94d9; + text-decoration:none; + outline:0 +} +a:visited { + color:#3b94d9; + text-decoration:none; + outline:0 +} +a:focus { + color:#55acee; + text-decoration:underline; + outline:0 +} +a:hover { + color:#55acee; + text-decoration:none; + outline:0 +} +a:active { + color:#3b94d9; + text-decoration:none; + outline:0 +} +.SandboxRoot.env-bp-min .u-hiddenInNarrowEnv { + display:none +} +.SandboxRoot:not(.env-bp-min) .u-hiddenInWideEnv { + display:none +} +.u-linkBlend:not(:focus):not(:hover):not(:active) { + font-weight:inherit; + color:inherit; + text-decoration:inherit +} +.Avatar { + max-width:100%; + max-height:100% +} +.Avatar--fill { + width:100%; + height:100% +} +.Button,.Button:link,.Button:visited { + -webkit-appearance:none; + background-color:#f5f8fa; + background-image:-webkit-linear-gradient(#fff,#f5f8fa); + background-image:-moz-linear-gradient(#fff,#f5f8fa); + background-image:-o-linear-gradient(#fff,#f5f8fa); + background-image:linear-gradient(#fff,#f5f8fa); + border:1px solid #e1e8ed; + border-radius:4px; + -moz-box-sizing:border-box; + box-sizing:border-box; + color:#292F33; + cursor:pointer; + display:inline-block; + font:inherit; + line-height:normal; + margin:0; + padding:8px 15px 7px; + position:relative; + text-align:center; + text-decoration:none; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; + white-space:normal +} +.Button::-moz-focus-inner { + border:0; + padding:0 +} +.Button:active,.Button:focus,.Button:hover { + text-decoration:none +} +.Button:hover { + background-color:#e1e8ed; + background-image:-webkit-linear-gradient(#fff,#e1e8ed); + background-image:-moz-linear-gradient(#fff,#e1e8ed); + background-image:-o-linear-gradient(#fff,#e1e8ed); + background-image:linear-gradient(#fff,#e1e8ed); + border-color:#e1e8ed +} +.Button:focus { + box-shadow:0 0 0 1px #fff,0 0 0 3px rgba(0,132,180,.5) +} +.Button:active { + background-color:#e1e8ed; + background-image:-webkit-linear-gradient(#fff,#f5f8fa); + background-image:-moz-linear-gradient(#fff,#f5f8fa); + background-image:-o-linear-gradient(#fff,#f5f8fa); + background-image:linear-gradient(#fff,#f5f8fa); + border-color:#ccd6dd; + box-shadow:inset 0 1px 4px rgba(0,0,0,.2) +} +.Button.is-disabled,.Button:disabled { + cursor:default; + opacity:.6 +} +.Button-label { + font-weight:700 +} +.Button--full { + display:block; + width:100% +} +.Emoji--forText { + height:1.25em; + width:1.25em; + padding:0 .05em 0 .1em; + vertical-align:-.2em +} +.Emoji--forLinks { + background-position:.1em; + background-repeat:no-repeat; + background-size:1.25em 1.25em; + letter-spacing:1.1em; + line-height:1.25em; + padding-top:.15em; + -moz-user-select:none; + -ms-user-select:none +} +.Icon { + display:inline-block; + height:1.25em; + background-repeat:no-repeat; + background-size:contain; + vertical-align:text-bottom +} +.Icon--alertsPill { + width:1.07639em; + background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2062%2072%22%3E%3Cpath%20fill%3D%22%23dd2e44%22%20d%3D%22M51%2014H11c-4.42%200-8%203.58-8%208v28c0%204.418%203.58%208%208%208h40c4.418%200%208-3.582%208-8V22c0-4.42-3.582-8-8-8zM12.107%2036.997L12%2037c-1.057%200-1.94-.826-1.996-1.894-.34-6.354%203.132-12.276%208.844-15.088.99-.487%202.19-.08%202.677.912s.08%202.19-.912%202.678c-4.272%202.103-6.87%206.532-6.615%2011.285.06%201.103-.788%202.045-1.89%202.104zm7%201L19%2038c-1.057%200-1.94-.827-1.996-1.894-.234-4.39%202.164-8.478%206.108-10.413.992-.488%202.19-.08%202.677.914.486.99.077%202.19-.915%202.676-2.503%201.23-4.025%203.824-3.876%206.61.056%201.104-.79%202.045-1.893%202.104zm21.106%209.11c-.21.774-.94%201.282-1.733%201.387-.093.014-.188.02-.285.02H34.4C33.93%2049.955%2032.593%2051%2031%2051c-1.596%200-2.932-1.047-3.398-2.485h-3.78c-.91%200-1.817-.544-2.046-1.426-.223-.86.042-1.692.792-2.145.2-.248%201.048-1.487%201.048-4.71%200-5.407%202.46-8.042%205.273-8.893.13-1.054%201.02-1.873%202.108-1.873%201.093%200%201.983.823%202.11%201.88%202.827.86%205.272%203.486%205.286%208.858.008%203.192.827%204.462%201.044%204.742.014.01.027.02.04.032.718.466.96%201.286.735%202.125zm4.785-11C44.94%2037.172%2044.058%2038%2043.002%2038c-.036%200-.072%200-.108-.003-1.103-.06-1.95-1-1.89-2.104.147-2.786-1.375-5.38-3.877-6.61-.992-.486-1.4-1.685-.914-2.676.487-.99%201.685-1.4%202.677-.914%203.944%201.936%206.34%206.024%206.108%2010.413zm7-1C51.94%2036.172%2051.058%2037%2050.002%2037c-.036%200-.072%200-.108-.003-1.103-.06-1.95-1-1.89-2.104.253-4.753-2.344-9.183-6.616-11.285-.99-.488-1.4-1.687-.912-2.678.487-.99%201.686-1.4%202.677-.912%205.713%202.812%209.184%208.734%208.845%2015.088z%22%2F%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M38.89%2025.693c-.992-.487-2.19-.077-2.677.914-.487.99-.078%202.19.914%202.676%202.503%201.23%204.025%203.824%203.876%206.61-.06%201.104.788%202.045%201.89%202.104.037.002.073.003.11.003%201.055%200%201.937-.827%201.994-1.894.234-4.39-2.163-8.477-6.107-10.413zM43.154%2020.02c-.99-.49-2.19-.08-2.677.91-.488.992-.08%202.19.912%202.68%204.27%202.102%206.868%206.53%206.614%2011.284-.06%201.103.788%202.045%201.89%202.104l.108.002c1.055%200%201.938-.827%201.995-1.894.34-6.354-3.13-12.276-8.843-15.087zM39.48%2044.982l-.04-.032c-.217-.28-1.036-1.55-1.044-4.742-.013-5.37-2.46-8-5.286-8.857-.127-1.057-1.017-1.88-2.11-1.88-1.09%200-1.98.818-2.11%201.872-2.812.85-5.272%203.486-5.272%208.892%200%203.224-.847%204.463-1.048%204.71-.75.453-1.016%201.285-.792%202.145.23.88%201.136%201.425%202.047%201.425h3.78C28.068%2049.953%2029.404%2051%2031%2051c1.593%200%202.93-1.047%203.398-2.485h3.796c.097%200%20.192-.007.285-.02.792-.105%201.523-.613%201.732-1.388.227-.84-.016-1.66-.732-2.125zM24.874%2029.283c.992-.486%201.4-1.685.914-2.676-.487-.993-1.685-1.402-2.677-.914-3.943%201.936-6.34%206.023-6.107%2010.413C17.06%2037.173%2017.943%2038%2019%2038c.035%200%20.07%200%20.107-.003%201.103-.06%201.95-1%201.89-2.104-.148-2.786%201.374-5.38%203.877-6.61zM20.613%2023.608c.99-.488%201.4-1.687.912-2.678s-1.687-1.4-2.677-.912c-5.712%202.812-9.183%208.733-8.844%2015.088C10.06%2036.174%2010.944%2037%2012%2037c.035%200%20.07%200%20.107-.003%201.103-.06%201.95-1%201.89-2.104-.253-4.752%202.343-9.182%206.616-11.285z%22%2F%3E%3C%2Fsvg%3E) +} +.Icon--lightning { + width:.625em; + background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2036%2072%22%3E%3Cpath%20fill%3D%22%232b7bb9%22%20d%3D%22M30.738%2028.01C30.382%2027.387%2029.718%2027%2029%2027H18.145l6.686-15.194c.273-.62.215-1.333-.155-1.898C24.305%209.34%2023.675%209%2023%209H11c-.925%200-1.73.634-1.945%201.533l-6%2025c-.143.596-.005%201.224.374%201.705.38.482.957.762%201.57.762h7.278L8.034%2060.632c-.18.953.353%201.897%201.26%202.24.23.087.47.128.706.128.69%200%201.35-.357%201.72-.98l19-32c.367-.617.374-1.384.018-2.01z%22%2F%3E%3C%2Fsvg%3E) +} +.Icon--playCircle { + width:1.04166em; + background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2060%2072%22%3E%3Cpath%20opacity%3D%22.8%22%20fill%3D%22%231DA1F2%22%20d%3D%22M30%2012C16.768%2012%206%2022.765%206%2036s10.766%2023.998%2024%2023.998%2024-10.765%2024-24S43.235%2012%2030%2012z%22%2F%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M39.2%2034.34l-12-9c-.606-.455-1.418-.528-2.094-.19-.677.34-1.106%201.032-1.106%201.79v18c0%20.758.428%201.45%201.106%201.79.283.14.59.21.894.21.425%200%20.847-.136%201.2-.4l12-9c.503-.377.8-.97.8-1.6%200-.63-.295-1.223-.8-1.6z%22%2F%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M30%2015c11.598%200%2021%209.402%2021%2021s-9.4%2020.998-21%2020.998-21-9.402-21-21S18.4%2015%2030%2015m0-6C15.112%209%203%2021.11%203%2036s12.112%2026.998%2027%2026.998%2027-12.11%2027-27S44.888%209%2030%209z%22%2F%3E%3C%2Fsvg%3E) +} +.Icon--reply { + width:1.07639em; + background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2062%2072%22%3E%3Cpath%20class%3D%22icon%22%20fill%3D%22%238899a6%22%20d%3D%22M41%2031h-9V19c0-1.14-.647-2.183-1.668-2.688-1.022-.507-2.243-.39-3.15.302l-21%2016C5.438%2033.18%205%2034.064%205%2035s.437%201.82%201.182%202.387l21%2016c.533.405%201.174.613%201.82.613.453%200%20.908-.103%201.33-.312C31.354%2053.183%2032%2052.14%2032%2051V39h9c5.514%200%2010%204.486%2010%2010%200%202.21%201.79%204%204%204s4-1.79%204-4c0-9.925-8.075-18-18-18z%22%2F%3E%3C%2Fsvg%3E); + -webkit-transform:scaleX(1); + -moz-transform:scaleX(1); + -ms-transform:scaleX(1); + -o-transform:scaleX(1); + transform:scaleX(1) +} +.Icon--retweet { + width:1.28472em; + background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2074%2072%22%3E%3Cpath%20class%3D%22icon%22%20fill%3D%22%238899a6%22%20d%3D%22M70.676%2036.644C70.166%2035.636%2069.13%2035%2068%2035h-7V19c0-2.21-1.79-4-4-4H34c-2.21%200-4%201.79-4%204s1.79%204%204%204h18c.552%200%20.998.446%201%20.998V35h-7c-1.13%200-2.165.636-2.676%201.644-.51%201.01-.412%202.22.257%203.13l11%2015C55.148%2055.545%2056.046%2056%2057%2056s1.855-.455%202.42-1.226l11-15c.668-.912.767-2.122.256-3.13zM40%2048H22c-.54%200-.97-.427-.992-.96L21%2036h7c1.13%200%202.166-.636%202.677-1.644.51-1.01.412-2.22-.257-3.13l-11-15C18.854%2015.455%2017.956%2015%2017%2015s-1.854.455-2.42%201.226l-11%2015c-.667.912-.767%202.122-.255%203.13C3.835%2035.365%204.87%2036%206%2036h7l.012%2016.003c.002%202.208%201.792%203.997%204%203.997h22.99c2.208%200%204-1.79%204-4s-1.792-4-4-4z%22%2F%3E%3C%2Fsvg%3E); + -webkit-transform:scaleX(1); + -moz-transform:scaleX(1); + -ms-transform:scaleX(1); + -o-transform:scaleX(1); + transform:scaleX(1) +} +.Icon--retweetBadge { + width:1.04166em; + background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2260%22%20height%3D%2272%22%20viewBox%3D%220%200%2060%2072%22%3E%3Cpath%20class%3D%22icon%22%20fill%3D%22%2319cf86%22%20d%3D%22M49%209H11c-4.418%200-8%203.582-8%208v38c0%204.418%203.582%208%208%208h38c4.418%200%208-3.582%208-8V17c0-4.418-3.582-8-8-8zM21%2044h10c1.657%200%203%201.343%203%203s-1.343%203-3%203H17c-1.657%200-3-1.343-3-3V36H9c-.77%200-1.47-.44-1.803-1.134-.333-.692-.24-1.516.24-2.115l8-10c.76-.947%202.365-.947%203.124%200l8%2010c.48.6.576%201.425.243%202.117C26.47%2035.56%2025.77%2036%2025%2036h-5v7c0%20.553.448%201%201%201zm31.562-4.75l-8%2010c-.38.474-.954.75-1.562.75s-1.182-.276-1.562-.75l-8-10c-.48-.6-.574-1.424-.24-2.116C33.53%2036.44%2034.23%2036%2035%2036h5v-7c0-.553-.447-1-1-1H29c-1.657%200-3-1.343-3-3s1.343-3%203-3h14c1.657%200%203%201.343%203%203v11h5c.77%200%201.47.44%201.803%201.134.333.692.24%201.515-.24%202.115z%22%2F%3E%3C%2Fsvg%3E); + -webkit-transform:scaleX(1); + -moz-transform:scaleX(1); + -ms-transform:scaleX(1); + -o-transform:scaleX(1); + transform:scaleX(1) +} +.Icon--mute { + width:1.18055em; + background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2068%2072%22%3E%3Cg%20fill%3D%22%23fff%22%3E%3Cpath%20class%3D%22icon%22%20d%3D%22M37.105%209.21c-1.142-.45-2.447-.162-3.29.734L18.705%2026H7c-1.657%200-3%201.343-3%203v14c0%201.657%201.343%203%203%203h11.704l15.11%2016.056c.844.896%202.15%201.185%203.29.733C38.25%2062.334%2039%2061.23%2039%2060V12c0-1.23-.75-2.335-1.895-2.79zM45%2048c-.746%200-1.492-.276-2.073-.832-1.197-1.146-1.24-3.044-.094-4.24C44.733%2040.937%2046%2039%2046%2036s-1.267-4.938-3.168-6.927c-1.145-1.197-1.103-3.096.094-4.24%201.198-1.147%203.097-1.104%204.242.094C49.418%2027.277%2052%2030.663%2052%2036s-2.583%208.722-4.832%2011.073C46.578%2047.69%2045.79%2048%2045%2048z%22%2F%3E%3Cpath%20class%3D%22icon%22%20d%3D%22M54%2054c-.746%200-1.492-.276-2.073-.832-1.197-1.146-1.24-3.044-.094-4.24%203.365-3.52%205.152-7.992%205.168-12.938-.015-4.926-1.802-9.4-5.167-12.917-1.145-1.197-1.103-3.096.094-4.24%201.197-1.146%203.097-1.104%204.242.094%204.447%204.65%206.81%2010.55%206.83%2017.063-.02%206.532-2.383%2012.434-6.83%2017.083-.59.616-1.38.927-2.17.927z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E) +} +.Icon--unmute { + width:1.18055em; + background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2068%2072%22%3E%3Cg%20fill%3D%22%23fff%22%3E%3Cpath%20class%3D%22icon%22%20d%3D%22M37.105%209.21c-1.142-.45-2.447-.162-3.29.734L18.705%2026H7c-1.657%200-3%201.343-3%203v14c0%201.657%201.343%203%203%203h11.704l15.11%2016.056c.844.896%202.15%201.185%203.29.733C38.25%2062.334%2039%2061.23%2039%2060V12c0-1.23-.75-2.335-1.895-2.79zM58.242%2036l5.88-5.88c1.17-1.17%201.17-3.07%200-4.24-1.172-1.173-3.072-1.173-4.243%200L54%2031.757l-5.88-5.88c-1.17-1.17-3.07-1.17-4.24%200-1.173%201.172-1.173%203.072%200%204.243L49.757%2036l-5.88%205.88c-1.17%201.17-1.17%203.07%200%204.24.586.587%201.354.88%202.122.88s1.536-.293%202.12-.88L54%2040.243l5.88%205.88c.584.585%201.352.878%202.12.878s1.536-.293%202.12-.88c1.173-1.17%201.173-3.07%200-4.24L58.243%2036z%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E) +} +.Icon--twitter { + width:1.25em; + background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2072%2072%22%3E%3Cpath%20fill%3D%22none%22%20d%3D%22M0%200h72v72H0z%22%2F%3E%3Cpath%20class%3D%22icon%22%20fill%3D%22%2355acee%22%20d%3D%22M68.812%2015.14c-2.348%201.04-4.87%201.744-7.52%202.06%202.704-1.62%204.78-4.186%205.757-7.243-2.53%201.5-5.33%202.592-8.314%203.176C56.35%2010.59%2052.948%209%2049.182%209c-7.23%200-13.092%205.86-13.092%2013.093%200%201.026.118%202.02.338%202.98C25.543%2024.527%2015.9%2019.318%209.44%2011.396c-1.125%201.936-1.77%204.184-1.77%206.58%200%204.543%202.312%208.552%205.824%2010.9-2.146-.07-4.165-.658-5.93-1.64-.002.056-.002.11-.002.163%200%206.345%204.513%2011.638%2010.504%2012.84-1.1.298-2.256.457-3.45.457-.845%200-1.666-.078-2.464-.23%201.667%205.2%206.5%208.985%2012.23%209.09-4.482%203.51-10.13%205.605-16.26%205.605-1.055%200-2.096-.06-3.122-.184%205.794%203.717%2012.676%205.882%2020.067%205.882%2024.083%200%2037.25-19.95%2037.25-37.25%200-.565-.013-1.133-.038-1.693%202.558-1.847%204.778-4.15%206.532-6.774z%22%2F%3E%3C%2Fsvg%3E) +} +.Icon--twitterWhite { + width:1.25em; + background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2072%2072%22%3E%3Cpath%20fill%3D%22none%22%20d%3D%22M0%200h72v72H0z%22%2F%3E%3Cpath%20class%3D%22icon%22%20fill%3D%22%23fff%22%20d%3D%22M68.812%2015.14c-2.348%201.04-4.87%201.744-7.52%202.06%202.704-1.62%204.78-4.186%205.757-7.243-2.53%201.5-5.33%202.592-8.314%203.176C56.35%2010.59%2052.948%209%2049.182%209c-7.23%200-13.092%205.86-13.092%2013.093%200%201.026.118%202.02.338%202.98C25.543%2024.527%2015.9%2019.318%209.44%2011.396c-1.125%201.936-1.77%204.184-1.77%206.58%200%204.543%202.312%208.552%205.824%2010.9-2.146-.07-4.165-.658-5.93-1.64-.002.056-.002.11-.002.163%200%206.345%204.513%2011.638%2010.504%2012.84-1.1.298-2.256.457-3.45.457-.845%200-1.666-.078-2.464-.23%201.667%205.2%206.5%208.985%2012.23%209.09-4.482%203.51-10.13%205.605-16.26%205.605-1.055%200-2.096-.06-3.122-.184%205.794%203.717%2012.676%205.882%2020.067%205.882%2024.083%200%2037.25-19.95%2037.25-37.25%200-.565-.013-1.133-.038-1.693%202.558-1.847%204.778-4.15%206.532-6.774z%22%2F%3E%3C%2Fsvg%3E) +} +.Icon--verified { + width:1.11111em; + background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2064%2072%22%3E%3Cpath%20fill%3D%22none%22%20d%3D%22M0%200h64v72H0z%22%2F%3E%3Cpath%20fill%3D%22%2388c9f9%22%20d%3D%22M3%2037.315c0%204.125%202.162%207.726%205.363%209.624-.056.467-.09.937-.09%201.42%200%206.103%204.72%2011.045%2010.546%2011.045%201.295%200%202.542-.234%203.687-.686C24.22%2062.4%2027.827%2064.93%2032%2064.93c4.174%200%207.782-2.53%209.49-6.213%201.148.45%202.39.685%203.69.685%205.826%200%2010.546-4.94%2010.546-11.045%200-.483-.037-.953-.093-1.42C58.83%2045.04%2061%2041.44%2061%2037.314c0-4.37-2.42-8.15-5.933-9.946.427-1.203.658-2.5.658-3.865%200-6.104-4.72-11.045-10.545-11.045-1.302%200-2.543.232-3.69.688-1.707-3.685-5.315-6.216-9.49-6.216-4.173%200-7.778%202.53-9.492%206.216-1.146-.455-2.393-.688-3.688-.688-5.827%200-10.545%204.94-10.545%2011.045%200%201.364.23%202.662.656%203.864C5.42%2029.163%203%2032.944%203%2037.314z%22%2F%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M17.87%2039.08l7.015%206.978c.585.582%201.35.873%202.116.873.77%200%201.542-.294%202.127-.883.344-.346%2015.98-15.974%2015.98-15.974%201.172-1.172%201.172-3.07%200-4.243-1.17-1.17-3.07-1.172-4.242%200l-13.87%2013.863-4.892-4.868c-1.174-1.168-3.074-1.164-4.242.01-1.168%201.176-1.163%203.075.01%204.244z%22%2F%3E%3C%2Fsvg%3E) +} +.Icon--vine { + width:.9375em; + background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2054%2072%22%3E%3Cpath%20class%3D%22icon%22%20fill%3D%22%23fff%22%20d%3D%22M48.23%2031.25c1.21-2.712%201.877-6.235%201.877-9.32%200-8.304-4.205-13.136-11.894-13.136-7.91%200-12.54%206.136-12.54%2014.225%200%208.01%203.71%2014.887%209.838%2018.018-2.573%205.194-5.853%209.775-9.264%2013.22-6.2-7.56-11.803-17.644-14.103-37.32H3c4.223%2032.774%2016.814%2043.21%2020.143%2045.213%201.883%201.147%203.505%201.09%205.227.112%202.705-1.555%2010.814-9.738%2015.32-19.33%201.883-.005%204.153-.223%206.417-.737V35.74c-1.384.32-2.726.465-3.934.465-6.776%200-11.997-4.774-11.997-13.082%200-4.068%201.558-6.184%203.767-6.184%202.1%200%203.493%201.9%203.493%205.754%200%202.186-.575%204.59-1.01%206.01%200%200%202.093%203.677%207.804%202.547z%22%2F%3E%3C%2Fsvg%3E) +} +.Icon--verifiedWhite { + width:1.11111em; + background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2060%2072%22%3E%3Cpath%20fill%3D%22%23FFF%22%20d%3D%22M57%2037.288c0-4.07-2.25-7.59-5.523-9.26.397-1.12.613-2.328.613-3.598%200-5.683-4.394-10.283-9.818-10.283-1.212%200-2.368.216-3.436.64C37.246%2011.357%2033.886%209%2030%209c-3.885%200-7.242%202.357-8.837%205.787-1.066-.424-2.228-.64-3.434-.64-5.426%200-9.82%204.6-9.82%2010.283%200%201.27.217%202.478.612%203.598-3.27%201.67-5.52%205.192-5.52%209.26%200%203.84%202.01%207.193%204.99%208.96-.05.435-.082.874-.082%201.323%200%205.683%204.392%2010.284%209.818%2010.284%201.206%200%202.368-.218%203.434-.638C22.758%2060.644%2026.115%2063%2030%2063c3.887%200%207.246-2.356%208.837-5.784%201.068.42%202.224.638%203.436.638%205.423%200%209.818-4.6%209.818-10.283%200-.448-.034-.886-.085-1.322C54.98%2044.48%2057%2041.128%2057%2037.288zm-14.797-6.742s-14.558%2014.55-14.878%2014.872c-.546.548-1.263.823-1.98.823-.712%200-1.425-.27-1.97-.812l-6.53-6.498c-1.093-1.088-1.098-2.857-.01-3.95%201.087-1.095%202.856-1.098%203.95-.01l4.555%204.53%2012.914-12.906c1.09-1.09%202.86-1.09%203.95%200%201.09%201.093%201.09%202.86%200%203.952z%22%2F%3E%3C%2Fsvg%3E) +} +.Icon--heart { + width:.9375em; + background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2054%2072%22%3E%3Cpath%20class%3D%22icon%22%20fill%3D%22%238899a6%22%20d%3D%22M38.723%2012c-7.187%200-11.16%207.306-11.723%208.13-.563-.824-4.496-8.13-11.723-8.13C8.79%2012%203.533%2018.163%203.533%2024.647%203.533%2039.964%2021.89%2055.907%2027%2056c5.11-.093%2023.467-16.036%2023.467-31.353C50.467%2018.163%2045.21%2012%2038.723%2012z%22%2F%3E%3C%2Fsvg%3E) +} +.IconButton { + background-color:transparent +} +.Identity-name { + font-weight:700 +} +.Identity-screenName { + color:#667580; + color:#8899A6 +} +.Identity:focus { + text-decoration:none +} +.Identity:focus .Identity-name { + text-decoration:underline +} +.Identity--blended:focus,.Identity--blended:hover { + color:inherit +} +.Identity--blended .Identity-screenName { + color:inherit +} +.Identity--withInlineAvatar { + line-height:16px +} +.Identity--withInlineAvatar .Identity-avatar { + width:16px; + height:16px; + border-radius:2px; + vertical-align:top +} +.PrettyLink:focus { + text-decoration:none +} +.PrettyLink:focus .PrettyLink-value { + text-decoration:underline +} +.CroppedImage { + position:relative; + display:inline-block; + overflow:hidden +} +.CroppedImage-image { + position:absolute; + top:0; + left:0; + min-height:100%; + min-width:100% +} +.CroppedImage--fillHeight .CroppedImage-image { + height:100%; + width:auto +} +.CroppedImage--fillWidth .CroppedImage-image { + width:100%; + height:auto +} +.FilledIframe { + max-width:100%; + max-height:100% +} +.FilledIframe--upscale { + width:100%; + height:100% +} +.ImageGrid { + position:relative +} +.ImageGrid-image { + position:absolute; + width:50%; + padding-bottom:25%; + border:0 solid #fff; + -webkit-transform:rotate(0); + -moz-transform:rotate(0); + -ms-transform:rotate(0); + -o-transform:rotate(0); + transform:rotate(0) +} +.ImageGrid--2 .ImageGrid-image { + padding-bottom:50% +} +.ImageGrid--2 .ImageGrid-image-0 { + top:0; + left:0 +} +.ImageGrid--2 .ImageGrid-image-1 { + top:0; + right:0; + border-left-width:1px +} +.ImageGrid--3 .ImageGrid-image-0 { + float:left; + padding-bottom:50%; + top:0; + left:0 +} +.ImageGrid--3 .ImageGrid-image-1 { + top:0; + right:0; + border-left-width:1px +} +.ImageGrid--3 .ImageGrid-image-2 { + bottom:0; + right:0; + border-width:1px 0 0 1px +} +.ImageGrid--4 .ImageGrid-image-0 { + top:0; + left:0 +} +.ImageGrid--4 .ImageGrid-image-1 { + top:0; + right:0; + border-left-width:1px +} +.ImageGrid--4 .ImageGrid-image-2 { + bottom:0; + left:0; + border-top-width:1px +} +.ImageGrid--4 .ImageGrid-image-3 { + bottom:0; + right:0; + border-width:1px 0 0 1px +} +.ImageGrid--roundedTop.ImageGrid--2 .ImageGrid-image-0 { + border-top-left-radius:4px +} +.ImageGrid--roundedTop.ImageGrid--2 .ImageGrid-image-1 { + border-top-right-radius:4px +} +.ImageGrid--roundedTop.ImageGrid--3 .ImageGrid-image-0 { + border-top-left-radius:4px +} +.ImageGrid--roundedTop.ImageGrid--3 .ImageGrid-image-1 { + border-top-right-radius:4px +} +.ImageGrid--roundedTop.ImageGrid--4 .ImageGrid-image-0 { + border-top-left-radius:4px +} +.ImageGrid--roundedTop.ImageGrid--4 .ImageGrid-image-1 { + border-top-right-radius:4px +} +.ImageGrid--roundedBottom.ImageGrid--2 .ImageGrid-image-0 { + border-bottom-left-radius:4px +} +.ImageGrid--roundedBottom.ImageGrid--2 .ImageGrid-image-1 { + border-bottom-right-radius:4px +} +.ImageGrid--roundedBottom.ImageGrid--3 .ImageGrid-image-0 { + border-bottom-left-radius:4px +} +.ImageGrid--roundedBottom.ImageGrid--3 .ImageGrid-image-2 { + border-bottom-right-radius:4px +} +.ImageGrid--roundedBottom.ImageGrid--4 .ImageGrid-image-2 { + border-bottom-left-radius:4px +} +.ImageGrid--roundedBottom.ImageGrid--4 .ImageGrid-image-3 { + border-bottom-right-radius:4px +} +.PlayButton { + font-size:64px; + background-color:transparent +} +.PlayButton--centered { + margin-left:-32px; + margin-top:-32px +} +.NaturalImage { + position:relative +} +.NaturalImage-image { + max-width:100%; + max-height:100%; + border:0; + line-height:0; + height:auto +} +.NaturalImage-ctaOverlay { + position:absolute; + top:50%; + left:50% +} +.NaturalImage--rounded .NaturalImage-image,.NaturalImage--roundedTop .NaturalImage-image { + border-top-left-radius:4px; + border-top-right-radius:4px +} +.NaturalImage--rounded .NaturalImage-image,.NaturalImage--roundedBottom .NaturalImage-image { + border-bottom-left-radius:4px; + border-bottom-right-radius:4px +} +.NaturalImage--fill .NaturalImage-image { + width:100% +} +.MediaCard-media { + position:relative; + width:100%; + overflow:hidden +} +.MediaCard-widthConstraint { + max-width:100% +} +.MediaCard-mediaContainer { + position:relative; + padding-bottom:0; + background-color:#f5f8fa +} +.MediaCard-borderOverlay { + position:absolute; + top:0; + left:0; + z-index:10; + width:100%; + height:100%; + border:1px solid rgba(225,232,237,.75); + border-radius:4px 4px 0 0; + -moz-box-sizing:border-box; + box-sizing:border-box +} +.MediaCard-nsfwInfo { + display:none; + position:absolute; + top:0; + left:0; + z-index:30; + width:100%; + padding:0 14px; + -moz-box-sizing:border-box; + box-sizing:border-box; + text-align:center +} +.MediaCard-nsfwHeading { + margin:14px; + font-size:14px; + font-weight:700 +} +.MediaCard-dismissNsfw { + margin:14px +} +.MediaCard-mediaAsset { + display:block; + position:absolute; + top:0; + left:0; + width:100%; + height:100%; + line-height:0; + -webkit-transition:opacity .5s; + -moz-transition:opacity .5s; + -o-transition:opacity .5s; + transition:opacity .5s; + background-color:#fff +} +.MediaCard-mediaPlaceholder { + background:#f5f8fa +} +.MediaCard-actionControl { + position:absolute; + top:50%; + left:50% +} +.MediaCard-attributionOverlay { + position:absolute; + bottom:8px; + right:12px; + z-index:20; + padding:4px; + padding-right:8px; + border-radius:4px; + border:1px solid transparent; + background-color:rgba(0,0,0,.3); + color:#ddd; + text-shadow:0 0 2px rgba(0,0,0,.7); + font-size:12px; + line-height:18px; + -webkit-transition:background-color .3s ease-in; + -moz-transition:background-color .3s ease-in; + -o-transition:background-color .3s ease-in; + transition:background-color .3s ease-in +} +.MediaCard-attributionOverlay:hover { + background-color:#292F33; + border-color:#fff +} +.MediaCard-siteUser { + margin:0 0 14px +} +.MediaCard-bylineUser { + color:#667580; + margin:14px 0 +} +.MediaCard--mediaForward .MediaCard-media { + background-color:#f5f8fa +} +.MediaCard--mediaForward .MediaCard-widthConstraint { + margin:0 auto +} +.MediaCard.is-nsfw .MediaCard-nsfwInfo { + display:block +} +.MediaCard.is-nsfw .MediaCard-mediaAsset { + opacity:0 +} +.PrerenderedCard { + display:none; + height:0; + width:100%; + overflow:hidden +} +.PrerenderedCard.is-constrainedByMaxWidth { + display:block +} +.PrerenderedCard.is-loaded { + height:auto +} +.tcu-textMute,a.tcu-graylink { + color:#667580 +} +.timeline-Widget { + max-width:1200px; + background-color:#fff; + border-radius:4px +} +.SandboxRoot.var-chromeless .timeline-Widget { + background-color:transparent +} +.timeline-Body { + position:relative; + border-top:1px solid rgba(15,70,100,.12); + border-bottom:1px solid rgba(15,70,100,.12) +} +.timeline-Body-notification { + position:absolute; + top:0; + left:0; + right:0; + z-index:10 +} +.SandboxRoot.var-borderless .timeline-Body { + border:none +} +.timeline-Viewport { + overflow-x:hidden; + overflow-y:scroll +} +.SandboxRoot.var-fully-expanded .timeline-Viewport { + overflow-y:visible +} +.timeline-TweetList-tweet { + border-top:1px solid rgba(15,70,100,.12) +} +.timeline-TweetList-tweet:first-of-type { + border-top:none +} +.SandboxRoot.var-borderless .timeline-TweetList-tweet { + border:none +} +.timeline-Tweet { + padding:10px +} +.timeline-Tweet-retweetCredit { + margin-bottom:8px; + margin-left:18px; + font-size:12px; + color:#889ba6 +} +.timeline-Tweet-retweetCreditIcon { + position:relative; + top:1px; + display:inline-block; + margin-right:4px; + font-size:14px +} +.timeline-Tweet-author { + position:relative; + margin-bottom:2px; + padding-left:40px +} +.timeline-Tweet-brand { + font-size:15.4px +} +.timeline-Tweet-brand .Icon { + background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2072%2072%22%3E%3Cpath%20fill%3D%22none%22%20d%3D%22M0%200h72v72H0z%22%2F%3E%3Cpath%20class%3D%22icon%22%20fill%3D%22%23e1e8ed%22%20d%3D%22M68.812%2015.14c-2.348%201.04-4.87%201.744-7.52%202.06%202.704-1.62%204.78-4.186%205.757-7.243-2.53%201.5-5.33%202.592-8.314%203.176C56.35%2010.59%2052.948%209%2049.182%209c-7.23%200-13.092%205.86-13.092%2013.093%200%201.026.118%202.02.338%202.98C25.543%2024.527%2015.9%2019.318%209.44%2011.396c-1.125%201.936-1.77%204.184-1.77%206.58%200%204.543%202.312%208.552%205.824%2010.9-2.146-.07-4.165-.658-5.93-1.64-.002.056-.002.11-.002.163%200%206.345%204.513%2011.638%2010.504%2012.84-1.1.298-2.256.457-3.45.457-.845%200-1.666-.078-2.464-.23%201.667%205.2%206.5%208.985%2012.23%209.09-4.482%203.51-10.13%205.605-16.26%205.605-1.055%200-2.096-.06-3.122-.184%205.794%203.717%2012.676%205.882%2020.067%205.882%2024.083%200%2037.25-19.95%2037.25-37.25%200-.565-.013-1.133-.038-1.693%202.558-1.847%204.778-4.15%206.532-6.774z%22%2F%3E%3C%2Fsvg%3E) +} +.timeline-Tweet-text { + margin-left:40px; + margin-bottom:12px; + font-size:12px; + line-height:18px; + font-weight:400; + white-space:pre-wrap; + word-wrap:break-word +} +.timeline-Tweet-text[dir=ltr] { + text-align:left; + direction:ltr +} +.timeline-Tweet-text[dir=rtl] { + text-align:right; + direction:rtl +} +.timeline-Tweet-media { + margin-bottom:12px; + margin-left:40px; + font-size:12px +} +.timeline-Tweet-metadata { + float:right; + margin-top:2px +} +.timeline-Tweet-timestamp { + font-size:12px; + line-height:18px; + color:#e1e8ed +} +.timeline-Tweet-actions { + margin-left:40px +} +.timeline-Tweet-action { + display:inline-block; + font-size:17px +} +.timeline-Tweet-action+.timeline-Tweet-action { + margin-left:20px +} +.timeline-Tweet-withheldTitle { + margin-bottom:10px; + font-size:14px; + font-weight:700 +} +.timeline-Tweet-withheldReason { + font-size:12px +} +.timeline-Tweet--isRetweet { + padding-top:7px +} +.timeline-Tweet:hover { + background-color:rgba(160,200,220,.12) +} +.timeline-Tweet:hover .timeline-Tweet-brand .Icon { + background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2072%2072%22%3E%3Cpath%20fill%3D%22none%22%20d%3D%22M0%200h72v72H0z%22%2F%3E%3Cpath%20class%3D%22icon%22%20fill%3D%22%2355acee%22%20d%3D%22M68.812%2015.14c-2.348%201.04-4.87%201.744-7.52%202.06%202.704-1.62%204.78-4.186%205.757-7.243-2.53%201.5-5.33%202.592-8.314%203.176C56.35%2010.59%2052.948%209%2049.182%209c-7.23%200-13.092%205.86-13.092%2013.093%200%201.026.118%202.02.338%202.98C25.543%2024.527%2015.9%2019.318%209.44%2011.396c-1.125%201.936-1.77%204.184-1.77%206.58%200%204.543%202.312%208.552%205.824%2010.9-2.146-.07-4.165-.658-5.93-1.64-.002.056-.002.11-.002.163%200%206.345%204.513%2011.638%2010.504%2012.84-1.1.298-2.256.457-3.45.457-.845%200-1.666-.078-2.464-.23%201.667%205.2%206.5%208.985%2012.23%209.09-4.482%203.51-10.13%205.605-16.26%205.605-1.055%200-2.096-.06-3.122-.184%205.794%203.717%2012.676%205.882%2020.067%205.882%2024.083%200%2037.25-19.95%2037.25-37.25%200-.565-.013-1.133-.038-1.693%202.558-1.847%204.778-4.15%206.532-6.774z%22%2F%3E%3C%2Fsvg%3E) +} +.timeline-Tweet:hover .timeline-Tweet-timestamp { + color:#667580 +} +.timeline-Tweet:hover .timeline-Tweet-action .Icon--heart { + background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2054%2072%22%3E%3Cpath%20class%3D%22icon%22%20fill%3D%22%23667580%22%20d%3D%22M38.723%2012c-7.187%200-11.16%207.306-11.723%208.13-.563-.824-4.496-8.13-11.723-8.13C8.79%2012%203.533%2018.163%203.533%2024.647%203.533%2039.964%2021.89%2055.907%2027%2056c5.11-.093%2023.467-16.036%2023.467-31.353C50.467%2018.163%2045.21%2012%2038.723%2012z%22%2F%3E%3C%2Fsvg%3E) +} +.timeline-Tweet:hover .timeline-Tweet-action .Icon--share { + background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2056.8%2072%22%3E%3Cpath%20fill%3D%22none%22%20d%3D%22M0-.7h48v72H0z%22%2F%3E%3Cpath%20class%3D%22icon%22%20fill%3D%22%23667580%22%20d%3D%22M52.8%2032.9L42.2%2022.3c-1.4-1.4-3.6-1.4-5%200s-1.4%203.6%200%205l4.6%204.6H20.9c-1.9%200-3.5%201.6-3.5%203.5s1.6%203.5%203.5%203.5h20.9l-4.6%204.6c-1.4%201.4-1.4%203.6%200%205%20.7.7%201.6%201%202.5%201s1.8-.3%202.5-1l10.6-10.6c1.4-1.4%201.4-3.6%200-5z%22%2F%3E%3Cpath%20class%3D%22icon%22%20fill%3D%22%23667580%22%20d%3D%22M24.4%2049.4h-13c-.6%200-1.1-.5-1.2-1.1V22.4c0-.7.5-1.2%201.2-1.2h12.9c1.9%200%203.5-1.6%203.5-3.5s-1.6-3.5-3.5-3.5H8.9c-3.1%200-5.7%202.5-5.7%205.7v31c0%203.1%202.5%205.7%205.7%205.7h15.5c1.9%200%203.5-1.6%203.5-3.5.1-2.1-1.5-3.7-3.5-3.7z%22%2F%3E%3C%2Fsvg%3E) +} +.SandboxRoot.env-bp-min .timeline-Tweet { + padding:10px +} +.SandboxRoot.env-bp-min .timeline-Tweet-retweetCredit { + margin-left:0 +} +.SandboxRoot.env-bp-min .timeline-Tweet-retweetCreditIcon { + margin-right:0 +} +.SandboxRoot.env-bp-min .timeline-Tweet-author { + margin-top:1px; + padding-left:0 +} +.SandboxRoot.env-bp-min .timeline-Tweet-text { + margin-top:6px; + margin-left:0; + font-size:12px; + line-height:18px +} +.SandboxRoot.env-bp-min .timeline-Tweet-media { + margin-left:0 +} +.SandboxRoot.env-bp-min .timeline-Tweet-actions { + margin-left:0 +} +.SandboxRoot.env-bp-min .timeline-Tweet-withheldTitle { + font-size:12px +} +.SandboxRoot.env-bp-330 .timeline-Tweet-text { + font-size:14px; + line-height:18px +} +.SandboxRoot.env-bp-430 .timeline-Tweet-text { + font-size:18px; + line-height:24px; + font-weight:300 +} +.SandboxRoot.env-bp-550 .timeline-Tweet-text { + font-size:21px; + line-height:27px; + font-weight:300 +} +.SandboxRoot.env-bp-660 .timeline-Tweet-text { + font-size:27px; + line-height:36px; + font-weight:300 +} +.SandboxRoot.env-bp-820 .timeline-Tweet-text { + font-size:32px; + line-height:38px; + font-weight:300 +} +.SandboxRoot.env-bp-970 .timeline-Tweet-text { + font-size:37px; + line-height:50px; + font-weight:300 +} +.SandboxRoot.env-bp-550 .timeline-Tweet-author { + padding-left:44px +} +.SandboxRoot.env-bp-550 .timeline-Tweet-actions,.SandboxRoot.env-bp-550 .timeline-Tweet-media,.SandboxRoot.env-bp-550 .timeline-Tweet-text { + margin-left:44px +} +.SandboxRoot.env-bp-660 .timeline-Tweet-author,.SandboxRoot.env-bp-820 .timeline-Tweet-author { + padding-left:56px +} +.SandboxRoot.env-bp-660 .timeline-Tweet-actions,.SandboxRoot.env-bp-660 .timeline-Tweet-media,.SandboxRoot.env-bp-660 .timeline-Tweet-text,.SandboxRoot.env-bp-820 .timeline-Tweet-actions,.SandboxRoot.env-bp-820 .timeline-Tweet-media,.SandboxRoot.env-bp-820 .timeline-Tweet-text { + margin-left:56px +} +.SandboxRoot.env-bp-970 .timeline-Tweet-author { + padding-left:64px +} +.SandboxRoot.env-bp-970 .timeline-Tweet-actions,.SandboxRoot.env-bp-970 .timeline-Tweet-media,.SandboxRoot.env-bp-970 .timeline-Tweet-text { + margin-left:64px +} +.TweetAction:active,.TweetAction:focus,.TweetAction:hover { + text-decoration:none +} +.TweetAction--heart:active .Icon,.TweetAction--heart:focus .Icon,.TweetAction--heart:hover .Icon { + background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2054%2072%22%3E%3Cpath%20class%3D%22icon%22%20fill%3D%22%23e81c4f%22%20d%3D%22M38.723%2012c-7.187%200-11.16%207.306-11.723%208.13-.563-.824-4.496-8.13-11.723-8.13C8.79%2012%203.533%2018.163%203.533%2024.647%203.533%2039.964%2021.89%2055.907%2027%2056c5.11-.093%2023.467-16.036%2023.467-31.353C50.467%2018.163%2045.21%2012%2038.723%2012z%22%2F%3E%3C%2Fsvg%3E)!important +} +.TweetAction--share:active .Icon,.TweetAction--share:focus .Icon,.TweetAction--share:hover .Icon { + background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2056.8%2072%22%3E%3Cpath%20fill%3D%22none%22%20d%3D%22M0-.7h48v72H0z%22%2F%3E%3Cpath%20class%3D%22icon%22%20fill%3D%22%230084b4%22%20d%3D%22M52.8%2032.9L42.2%2022.3c-1.4-1.4-3.6-1.4-5%200s-1.4%203.6%200%205l4.6%204.6H20.9c-1.9%200-3.5%201.6-3.5%203.5s1.6%203.5%203.5%203.5h20.9l-4.6%204.6c-1.4%201.4-1.4%203.6%200%205%20.7.7%201.6%201%202.5%201s1.8-.3%202.5-1l10.6-10.6c1.4-1.4%201.4-3.6%200-5z%22%2F%3E%3Cpath%20class%3D%22icon%22%20fill%3D%22%230084b4%22%20d%3D%22M24.4%2049.4h-13c-.6%200-1.1-.5-1.2-1.1V22.4c0-.7.5-1.2%201.2-1.2h12.9c1.9%200%203.5-1.6%203.5-3.5s-1.6-3.5-3.5-3.5H8.9c-3.1%200-5.7%202.5-5.7%205.7v31c0%203.1%202.5%205.7%205.7%205.7h15.5c1.9%200%203.5-1.6%203.5-3.5.1-2.1-1.5-3.7-3.5-3.7z%22%2F%3E%3C%2Fsvg%3E)!important +} +.TweetAuthor { + max-width:100%; + overflow:hidden!important; + text-overflow:ellipsis!important; + white-space:nowrap!important; + word-wrap:normal!important +} +.TweetAuthor-avatar { + position:absolute; + top:0; + left:0; + width:32px; + height:32px; + overflow:hidden; + border-radius:4px +} +.TweetAuthor-name { + font-size:12px; + line-height:18px; + font-weight:700 +} +.TweetAuthor-screenName { + font-size:12px; + line-height:18px; + font-weight:300 +} +.SandboxRoot.env-bp-min .TweetAuthor-avatar { + position:static; + top:auto; + left:auto; + float:left; + margin-right:8px +} +.SandboxRoot.env-bp-min .TweetAuthor-screenName:before { + white-space:pre; + content:"\A\200e" +} +.SandboxRoot.env-bp-330 .TweetAuthor-name,.SandboxRoot.env-bp-430 .TweetAuthor-name,.SandboxRoot.env-bp-550 .TweetAuthor-name { + font-size:14px; + line-height:18px +} +.SandboxRoot.env-bp-330 .TweetAuthor-screenName,.SandboxRoot.env-bp-430 .TweetAuthor-screenName,.SandboxRoot.env-bp-550 .TweetAuthor-screenName { + font-size:13px; + line-height:18px +} +.SandboxRoot.env-bp-660 .TweetAuthor-name,.SandboxRoot.env-bp-820 .TweetAuthor-name,.SandboxRoot.env-bp-970 .TweetAuthor-name { + font-size:18px; + line-height:27px +} +.SandboxRoot.env-bp-660 .TweetAuthor-screenName,.SandboxRoot.env-bp-820 .TweetAuthor-screenName,.SandboxRoot.env-bp-970 .TweetAuthor-screenName { + font-size:14px; + line-height:18px +} +.SandboxRoot.env-bp-550 .TweetAuthor-avatar { + width:36px; + height:36px +} +.SandboxRoot.env-bp-660 .TweetAuthor-avatar,.SandboxRoot.env-bp-820 .TweetAuthor-avatar { + width:48px; + height:48px +} +.SandboxRoot.env-bp-970 .TweetAuthor-avatar { + width:56px; + height:56px +} +.timeline-ShareMenu { + position:relative +} +.timeline-ShareMenu-container { + position:absolute; + left:-18px; + z-index:1000; + display:none; + padding-bottom:4px; + min-width:130px; + background-color:#fff; + border:1px solid transparent; + border-radius:4px; + box-shadow:0 0 4px rgba(0,0,0,.25) +} +.timeline-ShareMenu-caret,.timeline-ShareMenu-caret:after { + position:absolute; + display:block; + width:0; + height:0; + border-color:transparent; + border-style:solid +} +.timeline-ShareMenu-caret { + left:25px; + margin-left:-9px; + border-width:9px +} +.timeline-ShareMenu-caret:after { + margin-left:-8px; + border-width:8px; + content:"" +} +.timeline-ShareMenu-title { + padding:10px 15px 5px 15px; + font-size:12px; + font-weight:300; + color:#667580 +} +.timeline-ShareMenu-option { + display:inline-block; + width:100%; + padding:2px 15px; + font-size:14px; + color:#292F33!important; + -moz-box-sizing:border-box; + box-sizing:border-box; + white-space:nowrap +} +.timeline-ShareMenu-option:focus,.timeline-ShareMenu-option:hover { + color:#fff!important; + background-color:#3b94d9; + text-decoration:none!important +} +.timeline-ShareMenu.is-openedAbove .timeline-ShareMenu-container { + bottom:100%; + display:block; + margin-bottom:10px +} +.timeline-ShareMenu.is-openedAbove .timeline-ShareMenu-caret { + bottom:-9px; + border-bottom-width:0; + border-top-color:rgba(15,70,100,.12) +} +.timeline-ShareMenu.is-openedAbove .timeline-ShareMenu-caret:after { + content:" "; + bottom:1px; + border-bottom-width:0; + border-top-color:#fff +} +.timeline-ShareMenu.is-openedBelow .timeline-ShareMenu-container { + top:100%; + display:block; + margin-top:10px +} +.timeline-ShareMenu.is-openedBelow .timeline-ShareMenu-caret { + top:-9px; + border-top-width:0; + border-bottom-color:rgba(15,70,100,.12) +} +.timeline-ShareMenu.is-openedBelow .timeline-ShareMenu-caret:after { + content:" "; + top:1px; + border-top-width:0; + border-bottom-color:#fff +} +.SandboxRoot.env-bp-min .timeline-ShareMenu-option { + font-size:12px +} +.timeline-ShowMoreButton { + -moz-box-sizing:border-box; + box-sizing:border-box; + display:block; + padding:10px 0; + margin:0; + width:100%; + font-size:14px; + color:#3b94d9; + text-align:center; + background-color:#f5f8fa; + border:0; + outline:0; + cursor:pointer +} +.timeline-ShowMoreButton:focus,.timeline-ShowMoreButton:hover { + background-color:#f5f8fa; + text-decoration:underline +} +.SandboxRoot.env-bp-min .timeline-ShowMoreButton { + font-size:12px +} +.timeline-NewTweetsNotification { + display:none; + border-bottom:1px solid rgba(15,70,100,.12); + opacity:0 +} +.timeline-NewTweetsNotification.is-displayed { + display:block +} +.timeline-NewTweetsNotification.is-opaque { + opacity:1 +} +.timeline-LoadMore-prompt { + border-top:1px solid rgba(15,70,100,.12) +} +.timeline-LoadMore-endOfTimelineMessage { + display:none; + padding:10px 0 40px 0; + font-size:12px; + text-align:center +} +.timeline-LoadMore.is-atEndOfTimeline .timeline-LoadMore-prompt { + display:none +} +.timeline-LoadMore.is-atEndOfTimeline .timeline-LoadMore-endOfTimelineMessage { + display:block +} +.SandboxRoot.var-static .timeline-LoadMore { + display:none +} +.timeline-EmptyMessage { + width:100%; + padding:20px 10px 0 10px; + text-align:center; + -moz-box-sizing:border-box; + box-sizing:border-box +} +.timeline-EmptyMessage-message { + margin-bottom:10px; + font-size:16.8px +} +.SandboxRoot.env-bp-min .timeline-EmptyMessage-message { + font-size:14.4px +} +.timeline-Header { + padding:10px +} +.timeline-Header-title { + font-size:21px; + font-weight:300; + line-height:24px; + color:#292F33 +} +.timeline-Header-byline { + font-size:12px; + font-weight:400; + line-height:16px; + color:#8899A6 +} +.timeline-Header-subtitle { + margin-top:5px; + font-size:12px; + font-weight:400; + line-height:16px; + color:#8899A6 +} +.timeline-Header-description { + margin-top:5px; + font-size:12px; + line-height:18px; + color:#8899A6 +} +.SandboxRoot.var-headerless .timeline-Header { + display:none +} +.SandboxRoot.env-bp-430 .timeline-Header-title,.SandboxRoot.env-bp-550 .timeline-Header-title { + font-size:27px; + line-height:36px +} +.SandboxRoot.env-bp-660 .timeline-Header-title,.SandboxRoot.env-bp-820 .timeline-Header-title { + font-size:32px; + line-height:38px +} +.SandboxRoot.env-bp-970 .timeline-Header-title { + font-size:37px; + line-height:50px +} +.SandboxRoot.env-bp-660 .timeline-Header-byline,.SandboxRoot.env-bp-660 .timeline-Header-subtitle,.SandboxRoot.env-bp-820 .timeline-Header-byline,.SandboxRoot.env-bp-820 .timeline-Header-subtitle,.SandboxRoot.env-bp-970 .timeline-Header-byline,.SandboxRoot.env-bp-970 .timeline-Header-subtitle { + font-size:14px; + line-height:18px +} +.SandboxRoot.env-bp-330 .timeline-Header-description,.SandboxRoot.env-bp-430 .timeline-Header-description,.SandboxRoot.env-bp-550 .timeline-Header-description { + font-size:14px; + line-height:18px +} +.SandboxRoot.env-bp-660 .timeline-Header-description { + font-size:16px; + line-height:21px +} +.SandboxRoot.env-bp-820 .timeline-Header-description,.SandboxRoot.env-bp-970 .timeline-Header-description { + font-size:18px; + line-height:27px +} +.timeline-Footer { + padding:15px; + font-size:12px +} +.SandboxRoot.var-footerless .timeline-Footer { + display:none +} +.Icon--heart { + background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2054%2072%22%3E%3Cpath%20class%3D%22icon%22%20fill%3D%22%23e1e8ed%22%20d%3D%22M38.723%2012c-7.187%200-11.16%207.306-11.723%208.13-.563-.824-4.496-8.13-11.723-8.13C8.79%2012%203.533%2018.163%203.533%2024.647%203.533%2039.964%2021.89%2055.907%2027%2056c5.11-.093%2023.467-16.036%2023.467-31.353C50.467%2018.163%2045.21%2012%2038.723%2012z%22%2F%3E%3C%2Fsvg%3E) +} +.Icon--share { + width:.98611em; + background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2056.8%2072%22%3E%3Cpath%20fill%3D%22none%22%20d%3D%22M0-.7h48v72H0z%22%2F%3E%3Cpath%20class%3D%22icon%22%20fill%3D%22%23e1e8ed%22%20d%3D%22M52.8%2032.9L42.2%2022.3c-1.4-1.4-3.6-1.4-5%200s-1.4%203.6%200%205l4.6%204.6H20.9c-1.9%200-3.5%201.6-3.5%203.5s1.6%203.5%203.5%203.5h20.9l-4.6%204.6c-1.4%201.4-1.4%203.6%200%205%20.7.7%201.6%201%202.5%201s1.8-.3%202.5-1l10.6-10.6c1.4-1.4%201.4-3.6%200-5z%22%2F%3E%3Cpath%20class%3D%22icon%22%20fill%3D%22%23e1e8ed%22%20d%3D%22M24.4%2049.4h-13c-.6%200-1.1-.5-1.2-1.1V22.4c0-.7.5-1.2%201.2-1.2h12.9c1.9%200%203.5-1.6%203.5-3.5s-1.6-3.5-3.5-3.5H8.9c-3.1%200-5.7%202.5-5.7%205.7v31c0%203.1%202.5%205.7%205.7%205.7h15.5c1.9%200%203.5-1.6%203.5-3.5.1-2.1-1.5-3.7-3.5-3.7z%22%2F%3E%3C%2Fsvg%3E) +} +.wvp-player-container iframe { + width:100%; + height:100%; + position:absolute; + top:0; + left:0 +} +.SandboxRoot.env-bp-min { + font-size:12px +} diff --git a/bigbluebutton-client/resources/prod/help/screenshare-help.html b/bigbluebutton-client/resources/prod/help/screenshare-help.html new file mode 100755 index 0000000000000000000000000000000000000000..7a6d7548bcc62011d354eb934d86a334e2642a29 --- /dev/null +++ b/bigbluebutton-client/resources/prod/help/screenshare-help.html @@ -0,0 +1,584 @@ +<!DOCTYPE html> +<html lang="en-US"> +<head> +<meta charset="UTF-8"> + +<meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1"> + +<title> Videos</title> + +<link rel="alternate" type="application/rss+xml" title="BigBluebutton RSS Feed" href="http://bigbluebutton.org/feed/"> + + <link rel="stylesheet" href="http://bigbluebutton.org/wp-content/themes/suco/themify/css/shortcodes.css" type="text/css" media="screen"> + +<link href="http://bigbluebutton.org/wp-content/themes/suco-child/style.css" rel="stylesheet" type="text/css"> + +<!-- google font --> +<link href="http://fonts.googleapis.com/css?family=Rokkitt&v1" rel="stylesheet" type="text/css"> + +<!-- media queries --> +<link rel="stylesheet" href="http://bigbluebutton.org/wp-content/themes/suco/media-queries.css" type="text/css"> + +<!-- media-queries.js (fallback) --> +<!--[if lt IE 9]> + <script src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script> +<![endif]--> + +<!-- html5.js --> +<!--[if lt IE 9]> + <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> +<![endif]--> + +<!-- jquery --> +<script src="http://platform.twitter.com/widgets.js" id="twitter-wjs"></script><script src="http://www.google-analytics.com/ga.js" async="" type="text/javascript"></script><script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> + +<!-- audio player --> +<script type="text/javascript" src="http://bigbluebutton.org/wp-content/themes/suco/js/audio-player.js"></script> +<script type="text/javascript"> + AudioPlayer.setup("http://bigbluebutton.org/wp-content/themes/suco/player.swf", { + width: '90%', + transparentpagebg: 'yes' + }); +</script> + +<!-- comment-reply js --> + +<!-- wp_header --> + <script type="text/javascript"> + window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/72x72\/","ext":".png","source":{"concatemoji":"http:\/\/bigbluebutton.org\/wp-includes\/js\/wp-emoji-release.min.js?ver=21e517e0ddb856c019dcb251670c2be4"}}; + !function(a,b,c){function d(a){var c,d,e,f=b.createElement("canvas"),g=f.getContext&&f.getContext("2d"),h=String.fromCharCode;if(!g||!g.fillText)return!1;switch(g.textBaseline="top",g.font="600 32px Arial",a){case"flag":return g.fillText(h(55356,56806,55356,56826),0,0),f.toDataURL().length>3e3;case"diversity":return g.fillText(h(55356,57221),0,0),c=g.getImageData(16,16,1,1).data,d=c[0]+","+c[1]+","+c[2]+","+c[3],g.fillText(h(55356,57221,55356,57343),0,0),c=g.getImageData(16,16,1,1).data,e=c[0]+","+c[1]+","+c[2]+","+c[3],d!==e;case"simple":return g.fillText(h(55357,56835),0,0),0!==g.getImageData(16,16,1,1).data[0];case"unicode8":return g.fillText(h(55356,57135),0,0),0!==g.getImageData(16,16,1,1).data[0]}return!1}function e(a){var c=b.createElement("script");c.src=a,c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g,h,i;for(i=Array("simple","flag","unicode8","diversity"),c.supports={everything:!0,everythingExceptFlag:!0},h=0;h<i.length;h++)c.supports[i[h]]=d(i[h]),c.supports.everything=c.supports.everything&&c.supports[i[h]],"flag"!==i[h]&&(c.supports.everythingExceptFlag=c.supports.everythingExceptFlag&&c.supports[i[h]]);c.supports.everythingExceptFlag=c.supports.everythingExceptFlag&&!c.supports.flag,c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.everything||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings); + </script> + <style type="text/css"> +img.wp-smiley, +img.emoji { + display: inline !important; + border: none !important; + box-shadow: none !important; + height: 1em !important; + width: 1em !important; + margin: 0 .07em !important; + vertical-align: -0.1em !important; + background: none !important; + padding: 0 !important; +} +</style> +<link rel="stylesheet" id="fbComments_hideWpComments-css" href="http://bigbluebutton.org/wp-content/plugins/facebook-comments-for-wordpress/css/facebook-comments-hidewpcomments.css?ver=3.1.3" type="text/css" media="all"> +<link rel="stylesheet" id="fbc_rc_widgets-style-css" href="http://bigbluebutton.org/wp-content/plugins/facebook-comments-for-wordpress/css/facebook-comments-widgets.css?ver=21e517e0ddb856c019dcb251670c2be4" type="text/css" media="all"> +<link rel="stylesheet" id="digg-digg-css" href="http://bigbluebutton.org/wp-content/plugins/digg-digg/css/diggdigg-style.css?ver=5.3.6" type="text/css" media="screen"> +<script type="text/javascript" src="http://bigbluebutton.org/wp-includes/js/jquery/jquery.js?ver=1.12.4"></script> +<script type="text/javascript" src="http://bigbluebutton.org/wp-includes/js/jquery/jquery-migrate.min.js?ver=1.4.1"></script> +<script type="text/javascript" src="http://bigbluebutton.org/wp-content/plugins/mailchimp-widget/js/mailchimp-widget-min.js?ver=21e517e0ddb856c019dcb251670c2be4"></script> +<link rel="https://api.w.org/" href="http://bigbluebutton.org/wp-json/"> +<link rel="EditURI" type="application/rsd+xml" title="RSD" href="http://bigbluebutton.org/xmlrpc.php?rsd"> +<link rel="wlwmanifest" type="application/wlwmanifest+xml" href="http://bigbluebutton.org/wp-includes/wlwmanifest.xml"> + +<link rel="canonical" href="http://bigbluebutton.org/videos/"> +<link rel="shortlink" href="http://bigbluebutton.org/?p=6"> +<link rel="alternate" type="application/json+oembed" href="http://bigbluebutton.org/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fbigbluebutton.org%2Fvideos%2F"> +<link rel="alternate" type="text/xml+oembed" href="http://bigbluebutton.org/wp-json/oembed/1.0/embed?url=http%3A%2F%2Fbigbluebutton.org%2Fvideos%2F&format=xml"> +<script type="text/javascript"> +(function(url){ + if(/(?:Chrome\/26\.0\.1410\.63 Safari\/537\.31|WordfenceTestMonBot)/.test(navigator.userAgent)){ return; } + var addEvent = function(evt, handler) { + if (window.addEventListener) { + document.addEventListener(evt, handler, false); + } else if (window.attachEvent) { + document.attachEvent('on' + evt, handler); + } + }; + var removeEvent = function(evt, handler) { + if (window.removeEventListener) { + document.removeEventListener(evt, handler, false); + } else if (window.detachEvent) { + document.detachEvent('on' + evt, handler); + } + }; + var evts = 'contextmenu dblclick drag dragend dragenter dragleave dragover dragstart drop keydown keypress keyup mousedown mousemove mouseout mouseover mouseup mousewheel scroll'.split(' '); + var logHuman = function() { + var wfscr = document.createElement('script'); + wfscr.type = 'text/javascript'; + wfscr.async = true; + wfscr.src = url + '&r=' + Math.random(); + (document.getElementsByTagName('head')[0]||document.getElementsByTagName('body')[0]).appendChild(wfscr); + for (var i = 0; i < evts.length; i++) { + removeEvent(evts[i], logHuman); + } + }; + for (var i = 0; i < evts.length; i++) { + addEvent(evts[i], logHuman); + } +})('//bigbluebutton.org/?wordfence_logHuman=1&hid=4A32C1A289EB14E197561B7A60F05460'); +</script> + +<style type="text/css"> +#headerwrap { +background-image: none; +background-color: #dbebf6; +} + +#nav-bar { +background-image: url(http://r2.bigbluebutton.org/wp-content/themes/suco/uploads/bg/bg1.png); +background-color: #30406b; +background-repeat: repeat-x; +} + +#upperwrap { +background-image: url(http://r2.bigbluebutton.org/wp-content/themes/suco/uploads/bg/bg1.png); +background-color: #F4F4F4 ; +} + +.home-highlightswrap { +background-image: none; +background-color: #fff; +} + +#body { +background-image: none; +background-color: #ffffff; +} + +.footer-widgetswrap { +background-image: none; +background-color: #262626; +} + +#footerwrap { +background-image: none; +background-color: #2a2a2a; +} + +h1 { +font-family: Arial, Helvetica, sans-serif; +color: #00445e; +} + +h2 { +font-family: Arial, Helvetica, sans-serif; +color: #00445e; +} + +h3 { +font-family: Arial, Helvetica, sans-serif; +color: #00445e; +} + +h4 { +font-family: Arial, Helvetica, sans-serif; +color: #30406b; +} + +h5 { +font-family: Arial, Helvetica, sans-serif; +color: #30406b; +} + +h6 { +font-family: Arial, Helvetica, sans-serif; +} + +#main-nav a:hover, #main-nav li:hover > a { +color: #fff; +} + +#main-nav .current_page_item a, #main-nav .current-menu-item a { +color: #fff; +background-color: #1a243f; +} + +</style> + +<link href="http://www.bigbluebutton.org/wp-content/themes/suco/uploads/favicon/favicon.png" rel="shortcut icon"> + + + +<!-- custom css --> + +<style type="text/css">.home-highlights .home-highlights-content { +overflow: hidden; +margin-bottom: 20px; +color: #464646; +} + +.home-highlights h4 { +margin: 0; +font-size: 160%; +line-height: 120%; +color: #30406b; +} + +h1, h2, h3, h4, h5, h6 { +font-family: 'Open Sans', sans-serif !important; + +} + +h1.overview { +font-family: "Open Sans","Lucida Grande","Lucida Sans Unicode",Helvetica,Arial,sans-serif; + +} + +img.aligncenter { +padding: 2px; +} + +span.post-comment iframe { + width:150px !important; +} + +.post-meta .post-comment{ + background: none!important; + padding-left:0px; +}</style> +<script type="text/javascript"> + + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-9394204-1']); + _gaq.push(['_trackPageview']); + + (function() { + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); + })(); + +</script> + + +<script src="//bigbluebutton.org/?wordfence_logHuman=1&hid=4A32C1A289EB14E197561B7A60F05460&r=0.7928567202447322" async="" type="text/javascript"></script><script src="https://platform.twitter.com/js/timeline.d5ee0c695f13b8ee1c5f4f85a8c10e39.js" async="" charset="utf-8" type="text/javascript"></script></head> +<body class="page page-id-6 page-template-default"> + +<div id="pagewrap"> + +<div id="headerwrap"> + + <header id="header" class="pagewidth"> + <hgroup> + <div id="site-logo"><a href="http://bigbluebutton.org"><img src="http://bigbluebutton.org/wp-content/themes/suco/themify/img.php?src=/wp-content/uploads/2011/12/logo.png&w=330&h=71" alt="BigBluebutton" height="71" width="330"></a></div> + <h2 id="site-description"></h2> + </hgroup> + + <nav> + <ul id="main-nav" class="main-nav"><li id="menu-item-30" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-30"><a href="http://bigbluebutton.org/">Home</a></li> +<li id="menu-item-2665" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-ancestor current-menu-parent current_page_parent current_page_ancestor menu-item-has-children menu-item-2665"><a href="http://bigbluebutton.org/overview/">Overview</a> +<ul class="sub-menu"> +<li id="menu-item-2667" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-2667"><a href="http://bigbluebutton.org/overview/">Overview</a></li> +<li id="menu-item-1424" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-6 current_page_item menu-item-1424"><a href="http://bigbluebutton.org/videos/">Videos</a></li> +<li id="menu-item-3083" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3083"><a href="http://bigbluebutton.org/accessibility/">Accessibility</a></li> +<li id="menu-item-1538" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1538"><a href="http://bigbluebutton.org/history/">History of BigBlueButton</a></li> +</ul> +</li> +<li id="menu-item-18" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-18"><a href="http://demo.bigbluebutton.org/">Demo</a></li> +<li id="menu-item-494" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-494"><a href="http://bigbluebutton.org/support/">Support</a> +<ul class="sub-menu"> +<li id="menu-item-1088" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1088"><a href="http://bigbluebutton.org/support/">Support</a></li> +<li id="menu-item-231" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-231"><a href="http://bigbluebutton.org/components/">Open Source Components</a></li> +<li id="menu-item-1614" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1614"><a href="http://bigbluebutton.org/open-source-integrations/">Open Source Integrations</a></li> +<li id="menu-item-713" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-713"><a href="http://bigbluebutton.org/commercial-support/">Commercial Support</a></li> +</ul> +</li> +<li id="menu-item-337" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-337"><a href="http://bigbluebutton.org/blog/">Blog</a></li> +<li id="menu-item-716" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children menu-item-716"><a href="http://bigbluebutton.org/foundation/">License</a> +<ul class="sub-menu"> +<li id="menu-item-731" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-731"><a href="http://bigbluebutton.org/trademark/">Trademark</a></li> +<li id="menu-item-3077" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3077"><a href="http://bigbluebutton.org/open-source-license/">Open Source License</a></li> +</ul> +</li> +<li id="menu-item-1163" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1163"><a href="http://docs.bigbluebutton.org/">Docs</a></li> +</ul> <!-- /#main-nav --> + </nav> + + + <div class="social-widget"> + <div id="text-6" class="widget widget_text"><strong class="widgettitle">Follow Us</strong> <div class="textwidget"><ul class="links-list"> +<li><a href="http://facebook.com/bigbluebutton" title="BigBlueButton Facebook Page" target="_BLANK"><img src="/wp-content/uploads/2011/12/facebook.png" alt="Facebook"></a></li> +<li><a href="https://twitter.com/bigbluebutton" title="BigBlueButton Twitter Page" target="_BLANK"><img src="/wp-content/uploads/2011/12/twitter.png" alt="Twitter"></a></li> +<li><a href="http://www.youtube.com/bigbluebuttonshare" title="BigBlueButton YouTube Page" target="_BLANK"><img src="/wp-content/uploads/2011/12/youtube_icon.png" alt="YouTube"></a></li> +<li><a href="https://plus.google.com/b/108594579970371808676/108594579970371808676/posts" title="BigBlueButton Google Plus Page" target="_BLANK"><img src="/wp-content/uploads/2012/07/googleplus.png" alt="Google Plus"></a></li> +<!-- <li><a href="http://flickr.com" title="BigBlueButton Flickr Page"><img src="/wp-content/uploads/2011/12/flickr.png" alt="Flickr"></a></li> --> +</ul> +</div> + </div> + <div class="rss"><a href="http://bigbluebutton.org/feed/">RSS</a></div> + </div> + <!-- /.social-widget --> + + <div class="header-widget"> + </div> + <!-- /.header-widget --> + + </header> + <!-- /#header --> + + <div id="nav-bar"> + </div> + <!-- /#nav-bar --> + +</div> +<!-- /.headerwrap --> + +<div id="body" class="clearfix"> +<div id="upperwrap"> + + + + + + + <div class="pagewidth"> + <h1 class="page-title">Videos</h1> + </div> + + <!-- /.page-title --> + + + +</div> +<!-- /#upperwrap --> + + + + + + + + +<!-- layout-container --> +<div id="layout" class="pagewidth clearfix sidebar-none"> + +<!-- content --> +<div id="content"> + +<div class="clearfix"></div> +<h2><strong> Desktop Sharing Tutorial Videos (1.1)</strong></h2> +<p>The following videos give you an overview of using Desktop Sharing in BigBlueButton.</p> +<div class="shortcode col3-1 first"><a class="lightbox" title="Desktop Sharing on Windows using Internet Explorer" href="https://www.youtube.com/watch?v=w0qei2-uDpI" rel="prettyPhoto"><img title="Desktop Sharing on Windows using Internet Explorer" src="/wp-content/uploads/2013/06/p-overview-081.png" alt="Desktop Sharing on Windows using Internet Explorer" width="285"></a><p></p> +<h5>Desktop Sharing on Windows using Internet Explorer</h5> +<p>This video gives you an overview of how to use desktop sharing on Windows OS using Internet Explorer.</p> +<p><a class="shortcode button green lightbox" title="Desktop Sharing on Windows using Internet Explorer" href="https://www.youtube.com/watch?v=w0qei2-uDpI" rel="prettyPhoto">Play Video </a> +</p></div> +<div class="shortcode col3-1"><a class="lightbox" title="Desktop Sharing on Windows using Firefox" href="https://www.youtube.com/watch?v=7ZuunBQbmj8" rel="prettyPhoto"><img title="Desktop Sharing on Windows using Firefox" src="/wp-content/uploads/2013/06/p-overview-081.png" alt="Desktop Sharing on Windows using Firefox" width="285"></a><p></p> +<h5>Desktop Sharing on Windows using Firefox</h5> +<p>This video gives you an overview of how to use desktop sharing on Windows OS using Firefox.</p> +<p><a class="shortcode button green lightbox" title="Desktop Sharing on Windows using Firefox" href="https://www.youtube.com/watch?v=7ZuunBQbmj8" rel="prettyPhoto">Play Video </a> +</p></div> +<div class="shortcode col3-1"><a class="lightbox" title="Desktop Sharing on Windows using Chrome" href="https://www.youtube.com/watch?v=bx9Tupfro_I" rel="prettyPhoto"><img title="Desktop Sharing on Windows using Chrome" src="/wp-content/uploads/2013/06/p-overview-081.png" alt="Desktop Sharing on Windows using Chrome" width="285"></a><p></p> +<h5>Desktop Sharing on Windows using Chrome</h5> +<p>This video gives you an overview of how to use desktop sharing on Windows OS using Chrome.</p> +<p><a class="shortcode button green lightbox" title="Desktop Sharing on Windows using Chrome" href="https://www.youtube.com/watch?v=bx9Tupfro_I" rel="prettyPhoto">Play Video </a> +</p></div> +<div class="shortcode col3-1 first"><a class="lightbox" title="Desktop Sharing on Mac OS X using Chrome" href="https://www.youtube.com/watch?v=Xezw2moXZQE" rel="prettyPhoto"><img title="Desktop Sharing on Mac OS X using Chrome" src="/wp-content/uploads/2013/06/p_student-081.png" alt="Desktop Sharing on Mac OS X using Chrome" width="285"></a><p></p> +<h5>Desktop Sharing on Mac OS X using Chrome</h5> +<p>This video gives you an overview of using desktop sharing on Mac OS X using Chrome.</p> +<p><a class="shortcode button green lightbox" title="Desktop Sharing on Mac OS X using Chrome" href="https://www.youtube.com/watch?v=Xezw2moXZQE" rel="prettyPhoto">Play Video </a> +</p></div> +<div class="shortcode col3-1"><a class="lightbox" title="Desktop Sharing on Mac OS X using Safari" href="https://www.youtube.com/watch?v=SmIMd8abeec" rel="prettyPhoto"><img title="Desktop Sharing on Mac OS X using Safari" src="/wp-content/uploads/2011/12/safari_new.png" alt="Desktop Sharing on Mac OS X using Safari" width="285"></a><p></p> +<h5>Desktop Sharing on Mac OS X using Safari</h5> +<p>This video gives you an overview of using desktop sharing on Mac OS X using Safari.</p> +<p><a class="shortcode button green lightbox" title="Desktop Sharing on Mac OS X using Safari" href="https://www.youtube.com/watch?v=SmIMd8abeec" rel="prettyPhoto">Play Video </a></p> +</div> +<div class="shortcode col3-1"><a class="lightbox" title="Desktop Sharing on Mac OS X using FireFox" href="https://www.youtube.com/watch?v=FmTJOB4SODc" rel="prettyPhoto"><img title="Desktop Sharing on Mac OS X using FireFox" src="/wp-content/uploads/2011/12/macosx-firefox.png" alt="Desktop Sharing on Mac OS X using FireFox" width="285"></a><p></p> +<h5>Desktop Sharing on Mac OS X using FireFox</h5> +<p>This video gives you an overview of using desktop sharing on Mac OS X using FireFox.</p> +<p><a class="shortcode button green lightbox" title="Desktop Sharing on Mac OS X using FireFox" href="https://www.youtube.com/watch?v=FmTJOB4SODc" rel="prettyPhoto">Play Video </a></p> +</div> +<p><!-- + +<a class="lightbox" title="Viewer Overview" href="http://www.youtube.com/watch?v=4C-rOd8bi6s&width=800&height=600" rel="prettyPhoto"><img title="Viewer Overview" src="/wp-content/uploads/2013/06/dev-08.png" alt="Student Overview" width="285" /></a> + +<h5>Developer Overview</h5> + + +This video gives you an overview of setting up BigBlueButton. + +<a class="shortcode button green lightbox" title="Viewer Overview" href="http://www.youtube.com/watch?v=4C-rOd8bi6s&width=800&height=600" rel="prettyPhoto">Play Video </a> + + + +<div id="vid_tut"> + +<h2><strong> Tutorial Videos (0.8)</strong></h2> + + +The BigBlueButton community wants to make the process of learning and understanding our open source web conferencing software as easy as possible. Therefore, we have created the following “How-To†videos. + +<div class="shortcode col3-1 first"><a class="lightbox" title="BigBlueButton Teacher Overview" href="http://www.youtube.com/watch?v=S4eNl9Afipo?width=800&height=600" rel="prettyPhoto"><img title="Teacher Overview" src="/wp-content/uploads/2013/06/teacher-overview-0.8.png" alt="Teacher Overview" width="285" /></a> + +<h5>Teacher Overview</h5> + + +This video shows you how to present information to remote students using BigBlueButton. + +<a class="shortcode button green lightbox" title="BigBlueButton Teacher Overview" href="http://www.youtube.com/watch?v=S4eNl9Afipo" rel="prettyPhoto">Play Video </a> + +</div> + + + +<div class="shortcode col3-1"><a class="lightbox" title="BigBlueButton Student Overview" href="http://www.youtube.com/watch?v=U8P9RJDk42M&width=800&height=600" rel="prettyPhoto"><img title="Student Overview" src="/wp-content/uploads/2013/06/student-overview-08.png" alt="Student Overview" width="285" /></a> + +<h5>Student Overview</h5> + + +Student tutorial video for BigBlueButton. Here you will be given an overview of the open source software and a break down of all the individual modules. + +<a class="shortcode button green lightbox" title="BigBlueButton Student Overview" href="http://www.youtube.com/watch?v=U8P9RJDk42M&width=800&height=600" rel="prettyPhoto">Play Video </a> + +</div> + + + +<div class="shortcode col3-1"><a class="lightbox" title="Viewer Overview" href="http://www.youtube.com/watch?v=4C-rOd8bi6s&width=800&height=600" rel="prettyPhoto"><img title="Viewer Overview" src="/wp-content/uploads/2013/06/dev-08.png" alt="Student Overview" width="285" /></a> + +<h5>Developer Overview</h5> + + +This video gives you an overview of setting up BigBlueButton. + +<a class="shortcode button green lightbox" title="Viewer Overview" href="http://www.youtube.com/watch?v=4C-rOd8bi6s&width=800&height=600" rel="prettyPhoto">Play Video </a> + +</div> + + +</div> + + + +--></p> +<div class="clearfix"></div> + + + <!-- comments --> + <!-- /comments --> + + + + +</div> +<!-- /content --> + + + +</div> +<!-- /layout-container --> + +</div> +<!-- /body --> + +<div class="footer-widgetswrap clearfix"> + <div class="footer-widgets pagewidth clearfix"> + <div class="col3-1 first"> + <section id="text-3" class="widget widget_text"><h4 class="widgettitle">Overview</h4> <div class="textwidget"><ul> + <li class="menu item"> + <a href="/home" title="BigBlueButton Home">Home</a> + </li> + <li class="menu item"> + <a href="/overview" title="BigBlueButton Overview">Overview</a> + </li> + <li class="menu item"> + <a href="/videos" title="BigBlueButton Videos">Videos</a> + </li> + <li class="menu item" title="BigBlueButton Demo"> + <a href="http://demo.bigbluebutton.org">Demo</a> + </li> + <li class="menu item"> + <a href="/blog">Blog</a> + </li> + <li class="menu item"> + <a href="/support" title="BigBlueButton Developer Community">Support</a> + </li> +<li class="menu item"> + <a href="http://code.google.com/p/bigbluebutton/" title="Download BigBlueButton">Download</a> + </li> + +</ul></div> + </section> </div> + <div class="col3-1 "> + <section id="themify-feature-posts-2" class="widget feature-posts"><h4 class="widgettitle">Recent Posts</h4><ul class="feature-posts-list"><li><a href="http://bigbluebutton.org/2016/05/17/bigbluebutton-1-0-released/" class="feature-posts-title">BigBlueButton 1.0 Released</a> <br><small>May 17, 2016</small> <br><span class="post-excerpt">The BigBlueButton project is pleased to announce the</span></li><li><a href="http://bigbluebutton.org/2016/05/03/bigbluebutton-summit-viii-ottawa-ontario-canada/" class="feature-posts-title">BigBlueButton Summit VIII: Ottawa, Ontario, Canada</a> <br><small>May 03, 2016</small> <br><span class="post-excerpt">The BigBlueButton developer community met in Ottawa,</span></li><li><a href="http://bigbluebutton.org/2016/04/06/agora-learning-integrates-with-bigbluebutton/" class="feature-posts-title">Agora Learning integrates with BigBlueButton</a> <br><small>Apr 06, 2016</small> <br><span class="post-excerpt">Agora Learning, a learning Management System from Tree</span></li><li><a href="http://bigbluebutton.org/2016/01/21/nice-tweet-from-boston-college/" class="feature-posts-title">Nice tweet from Boston College</a> <br><small>Jan 21, 2016</small> <br><span class="post-excerpt">Just saw this tweet from Boston College. Looks like</span></li></ul></section> </div> + <div class="col3-1 "> + <section id="text-12" class="widget widget_text"> <div class="textwidget"><iframe title="Twitter Timeline" data-widget-id="346300284898783232" style="position: static; visibility: visible; display: inline-block; width: 520px; height: 300px; padding: 0px; border: medium none; max-width: 100%; min-width: 180px; margin-top: 0px; margin-bottom: 0px; min-height: 200px;" class="twitter-timeline twitter-timeline-rendered" allowfullscreen="true" allowtransparency="true" scrolling="no" id="twitter-widget-0" frameborder="0"></iframe> +<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script> +</div> + </section> </div> + </div> + <!-- /.footer-widgets --> +</div> +<!-- /.footer-widgetswrap --> + +<div id="footerwrap"> + <footer id="footer" class="pagewidth clearfix"> + + <div id="footer-logo"> + <a href="http://bigbluebutton.org/">BigBluebutton</a> + </div> + <!-- /footer-logo --> + + + <div class="footer-text clearfix"> + <!-- div class="one"><center> Copyright © 2014 BigBlueButton Inc </center></div --> + <div class="one"><center> Copyright © 2016 BigBlueButton Inc. </center></div> + <div class="two"> </div> + </div> + <!-- /.footer-text --> + + </footer> + <!-- /#footer --> +</div> +<!-- /#footerwrap --> + + +<!-- /#pagewrap --> + +<!-- jquery --> +<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> +<script type="text/javascript"> +!window.jQuery && document.write('<script type="text/javascript" src="http://bigbluebutton.org/wp-content/themes/suco/js/jquery.js"><\/script>') +</script> + +<!-- prettyphoto --> +<script type="text/javascript" src="http://bigbluebutton.org/wp-content/themes/suco/js/jquery.prettyPhoto.js"></script> +<link rel="stylesheet" href="http://bigbluebutton.org/wp-content/themes/suco/prettyPhoto.css" type="text/css" media="screen"> +<script type="text/javascript"> +if (screen.width>=480) { + jQuery(function($) { + $("a[rel^='prettyPhoto']").prettyPhoto({ social_tools: false, deeplinking: false }); + }); +} +</script> + +<!-- theme function script --> +<script type="text/javascript" src="http://bigbluebutton.org/wp-content/themes/suco/js/script.js"></script> + +<!-- wp_footer --> + + + + + <script type="text/javascript"> + !window.jQuery && document.write('<script type="text/javascript" src="http://bigbluebutton.org/wp-content/themes/suco/themify/js/jquery.js"><\/script>') + </script> + <!-- slider --> + <script type="text/javascript" src="http://bigbluebutton.org/wp-content/themes/suco/js/slider.js"></script> + <script> + jQuery(document).ready(function($) { + $('#slider').flexslider({ + animation: "slide", + slideshow: true, + animationLoop: true, + directionNav: true, + prevText: "«", + nextText: "»", + slideshowSpeed: 6000, + pauseOnHover: true + }); + }); + + // expand slider + $('#slider .slides').css('height','auto'); + + </script> + + <script type="text/javascript" src="http://bigbluebutton.org/wp-includes/js/wp-embed.min.js?ver=21e517e0ddb856c019dcb251670c2be4"></script> + + + +<iframe style="position: absolute; visibility: hidden; display: none; width: 0px; height: 0px; padding: 0px; border: medium none;" allowfullscreen="true" allowtransparency="true" scrolling="no" id="rufous-sandbox" frameborder="0"></iframe></body> +<html/> diff --git a/bigbluebutton-client/resources/prod/layout.xml b/bigbluebutton-client/resources/prod/layout.xml index f2079f0e11641d0dec9abfde185a7c4cb6adf2e4..5ef4afede5bd0eb81a15701245c8fe52b0375b06 100755 --- a/bigbluebutton-client/resources/prod/layout.xml +++ b/bigbluebutton-client/resources/prod/layout.xml @@ -25,6 +25,7 @@ <window name="ChatWindow" width="0.303125" height="0.9955703211517165" x="0.3229166666666667" y="0.9656699889258029" order="4" hidden="true" /> <window name="PresentationWindow" minimized="true" order="1" hidden="true" /> <window name="UsersWindow" minimized="true" hidden="true" order="2"/> + <window name="CaptionWindow" hidden="true" width="0.513" height="0.308" x="0.180" y="0.692" /> </layout> <layout name="bbb.layout.name.webcamsfocus"> <window name="NotesWindow" hidden="true" width="0.7" height="1" x="0" y="0" draggable="false" resizable="false"/> @@ -33,6 +34,7 @@ <window name="ChatWindow" width="0.3393632416787265" height="0.5305851063829787" x="0.658465991316932" y="0" /> <window name="UsersWindow" hidden="true" /> <window name="PresentationWindow" width="0.34008683068017365" height="0.4601063829787234" x="0.658465991316932" y="0.535904255319149" /> + <window name="CaptionWindow" hidden="true" width="0.513" height="0.308" x="0.180" y="0.692" /> </layout> <layout name="bbb.layout.name.presentfocus"> <window name="NotesWindow" hidden="true" width="0.7" height="1" x="0" y="0" draggable="false" resizable="false"/> @@ -41,6 +43,7 @@ <window name="VideoDock" width="0.2923611111111111" height="0.4640957446808511" x="0.7048611111111112" y="0.535904255319149" /> <window name="PresentationWindow" width="0.7027777777777777" height="0.9986702127659575" x="0" y="0" /> <window name="ChatWindow" width="0.2923611111111111" height="0.5305851063829787" x="0.7048611111111112" y="0" /> + <window name="CaptionWindow" hidden="true" width="0.513" height="0.308" x="0.180" y="0.692" /> </layout> <layout name="bbb.layout.name.lectureassistant"> <window name="NotesWindow" hidden="true" width="0.7" height="1" x="0" y="0" draggable="false" resizable="false"/> @@ -49,6 +52,7 @@ <window name="UsersWindow" width="0.22152777777777777" height="0.9958677685950413" x="0" y="0" minWidth="280" /> <window name="PresentationWindow" width="0.3104166666666667" height="0.5537190082644629" x="0.6895833333333333" y="0" /> <window name="VideoDock" width="0.30972222222222223" height="0.4357198347107438" x="0.6902777777777778" y="0.558870523415978" /> + <window name="CaptionWindow" hidden="true" width="0.513" height="0.308" x="0.180" y="0.692" /> </layout> <layout name="bbb.layout.name.lecture"> <window name="NotesWindow" hidden="true" width="0.7" height="1" x="0" y="0" draggable="false" resizable="false"/> @@ -57,6 +61,7 @@ <window name="VideoDock" width="0.2923611111111111" height="0.4640957446808511" x="0.7048611111111112" y="0.535904255319149" /> <window name="PresentationWindow" width="0.7027777777777777" height="0.9986702127659575" x="0" y="0" /> <window name="ChatWindow" width="0.2923611111111111" height="0.5305851063829787" x="0.7048611111111112" y="0" /> + <window name="CaptionWindow" hidden="true" width="0.513" height="0.308" x="0.180" y="0.692" /> </layout> <layout name="bbb.layout.name.lecture" role="presenter"> <window name="NotesWindow" hidden="true" width="0.7" height="1" x="0" y="0" draggable="false" resizable="false"/> @@ -65,6 +70,7 @@ <window name="UsersWindow" hidden="true" /> <window name="PresentationWindow" maximized="true" /> <window name="VideoDock" hidden="true" /> + <window name="CaptionWindow" hidden="true" width="0.513" height="0.308" x="0.180" y="0.692" /> </layout> <layout name="bbb.layout.name.lecture" role="moderator"> <window name="NotesWindow" hidden="true" width="0.7" height="1" x="0" y="0" draggable="false" resizable="false"/> @@ -73,6 +79,7 @@ <window name="UsersWindow" width="0.22152777777777777" height="0.9944903581267218" x="0" y="0" minWidth="280" /> <window name="PresentationWindow" width="0.3104166666666667" height="0.5537190082644629" x="0.6895833333333333" y="0" /> <window name="VideoDock" width="0.30972222222222223" height="0.4256198347107438" x="0.6902777777777778" y="0.568870523415978" /> + <window name="CaptionWindow" hidden="true" width="0.513" height="0.308" x="0.180" y="0.692" /> </layout> <!-- <layout name="Users"> diff --git a/bigbluebutton-client/src/ScreenshareStandalone.mxml b/bigbluebutton-client/src/ScreenshareStandalone.mxml index c612a4968423290cb47b99fe625b821ff8f60647..a98fb5e963cd5e0694dbf9ceb16c8766c7cb2ee8 100755 --- a/bigbluebutton-client/src/ScreenshareStandalone.mxml +++ b/bigbluebutton-client/src/ScreenshareStandalone.mxml @@ -189,7 +189,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. } } - private function onUpdateCursorEvent(event:CursorEvent):void { + private function onUpdateCursorEvent(event:CursorEvent):void { if (cursor == null) return; cursor.x = videoHolder.x + (event.x * (videoHolder.width / videoWidth)); @@ -216,7 +216,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. case "NetStream.Play.Start": trace("DeskshareSA::NetStream.Publish.Start for broadcast stream " + stream); trace("DeskshareSA::Dispatching start viewing event"); - service.sendStartedViewingNotification(stream); + //service.sendStartedViewingNotification(stream); break; case "NetStream.Play.UnpublishNotify": trace("DeskshareSA::NetStream.Play.UnpublishNotify for broadcast stream " + stream); diff --git a/bigbluebutton-client/src/org/bigbluebutton/main/views/ShortcutHelpWindow.mxml b/bigbluebutton-client/src/org/bigbluebutton/main/views/ShortcutHelpWindow.mxml index 941642b056abc095eb2637e585f728f73e039dfc..ecaddd20eb7d3f9a4f25908f2e978ef0bf7d7705 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/main/views/ShortcutHelpWindow.mxml +++ b/bigbluebutton-client/src/org/bigbluebutton/main/views/ShortcutHelpWindow.mxml @@ -85,6 +85,9 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. private function init():void { modifier = ExternalInterface.call("determineModifier"); globalModifier = ExternalInterface.call("determineGlobalModifier"); + + ShortcutOptions.initialize(); + populateModules(); } diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/caption/model/CaptionOptions.as b/bigbluebutton-client/src/org/bigbluebutton/modules/caption/model/CaptionOptions.as index c6a98343db5da5b2d6e392bcfa442782b1150e5f..76f50a9bfecae7fb60cb2060c5cea5115978c01a 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/caption/model/CaptionOptions.as +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/caption/model/CaptionOptions.as @@ -3,12 +3,19 @@ package org.bigbluebutton.modules.caption.model { public class CaptionOptions { + [Bindable] + public var maxPasteLength:int = 1024; + [Bindable] public var baseTabIndex:int = 701; public function CaptionOptions() { var cxml:XML = BBB.getConfigForModule("CaptionModule"); if (cxml != null) { + if (cxml.@maxPasteLength != undefined) { + maxPasteLength = cxml.@maxPasteLength; + } + if (cxml.@baseTabIndex != undefined) { baseTabIndex = cxml.@baseTabIndex; } diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/caption/model/Transcripts.as b/bigbluebutton-client/src/org/bigbluebutton/modules/caption/model/Transcripts.as index ff64a8f911c553ba4fdcc233afadd71f2db7c66b..9b57b2b1bc264caeaf46cc020d3dfbf03e862adb 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/caption/model/Transcripts.as +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/caption/model/Transcripts.as @@ -61,7 +61,9 @@ package org.bigbluebutton.modules.caption.model { } public function editCaptionHistory(locale:String, startIndex:int, endIndex:int, text:String):void { - findLocale(locale).editHistory(startIndex, endIndex, text); + if (_historyInited) { // ignore updates until after history has been loaded + findLocale(locale).editHistory(startIndex, endIndex, text); + } } public function findLocale(locale:String):Transcript { diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/caption/views/CaptionWindow.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/caption/views/CaptionWindow.mxml index 1ba87c799e1d34326664ccccf29617a16493af43..cd2ce68273374c35bb30b4e6f38156fe4297aecd 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/caption/views/CaptionWindow.mxml +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/caption/views/CaptionWindow.mxml @@ -76,7 +76,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. optionsTab.setChangeCallback(optionChange); captionTabs.addChild(optionsTab); - textTab = new TextTab(captionOptions.baseTabIndex+5); + textTab = new TextTab(captionOptions.baseTabIndex+5, captionOptions); } private function onCreationComplete():void { @@ -162,7 +162,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. private function onTranscriptOwnerIDChange(o:Object):void { var ownerId:String = o as String; - optionsTab.transcriptOwnerIDChange(ownerId); textTab.transcriptOwnerIDChange(ownerId); setTextTabLabel(ownerId); diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/caption/views/OptionsTab.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/caption/views/OptionsTab.mxml index 0cad6a84fb4d746c469912d180aa83c6960d1e50..7670abd055e629ef37e98fd5947ce34259564c8a 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/caption/views/OptionsTab.mxml +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/caption/views/OptionsTab.mxml @@ -53,11 +53,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. currentTranscript = t; } - public function transcriptOwnerIDChange(ownerID:String):void { - claimOwnershipButton.visible = UserManager.getInstance().getConference().amIModerator() && - ownerID != UserManager.getInstance().getConference().getMyUserId(); - } - private function onLocaleComboChange():void { if (transcriptsCollection && localeCombo.selectedIndex != -1) { if (changeCallback != null) changeCallback(OptionENUM.LOCALE, localeCombo.selectedItem.locale); @@ -80,24 +75,10 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. if (changeCallback != null) changeCallback(OptionENUM.TEXTCOLOR, textColorPicker.selectedColor); } - private function onClaimButtonClick():void { - claimTranscript(currentTranscript.locale, true); - localeCombo.setFocus(); - } - - private function claimTranscript(locale:String, claim:Boolean):void { - var updateCaptionOwnerEvent:SendUpdateCaptionOwnerEvent = new SendUpdateCaptionOwnerEvent(SendUpdateCaptionOwnerEvent.SEND_UPDATE_CAPTION_OWNER_EVENT); - updateCaptionOwnerEvent.locale = locale; - updateCaptionOwnerEvent.claim = claim; - - var dispatcher:Dispatcher = new Dispatcher(); - dispatcher.dispatchEvent(updateCaptionOwnerEvent); - } - ]]> </mx:Script> - <common:TabIndexer id="tabIndexer" tabIndices="{[localeCombo, claimOwnershipButton, fontFamilyCombo, fontSizeCombo, backgroundColorPicker, textColorPicker]}"/> + <common:TabIndexer id="tabIndexer" tabIndices="{[localeCombo, fontFamilyCombo, fontSizeCombo, backgroundColorPicker, textColorPicker]}"/> <mx:VBox> <mx:HBox> @@ -111,12 +92,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. change="onLocaleComboChange()" toolTip="{ResourceUtil.getInstance().getString('bbb.caption.option.language.tooltip')}"/> </mx:HBox> - <mx:HBox> - <mx:Button id="claimOwnershipButton" - label="{ResourceUtil.getInstance().getString('bbb.caption.option.takeowner')}" - toolTip="{ResourceUtil.getInstance().getString('bbb.caption.option.takeowner.tooltip')}" - height="22" visible="false" click="onClaimButtonClick()" /> - </mx:HBox> </mx:VBox> <mx:VBox> <mx:HBox> diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/caption/views/TextTab.as b/bigbluebutton-client/src/org/bigbluebutton/modules/caption/views/TextTab.as index 2f720fff6eaae49f6958391fed4a0ad4d01f764a..c8a003ebe8eee9d81ba2b5864621430a3149bc40 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/caption/views/TextTab.as +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/caption/views/TextTab.as @@ -22,20 +22,31 @@ package org.bigbluebutton.modules.caption.views { import flash.events.Event; import flash.events.KeyboardEvent; + import flash.events.MouseEvent; import flash.events.TextEvent; + import flash.events.TimerEvent; import flash.text.TextFieldType; import flash.ui.Keyboard; + import flash.utils.Timer; import mx.binding.utils.BindingUtils; import mx.binding.utils.ChangeWatcher; - import mx.containers.Box; + import mx.containers.VBox; + import mx.controls.Alert; + import mx.controls.Button; import mx.events.FlexEvent; import org.bigbluebutton.core.managers.UserManager; import org.bigbluebutton.modules.caption.events.SendEditCaptionHistoryEvent; + import org.bigbluebutton.modules.caption.events.SendUpdateCaptionOwnerEvent; + import org.bigbluebutton.modules.caption.model.CaptionOptions; import org.bigbluebutton.modules.caption.model.Transcript; + import org.bigbluebutton.util.i18n.ResourceUtil; + import org.osmf.events.TimeEvent; - public class TextTab extends Box { + public class TextTab extends VBox { + + private var _captionOptions:CaptionOptions; [Bindable] private var currentTranscript:Transcript; @@ -51,10 +62,15 @@ package org.bigbluebutton.modules.caption.views { private var inputArea:TextArea2; private var outputArea:TextArea2; + private var claimButton:Button; - public function TextTab(startIndex:int) { + public function TextTab(startIndex:int, captionOptions:CaptionOptions) { super(); + _captionOptions = captionOptions; + + setStyle("horizontalAlign", "center"); + inputArea = new TextArea2(); inputArea.percentWidth = 100; inputArea.percentHeight = 100; @@ -70,6 +86,19 @@ package org.bigbluebutton.modules.caption.views { outputArea.tabIndex = startIndex+1; addChild(outputArea); + claimButton = new Button(); + claimButton.label = ResourceUtil.getInstance().getString('bbb.caption.option.takeowner'); + claimButton.toolTip = ResourceUtil.getInstance().getString('bbb.caption.option.takeowner.tooltip'); + claimButton.height = 22; + claimButton.visible = false; + claimButton.includeInLayout = false; + claimButton.tabIndex = startIndex+1; + claimButton.addEventListener(MouseEvent.CLICK, onClaimButtonClick); + addChild(claimButton); + + _sendTimer = new Timer(TIME_TO_SEND, 1); + _sendTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onSendTimerComplete); + addEventListener(FlexEvent.CREATION_COMPLETE, onCreationComplete); } @@ -94,23 +123,30 @@ package org.bigbluebutton.modules.caption.views { } public function transcriptOwnerIDChange(ownerID:String):void { - if (ownerID == "") { - //unclaimed text - inputArea.visible = inputArea.includeInLayout = false; - outputArea.visible = outputArea.includeInLayout = true; - inputArea.getInternalTextField().type = TextFieldType.DYNAMIC; - } else if (ownerID == UserManager.getInstance().getConference().getMyUserId()) { + if (ownerID == UserManager.getInstance().getConference().getMyUserId()) { + claimButton.visible = claimButton.includeInLayout = false; + //release text inputArea.visible = inputArea.includeInLayout = true; outputArea.visible = outputArea.includeInLayout = false; inputArea.getInternalTextField().type = TextFieldType.INPUT; inputArea.text = currentTranscript.transcript; } else { - //claimed by other - inputArea.visible = inputArea.includeInLayout = false; - outputArea.visible = outputArea.includeInLayout = true; - inputArea.getInternalTextField().type = TextFieldType.DYNAMIC; + claimButton.visible = claimButton.includeInLayout = UserManager.getInstance().getConference().amIModerator(); + + if (ownerID == "") { + //unclaimed text + inputArea.visible = inputArea.includeInLayout = false; + outputArea.visible = outputArea.includeInLayout = true; + inputArea.getInternalTextField().type = TextFieldType.DYNAMIC; + } else { + //claimed by other + inputArea.visible = inputArea.includeInLayout = false; + outputArea.visible = outputArea.includeInLayout = true; + inputArea.getInternalTextField().type = TextFieldType.DYNAMIC; + } } + } public function setFontSize(fontSize:int):void { @@ -133,8 +169,27 @@ package org.bigbluebutton.modules.caption.views { outputArea.setStyle("backgroundColor", color); } + private function onClaimButtonClick(e:MouseEvent):void { + claimTranscript(currentTranscript.locale, true); + } + + private function claimTranscript(locale:String, claim:Boolean):void { + var updateCaptionOwnerEvent:SendUpdateCaptionOwnerEvent = new SendUpdateCaptionOwnerEvent(SendUpdateCaptionOwnerEvent.SEND_UPDATE_CAPTION_OWNER_EVENT); + updateCaptionOwnerEvent.locale = locale; + updateCaptionOwnerEvent.claim = claim; + + var dispatcher:Dispatcher = new Dispatcher(); + dispatcher.dispatchEvent(updateCaptionOwnerEvent); + } + private function onTranscriptTextInput(e:TextEvent):void { - trace("Text entered: " + e.text + ", carat begin:" + inputArea.selectionBeginIndex + ", end: " + inputArea.selectionEndIndex); + //trace("Text entered: " + e.text + ", carat begin:" + inputArea.selectionBeginIndex + ", end: " + inputArea.selectionEndIndex); + + if (e.text.length > _captionOptions.maxPasteLength) { + e.preventDefault(); + Alert.show(ResourceUtil.getInstance().getString("bbb.caption.transcript.pastewarning.text", [_captionOptions.maxPasteLength, e.text.length]), ResourceUtil.getInstance().getString("bbb.caption.transcript.pastewarning.title"), Alert.OK); + return; + } // There is no surefire way to detect whether the internal TextField is in overwrite mode or not. We need to // delay sending the message until after the text changes and then check length. This extra check is only @@ -149,7 +204,7 @@ package org.bigbluebutton.modules.caption.views { } private function onTranscriptTextChange(e:Event):void { - trace("transcript change: " + inputArea.text); + //trace("transcript change: " + inputArea.text); if (_checkForOverwrite) { _checkForOverwrite = false; @@ -222,15 +277,67 @@ package org.bigbluebutton.modules.caption.views { } } + private const LEN_TO_SEND:int = 7; + private const REP_TO_SEND:int = 3; + private const TIME_TO_SEND:int = 1000; + + private var _startIndex:int = -1; + private var _endIndex:int = -1; + private var _accText:String = ""; + + private var _sendTimer:Timer; + private function respondToTextChange(t:String, si:int, ei:int):void { + if (_startIndex == -1) { + _startIndex = si; + _endIndex = ei; + _accText = t; + } else if (ei < _startIndex || si > _startIndex + _accText.length) { + // edited away from current spot + sendTextToServer(); + + _startIndex = si; + _endIndex = ei; + _accText = t; + } else { + var tempText:String = _accText; + var subStart:int = si - _startIndex; + + tempText = _accText.substr(0, Math.max(subStart, 0)) + t + _accText.substr(subStart+(ei-si)); + + if (ei - _startIndex > _accText.length) _endIndex += ei - _accText.length - _startIndex; + if (si < _startIndex) _startIndex = si; + _accText = tempText; + } + + // start/restart the timer + if (_sendTimer.running) _sendTimer.stop(); + _sendTimer.start(); + + // check length + if (_accText.length >= LEN_TO_SEND || _endIndex - _startIndex >= REP_TO_SEND) { + sendTextToServer(); + } + } + + private function onSendTimerComplete(e:TimerEvent):void { + sendTextToServer(); + } + + private function sendTextToServer():void { var editHistoryEvent:SendEditCaptionHistoryEvent = new SendEditCaptionHistoryEvent(SendEditCaptionHistoryEvent.SEND_EDIT_CAPTION_HISTORY); editHistoryEvent.locale = currentTranscript.locale; - editHistoryEvent.startIndex = si; - editHistoryEvent.endIndex = ei; - editHistoryEvent.text = t; + editHistoryEvent.startIndex = _startIndex; + editHistoryEvent.endIndex = _endIndex; + editHistoryEvent.text = _accText; var dispatcher:Dispatcher = new Dispatcher(); dispatcher.dispatchEvent(editHistoryEvent); + + // reset variables after sending + _startIndex = -1; + _endIndex = -1; + _accText = ""; } } } diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/managers/PublishWindowManager.as b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/managers/PublishWindowManager.as index d446b5cdf7e15c7a0ddaa11487f13a4238105afb..317b128a63eeb97c6494dc83578cf5d9c9f36395 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/managers/PublishWindowManager.as +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/managers/PublishWindowManager.as @@ -1,100 +1,97 @@ -/** -* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/ -* -* Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below). -* -* This program is free software; you can redistribute it and/or modify it under the -* terms of the GNU Lesser General Public License as published by the Free Software -* Foundation; either version 3.0 of the License, or (at your option) any later -* version. -* -* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY -* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public License along -* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. -* -*/ - -package org.bigbluebutton.modules.screenshare.managers -{ - import com.asfusion.mate.events.Dispatcher; - - import flash.events.TimerEvent; - import flash.utils.Timer; - - import org.as3commons.logging.api.ILogger; - import org.as3commons.logging.api.getClassLogger; - import org.bigbluebutton.common.IBbbModuleWindow; - import org.bigbluebutton.common.LogUtil; - import org.bigbluebutton.common.events.CloseWindowEvent; - import org.bigbluebutton.common.events.OpenWindowEvent; - import org.bigbluebutton.modules.screenshare.services.ScreenshareService; - import org.bigbluebutton.modules.screenshare.view.components.ScreensharePublishWindow; - - public class PublishWindowManager { - private static const LOGGER:ILogger = getClassLogger(PublishWindowManager); - - private var shareWindow:ScreensharePublishWindow; - private var globalDispatcher:Dispatcher; - private var service:ScreenshareService; - private var buttonShownOnToolbar:Boolean = false; - - // Timer to auto-publish webcam. We need this timer to delay - // the auto-publishing until after the Viewers's window has loaded - // to receive the publishing events. Otherwise, the user joining next - // won't be able to view the webcam. - private var autoPublishTimer:Timer; - - - - public function PublishWindowManager(service:ScreenshareService) { - LOGGER.debug("PublishWindowManager init"); - globalDispatcher = new Dispatcher(); - this.service = service; - } - - public function stopSharing():void { - if (shareWindow != null) shareWindow.stopSharing(); - } - - public function startSharing(uri:String, room:String, autoStart:Boolean, autoFullScreen:Boolean):void { - LOGGER.debug("DS:PublishWindowManager::opening desk share window, autostart=" + autoStart + " autoFullScreen=" + autoFullScreen); - shareWindow = new ScreensharePublishWindow(); - shareWindow.initWindow(service.getConnection(), uri, room, autoStart, autoFullScreen); - shareWindow.visible = true; - openWindow(shareWindow); - if (autoStart || autoFullScreen) { - /* - * Need to have a timer to trigger auto-publishing of deskshare. - */ - shareWindow.btnFSPublish.enabled = false; - shareWindow.btnRegionPublish.enabled = false; - autoPublishTimer = new Timer(2000, 1); - autoPublishTimer.addEventListener(TimerEvent.TIMER, autopublishTimerHandler); - autoPublishTimer.start(); - } - } - - private function autopublishTimerHandler(event:TimerEvent):void { - shareWindow.shareScreen(true); - } - - public function handleShareWindowCloseEvent():void { - closeWindow(shareWindow); - } - - private function openWindow(window:IBbbModuleWindow):void { - var event:OpenWindowEvent = new OpenWindowEvent(OpenWindowEvent.OPEN_WINDOW_EVENT); - event.window = window; - globalDispatcher.dispatchEvent(event); - } - - private function closeWindow(window:IBbbModuleWindow):void { - var event:CloseWindowEvent = new CloseWindowEvent(CloseWindowEvent.CLOSE_WINDOW_EVENT); - event.window = window; - globalDispatcher.dispatchEvent(event); - } - } +/** + * BigBlueButton open source conferencing system - http://www.bigbluebutton.org/ + * + * Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below). + * + * This program is free software; you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation; either version 3.0 of the License, or (at your option) any later + * version. + * + * BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along + * with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. + * + */ + +package org.bigbluebutton.modules.screenshare.managers { + import com.asfusion.mate.events.Dispatcher; + + import flash.events.TimerEvent; + import flash.utils.Timer; + + import org.as3commons.logging.api.ILogger; + import org.as3commons.logging.api.getClassLogger; + import org.bigbluebutton.common.IBbbModuleWindow; + import org.bigbluebutton.common.LogUtil; + import org.bigbluebutton.common.events.CloseWindowEvent; + import org.bigbluebutton.common.events.OpenWindowEvent; + import org.bigbluebutton.modules.screenshare.services.ScreenshareService; + import org.bigbluebutton.modules.screenshare.view.components.ScreensharePublishWindow; + + public class PublishWindowManager { + private static const LOGGER:ILogger = getClassLogger(PublishWindowManager); + + private var shareWindow:ScreensharePublishWindow; + private var globalDispatcher:Dispatcher; + private var service:ScreenshareService; + private var buttonShownOnToolbar:Boolean = false; + + // Timer to auto-publish webcam. We need this timer to delay + // the auto-publishing until after the Viewers's window has loaded + // to receive the publishing events. Otherwise, the user joining next + // won't be able to view the webcam. + private var autoPublishTimer:Timer; + + public function PublishWindowManager(service:ScreenshareService) { + LOGGER.debug("PublishWindowManager init"); + globalDispatcher = new Dispatcher(); + this.service = service; + } + + public function stopSharing():void { + if (shareWindow != null) shareWindow.stopSharing(); + } + + public function startSharing(uri:String, room:String, autoStart:Boolean, autoFullScreen:Boolean):void { + LOGGER.debug("DS:PublishWindowManager::opening desk share window, autostart=" + autoStart + " autoFullScreen=" + autoFullScreen); + shareWindow = new ScreensharePublishWindow(); + shareWindow.initWindow(service.getConnection(), uri, room, autoStart, autoFullScreen); + shareWindow.visible = true; + openWindow(shareWindow); + if (autoStart || autoFullScreen) { + /* + * Need to have a timer to trigger auto-publishing of deskshare. + */ + shareWindow.btnFSPublish.enabled = false; + shareWindow.btnRegionPublish.enabled = false; + autoPublishTimer = new Timer(2000, 1); + autoPublishTimer.addEventListener(TimerEvent.TIMER, autopublishTimerHandler); + autoPublishTimer.start(); + } + } + + private function autopublishTimerHandler(event:TimerEvent):void { + shareWindow.shareScreen(true); + } + + public function handleShareWindowCloseEvent():void { + closeWindow(shareWindow); + } + + private function openWindow(window:IBbbModuleWindow):void { + var event:OpenWindowEvent = new OpenWindowEvent(OpenWindowEvent.OPEN_WINDOW_EVENT); + event.window = window; + globalDispatcher.dispatchEvent(event); + } + + private function closeWindow(window:IBbbModuleWindow):void { + var event:CloseWindowEvent = new CloseWindowEvent(CloseWindowEvent.CLOSE_WINDOW_EVENT); + event.window = window; + globalDispatcher.dispatchEvent(event); + } + } } \ No newline at end of file diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/managers/ScreenshareManager.as b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/managers/ScreenshareManager.as index fba9acc3d03f00886fee2daba884bdc4f0725aec..45a876e560679dfedcbff9acd503aefa004a2863 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/managers/ScreenshareManager.as +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/managers/ScreenshareManager.as @@ -1,206 +1,194 @@ -/** -* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/ -* -* Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below). -* -* This program is free software; you can redistribute it and/or modify it under the -* terms of the GNU Lesser General Public License as published by the Free Software -* Foundation; either version 3.0 of the License, or (at your option) any later -* version. -* -* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY -* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public License along -* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. -* -*/ - -package org.bigbluebutton.modules.screenshare.managers -{ - import com.asfusion.mate.events.Dispatcher; - import org.as3commons.logging.api.ILogger; - import org.as3commons.logging.api.getClassLogger; - import org.bigbluebutton.core.UsersUtil; - import org.bigbluebutton.main.events.MadePresenterEvent; - import org.bigbluebutton.modules.screenshare.events.IsSharingScreenEvent; - import org.bigbluebutton.modules.screenshare.events.ShareStartRequestResponseEvent; - import org.bigbluebutton.modules.screenshare.events.StartShareRequestFailedEvent; - import org.bigbluebutton.modules.screenshare.events.StartShareRequestSuccessEvent; - import org.bigbluebutton.modules.screenshare.events.StreamStartedEvent; - import org.bigbluebutton.modules.screenshare.events.ViewStreamEvent; - import org.bigbluebutton.modules.screenshare.model.ScreenshareModel; - import org.bigbluebutton.modules.screenshare.model.ScreenshareOptions; - import org.bigbluebutton.modules.screenshare.services.ScreenshareService; - - public class ScreenshareManager { - private static const LOGGER:ILogger = getClassLogger(ScreenshareManager); - - private var publishWindowManager:PublishWindowManager; - private var viewWindowManager:ViewerWindowManager; - private var toolbarButtonManager:ToolbarButtonManager; - private var module:ScreenshareModule; - private var service:ScreenshareService; - private var globalDispatcher:Dispatcher; - private var sharing:Boolean = false; - - public function ScreenshareManager() { - service = new ScreenshareService(); - globalDispatcher = new Dispatcher(); - publishWindowManager = new PublishWindowManager(service); - viewWindowManager = new ViewerWindowManager(service); - toolbarButtonManager = new ToolbarButtonManager(); - } - - public function handleStartModuleEvent(module:ScreenshareModule):void { - LOGGER.debug("Screenshare Module starting"); - this.module = module; - service.handleStartModuleEvent(module); - - if (UsersUtil.amIPresenter()) { - initDeskshare(); - } - } - - public function handleStopModuleEvent():void { - LOGGER.debug("Screenshare Module stopping"); - publishWindowManager.stopSharing(); - viewWindowManager.stopViewing(); - service.disconnect(); - } - - public function handleConnectionSuccessEvent():void { - LOGGER.debug("handle Connection Success Event"); - service.checkIfPresenterIsSharingScreen(); - } - - public function handleStreamStoppedEvent():void { - LOGGER.debug("Sending deskshare stopped command"); - service.stopSharingDesktop(module.getRoom(), module.getRoom()); - } - - public function handleStreamStartedEvent(event: StreamStartedEvent):void { - ScreenshareModel.getInstance().streamId = event.streamId; - ScreenshareModel.getInstance().width = event.width; - ScreenshareModel.getInstance().height = event.height; - ScreenshareModel.getInstance().url = event.url; - - if (UsersUtil.amIPresenter()) { -// var dispatcher:Dispatcher = new Dispatcher(); -// dispatcher.dispatchEvent(new ViewStreamEvent(ViewStreamEvent.START)); - } else { - handleStreamStartEvent(ScreenshareModel.getInstance().streamId, event.width, event.height); - } - - var dispatcher:Dispatcher = new Dispatcher(); - dispatcher.dispatchEvent(new ViewStreamEvent(ViewStreamEvent.START)); - } - - public function handleIsSharingScreenEvent(event: IsSharingScreenEvent):void { - ScreenshareModel.getInstance().streamId = event.streamId; - ScreenshareModel.getInstance().width = event.width; - ScreenshareModel.getInstance().height = event.height; - ScreenshareModel.getInstance().url = event.url; - - if (UsersUtil.amIPresenter()) { -// var dispatcher:Dispatcher = new Dispatcher(); -// dispatcher.dispatchEvent(new ViewStreamEvent(ViewStreamEvent.START)); - } else { - handleStreamStartEvent(ScreenshareModel.getInstance().streamId, event.width, event.height); - - } - - var dispatcher:Dispatcher = new Dispatcher(); - dispatcher.dispatchEvent(new ViewStreamEvent(ViewStreamEvent.START)); - } - - - public function handleStartedViewingEvent(stream:String):void { - LOGGER.debug("handleStartedViewingEvent [" + stream + "]"); - service.sendStartedViewingNotification(stream); - } - - private function initDeskshare():void { - sharing = false; - var option:ScreenshareOptions = new ScreenshareOptions(); - option.parseOptions(); - if (option.autoStart) { - handleStartSharingEvent(true); - } - if(option.showButton){ - toolbarButtonManager.addToolbarButton(); - } - } - - public function handleMadePresenterEvent(e:MadePresenterEvent):void { - LOGGER.debug("Got MadePresenterEvent "); - initDeskshare(); - } - - public function handleMadeViewerEvent(e:MadePresenterEvent):void{ - LOGGER.debug("Got MadeViewerEvent "); - toolbarButtonManager.removeToolbarButton(); - if (sharing) { - service.requestStopSharing(ScreenshareModel.getInstance().streamId); - publishWindowManager.stopSharing(); - } - sharing = false; - } - - public function handleRequestStartSharingEvent():void { - toolbarButtonManager.startedSharing(); - var option:ScreenshareOptions = new ScreenshareOptions(); - option.parseOptions(); - var autoStart:Boolean = false; // harcode for now - publishWindowManager.startSharing(module.getCaptureServerUri(), module.getRoom(), autoStart, option.autoFullScreen); - sharing = true; - service.requestStartSharing(); - } - - public function handleRequestStopSharingEvent():void { - service.requestStopSharing(ScreenshareModel.getInstance().streamId); - } - - public function handleShareStartRequestResponseEvent(event:ShareStartRequestResponseEvent):void { - LOGGER.debug("handleShareStartRequestResponseEvent"); - var dispatcher:Dispatcher = new Dispatcher(); - if (event.success) { - ScreenshareModel.getInstance().authToken = event.token; - ScreenshareModel.getInstance().jnlp = event.jnlp; - dispatcher.dispatchEvent(new StartShareRequestSuccessEvent(ScreenshareModel.getInstance().authToken)); - } else { - dispatcher.dispatchEvent(new StartShareRequestFailedEvent()); - } - } - - public function handleStartSharingEvent(autoStart:Boolean):void { - LOGGER.debug("handleStartSharingEvent"); - //toolbarButtonManager.disableToolbarButton(); - toolbarButtonManager.startedSharing(); - var option:ScreenshareOptions = new ScreenshareOptions(); - option.parseOptions(); - publishWindowManager.startSharing(module.getCaptureServerUri(), module.getRoom(), autoStart, option.autoFullScreen); - sharing = true; - } - - public function handleShareWindowCloseEvent():void { - //toolbarButtonManager.enableToolbarButton(); - publishWindowManager.handleShareWindowCloseEvent(); - sharing = false; - toolbarButtonManager.stopedSharing(); - } - - public function handleViewWindowCloseEvent():void { - LOGGER.debug("Received stop viewing command"); - viewWindowManager.handleViewWindowCloseEvent(); - } - - private function handleStreamStartEvent(streamId: String, videoWidth:Number, videoHeight:Number):void{ - LOGGER.debug("Received start vieweing command"); - viewWindowManager.startViewing(streamId, videoWidth, videoHeight); - } - - - } -} +/** + * BigBlueButton open source conferencing system - http://www.bigbluebutton.org/ + * + * Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below). + * + * This program is free software; you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation; either version 3.0 of the License, or (at your option) any later + * version. + * + * BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along + * with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. + * + */ + +package org.bigbluebutton.modules.screenshare.managers { + import com.asfusion.mate.events.Dispatcher; + import org.as3commons.logging.api.ILogger; + import org.as3commons.logging.api.getClassLogger; + import org.bigbluebutton.core.UsersUtil; + import org.bigbluebutton.main.events.MadePresenterEvent; + import org.bigbluebutton.modules.screenshare.events.IsSharingScreenEvent; + import org.bigbluebutton.modules.screenshare.events.ShareStartRequestResponseEvent; + import org.bigbluebutton.modules.screenshare.events.StartShareRequestFailedEvent; + import org.bigbluebutton.modules.screenshare.events.StartShareRequestSuccessEvent; + import org.bigbluebutton.modules.screenshare.events.StreamStartedEvent; + import org.bigbluebutton.modules.screenshare.events.ViewStreamEvent; + import org.bigbluebutton.modules.screenshare.model.ScreenshareModel; + import org.bigbluebutton.modules.screenshare.model.ScreenshareOptions; + import org.bigbluebutton.modules.screenshare.services.ScreenshareService; + + public class ScreenshareManager { + private static const LOGGER:ILogger = getClassLogger(ScreenshareManager); + + private var publishWindowManager:PublishWindowManager; + private var viewWindowManager:ViewerWindowManager; + private var toolbarButtonManager:ToolbarButtonManager; + private var module:ScreenshareModule; + private var service:ScreenshareService; + private var globalDispatcher:Dispatcher; + private var sharing:Boolean = false; + + public function ScreenshareManager() { + service = new ScreenshareService(); + globalDispatcher = new Dispatcher(); + publishWindowManager = new PublishWindowManager(service); + viewWindowManager = new ViewerWindowManager(service); + toolbarButtonManager = new ToolbarButtonManager(); + } + + public function handleStartModuleEvent(module:ScreenshareModule):void { + LOGGER.debug("Screenshare Module starting"); + this.module = module; + service.handleStartModuleEvent(module); + + if (UsersUtil.amIPresenter()) { + initDeskshare(); + } + } + + public function handleStopModuleEvent():void { + LOGGER.debug("Screenshare Module stopping"); + publishWindowManager.stopSharing(); + viewWindowManager.stopViewing(); + service.disconnect(); + } + + public function handleConnectionSuccessEvent():void { + LOGGER.debug("handle Connection Success Event"); + service.checkIfPresenterIsSharingScreen(); + } + + public function handleStreamStartedEvent(event:StreamStartedEvent):void { + ScreenshareModel.getInstance().streamId = event.streamId; + ScreenshareModel.getInstance().width = event.width; + ScreenshareModel.getInstance().height = event.height; + ScreenshareModel.getInstance().url = event.url; + + if (UsersUtil.amIPresenter()) { + // var dispatcher:Dispatcher = new Dispatcher(); + // dispatcher.dispatchEvent(new ViewStreamEvent(ViewStreamEvent.START)); + } else { + handleStreamStartEvent(ScreenshareModel.getInstance().streamId, event.width, event.height); + } + + var dispatcher:Dispatcher = new Dispatcher(); + dispatcher.dispatchEvent(new ViewStreamEvent(ViewStreamEvent.START)); + } + + public function handleIsSharingScreenEvent(event:IsSharingScreenEvent):void { + ScreenshareModel.getInstance().streamId = event.streamId; + ScreenshareModel.getInstance().width = event.width; + ScreenshareModel.getInstance().height = event.height; + ScreenshareModel.getInstance().url = event.url; + + if (UsersUtil.amIPresenter()) { + // var dispatcher:Dispatcher = new Dispatcher(); + // dispatcher.dispatchEvent(new ViewStreamEvent(ViewStreamEvent.START)); + } else { + handleStreamStartEvent(ScreenshareModel.getInstance().streamId, event.width, event.height); + + } + + var dispatcher:Dispatcher = new Dispatcher(); + dispatcher.dispatchEvent(new ViewStreamEvent(ViewStreamEvent.START)); + } + + + private function initDeskshare():void { + sharing = false; + var option:ScreenshareOptions = new ScreenshareOptions(); + option.parseOptions(); + if (option.autoStart) { + handleStartSharingEvent(true); + } + if (option.showButton) { + toolbarButtonManager.addToolbarButton(); + } + } + + public function handleMadePresenterEvent(e:MadePresenterEvent):void { + LOGGER.debug("Got MadePresenterEvent "); + initDeskshare(); + } + + public function handleMadeViewerEvent(e:MadePresenterEvent):void { + LOGGER.debug("Got MadeViewerEvent "); + toolbarButtonManager.removeToolbarButton(); + if (sharing) { + service.requestStopSharing(ScreenshareModel.getInstance().streamId); + publishWindowManager.stopSharing(); + } + sharing = false; + } + + public function handleRequestStartSharingEvent():void { + toolbarButtonManager.startedSharing(); + var option:ScreenshareOptions = new ScreenshareOptions(); + option.parseOptions(); + var autoStart:Boolean = false; // harcode for now + publishWindowManager.startSharing(module.getCaptureServerUri(), module.getRoom(), autoStart, option.autoFullScreen); + sharing = true; + service.requestStartSharing(); + } + + public function handleRequestStopSharingEvent():void { + service.requestStopSharing(ScreenshareModel.getInstance().streamId); + } + + public function handleShareStartRequestResponseEvent(event:ShareStartRequestResponseEvent):void { + LOGGER.debug("handleShareStartRequestResponseEvent"); + var dispatcher:Dispatcher = new Dispatcher(); + if (event.success) { + ScreenshareModel.getInstance().authToken = event.token; + ScreenshareModel.getInstance().jnlp = event.jnlp; + dispatcher.dispatchEvent(new StartShareRequestSuccessEvent(ScreenshareModel.getInstance().authToken)); + } else { + dispatcher.dispatchEvent(new StartShareRequestFailedEvent()); + } + } + + public function handleStartSharingEvent(autoStart:Boolean):void { + LOGGER.debug("handleStartSharingEvent"); + //toolbarButtonManager.disableToolbarButton(); + toolbarButtonManager.startedSharing(); + var option:ScreenshareOptions = new ScreenshareOptions(); + option.parseOptions(); + publishWindowManager.startSharing(module.getCaptureServerUri(), module.getRoom(), autoStart, option.autoFullScreen); + sharing = true; + } + + public function handleShareWindowCloseEvent():void { + //toolbarButtonManager.enableToolbarButton(); + publishWindowManager.handleShareWindowCloseEvent(); + sharing = false; + toolbarButtonManager.stopedSharing(); + } + + public function handleViewWindowCloseEvent():void { + LOGGER.debug("Received stop viewing command"); + viewWindowManager.handleViewWindowCloseEvent(); + } + + private function handleStreamStartEvent(streamId:String, videoWidth:Number, videoHeight:Number):void { + LOGGER.debug("Received start vieweing command"); + viewWindowManager.startViewing(streamId, videoWidth, videoHeight); + } + + } +} diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/managers/ViewerWindowManager.as b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/managers/ViewerWindowManager.as index fd4f3b428fdf7823a7806466771d880a5ddaeb2c..09e9d40c9d71b5d14d98ea180898dbff1c13f312 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/managers/ViewerWindowManager.as +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/managers/ViewerWindowManager.as @@ -1,82 +1,77 @@ -/** -* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/ -* -* Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below). -* -* This program is free software; you can redistribute it and/or modify it under the -* terms of the GNU Lesser General Public License as published by the Free Software -* Foundation; either version 3.0 of the License, or (at your option) any later -* version. -* -* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY -* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public License along -* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. -* -*/ - -package org.bigbluebutton.modules.screenshare.managers -{ - import com.asfusion.mate.events.Dispatcher; - - import org.as3commons.logging.api.ILogger; - import org.as3commons.logging.api.getClassLogger; - import org.bigbluebutton.common.IBbbModuleWindow; - import org.bigbluebutton.common.LogUtil; - import org.bigbluebutton.common.events.CloseWindowEvent; - import org.bigbluebutton.common.events.OpenWindowEvent; - import org.bigbluebutton.modules.screenshare.services.ScreenshareService; - import org.bigbluebutton.modules.screenshare.view.components.ScreenshareViewWindow; - - public class ViewerWindowManager { - private static const LOGGER:ILogger = getClassLogger(ViewerWindowManager); - - private var viewWindow:ScreenshareViewWindow; - private var service:ScreenshareService; - private var isViewing:Boolean = false; - private var globalDispatcher:Dispatcher; - - public function ViewerWindowManager(service:ScreenshareService) { - this.service = service; - globalDispatcher = new Dispatcher(); - } - - public function stopViewing():void { - if (isViewing) viewWindow.stopViewing(); - } - - public function handleStartedViewingEvent(stream:String):void{ - LOGGER.debug("ViewerWindowManager handleStartedViewingEvent"); - service.sendStartedViewingNotification(stream); - } - - private function openWindow(window:IBbbModuleWindow):void{ - var event:OpenWindowEvent = new OpenWindowEvent(OpenWindowEvent.OPEN_WINDOW_EVENT); - event.window = window; - globalDispatcher.dispatchEvent(event); - } - - public function handleViewWindowCloseEvent():void { - LOGGER.debug("ViewerWindowManager Received stop viewing command"); - closeWindow(viewWindow); - isViewing = false; - } - - private function closeWindow(window:IBbbModuleWindow):void { - var event:CloseWindowEvent = new CloseWindowEvent(CloseWindowEvent.CLOSE_WINDOW_EVENT); - event.window = window; - globalDispatcher.dispatchEvent(event); - } - - public function startViewing(streamId:String, videoWidth:Number, videoHeight:Number):void{ - LOGGER.debug("ViewerWindowManager::startViewing"); - viewWindow = new ScreenshareViewWindow(); - viewWindow.startVideo(service.getConnection()); - openWindow(viewWindow); - - isViewing = true; - } - } +/** + * BigBlueButton open source conferencing system - http://www.bigbluebutton.org/ + * + * Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below). + * + * This program is free software; you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation; either version 3.0 of the License, or (at your option) any later + * version. + * + * BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along + * with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. + * + */ + +package org.bigbluebutton.modules.screenshare.managers { + import com.asfusion.mate.events.Dispatcher; + + import org.as3commons.logging.api.ILogger; + import org.as3commons.logging.api.getClassLogger; + import org.bigbluebutton.common.IBbbModuleWindow; + import org.bigbluebutton.common.LogUtil; + import org.bigbluebutton.common.events.CloseWindowEvent; + import org.bigbluebutton.common.events.OpenWindowEvent; + import org.bigbluebutton.modules.screenshare.services.ScreenshareService; + import org.bigbluebutton.modules.screenshare.view.components.ScreenshareViewWindow; + + public class ViewerWindowManager { + private static const LOGGER:ILogger = getClassLogger(ViewerWindowManager); + + private var viewWindow:ScreenshareViewWindow; + private var service:ScreenshareService; + private var isViewing:Boolean = false; + private var globalDispatcher:Dispatcher; + + public function ViewerWindowManager(service:ScreenshareService) { + this.service = service; + globalDispatcher = new Dispatcher(); + } + + public function stopViewing():void { + if (isViewing) viewWindow.stopViewing(); + } + + + private function openWindow(window:IBbbModuleWindow):void { + var event:OpenWindowEvent = new OpenWindowEvent(OpenWindowEvent.OPEN_WINDOW_EVENT); + event.window = window; + globalDispatcher.dispatchEvent(event); + } + + public function handleViewWindowCloseEvent():void { + LOGGER.debug("ViewerWindowManager Received stop viewing command"); + closeWindow(viewWindow); + isViewing = false; + } + + private function closeWindow(window:IBbbModuleWindow):void { + var event:CloseWindowEvent = new CloseWindowEvent(CloseWindowEvent.CLOSE_WINDOW_EVENT); + event.window = window; + globalDispatcher.dispatchEvent(event); + } + + public function startViewing(streamId:String, videoWidth:Number, videoHeight:Number):void { + LOGGER.debug("ViewerWindowManager::startViewing"); + viewWindow = new ScreenshareViewWindow(); + viewWindow.startVideo(service.getConnection()); + openWindow(viewWindow); + + isViewing = true; + } + } } \ No newline at end of file diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/maps/ScreenshareEventMap.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/maps/ScreenshareEventMap.mxml index 617f6d9726a3c642b922b2b1495e89ca54c6845c..18c42c875a842072d5ec31def8cacddeb85890a2 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/maps/ScreenshareEventMap.mxml +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/maps/ScreenshareEventMap.mxml @@ -84,10 +84,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. <MethodInvoker generator="{ScreenshareManager}" method="handleStreamStartedEvent" arguments="{event}"/> </EventHandlers> - <EventHandlers type="{StreamEvent.STOP}" > - <MethodInvoker generator="{ScreenshareManager}" method="handleStreamStoppedEvent"/> - </EventHandlers> - <EventHandlers type="{IsSharingScreenEvent.IS_SCREENSHARING}"> <MethodInvoker generator="{ScreenshareManager}" method="handleIsSharingScreenEvent" arguments="{event}"/> </EventHandlers> @@ -101,9 +97,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. <MethodInvoker generator="{ScreenshareManager}" method="handleConnectionSuccessEvent"/> </EventHandlers> - <EventHandlers type="{StartedViewingEvent.STARTED_VIEWING_EVENT}"> - <MethodInvoker generator="{ScreenshareManager}" method="handleStartedViewingEvent" arguments="{event.stream}"/> - </EventHandlers> <EventHandlers type="{ViewWindowEvent.CLOSE}"> <MethodInvoker generator="{ScreenshareManager}" method="handleViewWindowCloseEvent"/> diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/model/ScreenshareModel.as b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/model/ScreenshareModel.as index 3a9c75d1780d539f74ac52a4c0af7b60d74551fb..9ded63b630f9d3d1aae0342fbf0a7b2295ab9098 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/model/ScreenshareModel.as +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/model/ScreenshareModel.as @@ -1,79 +1,78 @@ -package org.bigbluebutton.modules.screenshare.model -{ - public class ScreenshareModel - { - - private static var instance:ScreenshareModel = null; - - private var _isScreenSharing:Boolean = false; - private var _stream: ScreenshareStream = new ScreenshareStream(); - - - public function ScreenshareModel(enforcer:SingletonEnforcer) { - if (enforcer == null){ - throw new Error("There can only be 1 ScreenshareModel instance"); - } - } - - public static function getInstance():ScreenshareModel{ - if (instance == null){ - instance = new ScreenshareModel(new SingletonEnforcer()); - } - return instance; - } - - public function get isSharing():Boolean { - return _isScreenSharing; - } - - public function get width():int { - return _stream.width; - } - - public function set width(w: int):void { - _stream.width = w; - } - - public function get height():int { - return _stream.height; - } - - public function set height(h: int):void { - _stream.height = h; - } - - public function get url():String { - return _stream.url; - } - - public function set url(u: String):void { - _stream.url = u; - } - - public function get streamId():String { - return _stream.streamId; - } - - public function set streamId(s: String):void { - _stream.streamId = s; - } - - public function get authToken():String { - return _stream.authToken; - } - - public function set authToken(token:String):void { - _stream.authToken = token; - } - - public function get jnlp():String { - return _stream.jnlp; - } - - public function set jnlp(j:String):void { - _stream.jnlp = j; - } - } -} - -class SingletonEnforcer{} \ No newline at end of file +package org.bigbluebutton.modules.screenshare.model { + + public class ScreenshareModel { + + private static var instance:ScreenshareModel = null; + + private var _isScreenSharing:Boolean = false; + private var _stream:ScreenshareStream = new ScreenshareStream(); + + public function ScreenshareModel(enforcer:SingletonEnforcer) { + if (enforcer == null) { + throw new Error("There can only be 1 ScreenshareModel instance"); + } + } + + public static function getInstance():ScreenshareModel { + if (instance == null) { + instance = new ScreenshareModel(new SingletonEnforcer()); + } + return instance; + } + + public function get isSharing():Boolean { + return _isScreenSharing; + } + + public function get width():int { + return _stream.width; + } + + public function set width(w:int):void { + _stream.width = w; + } + + public function get height():int { + return _stream.height; + } + + public function set height(h:int):void { + _stream.height = h; + } + + public function get url():String { + return _stream.url; + } + + public function set url(u:String):void { + _stream.url = u; + } + + public function get streamId():String { + return _stream.streamId; + } + + public function set streamId(s:String):void { + _stream.streamId = s; + } + + public function get authToken():String { + return _stream.authToken; + } + + public function set authToken(token:String):void { + _stream.authToken = token; + } + + public function get jnlp():String { + return _stream.jnlp; + } + + public function set jnlp(j:String):void { + _stream.jnlp = j; + } + } +} + +class SingletonEnforcer { +} \ No newline at end of file diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/services/ScreenshareService.as b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/services/ScreenshareService.as index bf094fe82306d3354a4b4030f94aa14c0ca308b5..d031dfa8701207cf29adf53da4aacac7b20d1769 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/services/ScreenshareService.as +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/services/ScreenshareService.as @@ -1,107 +1,93 @@ /** -* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/ -* -* Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below). -* -* This program is free software; you can redistribute it and/or modify it under the -* terms of the GNU Lesser General Public License as published by the Free Software -* Foundation; either version 3.0 of the License, or (at your option) any later -* version. -* -* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY -* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public License along -* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. -* -*/ -package org.bigbluebutton.modules.screenshare.services -{ - import com.asfusion.mate.events.Dispatcher; - - import flash.net.NetConnection; - import org.as3commons.logging.api.ILogger; - import org.as3commons.logging.api.getClassLogger; - import org.bigbluebutton.core.UsersUtil; - import org.bigbluebutton.modules.screenshare.services.red5.Connection; - - /** - * The DeskShareProxy communicates with the Red5 deskShare server application - * @author Snap - * - */ - public class ScreenshareService - { - private static const LOG:String = "SC::ScreenshareService - "; - private static const LOGGER:ILogger = getClassLogger(ScreenshareService); + * BigBlueButton open source conferencing system - http://www.bigbluebutton.org/ + * + * Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below). + * + * This program is free software; you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation; either version 3.0 of the License, or (at your option) any later + * version. + * + * BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along + * with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. + * + */ +package org.bigbluebutton.modules.screenshare.services { + import com.asfusion.mate.events.Dispatcher; - private var conn:Connection; - - private var module:ScreenshareModule; - private var dispatcher:Dispatcher; - - - private var uri:String; - private var room:String; - private var sender: MessageSender; - private var receiver: MessageReceiver; + import flash.net.NetConnection; + import org.as3commons.logging.api.ILogger; + import org.as3commons.logging.api.getClassLogger; + import org.bigbluebutton.core.UsersUtil; + import org.bigbluebutton.modules.screenshare.services.red5.Connection; - public function ScreenshareService() { - this.dispatcher = new Dispatcher(); - } - - public function handleStartModuleEvent(module:ScreenshareModule):void { - LOGGER.debug("Screenshare Module starting"); - this.module = module; - connect(module.uri, module.getRoom()); - } - - public function connect(uri:String, room:String):void { - this.uri = uri; - this.room = room; - LOGGER.debug("Screenshare Service connecting to " + uri); - conn = new Connection(room); - - sender = new MessageSender(conn); - receiver = new MessageReceiver(conn); - - conn.setURI(uri); - conn.connect(); - } - - public function getConnection():NetConnection{ - return conn.getConnection(); + /** + * The DeskShareProxy communicates with the Red5 deskShare server application + * @author Snap + * + */ + public class ScreenshareService { + private static const LOG:String = "SC::ScreenshareService - "; + private static const LOGGER:ILogger = getClassLogger(ScreenshareService); + + private var conn:Connection; + + private var module:ScreenshareModule; + private var dispatcher:Dispatcher; + + private var uri:String; + private var room:String; + private var sender:MessageSender; + private var receiver:MessageReceiver; + + public function ScreenshareService() { + this.dispatcher = new Dispatcher(); + } + + public function handleStartModuleEvent(module:ScreenshareModule):void { + LOGGER.debug("Screenshare Module starting"); + this.module = module; + connect(module.uri, module.getRoom()); + } + + public function connect(uri:String, room:String):void { + this.uri = uri; + this.room = room; + LOGGER.debug("Screenshare Service connecting to " + uri); + conn = new Connection(room); + + sender = new MessageSender(conn); + receiver = new MessageReceiver(conn); + + conn.setURI(uri); + conn.connect(); + } + + public function getConnection():NetConnection { + return conn.getConnection(); + } + + public function disconnect():void { + conn.disconnect(); + } + + public function checkIfPresenterIsSharingScreen():void { + LOGGER.debug("check if presenter is sharing screen"); + sender.isScreenSharing(UsersUtil.getInternalMeetingID()); + } + + public function requestStartSharing():void { + sender.startShareRequest(UsersUtil.getInternalMeetingID(), UsersUtil.getMyUserID(), UsersUtil.isRecorded()); + } + + public function requestStopSharing(streamId:String):void { + sender.stopShareRequest(UsersUtil.getInternalMeetingID(), streamId); + } + + } - - public function disconnect():void{ - conn.disconnect(); - } - - public function checkIfPresenterIsSharingScreen():void { - LOGGER.debug("check if presenter is sharing screen"); - sender.isScreenSharing(UsersUtil.getInternalMeetingID()); - } - - public function requestStartSharing():void { - sender.startShareRequest(UsersUtil.getInternalMeetingID(), UsersUtil.getMyUserID(), UsersUtil.isRecorded()); - } - - public function requestStopSharing(streamId: String):void { - sender.stopShareRequest(UsersUtil.getInternalMeetingID(), streamId); - } - - public function sendStartViewingNotification(captureWidth:Number, captureHeight:Number):void{ - conn.sendStartViewingNotification(captureWidth, captureHeight); - } - - public function sendStartedViewingNotification(stream:String):void{ - conn.sendStartedViewingNotification(stream); - } - - public function stopSharingDesktop(meetingId: String, stream: String):void { - conn.stopSharingDesktop(meetingId, stream); - } - - } } \ No newline at end of file diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/services/red5/Connection.as b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/services/red5/Connection.as index 68e3d1aca84e41b70f6b18d831d28ff92b4ec953..4c5719434c08e553ae07de95d92dbab4523497cb 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/services/red5/Connection.as +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/services/red5/Connection.as @@ -1,419 +1,426 @@ /** -* BigBlueButton open source conferencing system - http://www.bigbluebutton.org/ -* -* Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below). -* -* This program is free software; you can redistribute it and/or modify it under the -* terms of the GNU Lesser General Public License as published by the Free Software -* Foundation; either version 3.0 of the License, or (at your option) any later -* version. -* -* BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY -* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -* PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. -* -* You should have received a copy of the GNU Lesser General Public License along -* with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. -* -*/ + * BigBlueButton open source conferencing system - http://www.bigbluebutton.org/ + * + * Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below). + * + * This program is free software; you can redistribute it and/or modify it under the + * terms of the GNU Lesser General Public License as published by the Free Software + * Foundation; either version 3.0 of the License, or (at your option) any later + * version. + * + * BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along + * with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. + * + */ -package org.bigbluebutton.modules.screenshare.services.red5 -{ - import com.asfusion.mate.events.Dispatcher; - import flash.events.NetStatusEvent; - import flash.events.SecurityErrorEvent; - import flash.events.TimerEvent; - import flash.net.NetConnection; - import flash.net.ObjectEncoding; - import flash.net.Responder; - import flash.net.SharedObject; - import flash.utils.Timer; - import org.as3commons.logging.api.ILogger; - import org.as3commons.logging.api.getClassLogger; - import org.bigbluebutton.common.LogUtil; - import org.bigbluebutton.core.UsersUtil; - import org.bigbluebutton.modules.screenshare.events.AppletStartedEvent; - import org.bigbluebutton.modules.screenshare.events.CursorEvent; - import org.bigbluebutton.modules.screenshare.events.ViewStreamEvent; - - - public class Connection { - private static const LOGGER:ILogger = getClassLogger(Connection); +package org.bigbluebutton.modules.screenshare.services.red5 { + import com.asfusion.mate.events.Dispatcher; + import flash.events.NetStatusEvent; + import flash.events.SecurityErrorEvent; + import flash.events.TimerEvent; + import flash.net.NetConnection; + import flash.net.ObjectEncoding; + import flash.net.Responder; + import flash.net.SharedObject; + import flash.utils.Timer; + import org.as3commons.logging.api.ILogger; + import org.as3commons.logging.api.getClassLogger; + import org.bigbluebutton.common.LogUtil; + import org.bigbluebutton.core.UsersUtil; + import org.bigbluebutton.modules.screenshare.events.AppletStartedEvent; + import org.bigbluebutton.modules.screenshare.events.CursorEvent; + import org.bigbluebutton.modules.screenshare.events.ViewStreamEvent; + import org.bigbluebutton.core.managers.ReconnectionManager; + import org.bigbluebutton.main.events.BBBEvent; + import org.bigbluebutton.modules.screenshare.model.ScreenshareModel; - private var netConn:NetConnection; - private var uri:String; - private const connectionTimeout:int = 5000; - private var retryTimer:Timer = null; - private var retryCount:int = 0; - private const MAX_RETRIES:int = 5; - private var deskSO:SharedObject; - private var responder:Responder; - private var width:Number; - private var height:Number; - private var meetingId:String; - - private var dispatcher:Dispatcher = new Dispatcher(); - private var _messageListeners:Array = new Array(); - - public function Connection(meetingId:String) { - this.meetingId = meetingId; - } - - public function connect(retry:Boolean = false):void { - netConn = new NetConnection(); - netConn.proxyType = "best"; - netConn.objectEncoding = ObjectEncoding.AMF0; - netConn.client = this; - - netConn.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); - netConn.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); - - if (getURI().length == 0){ - LOGGER.debug("please provide a valid URI connection string. URI Connection String missing"); - return; - } else if (netConn.connected){ - LOGGER.debug("You are already connected to " + getURI()); - return; - } - - LOGGER.debug("Trying to connect to [" + getURI() + "] retry=[" + retry + "]"); - if (! (retryCount > 0)) { - var ce:ConnectionEvent = new ConnectionEvent(ConnectionEvent.CONNECTING); - dispatcher.dispatchEvent(ce); - } - - netConn.connect(getURI()); - - if (!retry) { - retryTimer = new Timer(connectionTimeout, 1); - retryTimer.addEventListener(TimerEvent.TIMER_COMPLETE, connectTimeoutHandler); - retryTimer.start(); - } - } - - public function addMessageListener(listener:IMessageListener):void { - _messageListeners.push(listener); - } - - public function removeMessageListener(listener:IMessageListener):void { - for (var ob:int=0; ob<_messageListeners.length; ob++) { - if (_messageListeners[ob] == listener) { - _messageListeners.splice (ob,1); - break; + public class Connection { + private static const LOGGER:ILogger = getClassLogger(Connection); + + private var netConn:NetConnection; + private var uri:String; + private const connectionTimeout:int = 5000; + private var retryTimer:Timer = null; + private var retryCount:int = 0; + private const MAX_RETRIES:int = 5; + private var deskSO:SharedObject; + private var responder:Responder; + private var width:Number; + private var height:Number; + private var meetingId:String; + + private var dispatcher:Dispatcher = new Dispatcher(); + private var _messageListeners:Array = new Array(); + private var logoutOnUserCommand:Boolean = false; + private var reconnecting:Boolean = false; + + public function Connection(meetingId:String) { + this.meetingId = meetingId; } - } - } - - private function notifyListeners(messageName:String, message:Object):void { - if (messageName != null && messageName != "") { - for (var notify:String in _messageListeners) { - _messageListeners[notify].onMessage(messageName, message); - } - } else { - LOGGER.debug("Message name is undefined"); - } - } - - public function onMessageFromServer(messageName:String, msg:Object):void { - LOGGER.debug("Got message from server [" + messageName + "] data=" + msg.msg); - notifyListeners(messageName, msg); - } - - private function connectTimeoutHandler(e:TimerEvent):void { - LOGGER.debug("Connection attempt to [" + getURI() + "] timedout. Retrying."); - retryTimer.stop(); - retryTimer = null; - - netConn.close(); - netConn = null; - - var ce:ConnectionEvent; - - retryCount++; - if (retryCount < MAX_RETRIES) { - ce = new ConnectionEvent(ConnectionEvent.CONNECTING_RETRY); - ce.retryAttempts = retryCount; - dispatcher.dispatchEvent(ce); - - connect(false); - } else { - ce = new ConnectionEvent(ConnectionEvent.CONNECTING_MAX_RETRY); - dispatcher.dispatchEvent(ce); - } - - } - - public function close():void{ - netConn.close(); - } - - public function isScreenSharing(meetingId: String):void { - var message:Object = new Object(); - message["meetingId"] = meetingId; - - sendMessage("screenshare.isScreenSharing", - function(result:String):void { // On successful result - LOGGER.debug(result); - }, - function(status:String):void { // status - On error occurred - LOGGER.error(status); - }, - message - ); - } - - private function sendMessage(service:String, onSuccess:Function, onFailure:Function, message:Object=null):void { - LOGGER.debug("SENDING [" + service + "]"); - var responder:Responder = new Responder( - function(result:Object):void { // On successful result - onSuccess("Successfully sent [" + service + "]."); - }, - function(status:Object):void { // status - On error occurred - var errorReason:String = "Failed to send [" + service + "]:\n"; - for (var x:Object in status) { - errorReason += "\t" + x + " : " + status[x]; - } + + public function connect(retry:Boolean = false):void { + netConn = new NetConnection(); + netConn.proxyType = "best"; + netConn.objectEncoding = ObjectEncoding.AMF0; + netConn.client = this; + + netConn.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); + netConn.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); + + if (getURI().length == 0) { + LOGGER.debug("please provide a valid URI connection string. URI Connection String missing"); + return; + } else if (netConn.connected) { + LOGGER.debug("You are already connected to " + getURI()); + return; + } + + LOGGER.debug("Trying to connect to [" + getURI() + "] retry=[" + retry + "]"); + if (!(retryCount > 0)) { + var ce:ConnectionEvent = new ConnectionEvent(ConnectionEvent.CONNECTING); + dispatcher.dispatchEvent(ce); + } + + netConn.connect(getURI()); + + if (!retry) { + retryTimer = new Timer(connectionTimeout, 1); + retryTimer.addEventListener(TimerEvent.TIMER_COMPLETE, connectTimeoutHandler); + retryTimer.start(); + } } - ); - - if (message == null) { - netConn.call(service, responder); - } else { - netConn.call(service, responder, message); - } - } - - public function startShareRequest(meetingId: String, userId: String, record: Boolean):void { - var message:Object = new Object(); - message["meetingId"] = meetingId; - message["userId"] = userId; - message["record"] = record; - - sendMessage("screenshare.startShareRequest", - function(result:String):void { // On successful result - LOGGER.debug(result); - }, - function(status:String):void { // status - On error occurred - LOGGER.error(status); - }, - message - ); - } - - public function stopShareRequest(meetingId: String, streamId: String):void { - var message:Object = new Object(); - message["meetingId"] = meetingId; - message["streamId"] = streamId; - - sendMessage("screenshare.stopShareRequest", - function(result:String):void { // On successful result - LOGGER.debug(result); - }, - function(status:String):void { // status - On error occurred - LOGGER.error(status); - }, - message - ); - } - - - public function setURI(p_URI:String):void{ - uri = p_URI; - } - - public function getURI():String{ - return uri + "/" + UsersUtil.getInternalMeetingID(); - } - - public function onBWCheck(... rest):Number { - return 0; - } - - public function onBWDone(... rest):void { - var p_bw:Number; - if (rest.length > 0) p_bw = rest[0]; - // your application should do something here - // when the bandwidth check is complete - LOGGER.debug("bandwidth = " + p_bw + " Kbps."); - } - - private function sendUserIdToServer():void { - var message:Object = new Object(); - message["meetingId"] = meetingId; - message["userId"] = UsersUtil.getMyUserID(); - - sendMessage("screenshare.setUserId", - function(result:String):void { // On successful result - LOGGER.debug(result); - }, - function(status:String):void { // status - On error occurred - LOGGER.error(status); - }, - message - ); - } - - private function netStatusHandler(event:NetStatusEvent):void { - LOGGER.debug("Connected to [" + getURI() + "]. [" + event.info.code + "]"); - - if (retryTimer) { - retryCount = 0; - LOGGER.debug("Cancelling retry timer."); - retryTimer.stop(); - retryTimer = null; - } - - - var ce:ConnectionEvent; - switch(event.info.code){ - case "NetConnection.Connect.Failed": - ce = new ConnectionEvent(ConnectionEvent.FAILED); - dispatcher.dispatchEvent(ce); - break; - - case "NetConnection.Connect.Success": - sendUserIdToServer(); - ce = new ConnectionEvent(ConnectionEvent.SUCCESS); - dispatcher.dispatchEvent(ce); - break; - - case "NetConnection.Connect.Rejected": - ce = new ConnectionEvent(ConnectionEvent.REJECTED); - dispatcher.dispatchEvent(ce); - break; - - case "NetConnection.Connect.Closed": - LOGGER.debug("Screenshare connection closed."); - ce = new ConnectionEvent(ConnectionEvent.CLOSED); - break; - - case "NetConnection.Connect.InvalidApp": - ce = new ConnectionEvent(ConnectionEvent.INVALIDAPP); - dispatcher.dispatchEvent(ce); - break; - - case "NetConnection.Connect.AppShutdown": - ce = new ConnectionEvent(ConnectionEvent.APPSHUTDOWN); - dispatcher.dispatchEvent(ce); - break; - - case "NetConnection.Connect.NetworkChange": - LOGGER.debug("Detected network change. User might be on a wireless and temporarily dropped connection. Doing nothing. Just making a note."); - break; - - default : - // I dispatch DISCONNECTED incase someone just simply wants to know if we're not connected' - // rather than having to subscribe to the events individually - ce = new ConnectionEvent(ConnectionEvent.DISCONNECTED); - dispatcher.dispatchEvent(ce); - break; - } - } - - private function securityErrorHandler(event:SecurityErrorEvent):void{ - var ce:ConnectionEvent = new ConnectionEvent(ConnectionEvent.SECURITYERROR); - dispatcher.dispatchEvent(ce); - } - - public function mouseLocationCallback(x:Number, y:Number):void { - var event:CursorEvent = new CursorEvent(CursorEvent.UPDATE_CURSOR_LOC_EVENT); - event.x = x; - event.y = y; - dispatcher.dispatchEvent(event); - } - - public function disconnect():void{ - if (netConn != null) netConn.close(); - } - public function getConnection():NetConnection{ - return netConn; - } - - public function connectionFailedHandler(e:ConnectionEvent):void{ - LOGGER.error("connection failed to " + uri + " with message " + e.toString()); - } - - public function connectionRejectedHandler(e:ConnectionEvent):void{ - LOGGER.error("connection rejected " + uri + " with message " + e.toString()); - } - - - /** - * Invoked on the server once the clients' applet has started sharing and the server has started a video stream - * - */ - public function appletStarted(videoWidth:Number, videoHeight:Number):void{ - LOGGER.debug("Got applet started"); - var event:AppletStartedEvent = new AppletStartedEvent(); - event.videoWidth = videoWidth; - event.videoHeight = videoHeight; - dispatcher.dispatchEvent(event); - } - - /** - * Call this method to send out a room-wide notification to start viewing the stream - * - */ - public function sendStartViewingNotification(captureWidth:Number, captureHeight:Number):void{ - try{ - deskSO.send("startViewing", captureWidth, captureHeight); - } catch(e:Error){ - LOGGER.error("error while trying to send start viewing notification"); - } - } - - public function sendStartedViewingNotification(stream:String):void{ - LOGGER.debug("Sending start viewing to server"); - netConn.call("deskshare.startedToViewStream", null, stream); - } - - public function stopSharingDesktop(meetingId: String, stream: String):void { - netConn.call("deskshare.stopSharingDesktop", null, meetingId); - } - - /** - * Called by the server when a notification is received to start viewing the broadcast stream . - * This method is called on successful execution of sendStartViewingNotification() - * - */ - public function startViewing(videoWidth:Number, videoHeight:Number):void{ - LOGGER.debug("startViewing invoked by server"); - - var event:ViewStreamEvent = new ViewStreamEvent(ViewStreamEvent.START); - dispatcher.dispatchEvent(event); - } - - /** - * Sends a notification through the server to all the participants in the room to stop viewing the stream - * - */ - public function sendStopViewingNotification():void{ - LOGGER.debug("Sending stop viewing notification to other clients."); - try{ - deskSO.send("stopViewing"); - } catch(e:Error){ - LOGGER.debug("could not send stop viewing notification"); - } - } - - /** - * Called by the server to notify clients that the deskshare stream has stooped. - */ - public function deskshareStreamStopped():void { - stopViewing(); - } + public function addMessageListener(listener:IMessageListener):void { + _messageListeners.push(listener); + } + + public function removeMessageListener(listener:IMessageListener):void { + for (var ob:int = 0; ob < _messageListeners.length; ob++) { + if (_messageListeners[ob] == listener) { + _messageListeners.splice(ob, 1); + break; + } + } + } + + private function notifyListeners(messageName:String, message:Object):void { + if (messageName != null && messageName != "") { + for (var notify:String in _messageListeners) { + _messageListeners[notify].onMessage(messageName, message); + } + } else { + LOGGER.debug("Message name is undefined"); + } + } + + public function onMessageFromServer(messageName:String, msg:Object):void { + LOGGER.debug("Got message from server [" + messageName + "] data=" + msg.msg); + notifyListeners(messageName, msg); + } + + private function connectTimeoutHandler(e:TimerEvent):void { + LOGGER.debug("Connection attempt to [" + getURI() + "] timedout. Retrying."); + retryTimer.stop(); + retryTimer = null; + + netConn.close(); + netConn = null; + + var ce:ConnectionEvent; + + retryCount++; + if (retryCount < MAX_RETRIES) { + ce = new ConnectionEvent(ConnectionEvent.CONNECTING_RETRY); + ce.retryAttempts = retryCount; + dispatcher.dispatchEvent(ce); + + connect(false); + } else { + ce = new ConnectionEvent(ConnectionEvent.CONNECTING_MAX_RETRY); + dispatcher.dispatchEvent(ce); + } + + } + + public function close():void { + netConn.close(); + } + + public function isScreenSharing(meetingId:String):void { + var message:Object = new Object(); + message["meetingId"] = meetingId; + + sendMessage("screenshare.isScreenSharing", function(result:String):void { // On successful result + LOGGER.debug(result); + }, function(status:String):void { // status - On error occurred + LOGGER.error(status); + }, message); + } + + private function sendMessage(service:String, onSuccess:Function, onFailure:Function, message:Object = null):void { + LOGGER.debug("SENDING [" + service + "]"); + var responder:Responder = new Responder(function(result:Object):void { // On successful result + onSuccess("Successfully sent [" + service + "]."); + }, function(status:Object):void { // status - On error occurred + var errorReason:String = "Failed to send [" + service + "]:\n"; + for (var x:Object in status) { + errorReason += "\t" + x + " : " + status[x]; + } + }); + + if (message == null) { + netConn.call(service, responder); + } else { + netConn.call(service, responder, message); + } + } + + public function startShareRequest(meetingId:String, userId:String, record:Boolean):void { + var message:Object = new Object(); + message["meetingId"] = meetingId; + message["userId"] = userId; + message["record"] = record; + + sendMessage("screenshare.startShareRequest", function(result:String):void { // On successful result + LOGGER.debug(result); + }, function(status:String):void { // status - On error occurred + LOGGER.error(status); + }, message); + } + + public function stopShareRequest(meetingId:String, streamId:String):void { + var message:Object = new Object(); + message["meetingId"] = meetingId; + message["streamId"] = streamId; + + sendMessage("screenshare.stopShareRequest", function(result:String):void { // On successful result + LOGGER.debug(result); + }, function(status:String):void { // status - On error occurred + LOGGER.error(status); + }, message); + } + + public function setURI(p_URI:String):void { + uri = p_URI; + } + + public function getURI():String { + return uri + "/" + UsersUtil.getInternalMeetingID(); + } + + public function onBWCheck(... rest):Number { + return 0; + } + + public function onBWDone(... rest):void { + var p_bw:Number; + if (rest.length > 0) p_bw = rest[0]; + // your application should do something here + // when the bandwidth check is complete + LOGGER.debug("bandwidth = " + p_bw + " Kbps."); + } + + private function sendUserIdToServer():void { + var message:Object = new Object(); + message["meetingId"] = meetingId; + message["userId"] = UsersUtil.getMyUserID(); + + sendMessage("screenshare.setUserId", function(result:String):void { // On successful result + LOGGER.debug(result); + }, function(status:String):void { // status - On error occurred + LOGGER.error(status); + }, message); + } + + private function netStatusHandler(event:NetStatusEvent):void { + LOGGER.debug("Connected to [" + getURI() + "]. [" + event.info.code + "]"); + + if (retryTimer) { + retryCount = 0; + LOGGER.debug("Cancelling retry timer."); + retryTimer.stop(); + retryTimer = null; + } + + var ce:ConnectionEvent; + switch (event.info.code) { + case "NetConnection.Connect.Failed": + if (reconnecting) { + var attemptFailedEvent:BBBEvent = new BBBEvent(BBBEvent.RECONNECT_CONNECTION_ATTEMPT_FAILED_EVENT); + attemptFailedEvent.payload.type = ReconnectionManager.DESKSHARE_CONNECTION; + dispatcher.dispatchEvent(attemptFailedEvent); + } + ce = new ConnectionEvent(ConnectionEvent.FAILED); + dispatcher.dispatchEvent(ce); + break; + + case "NetConnection.Connect.Success": + if (reconnecting) { + reconnecting = false; + if (ScreenshareModel.getInstance().isSharing) { + stopShareRequest(UsersUtil.getInternalMeetingID(), ScreenshareModel.getInstance().streamId) + } + + var attemptSucceeded:BBBEvent = new BBBEvent(BBBEvent.RECONNECT_CONNECTION_ATTEMPT_SUCCEEDED_EVENT); + attemptSucceeded.payload.type = ReconnectionManager.DESKSHARE_CONNECTION; + dispatcher.dispatchEvent(attemptSucceeded); + } + + sendUserIdToServer(); + ce = new ConnectionEvent(ConnectionEvent.SUCCESS); + dispatcher.dispatchEvent(ce); + + break; + + case "NetConnection.Connect.Rejected": + ce = new ConnectionEvent(ConnectionEvent.REJECTED); + dispatcher.dispatchEvent(ce); + break; + + case "NetConnection.Connect.Closed": + LOGGER.debug("Screenshare connection closed."); + if (UsersUtil.amIPresenter()) { + // Let's keep our presenter status before disconnected. We can't + // tell the other user's to stop desktop sharing as our connection is broken. (ralam july 24, 2015) + + } else { + stopViewing(); + } + + if (!logoutOnUserCommand) { + reconnecting = true; + + var disconnectedEvent:BBBEvent = new BBBEvent(BBBEvent.RECONNECT_DISCONNECTED_EVENT); + disconnectedEvent.payload.type = ReconnectionManager.DESKSHARE_CONNECTION; + disconnectedEvent.payload.callback = connect; + disconnectedEvent.payload.callbackParameters = []; + dispatcher.dispatchEvent(disconnectedEvent); + } + ce = new ConnectionEvent(ConnectionEvent.CLOSED); + break; + + case "NetConnection.Connect.InvalidApp": + ce = new ConnectionEvent(ConnectionEvent.INVALIDAPP); + dispatcher.dispatchEvent(ce); + break; + + case "NetConnection.Connect.AppShutdown": + ce = new ConnectionEvent(ConnectionEvent.APPSHUTDOWN); + dispatcher.dispatchEvent(ce); + break; + + case "NetConnection.Connect.NetworkChange": + LOGGER.debug("Detected network change. User might be on a wireless and temporarily dropped connection. Doing nothing. Just making a note."); + break; + + default: + // I dispatch DISCONNECTED incase someone just simply wants to know if we're not connected' + // rather than having to subscribe to the events individually + ce = new ConnectionEvent(ConnectionEvent.DISCONNECTED); + dispatcher.dispatchEvent(ce); + break; + } + } + + private function securityErrorHandler(event:SecurityErrorEvent):void { + var ce:ConnectionEvent = new ConnectionEvent(ConnectionEvent.SECURITYERROR); + dispatcher.dispatchEvent(ce); + } + + public function mouseLocationCallback(x:Number, y:Number):void { + var event:CursorEvent = new CursorEvent(CursorEvent.UPDATE_CURSOR_LOC_EVENT); + event.x = x; + event.y = y; + dispatcher.dispatchEvent(event); + } + + public function disconnect():void { + logoutOnUserCommand = true; + if (netConn != null) netConn.close(); + } + + public function getConnection():NetConnection { + return netConn; + } + + public function connectionFailedHandler(e:ConnectionEvent):void { + LOGGER.error("connection failed to " + uri + " with message " + e.toString()); + } + + public function connectionRejectedHandler(e:ConnectionEvent):void { + LOGGER.error("connection rejected " + uri + " with message " + e.toString()); + } + + /** + * Invoked on the server once the clients' applet has started sharing and the server has started a video stream + * + */ + public function appletStarted(videoWidth:Number, videoHeight:Number):void { + LOGGER.debug("Got applet started"); + var event:AppletStartedEvent = new AppletStartedEvent(); + event.videoWidth = videoWidth; + event.videoHeight = videoHeight; + dispatcher.dispatchEvent(event); + } + + /** + * Call this method to send out a room-wide notification to start viewing the stream + * + */ + public function sendStartViewingNotification(captureWidth:Number, captureHeight:Number):void { + try { + deskSO.send("startViewing", captureWidth, captureHeight); + } catch (e:Error) { + LOGGER.error("error while trying to send start viewing notification"); + } + } + + + /** + * Called by the server when a notification is received to start viewing the broadcast stream . + * This method is called on successful execution of sendStartViewingNotification() + * + */ + public function startViewing(videoWidth:Number, videoHeight:Number):void { + LOGGER.debug("startViewing invoked by server"); + + var event:ViewStreamEvent = new ViewStreamEvent(ViewStreamEvent.START); + dispatcher.dispatchEvent(event); + } + + /** + * Sends a notification through the server to all the participants in the room to stop viewing the stream + * + */ + public function sendStopViewingNotification():void { + LOGGER.debug("Sending stop viewing notification to other clients."); + try { + deskSO.send("stopViewing"); + } catch (e:Error) { + LOGGER.debug("could not send stop viewing notification"); + } + } + + /** + * Called by the server to notify clients that the deskshare stream has stooped. + */ + public function deskshareStreamStopped():void { + stopViewing(); + } + + /** + * Sends a notification to the module to stop viewing the stream + * This method is called on successful execution of sendStopViewingNotification() + * + */ + public function stopViewing():void { + LOGGER.debug("Received dekskshareStreamStopped"); + dispatcher.dispatchEvent(new ViewStreamEvent(ViewStreamEvent.STOP)); + } - /** - * Sends a notification to the module to stop viewing the stream - * This method is called on successful execution of sendStopViewingNotification() - * - */ - public function stopViewing():void{ - LOGGER.debug("Received dekskshareStreamStopped"); - dispatcher.dispatchEvent(new ViewStreamEvent(ViewStreamEvent.STOP)); } - - - } } diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/view/components/ScreensharePublishWindow.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/view/components/ScreensharePublishWindow.mxml index e29f50019a017558c13aeb1d78b49a027d302aaa..ded8180164f93ca9b808a924691a4e2371272a61 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/view/components/ScreensharePublishWindow.mxml +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/view/components/ScreensharePublishWindow.mxml @@ -41,7 +41,8 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. <mate:Listener type="{LocaleChangeEvent.LOCALE_CHANGED}" method="localeChanged" /> <mate:Listener type="{StopSharingButtonEvent.STOP_SHARING}" method="stopSharingEvent" /> <mate:Listener type="{ShortcutEvent.REMOTE_FOCUS_DESKTOP}" method="remoteFocus" /> - + <mate:Listener type="{BBBEvent.RECONNECT_DISCONNECTED_EVENT}" method="handleDisconnectedEvent" /> + <mx:Script> <![CDATA[ import com.asfusion.mate.events.Dispatcher; @@ -65,7 +66,8 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. import org.bigbluebutton.core.BBB; import org.as3commons.logging.api.ILogger; import org.as3commons.logging.api.getClassLogger; - + import org.bigbluebutton.core.managers.ReconnectionManager; + private static const LOGGER:ILogger = getClassLogger(ScreensharePublishWindow); public static const SCALE:Number = 5; @@ -143,18 +145,24 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. return MainCanvas.DESKTOP_SHARING_PUBLISH; } + public function handleDisconnectedEvent(event:BBBEvent):void { + if (event.payload.type == ReconnectionManager.DESKSHARE_CONNECTION) { + closeWindow(); + } + } + /* * Implement resizeable interface. - */ + */ public function resetWidthAndHeight():void{/* do nothing */} public function initWindow(connection:NetConnection, uri:String, room:String, autoStart:Boolean, autoFullScreen:Boolean):void { this.connection = connection; this.uri = uri; - this.room = room; + this.room = room; this.autoStart = autoStart; /*if(autoFullScreen) - shareScreen(true);*/ + shareScreen(true);*/ } private function handleStartShareRequestSuccessEvent(event:StartShareRequestSuccessEvent):void { @@ -170,7 +178,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. private function startSharing(connection:NetConnection, uri:String, room:String, fullScreen:Boolean):void { var captureX:Number = 0; - var captureY:Number = 0; + var captureY:Number = 0; sharingFullScreen = fullScreen; var authToken:String = ScreenshareModel.getInstance().authToken; var jnlp: String = ScreenshareModel.getInstance().jnlp; @@ -183,7 +191,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. if (streaming) { stopStream(); var streamEvent:RequestToStopSharing = new RequestToStopSharing(); - dispatchEvent(streamEvent); + dispatchEvent(streamEvent); } sharingFullScreen = false; streaming = false; @@ -195,7 +203,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. if (streaming) { stopStream(); var streamEvent:StreamEvent = new StreamEvent(StreamEvent.STOP); - dispatchEvent(streamEvent); + dispatchEvent(streamEvent); } sharingFullScreen = false; streaming = false; @@ -266,7 +274,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. ns.play(streamId); btnClosePublish.enabled = true; - btnFSPublish.enabled = false; + btnFSPublish.enabled = false; btnRegionPublish.enabled = false; } @@ -305,9 +313,9 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. closeWindow(); } - private function closeWindow():void { - dispatchEvent(new ShareWindowEvent(ShareWindowEvent.CLOSE)); - } + private function closeWindow():void { + dispatchEvent(new ShareWindowEvent(ShareWindowEvent.CLOSE)); + } private function restartJava():void { shareScreen(sharingFullScreen); diff --git a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/view/components/ScreenshareViewWindow.mxml b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/view/components/ScreenshareViewWindow.mxml index b303f6d2f85ec640add7be318f475d78b6a590de..249d92a9deb4823f4e342230aa697227fb07b138 100755 --- a/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/view/components/ScreenshareViewWindow.mxml +++ b/bigbluebutton-client/src/org/bigbluebutton/modules/screenshare/view/components/ScreenshareViewWindow.mxml @@ -1,354 +1,363 @@ -<?xml version="1.0" encoding="utf-8"?> - -<!-- - -BigBlueButton open source conferencing system - http://www.bigbluebutton.org/ - -Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below). - -This program is free software; you can redistribute it and/or modify it under the -terms of the GNU Lesser General Public License as published by the Free Software -Foundation; either version 3.0 of the License, or (at your option) any later -version. - -BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A -PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public License along -with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. - ---> - -<MDIWindow xmlns="flexlib.mdi.containers.*" - xmlns:mx="http://www.adobe.com/2006/mxml" - width="600" height="400" - initialize="init()" - creationComplete="onCreationComplete()" - implements="org.bigbluebutton.common.IBbbModuleWindow" - xmlns:mate="http://mate.asfusion.com/" - title="{ResourceUtil.getInstance().getString('bbb.screenshareView.title')}" - showCloseButton="false" - resize="fitToWindow()" > - - <mate:Listener type="{ViewStreamEvent.STOP}" method="onStopViewStreamEvent" /> - <mate:Listener type="{LocaleChangeEvent.LOCALE_CHANGED}" method="localeChanged" /> - - <mx:Script> - <![CDATA[ - import com.asfusion.mate.events.Dispatcher; - import flexlib.mdi.events.MDIWindowEvent; - import mx.core.UIComponent; - import org.bigbluebutton.common.Images; - import org.bigbluebutton.common.events.LocaleChangeEvent; - import org.bigbluebutton.core.managers.UserManager; - import org.bigbluebutton.main.api.JSLog; - import org.bigbluebutton.main.views.MainCanvas; - import org.bigbluebutton.modules.screenshare.events.CursorEvent; - import org.bigbluebutton.modules.screenshare.events.StartedViewingEvent; - import org.bigbluebutton.modules.screenshare.events.ViewStreamEvent; - import org.bigbluebutton.modules.screenshare.events.ViewWindowEvent; - import org.bigbluebutton.modules.screenshare.model.ScreenshareModel; - import org.bigbluebutton.modules.screenshare.model.ScreenshareOptions; - import org.bigbluebutton.util.i18n.ResourceUtil; - import org.as3commons.logging.api.ILogger; - import org.as3commons.logging.api.getClassLogger; - - private static const LOG:String = "SC::ScreenshareViewWIndow - "; - private static const LOGGER:ILogger = getClassLogger(ScreenshareViewWindow); - - private var screenHeight:Number = Capabilities.screenResolutionY; - private var screenWidth:Number = Capabilities.screenResolutionX; - - private var images:Images = new Images(); - [Bindable] public var fitToWidthIcon:Class = images.magnifier; - [Bindable] public var fitToActualSizeIcon:Class = images.mag_reset; - - private var streamAvailable:Boolean = false; - - private var video:Video; - private var ns:NetStream; - private var videoHolder:UIComponent = new UIComponent(); - private var streamId:String; - private var videoHeight:Number = 1; - private var videoWidth:Number = 1; - - private static const VIDEO_WIDTH_PADDING:int = 7; - private static const VIDEO_HEIGHT_PADDING:int = 65; - - // The following code block is to deal with a bug in FLexLib - // with MDI windows not responding well to being maximized - private var savedWindowWidth:Number; - private var savedWindowHeight:Number; - private var savedX:Number; - private var savedY:Number; - private var isMaximized:Boolean = false; - private var connection:NetConnection; - - [Bindable] private var baseIndex:int; - [Bindable] private var dsOptions:ScreenshareOptions; - - private function init():void{ - dsOptions = new ScreenshareOptions(); - baseIndex = dsOptions.baseTabIndex; - } - - private function onCreationComplete():void{ - viewScreenshareStream(); - - videoHolder.addChild(video); - this.addChild(videoHolder); - videoHolder.percentWidth = 100; - videoHolder.percentHeight = 100; - addEventListener(MDIWindowEvent.RESIZE_END, onResizeEndEvent); - fitToActualSize(); - maximize(); - - resourcesChanged(); - - titleBarOverlay.tabIndex = baseIndex; - minimizeBtn.tabIndex = baseIndex+1; - maximizeRestoreBtn.tabIndex = baseIndex+2; - closeBtn.tabIndex = baseIndex+3; - - var logData:Object = new Object(); - logData.width = videoWidth; - logData.height = videoHeight; - logData.streamId = streamId; - - JSLog.debug(LOG + "onCreationComplete", logData); - } - - private function onResizeEndEvent(event:MDIWindowEvent):void { - if (event.window == this && streamAvailable) { - fitToWindow(); - } - } - - public function startVideo(connection:NetConnection):void{ - var logData:Object = new Object(); - logData.width = videoWidth; - logData.height = videoHeight; - logData.streamId = streamId; - - JSLog.debug(LOG + "startVideo", logData); - - this.connection = connection; - } - - private function viewScreenshareStream():void{ - videoWidth = ScreenshareModel.getInstance().width; - videoHeight = ScreenshareModel.getInstance().height; - streamId = ScreenshareModel.getInstance().streamId; - - var logData:Object = new Object(); - logData.width = videoWidth; - logData.height = videoHeight; - logData.streamId = streamId; - - JSLog.debug(LOG + "viewScreenshareStream Chrome", logData); - - ns = new NetStream(connection); - ns.addEventListener( NetStatusEvent.NET_STATUS, onNetStatus ); - ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, onAsyncError); - ns.client = this; - ns.bufferTime = 0; - ns.receiveVideo(true); - ns.receiveAudio(false); - - video = new Video(videoWidth, videoHeight); - video.width = videoWidth; - video.height = videoHeight; - video.smoothing = true; - video.attachNetStream(ns); - ns.play(streamId); - this.title = "Viewing Remote Desktop"; - streamAvailable = true; - - fitToWindow(); - } - - public function onMetaData(info:Object):void{ - trace("metadata: width=" + info.width + " height=" + info.height); - - var logData:Object = new Object(); - logData.width = info.width; - logData.height = info.height; - - JSLog.debug(LOG + "onMetaData", logData); - } - - protected function updateButtonsPosition():void { - if (this.width < bottomBar.width) { - bottomBar.visible = false; - } - - if (bottomBar.visible == false) { - bottomBar.y = bottomBar.x = 0; - } else { - bottomBar.y = (this.height - bottomBar.height) / 2; - bottomBar.x = (this.width - bottomBar.width) / 2; - } - } - - public function stopViewing():void { - ns.close(); - closeWindow(); - } - - private function onStopViewStreamEvent(event:ViewStreamEvent):void { - stopViewing(); - } - - private function onAsyncError(e:AsyncErrorEvent):void{ - LOGGER.debug("asyncerror " + e.toString()); - var logData:Object = new Object(); - logData.error = e.toString(); - JSLog.debug(LOG + "asyncerror ", logData); - } - - private function onNetStatus(e:NetStatusEvent):void{ - var logData:Object = new Object(); - logData.stream = streamId; - - switch(e.info.code){ - case "NetStream.Play.Start": - LOGGER.debug("NetStream.Publish.Start for broadcast stream " + streamId); - JSLog.debug(LOG + "NetStream.Publish.Start for broadcast stream ", logData); - var dispatcher: Dispatcher = new Dispatcher(); - var viewEvent:StartedViewingEvent = new StartedViewingEvent(StartedViewingEvent.STARTED_VIEWING_EVENT); - viewEvent.stream = streamId; - dispatcher.dispatchEvent(viewEvent); - break; - case "NetStream.Play.UnpublishNotify": - LOGGER.debug("NetStream.Play.UnpublishNotify for broadcast stream " + streamId); - JSLog.debug(LOG + "NetStream.Play.UnpublishNotify for broadcast stream ", logData); - stopViewing(); - break; - } - } - - public function getPrefferedPosition():String{ - return MainCanvas.DESKTOP_SHARING_VIEW; - } - - /** - * resizes the desktop sharing video to fit to this window - */ - private function fitToWindow():void{ - if (!streamAvailable) return; - - if (videoIsSmallerThanWindow()) { - fitWindowToVideo(); - } - - // Ignore if we are displaying the actual size of the video - if (! btnActualSize.selected) { - fitVideoToWindow(); - } - } - - private function fitVideoToWindow():void { - if (this.width < this.height) { - fitToWidthAndAdjustHeightToMaintainAspectRatio(); - } else { - fitToHeightAndAdjustWidthToMaintainAspectRatio(); - } - } - - private function fitWindowToVideo():void { - video.width = videoWidth; - videoHolder.width = videoWidth; - video.height = videoHeight; - videoHolder.height = videoHeight; - this.height = videoHeight + VIDEO_HEIGHT_PADDING; - this.width = videoWidth + VIDEO_WIDTH_PADDING; - } - - private function videoIsSmallerThanWindow():Boolean { - return (videoHeight < this.height) && (videoWidth < this.width); - } - - - private function fitToWidthAndAdjustHeightToMaintainAspectRatio():void { - video.width = this.width - VIDEO_WIDTH_PADDING; - videoHolder.width = video.width; - // Maintain aspect-ratio - video.height = (videoHeight * video.width) / videoWidth; - videoHolder.height = video.height; - this.height = video.height + VIDEO_HEIGHT_PADDING; - } - - private function fitToHeightAndAdjustWidthToMaintainAspectRatio():void { - video.height = this.height - VIDEO_HEIGHT_PADDING; - videoHolder.height = video.height; - // Maintain aspect-ratio - video.width = (videoWidth * video.height) / videoHeight; - videoHolder.width = video.width; - this.width = video.width + VIDEO_WIDTH_PADDING; - } - - /** - * resizes the desktop sharing video to actual video resolution - */ - private function fitToActualSize():void{ - if (videoIsSmallerThanWindow()) { - fitWindowToVideo(); - } else { - video.width = videoWidth; - videoHolder.width = videoWidth; - video.height = videoHeight; - videoHolder.height = videoHeight; - } - } - - private function determineHowToDisplayVideo():void { - if (btnActualSize.selected) { - fitToActualSize(); - btnActualSize.toolTip = ResourceUtil.getInstance().getString('bbb.screenshareView.fitToWindow'); - btnActualSize.label = ResourceUtil.getInstance().getString('bbb.screenshareView.fitToWindow'); - } else { - fitToWindow(); - btnActualSize.toolTip = ResourceUtil.getInstance().getString('bbb.screenshareView.actualSize'); - btnActualSize.label = ResourceUtil.getInstance().getString('bbb.screenshareView.actualSize'); - } - } - - private function closeWindow():void { - dispatchEvent(new ViewWindowEvent(ViewWindowEvent.CLOSE)); - } - - override protected function resourcesChanged():void{ - super.resourcesChanged(); - this.title = ResourceUtil.getInstance().getString('bbb.screenshareView.title'); - - if (windowControls != null) { - minimizeBtn.toolTip = ResourceUtil.getInstance().getString("bbb.window.minimizeBtn.toolTip"); - minimizeBtn.accessibilityName = ResourceUtil.getInstance().getString("bbb.screenshareView.minimizeBtn.accessibilityName"); - - maximizeRestoreBtn.toolTip = ResourceUtil.getInstance().getString("bbb.window.maximizeRestoreBtn.toolTip"); - maximizeRestoreBtn.accessibilityName = ResourceUtil.getInstance().getString("bbb.screenshareView.maximizeRestoreBtn.accessibilityName"); - - closeBtn.toolTip = ResourceUtil.getInstance().getString("bbb.window.closeBtn.toolTip"); - closeBtn.accessibilityName = ResourceUtil.getInstance().getString("bbb.screenshareView.closeBtn.accessibilityName"); - } - } - - private function localeChanged(e:Event):void{ - resourcesChanged(); - } - - ]]> - </mx:Script> - - <mx:HBox id="bottomBar" visible="true" height="30" horizontalAlign="center" paddingTop="0" paddingBottom="0" width="100%" > - <mx:Button id="btnActualSize" paddingTop="0" paddingBottom="0" styleName="deskshareControlButtonStyle" - toggle="true" - click="determineHowToDisplayVideo()" - selected="false" - height="90%" - label="{btnActualSize.selected ? ResourceUtil.getInstance().getString('bbb.screenshareView.fitToWindow') : ResourceUtil.getInstance().getString('bbb.screenshareView.actualSize')}" - toolTip="{btnActualSize.selected ? ResourceUtil.getInstance().getString('bbb.screenshareView.fitToWindow') : ResourceUtil.getInstance().getString('bbb.screenshareView.actualSize')}" - tabIndex="{baseIndex+4}"/> - </mx:HBox> -</MDIWindow> +<?xml version="1.0" encoding="utf-8"?> + +<!-- + + BigBlueButton open source conferencing system - http://www.bigbluebutton.org/ + + Copyright (c) 2012 BigBlueButton Inc. and by respective authors (see below). + + This program is free software; you can redistribute it and/or modify it under the + terms of the GNU Lesser General Public License as published by the Free Software + Foundation; either version 3.0 of the License, or (at your option) any later + version. + + BigBlueButton is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A + PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License along + with BigBlueButton; if not, see <http://www.gnu.org/licenses/>. + +--> + +<MDIWindow xmlns="flexlib.mdi.containers.*" + xmlns:mx="http://www.adobe.com/2006/mxml" + width="600" + height="400" + initialize="init()" + creationComplete="onCreationComplete()" + implements="org.bigbluebutton.common.IBbbModuleWindow" + xmlns:mate="http://mate.asfusion.com/" + title="{ ResourceUtil.getInstance().getString('bbb.screenshareView.title') }" + showCloseButton="false" + resize="fitToWindow()"> + + <mate:Listener type="{ ViewStreamEvent.STOP }" method="onStopViewStreamEvent" /> + <mate:Listener type="{ LocaleChangeEvent.LOCALE_CHANGED }" method="localeChanged" /> + <mate:Listener type="{ BBBEvent.RECONNECT_DISCONNECTED_EVENT }" method="handleDisconnectedEvent" /> + + <mx:Script> + <![CDATA[ + import com.asfusion.mate.events.Dispatcher; + import flexlib.mdi.events.MDIWindowEvent; + import mx.core.UIComponent; + import org.bigbluebutton.common.Images; + import org.bigbluebutton.common.events.LocaleChangeEvent; + import org.bigbluebutton.core.managers.UserManager; + import org.bigbluebutton.main.api.JSLog; + import org.bigbluebutton.main.views.MainCanvas; + import org.bigbluebutton.modules.screenshare.events.CursorEvent; + import org.bigbluebutton.modules.screenshare.events.StartedViewingEvent; + import org.bigbluebutton.modules.screenshare.events.ViewStreamEvent; + import org.bigbluebutton.modules.screenshare.events.ViewWindowEvent; + import org.bigbluebutton.modules.screenshare.model.ScreenshareModel; + import org.bigbluebutton.modules.screenshare.model.ScreenshareOptions; + import org.bigbluebutton.util.i18n.ResourceUtil; + import org.as3commons.logging.api.ILogger; + import org.as3commons.logging.api.getClassLogger; + import org.bigbluebutton.core.managers.ReconnectionManager; + import org.bigbluebutton.main.events.BBBEvent; + + private static const LOG:String = "SC::ScreenshareViewWIndow - "; + private static const LOGGER:ILogger = getClassLogger(ScreenshareViewWindow); + + private var screenHeight:Number = Capabilities.screenResolutionY; + private var screenWidth:Number = Capabilities.screenResolutionX; + + private var images:Images = new Images(); + [Bindable] public var fitToWidthIcon:Class = images.magnifier; + [Bindable] public var fitToActualSizeIcon:Class = images.mag_reset; + + private var streamAvailable:Boolean = false; + + private var video:Video; + private var ns:NetStream; + private var videoHolder:UIComponent = new UIComponent(); + private var streamId:String; + private var videoHeight:Number = 1; + private var videoWidth:Number = 1; + + private static const VIDEO_WIDTH_PADDING:int = 7; + private static const VIDEO_HEIGHT_PADDING:int = 65; + + // The following code block is to deal with a bug in FLexLib + // with MDI windows not responding well to being maximized + private var savedWindowWidth:Number; + private var savedWindowHeight:Number; + private var savedX:Number; + private var savedY:Number; + private var isMaximized:Boolean = false; + private var connection:NetConnection; + + [Bindable] private var baseIndex:int; + [Bindable] private var dsOptions:ScreenshareOptions; + + private function init():void{ + dsOptions = new ScreenshareOptions(); + baseIndex = dsOptions.baseTabIndex; + } + + private function onCreationComplete():void{ + viewScreenshareStream(); + + videoHolder.addChild(video); + this.addChild(videoHolder); + videoHolder.percentWidth = 100; + videoHolder.percentHeight = 100; + addEventListener(MDIWindowEvent.RESIZE_END, onResizeEndEvent); + fitToActualSize(); + maximize(); + + resourcesChanged(); + + titleBarOverlay.tabIndex = baseIndex; + minimizeBtn.tabIndex = baseIndex+1; + maximizeRestoreBtn.tabIndex = baseIndex+2; + closeBtn.tabIndex = baseIndex+3; + + var logData:Object = new Object(); + logData.width = videoWidth; + logData.height = videoHeight; + logData.streamId = streamId; + + JSLog.debug(LOG + "onCreationComplete", logData); + } + + private function onResizeEndEvent(event:MDIWindowEvent):void { + if (event.window == this && streamAvailable) { + fitToWindow(); + } + } + + public function startVideo(connection:NetConnection):void{ + var logData:Object = new Object(); + logData.width = videoWidth; + logData.height = videoHeight; + logData.streamId = streamId; + + JSLog.debug(LOG + "startVideo", logData); + + this.connection = connection; + } + + private function viewScreenshareStream():void{ + videoWidth = ScreenshareModel.getInstance().width; + videoHeight = ScreenshareModel.getInstance().height; + streamId = ScreenshareModel.getInstance().streamId; + + var logData:Object = new Object(); + logData.width = videoWidth; + logData.height = videoHeight; + logData.streamId = streamId; + + JSLog.debug(LOG + "viewScreenshareStream Chrome", logData); + + ns = new NetStream(connection); + ns.addEventListener( NetStatusEvent.NET_STATUS, onNetStatus ); + ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR, onAsyncError); + ns.client = this; + ns.bufferTime = 0; + ns.receiveVideo(true); + ns.receiveAudio(false); + + video = new Video(videoWidth, videoHeight); + video.width = videoWidth; + video.height = videoHeight; + video.smoothing = true; + video.attachNetStream(ns); + ns.play(streamId); + this.title = "Viewing Remote Desktop"; + streamAvailable = true; + + fitToWindow(); + } + + public function onMetaData(info:Object):void{ + trace("metadata: width=" + info.width + " height=" + info.height); + + var logData:Object = new Object(); + logData.width = info.width; + logData.height = info.height; + + JSLog.debug(LOG + "onMetaData", logData); + } + + protected function updateButtonsPosition():void { + if (this.width < bottomBar.width) { + bottomBar.visible = false; + } + + if (bottomBar.visible == false) { + bottomBar.y = bottomBar.x = 0; + } else { + bottomBar.y = (this.height - bottomBar.height) / 2; + bottomBar.x = (this.width - bottomBar.width) / 2; + } + } + + public function stopViewing():void { + ns.close(); + closeWindow(); + } + + private function onStopViewStreamEvent(event:ViewStreamEvent):void { + stopViewing(); + } + + private function onAsyncError(e:AsyncErrorEvent):void{ + LOGGER.debug("asyncerror " + e.toString()); + var logData:Object = new Object(); + logData.error = e.toString(); + JSLog.debug(LOG + "asyncerror ", logData); + } + + private function onNetStatus(e:NetStatusEvent):void{ + var logData:Object = new Object(); + logData.stream = streamId; + + switch(e.info.code){ + case "NetStream.Play.Start": + LOGGER.debug("NetStream.Publish.Start for broadcast stream " + streamId); + JSLog.debug(LOG + "NetStream.Publish.Start for broadcast stream ", logData); + break; + case "NetStream.Play.UnpublishNotify": + LOGGER.debug("NetStream.Play.UnpublishNotify for broadcast stream " + streamId); + JSLog.debug(LOG + "NetStream.Play.UnpublishNotify for broadcast stream ", logData); + stopViewing(); + break; + } + } + + public function getPrefferedPosition():String{ + return MainCanvas.DESKTOP_SHARING_VIEW; + } + + /** + * resizes the desktop sharing video to fit to this window + */ + private function fitToWindow():void{ + if (!streamAvailable) return; + + if (videoIsSmallerThanWindow()) { + fitWindowToVideo(); + } + + // Ignore if we are displaying the actual size of the video + if (! btnActualSize.selected) { + fitVideoToWindow(); + } + } + + private function fitVideoToWindow():void { + if (this.width < this.height) { + fitToWidthAndAdjustHeightToMaintainAspectRatio(); + } else { + fitToHeightAndAdjustWidthToMaintainAspectRatio(); + } + } + + private function fitWindowToVideo():void { + video.width = videoWidth; + videoHolder.width = videoWidth; + video.height = videoHeight; + videoHolder.height = videoHeight; + this.height = videoHeight + VIDEO_HEIGHT_PADDING; + this.width = videoWidth + VIDEO_WIDTH_PADDING; + } + + private function videoIsSmallerThanWindow():Boolean { + return (videoHeight < this.height) && (videoWidth < this.width); + } + + + private function fitToWidthAndAdjustHeightToMaintainAspectRatio():void { + video.width = this.width - VIDEO_WIDTH_PADDING; + videoHolder.width = video.width; + // Maintain aspect-ratio + video.height = (videoHeight * video.width) / videoWidth; + videoHolder.height = video.height; + this.height = video.height + VIDEO_HEIGHT_PADDING; + } + + private function fitToHeightAndAdjustWidthToMaintainAspectRatio():void { + video.height = this.height - VIDEO_HEIGHT_PADDING; + videoHolder.height = video.height; + // Maintain aspect-ratio + video.width = (videoWidth * video.height) / videoHeight; + videoHolder.width = video.width; + this.width = video.width + VIDEO_WIDTH_PADDING; + } + + /** + * resizes the desktop sharing video to actual video resolution + */ + private function fitToActualSize():void{ + if (videoIsSmallerThanWindow()) { + fitWindowToVideo(); + } else { + video.width = videoWidth; + videoHolder.width = videoWidth; + video.height = videoHeight; + videoHolder.height = videoHeight; + } + } + + private function determineHowToDisplayVideo():void { + if (btnActualSize.selected) { + fitToActualSize(); + btnActualSize.toolTip = ResourceUtil.getInstance().getString('bbb.screenshareView.fitToWindow'); + btnActualSize.label = ResourceUtil.getInstance().getString('bbb.screenshareView.fitToWindow'); + } else { + fitToWindow(); + btnActualSize.toolTip = ResourceUtil.getInstance().getString('bbb.screenshareView.actualSize'); + btnActualSize.label = ResourceUtil.getInstance().getString('bbb.screenshareView.actualSize'); + } + } + + private function closeWindow():void { + dispatchEvent(new ViewWindowEvent(ViewWindowEvent.CLOSE)); + } + + override protected function resourcesChanged():void{ + super.resourcesChanged(); + this.title = ResourceUtil.getInstance().getString('bbb.screenshareView.title'); + + if (windowControls != null) { + minimizeBtn.toolTip = ResourceUtil.getInstance().getString("bbb.window.minimizeBtn.toolTip"); + minimizeBtn.accessibilityName = ResourceUtil.getInstance().getString("bbb.screenshareView.minimizeBtn.accessibilityName"); + + maximizeRestoreBtn.toolTip = ResourceUtil.getInstance().getString("bbb.window.maximizeRestoreBtn.toolTip"); + maximizeRestoreBtn.accessibilityName = ResourceUtil.getInstance().getString("bbb.screenshareView.maximizeRestoreBtn.accessibilityName"); + + closeBtn.toolTip = ResourceUtil.getInstance().getString("bbb.window.closeBtn.toolTip"); + closeBtn.accessibilityName = ResourceUtil.getInstance().getString("bbb.screenshareView.closeBtn.accessibilityName"); + } + } + + private function localeChanged(e:Event):void{ + resourcesChanged(); + } + + public function handleDisconnectedEvent(event:BBBEvent):void { + if (event.payload.type == ReconnectionManager.DESKSHARE_CONNECTION) { + closeWindow(); + } + } + + ]]> + </mx:Script> + + <mx:HBox id="bottomBar" visible="true" height="30" horizontalAlign="center" paddingTop="0" paddingBottom="0" width="100%"> + <mx:Button id="btnActualSize" + paddingTop="0" + paddingBottom="0" + styleName="deskshareControlButtonStyle" + toggle="true" + click="determineHowToDisplayVideo()" + selected="false" + height="90%" + label="{ btnActualSize.selected ? ResourceUtil.getInstance().getString('bbb.screenshareView.fitToWindow') : ResourceUtil.getInstance().getString('bbb.screenshareView.actualSize') }" + toolTip="{ btnActualSize.selected ? ResourceUtil.getInstance().getString('bbb.screenshareView.fitToWindow') : ResourceUtil.getInstance().getString('bbb.screenshareView.actualSize') }" + tabIndex="{ baseIndex + 4 }" /> + </mx:HBox> +</MDIWindow> diff --git a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ApiController.groovy b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ApiController.groovy index c99b5edf5f7bee0ee5ca51a008f5edc7f6e6f5de..23bc08cc01b3a26f0ce5d964e57fb5ed3b15ce50 100755 --- a/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ApiController.groovy +++ b/bigbluebutton-web/grails-app/controllers/org/bigbluebutton/web/controllers/ApiController.groovy @@ -393,8 +393,13 @@ class ApiController { // Check if this config is one of our pre-built config configxml = configService.getConfig(params.configToken) if (configxml == null) { - // Default to the default config. - configxml = conf.config; + // BEGIN - backward compatibility + invalid("noConfigFound","We could not find a config for this request.", REDIRECT_RESPONSE); + return + // END - backward compatibility + + errors.noConfigFound(); + respondWithErrors(errors); } } else { configxml = conf.config; @@ -402,6 +407,11 @@ class ApiController { } else { Config conf = meeting.getDefaultConfig(); if (conf == null) { + // BEGIN - backward compatibility + invalid("noConfigFound","We could not find a config for this request.", REDIRECT_RESPONSE); + return + // END - backward compatibility + errors.noConfigFound(); respondWithErrors(errors); } else { @@ -410,6 +420,11 @@ class ApiController { } if (StringUtils.isEmpty(configxml)) { + // BEGIN - backward compatibility + invalid("noConfigFound","We could not find a config for this request.", REDIRECT_RESPONSE); + return + // END - backward compatibility + errors.noConfigFound(); respondWithErrors(errors); }