diff --git a/bbb-client-check/html-template/index.html b/bbb-client-check/html-template/index.html index 9044add83cdd2cb5fc5ef700b660fb88ef30ac58..39c9a375b7cd90f715fd40656796f7e0e9bda7df 100755 --- a/bbb-client-check/html-template/index.html +++ b/bbb-client-check/html-template/index.html @@ -36,6 +36,7 @@ <script type="text/javascript" src="resources/lib/api-bridge.js"></script> <script type="text/javascript" src="resources/lib/sip-0.6.2.js"></script> + <script type="text/javascript" src="resources/lib/deployJava.js"></script> <script type="text/javascript" src="swfobject.js"></script> <script type="text/javascript"> // For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection. @@ -62,6 +63,7 @@ </script> </head> <body> + <div id="deployJavaPluginContainer" style="visibility:hidden; height:0px; "></div> <!-- SWFObject's dynamic embed method replaces this alternative HTML content with Flash content when enough JavaScript and Flash plug-in support is available. The div is initially hidden so that it doesn't show when JavaScript is disabled. diff --git a/bbb-client-check/locale/en_US/resources.properties b/bbb-client-check/locale/en_US/resources.properties index 90ef862e7347aa18428cd08e62ee0e83e8c1be97..3afe5af96503ee8281079f33781357b9fdd445ad 100755 --- a/bbb-client-check/locale/en_US/resources.properties +++ b/bbb-client-check/locale/en_US/resources.properties @@ -2,4 +2,10 @@ bbbsystemcheck.title=BigBlueButton Client Check bbbsystemcheck.dataGridColumn.item = Item bbbsystemcheck.dataGridColumn.status = Status bbbsystemcheck.dataGridColumn.result = Result -bbbsystemcheck.copyAllText = Copy all text \ No newline at end of file +bbbsystemcheck.copyAllText = Copy all text +bbbsystemcheck.result.undefined = Undefined +bbbsystemcheck.result.javaEnabled.disabled = Java is disabled in your browser +bbbsystemcheck.result.javaEnabled.notDetected = No Java detected +bbbsystemcheck.status.succeeded = +bbbsystemcheck.status.warning = Warning +bbbsystemcheck.status.failed = Failed diff --git a/bbb-client-check/resources/lib/api-bridge.js b/bbb-client-check/resources/lib/api-bridge.js index 60ab31c1d6940b6ab4498e695e4118a7caff74fd..8f4e047bd646ec1247c491c64f0e27a925bf7ead 100755 --- a/bbb-client-check/resources/lib/api-bridge.js +++ b/bbb-client-check/resources/lib/api-bridge.js @@ -149,13 +149,32 @@ } BBBClientCheck.javaEnabled = function(){ - var javaEnabledInfo = ''; + var result = { + enabled: navigator.javaEnabled(), + version: [], + minimum: '1.7.0_51+', + appropriate: false + }; + + if (result.enabled) { + result.version = getJavaVersion(); + result.appropriate = isJavaVersionAppropriateForDeskshare(result.minimum); + } + + console.log(result); + var swfObj = getSwfObj(); - - javaEnabledInfo = navigator.javaEnabled(); - swfObj.javaEnabled(javaEnabledInfo); + swfObj.javaEnabled(result); } - + + function getJavaVersion() { + return deployJava.getJREs(); + } + + function isJavaVersionAppropriateForDeskshare(required) { + return deployJava.versionCheck(required); + } + BBBClientCheck.language = function(){ var languageInfo = ''; var swfObj = getSwfObj(); diff --git a/bbb-client-check/resources/lib/deployJava.js b/bbb-client-check/resources/lib/deployJava.js new file mode 100644 index 0000000000000000000000000000000000000000..8aa7a65aba8382bb8aa9ed24f3eee86a319050bf --- /dev/null +++ b/bbb-client-check/resources/lib/deployJava.js @@ -0,0 +1 @@ +var deployJava=function(){var l={core:["id","class","title","style"],i18n:["lang","dir"],events:["onclick","ondblclick","onmousedown","onmouseup","onmouseover","onmousemove","onmouseout","onkeypress","onkeydown","onkeyup"],applet:["codebase","code","name","archive","object","width","height","alt","align","hspace","vspace"],object:["classid","codebase","codetype","data","type","archive","declare","standby","height","width","usemap","name","tabindex","align","border","hspace","vspace"]};var b=l.object.concat(l.core,l.i18n,l.events);var m=l.applet.concat(l.core);function g(o){if(!d.debug){return}if(console.log){console.log(o)}else{alert(o)}}function k(p,o){if(p==null||p.length==0){return true}var r=p.charAt(p.length-1);if(r!="+"&&r!="*"&&(p.indexOf("_")!=-1&&r!="_")){p=p+"*";r="*"}p=p.substring(0,p.length-1);if(p.length>0){var q=p.charAt(p.length-1);if(q=="."||q=="_"){p=p.substring(0,p.length-1)}}if(r=="*"){return(o.indexOf(p)==0)}else{if(r=="+"){return p<=o}}return false}function e(){var o="//java.com/js/webstart.png";try{return document.location.protocol.indexOf("http")!=-1?o:"http:"+o}catch(p){return"http:"+o}}function n(p){var o="http://java.com/dt-redirect";if(p==null||p.length==0){return o}if(p.charAt(0)=="&"){p=p.substring(1,p.length)}return o+"?"+p}function j(q,p){var o=q.length;for(var r=0;r<o;r++){if(q[r]===p){return true}}return false}function c(o){return j(m,o.toLowerCase())}function i(o){return j(b,o.toLowerCase())}function a(o){if("MSIE"!=deployJava.browserName){return true}if(deployJava.compareVersionToPattern(deployJava.getPlugin().version,["10","0","0"],false,true)){return true}if(o==null){return false}return !k("1.6.0_33+",o)}var d={debug:null,version:"20120801",firefoxJavaVersion:null,myInterval:null,preInstallJREList:null,returnPage:null,brand:null,locale:null,installType:null,EAInstallEnabled:false,EarlyAccessURL:null,oldMimeType:"application/npruntime-scriptable-plugin;DeploymentToolkit",mimeType:"application/java-deployment-toolkit",launchButtonPNG:e(),browserName:null,browserName2:null,getJREs:function(){var t=new Array();if(this.isPluginInstalled()){var r=this.getPlugin();var o=r.jvms;for(var q=0;q<o.getLength();q++){t[q]=o.get(q).version}}else{var p=this.getBrowser();if(p=="MSIE"){if(this.testUsingActiveX("1.7.0")){t[0]="1.7.0"}else{if(this.testUsingActiveX("1.6.0")){t[0]="1.6.0"}else{if(this.testUsingActiveX("1.5.0")){t[0]="1.5.0"}else{if(this.testUsingActiveX("1.4.2")){t[0]="1.4.2"}else{if(this.testForMSVM()){t[0]="1.1"}}}}}}else{if(p=="Netscape Family"){this.getJPIVersionUsingMimeType();if(this.firefoxJavaVersion!=null){t[0]=this.firefoxJavaVersion}else{if(this.testUsingMimeTypes("1.7")){t[0]="1.7.0"}else{if(this.testUsingMimeTypes("1.6")){t[0]="1.6.0"}else{if(this.testUsingMimeTypes("1.5")){t[0]="1.5.0"}else{if(this.testUsingMimeTypes("1.4.2")){t[0]="1.4.2"}else{if(this.browserName2=="Safari"){if(this.testUsingPluginsArray("1.7.0")){t[0]="1.7.0"}else{if(this.testUsingPluginsArray("1.6")){t[0]="1.6.0"}else{if(this.testUsingPluginsArray("1.5")){t[0]="1.5.0"}else{if(this.testUsingPluginsArray("1.4.2")){t[0]="1.4.2"}}}}}}}}}}}}}if(this.debug){for(var q=0;q<t.length;++q){g("[getJREs()] We claim to have detected Java SE "+t[q])}}return t},installJRE:function(r,p){var o=false;if(this.isPluginInstalled()&&this.isAutoInstallEnabled(r)){var q=false;if(this.isCallbackSupported()){q=this.getPlugin().installJRE(r,p)}else{q=this.getPlugin().installJRE(r)}if(q){this.refresh();if(this.returnPage!=null){document.location=this.returnPage}}return q}else{return this.installLatestJRE()}},isAutoInstallEnabled:function(o){if(!this.isPluginInstalled()){return false}if(typeof o=="undefined"){o=null}return a(o)},isCallbackSupported:function(){return this.isPluginInstalled()&&this.compareVersionToPattern(this.getPlugin().version,["10","2","0"],false,true)},installLatestJRE:function(q){if(this.isPluginInstalled()&&this.isAutoInstallEnabled()){var r=false;if(this.isCallbackSupported()){r=this.getPlugin().installLatestJRE(q)}else{r=this.getPlugin().installLatestJRE()}if(r){this.refresh();if(this.returnPage!=null){document.location=this.returnPage}}return r}else{var p=this.getBrowser();var o=navigator.platform.toLowerCase();if((this.EAInstallEnabled=="true")&&(o.indexOf("win")!=-1)&&(this.EarlyAccessURL!=null)){this.preInstallJREList=this.getJREs();if(this.returnPage!=null){this.myInterval=setInterval("deployJava.poll()",3000)}location.href=this.EarlyAccessURL;return false}else{if(p=="MSIE"){return this.IEInstall()}else{if((p=="Netscape Family")&&(o.indexOf("win32")!=-1)){return this.FFInstall()}else{location.href=n(((this.returnPage!=null)?("&returnPage="+this.returnPage):"")+((this.locale!=null)?("&locale="+this.locale):"")+((this.brand!=null)?("&brand="+this.brand):""))}}return false}}},runApplet:function(p,u,r){if(r=="undefined"||r==null){r="1.1"}var t="^(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)(?:_(\\d+))?)?)?$";var o=r.match(t);if(this.returnPage==null){this.returnPage=document.location}if(o!=null){var q=this.getBrowser();if(q!="?"){if(this.versionCheck(r+"+")){this.writeAppletTag(p,u)}else{if(this.installJRE(r+"+")){this.refresh();location.href=document.location;this.writeAppletTag(p,u)}}}else{this.writeAppletTag(p,u)}}else{g("[runApplet()] Invalid minimumVersion argument to runApplet():"+r)}},writeAppletTag:function(r,w){var o="<"+"applet ";var q="";var t="<"+"/"+"applet"+">";var x=true;if(null==w||typeof w!="object"){w=new Object()}for(var p in r){if(!c(p)){w[p]=r[p]}else{o+=(" "+p+'="'+r[p]+'"');if(p=="code"){x=false}}}var v=false;for(var u in w){if(u=="codebase_lookup"){v=true}if(u=="object"||u=="java_object"||u=="java_code"){x=false}q+='<param name="'+u+'" value="'+w[u]+'"/>'}if(!v){q+='<param name="codebase_lookup" value="false"/>'}if(x){o+=(' code="dummy"')}o+=">";document.write(o+"\n"+q+"\n"+t)},versionCheck:function(p){var v=0;var x="^(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)(?:_(\\d+))?)?)?(\\*|\\+)?$";var y=p.match(x);if(y!=null){var r=false;var u=false;var q=new Array();for(var t=1;t<y.length;++t){if((typeof y[t]=="string")&&(y[t]!="")){q[v]=y[t];v++}}if(q[q.length-1]=="+"){u=true;r=false;q.length--}else{if(q[q.length-1]=="*"){u=false;r=true;q.length--}else{if(q.length<4){u=false;r=true}}}var w=this.getJREs();for(var t=0;t<w.length;++t){if(this.compareVersionToPattern(w[t],q,r,u)){return true}}return false}else{var o="Invalid versionPattern passed to versionCheck: "+p;g("[versionCheck()] "+o);alert(o);return false}},isWebStartInstalled:function(r){var q=this.getBrowser();if(q=="?"){return true}if(r=="undefined"||r==null){r="1.4.2"}var p=false;var t="^(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)(?:_(\\d+))?)?)?$";var o=r.match(t);if(o!=null){p=this.versionCheck(r+"+")}else{g("[isWebStartInstaller()] Invalid minimumVersion argument to isWebStartInstalled(): "+r);p=this.versionCheck("1.4.2+")}return p},getJPIVersionUsingMimeType:function(){for(var p=0;p<navigator.mimeTypes.length;++p){var q=navigator.mimeTypes[p].type;var o=q.match(/^application\/x-java-applet;jpi-version=(.*)$/);if(o!=null){this.firefoxJavaVersion=o[1];if("Opera"!=this.browserName2){break}}}},launchWebStartApplication:function(r){var o=navigator.userAgent.toLowerCase();this.getJPIVersionUsingMimeType();if(this.isWebStartInstalled("1.7.0")==false){if((this.installJRE("1.7.0+")==false)||((this.isWebStartInstalled("1.7.0")==false))){return false}}var u=null;if(document.documentURI){u=document.documentURI}if(u==null){u=document.URL}var p=this.getBrowser();var q;if(p=="MSIE"){q="<"+'object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" '+'width="0" height="0">'+"<"+'PARAM name="launchjnlp" value="'+r+'"'+">"+"<"+'PARAM name="docbase" value="'+u+'"'+">"+"<"+"/"+"object"+">"}else{if(p=="Netscape Family"){q="<"+'embed type="application/x-java-applet;jpi-version='+this.firefoxJavaVersion+'" '+'width="0" height="0" '+'launchjnlp="'+r+'"'+'docbase="'+u+'"'+" />"}}if(document.body=="undefined"||document.body==null){document.write(q);document.location=u}else{var t=document.createElement("div");t.id="div1";t.style.position="relative";t.style.left="-10000px";t.style.margin="0px auto";t.className="dynamicDiv";t.innerHTML=q;document.body.appendChild(t)}},createWebStartLaunchButtonEx:function(q,p){if(this.returnPage==null){this.returnPage=q}var o="javascript:deployJava.launchWebStartApplication('"+q+"');";document.write("<"+'a href="'+o+"\" onMouseOver=\"window.status=''; "+'return true;"><'+"img "+'src="'+this.launchButtonPNG+'" '+'border="0" /><'+"/"+"a"+">")},createWebStartLaunchButton:function(q,p){if(this.returnPage==null){this.returnPage=q}var o="javascript:"+"if (!deployJava.isWebStartInstalled(""+p+"")) {"+"if (deployJava.installLatestJRE()) {"+"if (deployJava.launch(""+q+"")) {}"+"}"+"} else {"+"if (deployJava.launch(""+q+"")) {}"+"}";document.write("<"+'a href="'+o+"\" onMouseOver=\"window.status=''; "+'return true;"><'+"img "+'src="'+this.launchButtonPNG+'" '+'border="0" /><'+"/"+"a"+">")},launch:function(o){document.location=o;return true},isPluginInstalled:function(){var o=this.getPlugin();if(o&&o.jvms){return true}else{return false}},isAutoUpdateEnabled:function(){if(this.isPluginInstalled()){return this.getPlugin().isAutoUpdateEnabled()}return false},setAutoUpdateEnabled:function(){if(this.isPluginInstalled()){return this.getPlugin().setAutoUpdateEnabled()}return false},setInstallerType:function(o){this.installType=o;if(this.isPluginInstalled()){return this.getPlugin().setInstallerType(o)}return false},setAdditionalPackages:function(o){if(this.isPluginInstalled()){return this.getPlugin().setAdditionalPackages(o)}return false},setEarlyAccess:function(o){this.EAInstallEnabled=o},isPlugin2:function(){if(this.isPluginInstalled()){if(this.versionCheck("1.6.0_10+")){try{return this.getPlugin().isPlugin2()}catch(o){}}}return false},allowPlugin:function(){this.getBrowser();var o=("Safari"!=this.browserName2&&"Opera"!=this.browserName2);return o},getPlugin:function(){this.refresh();var o=null;if(this.allowPlugin()){o=document.getElementById("deployJavaPlugin")}return o},compareVersionToPattern:function(v,p,r,t){if(v==undefined||p==undefined){return false}var w="^(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)(?:_(\\d+))?)?)?$";var x=v.match(w);if(x!=null){var u=0;var y=new Array();for(var q=1;q<x.length;++q){if((typeof x[q]=="string")&&(x[q]!="")){y[u]=x[q];u++}}var o=Math.min(y.length,p.length);if(t){for(var q=0;q<o;++q){if(y[q]<p[q]){return false}else{if(y[q]>p[q]){return true}}}return true}else{for(var q=0;q<o;++q){if(y[q]!=p[q]){return false}}if(r){return true}else{return(y.length==p.length)}}}else{return false}},getBrowser:function(){if(this.browserName==null){var o=navigator.userAgent.toLowerCase();g("[getBrowser()] navigator.userAgent.toLowerCase() -> "+o);if((o.indexOf("msie")!=-1)&&(o.indexOf("opera")==-1)){this.browserName="MSIE";this.browserName2="MSIE"}else{if(o.indexOf("trident")!=-1||o.indexOf("Trident")!=-1){this.browserName="MSIE";this.browserName2="MSIE"}else{if(o.indexOf("iphone")!=-1){this.browserName="Netscape Family";this.browserName2="iPhone"}else{if((o.indexOf("firefox")!=-1)&&(o.indexOf("opera")==-1)){this.browserName="Netscape Family";this.browserName2="Firefox"}else{if(o.indexOf("chrome")!=-1){this.browserName="Netscape Family";this.browserName2="Chrome"}else{if(o.indexOf("safari")!=-1){this.browserName="Netscape Family";this.browserName2="Safari"}else{if((o.indexOf("mozilla")!=-1)&&(o.indexOf("opera")==-1)){this.browserName="Netscape Family";this.browserName2="Other"}else{if(o.indexOf("opera")!=-1){this.browserName="Netscape Family";this.browserName2="Opera"}else{this.browserName="?";this.browserName2="unknown"}}}}}}}}g("[getBrowser()] Detected browser name:"+this.browserName+", "+this.browserName2)}return this.browserName},testUsingActiveX:function(o){var q="JavaWebStart.isInstalled."+o+".0";if(typeof ActiveXObject=="undefined"||!ActiveXObject){g("[testUsingActiveX()] Browser claims to be IE, but no ActiveXObject object?");return false}try{return(new ActiveXObject(q)!=null)}catch(p){return false}},testForMSVM:function(){var p="{08B0E5C0-4FCB-11CF-AAA5-00401C608500}";if(typeof oClientCaps!="undefined"){var o=oClientCaps.getComponentVersion(p,"ComponentID");if((o=="")||(o=="5,0,5000,0")){return false}else{return true}}else{return false}},testUsingMimeTypes:function(p){if(!navigator.mimeTypes){g("[testUsingMimeTypes()] Browser claims to be Netscape family, but no mimeTypes[] array?");return false}for(var q=0;q<navigator.mimeTypes.length;++q){s=navigator.mimeTypes[q].type;var o=s.match(/^application\/x-java-applet\x3Bversion=(1\.8|1\.7|1\.6|1\.5|1\.4\.2)$/);if(o!=null){if(this.compareVersions(o[1],p)){return true}}}return false},testUsingPluginsArray:function(p){if((!navigator.plugins)||(!navigator.plugins.length)){return false}var o=navigator.platform.toLowerCase();for(var q=0;q<navigator.plugins.length;++q){s=navigator.plugins[q].description;if(s.search(/^Java Switchable Plug-in (Cocoa)/)!=-1){if(this.compareVersions("1.5.0",p)){return true}}else{if(s.search(/^Java/)!=-1){if(o.indexOf("win")!=-1){if(this.compareVersions("1.5.0",p)||this.compareVersions("1.6.0",p)){return true}}}}}if(this.compareVersions("1.5.0",p)){return true}return false},IEInstall:function(){location.href=n(((this.returnPage!=null)?("&returnPage="+this.returnPage):"")+((this.locale!=null)?("&locale="+this.locale):"")+((this.brand!=null)?("&brand="+this.brand):""));return false},done:function(p,o){},FFInstall:function(){location.href=n(((this.returnPage!=null)?("&returnPage="+this.returnPage):"")+((this.locale!=null)?("&locale="+this.locale):"")+((this.brand!=null)?("&brand="+this.brand):"")+((this.installType!=null)?("&type="+this.installType):""));return false},compareVersions:function(r,t){var p=r.split(".");var o=t.split(".");for(var q=0;q<p.length;++q){p[q]=Number(p[q])}for(var q=0;q<o.length;++q){o[q]=Number(o[q])}if(p.length==2){p[2]=0}if(p[0]>o[0]){return true}if(p[0]<o[0]){return false}if(p[1]>o[1]){return true}if(p[1]<o[1]){return false}if(p[2]>o[2]){return true}if(p[2]<o[2]){return false}return true},enableAlerts:function(){this.browserName=null;this.debug=true},poll:function(){this.refresh();var o=this.getJREs();if((this.preInstallJREList.length==0)&&(o.length!=0)){clearInterval(this.myInterval);if(this.returnPage!=null){location.href=this.returnPage}}if((this.preInstallJREList.length!=0)&&(o.length!=0)&&(this.preInstallJREList[0]!=o[0])){clearInterval(this.myInterval);if(this.returnPage!=null){location.href=this.returnPage}}},writePluginTag:function(){var o=this.getBrowser();if(o=="MSIE"){document.write("<"+'object classid="clsid:CAFEEFAC-DEC7-0000-0001-ABCDEFFEDCBA" '+'id="deployJavaPlugin" width="0" height="0">'+"<"+"/"+"object"+">")}else{if(o=="Netscape Family"&&this.allowPlugin()){this.writeEmbedTag()}}},refresh:function(){navigator.plugins.refresh(false);var o=this.getBrowser();if(o=="Netscape Family"&&this.allowPlugin()){var p=document.getElementById("deployJavaPlugin");if(p==null){this.writeEmbedTag()}}},writeEmbedTag:function(){var o=false;if(navigator.mimeTypes!=null){for(var p=0;p<navigator.mimeTypes.length;p++){if(navigator.mimeTypes[p].type==this.mimeType){if(navigator.mimeTypes[p].enabledPlugin){document.write("<"+'embed id="deployJavaPlugin" type="'+this.mimeType+'" hidden="true" />');o=true}}}if(!o){for(var p=0;p<navigator.mimeTypes.length;p++){if(navigator.mimeTypes[p].type==this.oldMimeType){if(navigator.mimeTypes[p].enabledPlugin){document.write("<"+'embed id="deployJavaPlugin" type="'+this.oldMimeType+'" hidden="true" />')}}}}}}};d.writePluginTag();if(d.locale==null){var h=null;if(h==null){try{h=navigator.userLanguage}catch(f){}}if(h==null){try{h=navigator.systemLanguage}catch(f){}}if(h==null){try{h=navigator.language}catch(f){}}if(h!=null){h.replace("-","_");d.locale=h}}return d}(); \ No newline at end of file diff --git a/bbb-client-check/src/AppStyle.css b/bbb-client-check/src/AppStyle.css index ededdcac77c2e9d75b8a989b871931c1eeacabc5..484fb02e6d3a252144a343c6a89b5b2284409799 100755 --- a/bbb-client-check/src/AppStyle.css +++ b/bbb-client-check/src/AppStyle.css @@ -11,6 +11,7 @@ s|Application { fontSize: 15; fontFamily: Arial; color: #e1e2e5; + textAlign: center; } .borderContainerStyle { diff --git a/bbb-client-check/src/BBBClientCheck.mxml b/bbb-client-check/src/BBBClientCheck.mxml index 2c254bfdc1f061e19553a1435d1bb514f68802d8..307088a4bd9474850a996cdf40c9127fb6fe9e13 100755 --- a/bbb-client-check/src/BBBClientCheck.mxml +++ b/bbb-client-check/src/BBBClientCheck.mxml @@ -46,14 +46,13 @@ </fx:Script> <s:controlBarContent> - <mx:Spacer width="50%"/> <mx:Label id="controlBarLabel" - text="{resourceManager.getString('resources', 'bbbsystemcheck.title')}" - styleName="controlBarLabelStyle"/> - <mx:Spacer width="50%"/> + width="100%" + text="{resourceManager.getString('resources', 'bbbsystemcheck.title')}" + styleName="controlBarLabelStyle"/> </s:controlBarContent> - <mainview:MainView width="60%" + <mainview:MainView width="80%" height="97%" styleName="borderContainerStyle"/> </s:Application> diff --git a/bbb-client-check/src/org/bigbluebutton/clientcheck/service/ExternalApiCallbacks.as b/bbb-client-check/src/org/bigbluebutton/clientcheck/service/ExternalApiCallbacks.as index 36995a90f23bd9cde2277cbbf372c4d2fcc4b121..aea1da53d12b9d6203d51ded05e78fce6117132a 100644 --- a/bbb-client-check/src/org/bigbluebutton/clientcheck/service/ExternalApiCallbacks.as +++ b/bbb-client-check/src/org/bigbluebutton/clientcheck/service/ExternalApiCallbacks.as @@ -1,22 +1,22 @@ -/** - * BigBlueButton open source conferencing system - http://www.bigbluebutton.org/ - * - * Copyright (c) 2014 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) 2014 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.clientcheck.service { import flash.external.ExternalInterface; @@ -24,13 +24,13 @@ package org.bigbluebutton.clientcheck.service import org.bigbluebutton.clientcheck.model.ISystemConfiguration; import org.bigbluebutton.clientcheck.model.test.ITestable; + import mx.resources.ResourceManager; + public class ExternalApiCallbacks implements IExternalApiCallbacks { [Inject] public var systemConfiguration:ISystemConfiguration; - private static var UNDEFINED:String="Undefined"; - public function ExternalApiCallbacks() { if (ExternalInterface.available) @@ -52,13 +52,13 @@ package org.bigbluebutton.clientcheck.service { if ((result == null) || (result == "")) { - item.testResult=UNDEFINED; + item.testResult = ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.result.undefined'); item.testSuccessfull=false; } else { item.testResult=result; - item.testSuccessfull=true + item.testSuccessfull=true; } } @@ -84,9 +84,19 @@ package org.bigbluebutton.clientcheck.service checkResult(value, systemConfiguration.language); } - public function javaEnabledCallbackHandler(value:String):void + public function javaEnabledCallbackHandler(value:Object):void { - checkResult(value, systemConfiguration.javaEnabled); + var testResult:String; + if (!value.enabled) { + testResult = ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.result.javaEnabled.disabled'); + } else if (value.version.length == 0) { + testResult = ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.result.javaEnabled.notDetected'); + } else { + testResult = value.version.join(', '); + } + + systemConfiguration.javaEnabled.testResult = testResult; + systemConfiguration.javaEnabled.testSuccessfull = value.appropriate; } public function isWebRTCSupportedCallbackHandler(value:String):void diff --git a/bbb-client-check/src/org/bigbluebutton/clientcheck/service/ExternalApiCalls.as b/bbb-client-check/src/org/bigbluebutton/clientcheck/service/ExternalApiCalls.as index 8bdf82dffc82286d313aa5602fd89a99e1fff938..c6ad8bbf3537e9530cfebb9fa9a6a59bac35823c 100644 --- a/bbb-client-check/src/org/bigbluebutton/clientcheck/service/ExternalApiCalls.as +++ b/bbb-client-check/src/org/bigbluebutton/clientcheck/service/ExternalApiCalls.as @@ -1,22 +1,22 @@ -/** - * BigBlueButton open source conferencing system - http://www.bigbluebutton.org/ - * - * Copyright (c) 2014 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) 2014 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.clientcheck.service { import flash.external.ExternalInterface; diff --git a/bbb-client-check/src/org/bigbluebutton/clientcheck/service/IExternalApiCallbacks.as b/bbb-client-check/src/org/bigbluebutton/clientcheck/service/IExternalApiCallbacks.as index fc8b7dd48295ddbb371d41fe6495116858b5e813..ab3642e2048a43f39cc4761a700a1fae617cf142 100644 --- a/bbb-client-check/src/org/bigbluebutton/clientcheck/service/IExternalApiCallbacks.as +++ b/bbb-client-check/src/org/bigbluebutton/clientcheck/service/IExternalApiCallbacks.as @@ -17,19 +17,19 @@ * */ -package org.bigbluebutton.clientcheck.service -{ - - public interface IExternalApiCallbacks - { - function userAgentCallbackHandler(value:String):void; - function cookieEnabledCallbackHandler(value:String):void; - function isPepperFlashCallbackHandler(value:String):void; - function languageCallbackHandler(value:String):void; - function javaEnabledCallbackHandler(value:String):void; - function screenSizeCallbackHandler(value:String):void; - function isWebRTCSupportedCallbackHandler(value:String):void; - function webRTCEchoTestCallbackHandler(success:Boolean, result:String):void; - function webRTCSocketTestCallbackHandler(success:Boolean, result:String):void; - } -} +package org.bigbluebutton.clientcheck.service +{ + + public interface IExternalApiCallbacks + { + function userAgentCallbackHandler(value:String):void; + function cookieEnabledCallbackHandler(value:String):void; + function isPepperFlashCallbackHandler(value:String):void; + function languageCallbackHandler(value:String):void; + function javaEnabledCallbackHandler(value:Object):void; + function screenSizeCallbackHandler(value:String):void; + function isWebRTCSupportedCallbackHandler(value:String):void; + function webRTCEchoTestCallbackHandler(success:Boolean, result:String):void; + function webRTCSocketTestCallbackHandler(success:Boolean, result:String):void; + } +} diff --git a/bbb-client-check/src/org/bigbluebutton/clientcheck/view/mainview/CustomItemRenderer.mxml b/bbb-client-check/src/org/bigbluebutton/clientcheck/view/mainview/CustomItemRenderer.mxml index 9facf43a364d0e9e3cea5b54f1da2629c05ea3f4..bb06b5f0c9a323f4b36fc444544dbe79fe06d792 100755 --- a/bbb-client-check/src/org/bigbluebutton/clientcheck/view/mainview/CustomItemRenderer.mxml +++ b/bbb-client-check/src/org/bigbluebutton/clientcheck/view/mainview/CustomItemRenderer.mxml @@ -8,20 +8,39 @@ <![CDATA[ override public function prepare(hasBeenRecycled:Boolean):void { - lblData.text=data[column.dataField]; + lblData.text = data[column.dataField]; } override public function set data(value:Object):void { super.data=value; - if (value.Status == 'Fail') - { - this.setStyle('color', "0xFF0000"); + + switch (value.Status) { + case StatusENUM.SUCCEED: + colorRect.visible = false; + break; + case StatusENUM.WARNING: + colorRect.visible = true; + solid.color = 0xFFFF00; + break; + case StatusENUM.FAILED: + colorRect.visible = true; + solid.color = 0xFF0000; + break; + default: + colorRect.visible = false; + break; } } ]]> </fx:Script> + <s:Rect id="colorRect" top="0" bottom="0" right="0" left="0"> + <s:fill> + <s:SolidColor id="solid" alpha="0.4"/> + </s:fill> + </s:Rect> + <s:Label id="lblData" top="9" left="7"/> diff --git a/bbb-client-check/src/org/bigbluebutton/clientcheck/view/mainview/MainViewBase.mxml b/bbb-client-check/src/org/bigbluebutton/clientcheck/view/mainview/MainViewBase.mxml index 0bddeaf8098a6adf8e50bdc6111285c17b141c3b..3cc0515806928eeaa522fd915175c042c9f24fd2 100755 --- a/bbb-client-check/src/org/bigbluebutton/clientcheck/view/mainview/MainViewBase.mxml +++ b/bbb-client-check/src/org/bigbluebutton/clientcheck/view/mainview/MainViewBase.mxml @@ -8,6 +8,11 @@ borderStyle="inset" borderWeight="4"> + <fx:Script> + <![CDATA[ + import spark.components.gridClasses.GridSelectionMode; + ]]> + </fx:Script> <s:layout> <s:VerticalLayout paddingLeft="10" paddingRight="10" @@ -18,12 +23,15 @@ <s:DataGrid width="100%" height="100%" id="_dataGrid" + selectionMode="{GridSelectionMode.NONE}" itemRenderer="org.bigbluebutton.clientcheck.view.mainview.CustomItemRenderer"> - <s:typicalItem> - <s:DataItem Item="*****************" - Result="*************************************************************" - Status="*********************"/> - </s:typicalItem> + <s:columns> + <s:ArrayList> + <s:GridColumn dataField="Item" headerText="{resourceManager.getString('resources', 'bbbsystemcheck.dataGridColumn.item')}"/> + <s:GridColumn dataField="Result" headerText="{resourceManager.getString('resources', 'bbbsystemcheck.dataGridColumn.result')}"/> + <s:GridColumn dataField="Status" headerText="{resourceManager.getString('resources', 'bbbsystemcheck.dataGridColumn.status')}"/> + </s:ArrayList> + </s:columns> <s:ArrayCollection> <fx:Object> <fx:Item/> diff --git a/bbb-client-check/src/org/bigbluebutton/clientcheck/view/mainview/MainViewMediator.as b/bbb-client-check/src/org/bigbluebutton/clientcheck/view/mainview/MainViewMediator.as index f17cbd26fd46eabe8a906215b475af34d48a1e27..e4db753810566b4dcac9f75c5645dc682bbbf83a 100644 --- a/bbb-client-check/src/org/bigbluebutton/clientcheck/view/mainview/MainViewMediator.as +++ b/bbb-client-check/src/org/bigbluebutton/clientcheck/view/mainview/MainViewMediator.as @@ -1,22 +1,22 @@ -/** - * BigBlueButton open source conferencing system - http://www.bigbluebutton.org/ - * - * Copyright (c) 2014 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) 2014 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.clientcheck.view.mainview { import flash.events.Event; @@ -82,9 +82,6 @@ package org.bigbluebutton.clientcheck.view.mainview private var dataProvider:ArrayCollection=new ArrayCollection; - private static var FAILED:String="Fail"; - private static var SUCCEED:String="Succeed"; - override public function initialize():void { super.initialize(); @@ -183,7 +180,7 @@ package org.bigbluebutton.clientcheck.view.mainview if (appObj) { - var obj:Object={Item: appObj.applicationName, Result: appObj.testResult, Status: ((appObj.testSuccessfull == true) ? SUCCEED : FAILED)}; + var obj:Object={Item: appObj.applicationName, Result: appObj.testResult, Status: ((appObj.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED)}; updateItemInDataProvider(obj); } else @@ -208,7 +205,7 @@ package org.bigbluebutton.clientcheck.view.mainview if (portObj) { - var obj:Object={Item: portObj.portName, Result: portObj.testResult, Status: ((portObj.testSuccessfull == true) ? SUCCEED : FAILED)}; + var obj:Object={Item: portObj.portName, Result: portObj.testResult, Status: ((portObj.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED)}; updateItemInDataProvider(obj); } else @@ -219,86 +216,85 @@ package org.bigbluebutton.clientcheck.view.mainview private function pingSpeedTestChangedHandler():void { - var obj:Object={Item: PingTest.PING, Result: systemConfiguration.pingTest.testResult, Status: ((systemConfiguration.pingTest.testSuccessfull == true) ? SUCCEED : FAILED)}; + var obj:Object={Item: PingTest.PING, Result: systemConfiguration.pingTest.testResult, Status: ((systemConfiguration.pingTest.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED)}; updateItemInDataProvider(obj); } private function downloadSpeedTestChangedHandler():void { - var obj:Object={Item: DownloadBandwidthTest.DOWNLOAD_SPEED, Result: systemConfiguration.downloadBandwidthTest.testResult, Status: ((systemConfiguration.downloadBandwidthTest.testSuccessfull == true) ? SUCCEED : FAILED)}; + var obj:Object={Item: DownloadBandwidthTest.DOWNLOAD_SPEED, Result: systemConfiguration.downloadBandwidthTest.testResult, Status: ((systemConfiguration.downloadBandwidthTest.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED)}; updateItemInDataProvider(obj); } private function uploadSpeedTestChangedHandler():void { - var obj:Object={Item: UploadBandwidthTest.UPLOAD_SPEED, Result: systemConfiguration.uploadBandwidthTest.testResult, Status: ((systemConfiguration.uploadBandwidthTest.testSuccessfull == true) ? SUCCEED : FAILED)}; + var obj:Object={Item: UploadBandwidthTest.UPLOAD_SPEED, Result: systemConfiguration.uploadBandwidthTest.testResult, Status: ((systemConfiguration.uploadBandwidthTest.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED)}; updateItemInDataProvider(obj); } private function webRTCSocketTestChangedHandler():void { - var obj:Object={Item: WebRTCSocketTest.WEBRTC_SOCKET_TEST, Result: systemConfiguration.webRTCSocketTest.testResult, Status: ((systemConfiguration.webRTCSocketTest.testSuccessfull == true) ? SUCCEED : FAILED)}; + var obj:Object={Item: WebRTCSocketTest.WEBRTC_SOCKET_TEST, Result: systemConfiguration.webRTCSocketTest.testResult, Status: ((systemConfiguration.webRTCSocketTest.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.WARNING)}; updateItemInDataProvider(obj); } private function webRTCEchoTestChangedHandler():void { - var obj:Object={Item: WebRTCEchoTest.WEBRTC_ECHO_TEST, Result: systemConfiguration.webRTCEchoTest.testResult, Status: ((systemConfiguration.webRTCEchoTest.testSuccessfull == true) ? SUCCEED : FAILED)}; + var obj:Object={Item: WebRTCEchoTest.WEBRTC_ECHO_TEST, Result: systemConfiguration.webRTCEchoTest.testResult, Status: ((systemConfiguration.webRTCEchoTest.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.WARNING)}; updateItemInDataProvider(obj); } private function isPepperFlashChangedHandler():void { - var obj:Object={Item: IsPepperFlashTest.PEPPER_FLASH, Result: systemConfiguration.isPepperFlash.testResult, Status: ((systemConfiguration.isPepperFlash.testSuccessfull == true) ? SUCCEED : FAILED)}; + var obj:Object={Item: IsPepperFlashTest.PEPPER_FLASH, Result: systemConfiguration.isPepperFlash.testResult, Status: ((systemConfiguration.isPepperFlash.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED)}; updateItemInDataProvider(obj); } private function languageChangedHandler():void { - var obj:Object={Item: LanguageTest.LANGUAGE, Result: systemConfiguration.language.testResult, Status: ((systemConfiguration.language.testSuccessfull == true) ? SUCCEED : FAILED)}; + var obj:Object={Item: LanguageTest.LANGUAGE, Result: systemConfiguration.language.testResult, Status: ((systemConfiguration.language.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED)}; updateItemInDataProvider(obj); } private function javaEnabledChangedHandler():void { - var obj:Object={Item: JavaEnabledTest.JAVA_ENABLED, Result: systemConfiguration.javaEnabled.testResult, Status: ((systemConfiguration.javaEnabled.testSuccessfull == true) ? SUCCEED : FAILED)}; + var obj:Object={Item: JavaEnabledTest.JAVA_ENABLED, Result: systemConfiguration.javaEnabled.testResult, Status: ((systemConfiguration.javaEnabled.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.WARNING)}; updateItemInDataProvider(obj); } private function isWebRTCSupportedChangedHandler():void { - var obj:Object={Item: WebRTCSupportedTest.WEBRTC_SUPPORTED, Result: systemConfiguration.isWebRTCSupported.testResult, Status: ((systemConfiguration.isWebRTCSupported.testSuccessfull == true) ? SUCCEED : FAILED)}; + var obj:Object={Item: WebRTCSupportedTest.WEBRTC_SUPPORTED, Result: systemConfiguration.isWebRTCSupported.testResult, Status: ((systemConfiguration.isWebRTCSupported.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.WARNING)}; updateItemInDataProvider(obj); } private function cookieEnabledChangedHandler():void { - var obj:Object={Item: CookieEnabledTest.COOKIE_ENABLED, Result: systemConfiguration.cookieEnabled.testResult, Status: ((systemConfiguration.cookieEnabled.testSuccessfull == true) ? SUCCEED : FAILED)}; + var obj:Object={Item: CookieEnabledTest.COOKIE_ENABLED, Result: systemConfiguration.cookieEnabled.testResult, Status: ((systemConfiguration.cookieEnabled.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED)}; updateItemInDataProvider(obj); } private function screenSizeChangedHandler():void { - var obj:Object={Item: ScreenSizeTest.SCREEN_SIZE, Result: systemConfiguration.screenSize.testResult, Status: ((systemConfiguration.screenSize.testSuccessfull == true) ? SUCCEED : FAILED)}; + var obj:Object={Item: ScreenSizeTest.SCREEN_SIZE, Result: systemConfiguration.screenSize.testResult, Status: ((systemConfiguration.screenSize.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED)}; updateItemInDataProvider(obj); } - private function browserChangedHandler():void { - var obj:Object={Item: BrowserTest.BROWSER, Result: systemConfiguration.browser.testResult, Status: ((systemConfiguration.browser.testSuccessfull == true) ? SUCCEED : FAILED)}; + var obj:Object={Item: BrowserTest.BROWSER, Result: systemConfiguration.browser.testResult, Status: ((systemConfiguration.browser.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED)}; updateItemInDataProvider(obj); } private function userAgentChangedHandler():void { - var obj:Object={Item: UserAgentTest.USER_AGENT, Result: systemConfiguration.userAgent.testResult, Status: ((systemConfiguration.userAgent.testSuccessfull == true) ? SUCCEED : FAILED)}; + var obj:Object={Item: UserAgentTest.USER_AGENT, Result: systemConfiguration.userAgent.testResult, Status: ((systemConfiguration.userAgent.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED)}; updateItemInDataProvider(obj); } private function flashVersionChangedHandler():void { - var obj:Object={Item: FlashVersionTest.FLASH_VERSION, Result: systemConfiguration.flashVersion.testResult, Status: ((systemConfiguration.flashVersion.testSuccessfull == true) ? SUCCEED : FAILED)}; + var obj:Object={Item: FlashVersionTest.FLASH_VERSION, Result: systemConfiguration.flashVersion.testResult, Status: ((systemConfiguration.flashVersion.testSuccessfull == true) ? StatusENUM.SUCCEED : StatusENUM.FAILED)}; updateItemInDataProvider(obj); } diff --git a/bbb-client-check/src/org/bigbluebutton/clientcheck/view/mainview/StatusENUM.as b/bbb-client-check/src/org/bigbluebutton/clientcheck/view/mainview/StatusENUM.as new file mode 100644 index 0000000000000000000000000000000000000000..3d66fcc7132a6b3c90d9958967da937dc6d21cb8 --- /dev/null +++ b/bbb-client-check/src/org/bigbluebutton/clientcheck/view/mainview/StatusENUM.as @@ -0,0 +1,29 @@ +/** + * BigBlueButton open source conferencing system - http://www.bigbluebutton.org/ + * + * Copyright (c) 2014 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.clientcheck.view.mainview +{ + import mx.resources.ResourceManager; + + public class StatusENUM { + public static const FAILED:String = ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.status.failed'); + public static const WARNING:String = ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.status.warning'); + public static const SUCCEED:String = ResourceManager.getInstance().getString('resources', 'bbbsystemcheck.status.succeeded'); + } +}