Revert "Revert "Added Java check to the configuration notifications""

This reverts commit 82545a03f3.
This commit is contained in:
Chad Pilkey 2015-01-27 14:19:02 -08:00 committed by Felipe Cecagno
parent 87151b5513
commit 815be28d0b
19 changed files with 308 additions and 128 deletions

View File

@ -451,17 +451,26 @@ DataGrid {
}
.presentationUploadFileFormatHintBoxStyle, .desktopShareUsingChromeOnMacHintBoxStyle {
.presentationUploadFileFormatHintBoxStyle {
backgroundColor: #D4D4D4;
dropShadowEnabled: false;
paddingLeft: 10;
paddingRight: 10
}
.presentationUploadFileFormatHintTextStyle, .desktopShareUsingChromeOnMacHintTextStyle {
.presentationUploadFileFormatHintTextStyle {
fontWeight: bold;
}
.desktopShareTextStyle {
fontSize: 11;
fontWeight: bold;
}
.chromeJavaHelpImage {
imageSource: Embed(source='assets/images/chromePluginBlocked.png');
}
.cameraDisplaySettingsWindowStyle {
borderColor: #b9babc;
borderAlpha: 1;

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

@ -105,6 +105,10 @@ bbb.clientstatus.flash.title = Flash Player
bbb.clientstatus.flash.message = Your Flash Player plugin ({0}) is out-of-date. Recommend updating to the latest version.
bbb.clientstatus.webrtc.title = Audio
bbb.clientstatus.webrtc.message = Recommend using either Firefox or Chrome for better audio.
bbb.clientstatus.java.title = Java
bbb.clientstatus.java.notdetected = Java version not detected.
bbb.clientstatus.java.notinstalled = You have no Java installed, please click <font color='#0a4a7a'><a href='http://www.java.com/download/' target='_blank'>HERE</a></font> to install the latest Java to use the desktop sharing feature.
bbb.clientstatus.java.oldversion = You have an old Java installed, please click <font color='#0a4a7a'><a href='http://www.java.com/download/' target='_blank'>HERE</a></font> to install the latest Java to use the desktop sharing feature.
bbb.window.minimizeBtn.toolTip = Minimize
bbb.window.maximizeRestoreBtn.toolTip = Maximize
bbb.window.closeBtn.toolTip = Close
@ -265,10 +269,9 @@ bbb.desktopPublish.chromeOnMacUnsupportedHint = Desktop sharing is not currently
bbb.desktopPublish.minimizeBtn.toolTip = Minimize
bbb.desktopPublish.minimizeBtn.accessibilityName = Minimize the Desktop Sharing Publish Window
bbb.desktopPublish.maximizeRestoreBtn.accessibilityName = Maximize the Desktop Sharing Publish Window
bbb.desktopPublish.javaRequiredLabel = Requires Java 7u51 (or later) to run.
bbb.desktopPublish.javaTestLinkLabel = Test Java
bbb.desktopPublish.javaTestLinkLabel.tooltip = Test Your Java Version
bbb.desktopPublish.javaTestLinkLabel.tooltip.accessibility = Test Your Java Version
bbb.desktopPublish.chromeHint.title = Chrome may need your permission.
bbb.desktopPublish.chromeHint.message = Select the plug-in icon (upper right-hand corner of Chrome), un-block plug-ins, and then select 'Retry'.
bbb.desktopPublish.chromeHint.button = Retry
bbb.desktopView.title = Desktop Sharing
bbb.desktopView.fitToWindow = Fit to Window
bbb.desktopView.actualSize = Display actual size

View File

@ -10,7 +10,7 @@
<language userSelectionEnabled="true" />
<skinning enabled="true" url="http://HOST/client/branding/css/BBBDefault.css.swf" />
<shortcutKeys showButton="true" />
<browserVersions chrome="CHROME_VERSION" firefox="FIREFOX_VERSION" flash="FLASH_VERSION" />
<browserVersions chrome="CHROME_VERSION" firefox="FIREFOX_VERSION" flash="FLASH_VERSION" java="1.7.0_51" />
<layout showLogButton="false" showVideoLayout="false" showResetLayout="true" defaultLayout="bbb.layout.name.defaultlayout"
showToolbar="true" showFooter="true" showMeetingName="true" showHelpButton="true"
showLogoutWindow="true" showLayoutTools="true" showNetworkMonitor="false" confirmLogout="true"
@ -40,7 +40,7 @@
<module name="DeskShareModule"
url="http://HOST/client/DeskShareModule.swf?v=4105"
url="http://HOST/client/DeskShareModule.swf?v=VERSION"
uri="rtmp://HOST/deskShare"
showButton="true"
autoStart="false"

View File

@ -17,9 +17,14 @@
width: 1px !important;
overflow: hidden;
}
#deployJavaPlugin {
display : none;
}
</style>
<script type="text/javascript" src="swfobject/swfobject.js"></script>
<script src="lib/deployJava.js?v=VERSION" language="javascript"></script>
<script type="text/javascript">
//swfobject.registerObject("BigBlueButton", "11", "expressInstall.swf");
var flashvars = {};

Binary file not shown.

Binary file not shown.

View File

@ -560,6 +560,13 @@
}
}
BBB.javaAppletLaunched = function() {
var swfObj = getSwfObj();
if (swfObj) {
swfObj.javaAppletLaunched();
}
}
// Third-party JS apps should use this to query if the BBB SWF file is ready to handle calls.
BBB.isSwfClientReady = function() {
return swfReady;

View File

@ -41,7 +41,6 @@ function stopApplet(){
removeFrame();
}
function checkForJava(){
// if (navigator.javaEnabled() || window.navigator.javaEnabled())
return 1;
function appletStartupCallback() {
BBB.javaAppletLaunched();
}

File diff suppressed because one or more lines are too long

View File

@ -37,6 +37,8 @@ package org.bigbluebutton.main.api
import org.bigbluebutton.main.model.users.events.KickUserEvent;
import org.bigbluebutton.main.model.users.events.RaiseHandEvent;
import org.bigbluebutton.main.model.users.events.RoleChangeEvent;
import org.bigbluebutton.modules.deskshare.events.DeskshareAppletLaunchedEvent;
import org.bigbluebutton.modules.deskshare.utils.JavaCheck;
import org.bigbluebutton.modules.phone.events.AudioSelectionWindowEvent;
import org.bigbluebutton.modules.phone.events.FlashCallConnectedEvent;
import org.bigbluebutton.modules.phone.events.FlashCallDisconnectedEvent;
@ -111,6 +113,7 @@ package org.bigbluebutton.main.api
ExternalInterface.addCallback("webRTCWebcamRequest", handleWebRTCWebcamRequest);
ExternalInterface.addCallback("webRTCWebcamRequestSuccess", handleWebRTCWebcamRequestSuccess);
ExternalInterface.addCallback("webRTCWebcamRequestFail", handleWebRTCWebcamRequestFail);
ExternalInterface.addCallback("javaAppletLaunched", handleJavaAppletLaunched);
}
// Tell out JS counterpart that we are ready.
@ -483,5 +486,11 @@ package org.bigbluebutton.main.api
trace(LOG + "handleWebRTCWebcamRequest: received");
_dispatcher.dispatchEvent(new WebRTCWebcamRequestEvent(WebRTCWebcamRequestEvent.WEBRTC_WEBCAM_REQUEST));
}
private function handleJavaAppletLaunched():void
{
trace(LOG + "handleJavaAppletLaunched: received");
_dispatcher.dispatchEvent(new DeskshareAppletLaunchedEvent(DeskshareAppletLaunchedEvent.APPLET_LAUNCHED));
}
}
}

