Index: lams_flex/.project =================================================================== diff -u --- lams_flex/.project (revision 0) +++ lams_flex/.project (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,11 @@ + + + lams_flex + + + + + + + + Index: lams_flex/BranchManager/.actionScriptProperties =================================================================== diff -u --- lams_flex/BranchManager/.actionScriptProperties (revision 0) +++ lams_flex/BranchManager/.actionScriptProperties (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + Index: lams_flex/BranchManager/.flexProperties =================================================================== diff -u --- lams_flex/BranchManager/.flexProperties (revision 0) +++ lams_flex/BranchManager/.flexProperties (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,2 @@ + + Index: lams_flex/BranchManager/.project =================================================================== diff -u --- lams_flex/BranchManager/.project (revision 0) +++ lams_flex/BranchManager/.project (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,30 @@ + + + BranchManager + + + + + + com.adobe.flexbuilder.project.flexbuilder + + + + + + com.adobe.flexbuilder.project.flexnature + com.adobe.flexbuilder.project.actionscriptnature + + + + bin-release1 + 2 + D:/LAMS_HEAD/lams_monitoring/web/branching + + + bin-release + 2 + D:/LAMS_HEAD/lams_monitoring/web/branching + + + Index: lams_flex/BranchManager/.settings/org.eclipse.core.resources.prefs =================================================================== diff -u --- lams_flex/BranchManager/.settings/org.eclipse.core.resources.prefs (revision 0) +++ lams_flex/BranchManager/.settings/org.eclipse.core.resources.prefs (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,3 @@ +#Wed Nov 05 10:25:30 EST 2008 +eclipse.preferences.version=1 +encoding/=utf-8 Index: lams_flex/BranchManager/html-template/AC_OETags.js =================================================================== diff -u --- lams_flex/BranchManager/html-template/AC_OETags.js (revision 0) +++ lams_flex/BranchManager/html-template/AC_OETags.js (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,278 @@ +// Flash Player Version Detection - Rev 1.6 +// Detect Client Browser type +// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved. +var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false; +var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false; +var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false; + +function ControlVersion() +{ + var version; + var axo; + var e; + + // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry + + try { + // version will be set for 7.X or greater players + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); + version = axo.GetVariable("$version"); + } catch (e) { + } + + if (!version) + { + try { + // version will be set for 6.X players only + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); + + // installed player is some revision of 6.0 + // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29, + // so we have to be careful. + + // default to the first public version + version = "WIN 6,0,21,0"; + + // throws if AllowScripAccess does not exist (introduced in 6.0r47) + axo.AllowScriptAccess = "always"; + + // safe to call for 6.0r47 or greater + version = axo.GetVariable("$version"); + + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 4.X or 5.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); + version = axo.GetVariable("$version"); + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 3.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); + version = "WIN 3,0,18,0"; + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 2.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); + version = "WIN 2,0,0,11"; + } catch (e) { + version = -1; + } + } + + return version; +} + +// JavaScript helper required to detect Flash Player PlugIn version information +function GetSwfVer(){ + // NS/Opera version >= 3 check for Flash plugin in plugin array + var flashVer = -1; + + if (navigator.plugins != null && navigator.plugins.length > 0) { + if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) { + var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : ""; + var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description; + var descArray = flashDescription.split(" "); + var tempArrayMajor = descArray[2].split("."); + var versionMajor = tempArrayMajor[0]; + var versionMinor = tempArrayMajor[1]; + var versionRevision = descArray[3]; + if (versionRevision == "") { + versionRevision = descArray[4]; + } + if (versionRevision[0] == "d") { + versionRevision = versionRevision.substring(1); + } else if (versionRevision[0] == "r") { + versionRevision = versionRevision.substring(1); + if (versionRevision.indexOf("d") > 0) { + versionRevision = versionRevision.substring(0, versionRevision.indexOf("d")); + } + } else if (versionRevision[0] == "b") { + versionRevision = versionRevision.substring(1); + } + var flashVer = versionMajor + "." + versionMinor + "." + versionRevision; + } + } + // MSN/WebTV 2.6 supports Flash 4 + else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4; + // WebTV 2.5 supports Flash 3 + else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3; + // older WebTV supports Flash 2 + else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2; + else if ( isIE && isWin && !isOpera ) { + flashVer = ControlVersion(); + } + return flashVer; +} + +// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available +function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) +{ + versionStr = GetSwfVer(); + if (versionStr == -1 ) { + return false; + } else if (versionStr != 0) { + if(isIE && isWin && !isOpera) { + // Given "WIN 2,0,0,11" + tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"] + tempString = tempArray[1]; // "2,0,0,11" + versionArray = tempString.split(","); // ['2', '0', '0', '11'] + } else { + versionArray = versionStr.split("."); + } + var versionMajor = versionArray[0]; + var versionMinor = versionArray[1]; + var versionRevision = versionArray[2]; + + // is the major.revision >= requested major.revision AND the minor version >= requested minor + if (versionMajor > parseFloat(reqMajorVer)) { + return true; + } else if (versionMajor == parseFloat(reqMajorVer)) { + if (versionMinor > parseFloat(reqMinorVer)) + return true; + else if (versionMinor == parseFloat(reqMinorVer)) { + if (versionRevision >= parseFloat(reqRevision)) + return true; + } + } + return false; + } +} + +function AC_AddExtension(src, ext) +{ + if (src.indexOf('?') != -1) + return src.replace(/\?/, ext+'?'); + else + return src + ext; +} + +function AC_Generateobj(objAttrs, params, embedAttrs) +{ + var str = ''; + if (isIE && isWin && !isOpera) + { + str += ' '; + str += ''; + } else { + str += ' + + + + + + + + + + + +${title} + + + + + + + + + + + + + + + Index: lams_flex/BranchManager/html-template/playerProductInstall.swf =================================================================== diff -u Binary files differ Index: lams_flex/BranchManager/src/BranchManager.mxml =================================================================== diff -u --- lams_flex/BranchManager/src/BranchManager.mxml (revision 0) +++ lams_flex/BranchManager/src/BranchManager.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,423 @@ + + + + + + + + getBranches + + + + + + + + getClassMembersNotGrouped + + + + + + + + getBranchMembers + + + + + + + + + addMembers + + + + + + + + + + removeMembers + + + + + + + + + + + + + + + + + + + + + + ../bin-debug/loading_small.swf + + + + Index: lams_flex/CloudWizard/.actionScriptProperties =================================================================== diff -u --- lams_flex/CloudWizard/.actionScriptProperties (revision 0) +++ lams_flex/CloudWizard/.actionScriptProperties (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + Index: lams_flex/CloudWizard/.flexProperties =================================================================== diff -u --- lams_flex/CloudWizard/.flexProperties (revision 0) +++ lams_flex/CloudWizard/.flexProperties (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,2 @@ + + Index: lams_flex/CloudWizard/.project =================================================================== diff -u --- lams_flex/CloudWizard/.project (revision 0) +++ lams_flex/CloudWizard/.project (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,25 @@ + + + CloudWizard + + + + + + com.adobe.flexbuilder.project.flexbuilder + + + + + + com.adobe.flexbuilder.project.flexnature + com.adobe.flexbuilder.project.actionscriptnature + + + + bin-release + 2 + C:/Documents and Settings/Admin/lams_head/lams_monitoring/web + + + Index: lams_flex/CloudWizard/.settings/org.eclipse.core.resources.prefs =================================================================== diff -u --- lams_flex/CloudWizard/.settings/org.eclipse.core.resources.prefs (revision 0) +++ lams_flex/CloudWizard/.settings/org.eclipse.core.resources.prefs (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,3 @@ +#Thu Mar 12 12:23:01 PDT 2009 +eclipse.preferences.version=1 +encoding/=utf-8 Index: lams_flex/CloudWizard/html-template/AC_OETags.js =================================================================== diff -u --- lams_flex/CloudWizard/html-template/AC_OETags.js (revision 0) +++ lams_flex/CloudWizard/html-template/AC_OETags.js (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,292 @@ +// Flash Player Version Detection - Rev 1.6 +// Detect Client Browser type +// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved. +var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false; +var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false; +var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false; + +function ControlVersion() +{ + var version; + var axo; + var e; + + // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry + + try { + // version will be set for 7.X or greater players + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); + version = axo.GetVariable("$version"); + } catch (e) { + } + + if (!version) + { + try { + // version will be set for 6.X players only + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); + + // installed player is some revision of 6.0 + // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29, + // so we have to be careful. + + // default to the first public version + version = "WIN 6,0,21,0"; + + // throws if AllowScripAccess does not exist (introduced in 6.0r47) + axo.AllowScriptAccess = "always"; + + // safe to call for 6.0r47 or greater + version = axo.GetVariable("$version"); + + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 4.X or 5.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); + version = axo.GetVariable("$version"); + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 3.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); + version = "WIN 3,0,18,0"; + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 2.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); + version = "WIN 2,0,0,11"; + } catch (e) { + version = -1; + } + } + + return version; +} + +// JavaScript helper required to detect Flash Player PlugIn version information +function GetSwfVer(){ + // NS/Opera version >= 3 check for Flash plugin in plugin array + var flashVer = -1; + + if (navigator.plugins != null && navigator.plugins.length > 0) { + if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) { + var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : ""; + var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description; + var descArray = flashDescription.split(" "); + var tempArrayMajor = descArray[2].split("."); + var versionMajor = tempArrayMajor[0]; + var versionMinor = tempArrayMajor[1]; + var versionRevision = descArray[3]; + if (versionRevision == "") { + versionRevision = descArray[4]; + } + if (versionRevision[0] == "d") { + versionRevision = versionRevision.substring(1); + } else if (versionRevision[0] == "r") { + versionRevision = versionRevision.substring(1); + if (versionRevision.indexOf("d") > 0) { + versionRevision = versionRevision.substring(0, versionRevision.indexOf("d")); + } + } else if (versionRevision[0] == "b") { + versionRevision = versionRevision.substring(1); + } + var flashVer = versionMajor + "." + versionMinor + "." + versionRevision; + } + } + // MSN/WebTV 2.6 supports Flash 4 + else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4; + // WebTV 2.5 supports Flash 3 + else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3; + // older WebTV supports Flash 2 + else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2; + else if ( isIE && isWin && !isOpera ) { + flashVer = ControlVersion(); + } + return flashVer; +} + +// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available +function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) +{ + versionStr = GetSwfVer(); + if (versionStr == -1 ) { + return false; + } else if (versionStr != 0) { + if(isIE && isWin && !isOpera) { + // Given "WIN 2,0,0,11" + tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"] + tempString = tempArray[1]; // "2,0,0,11" + versionArray = tempString.split(","); // ['2', '0', '0', '11'] + } else { + versionArray = versionStr.split("."); + } + var versionMajor = versionArray[0]; + var versionMinor = versionArray[1]; + var versionRevision = versionArray[2]; + + // is the major.revision >= requested major.revision AND the minor version >= requested minor + if (versionMajor > parseFloat(reqMajorVer)) { + return true; + } else if (versionMajor == parseFloat(reqMajorVer)) { + if (versionMinor > parseFloat(reqMinorVer)) + return true; + else if (versionMinor == parseFloat(reqMinorVer)) { + if (versionRevision >= parseFloat(reqRevision)) + return true; + } + } + return false; + } +} + +function AC_AddExtension(src, ext) +{ + var qIndex = src.indexOf('?'); + if ( qIndex != -1) + { + // Add the extention (if needed) before the query params + var path = src.substring(0, qIndex); + if (path.length >= ext.length && path.lastIndexOf(ext) == (path.length - ext.length)) + return src; + else + return src.replace(/\?/, ext+'?'); + } + else + { + // Add the extension (if needed) to the end of the URL + if (src.length >= ext.length && src.lastIndexOf(ext) == (src.length - ext.length)) + return src; // Already have extension + else + return src + ext; + } +} + +function AC_Generateobj(objAttrs, params, embedAttrs) +{ + var str = ''; + if (isIE && isWin && !isOpera) + { + str += ' '; + str += ''; + } else { + str += ' + + + + + + + + + + + +${title} + + + + + + + + + + + + + + + Index: lams_flex/CloudWizard/html-template/playerProductInstall.swf =================================================================== diff -u Binary files differ Index: lams_flex/CloudWizard/src/CloudWizard.mxml =================================================================== diff -u --- lams_flex/CloudWizard/src/CloudWizard.mxml (revision 0) +++ lams_flex/CloudWizard/src/CloudWizard.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_flex/CloudWizard/src/assets/styles/main.css =================================================================== diff -u --- lams_flex/CloudWizard/src/assets/styles/main.css (revision 0) +++ lams_flex/CloudWizard/src/assets/styles/main.css (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,61 @@ +/* CSS file */ +Application { + backgroundColor: #FFFFFF; + themeColor: #0087e5; + backgroundGradientAlphas: 1.0, 1.0; + backgroundGradientColors: #FFFFFF, #FFFFFF; +} + +Alert { + backgroundColor: #FFFFFF; + color: #000000; +} + + +Panel { + borderColor: #45a6ed; + borderThicknessLeft: 1; + borderThicknessRight: 1; + borderThicknessBottom: 1; + borderAlpha: 1; + + paddingTop: 0; + paddingLeft: 0; + paddingRight: 0; + paddingBottom: 0; + + highlightAlphas: 0.67, 0; + headerColors: #45a6ed, #0087e5; + + titleStyleName: "myPanelStyle"; +} + +Wizard { + horizontalAlign : center; +} + +.mainBody { + backgroundColor: #FFFFFF; + paddingTop: 20; + horizontalAlign : center; +} + +Form, Label, TextInput { + color: #000000; + font-weight: normal; +} + +FormItem, List { + font-weight: bold; + text-align: left; +} + +.myPanelStyle { + color: #FFFFFF; +} + +.panelText { + color: #000000; + font-weight: none; + text-align: left; +} Index: lams_flex/CloudWizard/src/org/lamsfoundation/lams/business/WizardManager.as =================================================================== diff -u --- lams_flex/CloudWizard/src/org/lamsfoundation/lams/business/WizardManager.as (revision 0) +++ lams_flex/CloudWizard/src/org/lamsfoundation/lams/business/WizardManager.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,211 @@ +package org.lamsfoundation.lams.business +{ + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.external.*; + import flash.utils.clearInterval; + import flash.utils.setInterval; + + import mx.collections.ArrayCollection; + + import org.lamsfoundation.lams.common.dictionary.XMLDictionaryRegistry; + import org.lamsfoundation.lams.vos.Lesson; + import org.lamsfoundation.lams.vos.WorkspaceItem; + + public class WizardManager extends EventDispatcher + { + public var READ_ACCESS:Number = 1; + public var MEMBERSHIP_ACCESS:Number = 2; + public var OWNER_ACCESS:Number = 3; + public var NO_ACCESS:Number = 4; + + /*-.........................................Properties..........................................*/ + private var _dictionaryRegistry:XMLDictionaryRegistry; + + // lesson tab + private var _selectedResource:WorkspaceItem; + private var _workspaceRoot:WorkspaceItem; + + // learners tab + private var _learners:ArrayCollection; + private var _staff:ArrayCollection; + private var _usersLoaded:Boolean; + + private var _lessonID:uint; + private var _initializedLesson:Lesson; + + private var _lessonInstances:Array; + private var _xmppRoomCount:uint = 0; + + private var closeInterval:uint = 0; + + /*-.........................................Constructor..........................................*/ + public function WizardManager() + { + _dictionaryRegistry = new XMLDictionaryRegistry(new XML()); + + setLearners(new ArrayCollection()); + setStaff(new ArrayCollection(), 0); + + _lessonInstances = new Array(); + + _usersLoaded = false; + } + + /*-.........................................Setters and Getters..........................................*/ + + [Bindable (event="workspaceRootChanged")] + public function get workspaceRoot():WorkspaceItem + { + return _workspaceRoot; + } + + [Bindable (event="learnersChanged")] + public function get learners():ArrayCollection + { + return _learners; + } + + [Bindable (event="staffChanged")] + public function get staff():ArrayCollection + { + return _staff; + } + + [Bindable (event="usersLoadedChanged")] + public function get usersLoaded():Boolean + { + return _usersLoaded; + } + + [Bindable (event="lessonIDChanged")] + public function get lessonID():uint + { + return _lessonID; + } + + [Bindable (event="lessonInstancesChanged")] + public function get lessonInstances():Array + { + return _lessonInstances; + } + + [Bindable (event="xxmpRoomCreated")] + public function get xxmpRoomCount():uint + { + return _xmppRoomCount; + } + + [Bindable (event="dictionaryUpdated")] + public function get dictionaryRegistry():XMLDictionaryRegistry + { + return _dictionaryRegistry; + } + + /*-.........................................Methods..........................................*/ + + public function initWorkspace():WorkspaceItem { + var item:WorkspaceItem = new WorkspaceItem(); + item.populate({name: "root", description: "root node", resourceID: -1, resourceType:WorkspaceItem.RT_FOLDER}); + + _workspaceRoot = item; + + dispatchEvent(new Event("workspaceRootChanged")); + + return workspaceRoot; + } + + public function setFolderContents(contents:Object, folder:WorkspaceItem):Array { + var foldersToOpen:Array = new Array(); + + for each(var content:Object in contents.contents as ArrayCollection) { + var newItem:WorkspaceItem = new WorkspaceItem(); + newItem.populate(content); + + newItem.parentWorkspaceFolderID = folder.workspaceFolderID; + + folder.children.addItem(newItem); + } + + if(folder.resourceID == -1) + foldersToOpen.push(folder.children.getItemAt(0)); + + return foldersToOpen; + } + + public function setUsersLoaded(value:Boolean):void { + _usersLoaded = value; + + dispatchEvent(new Event("usersLoadedChanged")); + } + + public function setLesson(newlessonID:uint, newLesson:Lesson):void { + _lessonID = newlessonID; + _initializedLesson = newLesson; + + if(_lessonInstances.length <= 0) + setLessonInstances(new ArrayCollection([newlessonID]), newLesson); + + dispatchEvent(new Event("lessonIDChanged")); + } + + public function setLessonInstances(instances:ArrayCollection, newLesson:Lesson):void { + _lessonInstances = instances.toArray(); + + if(_lessonInstances.length == 1) + setLesson(_lessonInstances[0], newLesson); + + dispatchEvent(new Event("lessonInstancesChanged")); + } + + public function setLearners(newLearners:ArrayCollection):void { + _learners = newLearners; + + dispatchEvent(new Event("learnersChanged")); + } + + public function setStaff(newStaff:ArrayCollection, userId:uint):void { + _staff = newStaff; + + for each(var staff:Object in _staff) { + if (staff.userID == userId) { + staff.isCurrentUser = true; + } + } + + dispatchEvent(new Event("staffChanged")); + } + + public function setDictionary(xml:XML):void { + _dictionaryRegistry.xml = xml; + + dispatchEvent(new Event("dictionaryUpdated")); + } + + public function closeOnSuccess(success:Boolean, last:Boolean):void { + //trace('success close: ' + success); + //trace('success last: ' + last); + //trace('success room count: ' + xxmpRoomCount); + //trace('success li length: ' + lessonInstances.length); + + if(success && last && xxmpRoomCount >= lessonInstances.length) { + clearInterval(closeInterval); + ExternalInterface.call("close"); + } else if(closeInterval == 0 && last) + closeInterval = setInterval(closeOnSuccess, 500, success, last); + } + + public function closeNoStart():void { + ExternalInterface.call("close"); + } + + public function updateXmppRoomCount():void { + _xmppRoomCount++; + + dispatchEvent(new Event("xxmpRoomCreated")); + } + + // ----------------------------------------------------------- + + } +} \ No newline at end of file Index: lams_flex/CloudWizard/src/org/lamsfoundation/lams/events/NavigationEvent.as =================================================================== diff -u --- lams_flex/CloudWizard/src/org/lamsfoundation/lams/events/NavigationEvent.as (revision 0) +++ lams_flex/CloudWizard/src/org/lamsfoundation/lams/events/NavigationEvent.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,25 @@ +package org.lamsfoundation.lams.events +{ + import flash.events.Event; + + import org.lamsfoundation.lams.vos.*; + + public class NavigationEvent extends Event + { + /*-.........................................Constants..........................................*/ + + public static const TAB_SELECT: String = "tabSelectNavigationEvent" + public static const LESSON: String = "lessonNavigationEvent" + public static const LEARNERS: String = "learnersNavigationEvent" + public static const ADVANCED: String = "advancedNavigationEvent" + + public var selectedIndex:uint; + + /*-.........................................Constructor..........................................*/ + public function NavigationEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false) + { + super(type, bubbles, cancelable); + } + + } +} \ No newline at end of file Index: lams_flex/CloudWizard/src/org/lamsfoundation/lams/events/WizardErrorEvent.as =================================================================== diff -u --- lams_flex/CloudWizard/src/org/lamsfoundation/lams/events/WizardErrorEvent.as (revision 0) +++ lams_flex/CloudWizard/src/org/lamsfoundation/lams/events/WizardErrorEvent.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,22 @@ +package org.lamsfoundation.lams.events +{ + import flash.events.Event; + + public class WizardErrorEvent extends Event + { + /*-.........................................Constants..........................................*/ + + public static const SHOW_ERROR:String = "showErrorEvent"; + + + /*-.........................................Properties..........................................*/ + public var message:String; + /*-.........................................Constructor..........................................*/ + + public function WizardErrorEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false) + { + super(type, bubbles, cancelable); + } + + } +} \ No newline at end of file Index: lams_flex/CloudWizard/src/org/lamsfoundation/lams/events/WizardEvent.as =================================================================== diff -u --- lams_flex/CloudWizard/src/org/lamsfoundation/lams/events/WizardEvent.as (revision 0) +++ lams_flex/CloudWizard/src/org/lamsfoundation/lams/events/WizardEvent.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,67 @@ +package org.lamsfoundation.lams.events +{ + import flash.events.Event; + + import mx.collections.ArrayCollection; + import mx.core.Application; + + import org.lamsfoundation.lams.vos.Lesson; + import org.lamsfoundation.lams.vos.WorkspaceItem; + + public class WizardEvent extends Event + { + /*-.........................................Constants..........................................*/ + + public static const INIT_WORKSPACE:String = "initWorkspaceEvent"; + + public static const GET_FOLDER_CONTENTS:String = "getFolderContentsEvent"; + public static const OPEN_FOLDER:String = "openFolderContentsEvent"; + + public static const LOAD_ORGANISATION_USERS:String = "loadOrganisationUsers"; + public static const LOAD_ORGANISATION_LEARNERS:String = "loadOrganisationStaff"; + public static const LOAD_ORGANISATION_STAFF:String = "loadOrganisationLearners"; + + public static const ADD_LESSON:String = "addLessonEvent"; + public static const SCHEDULE_LESSON:String = "scheduleLessonEvent"; + public static const CREATE_LESSON_CLASS:String = "createLessonClassEvent"; + public static const SPLIT_LESSON_CLASS:String = "splitLessonClassEvent"; + public static const START:String = "startEvent"; + public static const START_LESSON:String = "startLessonEvent"; + public static const CREATE_PRESENCE_ROOM:String = "createPresenceRoomEvent"; + + public static const CLOSE_NOSTART:String = "closeNoStartEvent"; + public static const CHANGE_START_BUTTON_LABEL:String = "changeStartButtonLabelEvent"; + + /*-.........................................Properties..........................................*/ + + public var mode:uint = 2; + + public var folderID:int = -1; + public var folder:WorkspaceItem; + public var folders:Array; + + public var organisationID:uint = Application.application.param("organisationID"); + + public var contents:ArrayCollection; + + public var lesson:Lesson; + + public var startEvent_type:String; + public var schedule:String; + public var timeZone:uint; + + public var last:Boolean = true; + + public var label:String; // changing start button label + + /*-.........................................Constructor..........................................*/ + + public function WizardEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false) + { + super(type, bubbles, cancelable); + + startEvent_type = (schedule != null) ? START_LESSON : SCHEDULE_LESSON; + } + + } +} \ No newline at end of file Index: lams_flex/CloudWizard/src/org/lamsfoundation/lams/maps/MainEventMap.mxml =================================================================== diff -u --- lams_flex/CloudWizard/src/org/lamsfoundation/lams/maps/MainEventMap.mxml (revision 0) +++ lams_flex/CloudWizard/src/org/lamsfoundation/lams/maps/MainEventMap.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,248 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_flex/CloudWizard/src/org/lamsfoundation/lams/maps/ModelMap.mxml =================================================================== diff -u --- lams_flex/CloudWizard/src/org/lamsfoundation/lams/maps/ModelMap.mxml (revision 0) +++ lams_flex/CloudWizard/src/org/lamsfoundation/lams/maps/ModelMap.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_flex/CloudWizard/src/org/lamsfoundation/lams/validators/LessonValidator.as =================================================================== diff -u --- lams_flex/CloudWizard/src/org/lamsfoundation/lams/validators/LessonValidator.as (revision 0) +++ lams_flex/CloudWizard/src/org/lamsfoundation/lams/validators/LessonValidator.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,91 @@ +package org.lamsfoundation.lams.validators +{ + import com.visualempathy.display.controls.datetime.DateTimePicker; + + import mx.collections.ArrayCollection; + import mx.containers.FormItem; + import mx.controls.ComboBox; + import mx.core.Application; + import mx.validators.ValidationResult; + import mx.validators.Validator; + + import org.lamsfoundation.lams.views.Advanced; + import org.lamsfoundation.lams.vos.UserCollection; + + public class LessonValidator extends Validator + { + public var errorMessage:String; + private var results:Array; + + public function LessonValidator() + { + super(); + } + + override protected function doValidation(value:Object):Array { + + // Clear results Array. + results = []; + + if(value is String) { + validateLessonName(value as String); + } else if(value is UserCollection) { + validateUserCollection(value as UserCollection); + } else if(value is FormItem) { + var children:Array = (value as FormItem).getChildren(); + if(children.length > 0) { + validateScheduleDate(children[0] as DateTimePicker, children[1] as ComboBox); + } + } + + // Return if there are errors. + if(results.length > 0) + return results; + + + // Call base class doValidation(). + results = super.doValidation(value); + + return results; + } + + private function validateLessonName(lessonName:String):void { + // Check lesson name field. + if (lessonName == "" || lessonName == null) { + results.push(new ValidationResult(true, + "", "noLessonName", this.errorMessage)); + } + } + + private function validateUserCollection(collection:UserCollection):void { + if(collection.users.length <= 0) + results.push(new ValidationResult(true, "", "noLearners", this.errorMessage)); + } + + private function validateScheduleDate(timePicker:DateTimePicker, timeZonePicker:ComboBox):void { + var now:Date = new Date(); + var tzList:ArrayCollection = (timeZonePicker.dataProvider != null) ? timeZonePicker.dataProvider as ArrayCollection : new ArrayCollection(); + var usersTzIdx:uint = Advanced.getUserTimeZone(Application.application.param("tz") as String, tzList.toArray()); + var usersTzOffset:Number = timeZonePicker.dataProvider[usersTzIdx].data; + + var selectedTzOffset:Number = timeZonePicker.selectedItem.data; + var rawOffset:Number = (usersTzOffset - selectedTzOffset); + + var valTime:Number = now.setTime(now.getTime() - rawOffset); + + if(timePicker.enabled) { + if(timePicker.selectedDate.date > now.date) + return; + else if(timePicker.selectedDate.date == now.date) + if(timePicker.selectedDate.getHours() > now.getHours()) + return; + else if(timePicker.selectedDate.getHours() == now.getHours()) + if(timePicker.selectedDate.getMinutes() >= now.getMinutes()) + return; + + results.push(new ValidationResult(true, "", "incorrectScheduleDate", this.errorMessage)); + } + } + + } +} \ No newline at end of file Index: lams_flex/CloudWizard/src/org/lamsfoundation/lams/views/Advanced.mxml =================================================================== diff -u --- lams_flex/CloudWizard/src/org/lamsfoundation/lams/views/Advanced.mxml (revision 0) +++ lams_flex/CloudWizard/src/org/lamsfoundation/lams/views/Advanced.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,322 @@ + + + + + 0) + removeInstanceText(); + + var instTxt:Text = new Text(); + instTxt.id = "learnersNote_txt"; + instTxt.setStyle("paddingTop", 8); + instTxt.width = learnersNoteBox.width * 0.5; + instTxt.text = dictionary.getLabelAndInsert("wizard.splitLearners.splitSum", [noInstances, Math.round(noLearnersPerInstance)]); + //noInstances + + //" instances of this lesson will be created and approx. " + Math.round(noLearnersPerInstance) + + //" learners will be allocated to each lesson."; + + learnersNoteBox.addChild(instTxt); + + } + + private function removeInstanceText():void { + learnersNoteBox.removeAllChildren(); + } + + private function changePresenceSelection():void { + if(!enablePresence.selected) enableIm.selected = false; + } + + private function hasFocus(value:Boolean):void { + if(value) { + + // tab is current selection + createTimeZoneList(); + enableSplitLessonsOption(); + + var valEvent:ValidationResultEvent = scheduleValidator.validate(); + if(valEvent.results != null) { + this.dispatchEvent(valEvent); + this.setValidationFocus(valEvent.currentTarget.listener); + } + } else { + this.clearValidationFocus(dateTimePicker_fItm); + } + } + + private function checkScheduleDateTime(event:Event):void { + if(scheduleDateTZ != null) { + this.scheduleDateTimeStr = ScheduleDateDisplay.format(scheduleDateTimePicker.selectedDate); + var valEvent:ValidationResultEvent = scheduleValidator.validate(); + + this.clearValidationFocus(valEvent.currentTarget.listener); + + if(valEvent.results != null) { + this.dispatchEvent(valEvent); + this.setValidationFocus(valEvent.currentTarget.listener); + } else { + this.clearValidationHighlight(valEvent.currentTarget.listener); + } + } + } + + private function changeStartMonitorSelection():void { + + enableScheduling.enabled = !startInMonitor.selected; + + if(startInMonitor.selected) { + enableScheduling.selected = false; + updateSelectedDate(); + } + + var event:WizardEvent = new WizardEvent(WizardEvent.CHANGE_START_BUTTON_LABEL); + + // change label on normal start button (add now >> ) if selected to (start in monitor >>) + event.label = (!startInMonitor.selected) ? dictionary.getLabel('add.now.button.label') + : dictionary.getLabel('finish.btn'); + + this.dispatchEvent(event); + } + + + /** static Validation focus methods */ + public function setValidationFocus(formObject:Object):void { + if(formObject is FormItem) { + // set focus on scheduling form item + formObject.drawFocus(true); + formObject.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_OVER)); + focusTimeout = setTimeout(this.clearValidationFocus, 3000, formObject); + } else { + Wizard.setValidationFocus(formObject); + } + } + + public function clearValidationFocus(focusObject:Object):void { + clearTimeout(focusTimeout); + focusObject.dispatchEvent(new MouseEvent(MouseEvent.MOUSE_OUT)); + } + + public function clearValidationHighlight(formObject:Object):void { + formObject.drawFocus(false); + } + + private function updateSelectedDate():void { + var now:Date = new Date(); + if(scheduleDateTimePicker.selectedDate < now) + scheduleDateTimePicker.selectedDate = now; + } + + private function createTimeZoneList():void { + var label:String = ""; + var value:String = ""; + + if(tzList != null && tzList.length > 0) + return; + + tzList = new Array(); + + // populate TimeZone list from User (java) class passed through in the Dictionary data. + for (var i:uint = 0; i <= 30; i++) { + label = dictionary.getLabel(String('timezoneID' + i)); + value = dictionary.getValue(String('timezoneID' + i)) as String; + + tzList.push({label: label, data: value }); + } + + //tzList = [ "GMT-12", "GMT-11", "GMT-10", "GMT-9", "GMT-8", "GMT-7", + // "GMT-6", "GMT-5", "GMT-4", "Canada/Newfoundland", "GMT-3", "GMT-2", "GMT-1", "GMT", "GMT+1", "GMT+2", + // "GMT+3", "Asia/Tehran", "GMT+4", "Asia/Kabul", "GMT+5", "Asia/Calcutta", "Asia/Katmandu", "GMT+6", "GMT+7", + // "GMT+8", "GMT+9", "Australia/Adelaide", "GMT+10", "GMT+11", "GMT+12" ] + + userTimeZone = Advanced.getUserTimeZone(Application.application.param("tz") as String, tzList); + } + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: lams_flex/CloudWizard/src/org/lamsfoundation/lams/views/Learners.mxml =================================================================== diff -u --- lams_flex/CloudWizard/src/org/lamsfoundation/lams/views/Learners.mxml (revision 0) +++ lams_flex/CloudWizard/src/org/lamsfoundation/lams/views/Learners.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,253 @@ + + + + + = 1) { + showOverlay(learners_dgd, false); + showOverlay(learnersSel_dgd, false); + } + } + + public function set staff(value:ArrayCollection):void { + // set default selected - creator (monitor) as staff + staffUnselected = value; + staffUnselected.sort = getUserSort(); + staffUnselected.refresh(); + + staffSelected = new ArrayCollection(); + + if(value.length >= 1) { + showOverlay(staff_dgd, false); + showOverlay(staffSel_dgd, false); + } + + for each(var staff:Object in staffUnselected) { + if(staff.isCurrentUser == true) { + staffSelected = new ArrayCollection([staff]); + staffUnselected.removeItemAt(staffUnselected.getItemIndex(staff)); + return; + } + } + + staffSelected.sort = getUserSort(); + staffSelected.refresh(); + } + + public function printName(value:Object, column:DataGridColumn=null):String { + return dictionary.getLabelAndInsert('class.tab.print.name.label', [value.firstName, value.lastName, value.login]); + } + + private function dragOverHandler(event:DragEvent):void { + + // Explpicitly handle the dragOver event. + event.preventDefault(); + + // Since you are explicitly handling the dragOver event, + // call showDropFeedback(event) to have the drop target + // display the drop indicator. + // The drop indicator is removed + // automatically for the list controls by the built-in + // event handler for the dragDrop event. + event.currentTarget.showDropFeedback(event); + + if (event.dragSource.hasFormat("items")) + { + if (validDragDrop(event)) { + DragManager.showFeedback(DragManager.MOVE); + return; + } + else { + DragManager.showFeedback(DragManager.NONE); + return; + } + } + } + + private function validDragDrop(event:DragEvent):Boolean { + var dropTarget:DataGrid = DataGrid(event.currentTarget); + if(staff_dgd == dropTarget && event.dragInitiator != staffSel_dgd || + staffSel_dgd == dropTarget && event.dragInitiator != staff_dgd) { + return false; + } else if(learners_dgd == dropTarget && event.dragInitiator != learnersSel_dgd || + learnersSel_dgd == dropTarget && event.dragInitiator != learners_dgd) { + return false; + } + + return true; + } + + private function doDragExit(event:DragEvent):void { + var dropTarget:DataGrid = DataGrid(event.currentTarget); + dropTarget.hideDropFeedback(event); + } + + private function showOverlay(component:UIComponent, value:Boolean):void { + if(value) + LamsAjaxOverlayManager.showOverlay(component); + else + LamsAjaxOverlayManager.hideOverlay(component); + } + + private function showDataGridOverlay(event:Event):void { + showOverlay(UIComponent(event.currentTarget), true); + } + + /* sort users (by name) for data grid columns */ + private function sortCompareUsers(userA:Object, userB:Object):int { + var result:int = ObjectUtil.stringCompare(userA.lastName, userB.lastName); + + if(result == 0) + result = ObjectUtil.stringCompare(userA.firstName, userB.firstName); + + return result; + } + + private function hasFocus(value:Boolean):void { + if(value) { + // tab is current selection + if(!usersLoaded) { + var wizardEvent:WizardEvent = new WizardEvent(WizardEvent.LOAD_ORGANISATION_USERS); + this.dispatchEvent(wizardEvent); + } else { + // validate + validateUsers(); + } + } + } + + // validate learners and staff selected data-grids + private function validateUsers(event:Event=null):void { + var valArray:Array = Validator.validateAll(this.usersValidatorCollection); + for each(var valEvent:ValidationResultEvent in valArray) { + if(valEvent.results != null && valEvent.type == ValidationResultEvent.INVALID) { + this.dispatchEvent(valEvent); + Wizard.setValidationFocus(valEvent.currentTarget.listener); + } + } + } + + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: lams_flex/CloudWizard/src/org/lamsfoundation/lams/views/Lesson.mxml =================================================================== diff -u --- lams_flex/CloudWizard/src/org/lamsfoundation/lams/views/Lesson.mxml (revision 0) +++ lams_flex/CloudWizard/src/org/lamsfoundation/lams/views/Lesson.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,290 @@ + + + + + 0) { + var invalid:Boolean = false; + + for each(valEvent in valArray) { + if(valEvent.results != null && valEvent.type == ValidationResultEvent.INVALID) { + this.dispatchEvent(valEvent); + Wizard.setValidationFocus(valEvent.currentTarget.listener); + invalid = true; + } + } + + if(invalid) + this.dispatchEvent(new NavigationEvent(NavigationEvent.LEARNERS)); + + // validate learning design + } else if(newLesson.learningDesignID != 0) { + var addType:String = (newLesson.numberLessonsSplit > 0) ? WizardEvent.SPLIT_LESSON_CLASS : WizardEvent.ADD_LESSON; + var wizardEvent:WizardEvent = new WizardEvent(addType); + wizardEvent.lesson = newLesson; + + this.dispatchEvent(wizardEvent); + + return true; + + // else case - unknown error + } else { + Alert.okLabel = dictionary.getLabel('button.ok'); + Alert.show(dictionary.getLabelAndInsert("error.system.error", ['unknown']), dictionary.getLabel('sys.error'), Alert.OK, this); + } + + } else { + Alert.okLabel = dictionary.getLabel('button.ok'); + Alert.show(dictionary.getLabel("al.validation.msg1"), dictionary.getLabel("al.alert"), Alert.OK, this); + + this.dispatchEvent(new NavigationEvent(NavigationEvent.LESSON)); + } + + return false; + } + + public function startLesson(event:WizardEvent):void { + // close window - start in monitor (tab -advanced) + if(advanced.startInMonitor.selected) { + this.dispatchEvent(new WizardEvent(WizardEvent.CLOSE_NOSTART)); + return; + } + + // fire normal start event(s) + var startType:String = (newLesson.enableScheduling) ? WizardEvent.SCHEDULE_LESSON : WizardEvent.START_LESSON; + var wizardEvent:WizardEvent = new WizardEvent(startType); + + wizardEvent.lesson = newLesson; + wizardEvent.schedule = (newLesson.enableScheduling) ? advanced.scheduleDateTimeStr : null; + wizardEvent.timeZone = advanced.scheduleDateTZ.selectedIndex + + if(lessonInstances.length > 1) { + startLessonInstances(wizardEvent); + } else { + this.dispatchEvent(wizardEvent); + } + + } + + public function startLessonInstances(event:WizardEvent):void { + var count:uint = 0; + + for each(var instanceLessonID:uint in lessonInstances) { + var wizardEvent:WizardEvent = new WizardEvent(event.type); + count++; + + lessonID = instanceLessonID; + + wizardEvent.lesson = newLesson; + wizardEvent.schedule = event.schedule; + wizardEvent.timeZone = advanced.scheduleDateTZ.selectedIndex + + wizardEvent.last = (lessonInstances.length == count); + + this.dispatchEvent(wizardEvent); + } + + } + + private function hasFocus(value:Boolean):void { + if(value) { + // tab is current selection + validateLessonNameField(); + } + } + + private function validateLessonNameField():void { + if(selectedNode != null) { + var valEvent:ValidationResultEvent = lessonNameVal.validate(); + if(valEvent.results != null) + Wizard.setValidationFocus(lessonNameVal.listener); + } + + } + + ]]> + + + + + + + + + + + {lessonID} + {resourceName_txi.text} + {advanced.description_txi.text} + {organisationID} + {selectedNode.resourceID} + {advanced.enabledExportPortfolio.selected} + {advanced.enablePresence.selected} + {advanced.enabledLiveEdit.selected} + {advanced.enableIm.selected} + {advanced.noInstances} + {advanced.noLearnersPerInstance} + + {advanced.enableScheduling.selected} + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: lams_flex/CloudWizard/src/org/lamsfoundation/lams/views/Wizard.mxml =================================================================== diff -u --- lams_flex/CloudWizard/src/org/lamsfoundation/lams/views/Wizard.mxml (revision 0) +++ lams_flex/CloudWizard/src/org/lamsfoundation/lams/views/Wizard.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_flex/CloudWizard/src/org/lamsfoundation/lams/vos/Lesson.as =================================================================== diff -u --- lams_flex/CloudWizard/src/org/lamsfoundation/lams/vos/Lesson.as (revision 0) +++ lams_flex/CloudWizard/src/org/lamsfoundation/lams/vos/Lesson.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,62 @@ +package org.lamsfoundation.lams.vos +{ + import mx.collections.ArrayCollection; + import org.lamsfoundation.lams.common.util.WDDXUtil; + + public class Lesson + { + public var lessonID:uint; + public var lessonName:String; + public var lessonDescription:String; + public var organisationID:uint; + public var learningDesignID:uint; + + // Advanced options + public var learnerExportPortfolio:Boolean; + public var enablePresence:Boolean; + public var enableLiveEdit:Boolean; + public var enableIm:Boolean; + + public var enableScheduling:Boolean; + + public var numberLessonsSplit:int; + public var numberLearnersSplit:int; + + // new Lesson copy + public var copyType:uint = 2; + + // Lesson class - learners and staff users + public var learners:UserCollection; + public var staff:UserCollection; + + public function Lesson() { + learners = new UserCollection(); + staff = new UserCollection(); + } + + public function get toData():Object { + var data:Object = new Object(); + data.lessonID = this.lessonID; + data.lessonName = this.lessonName; + data.lessonDescription = WDDXUtil.toWDDXNull(this.lessonDescription); + data.organisationID = this.organisationID; + data.learningDesignID = this.learningDesignID; + data.learnerExportPortfolio = this.learnerExportPortfolio; + + data.enablePresence = this.enablePresence; + data.enableLiveEdit = this.enableLiveEdit; + data.enableIm = this.enableIm; + + data.numberLessonsSplit = WDDXUtil.toWDDXNull(this.numberLessonsSplit); + data.numberLearnersSplit = WDDXUtil.toWDDXNull(this.numberLearnersSplit); + + data.copyType = this.copyType; + + data.learners = learners.toData; + data.staff = staff.toData; + + return data; + } + } + +} \ No newline at end of file Index: lams_flex/CloudWizard/src/org/lamsfoundation/lams/vos/UserCollection.as =================================================================== diff -u --- lams_flex/CloudWizard/src/org/lamsfoundation/lams/vos/UserCollection.as (revision 0) +++ lams_flex/CloudWizard/src/org/lamsfoundation/lams/vos/UserCollection.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,51 @@ +package org.lamsfoundation.lams.vos +{ + import mx.collections.ArrayCollection; + + public class UserCollection { + + public var _users:ArrayCollection; + public var _groupName:String; + + public function UserCollection() { + users = new ArrayCollection(); + } + + public function get toData():Object { + + return {users: getIdArray(), groupName: groupName}; + } + + private function getIdArray():Array { + var idArray:Array = new Array(); + + for each(var user:Object in users) { + idArray.push(int(user.userID)); + } + + return idArray; + } + + public function set groupName(value:String):void { + if(value != null) + _groupName = value; + else + _groupName = ""; + } + + public function get groupName():String { + return _groupName; + } + + public function set users(value:ArrayCollection):void { + if(value != null) + _users = value; + else + _users = new ArrayCollection(); + } + + public function get users():ArrayCollection { + return _users; + } + } +} \ No newline at end of file Index: lams_flex/CloudWizard/src/org/lamsfoundation/lams/vos/WorkspaceCollection.as =================================================================== diff -u --- lams_flex/CloudWizard/src/org/lamsfoundation/lams/vos/WorkspaceCollection.as (revision 0) +++ lams_flex/CloudWizard/src/org/lamsfoundation/lams/vos/WorkspaceCollection.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,62 @@ +package org.lamsfoundation.lams.vos +{ + import flash.events.EventDispatcher; + + import mx.collections.ArrayCollection; + import mx.collections.ICollectionView; + import mx.controls.treeClasses.ITreeDataDescriptor; + + import org.lamsfoundation.lams.events.WizardEvent; + + public class WorkspaceCollection implements ITreeDataDescriptor + { + + public function WorkspaceCollection() { + } + + public function getChildren(node:Object, model:Object=null):ICollectionView + { + + + return node.children; + } + + public function hasChildren(node:Object, model:Object=null):Boolean + { + if(node is WorkspaceItem && node.resourceType == WorkspaceItem.RT_FOLDER) { + return (node.children.length > 0); + } + + return false; + + } + + public function isBranch(node:Object, model:Object=null):Boolean + { + if(node is WorkspaceItem && node.resourceType == WorkspaceItem.RT_FOLDER) { + return true; + } + + return false; + } + + public function getData(node:Object, model:Object=null):Object + { + if(node is WorkspaceItem && node.resourceType == WorkspaceItem.RT_FOLDER) { + return {resourceID: node.resourceID, children:node.children}; + } + return null; + } + + public function addChildAt(parent:Object, newChild:Object, index:int, model:Object=null):Boolean + { + return false; + } + + public function removeChildAt(parent:Object, child:Object, index:int, model:Object=null):Boolean + { + return false; + } + + } +} \ No newline at end of file Index: lams_flex/CloudWizard/src/org/lamsfoundation/lams/vos/WorkspaceItem.as =================================================================== diff -u --- lams_flex/CloudWizard/src/org/lamsfoundation/lams/vos/WorkspaceItem.as (revision 0) +++ lams_flex/CloudWizard/src/org/lamsfoundation/lams/vos/WorkspaceItem.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,108 @@ +package org.lamsfoundation.lams.vos +{ + + import flash.events.EventDispatcher; + import flash.events.IEventDispatcher; + + import mx.collections.ArrayCollection; + import mx.collections.Sort; + import mx.collections.SortField; + + import org.lamsfoundation.lams.common.util.WDDXUtil; + + public class WorkspaceItem extends EventDispatcher + { + public static var ROOT_VFOLDER:Number = -1; + public static var ORG_VFOLDER:Number = -2; + + public static var RT_FOLDER:String = "Folder"; + public static var RT_LD:String = "LearningDesign"; + public static var RT_LESSON:String = "Lesson"; + public static var RT_FILE:String = "File"; + + // properties + private var _name:String; + private var _description:String; + + private var _workspaceFolderID:Number; + private var _parentWorkspaceFolderID:Number; + + private var _resourceID:Number; + private var _resourceType:String; + + private var _children:ArrayCollection = new ArrayCollection(); + private var _sort:Sort; + + //private var creationDateTime:Date; + //private var lastModifiedDateTime:Date; + + public function WorkspaceItem(dispatcher:IEventDispatcher=null) + { + super(dispatcher); + + _sort = new Sort(); + _sort.fields = [new SortField("name", true)]; + } + + public function get name():String { + return _name; + } + + public function get description():String { + return _description; + } + + public function get resourceID():Number { + return _resourceID; + } + + public function get resourceType():String { + return _resourceType; + } + + public function set workspaceFolderID(value:Number):void { + _workspaceFolderID = value; + } + + public function get workspaceFolderID():Number { + return _workspaceFolderID; + } + + public function set parentWorkspaceFolderID(value:Number):void { + _parentWorkspaceFolderID = value; + } + + public function get parentWorkspaceFolderID():Number { + return _parentWorkspaceFolderID; + } + + public function populate(dto:Object):void { + _name = WDDXUtil.cleanNull(dto.name) as String; + _description = WDDXUtil.cleanNull(dto.description) as String; + _resourceID = dto.resourceID; + _resourceType = WDDXUtil.cleanNull(dto.resourceType) as String; + + if(_resourceType == RT_FOLDER) + _workspaceFolderID = _resourceID; + + if(_resourceID != -1) _children.sort = _sort; + _children.refresh(); + + } + + public function set children(value:ArrayCollection):void { + _children = value; + } + + public function get children():ArrayCollection { + _children.refresh(); + + return _children; + } + + public function isValidDesign():Boolean { + return (_resourceType == RT_LD || _resourceType == RT_LESSON); + } + + } +} \ No newline at end of file Index: lams_flex/GroupManager/.actionScriptProperties =================================================================== diff -u --- lams_flex/GroupManager/.actionScriptProperties (revision 0) +++ lams_flex/GroupManager/.actionScriptProperties (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + Index: lams_flex/GroupManager/.flexProperties =================================================================== diff -u --- lams_flex/GroupManager/.flexProperties (revision 0) +++ lams_flex/GroupManager/.flexProperties (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,2 @@ + + Index: lams_flex/GroupManager/.project =================================================================== diff -u --- lams_flex/GroupManager/.project (revision 0) +++ lams_flex/GroupManager/.project (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,25 @@ + + + GroupManager + + + + + + com.adobe.flexbuilder.project.flexbuilder + + + + + + com.adobe.flexbuilder.project.flexnature + com.adobe.flexbuilder.project.actionscriptnature + + + + bin-release1 + 2 + D:/LAMS_HEAD/lams_monitoring/web/grouping + + + Index: lams_flex/GroupManager/.settings/org.eclipse.core.resources.prefs =================================================================== diff -u --- lams_flex/GroupManager/.settings/org.eclipse.core.resources.prefs (revision 0) +++ lams_flex/GroupManager/.settings/org.eclipse.core.resources.prefs (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,3 @@ +#Wed Nov 05 09:59:00 EST 2008 +eclipse.preferences.version=1 +encoding/=utf-8 Index: lams_flex/GroupManager/html-template/AC_OETags.js =================================================================== diff -u --- lams_flex/GroupManager/html-template/AC_OETags.js (revision 0) +++ lams_flex/GroupManager/html-template/AC_OETags.js (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,278 @@ +// Flash Player Version Detection - Rev 1.6 +// Detect Client Browser type +// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved. +var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false; +var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false; +var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false; + +function ControlVersion() +{ + var version; + var axo; + var e; + + // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry + + try { + // version will be set for 7.X or greater players + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); + version = axo.GetVariable("$version"); + } catch (e) { + } + + if (!version) + { + try { + // version will be set for 6.X players only + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); + + // installed player is some revision of 6.0 + // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29, + // so we have to be careful. + + // default to the first public version + version = "WIN 6,0,21,0"; + + // throws if AllowScripAccess does not exist (introduced in 6.0r47) + axo.AllowScriptAccess = "always"; + + // safe to call for 6.0r47 or greater + version = axo.GetVariable("$version"); + + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 4.X or 5.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); + version = axo.GetVariable("$version"); + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 3.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); + version = "WIN 3,0,18,0"; + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 2.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); + version = "WIN 2,0,0,11"; + } catch (e) { + version = -1; + } + } + + return version; +} + +// JavaScript helper required to detect Flash Player PlugIn version information +function GetSwfVer(){ + // NS/Opera version >= 3 check for Flash plugin in plugin array + var flashVer = -1; + + if (navigator.plugins != null && navigator.plugins.length > 0) { + if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) { + var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : ""; + var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description; + var descArray = flashDescription.split(" "); + var tempArrayMajor = descArray[2].split("."); + var versionMajor = tempArrayMajor[0]; + var versionMinor = tempArrayMajor[1]; + var versionRevision = descArray[3]; + if (versionRevision == "") { + versionRevision = descArray[4]; + } + if (versionRevision[0] == "d") { + versionRevision = versionRevision.substring(1); + } else if (versionRevision[0] == "r") { + versionRevision = versionRevision.substring(1); + if (versionRevision.indexOf("d") > 0) { + versionRevision = versionRevision.substring(0, versionRevision.indexOf("d")); + } + } else if (versionRevision[0] == "b") { + versionRevision = versionRevision.substring(1); + } + var flashVer = versionMajor + "." + versionMinor + "." + versionRevision; + } + } + // MSN/WebTV 2.6 supports Flash 4 + else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4; + // WebTV 2.5 supports Flash 3 + else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3; + // older WebTV supports Flash 2 + else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2; + else if ( isIE && isWin && !isOpera ) { + flashVer = ControlVersion(); + } + return flashVer; +} + +// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available +function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) +{ + versionStr = GetSwfVer(); + if (versionStr == -1 ) { + return false; + } else if (versionStr != 0) { + if(isIE && isWin && !isOpera) { + // Given "WIN 2,0,0,11" + tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"] + tempString = tempArray[1]; // "2,0,0,11" + versionArray = tempString.split(","); // ['2', '0', '0', '11'] + } else { + versionArray = versionStr.split("."); + } + var versionMajor = versionArray[0]; + var versionMinor = versionArray[1]; + var versionRevision = versionArray[2]; + + // is the major.revision >= requested major.revision AND the minor version >= requested minor + if (versionMajor > parseFloat(reqMajorVer)) { + return true; + } else if (versionMajor == parseFloat(reqMajorVer)) { + if (versionMinor > parseFloat(reqMinorVer)) + return true; + else if (versionMinor == parseFloat(reqMinorVer)) { + if (versionRevision >= parseFloat(reqRevision)) + return true; + } + } + return false; + } +} + +function AC_AddExtension(src, ext) +{ + if (src.indexOf('?') != -1) + return src.replace(/\?/, ext+'?'); + else + return src + ext; +} + +function AC_Generateobj(objAttrs, params, embedAttrs) +{ + var str = ''; + if (isIE && isWin && !isOpera) + { + str += ' '; + str += ''; + } else { + str += ' + + + + + + + + + + + +${title} + + + + + + + + + + + + + + + Index: lams_flex/GroupManager/html-template/playerProductInstall.swf =================================================================== diff -u Binary files differ Index: lams_flex/GroupManager/src/ChangePanelTitlePopUp.mxml =================================================================== diff -u --- lams_flex/GroupManager/src/ChangePanelTitlePopUp.mxml (revision 0) +++ lams_flex/GroupManager/src/ChangePanelTitlePopUp.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + Index: lams_flex/GroupManager/src/GroupManager.mxml =================================================================== diff -u --- lams_flex/GroupManager/src/GroupManager.mxml (revision 0) +++ lams_flex/GroupManager/src/GroupManager.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,653 @@ + + + + + + + + getGroups + + + + + + + + getClassMembersNotGrouped + + + + + + + + + getGroupMembers + + + + + + + + + addMembers + + + + + + + + + + removeMembers + + + + + + + + + + addGroup + + + + + + + + + removeGroup + + + + + + + + + changeGroupName + + + + + + + = maxNumberOfGroups) { + Alert.show(languageXML.language.entry.(@key=="error.title").name); + return false; + } + */ + + // increment total number of group panels added + totalGroupsAdded++; + + // push new group panel and its dataprovider into their respective collections + panels.addItem(newPanel); + panelLearnerDataProviders.addItem(newLearnersCollection); + + // set new panelRemove button attributes + newPanelRemoveButton.label = "-"; + newPanelRemoveButton.id = "panelRemove_btn"; + newPanelRemoveButton.addEventListener(MouseEvent.CLICK, removePanelHandler); + + // set spacer attributes + horizontalSpacer.percentWidth = 100; + + // set new controlbar attributes + newControlBar.percentWidth = 100; + newControlBar.height = 40; + + // add the control bar's components + newControlBar.addChild(horizontalSpacer); + newControlBar.addChild(newPanelRemoveButton); + + // disactivate if deletion is not allowed + if(usedForBranching || !mayDelete || viewMode) { + newPanelRemoveButton.enabled = false; + } + + // set new panel attributes + newPanel.width = learnerGroups_tile.width / 2 - 15; + newPanel.height = learnerGroups_tile.height / 2 - 6; + newPanel.addEventListener(MouseEvent.CLICK, changePanelTitleHandler); + + if(id == null){ + newPanel.id = "group" + String(totalGroupsAdded) + "Learners_pnl"; + } + else { + newPanel.id = id; + } + + if(title == null){ + newPanel.title = "Group " + String(totalGroupsAdded); + } + else { + newPanel.title = title; + } + + // set new column attributes + newDataGridColumn.headerText = languageXML.language.entry.(@key=="label.grouping.learners").name; + newDataGridColumn.dataField = "displayName"; + + // set new datagrid attributes + newDataGrid.columns = [newDataGridColumn]; + newDataGrid.percentWidth = 100; + newDataGrid.percentHeight = 100; + newDataGrid.allowMultipleSelection = true; + newDataGrid.addEventListener(DragEvent.DRAG_DROP, dragDropHandler); + newDataGrid.dataProvider = newLearnersCollection; + + // set dragging properties depending + newDataGrid.dragEnabled = mayDelete; + newDataGrid.dragMoveEnabled= mayDelete; + newDataGrid.allowDragSelection = mayDelete; + newDataGrid.dropEnabled = true; + + // add elements to the panel + newPanel.addChild(newDataGrid); + newPanel.addChild(newControlBar); + + // add the panel to the tile + learnerGroups_tile.addChild(newPanel); + + return true; + } + + // removes a given group panel + private function removeGroupPanel(groupId:int):Boolean{ + // there must be at least one panel + if(panels.length != 0) { + // the given panel must be in the collection + if(groupId < panels.length && groupId >= 0) { + // get panel information + var lastGroupLearners:ArrayCollection = panelLearnerDataProviders[groupId]; + var lastGroupPanel:Panel = panels[groupId]; + + // get learners to move back to initial grid + var selectedNamesString:String = ""; + + // format the learner ids as needed serverside + for(var i:int = 0; i < lastGroupLearners.length; i++){ + selectedNamesString += lastGroupLearners[i].id; + + if(i < lastGroupLearners.length - 1) + { + selectedNamesString += ","; + } + } + + // add learners back to server + removeMembersService.request.groupID = lastGroupPanel.id; + removeMembersService.request.members = selectedNamesString; + removeMembersService.send(); + + // add learners back to main datagrid + for(var i:int = 0; i < lastGroupLearners.length; i++) { + intialLearners.addItem(lastGroupLearners[i]); + } + + // remove group from tile + learnerGroups_tile.removeChild(lastGroupPanel); + + // remove panel and its dataprovider from their respective collections + panelLearnerDataProviders.removeItemAt(groupId); + panels.removeItemAt(groupId); + + return true; + } + } + return false; + } + + // click handler for changing a panel's title + private function changePanelTitleHandler(e:Event):void { + if(panels.contains(e.currentTarget) && e.target is UITextField && e.target.text == e.currentTarget.title){ + createChangePanelTitleWindow(Panel(e.currentTarget)); + } + } + + // method for creating new panel title change popups + private function createChangePanelTitleWindow(clickedPanel:Panel):void{ + var popup:ChangePanelTitlePopUp = ChangePanelTitlePopUp(PopUpManager.createPopUp(this, ChangePanelTitlePopUp, true)); + popup.init(application.width / 2 - popup.width / 2, application.height / 2 - popup.height / 2, languageXML.language.entry.(@key=="label.grouping.popup.change.group.name").name, clickedPanel, languageXML); + } + + // call the change panel name service + public function changePanelTitle(panel:Panel, title:String):void { + changeGroupNameService.request.groupID = panel.id; + changeGroupNameService.request.name = title; + changeGroupNameService.send(); + } + + // find a panel index from its groupID + private function findPanelIndex(groupID:int):int{ + for(var i:int = 0; i < panels.length; i++) { + if(Panel(panels[i]).id == String(groupID)){ + return i; + } + } + + return -1; + } + + // convert a string to a boolean + private function stringToBool(string:String):Boolean{ + switch(string){ + case "1": + case "true": + case "yes": + return true; + case "0": + case "false": + case "no": + return false; + default: + return Boolean(string); + } + } + + // click handler for adding a panel + private function addPanelHandler(e:Event):void { + addGroupService.request.name = "Group " + String(totalGroupsAdded + 1); + addGroupService.send(); + } + + // click handler for removing a panel + private function removePanelHandler(event:Event):void { + if(panels.length != 0) { + lastRemoveEvent = event; + Alert.show(languageXML.language.entry.(@key=="label.grouping.popup.delete.group.message").name, languageXML.language.entry.(@key=="label.grouping.popup.delete.group").name, 3, this, deleteAlertClickHandler); + } + } + + // click handler to confirm removing a panel + private function deleteAlertClickHandler(event:CloseEvent):void { + if (event.detail==Alert.YES){ + removePanelHandlerComplete(lastRemoveEvent); + } + } + + // handler to complete removing a panel + private function removePanelHandlerComplete(e:Event):void { + if(e.target.id == "panelRemove_btn" && panels.contains(e.target.parent.parent)){ + removeGroupService.request.groupID = e.target.parent.parent.id; + removeGroupService.send(); + } + else if(e.target == globalRemovePanel_btn){ + removeGroupService.request.groupID = Panel(panels.getItemAt(panels.length-1)).id; + removeGroupService.send(); + } + } + + // click handler for the finish button + private function closeWindowHandler(e:MouseEvent):void{ + ExternalInterface.call("closeWindow"); + } + + // handler to complete dragging users + private function dragDropHandler(e:DragEvent):void { + // if the drag and drop source and destination are not the same + if(e.dragInitiator != e.currentTarget){ + // get selected items in datagrid + var selectedNames:Array = DataGrid(e.dragInitiator).selectedItems; + var selectedNamesString:String = ""; + + // format the learner ids as needed serverside + for(var i:int = 0; i < selectedNames.length; i++){ + selectedNamesString += selectedNames[i].id; + + if(i < selectedNames.length - 1) + { + selectedNamesString += ","; + } + } + + // if the source is not the initial learners grid, remove members + if(DataGrid(e.dragInitiator).id != "mainDataGrid_dg") { + removeMembersService.request.groupID = Panel(e.dragInitiator.parent).id; + removeMembersService.request.members = selectedNamesString; + removeMembersService.send(); + } + + // if the destination is not the initial learners grid, add members + if(DataGrid(e.currentTarget).id != "mainDataGrid_dg") { + addMembersService.request.groupID = Panel(e.currentTarget.parent).id; + addMembersService.request.members = selectedNamesString; + addMembersService.send(); + } + } + } + + // -- httpservice handlers -- + private function getGroupsSuccessHandler(e:ResultEvent):void { + var xmlResult:XMLListCollection = new XMLListCollection(XMLList(e.result).groups.group); + var amountGroupsAdded:int = 0; + + // for each group returned, add a group panel and get its learners + for(var i:int = 0; i < xmlResult.length; i++){ + addGroupPanel(xmlResult.getItemAt(i).id.toString(), xmlResult.getItemAt(i).name.toString()); + getGroupMembersService.request.groupID = xmlResult.getItemAt(i).id.toString(); + getGroupMembersService.send(); + } + } + + private function getGroupsFaultHandler(e:Event):void { + Alert.show(languageXML.language.entry.(@key=="error.title").name); + } + + private function getMembersNotGroupedSuccessHandler(e:ResultEvent):void { + var xmlResult:XMLListCollection = new XMLListCollection(XMLList(e.result).users.user); + var groupID:int = XMLList(e.result).groupID.toString(); + + for(var i:int = 0; i < xmlResult.length; i++){ + intialLearners.addItem({displayName: xmlResult.getItemAt(i).displayName.toString(), id: xmlResult.getItemAt(i).id.toString()}); + } + } + + private function getMembersNotGroupedFaultHandler(e:Event):void { + Alert.show(languageXML.language.entry.(@key=="error.title").name); + } + + private function getGroupMembersSuccessHandler(e:ResultEvent):void { + var xmlResult:XMLListCollection = new XMLListCollection(XMLList(e.result).users.user); + var groupID:int = XMLList(e.result).groupID.toString(); + var indexToUse:int = findPanelIndex(groupID); + + for(var i:int = 0; i < xmlResult.length; i++){ + panelLearnerDataProviders[indexToUse].addItem({displayName: xmlResult.getItemAt(i).displayName.toString(), id: xmlResult.getItemAt(i).id.toString()}); + } + } + + private function getGroupMembersFaultHandler(e:Event):void { + Alert.show(languageXML.language.entry.(@key=="error.title").name); + } + + private function addMembersSuccessHandler(e:ResultEvent):void { + // nothing to do here + } + + private function addMembersFaultHandler(e:Event):void { + Alert.show(languageXML.language.entry.(@key=="error.title").name); + } + + private function removeMembersSuccessHandler(e:ResultEvent):void { + // nothing to do here + } + + private function removeMembersFaultHandler(e:Event):void { + Alert.show(languageXML.language.entry.(@key=="error.title").name); + } + + private function addGroupSuccessHandler(e:ResultEvent):void { + addGroupPanel(XMLList(e.result).group.id.toString()), XMLList(e.result).group.name.toString(); + } + + private function addGroupFaultHandler(e:Event):void { + Alert.show(languageXML.language.entry.(@key=="error.title").name); + } + + private function removeGroupSuccessHandler(e:ResultEvent):void { + var groupID:int = XMLList(e.result).group.id.toString(); + var indexToUse:int = findPanelIndex(groupID); + + removeGroupPanel(indexToUse); + } + + private function removeGroupFaultHandler(e:Event):void { + Alert.show(languageXML.language.entry.(@key=="error.title").name); + } + + private function changeGroupNameSuccessHandler(e:ResultEvent):void { + var groupID:int = XMLList(e.result).group.id.toString(); + var groupName:String = XMLList(e.result).group.newName.toString(); + var indexToUse:int = findPanelIndex(groupID); + + Panel(panels.getItemAt(indexToUse)).title = groupName; + } + + private function changeGroupNameFaultHandler(e:Event):void { + Alert.show(languageXML.language.entry.(@key=="error.title").name); + } + + // -- getters and setters -- + + public function getLanguageXML():XML{ + return languageXML; + } + ]]> + + + + + + + + + + + + + + + + + ../bin-debug/loading_small.swf + + + + Index: lams_flex/LamsFlexCommon/.actionScriptProperties =================================================================== diff -u --- lams_flex/LamsFlexCommon/.actionScriptProperties (revision 0) +++ lams_flex/LamsFlexCommon/.actionScriptProperties (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + Index: lams_flex/LamsFlexCommon/.flexLibProperties =================================================================== diff -u --- lams_flex/LamsFlexCommon/.flexLibProperties (revision 0) +++ lams_flex/LamsFlexCommon/.flexLibProperties (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,1062 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_flex/LamsFlexCommon/.project =================================================================== diff -u --- lams_flex/LamsFlexCommon/.project (revision 0) +++ lams_flex/LamsFlexCommon/.project (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,18 @@ + + + LamsFlexCommon + + + + + + com.adobe.flexbuilder.project.flexbuilder + + + + + + com.adobe.flexbuilder.project.flexlibnature + com.adobe.flexbuilder.project.actionscriptnature + + Index: lams_flex/LamsFlexCommon/.settings/org.eclipse.core.resources.prefs =================================================================== diff -u --- lams_flex/LamsFlexCommon/.settings/org.eclipse.core.resources.prefs (revision 0) +++ lams_flex/LamsFlexCommon/.settings/org.eclipse.core.resources.prefs (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,3 @@ +#Fri Aug 28 12:14:26 EST 2009 +eclipse.preferences.version=1 +encoding/=utf-8 Index: lams_flex/LamsFlexCommon/bin/LamsFlexCommon.swc =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/libs/Mate_08_7.swc =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/libs/WDDX.swc =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/libs/flexlib.swc =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/libs/mate.license.txt =================================================================== diff -u --- lams_flex/LamsFlexCommon/libs/mate.license.txt (revision 0) +++ lams_flex/LamsFlexCommon/libs/mate.license.txt (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,55 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + + 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and + + 2. You must cause any modified files to carry prominent notices stating that You changed the files; and + + 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + + 4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + +You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS Index: lams_flex/LamsFlexCommon/libs/wddx.license.txt =================================================================== diff -u --- lams_flex/LamsFlexCommon/libs/wddx.license.txt (revision 0) +++ lams_flex/LamsFlexCommon/libs/wddx.license.txt (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,23 @@ +http://www.opensource.org/licenses/mit-license.php + +The MIT License + +Copyright (c) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. Index: lams_flex/LamsFlexCommon/src/com/asfusion/controls/Rating.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/com/asfusion/controls/Rating.as (revision 0) +++ lams_flex/LamsFlexCommon/src/com/asfusion/controls/Rating.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,740 @@ +/* Copyright 2007 Nahuel Foronda (AsFusion) + +Licensed under the Apache License, Version 2.0 (the "License"); + +you may not use this file except in compliance with the License. +You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License + for the specific language governing permissions and limitations under the License. + +*/ +package com.asfusion.controls +{ + import com.asfusion.controls.ratingclasses.*; + + import flash.display.*; + import flash.events.MouseEvent; + + import mx.core.EdgeMetrics; + import mx.core.IFlexDisplayObject; + import mx.core.UIComponent; + import mx.managers.ISystemManager; + + /** + * Dispatched when the user changes the selected value by clicking on an item or when + * the selectedValue property is programatically changed. + */ + [Event(name="selectionChange", type="com.asfusion.controls.ratingclasses.RatingEvent")] + + /** + * Gap between items + * + * @default 5 + */ + [Style(name="horizontalGap", type="Number", format="Length", inherit="no")] + /** + * Number of pixels between the container's bottom border + * and the bottom of its content area. + * + * @default 0 + */ + [Style(name="paddingBottom", type="Number", format="Length", inherit="no")] + + /** + * Number of pixels between the container's top border + * and the top of its content area. + * + * @default 0 + */ + [Style(name="paddingTop", type="Number", format="Length", inherit="no")] + + /** + * Number of pixels between the container's left border + * and the left of its content area. + * + * @default 0 + */ + [Style(name="paddingLeft", type="Number", format="Length", inherit="no")] + + /** + * Number of pixels between the container's right border + * and the right of its content area. + * + * @default 0 + */ + [Style(name="paddingRight", type="Number", format="Length", inherit="no")] + /** + * Name of the class to use as the skin for the items when + * showing a user-selected value + * @default + */ + [Style(name="selectedSkin", type="Class", inherit="no")] + + /** + * Name of the class to use as the skin for the items when + * showing a value. + */ + [Style(name="upSkin", type="Class", inherit="no")] + + /** + * Name of the class to use as the skin for the items + * when not showing a value + */ + [Style(name="unselectedSkin", type="Class", inherit="no")] + + /** + * Name of the class to use as the skin for the items + * when user rolls over them + */ + [Style(name="overSkin", type="Class", inherit="no")] + + + [Mixin] + + /** + * Control that shows a certain number of items in a row to represent a "rating". + * If user selects an item, the "selectedValue" property will change and a RatingEvent will + * be dispatched. + */ + public class Rating extends UIComponent + { + /*------------------------------------------------------------------------------------------------ + * Protected properties + -------------------------------------------------------------------------------------------------*/ + /** @private */ + protected var selectedSkin:Class; + /** @private */ + protected var unselectedSkin:Class; + /** @private */ + protected var upSkin:Class; + /** @private */ + protected var disabledSkin:Class; + /** @private */ + protected var overSkin:Class; + /** @private */ + protected var horizontalGap:Number; + /** @private */ + protected var paddingBottom:Number; + /** @private */ + protected var paddingTop:Number; + /** @private */ + protected var paddingLeft:Number; + /** @private */ + protected var paddingRight:Number; + /** @private */ + protected var unselectedLayer:UIComponent; + /** @private */ + protected var selectedLayer:UIComponent; + /** @private */ + protected var upLayer:UIComponent; + /** @private */ + protected var disabledLayer:UIComponent; + /** @private */ + protected var overLayer:UIComponent; + /** @private */ + protected var selectedMaskLayer:Shape; + /** @private */ + protected var glassLayer:Shape; + /** @private */ + protected var needLayout:Boolean; + /** @private */ + protected var valueChanged:Boolean; + /** @private */ + protected var selectedValueChanged:Boolean; + /** @private */ + protected var itemCountChanged:Boolean; + /** @private */ + protected var itemCreationComplete:Boolean; + /** @private */ + protected var skinChanged:Boolean; + /** @private */ + protected var itemWidth:int; + /** @private */ + protected var itemHeight:int; + /** @private */ + protected var metrics:EdgeMetrics; + /** @private */ + protected var rollOverValue:uint; + + + private static var className:String = "Rating"; + + /*------------------------------------------------------------------------------------------------ + * Constructor + -------------------------------------------------------------------------------------------------*/ + public function Rating() + { + super(); + addEventListener(MouseEvent.MOUSE_OUT,handleItemRollOut); + addEventListener(MouseEvent.ROLL_OUT, handleRollOut); + addEventListener(MouseEvent.MOUSE_OVER, handleItemRollOver); + addEventListener(MouseEvent.CLICK, handleClick); + } + + /*------------------------------------------------------------------------------------------------ + * Static Functions + -------------------------------------------------------------------------------------------------*/ + + /*-.........................................init..................................................*/ + /** + * @private + */ + public static function init(systemManager:ISystemManager) : void + { + RatingStyle.initDefaultStyles(className); + } + + /*------------------------------------------------------------------------------------------------ + * Public Setters and Getters + -------------------------------------------------------------------------------------------------*/ + + /*-.........................................value................................................*/ + private var _value:Number; + + /** + * Value of the rating. It is the value shown unless showSelectedValue is set to true and user + * has changed the selected value. + */ + [Bindable] + public function set value(value:Number):void + { + valueChanged = (_value != value); + _value = value; + invalidateDisplayList(); + } + + public function get value():Number + { + return _value; + } + + /*-......................................votedValue............................................*/ + private var _votedValue:Number; + + [Bindable] + public function set votedValue(value:Number):void + { + _votedValue = value; + } + + public function get votedValue():Number + { + return _votedValue; + } + + /*-......................................voted.............................................*/ + private var _voted:Boolean; + + [Bindable] + public function set voted(value:Boolean):void + { + _voted = value; + } + + public function get voted():Boolean + { + return _voted; + } + + /*-.........................................selectedValue................................................*/ + private var _selectedValue:uint; + + /** + * The value selected by the user by clicking on an item. + */ + [Bindable (event="selectionChange")] + public function set selectedValue(value:uint):void + { + selectedValueChanged = (_selectedValue != value); + + if(selectedValueChanged) + { + _selectedValue = value; + invalidateDisplayList(); + var event: RatingEvent = new RatingEvent(RatingEvent.SELECTION_CHANGE); + event.selectedValue = value; + dispatchEvent(event); + } + } + + public function get selectedValue():uint + { + return _selectedValue; + } + + + /*-.........................................itemCount................................................*/ + private var _itemCount:uint = 5; + + /** + * Number of items(stars) in the rating component + */ + [Bindable] + public function set itemCount(value:uint):void + { + itemCountChanged = (_itemCount != value); + _itemCount = value; + invalidateProperties(); + } + + public function get itemCount():uint + { + return _itemCount; + } + + /*-.........................................liveRollOver................................................*/ + private var _liveRollOver:Boolean = true; + + /** + * Whether the component shows rollOver + */ + [Bindable] + public function set liveRollOver(value:Boolean):void + { + _liveRollOver = value; + } + public function get liveRollOver():Boolean + { + return _liveRollOver + } + + /*-.........................................showSelectedValue................................................*/ + private var _showSelectedValue:Boolean; + + /** + * Whether the component shows the selected value or not. If this property is true, the compoent will show + * the selectedValue instead of showing the value. + */ + [Bindable] + public function set showSelectedValue(value:Boolean):void + { + _showSelectedValue = value; + } + public function get showSelectedValue():Boolean + { + return _showSelectedValue + } + + + /*-.........................................visibleLayer................................................*/ + private var _visibleLayer:UIComponent; + /** + * @private + */ + protected function set visibleLayer(value:UIComponent):void + { + if(_visibleLayer && _visibleLayer != value) _visibleLayer.visible = false; + _visibleLayer = value; + _visibleLayer.visible = true; + } + /** + * @private + */ + protected function get visibleLayer():UIComponent + { + return _visibleLayer; + } + + /*------------------------------------------------------------------------------------------------ + * Override Methods + -------------------------------------------------------------------------------------------------*/ + + /** + * @private + */ + /*-.........................................createChildren.....................................*/ + override protected function createChildren():void + { + addChild(createGlassLayer()); + if(itemCount) createItems(); + } + + /** + * @private + */ + /*-.........................................commitProperties.....................................*/ + override protected function commitProperties():void + { + super.commitProperties(); + if(itemCreationComplete && itemCountChanged || skinChanged) + { + removeAll(); + createItems(); + invalidateDisplayList(); + itemCountChanged = false; + skinChanged = false; + } + } + + /** + * @private + */ + /*-.........................................updateDisplayList.....................................*/ + override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void + { + layoutItems(); + updateValue(); + updateSelectedValue(); + + glassLayer.width = unscaledWidth; + glassLayer.height = unscaledHeight; + } + + /** + * @private + */ + /*-.........................................measure.....................................*/ + override protected function measure():void + { + if(!itemCreationComplete) + { + measuredMinWidth = measuredWidth = 0; + measuredMinHeight = measuredHeight = 0; + } + else + { + measuredHeight = metrics.bottom + metrics.top + itemHeight; + measuredWidth = metrics.left + metrics.right + (itemCount * itemWidth) + ((itemCount -1) * horizontalGap); + + measuredMinWidth = measuredWidth; + measuredMinHeight = measuredHeight; + } + } + + /** + * @private + */ + /*-.........................................stylesInitialized.....................................*/ + override public function stylesInitialized():void + { + readStyleValues(); + } + + /** + * @private + */ + /*-.........................................styleChanged.....................................*/ + override public function styleChanged(styleProp:String):void + { + + super.styleChanged(styleProp); + + if( styleProp == 'selectedSkin' || + styleProp == 'unselectedSkin' || + styleProp == 'upSkin'|| + styleProp == 'overSkin'|| + styleProp == 'disabledSkin') + { + this[styleProp] = getStyle(styleProp); + skinChanged = true; + invalidateProperties(); + } + + else if(styleProp == 'horizontalGap'|| + styleProp == 'paddingBottom'|| + styleProp == 'paddingTop' || + styleProp == 'paddingRight' || + styleProp == 'paddingLeft' ) + { + this[styleProp] = getStyle(styleProp); + } + + + + else if(styleProp == "styleName" && itemCreationComplete) + { + readStyleValues(); + skinChanged = true; + invalidateProperties(); + } + needLayout = true; + invalidateDisplayList(); + } + /*------------------------------------------------------------------------------------------------ + * Protected Methods + -------------------------------------------------------------------------------------------------*/ + /** + * @private + */ + /*-.........................................readStyleValues.....................................*/ + protected function readStyleValues():void + { + selectedSkin = getStyle("selectedSkin"); + unselectedSkin = getStyle("unselectedSkin"); + upSkin = getStyle("upSkin"); + overSkin = getStyle("overSkin"); + disabledSkin = getStyle("disabledSkin"); + + horizontalGap = getStyle("horizontalGap"); + paddingBottom = getStyle("paddingBottom"); + paddingTop = getStyle("paddingTop"); + paddingRight = getStyle("paddingRight"); + paddingLeft = getStyle("paddingLeft"); + + metrics = new EdgeMetrics(paddingLeft, paddingTop, paddingRight, paddingBottom); + } + + /** + * @private + */ + /*-.........................................createItems.....................................*/ + protected function createItems():void + { + unselectedLayer = new UIComponent(); + selectedLayer = new UIComponent(); + overLayer = new UIComponent(); + upLayer = new UIComponent(); + + for( var i:uint; i < itemCount; i++) + { + var unselectedItem:IFlexDisplayObject = new unselectedSkin(); + unselectedLayer.addChild(DisplayObject(unselectedItem)); + + var selectedItem:IFlexDisplayObject = new selectedSkin(); + selectedLayer.addChild(DisplayObject(selectedItem)); + + var upItem:IFlexDisplayObject = new upSkin(); + upLayer.addChild(DisplayObject(upItem)); + + var overItem:IFlexDisplayObject = new overSkin(); + overLayer.addChild(DisplayObject(overItem)); + + itemWidth = Math.max(unselectedItem.measuredWidth, selectedItem.measuredWidth, overItem.measuredWidth, upItem.measuredWidth); + itemHeight = Math.max(unselectedItem.measuredHeight, selectedItem.measuredHeight, overItem.measuredHeight, upItem.measuredHeight); + } + + addChild(unselectedLayer); + addChild(selectedLayer); + addChild(upLayer); + addChild(overLayer); + addChild(createSelectedMask()); + + unselectedLayer.visible = false; + selectedLayer.visible = false; + upLayer.visible = false; + overLayer.visible = false; + + itemCreationComplete = true; + needLayout = true; + } + + /** + * @private + */ + /*-.........................................createSelectedMask.....................................*/ + protected function createSelectedMask():DisplayObject + { + if(! selectedMaskLayer) + { + selectedMaskLayer = new Shape(); + var g:Graphics = selectedMaskLayer.graphics; + g.beginFill(0xFFFFFF); + g.drawRect(0, 0, 10, 10); + g.endFill(); + } + selectedMaskLayer.visible = false; + selectedMaskLayer.x = paddingLeft; + return selectedMaskLayer; + } + + /** + * @private + */ + /*-.........................................createGlassLayer.....................................*/ + protected function createGlassLayer():DisplayObject + { + if(! glassLayer) + { + glassLayer = new Shape(); + var g:Graphics = glassLayer.graphics; + g.beginFill(0x00000,0); + g.drawRect(0, 0, 10, 10); + g.endFill(); + } + glassLayer.visible = true; + return glassLayer; + } + + /** + * @private + */ + /*-.........................................removeAll.....................................*/ + protected function removeAll():void + { + removeChild(unselectedLayer); + removeChild(selectedLayer); + removeChild(overLayer); + removeChild(upLayer); + removeChild(selectedMaskLayer); + } + + /** + * @private + */ + /*-.........................................layoutItems.....................................*/ + protected function layoutItems():void + { + if(!needLayout) return; + + var xPos:int = paddingLeft; + var yPos:int = paddingTop; + + for(var i:uint; i < itemCount; i++) + { + unselectedLayer.getChildAt(i).x = xPos; + unselectedLayer.getChildAt(i).y = yPos; + + selectedLayer.getChildAt(i).x = xPos; + selectedLayer.getChildAt(i).y = yPos; + + upLayer.getChildAt(i).x = xPos; + upLayer.getChildAt(i).y = yPos; + + overLayer.getChildAt(i).x = xPos; + overLayer.getChildAt(i).y = yPos; + + xPos += itemWidth + horizontalGap; + } + needLayout = false; + unselectedLayer.visible = true; + } + + /** + * @private + */ + /*-.........................................updateValue.....................................*/ + protected function updateValue():void + { + if(!valueChanged) return; + + var floor:int = Math.floor(value); + + selectedMaskLayer.width = floor * (itemWidth + horizontalGap) + (value - floor) * itemWidth; + selectedMaskLayer.height = itemHeight; + upLayer.mask = selectedMaskLayer; + + visibleLayer = upLayer; + valueChanged = false; + } + + /** + * @private + */ + /*-.........................................updateSelectedValue.....................................*/ + protected function updateSelectedValue():void + { + if(!selectedValueChanged || !showSelectedValue) return; + + for( var i:uint; i < itemCount; i++) + { + var item:DisplayObject = selectedLayer.getChildAt(i); + item.visible = (selectedValue > i); + } + visibleLayer = selectedLayer; + + selectedValueChanged = false; + } + + /** + * @private + */ + /*-.........................................updateItemRollOver.....................................*/ + protected function updateItemRollOver():void + { + rollOverValue = 0; + for( var i:uint; i < itemCount; i++) + { + var item:DisplayObject = overLayer.getChildAt(i); + item.visible = (mouseX > item.x- horizontalGap/2); + + if(item.visible) rollOverValue++; + } + } + + /** + * @private + */ + /*-.........................................forceUpdateRollOver.....................................*/ + protected function forceUpdateRollOver(rating:int):void{ + for( var i:int = 0; i < _itemCount; i++) + { + if(i < rating){ + var item:DisplayObject = overLayer.getChildAt(i); + item.visible = true; + } + else{ + var item:DisplayObject = overLayer.getChildAt(i); + item.visible = false; + } + } + } + + /*------------------------------------------------------------------------------------------------ + * Mouse Events + -------------------------------------------------------------------------------------------------*/ + + /** + * @private + */ + /*-.........................................handleRollOut.....................................*/ + protected function handleRollOut(event:MouseEvent):void + { + if(enabled){ + overLayer.visible = false; + if(visibleLayer) visibleLayer.visible = true; + } + } + + /** + * @private + */ + /*-.........................................handleItemRollOver.....................................*/ + protected function handleItemRollOver(event:MouseEvent):void + { + if(enabled){ + if(voted){ + rollOverValue = _votedValue; + overLayer.visible = true; + if(visibleLayer) visibleLayer.visible = false; + forceUpdateRollOver(rollOverValue); + } + else if(liveRollOver) + { + updateItemRollOver(); + overLayer.visible = true; + if(visibleLayer) visibleLayer.visible = false; + } + } + } + + /** + * @private + */ + /*-.........................................handleItemRollOut.....................................*/ + protected function handleItemRollOut(event:MouseEvent):void + { + if(enabled){ + if(liveRollOver && !voted) + { + updateItemRollOver(); + } + } + } + + /** + * @private + */ + /*-.........................................handleClick.....................................*/ + protected function handleClick(event:MouseEvent):void + { + if(enabled){ + if(!voted){ + selectedValue = rollOverValue; + } + } + } + } +} + Index: lams_flex/LamsFlexCommon/src/com/asfusion/controls/ratingclasses/OverStar.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/com/asfusion/controls/ratingclasses/OverStar.as (revision 0) +++ lams_flex/LamsFlexCommon/src/com/asfusion/controls/ratingclasses/OverStar.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,34 @@ +package com.asfusion.controls.ratingclasses +{ + import mx.styles.*; + import mx.managers.ISystemManager; + + [Mixin] + /** + * Default skin for rollover item (star) + * */ + public class OverStar extends Star + { + private static var className:String = "OverStar"; + + /*------------------------------------------------------------------------------------------------ + * Static Methods + -------------------------------------------------------------------------------------------------*/ + + /** + * @private + */ + /*-.........................................init..................................................*/ + public static function init(systemManager:ISystemManager) : void + { + var style:CSSStyleDeclaration = new CSSStyleDeclaration(); + style.defaultFactory = function():void + { + this.backgroundColor = 0xFFE30E; + this.backgroundAlpha = 1; + } + + StyleManager.setStyleDeclaration(className, style, true); + } + } +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/com/asfusion/controls/ratingclasses/RatingEvent.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/com/asfusion/controls/ratingclasses/RatingEvent.as (revision 0) +++ lams_flex/LamsFlexCommon/src/com/asfusion/controls/ratingclasses/RatingEvent.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,20 @@ +package com.asfusion.controls.ratingclasses +{ + import flash.events.Event; + + /** Event dispatched when user changes rating selected value or + * when that value is programatically changed + * */ + public class RatingEvent extends Event + { + public static const SELECTION_CHANGE:String = "selectionChange"; + + public var selectedValue:uint; + + public function RatingEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false) + { + super(type, bubbles, cancelable); + } + + } +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/com/asfusion/controls/ratingclasses/RatingStyle.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/com/asfusion/controls/ratingclasses/RatingStyle.as (revision 0) +++ lams_flex/LamsFlexCommon/src/com/asfusion/controls/ratingclasses/RatingStyle.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,37 @@ +package com.asfusion.controls.ratingclasses +{ + import mx.styles.CSSStyleDeclaration; + import mx.styles.StyleManager; + import com.asfusion.controls.ratingclasses.*; + + public class RatingStyle + { + /*------------------------------------------------------------------------------------------------ + * Static Methods + -------------------------------------------------------------------------------------------------*/ + /** + * @private + */ + public static function initDefaultStyles(className:String):void + { + var style:CSSStyleDeclaration = new CSSStyleDeclaration(); + style.defaultFactory = function():void + { + this.disabledSkin = Star; + this.overSkin = OverStar; + this.unselectedSkin = Star; + this.upSkin = SelectedStar; + this.selectedSkin = SelectedStar; + + this.horizontalGap = 5; + this.paddingBottom = 0; + this.paddingTop = 0; + this.paddingLeft = 0; + this.paddingRight = 0; + } + + StyleManager.setStyleDeclaration(className, style, true); + + } + } +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/com/asfusion/controls/ratingclasses/SelectedStar.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/com/asfusion/controls/ratingclasses/SelectedStar.as (revision 0) +++ lams_flex/LamsFlexCommon/src/com/asfusion/controls/ratingclasses/SelectedStar.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,34 @@ +package com.asfusion.controls.ratingclasses +{ + import mx.styles.*; + import mx.managers.ISystemManager; + + [Mixin] + /** + * Default skin for selected item (star) + * */ + public class SelectedStar extends Star + { + private static var className:String = "SelectedStar"; + + /*------------------------------------------------------------------------------------------------ + * Static Methods + -------------------------------------------------------------------------------------------------*/ + + /*-.........................................init..................................................*/ + /** + * @private + */ + public static function init(systemManager:ISystemManager) : void + { + var style:CSSStyleDeclaration = new CSSStyleDeclaration(); + style.defaultFactory = function():void + { + this.backgroundColor = 0x000000; + this.backgroundAlpha = 1; + } + + StyleManager.setStyleDeclaration(className, style, true); + } + } +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/com/asfusion/controls/ratingclasses/Star.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/com/asfusion/controls/ratingclasses/Star.as (revision 0) +++ lams_flex/LamsFlexCommon/src/com/asfusion/controls/ratingclasses/Star.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,138 @@ +package com.asfusion.controls.ratingclasses +{ + import mx.core.UIComponent; + import mx.styles.*; + import mx.managers.ISystemManager; + import flash.display.Graphics; + + [Mixin] + + /** + * Default skin for unselected item (star) + * */ + public class Star extends UIComponent + { + protected var outerRadius:Number; + protected var innerRadius:Number; + protected var borderThickness:Number; + protected var borderColor:Number; + protected var borderAlpha:Number; + protected var backgroundColor:Number; + protected var backgroundAlpha:Number; + + private var maxSize:Number; + private var ratio:Number; + + private static var className:String = "Star"; + + /*------------------------------------------------------------------------------------------------ + * Static Methods + -------------------------------------------------------------------------------------------------*/ + + /** + * @private + */ + /*-.........................................init..................................................*/ + public static function init(systemManager:ISystemManager) : void + { + var style:CSSStyleDeclaration = new CSSStyleDeclaration(); + style.defaultFactory = function():void + { + this.borderColor = 0x555555; + this.outerRadius = 50; + this.innerRadius = 25; + this.borderThickness = 1; + this.borderAlpha = 1; + this.width = 14; + this.height = 15; + this.backgroundColor = 0xffffff; + this.backgroundAlpha = 0; + } + + StyleManager.setStyleDeclaration(className, style, true); + } + + /*------------------------------------------------------------------------------------------------ + * Ocerride Methods + -------------------------------------------------------------------------------------------------*/ + /** + * @private + */ + override protected function createChildren():void + { + drawShape(graphics, measuredWidth/2, measuredHeight/2, (maxSize/2)/ratio,(maxSize/2) ); + } + + /** + * @private + */ + /*-.........................................stylesInitialized.....................................*/ + override public function stylesInitialized():void + { + readStyleValues(); + } + + /*------------------------------------------------------------------------------------------------ + * Protected Methods + -------------------------------------------------------------------------------------------------*/ + + /** + * @private + */ + /*-.........................................readStyleValues.....................................*/ + protected function readStyleValues():void + { + outerRadius = getStyle("outerRadius"); + innerRadius = getStyle("innerRadius"); + borderThickness = getStyle("borderThickness"); + borderColor = getStyle("borderColor"); + borderAlpha = getStyle("borderAlpha"); + measuredWidth = getStyle("width"); + measuredHeight = getStyle("height"); + backgroundColor = getStyle("backgroundColor"); + backgroundAlpha = getStyle("backgroundAlpha"); + + maxSize = Math.min(measuredHeight, measuredWidth); + ratio= outerRadius/innerRadius; + } + + /** + * @private + */ + /*-.........................................drawShape.....................................*/ + protected function drawShape(graphics:Graphics, x:Number, y:Number, innerRadius:Number, outerRadius:Number, points:Number = 5, angle:Number=90 ):void + { + graphics.clear(); + graphics.lineStyle(borderThickness,borderColor,borderAlpha); + if(backgroundAlpha > 0) + { + graphics.beginFill(backgroundColor, backgroundAlpha); + } + var count:int = Math.abs(points); + if (count>=2) + { + + // calculate distance between points + var step:Number = (Math.PI*2)/points; + var halfStep:Number = step/2; + + // calculate starting angle in radians + var start:Number = (angle/180)*Math.PI; + graphics.moveTo(x+(Math.cos(start)*outerRadius), y-(Math.sin(start)*outerRadius)); + + // draw lines + for (var i:int=1; i<=count; i++) + { + graphics.lineTo(x+Math.cos(start+(step*i)-halfStep)*innerRadius, + y-Math.sin(start+(step*i)-halfStep)*innerRadius); + graphics.lineTo(x+Math.cos(start+(step*i))*outerRadius, + y-Math.sin(start+(step*i))*outerRadius); + } + } + if(backgroundAlpha > 0) + { + graphics.endFill(); + } + } + } +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/com/visualempathy/display/controls/datetime/DateTimePicker.mxml =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/com/visualempathy/display/controls/datetime/DateTimePicker.mxml (revision 0) +++ lams_flex/LamsFlexCommon/src/com/visualempathy/display/controls/datetime/DateTimePicker.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,89 @@ + + + + + [Event(name="change", type="flash.events.Event")] + + + + = 12) + { + this.ampm.selectedValue = 2; + } + else + { + this.ampm.selectedValue = 1; + } + + if(value.getHours() < 13 ) + this.hours.value = value.getHours() + else + this.hours.value = value.getHours() - 12 + + if(value.getHours() == 0) + this.hours.value = 12; + + this.minutes.value = value.getMinutes() + this.validateNow(); + } + + override public function validateProperties():void + { + super.validateProperties(); + + } + + public function handleChange():void + { + + var militaryHours:int = hours.value; + if(ampm.selectedValue == 2 && hours.value != 12) + militaryHours = hours.value+12; + else if(ampm.selectedValue == 1 && hours.value == 12) + militaryHours = 0; + var selDate:Date = this.date.selectedDate; + var date:Date = new Date( + selDate.getFullYear(), + selDate.getMonth(), + selDate.getDate(), + militaryHours, + minutes.value) + this.selectedDate = date; + + this.invalidateProperties(); + this.validateNow(); + this.dispatchEvent(new Event("change")); + + } + ]]> + + + + + + + + + + + Index: lams_flex/LamsFlexCommon/src/common-assets/images/24-heart-gold.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/24-heart-red.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/24-heart-silver.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/ajax-loader-big.swf =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/deleteIcon.swf =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/downArrow.swf =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/exportIcon.swf =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/.cvsignore =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/common-assets/images/icons/.cvsignore (revision 0) +++ lams_flex/LamsFlexCommon/src/common-assets/images/icons/.cvsignore (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1 @@ +Thumbs.db Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/_index_icons.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/accept.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/anchor.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_cascade.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_double.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_form.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_form_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_form_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_form_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_form_magnify.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_get.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_home.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_lightning.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_osx.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_osx_terminal.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_put.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_side_boxes.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_side_contract.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_side_expand.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_side_list.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_side_tree.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_split.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_tile_horizontal.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_tile_vertical.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_view_columns.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_view_detail.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_view_gallery.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_view_icons.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_view_list.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_view_tile.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_xp.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/application_xp_terminal.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/arrow_branch.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/arrow_divide.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/arrow_down.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/arrow_in.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/arrow_inout.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/arrow_join.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/arrow_left.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/arrow_merge.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/arrow_out.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/arrow_redo.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/arrow_refresh.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/arrow_refresh_small.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/arrow_right.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/arrow_rotate_anticlockwise.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/arrow_rotate_clockwise.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/arrow_switch.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/arrow_turn_left.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/arrow_turn_right.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/arrow_undo.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/arrow_up.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/asterisk_orange.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/asterisk_yellow.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/attach.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/award_star_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/award_star_bronze_1.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/award_star_bronze_2.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/award_star_bronze_3.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/award_star_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/award_star_gold_1.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/award_star_gold_2.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/award_star_gold_3.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/award_star_silver_1.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/award_star_silver_2.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/award_star_silver_3.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/basket.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/basket_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/basket_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/basket_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/basket_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/basket_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/basket_put.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/basket_remove.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bell.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bell_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bell_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bell_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bell_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bell_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bin.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bin_closed.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bin_empty.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bomb.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/book.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/book_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/book_addresses.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/book_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/book_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/book_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/book_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/book_key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/book_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/book_next.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/book_open.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/book_previous.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/box.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/brick.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/brick_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/brick_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/brick_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/brick_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/brick_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/brick_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bricks.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/briefcase.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bug.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bug_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bug_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bug_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bug_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bug_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bug_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/building.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/building_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/building_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/building_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/building_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/building_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/building_key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/building_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_arrow_bottom.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_arrow_down.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_arrow_top.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_arrow_up.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_black.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_blue.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_disk.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_feed.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_green.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_orange.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_picture.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_pink.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_purple.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_red.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_star.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_toggle_minus.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_toggle_plus.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_white.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_wrench.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/bullet_yellow.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cake.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/calculator.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/calculator_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/calculator_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/calculator_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/calculator_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/calculator_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/calendar.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/calendar_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/calendar_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/calendar_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/calendar_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/calendar_view_day.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/calendar_view_month.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/calendar_view_week.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/camera.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/camera_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/camera_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/camera_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/camera_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/camera_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/camera_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/camera_small.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cancel.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/car.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/car_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/car_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cart.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cart_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cart_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cart_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cart_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cart_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cart_put.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cart_remove.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cd.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cd_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cd_burn.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cd_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cd_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cd_eject.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cd_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_bar.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_bar_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_bar_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_bar_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_bar_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_bar_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_curve.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_curve_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_curve_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_curve_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_curve_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_curve_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_curve_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_line.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_line_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_line_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_line_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_line_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_line_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_organisation.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_organisation_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_organisation_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_pie.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_pie_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_pie_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_pie_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_pie_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/chart_pie_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/clock.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/clock_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/clock_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/clock_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/clock_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/clock_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/clock_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/clock_pause.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/clock_play.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/clock_red.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/clock_stop.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cog.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cog_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cog_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cog_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cog_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cog_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/coins.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/coins_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/coins_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/color_swatch.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/color_wheel.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/comment.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/comment_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/comment_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/comment_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/comments.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/comments_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/comments_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/compress.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/computer.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/computer_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/computer_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/computer_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/computer_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/computer_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/computer_key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/computer_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/connect.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/contrast.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/contrast_decrease.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/contrast_high.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/contrast_increase.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/contrast_low.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/control_eject.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/control_eject_blue.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/control_end.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/control_end_blue.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/control_equalizer.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/control_equalizer_blue.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/control_fastforward.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/control_fastforward_blue.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/control_pause.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/control_pause_blue.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/control_play.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/control_play_blue.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/control_record.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/control_repeat.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/control_repeat_blue.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/control_rewind.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/control_rewind_blue.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/control_start.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/control_start_blue.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/control_stop.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/control_stop_blue.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/controller.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/controller_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/controller_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/controller_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/creditcards.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cross.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/css.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/css_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/css_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/css_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/css_valid.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cup.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cup_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cup_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cup_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cup_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cup_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cup_key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cup_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cursor.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cut.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/cut_red.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/database.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/database_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/database_connect.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/database_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/database_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/database_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/database_gear.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/database_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/database_key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/database_lightning.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/database_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/database_refresh.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/database_save.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/database_table.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/date.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/date_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/date_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/date_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/date_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/date_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/date_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/date_magnify.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/date_next.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/date_previous.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/disconnect.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/disk.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/disk_multiple.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/door.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/door_in.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/door_open.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/door_out.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/drink.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/drink_empty.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/drive.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/drive_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/drive_burn.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/drive_cd.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/drive_cd_empty.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/drive_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/drive_disk.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/drive_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/drive_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/drive_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/drive_key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/drive_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/drive_magnify.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/drive_network.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/drive_rename.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/drive_user.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/drive_web.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/dvd.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/dvd_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/dvd_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/dvd_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/dvd_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/dvd_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/dvd_key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/dvd_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/email.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/email_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/email_attach.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/email_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/email_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/email_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/email_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/email_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/email_open.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/email_open_image.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/emoticon_evilgrin.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/emoticon_grin.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/emoticon_happy.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/emoticon_smile.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/emoticon_surprised.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/emoticon_tongue.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/emoticon_unhappy.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/emoticon_waii.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/emoticon_wink.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/error_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/error_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/error_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/exclamation.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/eye.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/feed.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/feed_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/feed_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/feed_disk.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/feed_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/feed_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/feed_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/feed_key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/feed_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/feed_magnify.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/female.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/film.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/film_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/film_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/film_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/film_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/film_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/film_key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/film_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/film_save.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/find.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/flag_blue.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/flag_green.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/flag_orange.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/flag_pink.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/flag_purple.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/flag_red.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/flag_yellow.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_bell.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_brick.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_bug.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_camera.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_database.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_explore.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_feed.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_find.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_heart.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_image.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_lightbulb.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_magnify.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_page.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_page_white.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_palette.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_picture.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_star.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_table.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_user.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/folder_wrench.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/font.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/font_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/font_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/font_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/group.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/group_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/group_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/group_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/group_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/group_gear.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/group_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/group_key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/group_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/heart.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/heart_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/heart_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/help.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/hourglass.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/hourglass_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/hourglass_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/hourglass_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/hourglass_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/house.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/house_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/house_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/html.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/html_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/html_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/html_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/html_valid.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/image.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/image_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/image_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/image_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/image_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/images.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/information.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/ipod.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/ipod_cast.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/ipod_cast_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/ipod_cast_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/ipod_sound.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/joystick.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/joystick_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/joystick_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/joystick_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/key_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/key_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/key_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/keyboard.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/keyboard_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/keyboard_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/keyboard_magnify.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/layers.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/layout.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/layout_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/layout_content.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/layout_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/layout_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/layout_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/layout_header.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/layout_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/layout_sidebar.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/license.txt =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/common-assets/images/icons/license.txt (revision 0) +++ lams_flex/LamsFlexCommon/src/common-assets/images/icons/license.txt (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,22 @@ +Silk icon set 1.3 + +_________________________________________ +Mark James +http://www.famfamfam.com/lab/icons/silk/ +_________________________________________ + +This work is licensed under a +Creative Commons Attribution 2.5 License. +[ http://creativecommons.org/licenses/by/2.5/ ] + +This means you may use it for any purpose, +and make any changes you like. +All I ask is that you include a link back +to this page in your credits. + +Are you using this icon set? Send me an email +(including a link or picture if available) to +mjames@gmail.com + +Any other questions about this icon set please +contact mjames@gmail.com \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/lightbulb.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/lightbulb_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/lightbulb_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/lightbulb_off.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/lightning.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/lightning_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/lightning_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/lightning_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/link_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/link_break.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/link_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/link_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/link_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/link_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/lock.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/lock_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/lock_break.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/lock_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/lock_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/lock_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/lock_open.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/lorry.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/lorry_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/lorry_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/lorry_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/lorry_flatbed.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/lorry_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/lorry_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/magifier_zoom_out.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/magnifier.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/magnifier_zoom_in.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/male.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/map.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/map_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/map_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/map_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/map_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/map_magnify.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/medal_bronze_1.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/medal_bronze_2.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/medal_bronze_3.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/medal_bronze_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/medal_bronze_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/medal_gold_1.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/medal_gold_2.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/medal_gold_3.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/medal_gold_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/medal_gold_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/medal_silver_1.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/medal_silver_2.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/medal_silver_3.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/medal_silver_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/medal_silver_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/money.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/money_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/money_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/money_dollar.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/money_euro.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/money_pound.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/money_yen.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/monitor.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/monitor_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/monitor_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/monitor_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/monitor_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/monitor_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/monitor_lightning.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/monitor_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/mouse.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/mouse_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/mouse_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/mouse_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/music.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/new.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/newspaper.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/newspaper_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/newspaper_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/newspaper_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/newspaper_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/note.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/note_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/note_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/note_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/note_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/note_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/overlays.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/package.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/package_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/package_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/package_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/package_green.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/package_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_attach.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_code.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_copy.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_excel.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_find.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_gear.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_green.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_lightning.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_paintbrush.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_paste.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_red.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_refresh.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_save.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_acrobat.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_actionscript.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_c.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_camera.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_cd.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_code.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_code_red.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_coldfusion.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_compressed.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_copy.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_cplusplus.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_csharp.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_cup.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_database.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_dvd.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_excel.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_find.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_flash.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_freehand.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_gear.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_get.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_h.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_horizontal.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_lightning.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_magnify.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_medal.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_office.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_paint.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_paintbrush.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_paste.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_php.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_picture.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_powerpoint.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_put.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_ruby.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_stack.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_star.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_swoosh.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_text.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_text_width.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_tux.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_vector.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_visualstudio.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_width.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_word.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_world.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_wrench.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_white_zip.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_word.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/page_world.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/paintbrush.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/paintcan.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/palette.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/paste_plain.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/paste_word.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/pencil.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/pencil_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/pencil_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/pencil_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/phone.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/phone_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/phone_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/phone_sound.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/photo.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/photo_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/photo_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/photo_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/photos.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/picture.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/picture_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/picture_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/picture_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/picture_empty.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/picture_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/picture_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/picture_key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/picture_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/picture_save.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/pictures.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/pilcrow.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/pill.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/pill_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/pill_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/pill_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/plugin.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/plugin_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/plugin_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/plugin_disabled.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/plugin_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/plugin_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/plugin_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/plugin_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/printer.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/printer_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/printer_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/printer_empty.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/printer_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/rainbow.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/report.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/report_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/report_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/report_disk.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/report_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/report_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/report_key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/report_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/report_magnify.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/report_picture.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/report_user.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/report_word.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/resultset_first.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/resultset_last.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/resultset_next.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/resultset_previous.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/rosette.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/rss.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/rss_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/rss_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/rss_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/rss_valid.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/ruby.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/ruby_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/ruby_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/ruby_gear.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/ruby_get.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/ruby_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/ruby_key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/ruby_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/ruby_put.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/script.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/script_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/script_code.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/script_code_red.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/script_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/script_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/script_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/script_gear.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/script_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/script_key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/script_lightning.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/script_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/script_palette.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/script_save.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/server.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/server_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/server_chart.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/server_compressed.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/server_connect.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/server_database.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/server_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/server_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/server_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/server_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/server_key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/server_lightning.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/server_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/server_uncompressed.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shading.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_align_bottom.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_align_center.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_align_left.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_align_middle.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_align_right.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_align_top.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_flip_horizontal.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_flip_vertical.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_group.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_handles.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_move_back.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_move_backwards.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_move_forwards.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_move_front.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_rotate_anticlockwise.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_rotate_clockwise.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_square.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_square_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_square_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_square_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_square_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_square_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_square_key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_square_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shape_ungroup.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shield.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shield_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shield_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/shield_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/sitemap.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/sitemap_color.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/sound.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/sound_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/sound_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/sound_low.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/sound_mute.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/sound_none.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/spellcheck.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/sport_8ball.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/sport_basketball.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/sport_football.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/sport_golf.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/sport_raquet.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/sport_shuttlecock.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/sport_soccer.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/sport_tennis.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/star.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/status_away.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/status_busy.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/status_offline.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/status_online.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/stop.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/style.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/style_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/style_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/style_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/style_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/sum.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/tab.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/tab_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/tab_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/tab_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/tab_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/table.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/table_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/table_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/table_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/table_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/table_gear.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/table_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/table_key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/table_lightning.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/table_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/table_multiple.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/table_refresh.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/table_relationship.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/table_row_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/table_row_insert.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/table_save.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/table_sort.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/tag.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/tag_blue.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/tag_blue_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/tag_blue_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/tag_blue_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/tag_green.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/tag_orange.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/tag_pink.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/tag_purple.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/tag_red.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/tag_yellow.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/telephone.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/telephone_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/telephone_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/telephone_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/telephone_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/telephone_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/telephone_key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/telephone_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/television.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/television_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/television_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_align_center.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_align_justify.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_align_left.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_align_right.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_allcaps.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_bold.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_columns.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_dropcaps.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_heading_1.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_heading_2.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_heading_3.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_heading_4.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_heading_5.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_heading_6.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_horizontalrule.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_indent.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_indent_remove.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_italic.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_kerning.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_letter_omega.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_letterspacing.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_linespacing.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_list_bullets.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_list_numbers.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_lowercase.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_padding_bottom.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_padding_left.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_padding_right.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_padding_top.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_replace.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_signature.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_smallcaps.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_strikethrough.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_subscript.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_superscript.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_underline.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/text_uppercase.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/textfield.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/textfield_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/textfield_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/textfield_key.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/textfield_rename.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/thumb_down.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/thumb_up.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/tick.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/time.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/time_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/time_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/time_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/timeline_marker.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/transmit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/transmit_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/transmit_blue.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/transmit_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/transmit_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/transmit_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/transmit_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/tux.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/user.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/user_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/user_comment.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/user_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/user_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/user_female.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/user_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/user_gray.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/user_green.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/user_offline.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/user_offline_blocked.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/user_online.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/user_online_blocked.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/user_orange.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/user_red.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/user_suit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/vcard.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/vcard_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/vcard_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/vcard_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/vector.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/vector_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/vector_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/wand.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/weather_clouds.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/weather_cloudy.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/weather_lightning.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/weather_rain.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/weather_snow.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/weather_sun.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/webcam.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/webcam_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/webcam_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/webcam_error.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/world.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/world_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/world_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/world_edit.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/world_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/world_link.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/wrench.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/wrench_orange.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/xhtml.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/xhtml_add.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/xhtml_delete.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/xhtml_go.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/xhtml_valid.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/zoom.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/zoom_in.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/icons/zoom_out.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/lamsLogo.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/playerVolume.png =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/images/upArrow.swf =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/common-assets/styles/main.css =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/common-assets/styles/main.css (revision 0) +++ lams_flex/LamsFlexCommon/src/common-assets/styles/main.css (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,35 @@ +Application { + backgroundColor:#ECECEC; + backgroundGradientColors:#ECECEC,#ECECEC; +} + +Tile { + top: 10; + bottom: 10; + left: 10; + right: 10; +} + +Label { + color: #000000; + fontWeight: bold; + fontSize: 14; +} + +.box { + borderColor: #50B2CB; + cornerRadius: 10; + borderStyle: solid; + borderThickness: 1; + paddingBottom: 10; + paddingTop: 10; + paddingLeft: 10; + paddingRight: 10; + backgroundColor:#ffffff; + backgroundAlpha: 1; +} + +Text { + fontSize: 12; + fontWeight: normal; +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/lib/Mate_08_7.swc =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/lib/WDDX.swc =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/lib/flexlib.swc =================================================================== diff -u Binary files differ Index: lams_flex/LamsFlexCommon/src/lib/mate.license.txt =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/lib/mate.license.txt (revision 0) +++ lams_flex/LamsFlexCommon/src/lib/mate.license.txt (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,55 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + + 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and + + 2. You must cause any modified files to carry prominent notices stating that You changed the files; and + + 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + + 4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + +You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS Index: lams_flex/LamsFlexCommon/src/lib/wddx.license.txt =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/lib/wddx.license.txt (revision 0) +++ lams_flex/LamsFlexCommon/src/lib/wddx.license.txt (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,23 @@ +http://www.opensource.org/licenses/mit-license.php + +The MIT License + +Copyright (c) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. Index: lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/conn/ImageService.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/conn/ImageService.as (revision 0) +++ lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/conn/ImageService.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,49 @@ +package org.lamsfoundation.lams.common.conn +{ + import flash.display.BitmapData; + import flash.utils.ByteArray; + + import mx.graphics.codec.JPEGEncoder; + import mx.graphics.codec.PNGEncoder; + import mx.rpc.http.HTTPService; + import mx.utils.Base64Encoder; + + public class ImageService extends HTTPService + { + public var PNG_EXT:String = "png"; + public var JPG_EXT:String = "jpg"; + + public function ImageService(url:String, method:String = null) + { + this.url = url; + this.method = "POST"; + this.resultFormat = "e4x"; + + if(method){ + this.request.method = method; + } + } + + public function sendImageToServer(dir:String, filename:String, ext:String, image:BitmapData):void{ + var rawBytes:ByteArray = new ByteArray(); + if(ext == PNG_EXT){ + var pngEncoder:PNGEncoder = new PNGEncoder(); + rawBytes = pngEncoder.encode(image); + } + else if(ext == JPG_EXT){ + var jpegEncoder:JPEGEncoder = new JPEGEncoder(); + rawBytes = jpegEncoder.encode(image); + } + + var encoder:Base64Encoder = new Base64Encoder(); + encoder.encodeBytes(rawBytes); + + this.request.dir = dir; + this.request.filename = filename; + this.request.ext = ext; + this.request.data = encoder.flush(); + + this.send(); + } + } +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/dictionary/XMLDictionary.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/dictionary/XMLDictionary.as (revision 0) +++ lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/dictionary/XMLDictionary.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,67 @@ +package org.lamsfoundation.lams.common.dictionary +{ + import flash.events.EventDispatcher; + + public class XMLDictionary + { + private var eventDispatcher:EventDispatcher; + private var dictionaryXML:XML; + + public function XMLDictionary(xml:XML) + { + eventDispatcher = new EventDispatcher(); + dictionaryXML = new XML(xml); + + eventDispatcher.dispatchEvent(new XMLDictionaryEvent(XMLDictionaryEvent.COMPLETE)); + } + + public function getValue(s:String):String { + if(!isEmpty()) { + var value:String = dictionaryXML.language.entry.(@key==s).data; + return value; + } + + return null; + } + + public function getLabel(s:String):String{ + if(!isEmpty()){ + return dictionaryXML.language.entry.(@key==s).name; + } + + return null; + } + + public function getLabelAndConcatenate(s:String, a:Array):String{ + if(!isEmpty()){ + var concat:String = ""; + for(var i:int = 0; i < a.length; i++){ + concat += a[i]; + } + + return getLabel(s) + concat; + } + + return null; + } + + public function getLabelAndReplace(s:String, a:Array, useKey:Boolean):String{ + if(!isEmpty()) { + var label:String = getLabel(s); + + for(var i:int = 0; i < a.length; i++){ + var replaceStr:String = (useKey) ? getLabel(a[i]) : a[i]; + label = label.replace("{" + String(i) + "}", replaceStr); + } + + return label; + } + + return null; + } + + public function isEmpty():Boolean{ + return dictionaryXML.toString() == ""; + } + } +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/dictionary/XMLDictionaryEvent.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/dictionary/XMLDictionaryEvent.as (revision 0) +++ lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/dictionary/XMLDictionaryEvent.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,15 @@ +package org.lamsfoundation.lams.common.dictionary +{ + import flash.events.Event; + + public class XMLDictionaryEvent extends Event + { + public static const COMPLETE: String = "completeXMLDictionaryEvent"; + + public function XMLDictionaryEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false) + { + super(type, bubbles, cancelable); + } + + } +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/dictionary/XMLDictionaryRegistry.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/dictionary/XMLDictionaryRegistry.as (revision 0) +++ lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/dictionary/XMLDictionaryRegistry.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,66 @@ +package org.lamsfoundation.lams.common.dictionary +{ + import flash.events.Event; + import flash.events.EventDispatcher; + + public class XMLDictionaryRegistry extends EventDispatcher + { + public static const UPDATE_LABELS:String = "updatedLabels"; + public static const UPDATE_LABELS_REPLACE:String = "updateLabelsReplace"; + public static const UPDATE_LABELS_CONCATENTATE:String = "updateLabelsConcatenate"; + public static const UPDATE_LABELS_INSERT:String = "updateLabelsInsert"; + + private var _xmlDictionary:XMLDictionary; + private var keyRegistry:Array; + + public function XMLDictionaryRegistry(value:XML) + { + xml = value; + } + + public function set xml(value:XML):void { + _xmlDictionary = new XMLDictionary(value); + + this.dispatchEvent(new Event("updatedLabels")); + this.dispatchEvent(new Event("updatedLabelsReplace")); + this.dispatchEvent(new Event("updatedLabelsConcatentate")); + this.dispatchEvent(new Event("updatedLabelsInsert")); + + this.dispatchEvent(new Event("updatedValues")); + } + + [Bindable (event="updatedValues")] + public function getValue(key:String):Object { + return _xmlDictionary.getValue(key); + } + + [Bindable (event="updatedLabels")] + public function getLabel(key:String):String { + return _xmlDictionary.getLabel(key); + } + + [Bindable (event="updatedLabelsReplace")] + public function getLabelAndReplace(key:String, values:Array):String { + return _xmlDictionary.getLabelAndReplace(key, values, true); + } + + [Bindable (event="updatedLabelsConcatentate")] + public function getLabelAndConcatenate(key:String, values:Array):String { + return _xmlDictionary.getLabelAndConcatenate(key, values); + } + + [Bindable (event="updatedLabelsInsert")] + public function getLabelAndInsert(key:String, values:Array):String { + return _xmlDictionary.getLabelAndReplace(key, values, false); + } + + public function dispatchEvents():void { + this.dispatchEvent(new Event("updatedLabels")); + this.dispatchEvent(new Event("updatedLabelsReplace")); + this.dispatchEvent(new Event("updatedLabelsConcatentate")); + this.dispatchEvent(new Event("updatedLabelsInsert")); + + this.dispatchEvent(new Event("updatedValues")); + } + } +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/managers/LamsAjaxOverlayManager.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/managers/LamsAjaxOverlayManager.as (revision 0) +++ lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/managers/LamsAjaxOverlayManager.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,248 @@ +package org.lamsfoundation.lams.common.managers +{ + import flash.display.DisplayObjectContainer; + + import mx.collections.ArrayCollection; + import mx.containers.Canvas; + import mx.controls.Alert; + import mx.controls.Image; + import mx.core.UIComponent; + + public class LamsAjaxOverlayManager + { + private static var overlays:ArrayCollection = new ArrayCollection(); + + [Embed(source="/common-assets/images/ajax-loader-big.swf")] + [Bindable] + private static var ajaxIcon:Class; + + public function LamsAjaxOverlayManager() + { + + } + + // show an overlay + public static function showOverlay(obj:UIComponent):void{ + // check for an existing overlay + var overlaySet:Object = isInOverlays(obj); + + // if an overlay exists + if(overlaySet != null){ + // don't try show + return; + } + + // create a new one + overlaySet = createNewOverlaySet(obj); + + // get needed objects + var objUi:UIComponent = UIComponent(overlaySet.object); + var overlay:Canvas = Canvas(overlaySet.overlay); + var objParent:DisplayObjectContainer = objUi.parent; + + // disable the object under the overlay + objUi.enabled = false; + + // set overlay to be invisible + overlay.visible = false; + + // set object's properties to overlay's + overlay.x = objUi.x; + overlay.y = objUi.y; + + if(objUi.getStyle("top")) + overlay.setStyle("top", objUi.getStyle("top")); + else + overlay.clearStyle("top"); + + if(objUi.getStyle("bottom")) + overlay.setStyle("bottom", objUi.getStyle("bottom")); + else + overlay.clearStyle("bottom"); + + if(objUi.getStyle("left")) + overlay.setStyle("left", objUi.getStyle("left")); + else + overlay.clearStyle("left"); + + if(objUi.getStyle("right")) + overlay.setStyle("right", objUi.getStyle("right")); + else + overlay.clearStyle("right"); + + if(objUi.percentHeight) + overlay.percentHeight = objUi.percentHeight; + else + overlay.height = objUi.height; + + if(objUi.percentWidth) + overlay.percentWidth = objUi.percentWidth; + else + overlay.width = objUi.width; + + // remove object from its parent + objParent.removeChild(objUi); + + // set object be full inside overlay + objUi.setStyle("top", 0); + objUi.setStyle("bottom", 0); + objUi.setStyle("left", 0); + objUi.setStyle("right", 0); + + // add the object to the overlay (under the spinner) + overlay.addChildAt(objUi, 0); + + // add the overlay to the parent + objParent.addChild(overlay); + + // show the overlay + overlay.visible = true; + } + + // hides an overlay + public static function hideOverlay(obj:UIComponent):void{ + // check for an existing overlay + var overlaySet:Object = isInOverlays(obj); + + // if an overlay exists + if(overlaySet){ + // get needed objects + var objUi:UIComponent = UIComponent(overlaySet.object); + var overlay:Canvas = Canvas(overlaySet.overlay); + var objParent:DisplayObjectContainer = overlay.parent; + + // remove the overlay + objParent.removeChild(overlay); + + // remove the object from the overlay + overlay.removeChild(objUi); + + // make object invisible temporarily + objUi.visible = false; + + // return the object to it's original state + objUi.x = overlay.x; + objUi.y = overlay.y; + + if(overlay.percentHeight) + objUi.percentHeight = overlay.percentHeight; + else + objUi.height = objUi.height; + + if(overlay.percentWidth) + objUi.percentWidth = overlay.percentWidth; + else + objUi.width = overlay.width; + + if(overlay.getStyle("top")) + objUi.setStyle("top", overlay.getStyle("top")); + else + objUi.clearStyle("top"); + + if(overlay.getStyle("bottom")) + objUi.setStyle("bottom", overlay.getStyle("bottom")); + else + objUi.clearStyle("bottom"); + + if(overlay.getStyle("left")) + objUi.setStyle("left", overlay.getStyle("left")); + else + objUi.clearStyle("left"); + + if(overlay.getStyle("right")) + objUi.setStyle("right", overlay.getStyle("right")); + else + objUi.clearStyle("right"); + + // add the object + objParent.addChild(objUi); + + // make object visible + objUi.visible = true; + + // re-enable the object + objUi.enabled = true; + + // set the object to null (for overlay recycling) + overlaySet.object = null; + } + } + + // creates a new overlay set + private static function createNewOverlaySet(obj:Object):Object{ + var newOverlaySet:Object = new Object(); + + // check for unused overlay + var newOverlayCanvas:Canvas = getUnusedOverlay(); + + // if no recycled overlay was found + if(!newOverlayCanvas){ + // create a new one + trace("creating new"); + newOverlayCanvas = new Canvas(); + + // create and prepare the spinner + var ajaxImage:Image = new Image(); + ajaxImage.source = ajaxIcon; + ajaxImage.setStyle("horizontalCenter", 0); + ajaxImage.setStyle("verticalCenter", 0); + + // add the spinner + newOverlayCanvas.addChild(ajaxImage); + + // set the object and overlay + newOverlaySet.object = obj; + newOverlaySet.overlay = newOverlayCanvas; + + // add it to the collection + trace("adding new"); + overlays.addItem(newOverlaySet); + } + else{ + // set the object and overlay + trace("updating old"); + newOverlaySet = updateOverlaySet(obj, newOverlayCanvas); + } + + return newOverlaySet; + } + + // checks if object has an overlay + private static function isInOverlays(obj:UIComponent):Object{ + trace(overlays.length); + for each(var overlaySet:Object in overlays){ + if(overlaySet.object == obj){ + return overlaySet; + } + } + + return null; + } + + // recycles an overlay + private static function getUnusedOverlay():Canvas{ + for each(var overlaySet:Object in overlays){ + if(overlaySet.object == null){ + trace("recycling"); + return overlaySet.overlay; + } + } + + return null + } + + // update the overlayset + private static function updateOverlaySet(obj:Object, newOverlay:Canvas):Object{ + for each(var overlaySet:Object in overlays){ + if(overlaySet.overlay == newOverlay){ + trace("updating"); + overlaySet.object = obj; + overlaySet.overlay = newOverlay; + return overlaySet; + } + } + + return null + } + } +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/managers/LamsPopUpManager.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/managers/LamsPopUpManager.as (revision 0) +++ lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/managers/LamsPopUpManager.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,17 @@ +package org.lamsfoundation.lams.common.managers +{ + import mx.collections.ArrayCollection; + import mx.managers.PopUpManager; + + public class LamsPopUpManager extends PopUpManager + { + private var PopUpClasses:ArrayCollection; + + public function LamsPopUpManager() + { + super(); + } + + + } +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/popups/DebugPopUp.mxml =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/popups/DebugPopUp.mxml (revision 0) +++ lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/popups/DebugPopUp.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,106 @@ + + + + + + + + + + + + + Index: lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/ui/components/ResizeableTextArea.mxml =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/ui/components/ResizeableTextArea.mxml (revision 0) +++ lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/ui/components/ResizeableTextArea.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,24 @@ + + + + + + + + Index: lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/ui/components/SeekSlider.mxml =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/ui/components/SeekSlider.mxml (revision 0) +++ lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/ui/components/SeekSlider.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,142 @@ + + + + + + + + + + + + Index: lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/ui/components/SortButton.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/ui/components/SortButton.as (revision 0) +++ lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/ui/components/SortButton.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,135 @@ +package org.lamsfoundation.lams.common.ui.components +{ + import flash.display.*; + import flash.events.MouseEvent; + + import mx.containers.HBox; + import mx.controls.Button; + import mx.controls.Label; + import mx.controls.RadioButton; + import mx.events.FlexEvent; + + public class SortButton extends HBox + { + [Embed(source="/common-assets/images/icons/bullet_arrow_up.png")] + [Bindable] + private var upArrow:Class; + + [Embed(source="/common-assets/images/icons/bullet_arrow_down.png")] + [Bindable] + private var downArrow:Class; + + private var button:Button; + private var buttonLabel:Label; + + public static const NA:String = "not selected"; + public static const ASC:String = "ascending"; + public static const DSC:String = "descending"; + + [Inspectable] + private var _sortBy:String; + + [Inspectable] + private var _selected:Boolean; + + [Inspectable] + private var _sortDirection:String; + + public function SortButton() + { + // call button's constructor + super(); + + // initialize sortDirection + if(_sortDirection == "" || _sortDirection != NA || _sortDirection != ASC || _sortDirection != DSC){ + _sortDirection = NA; + _selected = false; + } + + // create ui components + button = new Button(); + button.addEventListener(MouseEvent.CLICK, clickHandler); + + buttonLabel = new Label(); + + // set stles (sortDirection and ui components must be initialized first) + setStyles(); + + // add init event listener + addEventListener(FlexEvent.INITIALIZE, initializeHandler); + } + + private function setStyles():void{ + this.setStyle("gap", 0); + + if(_sortDirection == ASC){ + button.setStyle("icon", upArrow); + } + else if(_sortDirection == DSC){ + button.setStyle("icon", downArrow); + } + else{ + button.setStyle("icon", null); + } + } + + public function get sortBy():String{ + return _sortBy; + } + + public function set sortBy(sortBy:String):void{ + _sortBy = sortBy; + } + + public function get selected():Boolean{ + return _selected; + } + + public function set selected(selected:Boolean):void{ + if(selected){ + if(_sortDirection == NA || _sortDirection == DSC){ + _sortDirection = ASC; + button.setStyle("icon", upArrow); + } + else if(sortDirection == ASC){ + _sortDirection = DSC; + button.setStyle("icon", downArrow); + } + } + else{ + _sortDirection = NA; + button.setStyle("icon", null); + } + + _selected = selected; + } + + public function get sortDirection():String{ + return _sortDirection; + } + + public function set sortDirection(sortDirection:String):void{ + _sortDirection = sortDirection; + } + + // gets called when the component has been initialized + private function initializeHandler(event:FlexEvent):void + { + // paint the button + button.width = 17; + button.height = 17; + addChild(button); + + // paint the label + buttonLabel.text = this.label; + addChild(buttonLabel); + } + + // gets called when the button is clicked + protected function clickHandler(event:MouseEvent):void + { + // dispatch an event and let the sortButtonGroup take care of the rest + dispatchEvent(new SortEvent(_sortBy, _sortDirection)); + } + } +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/ui/components/SortButtonGroup.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/ui/components/SortButtonGroup.as (revision 0) +++ lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/ui/components/SortButtonGroup.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,78 @@ +package org.lamsfoundation.lams.common.ui.components +{ + import mx.containers.HBox; + import mx.events.FlexEvent; + + public class SortButtonGroup extends HBox + { + // an array of buttons + private var buttons:Array = []; + + // the selected button at the moment + private var selectedButton:SortButton; + + private var _sortBy:String; + private var _sortDirection:String; + + public function SortButtonGroup() + { + // call super constructor + super(); + + // add init event listener + addEventListener(FlexEvent.INITIALIZE, initializeHandler); + } + + // gets called when the component has been initialized + private function initializeHandler(event:FlexEvent):void{ + // get the buttons in the group + buttons = getChildren(); + + // for all buttons, add sortEvent listener and check for a selected button + var foundSelected:Boolean = false; + for(var i:int = 0; i < buttons.length; i++){ + var button:SortButton = buttons[i]; + button.addEventListener(SortEvent.EVENT_TYPE, sortEventHandler); + + if(button.selected == true){ + if(foundSelected){ + button.selected = false; + } + else{ + foundSelected = true; + selectedButton = button; + _sortBy = button.sortBy; + _sortDirection = button.sortDirection; + dispatchEvent(new SortEvent(button.sortBy, button.sortDirection)); + } + } + } + } + + private function sortEventHandler(event:SortEvent):void{ + selectedButton = SortButton(event.target); + + for(var i:int = 0; i < buttons.length; i++){ + var button:SortButton = buttons[i]; + if(button != selectedButton){ + button.selected = false; + } + else{ + button.selected = true; + _sortDirection = button.sortDirection; + _sortBy = button.sortBy; + } + } + + dispatchEvent(new SortEvent(_sortBy, _sortDirection)); + } + + public function get sortDirection():String{ + return _sortDirection; + } + + public function get sortBy():String{ + return _sortBy; + } + } +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/ui/components/SortEvent.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/ui/components/SortEvent.as (revision 0) +++ lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/ui/components/SortEvent.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,27 @@ +package org.lamsfoundation.lams.common.ui.components +{ + import flash.events.Event; + + public class SortEvent extends Event + { + public static const EVENT_TYPE:String = "sortEvent"; + private var _sortBy:String; + private var _sortDirection:String; + + public function SortEvent(sortBy:String, sortDirection:String, bubbles:Boolean=false, cancelable:Boolean=false) + { + super(EVENT_TYPE, bubbles, cancelable); + + _sortBy = sortBy; + _sortDirection = sortDirection; + } + + public function get sortBy():String{ + return _sortBy; + } + + public function get sortDirection():String{ + return _sortDirection; + } + } +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/ui/components/VideoDisplay.mxml =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/ui/components/VideoDisplay.mxml (revision 0) +++ lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/ui/components/VideoDisplay.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,689 @@ + + + + + = metadata.duration){ + // Alert.show("NetStream.Play.Complete from checkStream"); + makeReadyAgain(); + dispatchEvent(new VideoDisplayEvent(VideoDisplayEvent.COMPLETE)); + } + } + + private function securityErrorHandler(event:SecurityErrorEvent):void { + trace("securityErrorHandler: " + event); + } + + private function asyncErrorHandler(event:AsyncErrorEvent):void { + trace("securityErrorHandler: " + event); + } + + // callback from screenshotter + private function screenShotTaken(event:ScreenShotterEvent):void{ + // pass on the event + dispatchEvent(event); + } + ]]> + + + + + + + + + + + + + + + + + \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/ui/components/VideoDisplayEvent.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/ui/components/VideoDisplayEvent.as (revision 0) +++ lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/ui/components/VideoDisplayEvent.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,29 @@ +package org.lamsfoundation.lams.common.ui.components +{ + import flash.events.Event; + + public class VideoDisplayEvent extends Event + { + public static const RESET:String = "videoDisplayReset"; + public static const READY:String = "videoDisplayReady"; + public static const READYSEEK:String = "videoDisplayReadySeek"; + public static const PAUSE:String = "videoDisplayPause"; + public static const PAUSESEEK:String = "videoDisplayPauseSeek"; + public static const UNPAUSE:String = "videoDisplayUnpause"; + public static const METADATA:String = "videoDisplayMetadata"; + public static const STARTCAM:String = "videoDisplayStartCam"; + public static const STOPCAM:String = "videoDisplayStopCam"; + public static const STARTPUBLISH:String = "videoDisplayStartPublish"; + public static const STOPPUBLISH:String = "videoDisplayStopPublish"; + public static const COMPLETE:String = "videoDisplayComplete"; + public static const BUFFERING:String = "videoDisplayBuffering"; + + public var metadata:Object; + + public function VideoDisplayEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false) + { + super(type, bubbles, cancelable); + } + + } +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/util/ArgumentsToRendererFactory.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/util/ArgumentsToRendererFactory.as (revision 0) +++ lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/util/ArgumentsToRendererFactory.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,31 @@ +package org.lamsfoundation.lams.common.util +{ + import flash.utils.Dictionary; + + import mx.core.IFactory; + + public class ArgumentsToRendererFactory implements IFactory + { + private var klass:Class; + private var args:*; + + public function ArgumentsToRendererFactory(args:*,klass:Class) { + this.args=args; + this.klass=klass; + } + + public function newInstance():* + { + var instance:Object = new klass; + + + for (var key:String in args) { + if (instance.hasOwnProperty(key)) { + instance[key] = args[key]; + } + } + + return instance; + } + } +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/util/ComponentScreenShotter.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/util/ComponentScreenShotter.as (revision 0) +++ lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/util/ComponentScreenShotter.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,46 @@ +package org.lamsfoundation.lams.common.util +{ + import flash.display.Bitmap; + import flash.display.BitmapData; + import flash.events.EventDispatcher; + import flash.geom.Rectangle; + import flash.utils.ByteArray; + + import mx.core.UIComponent; + + public class ComponentScreenShotter extends EventDispatcher + { + private var _componentToCapture:UIComponent; + + public function ComponentScreenShotter(componentToCapture:UIComponent = null) + { + _componentToCapture = componentToCapture; + } + + public function takeScreenshot():void{ + if(_componentToCapture){ + // create a new preview image + var previewImage:BitmapData = new BitmapData(_componentToCapture.width, _componentToCapture.height) ; + + // draw the screenshoter frame + previewImage.draw(_componentToCapture); + + // make a bitmap + var bm:Bitmap = new Bitmap(previewImage); + + // get the raw data + var bytes:ByteArray = previewImage.getPixels(new Rectangle(0, 0, _componentToCapture.width, _componentToCapture.height)); + + var screenShotEvent:ScreenShotterEvent = new ScreenShotterEvent(ScreenShotterEvent.SCREENSHOTTAKEN); + screenShotEvent.previewImage = previewImage; + + dispatchEvent(screenShotEvent); + } + } + + public function set componentToCapture(componentToCapture:UIComponent):void{ + _componentToCapture = componentToCapture; + } + + } +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/util/LAMSStringUtil.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/util/LAMSStringUtil.as (revision 0) +++ lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/util/LAMSStringUtil.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,28 @@ +package org.lamsfoundation.lams.common.util +{ + import mx.utils.StringUtil; + + public class LAMSStringUtil extends StringUtil + { + public function LAMSStringUtil() + { + super(); + } + + // convert a string to a boolean + public static function stringToBool(string:String):Boolean{ + switch(string){ + case "1": + case "true": + case "yes": + return true; + case "0": + case "false": + case "no": + return false; + default: + return Boolean(string); + } + } + } +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/util/NetStreamScreenShotter.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/util/NetStreamScreenShotter.as (revision 0) +++ lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/util/NetStreamScreenShotter.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,150 @@ +package org.lamsfoundation.lams.common.util +{ + import flash.display.Bitmap; + import flash.display.BitmapData; + import flash.events.NetStatusEvent; + import flash.events.TimerEvent; + import flash.geom.Rectangle; + import flash.media.SoundTransform; + import flash.media.Video; + import flash.net.NetConnection; + import flash.net.NetStream; + import flash.utils.ByteArray; + import flash.utils.Timer; + + import mx.core.Application; + import mx.core.UIComponent; + + public class NetStreamScreenShotter extends UIComponent + { + private var _nc:NetConnection; + private var _filename:String; + private var _bufferTime:int = 2; + + private var ssTimer:Timer; + private var screenshotNs:NetStream; + private var screenshotVideo:Video; + + public function NetStreamScreenShotter() + { + super(); + + this.visible = false; + this.width = 320; + this.height = 240; + + // create new video object + screenshotVideo = new Video(); + screenshotVideo.width = this.width; + screenshotVideo.height = this.height; + + // fix video player + this.addChild(screenshotVideo); + screenshotVideo.visible = true; + + // add the ui component to the application + Application.application.addChild(this); + } + + public function set nc(myNc:NetConnection):void{ + _nc = myNc; + } + + public function set bufferTime(myBufferTime:int):void{ + _bufferTime = myBufferTime; + } + + public function set filename(myFilename:String):void{ + _filename = myFilename; + } + + public function takeScreenshot():void{ + if(screenshotNs != null){ + screenshotNs.close(); + screenshotNs = null; + } + + // create the screenshot netstream + screenshotNs = createNetStreamForSS(); + + // attach the netstream to the video + screenshotVideo.attachNetStream(screenshotNs); + + // stream from the server + screenshotNs.play(_filename, -2); + } + + // creates a new netstream object for screenshotting + private function createNetStreamForSS():NetStream{ + // if nc is not null + if(_nc){ + // create a net stream object + var ns:NetStream = new NetStream(_nc); + ns.bufferTime = _bufferTime * 1000; + + // listeners and callback stuff for netstatus object + var client:Object = new Object(); + client.onMetaData = function():void{}; + client.onPlayStatus = function():void{}; + ns.client = client; + + // mute the net stream + ns.soundTransform = new SoundTransform(0); + + // connect the netstatus handler + ns.addEventListener(NetStatusEvent.NET_STATUS, nsStatusHandlerForSS); + + return ns; + } + else + return null; + } + + private function nsStatusHandlerForSS(event:NetStatusEvent):void { + // get the info object + var infoObject:Object = event.info; + + trace(VideoDisplayUtil.printInfoObject(infoObject)); + + switch(infoObject.code){ + case "NetStream.Play.Start":{ + if(ssTimer != null){ + ssTimer.stop(); + ssTimer = null; + } + + ssTimer = new Timer(_bufferTime * 1000, 1); + ssTimer.addEventListener(TimerEvent.TIMER_COMPLETE, returnScreenShot); + ssTimer.start(); + break; + } + } + } + + private function returnScreenShot(event:TimerEvent = null):void{ + // detach the netstream for security reasons + screenshotVideo.attachNetStream(null); + + // create a new preview image + var previewImage:BitmapData = new BitmapData(this.width, this.height) ; + + // draw the screenshoter frame + previewImage.draw(this); + + // make a bitmap + var bm:Bitmap = new Bitmap(previewImage); + + // get the raw data + var bytes:ByteArray = previewImage.getPixels(new Rectangle(0, 0, 320, 240)); + + screenshotNs.close(); + screenshotNs = null; + + var screenShotEvent:ScreenShotterEvent = new ScreenShotterEvent(ScreenShotterEvent.SCREENSHOTTAKEN, true, true); + screenShotEvent.previewImage = previewImage; + + dispatchEvent(screenShotEvent); + } + + } +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/util/ScreenShotterEvent.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/util/ScreenShotterEvent.as (revision 0) +++ lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/util/ScreenShotterEvent.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,26 @@ +package org.lamsfoundation.lams.common.util +{ + import flash.display.BitmapData; + import flash.events.Event; + + public class ScreenShotterEvent extends Event + { + public static const SCREENSHOTTAKEN:String = "screenShotTaken"; + + private var _previewImage:BitmapData; + + public function ScreenShotterEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false) + { + super(type, bubbles, cancelable); + } + + public function set previewImage(myPreviewImage:BitmapData):void{ + _previewImage = myPreviewImage; + } + + public function get previewImage():BitmapData{ + return _previewImage; + } + + } +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/util/VideoDisplayUtil.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/util/VideoDisplayUtil.as (revision 0) +++ lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/util/VideoDisplayUtil.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,115 @@ +package org.lamsfoundation.lams.common.util +{ + import flash.media.Camera; + import flash.media.Microphone; + + import mx.controls.Alert; + + public class VideoDisplayUtil + { + public function VideoDisplayUtil() {} + + // prints an info object + public static function printInfoObject(infoObject:Object, caller:String=null):String{ + var printedString:String = ""; + + if(caller){ + printedString += "caller: " + caller + "\n"; + } + + for (var prop in infoObject) { + printedString += prop + ":\t" + infoObject[prop] + "\n"; + } + return printedString; + } + + // create a filename for the video recorder tool + public static function createFilename(toolSessionId:int, userId:int):String{ + + return "lamsRecording_session" + toolSessionId + "_user" + userId + "_" + randomNumber(1, 1000000000); + } + + // create a filename for use in the fck editor + public static function createFilenameForFCK(userId:int):String{ + + return "lamsRecording_forFCK" + "_user" + userId + "_" + randomNumber(1, 1000000000); + } + + public static function createFilenameForAuthor(toolContentId:int):String{ + + return "lamsRecording_tool" + toolContentId + "_" + randomNumber(1, 1000000000); + } + + // creates a random number between bounds + private static function randomNumber(low:Number=NaN, high:Number=NaN):Number { + var low:Number = low; + var high:Number = high; + + if(isNaN(low)) + { + throw new Error("low must be defined"); + } + if(isNaN(high)) + { + throw new Error("high must be defined"); + } + + return Math.round(Math.random() * (high - low)) + low; + } + + // gets a camera and sets it up + public static function setupCamera():Camera { + var cam:Camera; + + // if a camera exists + if(Camera.names.length != 0){ + // get the camera + cam = Camera.getCamera(); + + // setting dimensions and framerate + var iFps:int = cam.fps; + cam.setMode (320, 240, iFps); + + // set to minimum of 90% quality + cam.setQuality(0, 90); + } + else{ + // no camera was detected, return null + } + + return cam; + } + + // sets up mic + public static function setupMic():Microphone{ + var mic:Microphone; + + // if a microphone exists + if(Microphone.names.length != 0){ + // get mic + mic = Microphone.getMicrophone(); + + // setup rate + mic.rate = 44; + } + + return mic; + } + + // creates a string with the correct time formatting + public static function secondsToString(val:String):String{ + var valInt:Number = Number(val); + var minutes:int = valInt / 60; + var seconds:int = valInt % 60; + + var result:String = ""; + result += String(minutes) + ":"; + + if(seconds < 10){ + result += "0"; + } + result += String(seconds); + return result; + } + } +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/util/WDDXParser.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/util/WDDXParser.as (revision 0) +++ lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/util/WDDXParser.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,38 @@ +package org.lamsfoundation.lams.common.util +{ + + import flash.xml.XMLNode; + + import pl.cfml.coldfusion.as3.utils.WDDX; + + public class WDDXParser + { + + public function WDDXParser() + { + } + + public function parseObject(node:XMLNode):Object { + var xml:XML = new XML(node); + if(node == null) + return null; + + var data:Object = WDDX.fromWDDX(xml.toXMLString()); + + + return data.messageValue; + } + + public function createWDDX(data:Object):XML { + if(data == null) + return null; + + var xml:String = WDDX.toWDDX(data); + var returnXML:XML = new XML(unescape(xml)); + + trace('xml: ' + returnXML); + return returnXML; + } + + } +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/util/WDDXUtil.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/util/WDDXUtil.as (revision 0) +++ lams_flex/LamsFlexCommon/src/org/lamsfoundation/lams/common/util/WDDXUtil.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,72 @@ +package org.lamsfoundation.lams.common.util +{ + public class WDDXUtil + { + //nulls + public static var STRING_NULL_VALUE:String = "string_null_value"; + public static var NUMERIC_NULL_VALUE:Number = -111111; + public static var DATE_NULL_VALUE:Date = new Date(0); + public static var BOOLEAN_NULL_VALUE:String = "boolean_null_value"; + + public function WDDXUtil() + { + } + + /** + * If the value passed in is any null type value or LAMS NULL VALUE then blank string is returned + * Used to prevent "undefined" or "string_null_value" appearing in the UI + * @usage var myStr = WDDXUtils.cleanNull(WDDXOBJ) + * @param obj + * @return clean string or null value. + */ + public static function cleanNull(obj:Object):Object { + + if(obj is String && obj == STRING_NULL_VALUE){ + return ""; + } else if(obj is Number && obj == NUMERIC_NULL_VALUE){ + obj = null; + } else if(obj is Boolean && obj == BOOLEAN_NULL_VALUE) { + obj = null; + } + + return obj; + + } + + /** + * Checks to see if the value passed in is any of the null values defined in Config. + * @usage + * @param v + * @return boolean true if null + */ + public static function isWDDXNull(v:Object):Boolean{ + if(v==STRING_NULL_VALUE){ + return true; + } + if(v==NUMERIC_NULL_VALUE){ + return true; + } + if(v==STRING_NULL_VALUE){ + return true; + } + if(v==DATE_NULL_VALUE){ + return true; + } + if(v==BOOLEAN_NULL_VALUE){ + return true; + } + return false; + } + + public static function toWDDXNull(obj:Object):Object { + if(obj is String && (obj == "" || obj == null)) + return STRING_NULL_VALUE; + else if(obj is Number || obj is int || obj is uint) + if(obj == 0 || obj == null) + return NUMERIC_NULL_VALUE; + + return obj; + } + + } +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/pl/cfml/coldfusion/as3/utils/ArrayUtils.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/pl/cfml/coldfusion/as3/utils/ArrayUtils.as (revision 0) +++ lams_flex/LamsFlexCommon/src/pl/cfml/coldfusion/as3/utils/ArrayUtils.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,114 @@ +/* +THIS SOURCE CODE IS PROVIDED "AS IS" AND "WITH ALL FAULTS", WITHOUT +ANY TECHNICAL SUPPORT OR ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ALSO, THERE IS NO WARRANTY OF +NON-INFRINGEMENT, TITLE OR QUIET ENJOYMENT. IN NO EVENT SHALL MACROMEDIA +OR ITS SUPPLIERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOURCE CODE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +package pl.cfml.coldfusion.as3.utils +{ + import mx.utils.ArrayUtil; + import mx.collections.ArrayCollection; + + /** + * Class provides utility metods for Array and ArrayCollection. + */ + public class ArrayUtils + { + + /** + * Check for element existence in Array. + * + * @param array The array which will be checked. + * @param value Object to be found. + * @return Boolean; true if element was found, false if not. + * @langversion ActionScript 3.0 + * @playerversion Flash 9.0 + * @tiptext + */ + public static function inArray(array:Array, value:Object):Boolean + { + if (ArrayUtil.getItemIndex(value, array) == -1) + return false; + return true; + } + + /** + * Check for element existence in ArrayCollection by key name of ArrayCollection items. + * + * @param array The ArrayCollection which will be checked. + * @param key Key to be checked. + * @param value Object to be found. + * @return Boolean; true if element was found, false if not. + * @langversion ActionScript 3.0 + * @playerversion Flash 9.0 + * @tiptext + */ + public static function inArrayCollection(array:ArrayCollection, key:String, value:String):Boolean + { + for (var i:int=0; i -1) + indexes.push(i); + } + else + { + if ((this._columns[column] as Array)[i].toString().toLowerCase().indexf(value.toLowerCase()) > -1) + indexes.push(i); + } + break; + case 1: + if (likeCaseSensitive) + { + if ((this._columns[column] as Array)[i].toString().substr(0,value.length) == value) + indexes.push(i); + } + else + { + if ((this._columns[column] as Array)[i].toString().toLowerCase().substr(0,value.length) == value.toLowerCase()) + indexes.push(i); + } + break; + case 2: + if (likeCaseSensitive) + { + if ((this._columns[column] as Array)[i].toString().substr( (this._columns[column] as Array)[i].toString().length-value.length ,value.length) == value) + indexes.push(i); + } + else + { + if ((this._columns[column] as Array)[i].toString().substr( (this._columns[column] as Array)[i].toString().length-value.length ,value.length).toLowerCase() == value.toLowerCase()) + indexes.push(i); + } + break; + } + } + } + this.doDeleteRows( indexes ); + } + + /** + * Gets Recordset field value. + * + * @param column Recordset column. + * @param index Row number. If 0 row number is obtained by currentRow else index is used. + * @return Field value. + * @langversion ActionScript 3.0 + * @playerversion Flash 9.0 + * @tiptext + */ + public function getValue(column:String, index:Number=0):String + { + if (this._rowsNum == 0) + throw new Error("Recordset doesn't contain any row. Use addRow()."); + if (index < 0) + throw new Error("Minimum row number for Recordset is 1."); + return (this._columns[column] as Array)[((index==0) ? this._currentRow-1 : index)]; + } + + /** + * Sets Recordset field value. + * + * @param column Recordset column. + * @param index Row number. + * @return Field value. + * @langversion ActionScript 3.0 + * @playerversion Flash 9.0 + * @tiptext + */ + public function setValue(column:String, value:String, row:Number=1):void + { + this.testColumn(column); + if (row < 1) + throw new Error("Minimum row number for Recordset is 1."); + if (row > this._rowsNum) + throw new Error("Row "+row+" doesn't exist. Use addRow()."); + this._columns[column][(row-1)] = value; + } + + /** + * Returns string representation of Recordset. + * + * @return String representation of Recordset. + * @langversion ActionScript 3.0 + * @playerversion Flash 9.0 + * @tiptext + */ + public function toString():String + { + var ret:String = "Recordset:\n"; + for (var s:String in this._columns) + { + ret += " " + s + ":\n"; + for(var i:Number=0; ithis.recordCount) + return -1; + this._currentRow++; + return this._currentRow; + } + + /** + * Iterator-type method - returns prev available currentRow. + * + * @return Prev currentRow or -1 if beggining of Recordset reached. + * @langversion ActionScript 3.0 + * @playerversion Flash 9.0 + * @tiptext + */ + public function prev():Number + { + if ((this._currentRow-1)<0) + return -1; + this._currentRow--; + return this._currentRow; + } + + /** + * Parses ColdFusion WDDX query representation to Recordset. + * + * @param data WDDX representation of ColdFusion query as XML. + * @return New Recordset. + * @langversion ActionScript 3.0 + * @playerversion Flash 9.0 + * @tiptext + * @see pl.cfml.coldfusion.as3.utils.WDDX#fromWDDX() + */ + public static function fromWDDXXML(data:XML):Recordset + { + var r:Recordset = new Recordset(data.@fieldNames.toString()); + r.addRow( parseInt(data.@rowCount.toString()) ); + var _cl:Array = r.columnList.split(","); + for (var i:Number=0; i<_cl.length; i++) + { + var values:XMLList = data.field.(@name.toString() == _cl[i]).children(); + var counter:Number = 1; + for each (var val:XML in values) + { + if (val.name().toString() == "null") + r.setValue(_cl[i], "", counter); + else + r.setValue(_cl[i], val.text().toString(), counter); + counter++; + } + } + return r; + } + + /** + * @private + * Checks for column existence. + * + * @param cName Name of the column. + * @langversion ActionScript 3.0 + * @playerversion Flash 9.0 + * @tiptext + */ + private function testColumn(cName:String):void + { + if (this._columns[cName] == null) + throw new Error("Column "+cName+" doesn't exists in Recordset."); + } + + /** + * @private + * Delete rows. + * + * @param indexes Array of row numbers to be removed. + * @langversion ActionScript 3.0 + * @playerversion Flash 9.0 + * @tiptext + */ + private function doDeleteRows( indexes:Array ):void + { + var _tmpCols:Object = {}; + for (var s:String in this._columns) + { + _tmpCols[s] = []; + for (var i:Number=0; i0) + result.push(_s); + break; + } + } + for (var j:int=0; j + *
  • String to string
  • + *
  • Number to number
  • + *
  • Boolean to boolean
  • + *
  • Date to date
  • + *
  • Array to array
  • + *
  • ArrayCollection to array of structs
  • + *
  • Recordset to query
  • + *
  • Object to struct
  • + * + * + * @param data AS3 object. + * @return WDDX representation of the object. + * @langversion ActionScript 3.0 + * @playerversion Flash 9.0 + * @tiptext + * @see pl.cfml.coldfusion.as3.utils.Recordset + */ + public static function toWDDX(data:Object):String + { + var o:String = "
    "; + o += _toWDDX(data); + o += ""; + return o; + } + + private static function _toWDDX(data:Object):String + { + var o:String = ""; + if ( data is String ) + o = _toString(data); + else if ( data is Number || data is uint || data is int) + o = _toNumber(data); + else if ( data is Boolean ) + o = _toBoolean(data); + else if ( data is Date ) + o = _toDate(data); + else if ( data is Array ) + o = _toArray(data); + else if ( data is ArrayCollection ) + o = _toArrayCollection(data); + else if ( data is Recordset ) + o = _toRecordset(data); + else if ( data is Object ) + o = _toStruct(data); + return o; + } + + private static function _toString(data:Object):String + { + return ""+data.toString()+""; + } + private static function _toNumber(data:Object):String + { + return ""+data.toString()+""; + } + private static function _toBoolean(data:Object):String + { + return ""; + } + private static function _toDate(data:Object):String + { + return ""+data.toString()+""; + } + private static function _toArray(data:Object):String + { + var o:Array = data as Array; + var s:String = ""; + for (var i:Number=0; i"; + for (var i:Number=0; i"; + var _cl:Array = o.columnList.split(","); + var i:Number = -1; + for (var j:Number=0; j<_cl.length; j++) + { + s += ""; + while ((i=o.next())>-1) + { + s += ((o.getValue(_cl[j]) == "") ? "" : WDDX._toString(o.getValue(_cl[j])) ); + } + s += ""; + o.reset(); + } + s += ""; + return s; + } + private static function _toStruct(data:Object):String + { + var s:String = ""; + for (var i:String in data) + { + s += ""; + s += _toWDDX( data[i] ); + s += ""; + } + s += ""; + return s; + } + + /** + * Decompiles WDDX to AS3 objects. + * Type are mapped against these rules: + * + *
      + *
    • string, number to String
    • + *
    • boolean to Boolean
    • + *
    • array to Array
    • + *
    • struct to Object
    • + *
    • query to Recordset
    • + *
    + * + * @param data WDDX representation as XML. + * @return AS3 WDDX representation. + * @langversion ActionScript 3.0 + * @playerversion Flash 9.0 + * @tiptext + * @see pl.cfml.coldfusion.as3.utils.Recordset + */ + public static function fromWDDX(wddx:String):Object + { + var x:XML = new XML(wddx); + return WDDX._fromWDDX(x.data.children()[0]); + } + + private static function _fromWDDX(data:XML):Object + { + setupEncoding(); + + var o:Object = {}; + switch (data.name().toString().toLowerCase()) + { + case "string": + o = _fromString(data); + break; + case "boolean": + o = _fromBoolean(data); + break; + case "array": + o = _fromArray(data); + break; + case "struct": + o = _fromStruct(data); + break; + case "dateTime": + o = _fromString(data); + break; + case "recordset": + o = Recordset.fromWDDXXML(data); + break; + default: + o = _fromString(data); + break; + } + return o; + } + + private static function _fromString(data:XML):String + { + return decodeStr(data.text()); + } + private static function _fromBoolean(data:XML):Boolean + { + return data.@value; + } + private static function _fromArray(data:XML):ArrayCollection + { + var o:ArrayCollection = new ArrayCollection(); + for (var i:int=0; i"; + at[i] = ""; + } else if (i<128) { + et[i] = String.fromCharCode(i); + at[i] = String.fromCharCode(i); + } else { + et[i] = "&#x"+i.toString(16)+";"; + etRev["&#x"+i.toString(16)+";"] = String.fromCharCode(i); + at[i] = "&#x"+i.toString(16)+";"; + atRev["&#x"+i.toString(16)+";"] = String.fromCharCode(i); + } + } + + et[new String("<").charCodeAt(0)] = "<"; + et[new String(">").charCodeAt(0)] = ">"; + et[new String("&").charCodeAt(0)] = "&"; + + etRev["<"] = "<"; + etRev[">"] = ">"; + etRev["&"] = "&"; + + at[new String("<").charCodeAt(0)] = "<"; + at[new String(">").charCodeAt(0)] = ">"; + at[new String("&").charCodeAt(0)] = "&"; + at[new String("'").charCodeAt(0)] = "'"; + at[new String("\"").charCodeAt(0)] = """; + + atRev["<"] = "<"; + atRev[">"] = ">"; + atRev["&"] = "&"; + atRev["'"] = "'"; + atRev["""] = "\""; + + } + + private static function encodeStr(str:String):String { + var tempString:String = ""; + var max:Number = str.length; + + for (var i:Number=0; i<=max; ++i) { + var char:String = str.substr(i, 1); + var ord:Number = str.substr(i, 1).charCodeAt(0); + if(ord < 256) { + if(char == et[13]){ + tempString += "%0D%0A"; + } else { + tempString += (et[str.substr(i+1, 1).charCodeAt(0)]); + } + } else { + tempString += "&#" + ord.toString() + ";"; + } + } + + return tempString; + } + + private static function decodeStr(str:String):String { + var max:Number = str.length; + var i:Number = 0; + var char:String; + var output:String = ""; + + while (i<=max) { + char = str.substr(i, 1).charAt(0) + if (char == "&") { + var buff:String = char; + do { + ++i; + char = str.substr(i, 1).charAt(0) + buff += char; + } while (char != ";"); + output += etRev[buff]; + } else { + output += char; + } + + ++i; + } + + return output; + } + } +} \ No newline at end of file Index: lams_flex/LamsFlexCommon/src/pl/cfml/coldfusion/as3/utils/XMLUtils.as =================================================================== diff -u --- lams_flex/LamsFlexCommon/src/pl/cfml/coldfusion/as3/utils/XMLUtils.as (revision 0) +++ lams_flex/LamsFlexCommon/src/pl/cfml/coldfusion/as3/utils/XMLUtils.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,50 @@ +/* +THIS SOURCE CODE IS PROVIDED "AS IS" AND "WITH ALL FAULTS", WITHOUT +ANY TECHNICAL SUPPORT OR ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, +BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ALSO, THERE IS NO WARRANTY OF +NON-INFRINGEMENT, TITLE OR QUIET ENJOYMENT. IN NO EVENT SHALL MACROMEDIA +OR ITS SUPPLIERS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOURCE CODE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +package pl.cfml.coldfusion.as3.utils +{ + /** + * Class provides utility metods for XML objects. + */ + public class XMLUtils + { + + /** + * Check for attribute existence in XML node. + * + * @param node XML node to be checked. + * @param attributeName Name of the attribute which needs to be found. + * @param caseSensitive Set to true if search should be case-sensitive. + * @return Boolean; true if attribute was found, false if not. + * @langversion ActionScript 3.0 + * @playerversion Flash 9.0 + * @tiptext + */ + public static function attributeExists(node:XML, attributeName:String, caseInsensitive:Boolean=false):Boolean + { + if (caseInsensitive) + attributeName = attributeName.toLowerCase(); + for ( var i:int=0; i + + + + + + + + + + + + + + + + + + + Index: lams_flex/Learner/.flexProperties =================================================================== diff -u --- lams_flex/Learner/.flexProperties (revision 0) +++ lams_flex/Learner/.flexProperties (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,2 @@ + + Index: lams_flex/Learner/.project =================================================================== diff -u --- lams_flex/Learner/.project (revision 0) +++ lams_flex/Learner/.project (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,25 @@ + + + Learner + + + + + + com.adobe.flexbuilder.project.flexbuilder + + + + + + com.adobe.flexbuilder.project.flexnature + com.adobe.flexbuilder.project.actionscriptnature + + + + bin-release1 + 2 + D:/LAMS_HEAD/lams_learning/web + + + Index: lams_flex/Learner/.settings/org.eclipse.core.resources.prefs =================================================================== diff -u --- lams_flex/Learner/.settings/org.eclipse.core.resources.prefs (revision 0) +++ lams_flex/Learner/.settings/org.eclipse.core.resources.prefs (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,3 @@ +#Tue Apr 21 17:46:17 EST 2009 +eclipse.preferences.version=1 +encoding/=utf-8 Index: lams_flex/Learner/bin-debug/AC_OETags.js =================================================================== diff -u --- lams_flex/Learner/bin-debug/AC_OETags.js (revision 0) +++ lams_flex/Learner/bin-debug/AC_OETags.js (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,292 @@ +// Flash Player Version Detection - Rev 1.6 +// Detect Client Browser type +// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved. +var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false; +var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false; +var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false; + +function ControlVersion() +{ + var version; + var axo; + var e; + + // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry + + try { + // version will be set for 7.X or greater players + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); + version = axo.GetVariable("$version"); + } catch (e) { + } + + if (!version) + { + try { + // version will be set for 6.X players only + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); + + // installed player is some revision of 6.0 + // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29, + // so we have to be careful. + + // default to the first public version + version = "WIN 6,0,21,0"; + + // throws if AllowScripAccess does not exist (introduced in 6.0r47) + axo.AllowScriptAccess = "always"; + + // safe to call for 6.0r47 or greater + version = axo.GetVariable("$version"); + + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 4.X or 5.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); + version = axo.GetVariable("$version"); + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 3.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); + version = "WIN 3,0,18,0"; + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 2.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); + version = "WIN 2,0,0,11"; + } catch (e) { + version = -1; + } + } + + return version; +} + +// JavaScript helper required to detect Flash Player PlugIn version information +function GetSwfVer(){ + // NS/Opera version >= 3 check for Flash plugin in plugin array + var flashVer = -1; + + if (navigator.plugins != null && navigator.plugins.length > 0) { + if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) { + var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : ""; + var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description; + var descArray = flashDescription.split(" "); + var tempArrayMajor = descArray[2].split("."); + var versionMajor = tempArrayMajor[0]; + var versionMinor = tempArrayMajor[1]; + var versionRevision = descArray[3]; + if (versionRevision == "") { + versionRevision = descArray[4]; + } + if (versionRevision[0] == "d") { + versionRevision = versionRevision.substring(1); + } else if (versionRevision[0] == "r") { + versionRevision = versionRevision.substring(1); + if (versionRevision.indexOf("d") > 0) { + versionRevision = versionRevision.substring(0, versionRevision.indexOf("d")); + } + } else if (versionRevision[0] == "b") { + versionRevision = versionRevision.substring(1); + } + var flashVer = versionMajor + "." + versionMinor + "." + versionRevision; + } + } + // MSN/WebTV 2.6 supports Flash 4 + else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4; + // WebTV 2.5 supports Flash 3 + else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3; + // older WebTV supports Flash 2 + else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2; + else if ( isIE && isWin && !isOpera ) { + flashVer = ControlVersion(); + } + return flashVer; +} + +// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available +function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) +{ + versionStr = GetSwfVer(); + if (versionStr == -1 ) { + return false; + } else if (versionStr != 0) { + if(isIE && isWin && !isOpera) { + // Given "WIN 2,0,0,11" + tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"] + tempString = tempArray[1]; // "2,0,0,11" + versionArray = tempString.split(","); // ['2', '0', '0', '11'] + } else { + versionArray = versionStr.split("."); + } + var versionMajor = versionArray[0]; + var versionMinor = versionArray[1]; + var versionRevision = versionArray[2]; + + // is the major.revision >= requested major.revision AND the minor version >= requested minor + if (versionMajor > parseFloat(reqMajorVer)) { + return true; + } else if (versionMajor == parseFloat(reqMajorVer)) { + if (versionMinor > parseFloat(reqMinorVer)) + return true; + else if (versionMinor == parseFloat(reqMinorVer)) { + if (versionRevision >= parseFloat(reqRevision)) + return true; + } + } + return false; + } +} + +function AC_AddExtension(src, ext) +{ + var qIndex = src.indexOf('?'); + if ( qIndex != -1) + { + // Add the extention (if needed) before the query params + var path = src.substring(0, qIndex); + if (path.length >= ext.length && path.lastIndexOf(ext) == (path.length - ext.length)) + return src; + else + return src.replace(/\?/, ext+'?'); + } + else + { + // Add the extension (if needed) to the end of the URL + if (src.length >= ext.length && src.lastIndexOf(ext) == (src.length - ext.length)) + return src; // Already have extension + else + return src + ext; + } +} + +function AC_Generateobj(objAttrs, params, embedAttrs) +{ + var str = ''; + if (isIE && isWin && !isOpera) + { + str += ' '; + str += ''; + } else { + str += ' + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_flex/Learner/bin-debug/Learner.swf =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-debug/assets/images/24-heart-gold.png =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-debug/assets/images/24-heart-red.png =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-debug/assets/images/24-heart-silver.png =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-debug/assets/images/application.png =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-debug/assets/images/deleteIcon.swf =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-debug/assets/images/downArrow.swf =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-debug/assets/images/exportIcon.swf =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-debug/assets/images/lamsLogo.png =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-debug/assets/images/pencil.png =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-debug/assets/images/playerVolume.png =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-debug/assets/images/tick.png =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-debug/assets/images/upArrow.swf =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-debug/assets/images/user.png =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-debug/assets/styles/main.css =================================================================== diff -u --- lams_flex/Learner/bin-debug/assets/styles/main.css (revision 0) +++ lams_flex/Learner/bin-debug/assets/styles/main.css (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,95 @@ +/* CSS file */ +Application { + backgroundColor: #FFFFFF; + themeColor: #0087e5; +} + +Alert { + backgroundColor: #FFFFFF; + color: #000000; +} + +Panel { + borderColor: #45a6ed; + borderThicknessLeft: 1; + borderThicknessRight: 1; + borderThicknessBottom: 1; + borderAlpha: 1; + + paddingTop: 0; + paddingLeft: 0; + paddingRight: 0; + paddingBottom: 0; + + highlightAlphas: 0.67, 0; + headerColors: #45a6ed, #0087e5; + + titleStyleName: "myPanelStyle"; +} + +Panel.complexActivity { + titleStyleName: "complexActivity"; + borderColor: #D7D7D7; + borderThicknessLeft: 1; + borderThicknessRight: 1; + borderThicknessBottom: 1; + borderThicknessTop: 1; + + paddingTop: 0; + paddingLeft: 0; + paddingRight: 0; + paddingBottom: 0; + + highlightAlphas: 0.67, 0; + headerColors: #8a8a8a, #d7d7d7; + + roundedBottomCorners: false; + headerHeight: 12; + + fontFamily: Verdana; + fontSize: 10; + cornerRadius: 0; +} + +Wizard { + horizontalAlign : center; +} + +.mainBody { + backgroundColor: #FFFFFF; + paddingTop: 20; + horizontalAlign : center; +} + +Form, Label, TextInput { + color: #000000; + font-weight: normal; +} + +FormItem, List { + font-weight: bold; + text-align: left; +} + +.myPanelStyle { + color: #FFFFFF; +} + +.panelText { + color: #000000; + font-weight: none; + text-align: left; +} +.panelStatus +{ +} +.panelControlBar +{ +} +@font-face +{ + fontFamily: Alba; + fontWeight: normal; + fontStyle: normal; + src: local("Alba"); +} Index: lams_flex/Learner/bin-debug/history/history.css =================================================================== diff -u --- lams_flex/Learner/bin-debug/history/history.css (revision 0) +++ lams_flex/Learner/bin-debug/history/history.css (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,6 @@ +/* This CSS stylesheet defines styles used by required elements in a flex application page that supports browser history */ + +#ie_historyFrame { width: 0px; height: 0px; display:none } +#firefox_anchorDiv { width: 0px; height: 0px; display:none } +#safari_formDiv { width: 0px; height: 0px; display:none } +#safari_rememberDiv { width: 0px; height: 0px; display:none } Index: lams_flex/Learner/bin-debug/history/history.js =================================================================== diff -u --- lams_flex/Learner/bin-debug/history/history.js (revision 0) +++ lams_flex/Learner/bin-debug/history/history.js (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,662 @@ +BrowserHistoryUtils = { + addEvent: function(elm, evType, fn, useCapture) { + useCapture = useCapture || false; + if (elm.addEventListener) { + elm.addEventListener(evType, fn, useCapture); + return true; + } + else if (elm.attachEvent) { + var r = elm.attachEvent('on' + evType, fn); + return r; + } + else { + elm['on' + evType] = fn; + } + } +} + +BrowserHistory = (function() { + // type of browser + var browser = { + ie: false, + firefox: false, + safari: false, + opera: false, + version: -1 + }; + + // if setDefaultURL has been called, our first clue + // that the SWF is ready and listening + //var swfReady = false; + + // the URL we'll send to the SWF once it is ready + //var pendingURL = ''; + + // Default app state URL to use when no fragment ID present + var defaultHash = ''; + + // Last-known app state URL + var currentHref = document.location.href; + + // Initial URL (used only by IE) + var initialHref = document.location.href; + + // Initial URL (used only by IE) + var initialHash = document.location.hash; + + // History frame source URL prefix (used only by IE) + var historyFrameSourcePrefix = 'history/historyFrame.html?'; + + // History maintenance (used only by Safari) + var currentHistoryLength = -1; + + var historyHash = []; + + var initialState = createState(initialHref, initialHref + '#' + initialHash, initialHash); + + var backStack = []; + var forwardStack = []; + + var currentObjectId = null; + + //UserAgent detection + var useragent = navigator.userAgent.toLowerCase(); + + if (useragent.indexOf("opera") != -1) { + browser.opera = true; + } else if (useragent.indexOf("msie") != -1) { + browser.ie = true; + browser.version = parseFloat(useragent.substring(useragent.indexOf('msie') + 4)); + } else if (useragent.indexOf("safari") != -1) { + browser.safari = true; + browser.version = parseFloat(useragent.substring(useragent.indexOf('safari') + 7)); + } else if (useragent.indexOf("gecko") != -1) { + browser.firefox = true; + } + + if (browser.ie == true && browser.version == 7) { + window["_ie_firstload"] = false; + } + + // Accessor functions for obtaining specific elements of the page. + function getHistoryFrame() + { + return document.getElementById('ie_historyFrame'); + } + + function getAnchorElement() + { + return document.getElementById('firefox_anchorDiv'); + } + + function getFormElement() + { + return document.getElementById('safari_formDiv'); + } + + function getRememberElement() + { + return document.getElementById("safari_remember_field"); + } + + // Get the Flash player object for performing ExternalInterface callbacks. + // Updated for changes to SWFObject2. + function getPlayer(id) { + if (id && document.getElementById(id)) { + var r = document.getElementById(id); + if (typeof r.SetVariable != "undefined") { + return r; + } + else { + var o = r.getElementsByTagName("object"); + var e = r.getElementsByTagName("embed"); + if (o.length > 0 && typeof o[0].SetVariable != "undefined") { + return o[0]; + } + else if (e.length > 0 && typeof e[0].SetVariable != "undefined") { + return e[0]; + } + } + } + else { + var o = document.getElementsByTagName("object"); + var e = document.getElementsByTagName("embed"); + if (e.length > 0 && typeof e[0].SetVariable != "undefined") { + return e[0]; + } + else if (o.length > 0 && typeof o[0].SetVariable != "undefined") { + return o[0]; + } + else if (o.length > 1 && typeof o[1].SetVariable != "undefined") { + return o[1]; + } + } + return undefined; + } + + function getPlayers() { + var players = []; + if (players.length == 0) { + var tmp = document.getElementsByTagName('object'); + players = tmp; + } + + if (players.length == 0 || players[0].object == null) { + var tmp = document.getElementsByTagName('embed'); + players = tmp; + } + return players; + } + + function getIframeHash() { + var doc = getHistoryFrame().contentWindow.document; + var hash = String(doc.location.search); + if (hash.length == 1 && hash.charAt(0) == "?") { + hash = ""; + } + else if (hash.length >= 2 && hash.charAt(0) == "?") { + hash = hash.substring(1); + } + return hash; + } + + /* Get the current location hash excluding the '#' symbol. */ + function getHash() { + // It would be nice if we could use document.location.hash here, + // but it's faulty sometimes. + var idx = document.location.href.indexOf('#'); + return (idx >= 0) ? document.location.href.substr(idx+1) : ''; + } + + /* Get the current location hash excluding the '#' symbol. */ + function setHash(hash) { + // It would be nice if we could use document.location.hash here, + // but it's faulty sometimes. + if (hash == '') hash = '#' + document.location.hash = hash; + } + + function createState(baseUrl, newUrl, flexAppUrl) { + return { 'baseUrl': baseUrl, 'newUrl': newUrl, 'flexAppUrl': flexAppUrl, 'title': null }; + } + + /* Add a history entry to the browser. + * baseUrl: the portion of the location prior to the '#' + * newUrl: the entire new URL, including '#' and following fragment + * flexAppUrl: the portion of the location following the '#' only + */ + function addHistoryEntry(baseUrl, newUrl, flexAppUrl) { + + //delete all the history entries + forwardStack = []; + + if (browser.ie) { + //Check to see if we are being asked to do a navigate for the first + //history entry, and if so ignore, because it's coming from the creation + //of the history iframe + if (flexAppUrl == defaultHash && document.location.href == initialHref && window['_ie_firstload']) { + currentHref = initialHref; + return; + } + if ((!flexAppUrl || flexAppUrl == defaultHash) && window['_ie_firstload']) { + newUrl = baseUrl + '#' + defaultHash; + flexAppUrl = defaultHash; + } else { + // for IE, tell the history frame to go somewhere without a '#' + // in order to get this entry into the browser history. + getHistoryFrame().src = historyFrameSourcePrefix + flexAppUrl; + } + setHash(flexAppUrl); + } else { + + //ADR + if (backStack.length == 0 && initialState.flexAppUrl == flexAppUrl) { + initialState = createState(baseUrl, newUrl, flexAppUrl); + } else if(backStack.length > 0 && backStack[backStack.length - 1].flexAppUrl == flexAppUrl) { + backStack[backStack.length - 1] = createState(baseUrl, newUrl, flexAppUrl); + } + + if (browser.safari) { + // for Safari, submit a form whose action points to the desired URL + if (browser.version <= 419.3) { + var file = window.location.pathname.toString(); + file = file.substring(file.lastIndexOf("/")+1); + getFormElement().innerHTML = '
    '; + //get the current elements and add them to the form + var qs = window.location.search.substring(1); + var qs_arr = qs.split("&"); + for (var i = 0; i < qs_arr.length; i++) { + var tmp = qs_arr[i].split("="); + var elem = document.createElement("input"); + elem.type = "hidden"; + elem.name = tmp[0]; + elem.value = tmp[1]; + document.forms.historyForm.appendChild(elem); + } + document.forms.historyForm.submit(); + } else { + top.location.hash = flexAppUrl; + } + // We also have to maintain the history by hand for Safari + historyHash[history.length] = flexAppUrl; + _storeStates(); + } else { + // Otherwise, write an anchor into the page and tell the browser to go there + addAnchor(flexAppUrl); + setHash(flexAppUrl); + } + } + backStack.push(createState(baseUrl, newUrl, flexAppUrl)); + } + + function _storeStates() { + if (browser.safari) { + getRememberElement().value = historyHash.join(","); + } + } + + function handleBackButton() { + //The "current" page is always at the top of the history stack. + var current = backStack.pop(); + if (!current) { return; } + var last = backStack[backStack.length - 1]; + if (!last && backStack.length == 0){ + last = initialState; + } + forwardStack.push(current); + } + + function handleForwardButton() { + //summary: private method. Do not call this directly. + + var last = forwardStack.pop(); + if (!last) { return; } + backStack.push(last); + } + + function handleArbitraryUrl() { + //delete all the history entries + forwardStack = []; + } + + /* Called periodically to poll to see if we need to detect navigation that has occurred */ + function checkForUrlChange() { + + if (browser.ie) { + if (currentHref != document.location.href && currentHref + '#' != document.location.href) { + //This occurs when the user has navigated to a specific URL + //within the app, and didn't use browser back/forward + //IE seems to have a bug where it stops updating the URL it + //shows the end-user at this point, but programatically it + //appears to be correct. Do a full app reload to get around + //this issue. + if (browser.version < 7) { + currentHref = document.location.href; + document.location.reload(); + } else { + if (getHash() != getIframeHash()) { + // this.iframe.src = this.blankURL + hash; + var sourceToSet = historyFrameSourcePrefix + getHash(); + getHistoryFrame().src = sourceToSet; + } + } + } + } + + if (browser.safari) { + // For Safari, we have to check to see if history.length changed. + if (currentHistoryLength >= 0 && history.length != currentHistoryLength) { + //alert("did change: " + history.length + ", " + historyHash.length + "|" + historyHash[history.length] + "|>" + historyHash.join("|")); + // If it did change, then we have to look the old state up + // in our hand-maintained array since document.location.hash + // won't have changed, then call back into BrowserManager. + currentHistoryLength = history.length; + var flexAppUrl = historyHash[currentHistoryLength]; + if (flexAppUrl == '') { + //flexAppUrl = defaultHash; + } + //ADR: to fix multiple + if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) { + var pl = getPlayers(); + for (var i = 0; i < pl.length; i++) { + pl[i].browserURLChange(flexAppUrl); + } + } else { + getPlayer().browserURLChange(flexAppUrl); + } + _storeStates(); + } + } + if (browser.firefox) { + if (currentHref != document.location.href) { + var bsl = backStack.length; + + var urlActions = { + back: false, + forward: false, + set: false + } + + if ((window.location.hash == initialHash || window.location.href == initialHref) && (bsl == 1)) { + urlActions.back = true; + // FIXME: could this ever be a forward button? + // we can't clear it because we still need to check for forwards. Ugg. + // clearInterval(this.locationTimer); + handleBackButton(); + } + + // first check to see if we could have gone forward. We always halt on + // a no-hash item. + if (forwardStack.length > 0) { + if (forwardStack[forwardStack.length-1].flexAppUrl == getHash()) { + urlActions.forward = true; + handleForwardButton(); + } + } + + // ok, that didn't work, try someplace back in the history stack + if ((bsl >= 2) && (backStack[bsl - 2])) { + if (backStack[bsl - 2].flexAppUrl == getHash()) { + urlActions.back = true; + handleBackButton(); + } + } + + if (!urlActions.back && !urlActions.forward) { + var foundInStacks = { + back: -1, + forward: -1 + } + + for (var i = 0; i < backStack.length; i++) { + if (backStack[i].flexAppUrl == getHash() && i != (bsl - 2)) { + arbitraryUrl = true; + foundInStacks.back = i; + } + } + for (var i = 0; i < forwardStack.length; i++) { + if (forwardStack[i].flexAppUrl == getHash() && i != (bsl - 2)) { + arbitraryUrl = true; + foundInStacks.forward = i; + } + } + handleArbitraryUrl(); + } + + // Firefox changed; do a callback into BrowserManager to tell it. + currentHref = document.location.href; + var flexAppUrl = getHash(); + if (flexAppUrl == '') { + //flexAppUrl = defaultHash; + } + //ADR: to fix multiple + if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) { + var pl = getPlayers(); + for (var i = 0; i < pl.length; i++) { + pl[i].browserURLChange(flexAppUrl); + } + } else { + getPlayer().browserURLChange(flexAppUrl); + } + } + } + //setTimeout(checkForUrlChange, 50); + } + + /* Write an anchor into the page to legitimize it as a URL for Firefox et al. */ + function addAnchor(flexAppUrl) + { + if (document.getElementsByName(flexAppUrl).length == 0) { + getAnchorElement().innerHTML += "" + flexAppUrl + ""; + } + } + + var _initialize = function () { + if (browser.ie) + { + var scripts = document.getElementsByTagName('script'); + for (var i = 0, s; s = scripts[i]; i++) { + if (s.src.indexOf("history.js") > -1) { + var iframe_location = (new String(s.src)).replace("history.js", "historyFrame.html"); + } + } + historyFrameSourcePrefix = iframe_location + "?"; + var src = historyFrameSourcePrefix; + + var iframe = document.createElement("iframe"); + iframe.id = 'ie_historyFrame'; + iframe.name = 'ie_historyFrame'; + //iframe.src = historyFrameSourcePrefix; + try { + document.body.appendChild(iframe); + } catch(e) { + setTimeout(function() { + document.body.appendChild(iframe); + }, 0); + } + } + + if (browser.safari) + { + var rememberDiv = document.createElement("div"); + rememberDiv.id = 'safari_rememberDiv'; + document.body.appendChild(rememberDiv); + rememberDiv.innerHTML = ''; + + var formDiv = document.createElement("div"); + formDiv.id = 'safari_formDiv'; + document.body.appendChild(formDiv); + + var reloader_content = document.createElement('div'); + reloader_content.id = 'safarireloader'; + var scripts = document.getElementsByTagName('script'); + for (var i = 0, s; s = scripts[i]; i++) { + if (s.src.indexOf("history.js") > -1) { + html = (new String(s.src)).replace(".js", ".html"); + } + } + reloader_content.innerHTML = ''; + document.body.appendChild(reloader_content); + reloader_content.style.position = 'absolute'; + reloader_content.style.left = reloader_content.style.top = '-9999px'; + iframe = reloader_content.getElementsByTagName('iframe')[0]; + + if (document.getElementById("safari_remember_field").value != "" ) { + historyHash = document.getElementById("safari_remember_field").value.split(","); + } + + } + + if (browser.firefox) + { + var anchorDiv = document.createElement("div"); + anchorDiv.id = 'firefox_anchorDiv'; + document.body.appendChild(anchorDiv); + } + + //setTimeout(checkForUrlChange, 50); + } + + return { + historyHash: historyHash, + backStack: function() { return backStack; }, + forwardStack: function() { return forwardStack }, + getPlayer: getPlayer, + initialize: function(src) { + _initialize(src); + }, + setURL: function(url) { + document.location.href = url; + }, + getURL: function() { + return document.location.href; + }, + getTitle: function() { + return document.title; + }, + setTitle: function(title) { + try { + backStack[backStack.length - 1].title = title; + } catch(e) { } + //if on safari, set the title to be the empty string. + if (browser.safari) { + if (title == "") { + try { + var tmp = window.location.href.toString(); + title = tmp.substring((tmp.lastIndexOf("/")+1), tmp.lastIndexOf("#")); + } catch(e) { + title = ""; + } + } + } + document.title = title; + }, + setDefaultURL: function(def) + { + defaultHash = def; + def = getHash(); + //trailing ? is important else an extra frame gets added to the history + //when navigating back to the first page. Alternatively could check + //in history frame navigation to compare # and ?. + if (browser.ie) + { + window['_ie_firstload'] = true; + var sourceToSet = historyFrameSourcePrefix + def; + var func = function() { + getHistoryFrame().src = sourceToSet; + window.location.replace("#" + def); + setInterval(checkForUrlChange, 50); + } + try { + func(); + } catch(e) { + window.setTimeout(function() { func(); }, 0); + } + } + + if (browser.safari) + { + currentHistoryLength = history.length; + if (historyHash.length == 0) { + historyHash[currentHistoryLength] = def; + var newloc = "#" + def; + window.location.replace(newloc); + } else { + //alert(historyHash[historyHash.length-1]); + } + //setHash(def); + setInterval(checkForUrlChange, 50); + } + + + if (browser.firefox || browser.opera) + { + var reg = new RegExp("#" + def + "$"); + if (window.location.toString().match(reg)) { + } else { + var newloc ="#" + def; + window.location.replace(newloc); + } + setInterval(checkForUrlChange, 50); + //setHash(def); + } + + }, + + /* Set the current browser URL; called from inside BrowserManager to propagate + * the application state out to the container. + */ + setBrowserURL: function(flexAppUrl, objectId) { + if (browser.ie && typeof objectId != "undefined") { + currentObjectId = objectId; + } + //fromIframe = fromIframe || false; + //fromFlex = fromFlex || false; + //alert("setBrowserURL: " + flexAppUrl); + //flexAppUrl = (flexAppUrl == "") ? defaultHash : flexAppUrl ; + + var pos = document.location.href.indexOf('#'); + var baseUrl = pos != -1 ? document.location.href.substr(0, pos) : document.location.href; + var newUrl = baseUrl + '#' + flexAppUrl; + + if (document.location.href != newUrl && document.location.href + '#' != newUrl) { + currentHref = newUrl; + addHistoryEntry(baseUrl, newUrl, flexAppUrl); + currentHistoryLength = history.length; + } + + return false; + }, + + browserURLChange: function(flexAppUrl) { + var objectId = null; + if (browser.ie && currentObjectId != null) { + objectId = currentObjectId; + } + pendingURL = ''; + + if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) { + var pl = getPlayers(); + for (var i = 0; i < pl.length; i++) { + try { + pl[i].browserURLChange(flexAppUrl); + } catch(e) { } + } + } else { + try { + getPlayer(objectId).browserURLChange(flexAppUrl); + } catch(e) { } + } + + currentObjectId = null; + } + + } + +})(); + +// Initialization + +// Automated unit testing and other diagnostics + +function setURL(url) +{ + document.location.href = url; +} + +function backButton() +{ + history.back(); +} + +function forwardButton() +{ + history.forward(); +} + +function goForwardOrBackInHistory(step) +{ + history.go(step); +} + +//BrowserHistoryUtils.addEvent(window, "load", function() { BrowserHistory.initialize(); }); +(function(i) { + var u =navigator.userAgent;var e=/*@cc_on!@*/false; + var st = setTimeout; + if(/webkit/i.test(u)){ + st(function(){ + var dr=document.readyState; + if(dr=="loaded"||dr=="complete"){i()} + else{st(arguments.callee,10);}},10); + } else if((/mozilla/i.test(u)&&!/(compati)/.test(u)) || (/opera/i.test(u))){ + document.addEventListener("DOMContentLoaded",i,false); + } else if(e){ + (function(){ + var t=document.createElement('doc:rdy'); + try{t.doScroll('left'); + i();t=null; + }catch(e){st(arguments.callee,0);}})(); + } else{ + window.onload=i; + } +})( function() {BrowserHistory.initialize();} ); Index: lams_flex/Learner/bin-debug/history/historyFrame.html =================================================================== diff -u --- lams_flex/Learner/bin-debug/history/historyFrame.html (revision 0) +++ lams_flex/Learner/bin-debug/history/historyFrame.html (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,29 @@ + + + + + + + + Hidden frame for Browser History support. + + Index: lams_flex/Learner/bin-debug/lib/mate.license.txt =================================================================== diff -u --- lams_flex/Learner/bin-debug/lib/mate.license.txt (revision 0) +++ lams_flex/Learner/bin-debug/lib/mate.license.txt (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,55 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + + 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and + + 2. You must cause any modified files to carry prominent notices stating that You changed the files; and + + 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + + 4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + +You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS Index: lams_flex/Learner/bin-debug/lib/mate_06_2.license.txt =================================================================== diff -u --- lams_flex/Learner/bin-debug/lib/mate_06_2.license.txt (revision 0) +++ lams_flex/Learner/bin-debug/lib/mate_06_2.license.txt (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,55 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + + 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and + + 2. You must cause any modified files to carry prominent notices stating that You changed the files; and + + 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + + 4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + +You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS Index: lams_flex/Learner/bin-debug/lib/wddx.license.txt =================================================================== diff -u --- lams_flex/Learner/bin-debug/lib/wddx.license.txt (revision 0) +++ lams_flex/Learner/bin-debug/lib/wddx.license.txt (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,23 @@ +http://www.opensource.org/licenses/mit-license.php + +The MIT License + +Copyright (c) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. Index: lams_flex/Learner/bin-debug/playerProductInstall.swf =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-release/AC_OETags.js =================================================================== diff -u --- lams_flex/Learner/bin-release/AC_OETags.js (revision 0) +++ lams_flex/Learner/bin-release/AC_OETags.js (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,292 @@ +// Flash Player Version Detection - Rev 1.6 +// Detect Client Browser type +// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved. +var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false; +var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false; +var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false; + +function ControlVersion() +{ + var version; + var axo; + var e; + + // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry + + try { + // version will be set for 7.X or greater players + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); + version = axo.GetVariable("$version"); + } catch (e) { + } + + if (!version) + { + try { + // version will be set for 6.X players only + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); + + // installed player is some revision of 6.0 + // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29, + // so we have to be careful. + + // default to the first public version + version = "WIN 6,0,21,0"; + + // throws if AllowScripAccess does not exist (introduced in 6.0r47) + axo.AllowScriptAccess = "always"; + + // safe to call for 6.0r47 or greater + version = axo.GetVariable("$version"); + + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 4.X or 5.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); + version = axo.GetVariable("$version"); + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 3.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); + version = "WIN 3,0,18,0"; + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 2.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); + version = "WIN 2,0,0,11"; + } catch (e) { + version = -1; + } + } + + return version; +} + +// JavaScript helper required to detect Flash Player PlugIn version information +function GetSwfVer(){ + // NS/Opera version >= 3 check for Flash plugin in plugin array + var flashVer = -1; + + if (navigator.plugins != null && navigator.plugins.length > 0) { + if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) { + var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : ""; + var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description; + var descArray = flashDescription.split(" "); + var tempArrayMajor = descArray[2].split("."); + var versionMajor = tempArrayMajor[0]; + var versionMinor = tempArrayMajor[1]; + var versionRevision = descArray[3]; + if (versionRevision == "") { + versionRevision = descArray[4]; + } + if (versionRevision[0] == "d") { + versionRevision = versionRevision.substring(1); + } else if (versionRevision[0] == "r") { + versionRevision = versionRevision.substring(1); + if (versionRevision.indexOf("d") > 0) { + versionRevision = versionRevision.substring(0, versionRevision.indexOf("d")); + } + } else if (versionRevision[0] == "b") { + versionRevision = versionRevision.substring(1); + } + var flashVer = versionMajor + "." + versionMinor + "." + versionRevision; + } + } + // MSN/WebTV 2.6 supports Flash 4 + else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4; + // WebTV 2.5 supports Flash 3 + else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3; + // older WebTV supports Flash 2 + else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2; + else if ( isIE && isWin && !isOpera ) { + flashVer = ControlVersion(); + } + return flashVer; +} + +// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available +function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) +{ + versionStr = GetSwfVer(); + if (versionStr == -1 ) { + return false; + } else if (versionStr != 0) { + if(isIE && isWin && !isOpera) { + // Given "WIN 2,0,0,11" + tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"] + tempString = tempArray[1]; // "2,0,0,11" + versionArray = tempString.split(","); // ['2', '0', '0', '11'] + } else { + versionArray = versionStr.split("."); + } + var versionMajor = versionArray[0]; + var versionMinor = versionArray[1]; + var versionRevision = versionArray[2]; + + // is the major.revision >= requested major.revision AND the minor version >= requested minor + if (versionMajor > parseFloat(reqMajorVer)) { + return true; + } else if (versionMajor == parseFloat(reqMajorVer)) { + if (versionMinor > parseFloat(reqMinorVer)) + return true; + else if (versionMinor == parseFloat(reqMinorVer)) { + if (versionRevision >= parseFloat(reqRevision)) + return true; + } + } + return false; + } +} + +function AC_AddExtension(src, ext) +{ + var qIndex = src.indexOf('?'); + if ( qIndex != -1) + { + // Add the extention (if needed) before the query params + var path = src.substring(0, qIndex); + if (path.length >= ext.length && path.lastIndexOf(ext) == (path.length - ext.length)) + return src; + else + return src.replace(/\?/, ext+'?'); + } + else + { + // Add the extension (if needed) to the end of the URL + if (src.length >= ext.length && src.lastIndexOf(ext) == (src.length - ext.length)) + return src; // Already have extension + else + return src + ext; + } +} + +function AC_Generateobj(objAttrs, params, embedAttrs) +{ + var str = ''; + if (isIE && isWin && !isOpera) + { + str += ' '; + str += ''; + } else { + str += ' + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_flex/Learner/bin-release/Learner.swf =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-release/assets/images/24-heart-gold.png =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-release/assets/images/24-heart-red.png =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-release/assets/images/24-heart-silver.png =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-release/assets/images/application.png =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-release/assets/images/deleteIcon.swf =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-release/assets/images/downArrow.swf =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-release/assets/images/exportIcon.swf =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-release/assets/images/lamsLogo.png =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-release/assets/images/pencil.png =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-release/assets/images/playerVolume.png =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-release/assets/images/tick.png =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-release/assets/images/upArrow.swf =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-release/assets/images/user.png =================================================================== diff -u Binary files differ Index: lams_flex/Learner/bin-release/assets/styles/main.css =================================================================== diff -u --- lams_flex/Learner/bin-release/assets/styles/main.css (revision 0) +++ lams_flex/Learner/bin-release/assets/styles/main.css (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,35 @@ +Application { + backgroundColor:#ECECEC; + backgroundGradientColors:#ECECEC,#ECECEC; +} + +Tile { + top: 10; + bottom: 10; + left: 10; + right: 10; +} + +Label { + color: #000000; + fontWeight: bold; + fontSize: 14; +} + +.box { + borderColor: #50B2CB; + cornerRadius: 10; + borderStyle: solid; + borderThickness: 1; + paddingBottom: 10; + paddingTop: 10; + paddingLeft: 10; + paddingRight: 10; + backgroundColor:#ffffff; + backgroundAlpha: 1; +} + +Text { + fontSize: 12; + fontWeight: normal; +} \ No newline at end of file Index: lams_flex/Learner/bin-release/history/history.css =================================================================== diff -u --- lams_flex/Learner/bin-release/history/history.css (revision 0) +++ lams_flex/Learner/bin-release/history/history.css (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,6 @@ +/* This CSS stylesheet defines styles used by required elements in a flex application page that supports browser history */ + +#ie_historyFrame { width: 0px; height: 0px; display:none } +#firefox_anchorDiv { width: 0px; height: 0px; display:none } +#safari_formDiv { width: 0px; height: 0px; display:none } +#safari_rememberDiv { width: 0px; height: 0px; display:none } Index: lams_flex/Learner/bin-release/history/history.js =================================================================== diff -u --- lams_flex/Learner/bin-release/history/history.js (revision 0) +++ lams_flex/Learner/bin-release/history/history.js (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,662 @@ +BrowserHistoryUtils = { + addEvent: function(elm, evType, fn, useCapture) { + useCapture = useCapture || false; + if (elm.addEventListener) { + elm.addEventListener(evType, fn, useCapture); + return true; + } + else if (elm.attachEvent) { + var r = elm.attachEvent('on' + evType, fn); + return r; + } + else { + elm['on' + evType] = fn; + } + } +} + +BrowserHistory = (function() { + // type of browser + var browser = { + ie: false, + firefox: false, + safari: false, + opera: false, + version: -1 + }; + + // if setDefaultURL has been called, our first clue + // that the SWF is ready and listening + //var swfReady = false; + + // the URL we'll send to the SWF once it is ready + //var pendingURL = ''; + + // Default app state URL to use when no fragment ID present + var defaultHash = ''; + + // Last-known app state URL + var currentHref = document.location.href; + + // Initial URL (used only by IE) + var initialHref = document.location.href; + + // Initial URL (used only by IE) + var initialHash = document.location.hash; + + // History frame source URL prefix (used only by IE) + var historyFrameSourcePrefix = 'history/historyFrame.html?'; + + // History maintenance (used only by Safari) + var currentHistoryLength = -1; + + var historyHash = []; + + var initialState = createState(initialHref, initialHref + '#' + initialHash, initialHash); + + var backStack = []; + var forwardStack = []; + + var currentObjectId = null; + + //UserAgent detection + var useragent = navigator.userAgent.toLowerCase(); + + if (useragent.indexOf("opera") != -1) { + browser.opera = true; + } else if (useragent.indexOf("msie") != -1) { + browser.ie = true; + browser.version = parseFloat(useragent.substring(useragent.indexOf('msie') + 4)); + } else if (useragent.indexOf("safari") != -1) { + browser.safari = true; + browser.version = parseFloat(useragent.substring(useragent.indexOf('safari') + 7)); + } else if (useragent.indexOf("gecko") != -1) { + browser.firefox = true; + } + + if (browser.ie == true && browser.version == 7) { + window["_ie_firstload"] = false; + } + + // Accessor functions for obtaining specific elements of the page. + function getHistoryFrame() + { + return document.getElementById('ie_historyFrame'); + } + + function getAnchorElement() + { + return document.getElementById('firefox_anchorDiv'); + } + + function getFormElement() + { + return document.getElementById('safari_formDiv'); + } + + function getRememberElement() + { + return document.getElementById("safari_remember_field"); + } + + // Get the Flash player object for performing ExternalInterface callbacks. + // Updated for changes to SWFObject2. + function getPlayer(id) { + if (id && document.getElementById(id)) { + var r = document.getElementById(id); + if (typeof r.SetVariable != "undefined") { + return r; + } + else { + var o = r.getElementsByTagName("object"); + var e = r.getElementsByTagName("embed"); + if (o.length > 0 && typeof o[0].SetVariable != "undefined") { + return o[0]; + } + else if (e.length > 0 && typeof e[0].SetVariable != "undefined") { + return e[0]; + } + } + } + else { + var o = document.getElementsByTagName("object"); + var e = document.getElementsByTagName("embed"); + if (e.length > 0 && typeof e[0].SetVariable != "undefined") { + return e[0]; + } + else if (o.length > 0 && typeof o[0].SetVariable != "undefined") { + return o[0]; + } + else if (o.length > 1 && typeof o[1].SetVariable != "undefined") { + return o[1]; + } + } + return undefined; + } + + function getPlayers() { + var players = []; + if (players.length == 0) { + var tmp = document.getElementsByTagName('object'); + players = tmp; + } + + if (players.length == 0 || players[0].object == null) { + var tmp = document.getElementsByTagName('embed'); + players = tmp; + } + return players; + } + + function getIframeHash() { + var doc = getHistoryFrame().contentWindow.document; + var hash = String(doc.location.search); + if (hash.length == 1 && hash.charAt(0) == "?") { + hash = ""; + } + else if (hash.length >= 2 && hash.charAt(0) == "?") { + hash = hash.substring(1); + } + return hash; + } + + /* Get the current location hash excluding the '#' symbol. */ + function getHash() { + // It would be nice if we could use document.location.hash here, + // but it's faulty sometimes. + var idx = document.location.href.indexOf('#'); + return (idx >= 0) ? document.location.href.substr(idx+1) : ''; + } + + /* Get the current location hash excluding the '#' symbol. */ + function setHash(hash) { + // It would be nice if we could use document.location.hash here, + // but it's faulty sometimes. + if (hash == '') hash = '#' + document.location.hash = hash; + } + + function createState(baseUrl, newUrl, flexAppUrl) { + return { 'baseUrl': baseUrl, 'newUrl': newUrl, 'flexAppUrl': flexAppUrl, 'title': null }; + } + + /* Add a history entry to the browser. + * baseUrl: the portion of the location prior to the '#' + * newUrl: the entire new URL, including '#' and following fragment + * flexAppUrl: the portion of the location following the '#' only + */ + function addHistoryEntry(baseUrl, newUrl, flexAppUrl) { + + //delete all the history entries + forwardStack = []; + + if (browser.ie) { + //Check to see if we are being asked to do a navigate for the first + //history entry, and if so ignore, because it's coming from the creation + //of the history iframe + if (flexAppUrl == defaultHash && document.location.href == initialHref && window['_ie_firstload']) { + currentHref = initialHref; + return; + } + if ((!flexAppUrl || flexAppUrl == defaultHash) && window['_ie_firstload']) { + newUrl = baseUrl + '#' + defaultHash; + flexAppUrl = defaultHash; + } else { + // for IE, tell the history frame to go somewhere without a '#' + // in order to get this entry into the browser history. + getHistoryFrame().src = historyFrameSourcePrefix + flexAppUrl; + } + setHash(flexAppUrl); + } else { + + //ADR + if (backStack.length == 0 && initialState.flexAppUrl == flexAppUrl) { + initialState = createState(baseUrl, newUrl, flexAppUrl); + } else if(backStack.length > 0 && backStack[backStack.length - 1].flexAppUrl == flexAppUrl) { + backStack[backStack.length - 1] = createState(baseUrl, newUrl, flexAppUrl); + } + + if (browser.safari) { + // for Safari, submit a form whose action points to the desired URL + if (browser.version <= 419.3) { + var file = window.location.pathname.toString(); + file = file.substring(file.lastIndexOf("/")+1); + getFormElement().innerHTML = '
    '; + //get the current elements and add them to the form + var qs = window.location.search.substring(1); + var qs_arr = qs.split("&"); + for (var i = 0; i < qs_arr.length; i++) { + var tmp = qs_arr[i].split("="); + var elem = document.createElement("input"); + elem.type = "hidden"; + elem.name = tmp[0]; + elem.value = tmp[1]; + document.forms.historyForm.appendChild(elem); + } + document.forms.historyForm.submit(); + } else { + top.location.hash = flexAppUrl; + } + // We also have to maintain the history by hand for Safari + historyHash[history.length] = flexAppUrl; + _storeStates(); + } else { + // Otherwise, write an anchor into the page and tell the browser to go there + addAnchor(flexAppUrl); + setHash(flexAppUrl); + } + } + backStack.push(createState(baseUrl, newUrl, flexAppUrl)); + } + + function _storeStates() { + if (browser.safari) { + getRememberElement().value = historyHash.join(","); + } + } + + function handleBackButton() { + //The "current" page is always at the top of the history stack. + var current = backStack.pop(); + if (!current) { return; } + var last = backStack[backStack.length - 1]; + if (!last && backStack.length == 0){ + last = initialState; + } + forwardStack.push(current); + } + + function handleForwardButton() { + //summary: private method. Do not call this directly. + + var last = forwardStack.pop(); + if (!last) { return; } + backStack.push(last); + } + + function handleArbitraryUrl() { + //delete all the history entries + forwardStack = []; + } + + /* Called periodically to poll to see if we need to detect navigation that has occurred */ + function checkForUrlChange() { + + if (browser.ie) { + if (currentHref != document.location.href && currentHref + '#' != document.location.href) { + //This occurs when the user has navigated to a specific URL + //within the app, and didn't use browser back/forward + //IE seems to have a bug where it stops updating the URL it + //shows the end-user at this point, but programatically it + //appears to be correct. Do a full app reload to get around + //this issue. + if (browser.version < 7) { + currentHref = document.location.href; + document.location.reload(); + } else { + if (getHash() != getIframeHash()) { + // this.iframe.src = this.blankURL + hash; + var sourceToSet = historyFrameSourcePrefix + getHash(); + getHistoryFrame().src = sourceToSet; + } + } + } + } + + if (browser.safari) { + // For Safari, we have to check to see if history.length changed. + if (currentHistoryLength >= 0 && history.length != currentHistoryLength) { + //alert("did change: " + history.length + ", " + historyHash.length + "|" + historyHash[history.length] + "|>" + historyHash.join("|")); + // If it did change, then we have to look the old state up + // in our hand-maintained array since document.location.hash + // won't have changed, then call back into BrowserManager. + currentHistoryLength = history.length; + var flexAppUrl = historyHash[currentHistoryLength]; + if (flexAppUrl == '') { + //flexAppUrl = defaultHash; + } + //ADR: to fix multiple + if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) { + var pl = getPlayers(); + for (var i = 0; i < pl.length; i++) { + pl[i].browserURLChange(flexAppUrl); + } + } else { + getPlayer().browserURLChange(flexAppUrl); + } + _storeStates(); + } + } + if (browser.firefox) { + if (currentHref != document.location.href) { + var bsl = backStack.length; + + var urlActions = { + back: false, + forward: false, + set: false + } + + if ((window.location.hash == initialHash || window.location.href == initialHref) && (bsl == 1)) { + urlActions.back = true; + // FIXME: could this ever be a forward button? + // we can't clear it because we still need to check for forwards. Ugg. + // clearInterval(this.locationTimer); + handleBackButton(); + } + + // first check to see if we could have gone forward. We always halt on + // a no-hash item. + if (forwardStack.length > 0) { + if (forwardStack[forwardStack.length-1].flexAppUrl == getHash()) { + urlActions.forward = true; + handleForwardButton(); + } + } + + // ok, that didn't work, try someplace back in the history stack + if ((bsl >= 2) && (backStack[bsl - 2])) { + if (backStack[bsl - 2].flexAppUrl == getHash()) { + urlActions.back = true; + handleBackButton(); + } + } + + if (!urlActions.back && !urlActions.forward) { + var foundInStacks = { + back: -1, + forward: -1 + } + + for (var i = 0; i < backStack.length; i++) { + if (backStack[i].flexAppUrl == getHash() && i != (bsl - 2)) { + arbitraryUrl = true; + foundInStacks.back = i; + } + } + for (var i = 0; i < forwardStack.length; i++) { + if (forwardStack[i].flexAppUrl == getHash() && i != (bsl - 2)) { + arbitraryUrl = true; + foundInStacks.forward = i; + } + } + handleArbitraryUrl(); + } + + // Firefox changed; do a callback into BrowserManager to tell it. + currentHref = document.location.href; + var flexAppUrl = getHash(); + if (flexAppUrl == '') { + //flexAppUrl = defaultHash; + } + //ADR: to fix multiple + if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) { + var pl = getPlayers(); + for (var i = 0; i < pl.length; i++) { + pl[i].browserURLChange(flexAppUrl); + } + } else { + getPlayer().browserURLChange(flexAppUrl); + } + } + } + //setTimeout(checkForUrlChange, 50); + } + + /* Write an anchor into the page to legitimize it as a URL for Firefox et al. */ + function addAnchor(flexAppUrl) + { + if (document.getElementsByName(flexAppUrl).length == 0) { + getAnchorElement().innerHTML += "" + flexAppUrl + ""; + } + } + + var _initialize = function () { + if (browser.ie) + { + var scripts = document.getElementsByTagName('script'); + for (var i = 0, s; s = scripts[i]; i++) { + if (s.src.indexOf("history.js") > -1) { + var iframe_location = (new String(s.src)).replace("history.js", "historyFrame.html"); + } + } + historyFrameSourcePrefix = iframe_location + "?"; + var src = historyFrameSourcePrefix; + + var iframe = document.createElement("iframe"); + iframe.id = 'ie_historyFrame'; + iframe.name = 'ie_historyFrame'; + //iframe.src = historyFrameSourcePrefix; + try { + document.body.appendChild(iframe); + } catch(e) { + setTimeout(function() { + document.body.appendChild(iframe); + }, 0); + } + } + + if (browser.safari) + { + var rememberDiv = document.createElement("div"); + rememberDiv.id = 'safari_rememberDiv'; + document.body.appendChild(rememberDiv); + rememberDiv.innerHTML = ''; + + var formDiv = document.createElement("div"); + formDiv.id = 'safari_formDiv'; + document.body.appendChild(formDiv); + + var reloader_content = document.createElement('div'); + reloader_content.id = 'safarireloader'; + var scripts = document.getElementsByTagName('script'); + for (var i = 0, s; s = scripts[i]; i++) { + if (s.src.indexOf("history.js") > -1) { + html = (new String(s.src)).replace(".js", ".html"); + } + } + reloader_content.innerHTML = ''; + document.body.appendChild(reloader_content); + reloader_content.style.position = 'absolute'; + reloader_content.style.left = reloader_content.style.top = '-9999px'; + iframe = reloader_content.getElementsByTagName('iframe')[0]; + + if (document.getElementById("safari_remember_field").value != "" ) { + historyHash = document.getElementById("safari_remember_field").value.split(","); + } + + } + + if (browser.firefox) + { + var anchorDiv = document.createElement("div"); + anchorDiv.id = 'firefox_anchorDiv'; + document.body.appendChild(anchorDiv); + } + + //setTimeout(checkForUrlChange, 50); + } + + return { + historyHash: historyHash, + backStack: function() { return backStack; }, + forwardStack: function() { return forwardStack }, + getPlayer: getPlayer, + initialize: function(src) { + _initialize(src); + }, + setURL: function(url) { + document.location.href = url; + }, + getURL: function() { + return document.location.href; + }, + getTitle: function() { + return document.title; + }, + setTitle: function(title) { + try { + backStack[backStack.length - 1].title = title; + } catch(e) { } + //if on safari, set the title to be the empty string. + if (browser.safari) { + if (title == "") { + try { + var tmp = window.location.href.toString(); + title = tmp.substring((tmp.lastIndexOf("/")+1), tmp.lastIndexOf("#")); + } catch(e) { + title = ""; + } + } + } + document.title = title; + }, + setDefaultURL: function(def) + { + defaultHash = def; + def = getHash(); + //trailing ? is important else an extra frame gets added to the history + //when navigating back to the first page. Alternatively could check + //in history frame navigation to compare # and ?. + if (browser.ie) + { + window['_ie_firstload'] = true; + var sourceToSet = historyFrameSourcePrefix + def; + var func = function() { + getHistoryFrame().src = sourceToSet; + window.location.replace("#" + def); + setInterval(checkForUrlChange, 50); + } + try { + func(); + } catch(e) { + window.setTimeout(function() { func(); }, 0); + } + } + + if (browser.safari) + { + currentHistoryLength = history.length; + if (historyHash.length == 0) { + historyHash[currentHistoryLength] = def; + var newloc = "#" + def; + window.location.replace(newloc); + } else { + //alert(historyHash[historyHash.length-1]); + } + //setHash(def); + setInterval(checkForUrlChange, 50); + } + + + if (browser.firefox || browser.opera) + { + var reg = new RegExp("#" + def + "$"); + if (window.location.toString().match(reg)) { + } else { + var newloc ="#" + def; + window.location.replace(newloc); + } + setInterval(checkForUrlChange, 50); + //setHash(def); + } + + }, + + /* Set the current browser URL; called from inside BrowserManager to propagate + * the application state out to the container. + */ + setBrowserURL: function(flexAppUrl, objectId) { + if (browser.ie && typeof objectId != "undefined") { + currentObjectId = objectId; + } + //fromIframe = fromIframe || false; + //fromFlex = fromFlex || false; + //alert("setBrowserURL: " + flexAppUrl); + //flexAppUrl = (flexAppUrl == "") ? defaultHash : flexAppUrl ; + + var pos = document.location.href.indexOf('#'); + var baseUrl = pos != -1 ? document.location.href.substr(0, pos) : document.location.href; + var newUrl = baseUrl + '#' + flexAppUrl; + + if (document.location.href != newUrl && document.location.href + '#' != newUrl) { + currentHref = newUrl; + addHistoryEntry(baseUrl, newUrl, flexAppUrl); + currentHistoryLength = history.length; + } + + return false; + }, + + browserURLChange: function(flexAppUrl) { + var objectId = null; + if (browser.ie && currentObjectId != null) { + objectId = currentObjectId; + } + pendingURL = ''; + + if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) { + var pl = getPlayers(); + for (var i = 0; i < pl.length; i++) { + try { + pl[i].browserURLChange(flexAppUrl); + } catch(e) { } + } + } else { + try { + getPlayer(objectId).browserURLChange(flexAppUrl); + } catch(e) { } + } + + currentObjectId = null; + } + + } + +})(); + +// Initialization + +// Automated unit testing and other diagnostics + +function setURL(url) +{ + document.location.href = url; +} + +function backButton() +{ + history.back(); +} + +function forwardButton() +{ + history.forward(); +} + +function goForwardOrBackInHistory(step) +{ + history.go(step); +} + +//BrowserHistoryUtils.addEvent(window, "load", function() { BrowserHistory.initialize(); }); +(function(i) { + var u =navigator.userAgent;var e=/*@cc_on!@*/false; + var st = setTimeout; + if(/webkit/i.test(u)){ + st(function(){ + var dr=document.readyState; + if(dr=="loaded"||dr=="complete"){i()} + else{st(arguments.callee,10);}},10); + } else if((/mozilla/i.test(u)&&!/(compati)/.test(u)) || (/opera/i.test(u))){ + document.addEventListener("DOMContentLoaded",i,false); + } else if(e){ + (function(){ + var t=document.createElement('doc:rdy'); + try{t.doScroll('left'); + i();t=null; + }catch(e){st(arguments.callee,0);}})(); + } else{ + window.onload=i; + } +})( function() {BrowserHistory.initialize();} ); Index: lams_flex/Learner/bin-release/history/historyFrame.html =================================================================== diff -u --- lams_flex/Learner/bin-release/history/historyFrame.html (revision 0) +++ lams_flex/Learner/bin-release/history/historyFrame.html (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,29 @@ + + + + + + + + Hidden frame for Browser History support. + + Index: lams_flex/Learner/bin-release/lib/mate.license.txt =================================================================== diff -u --- lams_flex/Learner/bin-release/lib/mate.license.txt (revision 0) +++ lams_flex/Learner/bin-release/lib/mate.license.txt (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,55 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + + 1. You must give any other recipients of the Work or Derivative Works a copy of this License; and + + 2. You must cause any modified files to carry prominent notices stating that You changed the files; and + + 3. You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + + 4. If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + +You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS Index: lams_flex/Learner/bin-release/lib/wddx.license.txt =================================================================== diff -u --- lams_flex/Learner/bin-release/lib/wddx.license.txt (revision 0) +++ lams_flex/Learner/bin-release/lib/wddx.license.txt (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,23 @@ +http://www.opensource.org/licenses/mit-license.php + +The MIT License + +Copyright (c) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. Index: lams_flex/Learner/bin-release/playerProductInstall.swf =================================================================== diff -u Binary files differ Index: lams_flex/Learner/html-template/AC_OETags.js =================================================================== diff -u --- lams_flex/Learner/html-template/AC_OETags.js (revision 0) +++ lams_flex/Learner/html-template/AC_OETags.js (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,292 @@ +// Flash Player Version Detection - Rev 1.6 +// Detect Client Browser type +// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved. +var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false; +var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false; +var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false; + +function ControlVersion() +{ + var version; + var axo; + var e; + + // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry + + try { + // version will be set for 7.X or greater players + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); + version = axo.GetVariable("$version"); + } catch (e) { + } + + if (!version) + { + try { + // version will be set for 6.X players only + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); + + // installed player is some revision of 6.0 + // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29, + // so we have to be careful. + + // default to the first public version + version = "WIN 6,0,21,0"; + + // throws if AllowScripAccess does not exist (introduced in 6.0r47) + axo.AllowScriptAccess = "always"; + + // safe to call for 6.0r47 or greater + version = axo.GetVariable("$version"); + + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 4.X or 5.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); + version = axo.GetVariable("$version"); + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 3.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); + version = "WIN 3,0,18,0"; + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 2.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); + version = "WIN 2,0,0,11"; + } catch (e) { + version = -1; + } + } + + return version; +} + +// JavaScript helper required to detect Flash Player PlugIn version information +function GetSwfVer(){ + // NS/Opera version >= 3 check for Flash plugin in plugin array + var flashVer = -1; + + if (navigator.plugins != null && navigator.plugins.length > 0) { + if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) { + var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : ""; + var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description; + var descArray = flashDescription.split(" "); + var tempArrayMajor = descArray[2].split("."); + var versionMajor = tempArrayMajor[0]; + var versionMinor = tempArrayMajor[1]; + var versionRevision = descArray[3]; + if (versionRevision == "") { + versionRevision = descArray[4]; + } + if (versionRevision[0] == "d") { + versionRevision = versionRevision.substring(1); + } else if (versionRevision[0] == "r") { + versionRevision = versionRevision.substring(1); + if (versionRevision.indexOf("d") > 0) { + versionRevision = versionRevision.substring(0, versionRevision.indexOf("d")); + } + } else if (versionRevision[0] == "b") { + versionRevision = versionRevision.substring(1); + } + var flashVer = versionMajor + "." + versionMinor + "." + versionRevision; + } + } + // MSN/WebTV 2.6 supports Flash 4 + else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4; + // WebTV 2.5 supports Flash 3 + else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3; + // older WebTV supports Flash 2 + else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2; + else if ( isIE && isWin && !isOpera ) { + flashVer = ControlVersion(); + } + return flashVer; +} + +// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available +function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) +{ + versionStr = GetSwfVer(); + if (versionStr == -1 ) { + return false; + } else if (versionStr != 0) { + if(isIE && isWin && !isOpera) { + // Given "WIN 2,0,0,11" + tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"] + tempString = tempArray[1]; // "2,0,0,11" + versionArray = tempString.split(","); // ['2', '0', '0', '11'] + } else { + versionArray = versionStr.split("."); + } + var versionMajor = versionArray[0]; + var versionMinor = versionArray[1]; + var versionRevision = versionArray[2]; + + // is the major.revision >= requested major.revision AND the minor version >= requested minor + if (versionMajor > parseFloat(reqMajorVer)) { + return true; + } else if (versionMajor == parseFloat(reqMajorVer)) { + if (versionMinor > parseFloat(reqMinorVer)) + return true; + else if (versionMinor == parseFloat(reqMinorVer)) { + if (versionRevision >= parseFloat(reqRevision)) + return true; + } + } + return false; + } +} + +function AC_AddExtension(src, ext) +{ + var qIndex = src.indexOf('?'); + if ( qIndex != -1) + { + // Add the extention (if needed) before the query params + var path = src.substring(0, qIndex); + if (path.length >= ext.length && path.lastIndexOf(ext) == (path.length - ext.length)) + return src; + else + return src.replace(/\?/, ext+'?'); + } + else + { + // Add the extension (if needed) to the end of the URL + if (src.length >= ext.length && src.lastIndexOf(ext) == (src.length - ext.length)) + return src; // Already have extension + else + return src + ext; + } +} + +function AC_Generateobj(objAttrs, params, embedAttrs) +{ + var str = ''; + if (isIE && isWin && !isOpera) + { + str += ' '; + str += ''; + } else { + str += ' 0 && typeof o[0].SetVariable != "undefined") { + return o[0]; + } + else if (e.length > 0 && typeof e[0].SetVariable != "undefined") { + return e[0]; + } + } + } + else { + var o = document.getElementsByTagName("object"); + var e = document.getElementsByTagName("embed"); + if (e.length > 0 && typeof e[0].SetVariable != "undefined") { + return e[0]; + } + else if (o.length > 0 && typeof o[0].SetVariable != "undefined") { + return o[0]; + } + else if (o.length > 1 && typeof o[1].SetVariable != "undefined") { + return o[1]; + } + } + return undefined; + } + + function getPlayers() { + var players = []; + if (players.length == 0) { + var tmp = document.getElementsByTagName('object'); + players = tmp; + } + + if (players.length == 0 || players[0].object == null) { + var tmp = document.getElementsByTagName('embed'); + players = tmp; + } + return players; + } + + function getIframeHash() { + var doc = getHistoryFrame().contentWindow.document; + var hash = String(doc.location.search); + if (hash.length == 1 && hash.charAt(0) == "?") { + hash = ""; + } + else if (hash.length >= 2 && hash.charAt(0) == "?") { + hash = hash.substring(1); + } + return hash; + } + + /* Get the current location hash excluding the '#' symbol. */ + function getHash() { + // It would be nice if we could use document.location.hash here, + // but it's faulty sometimes. + var idx = document.location.href.indexOf('#'); + return (idx >= 0) ? document.location.href.substr(idx+1) : ''; + } + + /* Get the current location hash excluding the '#' symbol. */ + function setHash(hash) { + // It would be nice if we could use document.location.hash here, + // but it's faulty sometimes. + if (hash == '') hash = '#' + document.location.hash = hash; + } + + function createState(baseUrl, newUrl, flexAppUrl) { + return { 'baseUrl': baseUrl, 'newUrl': newUrl, 'flexAppUrl': flexAppUrl, 'title': null }; + } + + /* Add a history entry to the browser. + * baseUrl: the portion of the location prior to the '#' + * newUrl: the entire new URL, including '#' and following fragment + * flexAppUrl: the portion of the location following the '#' only + */ + function addHistoryEntry(baseUrl, newUrl, flexAppUrl) { + + //delete all the history entries + forwardStack = []; + + if (browser.ie) { + //Check to see if we are being asked to do a navigate for the first + //history entry, and if so ignore, because it's coming from the creation + //of the history iframe + if (flexAppUrl == defaultHash && document.location.href == initialHref && window['_ie_firstload']) { + currentHref = initialHref; + return; + } + if ((!flexAppUrl || flexAppUrl == defaultHash) && window['_ie_firstload']) { + newUrl = baseUrl + '#' + defaultHash; + flexAppUrl = defaultHash; + } else { + // for IE, tell the history frame to go somewhere without a '#' + // in order to get this entry into the browser history. + getHistoryFrame().src = historyFrameSourcePrefix + flexAppUrl; + } + setHash(flexAppUrl); + } else { + + //ADR + if (backStack.length == 0 && initialState.flexAppUrl == flexAppUrl) { + initialState = createState(baseUrl, newUrl, flexAppUrl); + } else if(backStack.length > 0 && backStack[backStack.length - 1].flexAppUrl == flexAppUrl) { + backStack[backStack.length - 1] = createState(baseUrl, newUrl, flexAppUrl); + } + + if (browser.safari) { + // for Safari, submit a form whose action points to the desired URL + if (browser.version <= 419.3) { + var file = window.location.pathname.toString(); + file = file.substring(file.lastIndexOf("/")+1); + getFormElement().innerHTML = '
    '; + //get the current elements and add them to the form + var qs = window.location.search.substring(1); + var qs_arr = qs.split("&"); + for (var i = 0; i < qs_arr.length; i++) { + var tmp = qs_arr[i].split("="); + var elem = document.createElement("input"); + elem.type = "hidden"; + elem.name = tmp[0]; + elem.value = tmp[1]; + document.forms.historyForm.appendChild(elem); + } + document.forms.historyForm.submit(); + } else { + top.location.hash = flexAppUrl; + } + // We also have to maintain the history by hand for Safari + historyHash[history.length] = flexAppUrl; + _storeStates(); + } else { + // Otherwise, write an anchor into the page and tell the browser to go there + addAnchor(flexAppUrl); + setHash(flexAppUrl); + } + } + backStack.push(createState(baseUrl, newUrl, flexAppUrl)); + } + + function _storeStates() { + if (browser.safari) { + getRememberElement().value = historyHash.join(","); + } + } + + function handleBackButton() { + //The "current" page is always at the top of the history stack. + var current = backStack.pop(); + if (!current) { return; } + var last = backStack[backStack.length - 1]; + if (!last && backStack.length == 0){ + last = initialState; + } + forwardStack.push(current); + } + + function handleForwardButton() { + //summary: private method. Do not call this directly. + + var last = forwardStack.pop(); + if (!last) { return; } + backStack.push(last); + } + + function handleArbitraryUrl() { + //delete all the history entries + forwardStack = []; + } + + /* Called periodically to poll to see if we need to detect navigation that has occurred */ + function checkForUrlChange() { + + if (browser.ie) { + if (currentHref != document.location.href && currentHref + '#' != document.location.href) { + //This occurs when the user has navigated to a specific URL + //within the app, and didn't use browser back/forward + //IE seems to have a bug where it stops updating the URL it + //shows the end-user at this point, but programatically it + //appears to be correct. Do a full app reload to get around + //this issue. + if (browser.version < 7) { + currentHref = document.location.href; + document.location.reload(); + } else { + if (getHash() != getIframeHash()) { + // this.iframe.src = this.blankURL + hash; + var sourceToSet = historyFrameSourcePrefix + getHash(); + getHistoryFrame().src = sourceToSet; + } + } + } + } + + if (browser.safari) { + // For Safari, we have to check to see if history.length changed. + if (currentHistoryLength >= 0 && history.length != currentHistoryLength) { + //alert("did change: " + history.length + ", " + historyHash.length + "|" + historyHash[history.length] + "|>" + historyHash.join("|")); + // If it did change, then we have to look the old state up + // in our hand-maintained array since document.location.hash + // won't have changed, then call back into BrowserManager. + currentHistoryLength = history.length; + var flexAppUrl = historyHash[currentHistoryLength]; + if (flexAppUrl == '') { + //flexAppUrl = defaultHash; + } + //ADR: to fix multiple + if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) { + var pl = getPlayers(); + for (var i = 0; i < pl.length; i++) { + pl[i].browserURLChange(flexAppUrl); + } + } else { + getPlayer().browserURLChange(flexAppUrl); + } + _storeStates(); + } + } + if (browser.firefox) { + if (currentHref != document.location.href) { + var bsl = backStack.length; + + var urlActions = { + back: false, + forward: false, + set: false + } + + if ((window.location.hash == initialHash || window.location.href == initialHref) && (bsl == 1)) { + urlActions.back = true; + // FIXME: could this ever be a forward button? + // we can't clear it because we still need to check for forwards. Ugg. + // clearInterval(this.locationTimer); + handleBackButton(); + } + + // first check to see if we could have gone forward. We always halt on + // a no-hash item. + if (forwardStack.length > 0) { + if (forwardStack[forwardStack.length-1].flexAppUrl == getHash()) { + urlActions.forward = true; + handleForwardButton(); + } + } + + // ok, that didn't work, try someplace back in the history stack + if ((bsl >= 2) && (backStack[bsl - 2])) { + if (backStack[bsl - 2].flexAppUrl == getHash()) { + urlActions.back = true; + handleBackButton(); + } + } + + if (!urlActions.back && !urlActions.forward) { + var foundInStacks = { + back: -1, + forward: -1 + } + + for (var i = 0; i < backStack.length; i++) { + if (backStack[i].flexAppUrl == getHash() && i != (bsl - 2)) { + arbitraryUrl = true; + foundInStacks.back = i; + } + } + for (var i = 0; i < forwardStack.length; i++) { + if (forwardStack[i].flexAppUrl == getHash() && i != (bsl - 2)) { + arbitraryUrl = true; + foundInStacks.forward = i; + } + } + handleArbitraryUrl(); + } + + // Firefox changed; do a callback into BrowserManager to tell it. + currentHref = document.location.href; + var flexAppUrl = getHash(); + if (flexAppUrl == '') { + //flexAppUrl = defaultHash; + } + //ADR: to fix multiple + if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) { + var pl = getPlayers(); + for (var i = 0; i < pl.length; i++) { + pl[i].browserURLChange(flexAppUrl); + } + } else { + getPlayer().browserURLChange(flexAppUrl); + } + } + } + //setTimeout(checkForUrlChange, 50); + } + + /* Write an anchor into the page to legitimize it as a URL for Firefox et al. */ + function addAnchor(flexAppUrl) + { + if (document.getElementsByName(flexAppUrl).length == 0) { + getAnchorElement().innerHTML += "" + flexAppUrl + ""; + } + } + + var _initialize = function () { + if (browser.ie) + { + var scripts = document.getElementsByTagName('script'); + for (var i = 0, s; s = scripts[i]; i++) { + if (s.src.indexOf("history.js") > -1) { + var iframe_location = (new String(s.src)).replace("history.js", "historyFrame.html"); + } + } + historyFrameSourcePrefix = iframe_location + "?"; + var src = historyFrameSourcePrefix; + + var iframe = document.createElement("iframe"); + iframe.id = 'ie_historyFrame'; + iframe.name = 'ie_historyFrame'; + //iframe.src = historyFrameSourcePrefix; + try { + document.body.appendChild(iframe); + } catch(e) { + setTimeout(function() { + document.body.appendChild(iframe); + }, 0); + } + } + + if (browser.safari) + { + var rememberDiv = document.createElement("div"); + rememberDiv.id = 'safari_rememberDiv'; + document.body.appendChild(rememberDiv); + rememberDiv.innerHTML = ''; + + var formDiv = document.createElement("div"); + formDiv.id = 'safari_formDiv'; + document.body.appendChild(formDiv); + + var reloader_content = document.createElement('div'); + reloader_content.id = 'safarireloader'; + var scripts = document.getElementsByTagName('script'); + for (var i = 0, s; s = scripts[i]; i++) { + if (s.src.indexOf("history.js") > -1) { + html = (new String(s.src)).replace(".js", ".html"); + } + } + reloader_content.innerHTML = ''; + document.body.appendChild(reloader_content); + reloader_content.style.position = 'absolute'; + reloader_content.style.left = reloader_content.style.top = '-9999px'; + iframe = reloader_content.getElementsByTagName('iframe')[0]; + + if (document.getElementById("safari_remember_field").value != "" ) { + historyHash = document.getElementById("safari_remember_field").value.split(","); + } + + } + + if (browser.firefox) + { + var anchorDiv = document.createElement("div"); + anchorDiv.id = 'firefox_anchorDiv'; + document.body.appendChild(anchorDiv); + } + + //setTimeout(checkForUrlChange, 50); + } + + return { + historyHash: historyHash, + backStack: function() { return backStack; }, + forwardStack: function() { return forwardStack }, + getPlayer: getPlayer, + initialize: function(src) { + _initialize(src); + }, + setURL: function(url) { + document.location.href = url; + }, + getURL: function() { + return document.location.href; + }, + getTitle: function() { + return document.title; + }, + setTitle: function(title) { + try { + backStack[backStack.length - 1].title = title; + } catch(e) { } + //if on safari, set the title to be the empty string. + if (browser.safari) { + if (title == "") { + try { + var tmp = window.location.href.toString(); + title = tmp.substring((tmp.lastIndexOf("/")+1), tmp.lastIndexOf("#")); + } catch(e) { + title = ""; + } + } + } + document.title = title; + }, + setDefaultURL: function(def) + { + defaultHash = def; + def = getHash(); + //trailing ? is important else an extra frame gets added to the history + //when navigating back to the first page. Alternatively could check + //in history frame navigation to compare # and ?. + if (browser.ie) + { + window['_ie_firstload'] = true; + var sourceToSet = historyFrameSourcePrefix + def; + var func = function() { + getHistoryFrame().src = sourceToSet; + window.location.replace("#" + def); + setInterval(checkForUrlChange, 50); + } + try { + func(); + } catch(e) { + window.setTimeout(function() { func(); }, 0); + } + } + + if (browser.safari) + { + currentHistoryLength = history.length; + if (historyHash.length == 0) { + historyHash[currentHistoryLength] = def; + var newloc = "#" + def; + window.location.replace(newloc); + } else { + //alert(historyHash[historyHash.length-1]); + } + //setHash(def); + setInterval(checkForUrlChange, 50); + } + + + if (browser.firefox || browser.opera) + { + var reg = new RegExp("#" + def + "$"); + if (window.location.toString().match(reg)) { + } else { + var newloc ="#" + def; + window.location.replace(newloc); + } + setInterval(checkForUrlChange, 50); + //setHash(def); + } + + }, + + /* Set the current browser URL; called from inside BrowserManager to propagate + * the application state out to the container. + */ + setBrowserURL: function(flexAppUrl, objectId) { + if (browser.ie && typeof objectId != "undefined") { + currentObjectId = objectId; + } + //fromIframe = fromIframe || false; + //fromFlex = fromFlex || false; + //alert("setBrowserURL: " + flexAppUrl); + //flexAppUrl = (flexAppUrl == "") ? defaultHash : flexAppUrl ; + + var pos = document.location.href.indexOf('#'); + var baseUrl = pos != -1 ? document.location.href.substr(0, pos) : document.location.href; + var newUrl = baseUrl + '#' + flexAppUrl; + + if (document.location.href != newUrl && document.location.href + '#' != newUrl) { + currentHref = newUrl; + addHistoryEntry(baseUrl, newUrl, flexAppUrl); + currentHistoryLength = history.length; + } + + return false; + }, + + browserURLChange: function(flexAppUrl) { + var objectId = null; + if (browser.ie && currentObjectId != null) { + objectId = currentObjectId; + } + pendingURL = ''; + + if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) { + var pl = getPlayers(); + for (var i = 0; i < pl.length; i++) { + try { + pl[i].browserURLChange(flexAppUrl); + } catch(e) { } + } + } else { + try { + getPlayer(objectId).browserURLChange(flexAppUrl); + } catch(e) { } + } + + currentObjectId = null; + } + + } + +})(); + +// Initialization + +// Automated unit testing and other diagnostics + +function setURL(url) +{ + document.location.href = url; +} + +function backButton() +{ + history.back(); +} + +function forwardButton() +{ + history.forward(); +} + +function goForwardOrBackInHistory(step) +{ + history.go(step); +} + +//BrowserHistoryUtils.addEvent(window, "load", function() { BrowserHistory.initialize(); }); +(function(i) { + var u =navigator.userAgent;var e=/*@cc_on!@*/false; + var st = setTimeout; + if(/webkit/i.test(u)){ + st(function(){ + var dr=document.readyState; + if(dr=="loaded"||dr=="complete"){i()} + else{st(arguments.callee,10);}},10); + } else if((/mozilla/i.test(u)&&!/(compati)/.test(u)) || (/opera/i.test(u))){ + document.addEventListener("DOMContentLoaded",i,false); + } else if(e){ + (function(){ + var t=document.createElement('doc:rdy'); + try{t.doScroll('left'); + i();t=null; + }catch(e){st(arguments.callee,0);}})(); + } else{ + window.onload=i; + } +})( function() {BrowserHistory.initialize();} ); Index: lams_flex/Learner/html-template/history/historyFrame.html =================================================================== diff -u --- lams_flex/Learner/html-template/history/historyFrame.html (revision 0) +++ lams_flex/Learner/html-template/history/historyFrame.html (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,29 @@ + + + + + + + + Hidden frame for Browser History support. + + Index: lams_flex/Learner/html-template/index.template.html =================================================================== diff -u --- lams_flex/Learner/html-template/index.template.html (revision 0) +++ lams_flex/Learner/html-template/index.template.html (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,121 @@ + + + + + + + + + + + + +${title} + + + + + + + + + + + + + + + Index: lams_flex/Learner/html-template/playerProductInstall.swf =================================================================== diff -u Binary files differ Index: lams_flex/Learner/libs/blank =================================================================== diff -u --- lams_flex/Learner/libs/blank (revision 0) +++ lams_flex/Learner/libs/blank (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1 @@ \ No newline at end of file Index: lams_flex/Learner/src/Learner.mxml =================================================================== diff -u --- lams_flex/Learner/src/Learner.mxml (revision 0) +++ lams_flex/Learner/src/Learner.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + Index: lams_flex/Learner/src/assets/images/application.png =================================================================== diff -u Binary files differ Index: lams_flex/Learner/src/assets/images/pencil.png =================================================================== diff -u Binary files differ Index: lams_flex/Learner/src/assets/images/tick.png =================================================================== diff -u Binary files differ Index: lams_flex/Learner/src/assets/images/user.png =================================================================== diff -u Binary files differ Index: lams_flex/Learner/src/assets/styles/main.css =================================================================== diff -u --- lams_flex/Learner/src/assets/styles/main.css (revision 0) +++ lams_flex/Learner/src/assets/styles/main.css (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,88 @@ +/* CSS file */ +Application { + backgroundColor: #FFFFFF; + themeColor: #0087e5; +} + +Alert { + backgroundColor: #FFFFFF; + color: #000000; +} + +Panel { + borderColor: #45a6ed; + borderThicknessLeft: 1; + borderThicknessRight: 1; + borderThicknessBottom: 1; + borderAlpha: 1; + + paddingTop: 0; + paddingLeft: 0; + paddingRight: 0; + paddingBottom: 0; + + highlightAlphas: 0.67, 0; + headerColors: #45a6ed, #0087e5; + + titleStyleName: "myPanelStyle"; +} + +Panel.complexActivity { + titleStyleName: "complexActivity"; + borderColor: #D7D7D7; + borderThicknessLeft: 1; + borderThicknessRight: 1; + borderThicknessBottom: 1; + borderThicknessTop: 1; + + paddingTop: 0; + paddingLeft: 0; + paddingRight: 0; + paddingBottom: 0; + + highlightAlphas: 0.67, 0; + headerColors: #8a8a8a, #d7d7d7; + + roundedBottomCorners: false; + headerHeight: 12; + + fontFamily: Verdana; + fontSize: 10; + cornerRadius: 0; +} + +Wizard { + horizontalAlign : center; +} + +.mainBody { + backgroundColor: #FFFFFF; + paddingTop: 20; + horizontalAlign : center; +} + +Form, Label, TextInput { + color: #000000; + font-weight: normal; +} + +FormItem, List { + font-weight: bold; + text-align: left; +} + +.myPanelStyle { + color: #FFFFFF; +} + +.panelText { + color: #000000; + font-weight: none; + text-align: left; +} +.panelStatus +{ +} +.panelControlBar +{ +} Index: lams_flex/Learner/src/org/lamsfoundation/lams/business/LearnerConstants.as =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/business/LearnerConstants.as (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/business/LearnerConstants.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,18 @@ +package org.lamsfoundation.lams.business +{ + public class LearnerConstants + { + public static var BRANCHING_ACTIVITY_TYPE_ID:int = 8; + public static var DOUBLE_CLICK_DELAY:int = 150; + + public static var UNATTEMPTED_PROGRESS:String = "unattempted"; + public static var ATTEMPTING_PROGRESS:String = "attempting"; + public static var ATTEMPTED_PROGRESS:String = "attempted"; + public static var COMPLETED_PROGRESS:String = "completed"; + + public function LearnerConstants() + { + } + + } +} \ No newline at end of file Index: lams_flex/Learner/src/org/lamsfoundation/lams/business/LearnerFactory.as =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/business/LearnerFactory.as (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/business/LearnerFactory.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,17 @@ +package org.lamsfoundation.lams.business +{ + import org.lamsfoundation.lams.vos.Activity; + + public class LearnerFactory + { + public function LearnerFactory() + { + } + + public function createActivity(xml:XML):Activity{ + var activity:Activity = new Activity(); + activity.setFromXML(xml); + return activity; + } + } +} \ No newline at end of file Index: lams_flex/Learner/src/org/lamsfoundation/lams/business/LearnerManager.as =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/business/LearnerManager.as (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/business/LearnerManager.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,264 @@ +package org.lamsfoundation.lams.business +{ + import flash.events.Event; + import flash.events.EventDispatcher; + import flash.external.*; + import flash.net.URLRequest; + import flash.net.navigateToURL; + + import mx.collections.ArrayCollection; + + import org.lamsfoundation.lams.common.dictionary.XMLDictionaryRegistry; + import org.lamsfoundation.lams.vos.Activity; + import org.lamsfoundation.lams.vos.LearningDesign; + import org.lamsfoundation.lams.vos.Lesson; + import org.lamsfoundation.lams.vos.Progress; + + public class LearnerManager extends EventDispatcher + { + /*-.........................................Properties from FlashVars ..........................................*/ + private var _serverUrl:String; + private var _lessonID:uint; + private var _userID:uint; + + /*-.........................................Properties from service calls ..........................................*/ + private var _dictionary:XMLDictionaryRegistry; + private var _lesson:Lesson; + private var _learningDesign:LearningDesign; + private var _learningDesignXML:XMLList; + private var _progress:Progress; + + /*-......................................... Static variables ..........................................*/ + private static var withAttributes:String = "?"; + private static var and:String = "&"; + private static var learnerAction:String = "learning/learner.do"; + private static var launchActivityMethod:String = "method=forwardToLearnerActivityURL"; + + /*-.........................................Constructor..........................................*/ + public function LearnerManager(serverUrl:String, lessonID:uint, userID:uint) + { + // set initial variables + _dictionary = new XMLDictionaryRegistry(new XML()); + _serverUrl = serverUrl; + _lessonID = lessonID; + _userID = userID; + + // add external interface callbacks + ExternalInterface.addCallback("setProgressUpdate", setProgressUpdate); + ExternalInterface.addCallback("setLearningDesigns", setLearningDesign); + } + + /*-.........................................Setters and Getters..........................................*/ + [Bindable (event="serverURLChanged")] + public function get serverURL():String + { + return _serverUrl; + } + + [Bindable (event="lessonIDChanged")] + public function get lessonID():uint + { + return _lessonID; + } + + [Bindable (event="userIDChanged")] + public function get userID():uint + { + return _userID; + } + + [Bindable (event="dictionaryChanged")] + public function get dictionary():XMLDictionaryRegistry + { + return _dictionary; + } + + [Bindable (event="lessonChanged")] + public function get lesson():Lesson{ + return _lesson; + } + + [Bindable (event="learningDesignChanged")] + public function get learningDesign():LearningDesign{ + return _learningDesign; + } + + [Bindable (event="learningDesignXMLChanged")] + public function get learningDesignXML():XMLList{ + return _learningDesignXML; + } + + [Bindable (event="progressChanged")] + public function get progress():Progress{ + return _progress; + } + + /*-.........................................Methods..........................................*/ + + public function setServerURL(serverURL:String):void { + _serverUrl = serverURL; + + dispatchEvent(new Event("serverURLChanged")); + } + + public function setLessonID(lessonID:uint):void { + _lessonID = lessonID; + + dispatchEvent(new Event("lessonIDChanged")); + } + + public function setUserID(userID:uint):void { + _userID = userID; + + dispatchEvent(new Event("userIDChanged")); + } + + public function setDictionary(xml:XML):void { + _dictionary.xml = xml; + + dispatchEvent(new Event("dictionaryChanged")); + } + + public function setLesson(lesson:Object):void { + if(!_lesson){ + _lesson = new Lesson(); + } + + _lesson.setFromWDDX(lesson); + + dispatchEvent(new Event("lessonChanged")); + } + + public function setLearningDesign(learningDesign:Object):void { + if(!_learningDesign){ + _learningDesign = new LearningDesign(); + } + + _learningDesign.setFromWDDX(learningDesign); + + dispatchEvent(new Event("learningDesignChanged")); + + _learningDesignXML = constructLearningDesignXML(_learningDesign); + + dispatchEvent(new Event("learningDesignXMLChanged")); + } + + public function setProgress(progress:Object):void { + if(!_progress){ + _progress = new Progress(); + } + + _progress.setFromWDDX(progress); + + dispatchEvent(new Event("progressChanged")); + } + + public function setProgressUpdate(progress:Object):void{ + if(!_progress){ + _progress = new Progress(); + } + + _progress.setFromArgs(progress.attemptedActivities, progress.completedActivities, progress.currentActivity.activityId); + + dispatchEvent(new Event("progressChanged")); + } + + public function getLesson():Lesson{ + return _lesson; + } + + private function constructLearningDesignXML(learningDesign:LearningDesign):XMLList{ + // base of our XML + var baseXML:XML = + ; + + // make an XMLList with our base + var learningDesignXML:XMLList = new XMLList(baseXML); + + // let the XML creating begin, start it up with the first activityUIID + learningDesignXML[0].appendChild(createActivityXML(learningDesign.firstActivityUIID, learningDesign)); + + return learningDesignXML; + } + + private function createActivityXML(activityUIID:uint, learningDesign:LearningDesign):XMLList{ + var baseXML:XML; + var activityXML:XMLList; + + var activity:Object; + var childActivities:ArrayCollection = new ArrayCollection(); + var nextActivity:Object; + + // find the activity and its children + for(var i:int = 0; i < _learningDesign.activities.length; i++){ + var x:Object = _learningDesign.activities.getItemAt(i); + if(x.activityUIID == activityUIID){ + activity = x; + }else if(x.parentUIID == activityUIID){ + childActivities.addItem(x); + } + } + + // if no activity is found, return null XML + if(!activity){ + return null; + } + + // create the base activity XML + baseXML = + ; + + // create the XMLList with the base + activityXML = new XMLList(baseXML); + + // for each child activity, create some more XML and append it to the current activity's node + if(childActivities.length != 0){ + for(i = 0; i < childActivities.length; i++){ + x = childActivities.getItemAt(i); + activityXML[0].appendChild(createActivityXML(x.activityUIID, _learningDesign)); + + /* + if the activity being checked is a branch (sequence with transitions), + ignore the other children and break the loop and let the transition + loop finish up the XML creation + */ + if(uint(activity.activityTypeID) == 8){ + break; + } + } + } + + // find the next activity to the current activity and create a node for it + for(i = 0; i < _learningDesign.transitions.length; i++){ + x = _learningDesign.transitions.getItemAt(i); + if(x.fromUIID == activityUIID){ + if(x.toUIID){ + activityXML += createActivityXML(x.toUIID, _learningDesign); + } + + break; + } + } + + return activityXML; + } + + public function launchActivity(xml:XML):void{ + var activity:Activity = new Activity(); + activity.setFromXML(xml); + var url:String; + + url = serverURL + learnerAction + withAttributes + launchActivityMethod + and + + "activityID=" + String(activity.activityID) + and + + "userID=" + String(userID) + and + + "lessonID=" + String(lessonID); + + navigateToURL(new URLRequest(url), '_blank'); + } + } +} \ No newline at end of file Index: lams_flex/Learner/src/org/lamsfoundation/lams/descriptors/ComplexActivityDescriptor.as =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/descriptors/ComplexActivityDescriptor.as (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/descriptors/ComplexActivityDescriptor.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,55 @@ +package org.lamsfoundation.lams.descriptors +{ + import flash.events.EventDispatcher; + + import mx.collections.ArrayCollection; + import mx.collections.ICollectionView; + import mx.controls.treeClasses.ITreeDataDescriptor; + + import org.lamsfoundation.lams.events.WizardEvent; + + public class ComplexActivityDescriptor implements ITreeDataDescriptor + { + + public function ComplexActivityDescriptor() { + } + + public function getChildren(node:Object, model:Object=null):ICollectionView + { + return node.children; + } + + public function hasChildren(node:Object, model:Object=null):Boolean + { + return (node.children.length > 0); + } + + public function isBranch(node:Object, model:Object=null):Boolean + { + if(node is WorkspaceItem && node.resourceType == WorkspaceItem.RT_FOLDER) { + return true; + } + + return false; + } + + public function getData(node:Object, model:Object=null):Object + { + if(node is WorkspaceItem && node.resourceType == WorkspaceItem.RT_FOLDER) { + return {resourceID: node.resourceID, children:node.children}; + } + return null; + } + + public function addChildAt(parent:Object, newChild:Object, index:int, model:Object=null):Boolean + { + return false; + } + + public function removeChildAt(parent:Object, child:Object, index:int, model:Object=null):Boolean + { + return false; + } + + } +} \ No newline at end of file Index: lams_flex/Learner/src/org/lamsfoundation/lams/events/LearnerActivityEvent.as =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/events/LearnerActivityEvent.as (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/events/LearnerActivityEvent.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,28 @@ +package org.lamsfoundation.lams.events +{ + import flash.events.Event; + + import org.lamsfoundation.lams.vos.Activity; + + public class LearnerActivityEvent extends Event + { + /*-.........................................Constants..........................................*/ + + public static const LAUNCH_ACTIVITY:String = "launchActivity"; + + /*-.........................................Properties..........................................*/ + + public var activity:Activity; + public var activityID:uint; + public var lessonID:uint; + public var userID:uint; + + /*-.........................................Constructor..........................................*/ + + public function LearnerActivityEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=true) + { + super(type, bubbles, cancelable); + } + + } +} \ No newline at end of file Index: lams_flex/Learner/src/org/lamsfoundation/lams/events/LearnerActivityMouseEvent.as =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/events/LearnerActivityMouseEvent.as (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/events/LearnerActivityMouseEvent.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,28 @@ +package org.lamsfoundation.lams.events +{ + import flash.events.Event; + import flash.events.MouseEvent; + + import mx.events.ListEvent; + + public class LearnerActivityMouseEvent extends Event + { + /*-.........................................Constants..........................................*/ + + public static const SIMPLE_ACTIVITY_CLICK:String = "simpleActivityClick"; + public static const SIMPLE_ACTIVITY_DOUBLE_CLICK:String = "simpleActivityDoubleClick"; + public static const COMPLEX_ACTIVITY_CLICK:String = "complexActivityClick"; + public static const COMPLEX_ACTIVITY_DOUBLE_CLICK:String = "complexActivityDoubleClick"; + public static const COMPLEX_ACTIVITY_ITEM_CLICK:String = "complexActivityItemClick"; + public static const COMPLEX_ACTIVITY_ITEM_DOUBLE_CLICK:String = "complexActivityItemDoubleClick"; + + public var mouseEvent:MouseEvent; + public var listEvent:ListEvent; + + public function LearnerActivityMouseEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=true) + { + super(type, bubbles, cancelable); + } + + } +} \ No newline at end of file Index: lams_flex/Learner/src/org/lamsfoundation/lams/events/LearnerErrorEvent.as =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/events/LearnerErrorEvent.as (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/events/LearnerErrorEvent.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,22 @@ +package org.lamsfoundation.lams.events +{ + import flash.events.Event; + + public class LearnerErrorEvent extends Event + { + /*-.........................................Constants..........................................*/ + + public static const SHOW_ERROR:String = "showErrorEvent"; + + + /*-.........................................Properties..........................................*/ + public var message:String; + /*-.........................................Constructor..........................................*/ + + public function LearnerErrorEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false) + { + super(type, bubbles, cancelable); + } + + } +} \ No newline at end of file Index: lams_flex/Learner/src/org/lamsfoundation/lams/events/LearnerEvent.as =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/events/LearnerEvent.as (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/events/LearnerEvent.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,34 @@ +package org.lamsfoundation.lams.events +{ + import flash.events.Event; + + import mx.collections.ArrayCollection; + import mx.core.Application; + + import org.lamsfoundation.lams.vos.Lesson; + + public class LearnerEvent extends Event + { + /*-.........................................Constants..........................................*/ + + public static const GET_LESSON:String = "getLessonEvent"; + public static const JOIN_LESSON:String = "joinLessonEvent"; + public static const RESUME_LESSON:String = "resumeLessonEvent"; + public static const EXIT_LESSON:String = "exitLessonEvent"; + public static const GET_FLASH_PROGRESS:String = "getFlashProgressEvent"; + public static const GET_LEARNING_DESIGN_DETAILS:String = "getLearningDesignDetailsEvent"; + + /*-.........................................Properties..........................................*/ + + public var lessonID:uint; + public var lesson:Lesson; + + /*-.........................................Constructor..........................................*/ + + public function LearnerEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false) + { + super(type, bubbles, cancelable); + } + + } +} \ No newline at end of file Index: lams_flex/Learner/src/org/lamsfoundation/lams/itemRenderers/ActivityIconCanvas.mxml =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/itemRenderers/ActivityIconCanvas.mxml (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/itemRenderers/ActivityIconCanvas.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + Index: lams_flex/Learner/src/org/lamsfoundation/lams/itemRenderers/ActivityItemRenderer.mxml =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/itemRenderers/ActivityItemRenderer.mxml (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/itemRenderers/ActivityItemRenderer.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,115 @@ + + + + + 0); + + // check if branching activity + isBranchingActivity = (data.Activity.activityTypeID == LearnerConstants.BRANCHING_ACTIVITY_TYPE_ID); + + // instantiate the item renderer for the first time + onDataChanged(event); + } + } + + private function addListeners():void{ + // add listeners + addEventListener(FlexEvent.DATA_CHANGE, onDataChanged); + simpleActivityState.addEventListener(LearnerActivityMouseEvent.SIMPLE_ACTIVITY_CLICK, onSimpleActivityClick); + complexActivityState.addEventListener(LearnerActivityMouseEvent.COMPLEX_ACTIVITY_CLICK, onComplexActivityClick); + complexActivityState.addEventListener(LearnerActivityMouseEvent.COMPLEX_ACTIVITY_DOUBLE_CLICK, onComplexActivityDoubleClick); + complexActivityState.addEventListener(LearnerActivityMouseEvent.COMPLEX_ACTIVITY_ITEM_CLICK, onComplexActivityItemClick); + complexActivityState.addEventListener(LearnerActivityMouseEvent.COMPLEX_ACTIVITY_ITEM_DOUBLE_CLICK, onComplexActivityItemDoubleClick); + } + + private function setDefaultState():void{ + var childActivities:XMLList = data.Activity; + if(childActivities.length() == 0){ + activityViewStack.selectedChild = simpleActivityState; + }else{ + activityViewStack.selectedChild = complexActivityState; + } + } + + private function switchState(event:MouseEvent):void{ + if(activityViewStack.selectedChild == simpleActivityState){ + if(isComplexActivity){ + activityViewStack.selectedChild = complexActivityState; + } + } + else if(activityViewStack.selectedChild == complexActivityState){ + if(!(event.target.parent is TreeItemRenderer)){ + activityViewStack.selectedChild = simpleActivityState; + } + } + } + + private function onDataChanged(event:FlexEvent):void{ + + } + + private function onSimpleActivityClick(event:LearnerActivityMouseEvent):void{ + switchState(event.mouseEvent); + } + + private function onSimpleActivityDoubleClick(event:LearnerActivityMouseEvent):void{ + var learnerActivityEvent:LearnerActivityEvent = new LearnerActivityEvent(LearnerActivityEvent.LAUNCH_ACTIVITY); + learnerActivityEvent.activity = new Activity(); + learnerActivityEvent.activity.setFromXML(event.mouseEvent.currentTarget.data); + dispatchEvent(new LearnerActivityEvent(LearnerActivityEvent.LAUNCH_ACTIVITY)); + } + + private function onComplexActivityClick(event:LearnerActivityMouseEvent):void{ + switchState(event.mouseEvent); + } + + private function onComplexActivityDoubleClick(event:LearnerActivityMouseEvent):void{ + dispatchEvent(new LearnerActivityEvent(LearnerActivityEvent.LAUNCH_ACTIVITY)); + } + + private function onComplexActivityItemClick(event:LearnerActivityMouseEvent):void{ + + } + + private function onComplexActivityItemDoubleClick(event:LearnerActivityMouseEvent):void{ + dispatchEvent(new LearnerActivityEvent(LearnerActivityEvent.LAUNCH_ACTIVITY)); + } + ]]> + + + + + + + + + + + \ No newline at end of file Index: lams_flex/Learner/src/org/lamsfoundation/lams/itemRenderers/ActivityListItemRenderer.mxml =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/itemRenderers/ActivityListItemRenderer.mxml (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/itemRenderers/ActivityListItemRenderer.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,13 @@ + + + + + + + + Index: lams_flex/Learner/src/org/lamsfoundation/lams/itemRenderers/BranchingActivityState.mxml =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/itemRenderers/BranchingActivityState.mxml (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/itemRenderers/BranchingActivityState.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,25 @@ + + + + + + + + + + + Index: lams_flex/Learner/src/org/lamsfoundation/lams/itemRenderers/ComplexActivityState.mxml =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/itemRenderers/ComplexActivityState.mxml (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/itemRenderers/ComplexActivityState.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,94 @@ + + + + + + + + + Index: lams_flex/Learner/src/org/lamsfoundation/lams/itemRenderers/ComplexActivityTreeItemRenderer.as =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/itemRenderers/ComplexActivityTreeItemRenderer.as (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/itemRenderers/ComplexActivityTreeItemRenderer.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,70 @@ +package org.lamsfoundation.lams.itemRenderers +{ + import mx.controls.treeClasses.TreeItemRenderer; + import mx.core.Container; + import mx.core.IFactory; + import mx.events.FlexEvent; + + import org.lamsfoundation.lams.business.LearnerConstants; + + public class ComplexActivityTreeItemRenderer extends TreeItemRenderer implements IFactory + { + private var activityIconCanvas:ActivityIconCanvas; + + public function ComplexActivityTreeItemRenderer() + { + super(); + addListeners(); + activityIconCanvas = new ActivityIconCanvas(); + addChild(activityIconCanvas); + } + + public function newInstance():* { + return new ComplexActivityTreeItemRenderer(); + } + + private function addListeners():void{ + addEventListener(FlexEvent.DATA_CHANGE, onDataChange); + } + + private function onDataChange(event:FlexEvent):void{ + setProgressImage(); + } + + private function setProgressImage(state:Container = null):void{ + if(activityIconCanvas.progressImage){ + if(state){ + activityIconCanvas.progressImage.selectedChild = state; + } + else{ + if(data){ + if(data.@activityProgress == LearnerConstants.UNATTEMPTED_PROGRESS){ + activityIconCanvas.progressImage.selectedChild = activityIconCanvas.unattemptedState; + }else if(data.@activityProgress == LearnerConstants.ATTEMPTING_PROGRESS){ + activityIconCanvas.progressImage.selectedChild = activityIconCanvas.attemptedState; + }else if(data.@activityProgress == LearnerConstants.ATTEMPTED_PROGRESS){ + activityIconCanvas.progressImage.selectedChild = activityIconCanvas.attemptedState; + }else if(data.@activityProgress == LearnerConstants.COMPLETED_PROGRESS){ + activityIconCanvas.progressImage.selectedChild = activityIconCanvas.completedState; + } + } + + } + } + } + + override protected function updateDisplayList(w:Number, h:Number):void { + super.updateDisplayList(w, h); + + // position the icon + if (activityIconCanvas.parent == this) { + if (icon) { + activityIconCanvas.x = icon.x - 1; + } else if (label) { + activityIconCanvas.x = label.x - activityIconCanvas.width - 1; + } + } + } + + } +} \ No newline at end of file Index: lams_flex/Learner/src/org/lamsfoundation/lams/itemRenderers/SimpleActivityState.mxml =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/itemRenderers/SimpleActivityState.mxml (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/itemRenderers/SimpleActivityState.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,91 @@ + + + + + + + + + Index: lams_flex/Learner/src/org/lamsfoundation/lams/maps/MainEventMap.mxml =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/maps/MainEventMap.mxml (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/maps/MainEventMap.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_flex/Learner/src/org/lamsfoundation/lams/maps/ModelMap.mxml =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/maps/ModelMap.mxml (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/maps/ModelMap.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + Index: lams_flex/Learner/src/org/lamsfoundation/lams/views/HeaderView.mxml =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/views/HeaderView.mxml (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/views/HeaderView.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,12 @@ + + + + + + + + + + Index: lams_flex/Learner/src/org/lamsfoundation/lams/views/LearningDesignView.mxml =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/views/LearningDesignView.mxml (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/views/LearningDesignView.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,143 @@ + + + + + + + + Index: lams_flex/Learner/src/org/lamsfoundation/lams/views/MainView.mxml =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/views/MainView.mxml (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/views/MainView.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + Index: lams_flex/Learner/src/org/lamsfoundation/lams/views/ScratchpadView.mxml =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/views/ScratchpadView.mxml (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/views/ScratchpadView.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,5 @@ + + + + + Index: lams_flex/Learner/src/org/lamsfoundation/lams/views/SupportActivitiesView.mxml =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/views/SupportActivitiesView.mxml (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/views/SupportActivitiesView.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,4 @@ + + + + \ No newline at end of file Index: lams_flex/Learner/src/org/lamsfoundation/lams/vos/Activity.as =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/vos/Activity.as (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/vos/Activity.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,36 @@ +package org.lamsfoundation.lams.vos +{ + import mx.collections.ArrayCollection; + + [Bindable] + public class Activity + { + public var activityID:uint; + public var activityTitle:String; + public var activityTypeID:uint; + public var activityUIID:uint; + public var activityChildren:ArrayCollection; + + public function Activity() { + + } + + public function setFromArgs(myActivityID:uint, myActivityTitle:String, myActivityTypeID:uint, myActivityUIID:uint):void{ + activityID = myActivityID; + activityTitle = myActivityTitle + activityTypeID = myActivityTypeID; + activityUIID = myActivityUIID; + } + + public function setFromXML(xml:XML):void{ + activityID = xml.@activityID; + activityTitle = xml.@activityTitle + activityTypeID = xml.@activityTypeID; + activityUIID = xml.@activityUIID; + } + + public function setFromWDDX(WDDXObject:Object):void{ + + } + } +} \ No newline at end of file Index: lams_flex/Learner/src/org/lamsfoundation/lams/vos/LearningDesign.as =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/vos/LearningDesign.as (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/vos/LearningDesign.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,62 @@ +package org.lamsfoundation.lams.vos +{ + import mx.collections.ArrayCollection; + + [Bindable] + public class LearningDesign + { + public var activities:ArrayCollection; + public var branchMappings:ArrayCollection; + public var competences:ArrayCollection; + public var contentFolderID:String; + public var copyTypeID:uint; + public var createDateTime:Date; + public var designVersion:uint; + public var editOverrideLock:Boolean; + public var firstActivityID:uint; + public var firstActivityUIID:uint; + public var floatingActivityID:uint; + public var groupings:ArrayCollection; + public var lastModifiedDateTime:Date; + public var learningDesignID:uint; + public var maxID:uint; + public var originalLearningDesignID:uint; + public var readOnly:Boolean; + public var title:String; + public var transitions:ArrayCollection; + public var userID:uint; + public var validDesign:Boolean; + public var version:String; + public var workspaceFolderID:uint; + + public function LearningDesign() { + + } + + public function setFromWDDX(WDDXObject:Object):void{ + activities = WDDXObject.activities; + branchMappings = WDDXObject.branchMappings; + competences = WDDXObject.competences; + contentFolderID = WDDXObject.contentFolderID; + copyTypeID = WDDXObject.copyTypeID; + createDateTime = new Date(WDDXObject.createDateTime); + designVersion = WDDXObject.designVersion; + editOverrideLock = WDDXObject.editOverrideLock; + firstActivityID = WDDXObject.firstActivityID; + firstActivityUIID = WDDXObject.firstActivityUIID; + floatingActivityID = WDDXObject.floatingActivityID; + groupings = WDDXObject.groupings; + lastModifiedDateTime = new Date(WDDXObject.lastModifiedDateTime); + learningDesignID = WDDXObject.learningDesignID; + maxID = WDDXObject.maxID; + originalLearningDesignID = WDDXObject.originalLearningDesignID; + readOnly = WDDXObject.readOnly; + title = WDDXObject.title; + transitions = WDDXObject.transitions; + userID = WDDXObject.userID; + validDesign = WDDXObject.validDesign; + version = WDDXObject.version; + workspaceFolderID = WDDXObject.workspaceFolderID; + } + } +} \ No newline at end of file Index: lams_flex/Learner/src/org/lamsfoundation/lams/vos/Lesson.as =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/vos/Lesson.as (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/vos/Lesson.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,38 @@ +package org.lamsfoundation.lams.vos +{ + import org.lamsfoundation.lams.common.util.WDDXParser; + + [Bindable] + public class Lesson + { + public var createDateTime:Date; + public var createDateTimeString:String; + public var learnerExportAvailable:Boolean; + public var learnerImAvailable:Boolean; + public var learnerPresenceAvailable:Boolean; + public var learningDesignID:uint; + public var lessonID:uint; + public var lessonName:String; + public var lessonStateID:uint; + public var organisationID:uint; + public var startDateTime:Date; + + public function Lesson() { + + } + + public function setFromWDDX(WDDXObject:Object):void{ + createDateTime = new Date(WDDXObject.createDateTime); + createDateTimeString = WDDXObject.createDateTimeString; + learnerExportAvailable = WDDXObject.learnerExportAvailable; + learnerImAvailable = WDDXObject.learnerImAvailable; + learnerPresenceAvailable = WDDXObject.learnerPresenceAvailable; + learningDesignID = WDDXObject.learningDesignID; + lessonID = WDDXObject.lessonID; + lessonName = WDDXObject.lessonName; + lessonStateID = WDDXObject.lessonStateID; + organisationID = WDDXObject.organisationID; + startDateTime = new Date(WDDXObject.startDateTime); + } + } +} \ No newline at end of file Index: lams_flex/Learner/src/org/lamsfoundation/lams/vos/Progress.as =================================================================== diff -u --- lams_flex/Learner/src/org/lamsfoundation/lams/vos/Progress.as (revision 0) +++ lams_flex/Learner/src/org/lamsfoundation/lams/vos/Progress.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,42 @@ +package org.lamsfoundation.lams.vos +{ + import mx.collections.ArrayCollection; + + [Bindable] + public class Progress + { + public var attemptedActivities:ArrayCollection; + public var completedActivities:ArrayCollection; + public var currentActivityId:uint; + public var firstName:String; + public var lastName:String; + public var learnerID:uint; + public var lessonComplete:Boolean; + public var lessonID:uint; + public var lessonName:String; + public var userName:String; + + public function Progress() { + + } + + public function setFromArgs(myAttemptedActivities:ArrayCollection, myCompletedActivities:ArrayCollection, myCurrentActivityId:uint):void{ + attemptedActivities = myAttemptedActivities; + completedActivities = myCompletedActivities; + currentActivityId = myCurrentActivityId; + } + + public function setFromWDDX(WDDXObject:Object):void{ + attemptedActivities = WDDXObject.attemptedActivities; + completedActivities = WDDXObject.completedActivities; + currentActivityId = WDDXObject.currentActivityId; + firstName = WDDXObject.firstName; + lastName = WDDXObject.lastName; + learnerID = WDDXObject.learnerId; + lessonComplete = WDDXObject.lessonComplete; + lessonID = WDDXObject.lessonId; + lessonName = WDDXObject.lessonName; + userName = WDDXObject.userName; + } + } +} \ No newline at end of file Index: lams_flex/TimeChart/.actionScriptProperties =================================================================== diff -u --- lams_flex/TimeChart/.actionScriptProperties (revision 0) +++ lams_flex/TimeChart/.actionScriptProperties (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + Index: lams_flex/TimeChart/.flexProperties =================================================================== diff -u --- lams_flex/TimeChart/.flexProperties (revision 0) +++ lams_flex/TimeChart/.flexProperties (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,2 @@ + + Index: lams_flex/TimeChart/.project =================================================================== diff -u --- lams_flex/TimeChart/.project (revision 0) +++ lams_flex/TimeChart/.project (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,25 @@ + + + TimeChart + + + + + + com.adobe.flexbuilder.project.flexbuilder + + + + + + com.adobe.flexbuilder.project.flexnature + com.adobe.flexbuilder.project.actionscriptnature + + + + bin-release + 2 + C:/Documents and Settings/Admin/lams_head/lams_monitoring/web + + + Index: lams_flex/TimeChart/.settings/org.eclipse.core.resources.prefs =================================================================== diff -u --- lams_flex/TimeChart/.settings/org.eclipse.core.resources.prefs (revision 0) +++ lams_flex/TimeChart/.settings/org.eclipse.core.resources.prefs (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,3 @@ +#Wed Apr 09 22:04:34 PDT 2008 +eclipse.preferences.version=1 +encoding/=utf-8 Index: lams_flex/TimeChart/html-template/AC_OETags.js =================================================================== diff -u --- lams_flex/TimeChart/html-template/AC_OETags.js (revision 0) +++ lams_flex/TimeChart/html-template/AC_OETags.js (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,292 @@ +// Flash Player Version Detection - Rev 1.6 +// Detect Client Browser type +// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved. +var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false; +var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false; +var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false; + +function ControlVersion() +{ + var version; + var axo; + var e; + + // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry + + try { + // version will be set for 7.X or greater players + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); + version = axo.GetVariable("$version"); + } catch (e) { + } + + if (!version) + { + try { + // version will be set for 6.X players only + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); + + // installed player is some revision of 6.0 + // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29, + // so we have to be careful. + + // default to the first public version + version = "WIN 6,0,21,0"; + + // throws if AllowScripAccess does not exist (introduced in 6.0r47) + axo.AllowScriptAccess = "always"; + + // safe to call for 6.0r47 or greater + version = axo.GetVariable("$version"); + + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 4.X or 5.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); + version = axo.GetVariable("$version"); + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 3.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); + version = "WIN 3,0,18,0"; + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 2.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); + version = "WIN 2,0,0,11"; + } catch (e) { + version = -1; + } + } + + return version; +} + +// JavaScript helper required to detect Flash Player PlugIn version information +function GetSwfVer(){ + // NS/Opera version >= 3 check for Flash plugin in plugin array + var flashVer = -1; + + if (navigator.plugins != null && navigator.plugins.length > 0) { + if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) { + var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : ""; + var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description; + var descArray = flashDescription.split(" "); + var tempArrayMajor = descArray[2].split("."); + var versionMajor = tempArrayMajor[0]; + var versionMinor = tempArrayMajor[1]; + var versionRevision = descArray[3]; + if (versionRevision == "") { + versionRevision = descArray[4]; + } + if (versionRevision[0] == "d") { + versionRevision = versionRevision.substring(1); + } else if (versionRevision[0] == "r") { + versionRevision = versionRevision.substring(1); + if (versionRevision.indexOf("d") > 0) { + versionRevision = versionRevision.substring(0, versionRevision.indexOf("d")); + } + } else if (versionRevision[0] == "b") { + versionRevision = versionRevision.substring(1); + } + var flashVer = versionMajor + "." + versionMinor + "." + versionRevision; + } + } + // MSN/WebTV 2.6 supports Flash 4 + else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4; + // WebTV 2.5 supports Flash 3 + else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3; + // older WebTV supports Flash 2 + else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2; + else if ( isIE && isWin && !isOpera ) { + flashVer = ControlVersion(); + } + return flashVer; +} + +// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available +function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) +{ + versionStr = GetSwfVer(); + if (versionStr == -1 ) { + return false; + } else if (versionStr != 0) { + if(isIE && isWin && !isOpera) { + // Given "WIN 2,0,0,11" + tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"] + tempString = tempArray[1]; // "2,0,0,11" + versionArray = tempString.split(","); // ['2', '0', '0', '11'] + } else { + versionArray = versionStr.split("."); + } + var versionMajor = versionArray[0]; + var versionMinor = versionArray[1]; + var versionRevision = versionArray[2]; + + // is the major.revision >= requested major.revision AND the minor version >= requested minor + if (versionMajor > parseFloat(reqMajorVer)) { + return true; + } else if (versionMajor == parseFloat(reqMajorVer)) { + if (versionMinor > parseFloat(reqMinorVer)) + return true; + else if (versionMinor == parseFloat(reqMinorVer)) { + if (versionRevision >= parseFloat(reqRevision)) + return true; + } + } + return false; + } +} + +function AC_AddExtension(src, ext) +{ + var qIndex = src.indexOf('?'); + if ( qIndex != -1) + { + // Add the extention (if needed) before the query params + var path = src.substring(0, qIndex); + if (path.length >= ext.length && path.lastIndexOf(ext) == (path.length - ext.length)) + return src; + else + return src.replace(/\?/, ext+'?'); + } + else + { + // Add the extension (if needed) to the end of the URL + if (src.length >= ext.length && src.lastIndexOf(ext) == (src.length - ext.length)) + return src; // Already have extension + else + return src + ext; + } +} + +function AC_Generateobj(objAttrs, params, embedAttrs) +{ + var str = ''; + if (isIE && isWin && !isOpera) + { + str += ' '; + str += ''; + } else { + str += ' 0 && typeof o[0].SetVariable != "undefined") { + return o[0]; + } + else if (e.length > 0 && typeof e[0].SetVariable != "undefined") { + return e[0]; + } + } + } + else { + var o = document.getElementsByTagName("object"); + var e = document.getElementsByTagName("embed"); + if (e.length > 0 && typeof e[0].SetVariable != "undefined") { + return e[0]; + } + else if (o.length > 0 && typeof o[0].SetVariable != "undefined") { + return o[0]; + } + else if (o.length > 1 && typeof o[1].SetVariable != "undefined") { + return o[1]; + } + } + return undefined; + } + + function getPlayers() { + var players = []; + if (players.length == 0) { + var tmp = document.getElementsByTagName('object'); + players = tmp; + } + + if (players.length == 0 || players[0].object == null) { + var tmp = document.getElementsByTagName('embed'); + players = tmp; + } + return players; + } + + function getIframeHash() { + var doc = getHistoryFrame().contentWindow.document; + var hash = String(doc.location.search); + if (hash.length == 1 && hash.charAt(0) == "?") { + hash = ""; + } + else if (hash.length >= 2 && hash.charAt(0) == "?") { + hash = hash.substring(1); + } + return hash; + } + + /* Get the current location hash excluding the '#' symbol. */ + function getHash() { + // It would be nice if we could use document.location.hash here, + // but it's faulty sometimes. + var idx = document.location.href.indexOf('#'); + return (idx >= 0) ? document.location.href.substr(idx+1) : ''; + } + + /* Get the current location hash excluding the '#' symbol. */ + function setHash(hash) { + // It would be nice if we could use document.location.hash here, + // but it's faulty sometimes. + if (hash == '') hash = '#' + document.location.hash = hash; + } + + function createState(baseUrl, newUrl, flexAppUrl) { + return { 'baseUrl': baseUrl, 'newUrl': newUrl, 'flexAppUrl': flexAppUrl, 'title': null }; + } + + /* Add a history entry to the browser. + * baseUrl: the portion of the location prior to the '#' + * newUrl: the entire new URL, including '#' and following fragment + * flexAppUrl: the portion of the location following the '#' only + */ + function addHistoryEntry(baseUrl, newUrl, flexAppUrl) { + + //delete all the history entries + forwardStack = []; + + if (browser.ie) { + //Check to see if we are being asked to do a navigate for the first + //history entry, and if so ignore, because it's coming from the creation + //of the history iframe + if (flexAppUrl == defaultHash && document.location.href == initialHref && window['_ie_firstload']) { + currentHref = initialHref; + return; + } + if ((!flexAppUrl || flexAppUrl == defaultHash) && window['_ie_firstload']) { + newUrl = baseUrl + '#' + defaultHash; + flexAppUrl = defaultHash; + } else { + // for IE, tell the history frame to go somewhere without a '#' + // in order to get this entry into the browser history. + getHistoryFrame().src = historyFrameSourcePrefix + flexAppUrl; + } + setHash(flexAppUrl); + } else { + + //ADR + if (backStack.length == 0 && initialState.flexAppUrl == flexAppUrl) { + initialState = createState(baseUrl, newUrl, flexAppUrl); + } else if(backStack.length > 0 && backStack[backStack.length - 1].flexAppUrl == flexAppUrl) { + backStack[backStack.length - 1] = createState(baseUrl, newUrl, flexAppUrl); + } + + if (browser.safari) { + // for Safari, submit a form whose action points to the desired URL + if (browser.version <= 419.3) { + var file = window.location.pathname.toString(); + file = file.substring(file.lastIndexOf("/")+1); + getFormElement().innerHTML = '
    '; + //get the current elements and add them to the form + var qs = window.location.search.substring(1); + var qs_arr = qs.split("&"); + for (var i = 0; i < qs_arr.length; i++) { + var tmp = qs_arr[i].split("="); + var elem = document.createElement("input"); + elem.type = "hidden"; + elem.name = tmp[0]; + elem.value = tmp[1]; + document.forms.historyForm.appendChild(elem); + } + document.forms.historyForm.submit(); + } else { + top.location.hash = flexAppUrl; + } + // We also have to maintain the history by hand for Safari + historyHash[history.length] = flexAppUrl; + _storeStates(); + } else { + // Otherwise, write an anchor into the page and tell the browser to go there + addAnchor(flexAppUrl); + setHash(flexAppUrl); + } + } + backStack.push(createState(baseUrl, newUrl, flexAppUrl)); + } + + function _storeStates() { + if (browser.safari) { + getRememberElement().value = historyHash.join(","); + } + } + + function handleBackButton() { + //The "current" page is always at the top of the history stack. + var current = backStack.pop(); + if (!current) { return; } + var last = backStack[backStack.length - 1]; + if (!last && backStack.length == 0){ + last = initialState; + } + forwardStack.push(current); + } + + function handleForwardButton() { + //summary: private method. Do not call this directly. + + var last = forwardStack.pop(); + if (!last) { return; } + backStack.push(last); + } + + function handleArbitraryUrl() { + //delete all the history entries + forwardStack = []; + } + + /* Called periodically to poll to see if we need to detect navigation that has occurred */ + function checkForUrlChange() { + + if (browser.ie) { + if (currentHref != document.location.href && currentHref + '#' != document.location.href) { + //This occurs when the user has navigated to a specific URL + //within the app, and didn't use browser back/forward + //IE seems to have a bug where it stops updating the URL it + //shows the end-user at this point, but programatically it + //appears to be correct. Do a full app reload to get around + //this issue. + if (browser.version < 7) { + currentHref = document.location.href; + document.location.reload(); + } else { + if (getHash() != getIframeHash()) { + // this.iframe.src = this.blankURL + hash; + var sourceToSet = historyFrameSourcePrefix + getHash(); + getHistoryFrame().src = sourceToSet; + } + } + } + } + + if (browser.safari) { + // For Safari, we have to check to see if history.length changed. + if (currentHistoryLength >= 0 && history.length != currentHistoryLength) { + //alert("did change: " + history.length + ", " + historyHash.length + "|" + historyHash[history.length] + "|>" + historyHash.join("|")); + // If it did change, then we have to look the old state up + // in our hand-maintained array since document.location.hash + // won't have changed, then call back into BrowserManager. + currentHistoryLength = history.length; + var flexAppUrl = historyHash[currentHistoryLength]; + if (flexAppUrl == '') { + //flexAppUrl = defaultHash; + } + //ADR: to fix multiple + if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) { + var pl = getPlayers(); + for (var i = 0; i < pl.length; i++) { + pl[i].browserURLChange(flexAppUrl); + } + } else { + getPlayer().browserURLChange(flexAppUrl); + } + _storeStates(); + } + } + if (browser.firefox) { + if (currentHref != document.location.href) { + var bsl = backStack.length; + + var urlActions = { + back: false, + forward: false, + set: false + } + + if ((window.location.hash == initialHash || window.location.href == initialHref) && (bsl == 1)) { + urlActions.back = true; + // FIXME: could this ever be a forward button? + // we can't clear it because we still need to check for forwards. Ugg. + // clearInterval(this.locationTimer); + handleBackButton(); + } + + // first check to see if we could have gone forward. We always halt on + // a no-hash item. + if (forwardStack.length > 0) { + if (forwardStack[forwardStack.length-1].flexAppUrl == getHash()) { + urlActions.forward = true; + handleForwardButton(); + } + } + + // ok, that didn't work, try someplace back in the history stack + if ((bsl >= 2) && (backStack[bsl - 2])) { + if (backStack[bsl - 2].flexAppUrl == getHash()) { + urlActions.back = true; + handleBackButton(); + } + } + + if (!urlActions.back && !urlActions.forward) { + var foundInStacks = { + back: -1, + forward: -1 + } + + for (var i = 0; i < backStack.length; i++) { + if (backStack[i].flexAppUrl == getHash() && i != (bsl - 2)) { + arbitraryUrl = true; + foundInStacks.back = i; + } + } + for (var i = 0; i < forwardStack.length; i++) { + if (forwardStack[i].flexAppUrl == getHash() && i != (bsl - 2)) { + arbitraryUrl = true; + foundInStacks.forward = i; + } + } + handleArbitraryUrl(); + } + + // Firefox changed; do a callback into BrowserManager to tell it. + currentHref = document.location.href; + var flexAppUrl = getHash(); + if (flexAppUrl == '') { + //flexAppUrl = defaultHash; + } + //ADR: to fix multiple + if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) { + var pl = getPlayers(); + for (var i = 0; i < pl.length; i++) { + pl[i].browserURLChange(flexAppUrl); + } + } else { + getPlayer().browserURLChange(flexAppUrl); + } + } + } + //setTimeout(checkForUrlChange, 50); + } + + /* Write an anchor into the page to legitimize it as a URL for Firefox et al. */ + function addAnchor(flexAppUrl) + { + if (document.getElementsByName(flexAppUrl).length == 0) { + getAnchorElement().innerHTML += "" + flexAppUrl + ""; + } + } + + var _initialize = function () { + if (browser.ie) + { + var scripts = document.getElementsByTagName('script'); + for (var i = 0, s; s = scripts[i]; i++) { + if (s.src.indexOf("history.js") > -1) { + var iframe_location = (new String(s.src)).replace("history.js", "historyFrame.html"); + } + } + historyFrameSourcePrefix = iframe_location + "?"; + var src = historyFrameSourcePrefix; + + var iframe = document.createElement("iframe"); + iframe.id = 'ie_historyFrame'; + iframe.name = 'ie_historyFrame'; + //iframe.src = historyFrameSourcePrefix; + try { + document.body.appendChild(iframe); + } catch(e) { + setTimeout(function() { + document.body.appendChild(iframe); + }, 0); + } + } + + if (browser.safari) + { + var rememberDiv = document.createElement("div"); + rememberDiv.id = 'safari_rememberDiv'; + document.body.appendChild(rememberDiv); + rememberDiv.innerHTML = ''; + + var formDiv = document.createElement("div"); + formDiv.id = 'safari_formDiv'; + document.body.appendChild(formDiv); + + var reloader_content = document.createElement('div'); + reloader_content.id = 'safarireloader'; + var scripts = document.getElementsByTagName('script'); + for (var i = 0, s; s = scripts[i]; i++) { + if (s.src.indexOf("history.js") > -1) { + html = (new String(s.src)).replace(".js", ".html"); + } + } + reloader_content.innerHTML = ''; + document.body.appendChild(reloader_content); + reloader_content.style.position = 'absolute'; + reloader_content.style.left = reloader_content.style.top = '-9999px'; + iframe = reloader_content.getElementsByTagName('iframe')[0]; + + if (document.getElementById("safari_remember_field").value != "" ) { + historyHash = document.getElementById("safari_remember_field").value.split(","); + } + + } + + if (browser.firefox) + { + var anchorDiv = document.createElement("div"); + anchorDiv.id = 'firefox_anchorDiv'; + document.body.appendChild(anchorDiv); + } + + //setTimeout(checkForUrlChange, 50); + } + + return { + historyHash: historyHash, + backStack: function() { return backStack; }, + forwardStack: function() { return forwardStack }, + getPlayer: getPlayer, + initialize: function(src) { + _initialize(src); + }, + setURL: function(url) { + document.location.href = url; + }, + getURL: function() { + return document.location.href; + }, + getTitle: function() { + return document.title; + }, + setTitle: function(title) { + try { + backStack[backStack.length - 1].title = title; + } catch(e) { } + //if on safari, set the title to be the empty string. + if (browser.safari) { + if (title == "") { + try { + var tmp = window.location.href.toString(); + title = tmp.substring((tmp.lastIndexOf("/")+1), tmp.lastIndexOf("#")); + } catch(e) { + title = ""; + } + } + } + document.title = title; + }, + setDefaultURL: function(def) + { + defaultHash = def; + def = getHash(); + //trailing ? is important else an extra frame gets added to the history + //when navigating back to the first page. Alternatively could check + //in history frame navigation to compare # and ?. + if (browser.ie) + { + window['_ie_firstload'] = true; + var sourceToSet = historyFrameSourcePrefix + def; + var func = function() { + getHistoryFrame().src = sourceToSet; + window.location.replace("#" + def); + setInterval(checkForUrlChange, 50); + } + try { + func(); + } catch(e) { + window.setTimeout(function() { func(); }, 0); + } + } + + if (browser.safari) + { + currentHistoryLength = history.length; + if (historyHash.length == 0) { + historyHash[currentHistoryLength] = def; + var newloc = "#" + def; + window.location.replace(newloc); + } else { + //alert(historyHash[historyHash.length-1]); + } + //setHash(def); + setInterval(checkForUrlChange, 50); + } + + + if (browser.firefox || browser.opera) + { + var reg = new RegExp("#" + def + "$"); + if (window.location.toString().match(reg)) { + } else { + var newloc ="#" + def; + window.location.replace(newloc); + } + setInterval(checkForUrlChange, 50); + //setHash(def); + } + + }, + + /* Set the current browser URL; called from inside BrowserManager to propagate + * the application state out to the container. + */ + setBrowserURL: function(flexAppUrl, objectId) { + if (browser.ie && typeof objectId != "undefined") { + currentObjectId = objectId; + } + //fromIframe = fromIframe || false; + //fromFlex = fromFlex || false; + //alert("setBrowserURL: " + flexAppUrl); + //flexAppUrl = (flexAppUrl == "") ? defaultHash : flexAppUrl ; + + var pos = document.location.href.indexOf('#'); + var baseUrl = pos != -1 ? document.location.href.substr(0, pos) : document.location.href; + var newUrl = baseUrl + '#' + flexAppUrl; + + if (document.location.href != newUrl && document.location.href + '#' != newUrl) { + currentHref = newUrl; + addHistoryEntry(baseUrl, newUrl, flexAppUrl); + currentHistoryLength = history.length; + } + + return false; + }, + + browserURLChange: function(flexAppUrl) { + var objectId = null; + if (browser.ie && currentObjectId != null) { + objectId = currentObjectId; + } + pendingURL = ''; + + if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) { + var pl = getPlayers(); + for (var i = 0; i < pl.length; i++) { + try { + pl[i].browserURLChange(flexAppUrl); + } catch(e) { } + } + } else { + try { + getPlayer(objectId).browserURLChange(flexAppUrl); + } catch(e) { } + } + + currentObjectId = null; + } + + } + +})(); + +// Initialization + +// Automated unit testing and other diagnostics + +function setURL(url) +{ + document.location.href = url; +} + +function backButton() +{ + history.back(); +} + +function forwardButton() +{ + history.forward(); +} + +function goForwardOrBackInHistory(step) +{ + history.go(step); +} + +//BrowserHistoryUtils.addEvent(window, "load", function() { BrowserHistory.initialize(); }); +(function(i) { + var u =navigator.userAgent;var e=/*@cc_on!@*/false; + var st = setTimeout; + if(/webkit/i.test(u)){ + st(function(){ + var dr=document.readyState; + if(dr=="loaded"||dr=="complete"){i()} + else{st(arguments.callee,10);}},10); + } else if((/mozilla/i.test(u)&&!/(compati)/.test(u)) || (/opera/i.test(u))){ + document.addEventListener("DOMContentLoaded",i,false); + } else if(e){ + (function(){ + var t=document.createElement('doc:rdy'); + try{t.doScroll('left'); + i();t=null; + }catch(e){st(arguments.callee,0);}})(); + } else{ + window.onload=i; + } +})( function() {BrowserHistory.initialize();} ); Index: lams_flex/TimeChart/html-template/history/historyFrame.html =================================================================== diff -u --- lams_flex/TimeChart/html-template/history/historyFrame.html (revision 0) +++ lams_flex/TimeChart/html-template/history/historyFrame.html (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,29 @@ + + + + + + + + Hidden frame for Browser History support. + + Index: lams_flex/TimeChart/html-template/index.template.html =================================================================== diff -u --- lams_flex/TimeChart/html-template/index.template.html (revision 0) +++ lams_flex/TimeChart/html-template/index.template.html (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,121 @@ + + + + + + + + + + + + +${title} + + + + + + + + + + + + + + + Index: lams_flex/TimeChart/html-template/playerProductInstall.swf =================================================================== diff -u Binary files differ Index: lams_flex/TimeChart/src/TimeChart.mxml =================================================================== diff -u --- lams_flex/TimeChart/src/TimeChart.mxml (revision 0) +++ lams_flex/TimeChart/src/TimeChart.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: lams_flex/TimeChart/src/assets/styles/main.css =================================================================== diff -u --- lams_flex/TimeChart/src/assets/styles/main.css (revision 0) +++ lams_flex/TimeChart/src/assets/styles/main.css (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,72 @@ +/* CSS file */ +Application { + backgroundColor: #FFFFFF; + themeColor: #0087e5; + backgroundGradientAlphas: 1.0, 1.0; + backgroundGradientColors: #FFFFFF, #FFFFFF; +} + +Alert { + backgroundColor: #FFFFFF; + color: #000000; +} + + +Panel { + borderColor: #45a6ed; + borderThicknessLeft: 1; + borderThicknessRight: 1; + borderThicknessBottom: 1; + borderAlpha: 1; + + paddingTop: 0; + paddingLeft: 0; + paddingRight: 0; + paddingBottom: 0; + + highlightAlphas: 0.67, 0; + headerColors: #45a6ed, #0087e5; + + titleStyleName: "myPanelStyle"; +} + +MainUI { + horizontalAlign : center; +} + +.mainBody { + backgroundColor: #FFFFFF; + paddingTop: 20; + horizontalAlign : center; +} + +Form, Label, TextInput { + color: #000000; + font-weight: normal; +} + +FormItem, List { + font-weight: bold; + text-align: left; +} + +.myPanelStyle { + color: #FFFFFF; +} + +.panelText { + color: #000000; + font-weight: none; + text-align: left; +} + +/* +ToggleButtonBar { + selectedButtonTextStyleName: "selectedButtonStyle"; +} + + +.selectedButtonStyle { + color: #45a6ed +} +*/ \ No newline at end of file Index: lams_flex/TimeChart/src/org/lamsfoundation/lams/business/ChartManager.as =================================================================== diff -u --- lams_flex/TimeChart/src/org/lamsfoundation/lams/business/ChartManager.as (revision 0) +++ lams_flex/TimeChart/src/org/lamsfoundation/lams/business/ChartManager.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,191 @@ +package org.lamsfoundation.lams.business +{ + import flash.events.Event; + import flash.events.EventDispatcher; + + import mx.collections.ArrayCollection; + + import org.lamsfoundation.lams.common.dictionary.XMLDictionaryRegistry; + import org.lamsfoundation.lams.events.DictionaryEvent; + import org.lamsfoundation.lams.vos.CompletedActivity; + import org.lamsfoundation.lams.vos.LearnerProgress; + + public class ChartManager extends EventDispatcher + { + /*-.........................................Properties..........................................*/ + private var _progressList:ArrayCollection; + + private var _averageProgress:ArrayCollection; + private var _targetFilterActivity:Number; + + private var _learnerProgress:LearnerProgress; + + private var _settings:Array; + private var _loadType:String; + + private var _dictionaryRegistry:XMLDictionaryRegistry; + + /*-.........................................Constructor..........................................*/ + public function ChartManager() + { + _dictionaryRegistry = new XMLDictionaryRegistry(new XML()); + _averageProgress = new ArrayCollection(); + } + + /*-.........................................Setters and Getters..........................................*/ + + [Bindable (event="learnerProgressListChanged")] + public function get progressList():ArrayCollection + { + return _progressList; + } + + [Bindable (event="averageProgressListChanged")] + public function get averageProgress():ArrayCollection + { + return _averageProgress; + } + + [Bindable (event="learnerProgressChanged")] + public function get learnerProgress():LearnerProgress + { + return _learnerProgress; + } + + [Bindable (event="dictionaryUpdated")] + public function get dictionaryRegistry():XMLDictionaryRegistry + { + return _dictionaryRegistry; + } + + public function get loadType():String + { + return _loadType; + } + + public function setDictionary(xml:XML):void { + _dictionaryRegistry.xml = xml; + + dispatchEvent(new Event("dictionaryUpdated")); + } + + /*-.........................................Methods..........................................*/ + + // ----------------------------------------------------------- + public function updateProgressList(progressList:ArrayCollection):void { + this._progressList = progressList; + + doAverage(); + + dispatchEvent(new Event('learnerProgressListChanged')); + + + } + + public function doAverage():void { + var average:ArrayCollection = new ArrayCollection(); + averageFilter(average); + + + // create data objects for completed activity and calculate average + for each(var learnerProgress:LearnerProgress in this._progressList) { + var c_count:int = 0; + trace('progress user: ' + learnerProgress.learner_username); + for each(var completedActivity:CompletedActivity in learnerProgress.completedActivities) { + completedActivity.createDataObject(learnerProgress); + + updateAverage(completedActivity, average); + + c_count++; + } + } + + trace('updated progress list: ' + progressList.length); + + clearAverageFilter(average); + + trace('average list: ' + _averageProgress.length); + _averageProgress = average; + dispatchEvent(new Event('averageProgressListChanged')); + + } + + private function updateAverage(completedActivity:CompletedActivity, average:ArrayCollection):void { + _targetFilterActivity = completedActivity.aid; + average.refresh(); + + if(average.length > 0) { + var item:Object = average.getItemAt(0); + + item.Completed = (item.Completed + completedActivity.dataObject.Completed)/2; + + item.Duration = (item.Duration + completedActivity.dataObject.Duration)/2; + + trace('updating... avg (' + item.Duration + ')'); + } else { + var itemObj:Object = completedActivity.cloneDataObject("average"); + itemObj.Average = true; + + trace('adding... avg(' + itemObj.Duration + ')'); + + average.addItem(itemObj); + } + } + + // ----------- filters ----------------------------- + private function averageFilter(average:ArrayCollection):void { + average.filterFunction = calculateAverage; + average.refresh(); + } + + private function clearAverageFilter(average:ArrayCollection):void { + _targetFilterActivity = -1; + average.filterFunction = null; + average.refresh(); + } + + private function calculateAverage(item:Object):Boolean { + if(_targetFilterActivity == -1) + return true; + else if(item.Activity == _targetFilterActivity) + return true; + else + return false; + } + + // ----------------------------------------------------------- + public function showLearnerProgress(learnerProgress:LearnerProgress):void { + this._learnerProgress = learnerProgress; + dispatchEvent(new Event('learnerProgressChanged')); + } + + public function loadChartSettings(settings:Array):void { + this._settings = settings; + dispatchEvent(new Event('chartSettingsChanged')); + } + + public function loadChartData(data:Object, type:String):void { + var _newProgress:ArrayCollection = new ArrayCollection(); + + _loadType = type; + + for each(var learnerProgress:Object in data) + _newProgress.addItem(createNewProgress(learnerProgress)); + + updateProgressList(_newProgress); + + } + + private function createNewProgress(newLearnerProgress:Object):LearnerProgress { + var _newLearnerProgress:LearnerProgress = new LearnerProgress(newLearnerProgress); + + for each(var completedActivity:Object in newLearnerProgress.completedActivities) { + var _completedActivity:CompletedActivity = new CompletedActivity(completedActivity); + _newLearnerProgress.addCompletedActivity(_completedActivity); + } + + return _newLearnerProgress; + + } + } +} \ No newline at end of file Index: lams_flex/TimeChart/src/org/lamsfoundation/lams/business/SearchManager.as =================================================================== diff -u --- lams_flex/TimeChart/src/org/lamsfoundation/lams/business/SearchManager.as (revision 0) +++ lams_flex/TimeChart/src/org/lamsfoundation/lams/business/SearchManager.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,55 @@ +package org.lamsfoundation.lams.business +{ + import flash.events.EventDispatcher; + import flash.events.Event; + + import mx.collections.ArrayCollection; + + import org.lamsfoundation.lams.events.*; + import org.lamsfoundation.lams.vos.Search; + + + public class SearchManager extends EventDispatcher + { + /*-.........................................Properties..........................................*/ + private var learnerProgress:ArrayCollection; + + /*-.........................................Constructor..........................................*/ + public function SearchManager() + { + } + + [Bindable (event="resultsUpdated")] + public function get results():ArrayCollection { + return learnerProgress; + } + + /*-.........................................Methods..........................................*/ + + public function search(query:Search):ArrayCollection { + // load results from Search query + var results:ArrayCollection = new ArrayCollection(); + + trace("search query..."); + if(query != null) { + // call search service + //for each( var completedAct:ComplexActivity in ) { + // if completedAct datetime match query conditions + // add to results + //} + + trace("received query..."); + } + + learnerProgress = results; + dispatchEvent(new Event('resultsUpdated')); + + return this.results; + } + + public function clearResults():void { + if(learnerProgress.length > 0) + learnerProgress.removeAll(); + } + } +} \ No newline at end of file Index: lams_flex/TimeChart/src/org/lamsfoundation/lams/events/ChartErrorEvent.as =================================================================== diff -u --- lams_flex/TimeChart/src/org/lamsfoundation/lams/events/ChartErrorEvent.as (revision 0) +++ lams_flex/TimeChart/src/org/lamsfoundation/lams/events/ChartErrorEvent.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,22 @@ +package org.lamsfoundation.lams.events +{ + import flash.events.Event; + + public class ChartErrorEvent extends Event + { + /*-.........................................Constants..........................................*/ + + public static const SHOW_ERROR:String = "showErrorEvent"; + + + /*-.........................................Properties..........................................*/ + public var message:String; + /*-.........................................Constructor..........................................*/ + + public function ChartErrorEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false) + { + super(type, bubbles, cancelable); + } + + } +} \ No newline at end of file Index: lams_flex/TimeChart/src/org/lamsfoundation/lams/events/ChartEvent.as =================================================================== diff -u --- lams_flex/TimeChart/src/org/lamsfoundation/lams/events/ChartEvent.as (revision 0) +++ lams_flex/TimeChart/src/org/lamsfoundation/lams/events/ChartEvent.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,48 @@ +package org.lamsfoundation.lams.events +{ + import flash.events.Event; + + import mx.collections.ArrayCollection; + import mx.core.Application; + + import org.lamsfoundation.lams.vos.LearnerProgress; + + public class ChartEvent extends Event + { + /*-.........................................Constants..........................................*/ + + public static const UPDATE: String = "updateLearnerProgressEvent"; + public static const SELECT: String = "showLearnerProgressEvent"; + + public static const LOAD: String = "loadLearnerProgressEvent"; + public static const LOAD_LEARNER: String = "loadLearnerProgressSingleEvent"; + public static const LOAD_CLASS: String = "loadLearnerProgressAllEvent"; + + /*-.........................................Properties..........................................*/ + public var learnerProgressList:ArrayCollection; + public var learnerProgress:LearnerProgress; + + public var lessonID:Number; + public var learnerID:Number; + + /*-.........................................Constructor..........................................*/ + + public function ChartEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false) + { + lessonID = Application.application.parameters.lessonID; + learnerID = Application.application.parameters.learnerID; + + // determine if we are loading chart data for class or a single learner + if(type == LOAD) { + if(lessonID && learnerID) + type = LOAD_LEARNER; + else + type = LOAD_CLASS; + } + + super(type, bubbles, cancelable); + + } + + } +} \ No newline at end of file Index: lams_flex/TimeChart/src/org/lamsfoundation/lams/events/DictionaryEvent.as =================================================================== diff -u --- lams_flex/TimeChart/src/org/lamsfoundation/lams/events/DictionaryEvent.as (revision 0) +++ lams_flex/TimeChart/src/org/lamsfoundation/lams/events/DictionaryEvent.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,25 @@ +package org.lamsfoundation.lams.events +{ + import flash.events.Event; + + public class DictionaryEvent extends Event + { + /*-.........................................Constants..........................................*/ + + public static const GET: String = "getEvent"; + public static const UPDATE: String = "updateEvent"; + + + /*-.........................................Properties..........................................*/ + public var labelKey:String; + public var result:String; + + /*-.........................................Constructor..........................................*/ + + public function DictionaryEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false) + { + super(type, bubbles, cancelable); + } + + } +} \ No newline at end of file Index: lams_flex/TimeChart/src/org/lamsfoundation/lams/events/NavigationEvent.as =================================================================== diff -u --- lams_flex/TimeChart/src/org/lamsfoundation/lams/events/NavigationEvent.as (revision 0) +++ lams_flex/TimeChart/src/org/lamsfoundation/lams/events/NavigationEvent.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,20 @@ +package org.lamsfoundation.lams.events +{ + import org.lamsfoundation.lams.vos.*; + + import flash.events.Event; + + public class NavigationEvent extends Event + { + /*-.........................................Constants..........................................*/ + + public static const CHART: String = "chartNavigationEvent" + + /*-.........................................Constructor..........................................*/ + public function NavigationEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false) + { + super(type, bubbles, cancelable); + } + + } +} \ No newline at end of file Index: lams_flex/TimeChart/src/org/lamsfoundation/lams/maps/MainEventMap.mxml =================================================================== diff -u --- lams_flex/TimeChart/src/org/lamsfoundation/lams/maps/MainEventMap.mxml (revision 0) +++ lams_flex/TimeChart/src/org/lamsfoundation/lams/maps/MainEventMap.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_flex/TimeChart/src/org/lamsfoundation/lams/maps/ModelMap.mxml =================================================================== diff -u --- lams_flex/TimeChart/src/org/lamsfoundation/lams/maps/ModelMap.mxml (revision 0) +++ lams_flex/TimeChart/src/org/lamsfoundation/lams/maps/ModelMap.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + Index: lams_flex/TimeChart/src/org/lamsfoundation/lams/views/Chart.mxml =================================================================== diff -u --- lams_flex/TimeChart/src/org/lamsfoundation/lams/views/Chart.mxml (revision 0) +++ lams_flex/TimeChart/src/org/lamsfoundation/lams/views/Chart.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: lams_flex/TimeChart/src/org/lamsfoundation/lams/views/Chart_eventHandlers.as =================================================================== diff -u --- lams_flex/TimeChart/src/org/lamsfoundation/lams/views/Chart_eventHandlers.as (revision 0) +++ lams_flex/TimeChart/src/org/lamsfoundation/lams/views/Chart_eventHandlers.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,67 @@ +/** Event handler functions for Chart.mxml **/ +import flash.events.Event; + + private function chartControlHandler(event:ItemClickEvent):void { + chartViews.selectedIndex = (event.index == 0) ? LEARNER : CLASS; + } + + private function dataLearnerPlot(cat:mx.charts.CategoryAxis, item:Object):Object { + return item.Activity; + } + + private function labelLinAxis(item:Number, prevValue:Number, axis:IAxis):Object { + var value:Number = item/60; + return value.toFixed(1); + } + + private function labelLearnerPlot(categoryValue:Object, previousCategoryValue:Object, axis:CategoryAxis, categoryItem:Object):String { + return categoryItem.Title; + } + + private function learnerPlotDataTrip(hd:HitData):String { + + var formatStr:String = "" + hd.item.Title + ""; + + formatStr += " " + dictionary.getLabel("label.completed") + "
    " + formatTime(hd.item.Completed); + if(hd.item.Average) formatStr += "
    " + dictionary.getLabel("chart.learner.datatip.average") + ""; + + return formatStr; + } + + public function learnerPieDataTip(hd:HitData):String { + var formatStr:String = "" + hd.item.Title + ": " + + Math.round(Number(PieSeriesItem(hd.chartItem).percentValue)) + + "%
    " + + "("; + var duration:uint = hd.item.Duration; + formatStr += formatTime(duration) + ")"; + + return formatStr; + } + + public function clearSearch(event:Event):void { + event.currentTarget.text = ""; + learnerProgressData.refresh(); + } + + public function applyFilter():void { + + if(learnerProgressData.length > 0) + learnerProgressData.filterFunction = searchLearners; + + selectedLearner_cmb.selectedIndex = 0; + selectedLearner_cmb.selectedItem = null; + + learnerProgressData.refresh(); + + //trace('applying filter: ' + learnerProgressData.length); + + var idx:int = learnerProgressData.getItemIndex(selectedLearnerProgress); + + if(idx >= 0) + selectedLearner_cmb.selectedIndex = idx; + else if(learnerProgressData.length > 0) { + selectedLearner_cmb.selectedIndex = 1; + selectLearner(selectedLearner_cmb.selectedItem); + } + } \ No newline at end of file Index: lams_flex/TimeChart/src/org/lamsfoundation/lams/views/Chart_functions.as =================================================================== diff -u --- lams_flex/TimeChart/src/org/lamsfoundation/lams/views/Chart_functions.as (revision 0) +++ lams_flex/TimeChart/src/org/lamsfoundation/lams/views/Chart_functions.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,121 @@ +/** General functions for Chart.mxml **/ +import flash.events.Event; + +import mx.collections.ArrayCollection; +import mx.controls.Alert; +import mx.core.Application; + +import org.lamsfoundation.lams.vos.LearnerProgress; + + public function set averageProgressList(averageProgressList:ArrayCollection):void { + _averageProgressList = averageProgressList; + + if(_averageProgressList.length > 0) + //trace('avg first: ' + _averageProgressList.getItemAt(0).Completed); + + if(_averageProgressList.length > 0) + showAverage.enabled = true; + } + + private function getCompletedLabel(categoryValue:Object, previousCategoryValue:Object, axis:CategoryAxis, categoryItem:Object):String + { + return CompletedActivity(categoryValue).title; + } + + public function loadSelectedLearner():void { + var hasCompletedActs:Boolean = false; + + if(learnerProgressData.length > 0) { + + _learnerProgressList = new ArrayCollection(); + + if(selectedLearnerProgress == null) { + selectLearner(learnerProgressData.getItemAt(0)); + return; + } + + chart_lbl.htmlText = "" + dictionary.getLabel("label.learner") + " :: " + selectedLearnerProgress.learner_fname + " " + selectedLearnerProgress.learner_lname + ""; + + if(selectedLearnerProgress.completedActivities.length > 0) + hasCompletedActs = true; + + for each(var cp:CompletedActivity in selectedLearnerProgress.completedActivities) { + _learnerProgressList.addItem(cp.dataObject); + + //trace('adding new c: ' + cp.dataObject.Completed); + //trace('adding new t: ' + cp.dataObject.Title); + //trace('adding new d: ' + cp.dataObject.Duration); + } + + } + + // show error if no data + if(!hasCompletedActs) + mx.controls.Alert.show(dictionary.getLabel("alert.no.learner.data"), dictionary.getLabel("sys.error"), Alert.OK, null, disableApp); + + } + + private function disableApp(event:Event):void { + Application.application.enabled = false; + } + + public function selectActivity(item:Object):void { + } + + private function selectLearner(item:Object):void { + // throw event to load selected learner + var event:ChartEvent = new ChartEvent(ChartEvent.SELECT); + event.learnerProgress = item as LearnerProgress; + + this.dispatchEvent(event); + } + + private function selectLearnerEvent(evt:Event):void { + selectLearner(evt.currentTarget.selectedItem); + } + + private function learnerName(data:Object):String { + return data.learner_fname + " " + data.learner_lname; + } + + /** + * Format Time value + * @param value amount of seconds to be formats to string + * @return formatted time value + **/ + private function formatTime(value:Number):String { + var formatStr:String = ""; + + //Find The Seconds + var Seconds:Number = value%60; + + //Find The Minutes + var Minutes:Number = (value/60); + + //Find The Hours + var Hours:Number = (value/3600); + + if(Hours > 1) { + formatStr += Hours.toFixed(0) + " " + dictionary.getLabel('chart.time.format.hours') + " "; + formatStr += (Minutes - (Math.floor(Hours)*60)).toFixed(1) + + " " + dictionary.getLabel('chart.time.format.minutes') + " "; + } else if(Minutes > 1) formatStr += Minutes.toFixed(1) + " " + dictionary.getLabel('chart.time.format.minutes') + " "; + else formatStr += Seconds + " " + dictionary.getLabel('chart.time.format.seconds'); + + return formatStr; + } + + // filter function for learner search + public function searchLearners(item:Object):Boolean { + var lp:LearnerProgress = item as LearnerProgress; + var name:String = learnerName(lp); + + //trace('searching... : ' + name); + + if(learnerName(lp).search(searchLearner_txt.text) >= 0) + return true; + + return false; + } + + Index: lams_flex/TimeChart/src/org/lamsfoundation/lams/views/MainUI.mxml =================================================================== diff -u --- lams_flex/TimeChart/src/org/lamsfoundation/lams/views/MainUI.mxml (revision 0) +++ lams_flex/TimeChart/src/org/lamsfoundation/lams/views/MainUI.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + Index: lams_flex/TimeChart/src/org/lamsfoundation/lams/vos/CompletedActivity.as =================================================================== diff -u --- lams_flex/TimeChart/src/org/lamsfoundation/lams/vos/CompletedActivity.as (revision 0) +++ lams_flex/TimeChart/src/org/lamsfoundation/lams/vos/CompletedActivity.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,48 @@ +package org.lamsfoundation.lams.vos +{ + + public class CompletedActivity + { + + public var aid:uint; + public var title:String; + + public var start_datetime:Number; + public var completed_datetime:Number; + + public var dataObject:Object + + // constructor + public function CompletedActivity(completedActivity:Object) + { + this.aid = completedActivity.completedActivityId; + this.title = completedActivity.completedActivityTitle; + this.start_datetime = completedActivity.startDateTime; + this.completed_datetime = completedActivity.completedDateTime; + } + + public function createDataObject(learnerProgress:LearnerProgress):void { + var c_started__datetime:Number = (this.start_datetime/1000); + var c_completed__datetime:Number = (this.completed_datetime/1000); + var c_duration:Number = c_completed__datetime - c_started__datetime; + + dataObject = {Learner: learnerProgress.learner_username, + Activity: this.aid, + Title: this.title, + Completed: Math.floor(c_completed__datetime), + Duration: Math.floor(c_duration)}; + + } + + public function cloneDataObject(learner:String):Object { + var dataObj:Object = {Learner: learner, + Activity: this.aid, + Title: this.title, + Completed: this.dataObject.Completed, + Duration: this.dataObject.Duration}; + + return dataObj; + } + + } +} \ No newline at end of file Index: lams_flex/TimeChart/src/org/lamsfoundation/lams/vos/LearnerProgress.as =================================================================== diff -u --- lams_flex/TimeChart/src/org/lamsfoundation/lams/vos/LearnerProgress.as (revision 0) +++ lams_flex/TimeChart/src/org/lamsfoundation/lams/vos/LearnerProgress.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,72 @@ +package org.lamsfoundation.lams.vos +{ + import mx.collections.ArrayCollection; + import mx.collections.Sort; + import mx.collections.SortField; + + public class LearnerProgress + { + public var learner_uid:uint; + public var learner_fname:String; + public var learner_lname:String; + + [Bindable] + public var learner_username:String; + + public var lesson_id:uint; + public var lesson_name:String; + public var lesson_complete:Boolean; + + public var lesson_starttime:Number; + public var learner_starttime:Number; + + [Bindable] + private var completed_activities:ArrayCollection; + + private var sort:Sort; + + // constructor + public function LearnerProgress(learnerProgress:Object) + { + completed_activities = new ArrayCollection(); + + sort = new Sort(); + sort.fields = [new SortField("completed_datetime", false), new SortField("aid", false)]; + + this.learner_uid = learnerProgress.learnerId; + this.learner_fname = learnerProgress.firstName; + this.learner_lname = learnerProgress.lastName; + this.learner_username = learnerProgress.userName; + + this.lesson_id = learnerProgress.lessonId; + this.lesson_name = learnerProgress.lessonName; + this.lesson_complete = learnerProgress.lessonComplete; + this.lesson_starttime = learnerProgress.lessonStartTime; + this.learner_starttime = learnerProgress.learnerStartTime; + } + + public function addCompletedActivity(completedActivity:CompletedActivity):void { + completed_activities.addItem(completedActivity); + } + + public function getCompletedActivity(index:int):CompletedActivity { + return this.completedActivities.getItemAt(index) as CompletedActivity; + } + + public function getNoOfCompletedActivities():int { + return completed_activities.length; + } + + public function get completedActivities():ArrayCollection { + completed_activities.sort = sort; + completed_activities.refresh(); + + return completed_activities; + } + + public function get userName():String { + return learner_username; + } + + } +} \ No newline at end of file Index: lams_flex/TimeChart/src/org/lamsfoundation/lams/vos/Search.as =================================================================== diff -u --- lams_flex/TimeChart/src/org/lamsfoundation/lams/vos/Search.as (revision 0) +++ lams_flex/TimeChart/src/org/lamsfoundation/lams/vos/Search.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,31 @@ +package org.lamsfoundation.lams.vos +{ + import mx.collections.ArrayCollection; + + [Bindable] + public class Search + { + + static public var QUERY_DATE_ACTIVITIES:uint = 0; + static public var QUERY_DATE_LEARNERS:uint = 1; + static public var QUERY_PERIOD_ACTIVITIES:uint = 2; + static public var QUERY_PERIOD_LEARNERS:uint = 3; + + public var query_type:uint; + public var start_date:Date; + public var end_date:Date; + public var duration:Number; + + private var learners:ArrayCollection; + private var activities:ArrayCollection; + + // constructor + public function Search(start_date:Date, end_date:Date, query_type:uint) + { + this.start_date = start_date; + this.end_date = end_date; + this.query_type = query_type; + } + + } +} \ No newline at end of file Index: lams_flex/VideoRecorder/.actionScriptProperties =================================================================== diff -u --- lams_flex/VideoRecorder/.actionScriptProperties (revision 0) +++ lams_flex/VideoRecorder/.actionScriptProperties (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + Index: lams_flex/VideoRecorder/.flexProperties =================================================================== diff -u --- lams_flex/VideoRecorder/.flexProperties (revision 0) +++ lams_flex/VideoRecorder/.flexProperties (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,2 @@ + + Index: lams_flex/VideoRecorder/.project =================================================================== diff -u --- lams_flex/VideoRecorder/.project (revision 0) +++ lams_flex/VideoRecorder/.project (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,25 @@ + + + VideoRecorder + + + + + + com.adobe.flexbuilder.project.flexbuilder + + + + + + com.adobe.flexbuilder.project.flexnature + com.adobe.flexbuilder.project.actionscriptnature + + + + bin-release + 2 + D:/LAMS_HEAD/lams_tool_videorecorder/web/includes/flash + + + Index: lams_flex/VideoRecorder/.settings/org.eclipse.core.resources.prefs =================================================================== diff -u --- lams_flex/VideoRecorder/.settings/org.eclipse.core.resources.prefs (revision 0) +++ lams_flex/VideoRecorder/.settings/org.eclipse.core.resources.prefs (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,3 @@ +#Mon Dec 08 13:55:53 EST 2008 +eclipse.preferences.version=1 +encoding/=utf-8 Index: lams_flex/VideoRecorder/html-template/AC_OETags.js =================================================================== diff -u --- lams_flex/VideoRecorder/html-template/AC_OETags.js (revision 0) +++ lams_flex/VideoRecorder/html-template/AC_OETags.js (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,278 @@ +// Flash Player Version Detection - Rev 1.6 +// Detect Client Browser type +// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved. +var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false; +var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false; +var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false; + +function ControlVersion() +{ + var version; + var axo; + var e; + + // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry + + try { + // version will be set for 7.X or greater players + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); + version = axo.GetVariable("$version"); + } catch (e) { + } + + if (!version) + { + try { + // version will be set for 6.X players only + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); + + // installed player is some revision of 6.0 + // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29, + // so we have to be careful. + + // default to the first public version + version = "WIN 6,0,21,0"; + + // throws if AllowScripAccess does not exist (introduced in 6.0r47) + axo.AllowScriptAccess = "always"; + + // safe to call for 6.0r47 or greater + version = axo.GetVariable("$version"); + + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 4.X or 5.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); + version = axo.GetVariable("$version"); + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 3.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); + version = "WIN 3,0,18,0"; + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 2.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); + version = "WIN 2,0,0,11"; + } catch (e) { + version = -1; + } + } + + return version; +} + +// JavaScript helper required to detect Flash Player PlugIn version information +function GetSwfVer(){ + // NS/Opera version >= 3 check for Flash plugin in plugin array + var flashVer = -1; + + if (navigator.plugins != null && navigator.plugins.length > 0) { + if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) { + var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : ""; + var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description; + var descArray = flashDescription.split(" "); + var tempArrayMajor = descArray[2].split("."); + var versionMajor = tempArrayMajor[0]; + var versionMinor = tempArrayMajor[1]; + var versionRevision = descArray[3]; + if (versionRevision == "") { + versionRevision = descArray[4]; + } + if (versionRevision[0] == "d") { + versionRevision = versionRevision.substring(1); + } else if (versionRevision[0] == "r") { + versionRevision = versionRevision.substring(1); + if (versionRevision.indexOf("d") > 0) { + versionRevision = versionRevision.substring(0, versionRevision.indexOf("d")); + } + } else if (versionRevision[0] == "b") { + versionRevision = versionRevision.substring(1); + } + var flashVer = versionMajor + "." + versionMinor + "." + versionRevision; + } + } + // MSN/WebTV 2.6 supports Flash 4 + else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4; + // WebTV 2.5 supports Flash 3 + else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3; + // older WebTV supports Flash 2 + else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2; + else if ( isIE && isWin && !isOpera ) { + flashVer = ControlVersion(); + } + return flashVer; +} + +// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available +function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) +{ + versionStr = GetSwfVer(); + if (versionStr == -1 ) { + return false; + } else if (versionStr != 0) { + if(isIE && isWin && !isOpera) { + // Given "WIN 2,0,0,11" + tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"] + tempString = tempArray[1]; // "2,0,0,11" + versionArray = tempString.split(","); // ['2', '0', '0', '11'] + } else { + versionArray = versionStr.split("."); + } + var versionMajor = versionArray[0]; + var versionMinor = versionArray[1]; + var versionRevision = versionArray[2]; + + // is the major.revision >= requested major.revision AND the minor version >= requested minor + if (versionMajor > parseFloat(reqMajorVer)) { + return true; + } else if (versionMajor == parseFloat(reqMajorVer)) { + if (versionMinor > parseFloat(reqMinorVer)) + return true; + else if (versionMinor == parseFloat(reqMinorVer)) { + if (versionRevision >= parseFloat(reqRevision)) + return true; + } + } + return false; + } +} + +function AC_AddExtension(src, ext) +{ + if (src.indexOf('?') != -1) + return src.replace(/\?/, ext+'?'); + else + return src + ext; +} + +function AC_Generateobj(objAttrs, params, embedAttrs) +{ + var str = ''; + if (isIE && isWin && !isOpera) + { + str += ' '; + str += ''; + } else { + str += ' 0 && typeof o[0].SetVariable != "undefined") { + return o[0]; + } + else if (e.length > 0 && typeof e[0].SetVariable != "undefined") { + return e[0]; + } + } + } + else { + var o = document.getElementsByTagName("object"); + var e = document.getElementsByTagName("embed"); + if (e.length > 0 && typeof e[0].SetVariable != "undefined") { + return e[0]; + } + else if (o.length > 0 && typeof o[0].SetVariable != "undefined") { + return o[0]; + } + else if (o.length > 1 && typeof o[1].SetVariable != "undefined") { + return o[1]; + } + } + return undefined; + } + + function getPlayers() { + var players = []; + if (players.length == 0) { + var tmp = document.getElementsByTagName('object'); + players = tmp; + } + + if (players.length == 0 || players[0].object == null) { + var tmp = document.getElementsByTagName('embed'); + players = tmp; + } + return players; + } + + function getIframeHash() { + var doc = getHistoryFrame().contentWindow.document; + var hash = String(doc.location.search); + if (hash.length == 1 && hash.charAt(0) == "?") { + hash = ""; + } + else if (hash.length >= 2 && hash.charAt(0) == "?") { + hash = hash.substring(1); + } + return hash; + } + + /* Get the current location hash excluding the '#' symbol. */ + function getHash() { + // It would be nice if we could use document.location.hash here, + // but it's faulty sometimes. + var idx = document.location.href.indexOf('#'); + return (idx >= 0) ? document.location.href.substr(idx+1) : ''; + } + + /* Get the current location hash excluding the '#' symbol. */ + function setHash(hash) { + // It would be nice if we could use document.location.hash here, + // but it's faulty sometimes. + if (hash == '') hash = '#' + document.location.hash = hash; + } + + function createState(baseUrl, newUrl, flexAppUrl) { + return { 'baseUrl': baseUrl, 'newUrl': newUrl, 'flexAppUrl': flexAppUrl, 'title': null }; + } + + /* Add a history entry to the browser. + * baseUrl: the portion of the location prior to the '#' + * newUrl: the entire new URL, including '#' and following fragment + * flexAppUrl: the portion of the location following the '#' only + */ + function addHistoryEntry(baseUrl, newUrl, flexAppUrl) { + + //delete all the history entries + forwardStack = []; + + if (browser.ie) { + //Check to see if we are being asked to do a navigate for the first + //history entry, and if so ignore, because it's coming from the creation + //of the history iframe + if (flexAppUrl == defaultHash && document.location.href == initialHref && window['_ie_firstload']) { + currentHref = initialHref; + return; + } + if ((!flexAppUrl || flexAppUrl == defaultHash) && window['_ie_firstload']) { + newUrl = baseUrl + '#' + defaultHash; + flexAppUrl = defaultHash; + } else { + // for IE, tell the history frame to go somewhere without a '#' + // in order to get this entry into the browser history. + getHistoryFrame().src = historyFrameSourcePrefix + flexAppUrl; + } + setHash(flexAppUrl); + } else { + + //ADR + if (backStack.length == 0 && initialState.flexAppUrl == flexAppUrl) { + initialState = createState(baseUrl, newUrl, flexAppUrl); + } else if(backStack.length > 0 && backStack[backStack.length - 1].flexAppUrl == flexAppUrl) { + backStack[backStack.length - 1] = createState(baseUrl, newUrl, flexAppUrl); + } + + if (browser.safari) { + // for Safari, submit a form whose action points to the desired URL + if (browser.version <= 419.3) { + var file = window.location.pathname.toString(); + file = file.substring(file.lastIndexOf("/")+1); + getFormElement().innerHTML = '
    '; + //get the current elements and add them to the form + var qs = window.location.search.substring(1); + var qs_arr = qs.split("&"); + for (var i = 0; i < qs_arr.length; i++) { + var tmp = qs_arr[i].split("="); + var elem = document.createElement("input"); + elem.type = "hidden"; + elem.name = tmp[0]; + elem.value = tmp[1]; + document.forms.historyForm.appendChild(elem); + } + document.forms.historyForm.submit(); + } else { + top.location.hash = flexAppUrl; + } + // We also have to maintain the history by hand for Safari + historyHash[history.length] = flexAppUrl; + _storeStates(); + } else { + // Otherwise, write an anchor into the page and tell the browser to go there + addAnchor(flexAppUrl); + setHash(flexAppUrl); + } + } + backStack.push(createState(baseUrl, newUrl, flexAppUrl)); + } + + function _storeStates() { + if (browser.safari) { + getRememberElement().value = historyHash.join(","); + } + } + + function handleBackButton() { + //The "current" page is always at the top of the history stack. + var current = backStack.pop(); + if (!current) { return; } + var last = backStack[backStack.length - 1]; + if (!last && backStack.length == 0){ + last = initialState; + } + forwardStack.push(current); + } + + function handleForwardButton() { + //summary: private method. Do not call this directly. + + var last = forwardStack.pop(); + if (!last) { return; } + backStack.push(last); + } + + function handleArbitraryUrl() { + //delete all the history entries + forwardStack = []; + } + + /* Called periodically to poll to see if we need to detect navigation that has occurred */ + function checkForUrlChange() { + + if (browser.ie) { + if (currentHref != document.location.href && currentHref + '#' != document.location.href) { + //This occurs when the user has navigated to a specific URL + //within the app, and didn't use browser back/forward + //IE seems to have a bug where it stops updating the URL it + //shows the end-user at this point, but programatically it + //appears to be correct. Do a full app reload to get around + //this issue. + if (browser.version < 7) { + currentHref = document.location.href; + document.location.reload(); + } else { + if (getHash() != getIframeHash()) { + // this.iframe.src = this.blankURL + hash; + var sourceToSet = historyFrameSourcePrefix + getHash(); + getHistoryFrame().src = sourceToSet; + } + } + } + } + + if (browser.safari) { + // For Safari, we have to check to see if history.length changed. + if (currentHistoryLength >= 0 && history.length != currentHistoryLength) { + //alert("did change: " + history.length + ", " + historyHash.length + "|" + historyHash[history.length] + "|>" + historyHash.join("|")); + // If it did change, then we have to look the old state up + // in our hand-maintained array since document.location.hash + // won't have changed, then call back into BrowserManager. + currentHistoryLength = history.length; + var flexAppUrl = historyHash[currentHistoryLength]; + if (flexAppUrl == '') { + //flexAppUrl = defaultHash; + } + //ADR: to fix multiple + if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) { + var pl = getPlayers(); + for (var i = 0; i < pl.length; i++) { + pl[i].browserURLChange(flexAppUrl); + } + } else { + getPlayer().browserURLChange(flexAppUrl); + } + _storeStates(); + } + } + if (browser.firefox) { + if (currentHref != document.location.href) { + var bsl = backStack.length; + + var urlActions = { + back: false, + forward: false, + set: false + } + + if ((window.location.hash == initialHash || window.location.href == initialHref) && (bsl == 1)) { + urlActions.back = true; + // FIXME: could this ever be a forward button? + // we can't clear it because we still need to check for forwards. Ugg. + // clearInterval(this.locationTimer); + handleBackButton(); + } + + // first check to see if we could have gone forward. We always halt on + // a no-hash item. + if (forwardStack.length > 0) { + if (forwardStack[forwardStack.length-1].flexAppUrl == getHash()) { + urlActions.forward = true; + handleForwardButton(); + } + } + + // ok, that didn't work, try someplace back in the history stack + if ((bsl >= 2) && (backStack[bsl - 2])) { + if (backStack[bsl - 2].flexAppUrl == getHash()) { + urlActions.back = true; + handleBackButton(); + } + } + + if (!urlActions.back && !urlActions.forward) { + var foundInStacks = { + back: -1, + forward: -1 + } + + for (var i = 0; i < backStack.length; i++) { + if (backStack[i].flexAppUrl == getHash() && i != (bsl - 2)) { + arbitraryUrl = true; + foundInStacks.back = i; + } + } + for (var i = 0; i < forwardStack.length; i++) { + if (forwardStack[i].flexAppUrl == getHash() && i != (bsl - 2)) { + arbitraryUrl = true; + foundInStacks.forward = i; + } + } + handleArbitraryUrl(); + } + + // Firefox changed; do a callback into BrowserManager to tell it. + currentHref = document.location.href; + var flexAppUrl = getHash(); + if (flexAppUrl == '') { + //flexAppUrl = defaultHash; + } + //ADR: to fix multiple + if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) { + var pl = getPlayers(); + for (var i = 0; i < pl.length; i++) { + pl[i].browserURLChange(flexAppUrl); + } + } else { + getPlayer().browserURLChange(flexAppUrl); + } + } + } + //setTimeout(checkForUrlChange, 50); + } + + /* Write an anchor into the page to legitimize it as a URL for Firefox et al. */ + function addAnchor(flexAppUrl) + { + if (document.getElementsByName(flexAppUrl).length == 0) { + getAnchorElement().innerHTML += "" + flexAppUrl + ""; + } + } + + var _initialize = function () { + if (browser.ie) + { + var scripts = document.getElementsByTagName('script'); + for (var i = 0, s; s = scripts[i]; i++) { + if (s.src.indexOf("history.js") > -1) { + var iframe_location = (new String(s.src)).replace("history.js", "historyFrame.html"); + } + } + historyFrameSourcePrefix = iframe_location + "?"; + var src = historyFrameSourcePrefix; + + var iframe = document.createElement("iframe"); + iframe.id = 'ie_historyFrame'; + iframe.name = 'ie_historyFrame'; + //iframe.src = historyFrameSourcePrefix; + try { + document.body.appendChild(iframe); + } catch(e) { + setTimeout(function() { + document.body.appendChild(iframe); + }, 0); + } + } + + if (browser.safari) + { + var rememberDiv = document.createElement("div"); + rememberDiv.id = 'safari_rememberDiv'; + document.body.appendChild(rememberDiv); + rememberDiv.innerHTML = ''; + + var formDiv = document.createElement("div"); + formDiv.id = 'safari_formDiv'; + document.body.appendChild(formDiv); + + var reloader_content = document.createElement('div'); + reloader_content.id = 'safarireloader'; + var scripts = document.getElementsByTagName('script'); + for (var i = 0, s; s = scripts[i]; i++) { + if (s.src.indexOf("history.js") > -1) { + html = (new String(s.src)).replace(".js", ".html"); + } + } + reloader_content.innerHTML = ''; + document.body.appendChild(reloader_content); + reloader_content.style.position = 'absolute'; + reloader_content.style.left = reloader_content.style.top = '-9999px'; + iframe = reloader_content.getElementsByTagName('iframe')[0]; + + if (document.getElementById("safari_remember_field").value != "" ) { + historyHash = document.getElementById("safari_remember_field").value.split(","); + } + + } + + if (browser.firefox) + { + var anchorDiv = document.createElement("div"); + anchorDiv.id = 'firefox_anchorDiv'; + document.body.appendChild(anchorDiv); + } + + //setTimeout(checkForUrlChange, 50); + } + + return { + historyHash: historyHash, + backStack: function() { return backStack; }, + forwardStack: function() { return forwardStack }, + getPlayer: getPlayer, + initialize: function(src) { + _initialize(src); + }, + setURL: function(url) { + document.location.href = url; + }, + getURL: function() { + return document.location.href; + }, + getTitle: function() { + return document.title; + }, + setTitle: function(title) { + try { + backStack[backStack.length - 1].title = title; + } catch(e) { } + //if on safari, set the title to be the empty string. + if (browser.safari) { + if (title == "") { + try { + var tmp = window.location.href.toString(); + title = tmp.substring((tmp.lastIndexOf("/")+1), tmp.lastIndexOf("#")); + } catch(e) { + title = ""; + } + } + } + document.title = title; + }, + setDefaultURL: function(def) + { + defaultHash = def; + def = getHash(); + //trailing ? is important else an extra frame gets added to the history + //when navigating back to the first page. Alternatively could check + //in history frame navigation to compare # and ?. + if (browser.ie) + { + window['_ie_firstload'] = true; + var sourceToSet = historyFrameSourcePrefix + def; + var func = function() { + getHistoryFrame().src = sourceToSet; + window.location.replace("#" + def); + setInterval(checkForUrlChange, 50); + } + try { + func(); + } catch(e) { + window.setTimeout(function() { func(); }, 0); + } + } + + if (browser.safari) + { + currentHistoryLength = history.length; + if (historyHash.length == 0) { + historyHash[currentHistoryLength] = def; + var newloc = "#" + def; + window.location.replace(newloc); + } else { + //alert(historyHash[historyHash.length-1]); + } + //setHash(def); + setInterval(checkForUrlChange, 50); + } + + + if (browser.firefox || browser.opera) + { + var reg = new RegExp("#" + def + "$"); + if (window.location.toString().match(reg)) { + } else { + var newloc ="#" + def; + window.location.replace(newloc); + } + setInterval(checkForUrlChange, 50); + //setHash(def); + } + + }, + + /* Set the current browser URL; called from inside BrowserManager to propagate + * the application state out to the container. + */ + setBrowserURL: function(flexAppUrl, objectId) { + if (browser.ie && typeof objectId != "undefined") { + currentObjectId = objectId; + } + //fromIframe = fromIframe || false; + //fromFlex = fromFlex || false; + //alert("setBrowserURL: " + flexAppUrl); + //flexAppUrl = (flexAppUrl == "") ? defaultHash : flexAppUrl ; + + var pos = document.location.href.indexOf('#'); + var baseUrl = pos != -1 ? document.location.href.substr(0, pos) : document.location.href; + var newUrl = baseUrl + '#' + flexAppUrl; + + if (document.location.href != newUrl && document.location.href + '#' != newUrl) { + currentHref = newUrl; + addHistoryEntry(baseUrl, newUrl, flexAppUrl); + currentHistoryLength = history.length; + } + + return false; + }, + + browserURLChange: function(flexAppUrl) { + var objectId = null; + if (browser.ie && currentObjectId != null) { + objectId = currentObjectId; + } + pendingURL = ''; + + if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) { + var pl = getPlayers(); + for (var i = 0; i < pl.length; i++) { + try { + pl[i].browserURLChange(flexAppUrl); + } catch(e) { } + } + } else { + try { + getPlayer(objectId).browserURLChange(flexAppUrl); + } catch(e) { } + } + + currentObjectId = null; + } + + } + +})(); + +// Initialization + +// Automated unit testing and other diagnostics + +function setURL(url) +{ + document.location.href = url; +} + +function backButton() +{ + history.back(); +} + +function forwardButton() +{ + history.forward(); +} + +function goForwardOrBackInHistory(step) +{ + history.go(step); +} + +//BrowserHistoryUtils.addEvent(window, "load", function() { BrowserHistory.initialize(); }); +(function(i) { + var u =navigator.userAgent;var e=/*@cc_on!@*/false; + var st = setTimeout; + if(/webkit/i.test(u)){ + st(function(){ + var dr=document.readyState; + if(dr=="loaded"||dr=="complete"){i()} + else{st(arguments.callee,10);}},10); + } else if((/mozilla/i.test(u)&&!/(compati)/.test(u)) || (/opera/i.test(u))){ + document.addEventListener("DOMContentLoaded",i,false); + } else if(e){ + (function(){ + var t=document.createElement('doc:rdy'); + try{t.doScroll('left'); + i();t=null; + }catch(e){st(arguments.callee,0);}})(); + } else{ + window.onload=i; + } +})( function() {BrowserHistory.initialize();} ); Index: lams_flex/VideoRecorder/html-template/history/historyFrame.html =================================================================== diff -u --- lams_flex/VideoRecorder/html-template/history/historyFrame.html (revision 0) +++ lams_flex/VideoRecorder/html-template/history/historyFrame.html (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,29 @@ + + + + + + + + Hidden frame for Browser History support. + + Index: lams_flex/VideoRecorder/html-template/index.template.html =================================================================== diff -u --- lams_flex/VideoRecorder/html-template/index.template.html (revision 0) +++ lams_flex/VideoRecorder/html-template/index.template.html (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,121 @@ + + + + + + + + + + + + +${title} + + + + + + + + + + + + + + + Index: lams_flex/VideoRecorder/html-template/playerProductInstall.swf =================================================================== diff -u Binary files differ Index: lams_flex/VideoRecorder/src/AddCommentPopUp.mxml =================================================================== diff -u --- lams_flex/VideoRecorder/src/AddCommentPopUp.mxml (revision 0) +++ lams_flex/VideoRecorder/src/AddCommentPopUp.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + Index: lams_flex/VideoRecorder/src/GetRecordingDetailsPopUp.mxml =================================================================== diff -u --- lams_flex/VideoRecorder/src/GetRecordingDetailsPopUp.mxml (revision 0) +++ lams_flex/VideoRecorder/src/GetRecordingDetailsPopUp.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + Index: lams_flex/VideoRecorder/src/HTTPServices.as =================================================================== diff -u --- lams_flex/VideoRecorder/src/HTTPServices.as (revision 0) +++ lams_flex/VideoRecorder/src/HTTPServices.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,267 @@ +// creates an httpservice and gets video recordings +import mx.graphics.codec.JPEGEncoder; +import mx.utils.Base64Encoder; + +private function getRecordingsFromServer(sortBy:String, sortDirection:String):void{ + // show an overlay over the video listings + LamsAjaxOverlayManager.showOverlay(videoList); + + // create and set the service + var videoRecorderActions:HTTPService = new HTTPService(); + videoRecorderActions.url = servletUrl; + videoRecorderActions.method = "POST"; + videoRecorderActions.resultFormat = "e4x"; + videoRecorderActions.request.method = "getRecordingsByToolSessionIdAndUserId"; + videoRecorderActions.request.toolSessionId = toolSessionId; + videoRecorderActions.request.toolContentId = toolContentId; + videoRecorderActions.request.userId = userId; + + // if we are in teacher mode or are allowing recording visibility, get all recordings + if(allowLearnerVideoVisibility || mode == "teacher") + videoRecorderActions.request.getAll = true; + // otherwise, get only the users own recordings + else + videoRecorderActions.request.getAll = false; + + videoRecorderActions.request.sortBy = sortBy; + videoRecorderActions.request.sortDirection = sortDirection; + videoRecorderActions.request.allowLearnerVideoVisibility = allowLearnerVideoVisibility; + videoRecorderActions.addEventListener(ResultEvent.RESULT, getRecordingsSuccessHandler); + videoRecorderActions.addEventListener(FaultEvent.FAULT, getRecordingsFaultHandler); + + videoRecorderActions.send(); +} + +// handler for successful get recordings +private function getRecordingsSuccessHandler(e:ResultEvent):void { + // update the rating from the servlet's returned xml + videoRecordings = e.result.recording; + + // hide the overlay + LamsAjaxOverlayManager.hideOverlay(videoList); +} + +// fault handler for get recordings + private function getRecordingsFaultHandler(e:FaultEvent):void { + // hide the overlay + LamsAjaxOverlayManager.hideOverlay(videoList); + + // show an alert with the error + Alert.show(e.toString()); +} + +// creates an httpservice and saves a video recording +private function saveRecordingToServer(userId:int, title:String, description:String, filename:String, rating:Number, toolSessionId:int, recordingId:int):void{ + // create and set the service + var videoRecorderActions:HTTPService = new HTTPService(); + videoRecorderActions.url = servletUrl; + videoRecorderActions.method = "POST"; + videoRecorderActions.resultFormat = "e4x"; + videoRecorderActions.request.method = "saveRecording"; + videoRecorderActions.request.userId = userId; + videoRecorderActions.request.recordingId = recordingId; + videoRecorderActions.request.title = title; + videoRecorderActions.request.rating = rating; + videoRecorderActions.request.description = description; + videoRecorderActions.request.filename = filename; + + if((!allowUseCamera && allowUseVoice) || (mic && !cam)) + videoRecorderActions.request.isJustSound = true; + else + videoRecorderActions.request.isJustSound = false; + + videoRecorderActions.request.toolContentId = -1; + + videoRecorderActions.request.isLocal = false; + + videoRecorderActions.request.toolSessionId = toolSessionId; + videoRecorderActions.addEventListener(ResultEvent.RESULT, saveRecordingSuccessHandler); + videoRecorderActions.addEventListener(FaultEvent.FAULT, saveRecordingFaultHandler); + + videoRecorderActions.send(); +} + +// handler for successful save recording +private function saveRecordingSuccessHandler(e:ResultEvent):void { + // update the video recordings + getRecordingsFromServer(sortButtonGroup.sortBy, sortButtonGroup.sortDirection); +} + +// fault handler for save recording + private function saveRecordingFaultHandler(e:FaultEvent):void { + Alert.show(e.toString()); +} + +// creates an httpservice and saves a comment +private function saveCommentToServer(toolSessionId:int, recordingId:int, userId:int, commentId:int, comment:String):void{ + // show an overlay over the recording information + LamsAjaxOverlayManager.showOverlay(videoInformation); + + // create and set the service + var videoRecorderActions:HTTPService = new HTTPService(); + videoRecorderActions.url = servletUrl; + videoRecorderActions.method = "POST"; + videoRecorderActions.resultFormat = "e4x"; + videoRecorderActions.request.method = "saveComment"; + videoRecorderActions.request.userId = userId; + videoRecorderActions.request.recordingId = recordingId; + videoRecorderActions.request.comment = comment; + videoRecorderActions.request.commentId = commentId; + videoRecorderActions.request.toolSessionId = toolSessionId; + + videoRecorderActions.addEventListener(ResultEvent.RESULT, saveCommentSuccessHandler); + videoRecorderActions.addEventListener(FaultEvent.FAULT, saveCommentFaultHandler); + + videoRecorderActions.send(); +} + +// handler for successful save recording +private function saveCommentSuccessHandler(e:ResultEvent):void { + // update the comments with the xml sent back from the servlet + videoInformation.printComments(XMLList(e.result)); + + // update the video recordings + getRecordingsFromServer(sortButtonGroup.sortBy, sortButtonGroup.sortDirection); + + // scroll the video information box to the position of the "Comments:" label + videoInformation.verticalScrollPosition = videoInformation.verticalPageScrollSize; + + // hide the overlay + LamsAjaxOverlayManager.hideOverlay(videoInformation); +} + +// fault handler for save recording + private function saveCommentFaultHandler(e:FaultEvent):void { + // hide the overlay + LamsAjaxOverlayManager.hideOverlay(videoInformation); + + // print the error + Alert.show(e.toString()); +} + +// creates an httpservice and saves a rating +private function saveRatingToServer(toolSessionId:int, ratingId:int, userId:int, rating:Number, recordingId:int):void{ + // show an overlay over the recording information + LamsAjaxOverlayManager.showOverlay(videoInformation); + + // create and set the service + var videoRecorderActions:HTTPService = new HTTPService(); + videoRecorderActions.url = servletUrl; + videoRecorderActions.method = "POST"; + videoRecorderActions.resultFormat = "e4x"; + videoRecorderActions.request.method = "saveRating"; + videoRecorderActions.request.userId = userId; + videoRecorderActions.request.rating = rating; + videoRecorderActions.request.ratingId = ratingId; + videoRecorderActions.request.toolSessionId = toolSessionId; + videoRecorderActions.request.recordingId = recordingId; + + videoRecorderActions.addEventListener(ResultEvent.RESULT, saveRatingSuccessHandler); + videoRecorderActions.addEventListener(FaultEvent.FAULT, saveRatingFaultHandler); + + videoRecorderActions.send(); +} + +// handler for successful save rating +private function saveRatingSuccessHandler(e:ResultEvent):void { + // set the last rating clicked to voted + ratingClicked.voted = true; + + // set its average value + ratingClicked.value = e.result.rating; + + // set the user's voted value + ratingClicked.votedValue = e.result.userRating; + + // fix the tooltip + ratingClicked.toolTip = dictionary.getLabelAndConcatenate("videorecorder.tooltip.already.rated", [" ", String(e.result.userRating)]); + + // hide the overlay + LamsAjaxOverlayManager.hideOverlay(videoInformation); + + // update the video recordings + getRecordingsFromServer(sortButtonGroup.sortBy, sortButtonGroup.sortDirection); +} + +// fault handler for save rating + private function saveRatingFaultHandler(e:FaultEvent):void { + // hide the overlay + LamsAjaxOverlayManager.hideOverlay(videoInformation); + + // show the error + Alert.show(e.toString()); +} + +// creates an httpservice and saves a rating +private function deleteRecordingFromServer(recordingId:int):void{ + var videoRecorderActions:HTTPService = new HTTPService(); + videoRecorderActions.url = servletUrl; + videoRecorderActions.method = "POST"; + videoRecorderActions.resultFormat = "e4x"; + videoRecorderActions.request.method = "deleteRecording"; + videoRecorderActions.request.recordingId = recordingId; + + videoRecorderActions.addEventListener(ResultEvent.RESULT, deleteRecordingSuccessHandler); + videoRecorderActions.addEventListener(FaultEvent.FAULT, deleteRecordingFaultHandler); + + videoRecorderActions.send(); +} + +// handler for successful delete recording +private function deleteRecordingSuccessHandler(e:ResultEvent):void { + // update the video recordings + getRecordingsFromServer(sortButtonGroup.sortBy, sortButtonGroup.sortDirection); + + // reset video information + videoInformation.resetInformation(); + + videoDisplay.reset(); +} + +// fault handler for detele recording + private function deleteRecordingFaultHandler(e:FaultEvent):void { + Alert.show(e.toString()); +} + +// attempts to save a preview image to the content folder +private function savePreviewImage(filename:String, ext:String, image:BitmapData, toolSessionId:int):void{ + var videoRecorderActions:HTTPService = new HTTPService(); + videoRecorderActions.url = servletUrl; + videoRecorderActions.method = "POST"; + videoRecorderActions.resultFormat = "e4x"; + + videoRecorderActions.request.method = "saveImage"; + + videoRecorderActions.addEventListener(ResultEvent.RESULT, savePreviewImageSuccessHandler); + videoRecorderActions.addEventListener(FaultEvent.FAULT, savePreviewImageFaultHandler); + + var rawBytes:ByteArray = new ByteArray(); + + if(ext == "png"){ + var pngEncoder:PNGEncoder = new PNGEncoder(); + rawBytes = pngEncoder.encode(image); + } + else if(ext == "jpg"){ + var jpegEncoder:JPEGEncoder = new JPEGEncoder(); + rawBytes = jpegEncoder.encode(image); + } + + var encoder:Base64Encoder = new Base64Encoder(); + encoder.encodeBytes(rawBytes); + + videoRecorderActions.request.filename = filename; + videoRecorderActions.request.ext = ext; + videoRecorderActions.request.toolSessionId = toolSessionId; + videoRecorderActions.request.data = encoder.flush(); + + videoRecorderActions.send(); +} + +// handler for successful save preview image +private function savePreviewImageSuccessHandler(e:ResultEvent):void { +} + +// fault handler for save preview image + private function savePreviewImageFaultHandler(e:FaultEvent):void { + Alert.show(e.toString()); +} \ No newline at end of file Index: lams_flex/VideoRecorder/src/VideoInformation.mxml =================================================================== diff -u --- lams_flex/VideoRecorder/src/VideoInformation.mxml (revision 0) +++ lams_flex/VideoRecorder/src/VideoInformation.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: lams_flex/VideoRecorder/src/VideoProfile.mxml =================================================================== diff -u --- lams_flex/VideoRecorder/src/VideoProfile.mxml (revision 0) +++ lams_flex/VideoRecorder/src/VideoProfile.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_flex/VideoRecorder/src/VideoRecorder.mxml =================================================================== diff -u --- lams_flex/VideoRecorder/src/VideoRecorder.mxml (revision 0) +++ lams_flex/VideoRecorder/src/VideoRecorder.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,935 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: lams_flex/VideoRecorder/src/assets/images/arrow_refresh_small.png =================================================================== diff -u Binary files differ Index: lams_flex/VideoRecorder/src/assets/images/comment_add.png =================================================================== diff -u Binary files differ Index: lams_flex/VideoRecorder/src/assets/images/control_pause.png =================================================================== diff -u Binary files differ Index: lams_flex/VideoRecorder/src/assets/images/control_play.png =================================================================== diff -u Binary files differ Index: lams_flex/VideoRecorder/src/assets/images/control_record.png =================================================================== diff -u Binary files differ Index: lams_flex/VideoRecorder/src/assets/images/cross.png =================================================================== diff -u Binary files differ Index: lams_flex/VideoRecorder/src/assets/images/customer_logo.gif =================================================================== diff -u Binary files differ Index: lams_flex/VideoRecorder/src/assets/images/date.png =================================================================== diff -u Binary files differ Index: lams_flex/VideoRecorder/src/assets/images/exclamation.png =================================================================== diff -u Binary files differ Index: lams_flex/VideoRecorder/src/assets/images/note.png =================================================================== diff -u Binary files differ Index: lams_flex/VideoRecorder/src/assets/images/pencil.png =================================================================== diff -u Binary files differ Index: lams_flex/VideoRecorder/src/assets/images/user.png =================================================================== diff -u Binary files differ Index: lams_flex/VideoRecorder/src/assets/images/webcam.png =================================================================== diff -u Binary files differ Index: lams_flex/VideoRecorder/src/assets/styles/main.css =================================================================== diff -u --- lams_flex/VideoRecorder/src/assets/styles/main.css (revision 0) +++ lams_flex/VideoRecorder/src/assets/styles/main.css (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,35 @@ +Application { + backgroundColor:#ECECEC; + backgroundGradientColors:#ECECEC,#ECECEC; +} + +Tile { + top: 10; + bottom: 10; + left: 10; + right: 10; +} + +Label { + color: #000000; + fontWeight: bold; + fontSize: 14; +} + +.box { + borderColor: #50B2CB; + cornerRadius: 10; + borderStyle: solid; + borderThickness: 1; + paddingBottom: 10; + paddingTop: 10; + paddingLeft: 10; + paddingRight: 10; + backgroundColor:#ffffff; + backgroundAlpha: 1; +} + +Text { + fontSize: 12; + fontWeight: normal; +} \ No newline at end of file Index: lams_flex/VideoRecorderFCKEditor/.actionScriptProperties =================================================================== diff -u --- lams_flex/VideoRecorderFCKEditor/.actionScriptProperties (revision 0) +++ lams_flex/VideoRecorderFCKEditor/.actionScriptProperties (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + Index: lams_flex/VideoRecorderFCKEditor/.flexProperties =================================================================== diff -u --- lams_flex/VideoRecorderFCKEditor/.flexProperties (revision 0) +++ lams_flex/VideoRecorderFCKEditor/.flexProperties (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,2 @@ + + Index: lams_flex/VideoRecorderFCKEditor/.project =================================================================== diff -u --- lams_flex/VideoRecorderFCKEditor/.project (revision 0) +++ lams_flex/VideoRecorderFCKEditor/.project (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,30 @@ + + + VideoRecorderFCKEditor + + + + + + com.adobe.flexbuilder.project.flexbuilder + + + + + + com.adobe.flexbuilder.project.flexnature + com.adobe.flexbuilder.project.actionscriptnature + + + + bin-release1 + 2 + D:/LAMS_HEAD/lams_central/web/fckeditor/editor/plugins/videorecorder + + + bin-release + 2 + D:/LAMS_HEAD/lams_tool_videorecorder/web/includes/flash + + + Index: lams_flex/VideoRecorderFCKEditor/.settings/org.eclipse.core.resources.prefs =================================================================== diff -u --- lams_flex/VideoRecorderFCKEditor/.settings/org.eclipse.core.resources.prefs (revision 0) +++ lams_flex/VideoRecorderFCKEditor/.settings/org.eclipse.core.resources.prefs (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,3 @@ +#Tue Jan 27 10:24:47 EST 2009 +eclipse.preferences.version=1 +encoding/=utf-8 Index: lams_flex/VideoRecorderFCKEditor/html-template/AC_OETags.js =================================================================== diff -u --- lams_flex/VideoRecorderFCKEditor/html-template/AC_OETags.js (revision 0) +++ lams_flex/VideoRecorderFCKEditor/html-template/AC_OETags.js (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,278 @@ +// Flash Player Version Detection - Rev 1.6 +// Detect Client Browser type +// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved. +var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false; +var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false; +var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false; + +function ControlVersion() +{ + var version; + var axo; + var e; + + // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry + + try { + // version will be set for 7.X or greater players + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); + version = axo.GetVariable("$version"); + } catch (e) { + } + + if (!version) + { + try { + // version will be set for 6.X players only + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); + + // installed player is some revision of 6.0 + // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29, + // so we have to be careful. + + // default to the first public version + version = "WIN 6,0,21,0"; + + // throws if AllowScripAccess does not exist (introduced in 6.0r47) + axo.AllowScriptAccess = "always"; + + // safe to call for 6.0r47 or greater + version = axo.GetVariable("$version"); + + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 4.X or 5.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); + version = axo.GetVariable("$version"); + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 3.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); + version = "WIN 3,0,18,0"; + } catch (e) { + } + } + + if (!version) + { + try { + // version will be set for 2.X player + axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); + version = "WIN 2,0,0,11"; + } catch (e) { + version = -1; + } + } + + return version; +} + +// JavaScript helper required to detect Flash Player PlugIn version information +function GetSwfVer(){ + // NS/Opera version >= 3 check for Flash plugin in plugin array + var flashVer = -1; + + if (navigator.plugins != null && navigator.plugins.length > 0) { + if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) { + var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : ""; + var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description; + var descArray = flashDescription.split(" "); + var tempArrayMajor = descArray[2].split("."); + var versionMajor = tempArrayMajor[0]; + var versionMinor = tempArrayMajor[1]; + var versionRevision = descArray[3]; + if (versionRevision == "") { + versionRevision = descArray[4]; + } + if (versionRevision[0] == "d") { + versionRevision = versionRevision.substring(1); + } else if (versionRevision[0] == "r") { + versionRevision = versionRevision.substring(1); + if (versionRevision.indexOf("d") > 0) { + versionRevision = versionRevision.substring(0, versionRevision.indexOf("d")); + } + } else if (versionRevision[0] == "b") { + versionRevision = versionRevision.substring(1); + } + var flashVer = versionMajor + "." + versionMinor + "." + versionRevision; + } + } + // MSN/WebTV 2.6 supports Flash 4 + else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4; + // WebTV 2.5 supports Flash 3 + else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3; + // older WebTV supports Flash 2 + else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2; + else if ( isIE && isWin && !isOpera ) { + flashVer = ControlVersion(); + } + return flashVer; +} + +// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available +function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) +{ + versionStr = GetSwfVer(); + if (versionStr == -1 ) { + return false; + } else if (versionStr != 0) { + if(isIE && isWin && !isOpera) { + // Given "WIN 2,0,0,11" + tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"] + tempString = tempArray[1]; // "2,0,0,11" + versionArray = tempString.split(","); // ['2', '0', '0', '11'] + } else { + versionArray = versionStr.split("."); + } + var versionMajor = versionArray[0]; + var versionMinor = versionArray[1]; + var versionRevision = versionArray[2]; + + // is the major.revision >= requested major.revision AND the minor version >= requested minor + if (versionMajor > parseFloat(reqMajorVer)) { + return true; + } else if (versionMajor == parseFloat(reqMajorVer)) { + if (versionMinor > parseFloat(reqMinorVer)) + return true; + else if (versionMinor == parseFloat(reqMinorVer)) { + if (versionRevision >= parseFloat(reqRevision)) + return true; + } + } + return false; + } +} + +function AC_AddExtension(src, ext) +{ + if (src.indexOf('?') != -1) + return src.replace(/\?/, ext+'?'); + else + return src + ext; +} + +function AC_Generateobj(objAttrs, params, embedAttrs) +{ + var str = ''; + if (isIE && isWin && !isOpera) + { + str += ' '; + str += ''; + } else { + str += ' 0 && typeof o[0].SetVariable != "undefined") { + return o[0]; + } + else if (e.length > 0 && typeof e[0].SetVariable != "undefined") { + return e[0]; + } + } + } + else { + var o = document.getElementsByTagName("object"); + var e = document.getElementsByTagName("embed"); + if (e.length > 0 && typeof e[0].SetVariable != "undefined") { + return e[0]; + } + else if (o.length > 0 && typeof o[0].SetVariable != "undefined") { + return o[0]; + } + else if (o.length > 1 && typeof o[1].SetVariable != "undefined") { + return o[1]; + } + } + return undefined; + } + + function getPlayers() { + var players = []; + if (players.length == 0) { + var tmp = document.getElementsByTagName('object'); + players = tmp; + } + + if (players.length == 0 || players[0].object == null) { + var tmp = document.getElementsByTagName('embed'); + players = tmp; + } + return players; + } + + function getIframeHash() { + var doc = getHistoryFrame().contentWindow.document; + var hash = String(doc.location.search); + if (hash.length == 1 && hash.charAt(0) == "?") { + hash = ""; + } + else if (hash.length >= 2 && hash.charAt(0) == "?") { + hash = hash.substring(1); + } + return hash; + } + + /* Get the current location hash excluding the '#' symbol. */ + function getHash() { + // It would be nice if we could use document.location.hash here, + // but it's faulty sometimes. + var idx = document.location.href.indexOf('#'); + return (idx >= 0) ? document.location.href.substr(idx+1) : ''; + } + + /* Get the current location hash excluding the '#' symbol. */ + function setHash(hash) { + // It would be nice if we could use document.location.hash here, + // but it's faulty sometimes. + if (hash == '') hash = '#' + document.location.hash = hash; + } + + function createState(baseUrl, newUrl, flexAppUrl) { + return { 'baseUrl': baseUrl, 'newUrl': newUrl, 'flexAppUrl': flexAppUrl, 'title': null }; + } + + /* Add a history entry to the browser. + * baseUrl: the portion of the location prior to the '#' + * newUrl: the entire new URL, including '#' and following fragment + * flexAppUrl: the portion of the location following the '#' only + */ + function addHistoryEntry(baseUrl, newUrl, flexAppUrl) { + + //delete all the history entries + forwardStack = []; + + if (browser.ie) { + //Check to see if we are being asked to do a navigate for the first + //history entry, and if so ignore, because it's coming from the creation + //of the history iframe + if (flexAppUrl == defaultHash && document.location.href == initialHref && window['_ie_firstload']) { + currentHref = initialHref; + return; + } + if ((!flexAppUrl || flexAppUrl == defaultHash) && window['_ie_firstload']) { + newUrl = baseUrl + '#' + defaultHash; + flexAppUrl = defaultHash; + } else { + // for IE, tell the history frame to go somewhere without a '#' + // in order to get this entry into the browser history. + getHistoryFrame().src = historyFrameSourcePrefix + flexAppUrl; + } + setHash(flexAppUrl); + } else { + + //ADR + if (backStack.length == 0 && initialState.flexAppUrl == flexAppUrl) { + initialState = createState(baseUrl, newUrl, flexAppUrl); + } else if(backStack.length > 0 && backStack[backStack.length - 1].flexAppUrl == flexAppUrl) { + backStack[backStack.length - 1] = createState(baseUrl, newUrl, flexAppUrl); + } + + if (browser.safari) { + // for Safari, submit a form whose action points to the desired URL + if (browser.version <= 419.3) { + var file = window.location.pathname.toString(); + file = file.substring(file.lastIndexOf("/")+1); + getFormElement().innerHTML = '
    '; + //get the current elements and add them to the form + var qs = window.location.search.substring(1); + var qs_arr = qs.split("&"); + for (var i = 0; i < qs_arr.length; i++) { + var tmp = qs_arr[i].split("="); + var elem = document.createElement("input"); + elem.type = "hidden"; + elem.name = tmp[0]; + elem.value = tmp[1]; + document.forms.historyForm.appendChild(elem); + } + document.forms.historyForm.submit(); + } else { + top.location.hash = flexAppUrl; + } + // We also have to maintain the history by hand for Safari + historyHash[history.length] = flexAppUrl; + _storeStates(); + } else { + // Otherwise, write an anchor into the page and tell the browser to go there + addAnchor(flexAppUrl); + setHash(flexAppUrl); + } + } + backStack.push(createState(baseUrl, newUrl, flexAppUrl)); + } + + function _storeStates() { + if (browser.safari) { + getRememberElement().value = historyHash.join(","); + } + } + + function handleBackButton() { + //The "current" page is always at the top of the history stack. + var current = backStack.pop(); + if (!current) { return; } + var last = backStack[backStack.length - 1]; + if (!last && backStack.length == 0){ + last = initialState; + } + forwardStack.push(current); + } + + function handleForwardButton() { + //summary: private method. Do not call this directly. + + var last = forwardStack.pop(); + if (!last) { return; } + backStack.push(last); + } + + function handleArbitraryUrl() { + //delete all the history entries + forwardStack = []; + } + + /* Called periodically to poll to see if we need to detect navigation that has occurred */ + function checkForUrlChange() { + + if (browser.ie) { + if (currentHref != document.location.href && currentHref + '#' != document.location.href) { + //This occurs when the user has navigated to a specific URL + //within the app, and didn't use browser back/forward + //IE seems to have a bug where it stops updating the URL it + //shows the end-user at this point, but programatically it + //appears to be correct. Do a full app reload to get around + //this issue. + if (browser.version < 7) { + currentHref = document.location.href; + document.location.reload(); + } else { + if (getHash() != getIframeHash()) { + // this.iframe.src = this.blankURL + hash; + var sourceToSet = historyFrameSourcePrefix + getHash(); + getHistoryFrame().src = sourceToSet; + } + } + } + } + + if (browser.safari) { + // For Safari, we have to check to see if history.length changed. + if (currentHistoryLength >= 0 && history.length != currentHistoryLength) { + //alert("did change: " + history.length + ", " + historyHash.length + "|" + historyHash[history.length] + "|>" + historyHash.join("|")); + // If it did change, then we have to look the old state up + // in our hand-maintained array since document.location.hash + // won't have changed, then call back into BrowserManager. + currentHistoryLength = history.length; + var flexAppUrl = historyHash[currentHistoryLength]; + if (flexAppUrl == '') { + //flexAppUrl = defaultHash; + } + //ADR: to fix multiple + if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) { + var pl = getPlayers(); + for (var i = 0; i < pl.length; i++) { + pl[i].browserURLChange(flexAppUrl); + } + } else { + getPlayer().browserURLChange(flexAppUrl); + } + _storeStates(); + } + } + if (browser.firefox) { + if (currentHref != document.location.href) { + var bsl = backStack.length; + + var urlActions = { + back: false, + forward: false, + set: false + } + + if ((window.location.hash == initialHash || window.location.href == initialHref) && (bsl == 1)) { + urlActions.back = true; + // FIXME: could this ever be a forward button? + // we can't clear it because we still need to check for forwards. Ugg. + // clearInterval(this.locationTimer); + handleBackButton(); + } + + // first check to see if we could have gone forward. We always halt on + // a no-hash item. + if (forwardStack.length > 0) { + if (forwardStack[forwardStack.length-1].flexAppUrl == getHash()) { + urlActions.forward = true; + handleForwardButton(); + } + } + + // ok, that didn't work, try someplace back in the history stack + if ((bsl >= 2) && (backStack[bsl - 2])) { + if (backStack[bsl - 2].flexAppUrl == getHash()) { + urlActions.back = true; + handleBackButton(); + } + } + + if (!urlActions.back && !urlActions.forward) { + var foundInStacks = { + back: -1, + forward: -1 + } + + for (var i = 0; i < backStack.length; i++) { + if (backStack[i].flexAppUrl == getHash() && i != (bsl - 2)) { + arbitraryUrl = true; + foundInStacks.back = i; + } + } + for (var i = 0; i < forwardStack.length; i++) { + if (forwardStack[i].flexAppUrl == getHash() && i != (bsl - 2)) { + arbitraryUrl = true; + foundInStacks.forward = i; + } + } + handleArbitraryUrl(); + } + + // Firefox changed; do a callback into BrowserManager to tell it. + currentHref = document.location.href; + var flexAppUrl = getHash(); + if (flexAppUrl == '') { + //flexAppUrl = defaultHash; + } + //ADR: to fix multiple + if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) { + var pl = getPlayers(); + for (var i = 0; i < pl.length; i++) { + pl[i].browserURLChange(flexAppUrl); + } + } else { + getPlayer().browserURLChange(flexAppUrl); + } + } + } + //setTimeout(checkForUrlChange, 50); + } + + /* Write an anchor into the page to legitimize it as a URL for Firefox et al. */ + function addAnchor(flexAppUrl) + { + if (document.getElementsByName(flexAppUrl).length == 0) { + getAnchorElement().innerHTML += "" + flexAppUrl + ""; + } + } + + var _initialize = function () { + if (browser.ie) + { + var scripts = document.getElementsByTagName('script'); + for (var i = 0, s; s = scripts[i]; i++) { + if (s.src.indexOf("history.js") > -1) { + var iframe_location = (new String(s.src)).replace("history.js", "historyFrame.html"); + } + } + historyFrameSourcePrefix = iframe_location + "?"; + var src = historyFrameSourcePrefix; + + var iframe = document.createElement("iframe"); + iframe.id = 'ie_historyFrame'; + iframe.name = 'ie_historyFrame'; + //iframe.src = historyFrameSourcePrefix; + try { + document.body.appendChild(iframe); + } catch(e) { + setTimeout(function() { + document.body.appendChild(iframe); + }, 0); + } + } + + if (browser.safari) + { + var rememberDiv = document.createElement("div"); + rememberDiv.id = 'safari_rememberDiv'; + document.body.appendChild(rememberDiv); + rememberDiv.innerHTML = ''; + + var formDiv = document.createElement("div"); + formDiv.id = 'safari_formDiv'; + document.body.appendChild(formDiv); + + var reloader_content = document.createElement('div'); + reloader_content.id = 'safarireloader'; + var scripts = document.getElementsByTagName('script'); + for (var i = 0, s; s = scripts[i]; i++) { + if (s.src.indexOf("history.js") > -1) { + html = (new String(s.src)).replace(".js", ".html"); + } + } + reloader_content.innerHTML = ''; + document.body.appendChild(reloader_content); + reloader_content.style.position = 'absolute'; + reloader_content.style.left = reloader_content.style.top = '-9999px'; + iframe = reloader_content.getElementsByTagName('iframe')[0]; + + if (document.getElementById("safari_remember_field").value != "" ) { + historyHash = document.getElementById("safari_remember_field").value.split(","); + } + + } + + if (browser.firefox) + { + var anchorDiv = document.createElement("div"); + anchorDiv.id = 'firefox_anchorDiv'; + document.body.appendChild(anchorDiv); + } + + //setTimeout(checkForUrlChange, 50); + } + + return { + historyHash: historyHash, + backStack: function() { return backStack; }, + forwardStack: function() { return forwardStack }, + getPlayer: getPlayer, + initialize: function(src) { + _initialize(src); + }, + setURL: function(url) { + document.location.href = url; + }, + getURL: function() { + return document.location.href; + }, + getTitle: function() { + return document.title; + }, + setTitle: function(title) { + try { + backStack[backStack.length - 1].title = title; + } catch(e) { } + //if on safari, set the title to be the empty string. + if (browser.safari) { + if (title == "") { + try { + var tmp = window.location.href.toString(); + title = tmp.substring((tmp.lastIndexOf("/")+1), tmp.lastIndexOf("#")); + } catch(e) { + title = ""; + } + } + } + document.title = title; + }, + setDefaultURL: function(def) + { + defaultHash = def; + def = getHash(); + //trailing ? is important else an extra frame gets added to the history + //when navigating back to the first page. Alternatively could check + //in history frame navigation to compare # and ?. + if (browser.ie) + { + window['_ie_firstload'] = true; + var sourceToSet = historyFrameSourcePrefix + def; + var func = function() { + getHistoryFrame().src = sourceToSet; + window.location.replace("#" + def); + setInterval(checkForUrlChange, 50); + } + try { + func(); + } catch(e) { + window.setTimeout(function() { func(); }, 0); + } + } + + if (browser.safari) + { + currentHistoryLength = history.length; + if (historyHash.length == 0) { + historyHash[currentHistoryLength] = def; + var newloc = "#" + def; + window.location.replace(newloc); + } else { + //alert(historyHash[historyHash.length-1]); + } + //setHash(def); + setInterval(checkForUrlChange, 50); + } + + + if (browser.firefox || browser.opera) + { + var reg = new RegExp("#" + def + "$"); + if (window.location.toString().match(reg)) { + } else { + var newloc ="#" + def; + window.location.replace(newloc); + } + setInterval(checkForUrlChange, 50); + //setHash(def); + } + + }, + + /* Set the current browser URL; called from inside BrowserManager to propagate + * the application state out to the container. + */ + setBrowserURL: function(flexAppUrl, objectId) { + if (browser.ie && typeof objectId != "undefined") { + currentObjectId = objectId; + } + //fromIframe = fromIframe || false; + //fromFlex = fromFlex || false; + //alert("setBrowserURL: " + flexAppUrl); + //flexAppUrl = (flexAppUrl == "") ? defaultHash : flexAppUrl ; + + var pos = document.location.href.indexOf('#'); + var baseUrl = pos != -1 ? document.location.href.substr(0, pos) : document.location.href; + var newUrl = baseUrl + '#' + flexAppUrl; + + if (document.location.href != newUrl && document.location.href + '#' != newUrl) { + currentHref = newUrl; + addHistoryEntry(baseUrl, newUrl, flexAppUrl); + currentHistoryLength = history.length; + } + + return false; + }, + + browserURLChange: function(flexAppUrl) { + var objectId = null; + if (browser.ie && currentObjectId != null) { + objectId = currentObjectId; + } + pendingURL = ''; + + if (typeof BrowserHistory_multiple != "undefined" && BrowserHistory_multiple == true) { + var pl = getPlayers(); + for (var i = 0; i < pl.length; i++) { + try { + pl[i].browserURLChange(flexAppUrl); + } catch(e) { } + } + } else { + try { + getPlayer(objectId).browserURLChange(flexAppUrl); + } catch(e) { } + } + + currentObjectId = null; + } + + } + +})(); + +// Initialization + +// Automated unit testing and other diagnostics + +function setURL(url) +{ + document.location.href = url; +} + +function backButton() +{ + history.back(); +} + +function forwardButton() +{ + history.forward(); +} + +function goForwardOrBackInHistory(step) +{ + history.go(step); +} + +//BrowserHistoryUtils.addEvent(window, "load", function() { BrowserHistory.initialize(); }); +(function(i) { + var u =navigator.userAgent;var e=/*@cc_on!@*/false; + var st = setTimeout; + if(/webkit/i.test(u)){ + st(function(){ + var dr=document.readyState; + if(dr=="loaded"||dr=="complete"){i()} + else{st(arguments.callee,10);}},10); + } else if((/mozilla/i.test(u)&&!/(compati)/.test(u)) || (/opera/i.test(u))){ + document.addEventListener("DOMContentLoaded",i,false); + } else if(e){ + (function(){ + var t=document.createElement('doc:rdy'); + try{t.doScroll('left'); + i();t=null; + }catch(e){st(arguments.callee,0);}})(); + } else{ + window.onload=i; + } +})( function() {BrowserHistory.initialize();} ); Index: lams_flex/VideoRecorderFCKEditor/html-template/history/historyFrame.html =================================================================== diff -u --- lams_flex/VideoRecorderFCKEditor/html-template/history/historyFrame.html (revision 0) +++ lams_flex/VideoRecorderFCKEditor/html-template/history/historyFrame.html (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,29 @@ + + + + + + + + Hidden frame for Browser History support. + + Index: lams_flex/VideoRecorderFCKEditor/html-template/index.template.html =================================================================== diff -u --- lams_flex/VideoRecorderFCKEditor/html-template/index.template.html (revision 0) +++ lams_flex/VideoRecorderFCKEditor/html-template/index.template.html (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,121 @@ + + + + + + + + + + + + +${title} + + + + + + + + + + + + + + + Index: lams_flex/VideoRecorderFCKEditor/html-template/playerProductInstall.swf =================================================================== diff -u Binary files differ Index: lams_flex/VideoRecorderFCKEditor/src/GetRecordingDetailsPopUp.mxml =================================================================== diff -u --- lams_flex/VideoRecorderFCKEditor/src/GetRecordingDetailsPopUp.mxml (revision 0) +++ lams_flex/VideoRecorderFCKEditor/src/GetRecordingDetailsPopUp.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + Index: lams_flex/VideoRecorderFCKEditor/src/HTTPServices.as =================================================================== diff -u --- lams_flex/VideoRecorderFCKEditor/src/HTTPServices.as (revision 0) +++ lams_flex/VideoRecorderFCKEditor/src/HTTPServices.as (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,156 @@ +// creates an httpservice and saves a video recording +import mx.controls.Alert; +import mx.graphics.codec.JPEGEncoder; +import mx.graphics.codec.PNGEncoder; +import mx.rpc.events.FaultEvent; +import mx.rpc.events.ResultEvent; +import mx.rpc.http.HTTPService; +import mx.utils.Base64Encoder; + +private function saveRecordingToServer(title:String, description:String, filename:String, toolContentId:int):void{ + var videoRecorderActions:HTTPService = new HTTPService(); + videoRecorderActions.url = toolServletUrl; + videoRecorderActions.method = "POST"; + videoRecorderActions.resultFormat = "e4x"; + videoRecorderActions.request.method = "saveRecording"; + videoRecorderActions.request.title = title; + videoRecorderActions.request.description = description; + videoRecorderActions.request.filename = filename; + videoRecorderActions.request.toolContentId = toolContentId; + + videoRecorderActions.request.isLocal = true; + + if(mic && !cam) + videoRecorderActions.request.isJustSound = true; + else + videoRecorderActions.request.isJustSound = false; + + videoRecorderActions.request.userId = -1; + videoRecorderActions.request.toolSessionId = -1; + videoRecorderActions.request.recordingId = -1; + videoRecorderActions.request.rating = 0; + + videoRecorderActions.addEventListener(ResultEvent.RESULT, saveRecordingSuccessHandler); + videoRecorderActions.addEventListener(FaultEvent.FAULT, saveRecordingFaultHandler); + + videoRecorderActions.send(); +} + +// success handler for successful save recording +private function saveRecordingSuccessHandler(e:ResultEvent):void { + // alert complete + Alert.show(dictionary.getLabel("videorecorder.recording.complete.authoring")); + + // make the movie ready + videoDisplay.makeReady(filename, "video", offlinePlayback); + + // update tooltip + videoControlBar.recordButton.toolTip = dictionary.getLabel("videorecorder.tooltip.start.recording.again"); + + // change the panel status + videoDisplayPanel.status = dictionary.getLabel("videorecorder.ready"); +} + +// fault handler for save recording +private function saveRecordingFaultHandler(e:FaultEvent):void { + Alert.show(e.toString()); +} + +// export recording to lams server +private function copyRecordingToLamsServer(src:String, dir:String, filename:String):void{ + var videoRecorderActions:HTTPService = new HTTPService(); + videoRecorderActions.url = saveToLamsServletUrl; + videoRecorderActions.method = "POST"; + videoRecorderActions.resultFormat = "e4x"; + + videoRecorderActions.request.urlStr = src; + videoRecorderActions.request.dir = dir; + videoRecorderActions.request.filename = filename; + + if(mic && !cam) + videoRecorderActions.request.isJustSound = true; + else + videoRecorderActions.request.isJustSound = false; + + videoRecorderActions.addEventListener(ResultEvent.RESULT, copyRecordingToLamsServerSuccessHandler); + videoRecorderActions.addEventListener(FaultEvent.FAULT, copyRecordingToLamsServerFaultHandler); + + videoRecorderActions.send(); +} + +// success handler for copy recording +private function copyRecordingToLamsServerSuccessHandler(e:ResultEvent):void { + // rock on +} +// fault handler for copy recording +private function copyRecordingToLamsServerFaultHandler(e:FaultEvent):void { + Alert.show(e.toString()); +} + +// attempts to get lanugage XML +private function getLanguageXMLFromServer():void{ + var videoRecorderActions:HTTPService = new HTTPService(); + videoRecorderActions.url = saveToLamsServletUrl; + videoRecorderActions.method = "POST"; + videoRecorderActions.resultFormat = "e4x"; + + videoRecorderActions.request.method = "getLanguageXMLForFCK"; + + videoRecorderActions.addEventListener(ResultEvent.RESULT, getLanguageXMLSuccessHandler); + videoRecorderActions.addEventListener(FaultEvent.FAULT, getLanguageXMLFaultHandler); + + videoRecorderActions.send(); +} + +// success handler for get lanugage XML +private function getLanguageXMLSuccessHandler(e:ResultEvent):void { + setLanguageXML(String(e.result)); +} + +// fault handler for get lanugage XML +private function getLanguageXMLFaultHandler(e:FaultEvent):void { + Alert.show(e.toString()); +} + +// attempts to save a preview image to the content folder +private function savePreviewImage(dir:String, filename:String, ext:String, image:BitmapData):void{ + var videoRecorderActions:HTTPService = new HTTPService(); + videoRecorderActions.url = toolServletUrl; + videoRecorderActions.method = "POST"; + videoRecorderActions.resultFormat = "e4x"; + + videoRecorderActions.request.method = "saveImage"; + + videoRecorderActions.addEventListener(ResultEvent.RESULT, savePreviewImageSuccessHandler); + videoRecorderActions.addEventListener(FaultEvent.FAULT, savePreviewImageFaultHandler); + + var rawBytes:ByteArray = new ByteArray(); + + if(ext == "png"){ + var pngEncoder:PNGEncoder = new PNGEncoder(); + rawBytes = pngEncoder.encode(image); + } + else if(ext == "jpg"){ + var jpegEncoder:JPEGEncoder = new JPEGEncoder(); + rawBytes = jpegEncoder.encode(image); + } + + var encoder:Base64Encoder = new Base64Encoder(); + encoder.encodeBytes(rawBytes); + + videoRecorderActions.request.dir = dir; + videoRecorderActions.request.filename = filename; + videoRecorderActions.request.ext = ext; + videoRecorderActions.request.data = encoder.flush(); + + videoRecorderActions.send(); +} + +// handler for successful save preview image +private function savePreviewImageSuccessHandler(e:ResultEvent):void { +} + +// fault handler for save preview image + private function savePreviewImageFaultHandler(e:FaultEvent):void { + Alert.show(e.toString()); +} \ No newline at end of file Index: lams_flex/VideoRecorderFCKEditor/src/PlayerControlBar.mxml =================================================================== diff -u --- lams_flex/VideoRecorderFCKEditor/src/PlayerControlBar.mxml (revision 0) +++ lams_flex/VideoRecorderFCKEditor/src/PlayerControlBar.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,6 @@ + + + + + + Index: lams_flex/VideoRecorderFCKEditor/src/VideoControlBar.mxml =================================================================== diff -u --- lams_flex/VideoRecorderFCKEditor/src/VideoControlBar.mxml (revision 0) +++ lams_flex/VideoRecorderFCKEditor/src/VideoControlBar.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,28 @@ + + + + + + + + + + + + \ No newline at end of file Index: lams_flex/VideoRecorderFCKEditor/src/VideoRecorderFCKEditor.mxml =================================================================== diff -u --- lams_flex/VideoRecorderFCKEditor/src/VideoRecorderFCKEditor.mxml (revision 0) +++ lams_flex/VideoRecorderFCKEditor/src/VideoRecorderFCKEditor.mxml (revision 288a24d430e10138d07e89241364fc014a1f9352) @@ -0,0 +1,672 @@ + + + + + + + + + + + + + Index: lams_flex/VideoRecorderFCKEditor/src/assets/images/accept.png =================================================================== diff -u Binary files differ Index: lams_flex/VideoRecorderFCKEditor/src/assets/images/control_pause.png =================================================================== diff -u Binary files differ Index: lams_flex/VideoRecorderFCKEditor/src/assets/images/control_play.png =================================================================== diff -u Binary files differ Index: lams_flex/VideoRecorderFCKEditor/src/assets/images/control_record.png =================================================================== diff -u Binary files differ Index: lams_flex/VideoRecorderFCKEditor/src/assets/images/okIcon.swf =================================================================== diff -u Binary files differ Index: lams_flex/VideoRecorderFCKEditor/src/assets/images/pauseIcon.swf =================================================================== diff -u Binary files differ Index: lams_flex/VideoRecorderFCKEditor/src/assets/images/playIcon.swf =================================================================== diff -u Binary files differ Index: lams_flex/VideoRecorderFCKEditor/src/assets/images/recordIcon.swf =================================================================== diff -u Binary files differ