Index: lams_flash/src/central/flex/CloudWizard/src/CloudWizard.mxml
===================================================================
diff -u
--- lams_flash/src/central/flex/CloudWizard/src/CloudWizard.mxml (revision 0)
+++ lams_flash/src/central/flex/CloudWizard/src/CloudWizard.mxml (revision b791537342fb2b0446a7010efcc2db8ef94e826a)
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: lams_flash/src/central/flex/CloudWizard/src/assets/images/ajax-loader-big.swf
===================================================================
diff -u
Binary files differ
Index: lams_flash/src/central/flex/CloudWizard/src/assets/styles/main.css
===================================================================
diff -u
--- lams_flash/src/central/flex/CloudWizard/src/assets/styles/main.css (revision 0)
+++ lams_flash/src/central/flex/CloudWizard/src/assets/styles/main.css (revision b791537342fb2b0446a7010efcc2db8ef94e826a)
@@ -0,0 +1,59 @@
+/* CSS file */
+Application {
+ backgroundColor: #FFFFFF;
+ themeColor: #0087e5;
+}
+
+Alert {
+ backgroundColor: #FFFFFF;
+ color: #000000;
+}
+
+
+Panel {
+ borderColor: #6abcec;
+ borderThicknessLeft: 1;
+ borderThicknessRight: 1;
+ borderThicknessBottom: 1;
+ borderAlpha: 1;
+
+ paddingTop: 0;
+ paddingLeft: 0;
+ paddingRight: 0;
+ paddingBottom: 0;
+
+ highlightAlphas: 0.67, 0;
+ headerColors: #000000, #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_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/business/WizardManager.as
===================================================================
diff -u
--- lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/business/WizardManager.as (revision 0)
+++ lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/business/WizardManager.as (revision b791537342fb2b0446a7010efcc2db8ef94e826a)
@@ -0,0 +1,199 @@
+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 mx.rpc.Fault;
+
+ import org.lamsfoundation.lams.common.dictionary.XMLDictionaryRegistry;
+ import org.lamsfoundation.lams.events.WizardErrorEvent;
+ 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());
+
+ _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):void {
+ 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);
+ }
+ }
+
+ 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):void {
+ _staff = newStaff;
+
+ 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_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/events/NavigationEvent.as
===================================================================
diff -u
--- lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/events/NavigationEvent.as (revision 0)
+++ lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/events/NavigationEvent.as (revision b791537342fb2b0446a7010efcc2db8ef94e826a)
@@ -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_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/events/WizardErrorEvent.as
===================================================================
diff -u
--- lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/events/WizardErrorEvent.as (revision 0)
+++ lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/events/WizardErrorEvent.as (revision b791537342fb2b0446a7010efcc2db8ef94e826a)
@@ -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_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/events/WizardEvent.as
===================================================================
diff -u
--- lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/events/WizardEvent.as (revision 0)
+++ lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/events/WizardEvent.as (revision b791537342fb2b0446a7010efcc2db8ef94e826a)
@@ -0,0 +1,65 @@
+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 organisationID:uint = Application.application.parameters.organisationID;
+
+ public var contents:ArrayCollection;
+
+ public var lesson:Lesson;
+
+ public var startEvent_type:String;
+ public var schedule:String;
+
+ 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_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/maps/MainEventMap.mxml
===================================================================
diff -u
--- lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/maps/MainEventMap.mxml (revision 0)
+++ lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/maps/MainEventMap.mxml (revision b791537342fb2b0446a7010efcc2db8ef94e826a)
@@ -0,0 +1,237 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/maps/ModelMap.mxml
===================================================================
diff -u
--- lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/maps/ModelMap.mxml (revision 0)
+++ lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/maps/ModelMap.mxml (revision b791537342fb2b0446a7010efcc2db8ef94e826a)
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/validators/LessonValidator.as
===================================================================
diff -u
--- lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/validators/LessonValidator.as (revision 0)
+++ lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/validators/LessonValidator.as (revision b791537342fb2b0446a7010efcc2db8ef94e826a)
@@ -0,0 +1,75 @@
+package org.lamsfoundation.lams.validators
+{
+ import com.visualempathy.display.controls.datetime.DateTimePicker;
+
+ import mx.validators.ValidationResult;
+ import mx.validators.Validator;
+
+ 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 DateTimePicker) {
+ validateScheduleDate(value as DateTimePicker);
+ }
+
+ // 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):void {
+ var now:Date = new Date();
+
+ 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_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/views/Advanced.mxml
===================================================================
diff -u
--- lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/views/Advanced.mxml (revision 0)
+++ lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/views/Advanced.mxml (revision b791537342fb2b0446a7010efcc2db8ef94e826a)
@@ -0,0 +1,246 @@
+
+
+
+
+ learnersSize)
+ noLearnersPerLesson_stp.value = (learnersSize > 0) ? learnersSize : 1;
+
+ noLearnersPerLesson = noLearnersPerLesson_stp.value;
+
+ noInstances = (valChk) ? Math.floor(learnersSize/noLearnersPerLesson) : 1;
+ if(noInstances <= 1 && learnersSize != noLearnersPerLesson) noInstances++;
+
+ noLearnersPerInstance = (valChk) ? learnersSize/noInstances : learnersSize;
+
+ if(valChk) addInstanceText();
+
+ }
+
+ private function addInstanceText():void {
+
+ if(learnersNoteBox.getChildren().length > 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
+ 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 {
+ this.scheduleDateTimeStr = ScheduleDateDisplay.format(event.currentTarget.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;
+ }
+ ]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
Index: lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/views/Learners.mxml
===================================================================
diff -u
--- lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/views/Learners.mxml (revision 0)
+++ lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/views/Learners.mxml (revision b791537342fb2b0446a7010efcc2db8ef94e826a)
@@ -0,0 +1,249 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
Index: lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/views/Lesson.mxml
===================================================================
diff -u
--- lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/views/Lesson.mxml (revision 0)
+++ lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/views/Lesson.mxml (revision b791537342fb2b0446a7010efcc2db8ef94e826a)
@@ -0,0 +1,268 @@
+
+
+
+
+ 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;
+
+ 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.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_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/views/Wizard.mxml
===================================================================
diff -u
--- lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/views/Wizard.mxml (revision 0)
+++ lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/views/Wizard.mxml (revision b791537342fb2b0446a7010efcc2db8ef94e826a)
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/vos/Lesson.as
===================================================================
diff -u
--- lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/vos/Lesson.as (revision 0)
+++ lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/vos/Lesson.as (revision b791537342fb2b0446a7010efcc2db8ef94e826a)
@@ -0,0 +1,65 @@
+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();
+
+ numberLessonsSplit = null;
+ numberLearnersSplit = null;
+ }
+
+ 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_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/vos/UserCollection.as
===================================================================
diff -u
--- lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/vos/UserCollection.as (revision 0)
+++ lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/vos/UserCollection.as (revision b791537342fb2b0446a7010efcc2db8ef94e826a)
@@ -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_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/vos/WorkspaceCollection.as
===================================================================
diff -u
--- lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/vos/WorkspaceCollection.as (revision 0)
+++ lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/vos/WorkspaceCollection.as (revision b791537342fb2b0446a7010efcc2db8ef94e826a)
@@ -0,0 +1,60 @@
+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_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/vos/WorkspaceItem.as
===================================================================
diff -u
--- lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/vos/WorkspaceItem.as (revision 0)
+++ lams_flash/src/central/flex/CloudWizard/src/org/lamsfoundation/lams/vos/WorkspaceItem.as (revision b791537342fb2b0446a7010efcc2db8ef94e826a)
@@ -0,0 +1,96 @@
+package org.lamsfoundation.lams.vos
+{
+
+ import flash.events.EventDispatcher;
+ import flash.events.IEventDispatcher;
+
+ import mx.collections.ArrayCollection;
+
+ 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 creationDateTime:Date;
+ //private var lastModifiedDateTime:Date;
+
+ public function WorkspaceItem(dispatcher:IEventDispatcher=null)
+ {
+ super(dispatcher);
+ }
+
+ 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;
+ }
+
+ public function set children(value:ArrayCollection):void {
+ _children = value;
+ }
+
+ public function get children():ArrayCollection {
+ return _children;
+ }
+
+ public function isValidDesign():Boolean {
+ return (_resourceType == RT_LD || _resourceType == RT_LESSON);
+ }
+
+ }
+}
\ No newline at end of file
Index: lams_flash/src/common/flex/lib/Mate_08_7.swc
===================================================================
diff -u
Binary files differ
Index: lams_flash/src/common/flex/org/lamsfoundation/lams/common/dictionary/XMLDictionaryEvent.as
===================================================================
diff -u -r062ddaf9efbc0d6927b44b16ad7c7bc7a3b38afe -rb791537342fb2b0446a7010efcc2db8ef94e826a
--- lams_flash/src/common/flex/org/lamsfoundation/lams/common/dictionary/XMLDictionaryEvent.as (.../XMLDictionaryEvent.as) (revision 062ddaf9efbc0d6927b44b16ad7c7bc7a3b38afe)
+++ lams_flash/src/common/flex/org/lamsfoundation/lams/common/dictionary/XMLDictionaryEvent.as (.../XMLDictionaryEvent.as) (revision b791537342fb2b0446a7010efcc2db8ef94e826a)
@@ -4,10 +4,9 @@
public class XMLDictionaryEvent extends Event
{
-
public static const COMPLETE: String = "completeXMLDictionaryEvent";
- public function XMLDictionaryEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
+ public function XMLDictionaryEvent(type:String, bubbles:Boolean=true, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}