View File

@ -20,7 +20,7 @@
break
}
titleLbl.text = value.title;
messageTxt.text = value.message;
messageTxt.htmlText = value.message;
validateNow();
}

View File

@ -178,6 +178,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
if (!showFooterOpt) {
footerHeight = 0;
controlBar.visible = false;
}
}
@ -637,8 +638,6 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
ls.x = point1.x - (ls.width/2);
ls.y = point1.y - (ls.height/2);
}
]]>
</mx:Script>

View File

@ -26,7 +26,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
click="handleButtonClick();"
move="handleMove();"
creationComplete="onCreationComplete();"
visible="false">
visible="false" includeInLayout="false">
<mate:Listener type="{ClientStatusEvent.SUCCESS_MESSAGE_EVENT}" method="handleSuccessMessageEvent" />
<mate:Listener type="{ClientStatusEvent.WARNING_MESSAGE_EVENT}" method="handleWarningMessageEvent" />
<mate:Listener type="{ClientStatusEvent.FAIL_MESSAGE_EVENT}" method="handleFailMessageEvent" />
@ -78,7 +78,8 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
}
private function showNotification():void {
visible = true;
if (parent.visible) {
visible = includeInLayout = true;
if (hideTimer.running) hideTimer.reset();
hideTimer.start()
@ -88,6 +89,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
handleMove();
}
}
}
private function isUniqueMessage(type:String, title:String, message:String):Boolean {
for (var i:Number=0; i<messages.length; i++) {

View File

@ -0,0 +1,14 @@
package org.bigbluebutton.modules.deskshare.events
{
import flash.events.Event;
public class DeskshareAppletLaunchedEvent extends Event
{
public static const APPLET_LAUNCHED:String = "DESKSHARE_APPLET_LAUNCHED_EVENT";
public function DeskshareAppletLaunchedEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
}
}

View File

@ -0,0 +1,104 @@
/**
* WebMeeting open source conferencing system - http://www.speakserve.org/
*
* Copyright (c) 2013 SpeakServe Ltd. 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.
*
* WebMeeting 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 WebMeeting; if not, see <http://www.gnu.org/licenses/>.
*
*/
package org.bigbluebutton.modules.deskshare.utils
{
import com.asfusion.mate.events.Dispatcher;
import flash.external.ExternalInterface;
import flash.utils.setTimeout;
import org.bigbluebutton.core.BBB;
import org.bigbluebutton.main.events.ClientStatusEvent;
import org.bigbluebutton.util.i18n.ResourceUtil;
public class JavaCheck {
public static function checkJava():String {
var dispatcher : Dispatcher = new Dispatcher();
var java_version:String = "1.7.0_51";
var xml:XML = BBB.initConfigManager().config.browserVersions;
if (xml.@java != undefined) {
java_version = xml.@java.toString();
}
try {
var javas : Array = JavaCheck.getJREs();
} catch ( e : Error ) {
dispatcher.dispatchEvent(new ClientStatusEvent(ClientStatusEvent.FAIL_MESSAGE_EVENT, ResourceUtil.getInstance().getString("bbb.clientstatus.java.title"), ResourceUtil.getInstance().getString("bbb.clientstatus.java.notdetected")));
return ResourceUtil.getInstance().getString("bbb.clientstatus.java.notdetected");
}
if (javas.length == 0) {
dispatcher.dispatchEvent(new ClientStatusEvent(ClientStatusEvent.FAIL_MESSAGE_EVENT, ResourceUtil.getInstance().getString("bbb.clientstatus.java.title"), ResourceUtil.getInstance().getString("bbb.clientstatus.java.notinstalled")));
return ResourceUtil.getInstance().getString("bbb.clientstatus.java.notinstalled");
}
var highestJava : String = javas[0];
for each (var java : String in javas) {
var highest : Array = highestJava.split(".");
var iter : Array = java.split(".");
if (Number(iter[0]) > Number(highest[0])) {
highestJava = java;
} else if (Number(iter[0]) == Number(highest[0]) && Number(iter[1]) > Number(highest[1])) {
highestJava = java;
} else if (Number(iter[0]) == Number(highest[0]) && Number(iter[1]) == Number(highest[1])) {
var iterMinor : Number = Number((iter[2] as String).split("_")[1]);
var highestMinor : Number = Number((highest[2] as String).split("_")[1]);
if (iterMinor > highestMinor)
{
highestJava = java;
}
}
}
var passedJava : Boolean = true;
var required : Array = java_version.split(".");
highest = highestJava.split(".");
if (Number(required[0]) > Number(highest[0])) {
passedJava = false;
} else if (Number(required[0]) == Number(highest[0]) && Number(required[1]) > Number(highest[1])) {
passedJava = false;
} else if (Number(required[0]) == Number(highest[0]) && Number(required[1]) == Number(highest[1])) {
var requiredMinor : Number = Number((required[2] as String).split("_")[1]);
var highestJavaMinor : Number = Number((highest[2] as String).split("_")[1]);
if (requiredMinor > highestJavaMinor)
{
passedJava = false;
}
}
if (!passedJava) {
dispatcher.dispatchEvent(new ClientStatusEvent(ClientStatusEvent.FAIL_MESSAGE_EVENT, ResourceUtil.getInstance().getString("bbb.clientstatus.java.title"), ResourceUtil.getInstance().getString("bbb.clientstatus.java.oldversion")));
return ResourceUtil.getInstance().getString("bbb.clientstatus.java.oldversion");
} else {
// Java success
return null;
}
}
private static function getJREs():Array{
var installedJREs:Array = ExternalInterface.call("deployJava.getJREs");
if (installedJREs == null) throw new Error("Javascript files not found.");
return installedJREs;
}
}
}

View File

@ -29,7 +29,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
initialize="init()"
creationComplete="onCreationComplete()"
verticalScrollPolicy="off" horizontalScrollPolicy="off"
width="365" height="320"
width="365" height="350"
title="{ResourceUtil.getInstance().getString('bbb.desktopPublish.title')}"
resizable="false">
@ -40,7 +40,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
<mate:Listener type="{ViewStreamEvent.STOP}" method="closePublishWindow" />
<mate:Listener type="{LocaleChangeEvent.LOCALE_CHANGED}" method="localeChanged" />
<mate:Listener type="{StopSharingButtonEvent.STOP_SHARING}" method="stopSharingEvent" />
<mate:Listener type="{DeskshareAppletLaunchedEvent.APPLET_LAUNCHED}" method="handleDeskshareAppletLaunchedEvent" />
<mate:Listener type="{ShortcutEvent.REMOTE_FOCUS_DESKTOP}" method="remoteFocus" />
@ -50,7 +50,9 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
import flexlib.mdi.events.MDIWindowEvent;
import flexlib.scheduling.scheduleClasses.BackgroundItem;
import mx.core.UIComponent;
import org.bigbluebutton.common.Images;
import org.bigbluebutton.common.LogUtil;
import org.bigbluebutton.common.events.LocaleChangeEvent;
@ -61,11 +63,13 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
import org.bigbluebutton.main.views.MainCanvas;
import org.bigbluebutton.modules.deskshare.events.AppletStartedEvent;
import org.bigbluebutton.modules.deskshare.events.CursorEvent;
import org.bigbluebutton.modules.deskshare.events.DeskshareAppletLaunchedEvent;
import org.bigbluebutton.modules.deskshare.events.ShareWindowEvent;
import org.bigbluebutton.modules.deskshare.events.StopSharingButtonEvent;
import org.bigbluebutton.modules.deskshare.events.StreamEvent;
import org.bigbluebutton.modules.deskshare.events.ViewStreamEvent;
import org.bigbluebutton.modules.deskshare.model.DeskshareOptions;
import org.bigbluebutton.modules.deskshare.utils.JavaCheck;
import org.bigbluebutton.util.i18n.ResourceUtil;
public static const SCALE:Number = 5;
@ -92,6 +96,7 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
private var captureWidth:Number = Capabilities.screenResolutionX;
private var autoStart:Boolean = false;
private var globalDispatcher:Dispatcher = new Dispatcher();
private var javaTimer:Timer;
[Bindable] private var cursor:Sprite;
[Bindable] private var baseIndex:int;
@ -109,9 +114,15 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
cursor.graphics.lineStyle(6, 0xFF0000, 0.6);
cursor.graphics.drawCircle(0,0,3);
var javaIssue:String = JavaCheck.checkJava();
if (isUsingLessThanChrome38OnMac()) {
setCurrentState("chromeOnMacWarningState");
}
else if (javaIssue != null) {
setCurrentState("javaIssueWarningState");
javaIssueWarningStateLbl.htmlText = javaIssue;
}
else {
setCurrentState("dispFullRegionControlBar");
}
@ -168,6 +179,9 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
btnFSPublish.enabled = false;
btnRegionPublish.enabled = false;
// useSVC2Check.enabled = false;
javaTimer = new Timer(3000, 1);
javaTimer.addEventListener(TimerEvent.TIMER, onJavaTimer);
javaTimer.start();
startSharing(connection, uri, room, fullScreen);
}
@ -203,6 +217,12 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
closeWindow();
}
private function onJavaTimer(e:TimerEvent):void {
var browser:Array = ExternalInterface.call("determineBrowser");
if (browser[0] == "Chrome")
javaHelpArea.visible = javaHelpArea.includeInLayout = true;
}
private function onUpdateCursorEvent(event:CursorEvent):void {
// DO NOT compute the x and y coordinate and assign directly to the cursorImg
// as it results in a flickering and jerky mouse pointer (ralam jun 10, 2010).
@ -322,6 +342,18 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
dispatchEvent(new ShareWindowEvent(ShareWindowEvent.CLOSE));
}
private function restartJava():void {
ExternalInterface.call("stopApplet");
shareScreen(sharingFullScreen);
}
private function handleDeskshareAppletLaunchedEvent(e:DeskshareAppletLaunchedEvent):void {
if (javaTimer && javaTimer.running) {
javaTimer.stop();
}
javaHelpArea.visible = javaHelpArea.includeInLayout = false;
}
/*
* Override the close handler. We want the Event Map to send a message to
* the MDIManager to close this window;
@ -360,25 +392,23 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
closeWindow();
}
private function onCheckYourJavaClicked():void {
var CHECK_JAVA_URL:String = BBB.initConfigManager().config.javaTest.url;
navigateToURL(new URLRequest(CHECK_JAVA_URL));
}
private function isUsingLessThanChrome38OnMac():Boolean {
var browser:Array = ExternalInterface.call("determineBrowser");
return ((browser[0] == "Chrome")
&& (parseInt(browser[1]) <= 38)
&& (Capabilities.os.indexOf("Mac") >= 0));
return ((browser[0] == "Chrome") && (parseInt(browser[1]) <= 38) && (Capabilities.os.indexOf("Mac") >= 0));
}
]]>
</mx:Script>
<!--http://stackoverflow.com/questions/369120/why-does-mxstates-have-trouble-being-resolved-to-a-component-implementation-->
<mx:VBox id="javaHelpArea" includeInLayout="false" visible="false" height="100%" width="100%" verticalAlign="middle" horizontalAlign="center">
<mx:Text width="80%" textAlign="center" styleName="desktopShareTextStyle" text="{ResourceUtil.getInstance().getString('bbb.desktopPublish.chromeHint.title')}" />
<mx:Image id="javaHelpImg" styleName="chromeJavaHelpImage" source="{javaHelpImg.getStyle('imageSource')}" />
<mx:Text width="80%" textAlign="center" styleName="desktopShareTextStyle" text="{ResourceUtil.getInstance().getString('bbb.desktopPublish.chromeHint.message')}" />
<mx:Button label="{ResourceUtil.getInstance().getString('bbb.desktopPublish.chromeHint.button')}" click="restartJava()"/>
</mx:VBox>
<dspub:states>
<mx:State name="dispFullRegionControlBar">
<mx:AddChild>
<mx:ControlBar id="fullRegionBottomBar">
<mx:VBox width="100%" height="100%" horizontalAlign="center">
<mx:HBox horizontalAlign="center">
@ -407,34 +437,22 @@ with BigBlueButton; if not, see <http://www.gnu.org/licenses/>.
tabEnabled="false"/>
<mx:Spacer width="100%"/>
</mx:HBox>
<mx:Label id="javaVersionLabel" styleName="javaVersionRequiredLabelStyle" text="{ResourceUtil.getInstance().getString('bbb.desktopPublish.javaRequiredLabel')}"/>
<mx:LinkButton id="checkJavaBtn" label="{ResourceUtil.getInstance().getString('bbb.desktopPublish.javaTestLinkLabel')}" click="onCheckYourJavaClicked()" height="22"
styleName="testJavaLinkButtonStyle" textDecoration="underline"
toolTip="{ResourceUtil.getInstance().getString('bbb.desktopPublish.javaTestLinkLabel.tooltip')}"
accessibilityDescription="{ResourceUtil.getInstance().getString('bbb.desktopPublish.javaTestLinkLabel.tooltip.accessibility')}"/>
</mx:VBox>
</mx:ControlBar>
</mx:AddChild>
</mx:State>
<mx:State name="chromeOnMacWarningState">
<mx:AddChild>
<mx:VBox id="chromeOnMacWarningBottomBar" horizontalAlign="center" width="100%" height="100%" verticalAlign="bottom">
<mx:HBox>
<mx:Button id="chromeOnMacWarningCloseButton"
toolTip="{ResourceUtil.getInstance().getString('bbb.desktopPublish.stop.tooltip')}"
label="{ResourceUtil.getInstance().getString('bbb.desktopPublish.stop.label')}"
visible="true"
enabled="true"
click="stopSharing()"
/>
<mx:Spacer width="100%"/>
</mx:HBox>
<mx:HBox horizontalAlign="center" width="300" styleName="desktopShareUsingChromeOnMacHintBoxStyle">
<mx:Text id="chromeOnMacWarningLbl" width="100%" textAlign="center" text="{ResourceUtil.getInstance().getString('bbb.desktopPublish.chromeOnMacUnsupportedHint')}"
styleName="desktopShareUsingChromeOnMacHintTextStyle" toolTip="{ResourceUtil.getInstance().getString('bbb.desktopPublish.chromeOnMacUnsupportedHint')}" />
</mx:HBox>
<mx:VBox height="100%" width="100%" verticalAlign="middle" horizontalAlign="center">
<mx:Text id="chromeOnMacWarningLbl" width="80%" textAlign="center" styleName="desktopShareTextStyle"
text="{ResourceUtil.getInstance().getString('bbb.desktopPublish.chromeOnMacUnsupportedHint')}" />
</mx:VBox>
</mx:AddChild>
</mx:State>
<mx:State name="javaIssueWarningState">
<mx:AddChild>
<mx:VBox height="100%" width="100%" verticalAlign="middle" horizontalAlign="center">
<mx:Text id="javaIssueWarningStateLbl" width="80%" textAlign="center" styleName="desktopShareTextStyle" />
</mx:VBox>
</mx:AddChild>
</mx:State>

View File

@ -26,6 +26,7 @@ import java.io.IOException;
import java.net.URL;
import java.security.*;
import java.awt.Image;
import netscape.javascript.*;
public class DeskShareApplet extends JApplet implements ClientListener {
public static final String NAME = "DESKSHAREAPPLET: ";
@ -94,6 +95,14 @@ public class DeskShareApplet extends JApplet implements ClientListener {
icon = ImageIO.read(url);
} catch (IOException e) {
}
// Callback to JavaScript
try {
JSObject window = JSObject.getWindow(this);
window.call("appletStartupCallback", new Object[]{});
} catch (JSException jse) {
jse.printStackTrace();
}
}
private String getJavaVersionRuntime() {