Index: lams_flash/src/central/flex/BranchManager/.actionScriptProperties =================================================================== diff -u --- lams_flash/src/central/flex/BranchManager/.actionScriptProperties (revision 0) +++ lams_flash/src/central/flex/BranchManager/.actionScriptProperties (revision edba2c28d900fba6e7bb761fb0a828aad979629e) @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + Index: lams_flash/src/central/flex/BranchManager/.flexProperties =================================================================== diff -u --- lams_flash/src/central/flex/BranchManager/.flexProperties (revision 0) +++ lams_flash/src/central/flex/BranchManager/.flexProperties (revision edba2c28d900fba6e7bb761fb0a828aad979629e) @@ -0,0 +1,2 @@ + + Index: lams_flash/src/central/flex/BranchManager/.project =================================================================== diff -u --- lams_flash/src/central/flex/BranchManager/.project (revision 0) +++ lams_flash/src/central/flex/BranchManager/.project (revision edba2c28d900fba6e7bb761fb0a828aad979629e) @@ -0,0 +1,25 @@ + + + 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 + + + Index: lams_flash/src/central/flex/BranchManager/html-template/AC_OETags.js =================================================================== diff -u --- lams_flash/src/central/flex/BranchManager/html-template/AC_OETags.js (revision 0) +++ lams_flash/src/central/flex/BranchManager/html-template/AC_OETags.js (revision edba2c28d900fba6e7bb761fb0a828aad979629e) @@ -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_flash/src/central/flex/BranchManager/html-template/playerProductInstall.swf =================================================================== diff -u Binary files differ Index: lams_flash/src/central/flex/BranchManager/src/BranchManager.mxml =================================================================== diff -u --- lams_flash/src/central/flex/BranchManager/src/BranchManager.mxml (revision 0) +++ lams_flash/src/central/flex/BranchManager/src/BranchManager.mxml (revision edba2c28d900fba6e7bb761fb0a828aad979629e) @@ -0,0 +1,422 @@ + + + + + + + + getBranches + + + + + + + + getClassMembersNotGrouped + + + + + + + + getBranchMembers + + + + + + + + + addMembers + + + + + + + + + + removeMembers + + + + + + + + + + + + + + + + + + + + + + + + ../bin-debug/loading_small.swf + + + + Index: lams_flash/src/central/flex/GroupManager/.actionScriptProperties =================================================================== diff -u --- lams_flash/src/central/flex/GroupManager/.actionScriptProperties (revision 0) +++ lams_flash/src/central/flex/GroupManager/.actionScriptProperties (revision edba2c28d900fba6e7bb761fb0a828aad979629e) @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + Index: lams_flash/src/central/flex/GroupManager/.flexProperties =================================================================== diff -u --- lams_flash/src/central/flex/GroupManager/.flexProperties (revision 0) +++ lams_flash/src/central/flex/GroupManager/.flexProperties (revision edba2c28d900fba6e7bb761fb0a828aad979629e) @@ -0,0 +1,2 @@ + + Index: lams_flash/src/central/flex/GroupManager/.project =================================================================== diff -u --- lams_flash/src/central/flex/GroupManager/.project (revision 0) +++ lams_flash/src/central/flex/GroupManager/.project (revision edba2c28d900fba6e7bb761fb0a828aad979629e) @@ -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_flash/src/central/flex/GroupManager/.settings/org.eclipse.core.resources.prefs =================================================================== diff -u --- lams_flash/src/central/flex/GroupManager/.settings/org.eclipse.core.resources.prefs (revision 0) +++ lams_flash/src/central/flex/GroupManager/.settings/org.eclipse.core.resources.prefs (revision edba2c28d900fba6e7bb761fb0a828aad979629e) @@ -0,0 +1,3 @@ +#Wed Nov 05 09:59:00 EST 2008 +eclipse.preferences.version=1 +encoding/=utf-8 Index: lams_flash/src/central/flex/GroupManager/html-template/AC_OETags.js =================================================================== diff -u --- lams_flash/src/central/flex/GroupManager/html-template/AC_OETags.js (revision 0) +++ lams_flash/src/central/flex/GroupManager/html-template/AC_OETags.js (revision edba2c28d900fba6e7bb761fb0a828aad979629e) @@ -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_flash/src/central/flex/GroupManager/html-template/playerProductInstall.swf =================================================================== diff -u Binary files differ Index: lams_flash/src/central/flex/GroupManager/src/ChangePanelTitlePopUp.mxml =================================================================== diff -u --- lams_flash/src/central/flex/GroupManager/src/ChangePanelTitlePopUp.mxml (revision 0) +++ lams_flash/src/central/flex/GroupManager/src/ChangePanelTitlePopUp.mxml (revision edba2c28d900fba6e7bb761fb0a828aad979629e) @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + Index: lams_flash/src/central/flex/GroupManager/src/GroupManager.mxml =================================================================== diff -u --- lams_flash/src/central/flex/GroupManager/src/GroupManager.mxml (revision 0) +++ lams_flash/src/central/flex/GroupManager/src/GroupManager.mxml (revision edba2c28d900fba6e7bb761fb0a828aad979629e) @@ -0,0 +1,632 @@ + + + + + + + + getGroups + + + + + + + + getClassMembersNotGrouped + + + + + + + + + getGroupMembers + + + + + + + + + addMembers + + + + + + + + + + removeMembers + + + + + + + + + + addGroup + + + + + + + + + removeGroup + + + + + + + + + changeGroupName + + + + + + + = 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, alertClickHandler); + } + } + + // click handler to confirm removing a panel + private function alertClickHandler(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"); + } + + // drag drop handler + 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); + + for(var i:int = 0; i < xmlResult.length; i++){ + addGroupPanel(xmlResult.getItemAt(i).id.toString(), xmlResult.getItemAt(i).name.toString()); + } + + for(var i:int = 0; i < xmlResult.length; i++){ + 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_monitoring/src/java/org/lamsfoundation/lams/monitoring/monitoringApplicationContext.xml =================================================================== diff -u -r2adb095d59ae592387e0a701f5bf9728281684d0 -redba2c28d900fba6e7bb761fb0a828aad979629e --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/monitoringApplicationContext.xml (.../monitoringApplicationContext.xml) (revision 2adb095d59ae592387e0a701f5bf9728281684d0) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/monitoringApplicationContext.xml (.../monitoringApplicationContext.xml) (revision edba2c28d900fba6e7bb761fb0a828aad979629e) @@ -33,6 +33,7 @@ > + Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java =================================================================== diff -u -rd52c700f83126a2632c10012bf2c8f1bceed3516 -redba2c28d900fba6e7bb761fb0a828aad979629e --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java (.../IMonitoringService.java) (revision d52c700f83126a2632c10012bf2c8f1bceed3516) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/IMonitoringService.java (.../IMonitoringService.java) (revision edba2c28d900fba6e7bb761fb0a828aad979629e) @@ -804,4 +804,9 @@ * Start multiple lessons in one call. */ public boolean startLessons(Integer creatorUserId, String lessonPacket) throws Exception; + + /** + * Set a groups name + */ + public void setGroupName(Long groupID, String name); } Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java =================================================================== diff -u -r778247c607dc8d767ddbc3dff25d0a3505d00661 -redba2c28d900fba6e7bb761fb0a828aad979629e --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision 778247c607dc8d767ddbc3dff25d0a3505d00661) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/service/MonitoringService.java (.../MonitoringService.java) (revision edba2c28d900fba6e7bb761fb0a828aad979629e) @@ -60,6 +60,7 @@ import org.lamsfoundation.lams.learningdesign.SequenceActivity; import org.lamsfoundation.lams.learningdesign.ToolActivity; import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO; +import org.lamsfoundation.lams.learningdesign.dao.IGroupDAO; import org.lamsfoundation.lams.learningdesign.dao.IGroupingDAO; import org.lamsfoundation.lams.learningdesign.dao.ILearningDesignDAO; import org.lamsfoundation.lams.learningdesign.dao.ITransitionDAO; @@ -153,6 +154,8 @@ private ILearningDesignDAO learningDesignDAO; private IGroupingDAO groupingDAO; + + private IGroupDAO groupDAO; private ILearnerProgressDAO learnerProgressDAO; @@ -2740,5 +2743,13 @@ throw new Exception(e); } } - + + /** + * Set a group's name + */ + public void setGroupName(Long groupID, String name) { + Group group = groupDAO.getGroupById(groupID); + group.setGroupName(name); + groupDAO.saveGroup(group); + } } \ No newline at end of file Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/BranchingAction.java =================================================================== diff -u -reb02d23e4734503baf51538aefd7e345b0c45ec4 -redba2c28d900fba6e7bb761fb0a828aad979629e --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/BranchingAction.java (.../BranchingAction.java) (revision eb02d23e4734503baf51538aefd7e345b0c45ec4) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/BranchingAction.java (.../BranchingAction.java) (revision edba2c28d900fba6e7bb761fb0a828aad979629e) @@ -25,6 +25,7 @@ package org.lamsfoundation.lams.monitoring.web; import java.io.IOException; +import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; @@ -49,6 +50,7 @@ import org.lamsfoundation.lams.monitoring.service.IMonitoringService; import org.lamsfoundation.lams.monitoring.service.MonitoringServiceProxy; import org.lamsfoundation.lams.usermanagement.User; +import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.action.LamsDispatchAction; import org.lamsfoundation.lams.web.util.AttributeNames; @@ -70,11 +72,15 @@ //--------------------------------------------------------------------- - private static final String VIEW_BRANCHES_SCREEN = "viewBranches"; + protected static final String VIEW_BRANCHES_SCREEN = "viewBranches"; + protected static final String CHOSEN_SELECTION_SCREEN = "chosenSelection"; public static final String PARAM_BRANCHING_DTO = "branching"; public static final String PARAM_SHOW_GROUP_NAME = "showGroupName"; /** If localFiles = true will be written to a local file for export portfolio */ - public static final String PARAM_LOCAL_FILES= "localFiles"; + public static final String PARAM_LOCAL_FILES= "localFiles"; + public static final String PARAM_MAY_DELETE = "mayDelete"; + public static final String PARAM_MODULE_LANGUAGE_XML = "languageXML"; + protected static final String PARAM_VIEW_MODE = "viewMode"; /** * Export Portfolio Page @@ -119,6 +125,9 @@ request.setAttribute(AttributeNames.PARAM_LESSON_ID, lessonId); request.setAttribute(AttributeNames.PARAM_TITLE, activity.getTitle()); request.setAttribute(PARAM_LOCAL_FILES, useLocalFiles); + request.setAttribute(PARAM_MODULE_LANGUAGE_XML, getLanguageXML()); + request.setAttribute(PARAM_MAY_DELETE, Boolean.FALSE); + request.setAttribute(PARAM_VIEW_MODE, Boolean.TRUE); // only show the group names if this is a group based branching activity - the names // are meaningless for chosen and tool based branching @@ -128,7 +137,7 @@ if ( log.isDebugEnabled() ) { log.debug("viewBranching: Branching activity "+dto); } - return mapping.findForward(VIEW_BRANCHES_SCREEN); + return mapping.findForward(CHOSEN_SELECTION_SCREEN); } // Can't do this in BranchingDTO (although that's where it should be) as we have @@ -170,6 +179,29 @@ dto.setBranches(branches); return dto; } + + /** + * @return String of xml with all needed language elements + */ + protected String getLanguageXML(){ + IMonitoringService monitoringService = MonitoringServiceProxy.getMonitoringService(getServlet().getServletContext()); + MessageService messageService = monitoringService.getMessageService(); + ArrayList languageCollection = new ArrayList(); + languageCollection.add(new String("button.finished")); + languageCollection.add(new String("label.branching.non.allocated.users.heading")); + languageCollection.add(new String("label.grouping.status")); + languageCollection.add(new String("label.grouping.learners")); + languageCollection.add(new String("error.title")); + + String languageOutput = ""; + + for(int i = 0; i < languageCollection.size(); i++){ + languageOutput += "" + messageService.getMessage(languageCollection.get(i)) + ""; + } + + languageOutput += ""; + + return languageOutput; + } - } Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/ChosenBranchingAJAXAction.java =================================================================== diff -u -r08be5501aa8570c5fa4c6e50aa615334c171ee58 -redba2c28d900fba6e7bb761fb0a828aad979629e --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/ChosenBranchingAJAXAction.java (.../ChosenBranchingAJAXAction.java) (revision 08be5501aa8570c5fa4c6e50aa615334c171ee58) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/ChosenBranchingAJAXAction.java (.../ChosenBranchingAJAXAction.java) (revision edba2c28d900fba6e7bb761fb0a828aad979629e) @@ -25,6 +25,7 @@ package org.lamsfoundation.lams.monitoring.web; import java.io.IOException; +import java.util.ArrayList; import java.util.SortedSet; import java.util.TreeSet; @@ -45,6 +46,7 @@ import org.lamsfoundation.lams.monitoring.service.MonitoringServiceProxy; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.util.LastNameAlphabeticComparator; +import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.util.AttributeNames; @@ -70,9 +72,7 @@ //--------------------------------------------------------------------- - private static final String CHOSEN_SELECTION_SCREEN = "chosenSelection"; public static final String PARAM_BRANCH_ID = "branchID"; - public static final String PARAM_MAY_DELETE = "mayDelete"; public static final String PARAM_MEMBERS = "members"; /** @@ -86,6 +86,7 @@ Long activityID = WebUtil.readLongParam(request, AttributeNames.PARAM_ACTIVITY_ID); Long lessonId = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); + IMonitoringService monitoringService = MonitoringServiceProxy.getMonitoringService(getServlet().getServletContext()); BranchingActivity activity = (BranchingActivity) monitoringService.getActivityById(activityID, BranchingActivity.class); @@ -97,6 +98,8 @@ request.setAttribute(AttributeNames.PARAM_ACTIVITY_ID, activityID); request.setAttribute(AttributeNames.PARAM_LESSON_ID, lessonId); request.setAttribute(AttributeNames.PARAM_TITLE, activity.getTitle()); + request.setAttribute(PARAM_MODULE_LANGUAGE_XML, getLanguageXML()); + request.setAttribute(PARAM_VIEW_MODE, Boolean.FALSE); // can we still move users? boolean usersStartedBranching = monitoringService.isActivityAttempted(activity); @@ -133,30 +136,8 @@ // build the output string to return to the chosen branching page. // there should only ever be one group for each branch in chosen branching - String branchesOutput = ""; + String branchesOutput = buildBranchStringXML(sortedBranches, monitoringService); - boolean first = true; - for ( Activity childActivity : sortedBranches ) { - - SequenceActivity branch = (SequenceActivity) monitoringService.getActivityById(childActivity.getActivityId(), SequenceActivity.class); - - Long branchId = branch.getActivityId(); - String name = branch.getTitle(); - int numberOfMembers = 0; - - Group group = branch.getSoleGroupForBranch(); - if ( group != null ) - numberOfMembers = group.getUsers().size(); - - if ( ! first ) { - branchesOutput=branchesOutput+";"; - } else { - first = false; - } - - branchesOutput=branchesOutput+branchId+","+name+","+numberOfMembers; - } - if ( log.isDebugEnabled() ) { log.debug("getBranches activity id "+activityID+" returning "+branchesOutput); } @@ -181,7 +162,7 @@ Long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); IMonitoringService monitoringService = MonitoringServiceProxy.getMonitoringService(getServlet().getServletContext()); SortedSet users = monitoringService.getClassMembersNotGrouped(lessonID, activityID, false); - String groupOutput = buildUserString(users); + String groupOutput = buildUserStringXML(-1, users); writeAJAXResponse(response, groupOutput); return null; @@ -208,7 +189,7 @@ if ( group != null ) { SortedSet sortedUsers = new TreeSet(new LastNameAlphabeticComparator()); sortedUsers.addAll(group.getUsers()); - userOutput = buildUserString(sortedUsers); + userOutput = buildUserStringXML(branchID, sortedUsers); } if ( log.isDebugEnabled() ) { @@ -241,7 +222,98 @@ } return userOutput; } + + /** + * Output format: xml + * @param branchId + * @param sortedUsers + * @return String of users + */ + private String buildUserStringXML(long branchId, SortedSet sortedUsers) { + String userOutput = ""; + userOutput += "" + branchId + ""; + userOutput += ""; + for ( User user : sortedUsers ) { + Integer userID = user.getUserId(); + String lastName = user.getLastName(); + String firstName = user.getFirstName(); + userOutput+=""; + userOutput+="" + userID + ""; + userOutput+="" + firstName + ""; + userOutput+="" + lastName + ""; + userOutput+="" + firstName + " " + lastName + ""; + userOutput+=""; + } + userOutput += ""; + return userOutput; + } + + /** + * Output format: + * @param TreeSet sortedBranches + * @param IMonitoringService monitoringService + * @return String of branches in some strange format + */ + private String buildBranchString(TreeSet sortedBranches, IMonitoringService monitoringService){ + String branchesOutput = ""; + + boolean first = true; + for ( Activity childActivity : sortedBranches ) { + + SequenceActivity branch = (SequenceActivity) monitoringService.getActivityById(childActivity.getActivityId(), SequenceActivity.class); + + Long branchId = branch.getActivityId(); + String name = branch.getTitle(); + int numberOfMembers = 0; + + Group group = branch.getSoleGroupForBranch(); + if ( group != null ) + numberOfMembers = group.getUsers().size(); + + if ( ! first ) { + branchesOutput=branchesOutput+";"; + } else { + first = false; + } + + branchesOutput=branchesOutput+branchId+","+name+","+numberOfMembers; + } + + return branchesOutput; + } + + /** + * Output format: xml + * @param TreeSet sortedBranches + * @param IMonitoringService monitoringService + * @return String of branches in xml format + */ + private String buildBranchStringXML(TreeSet sortedBranches, IMonitoringService monitoringService){ + String branchOutput = ""; + for (Activity childActivity : sortedBranches) { + + SequenceActivity branch = (SequenceActivity) monitoringService.getActivityById(childActivity.getActivityId(), SequenceActivity.class); + + Long branchId = branch.getActivityId(); + String name = branch.getTitle(); + int numberOfMembers = 0; + + Group group = branch.getSoleGroupForBranch(); + if ( group != null ) + numberOfMembers = group.getUsers().size(); + + branchOutput+=""; + branchOutput+="" + branchId + ""; + branchOutput+="" + name + ""; + branchOutput+="" + numberOfMembers + ""; + branchOutput+=""; + } + branchOutput += ""; + + return branchOutput; + } + /** * Add learners to a group. Designed to respond to an AJAX call. * Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/GroupingAJAXAction.java =================================================================== diff -u -r4817e3da1eb7dc61568fc813da2eb0cf383aec46 -redba2c28d900fba6e7bb761fb0a828aad979629e --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/GroupingAJAXAction.java (.../GroupingAJAXAction.java) (revision 4817e3da1eb7dc61568fc813da2eb0cf383aec46) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/GroupingAJAXAction.java (.../GroupingAJAXAction.java) (revision edba2c28d900fba6e7bb761fb0a828aad979629e) @@ -26,6 +26,8 @@ import java.io.IOException; import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.Collection; import java.util.Iterator; import java.util.Set; import java.util.SortedSet; @@ -53,6 +55,7 @@ import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.dto.UserDTO; import org.lamsfoundation.lams.usermanagement.util.LastNameAlphabeticComparator; +import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.web.action.LamsDispatchAction; import org.lamsfoundation.lams.web.session.SessionManager; @@ -91,6 +94,8 @@ public static final String PARAM_MEMBERS = "members"; public static final String PARAM_MAY_DELETE = "mayDelete"; public static final String PARAM_USED_FOR_BRANCHING = "usedForBranching"; + public static final String PARAM_MODULE_LANGUAGE_XML = "languageXML"; + public static final String PARAM_VIEW_MODE = "viewMode"; private Integer getUserId(HttpServletRequest request) { HttpSession ss = SessionManager.getSession(); @@ -128,11 +133,12 @@ log.error(error); throw new MonitoringServiceException(error); } - + request.setAttribute(AttributeNames.PARAM_ACTIVITY_ID, activityID); request.setAttribute(AttributeNames.PARAM_LESSON_ID, lessonId); request.setAttribute(PARAM_ACTIVITY_TITLE, activity.getTitle()); request.setAttribute(PARAM_ACTIVITY_DESCRIPTION, activity.getDescription()); + request.setAttribute(PARAM_MODULE_LANGUAGE_XML, getLanguageXML()); if ( grouping.isChosenGrouping() ) { // can I remove groups/users - can't if tool sessions have been created @@ -153,15 +159,15 @@ request.setAttribute(PARAM_MAY_DELETE, mayDelete); request.setAttribute(PARAM_USED_FOR_BRANCHING, usedForBranching); request.setAttribute(PARAM_MAX_NUM_GROUPS, grouping.getMaxNumberOfGroups()); + request.setAttribute(PARAM_VIEW_MODE, Boolean.FALSE); return mapping.findForward(CHOSEN_GROUPING_SCREEN); } else { // go to a view only screen for random grouping - SortedSet groups = new TreeSet(new GroupComparator()); - groups.addAll(grouping.getGroups()); - request.setAttribute(PARAM_GROUPS,groups); + request.setAttribute(PARAM_MAY_DELETE, Boolean.FALSE); + request.setAttribute(PARAM_VIEW_MODE, Boolean.TRUE); return mapping.findForward(VIEW_GROUPS_SCREEN); } @@ -185,21 +191,8 @@ Grouping grouping = getGrouping(activity); Set sortedGroups = new TreeSet(new GroupComparator()); sortedGroups.addAll(grouping.getGroups()); - - // build the output string to return to the chosen grouping page. - String groupOutput = ""; - boolean first = true; - for ( Group group: sortedGroups ) { - Long groupId = group.getGroupId(); - String name = group.getGroupName(); - Integer numberOfMembers = group.getUsers().size(); - if ( ! first ) { - groupOutput=groupOutput+";"; - } else { - first = false; - } - groupOutput=groupOutput+groupId+","+name+","+numberOfMembers; - } + + String groupOutput = buildGroupsStringXML(sortedGroups); writeAJAXResponse(response, groupOutput); return null; } @@ -220,7 +213,7 @@ Long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID); IMonitoringService monitoringService = MonitoringServiceProxy.getMonitoringService(getServlet().getServletContext()); SortedSet users = monitoringService.getClassMembersNotGrouped(lessonID, activityID, true); - String groupOutput = buildUserString(users); + String groupOutput = buildUserStringXML(-1 ,users); writeAJAXResponse(response, groupOutput); return null; @@ -261,7 +254,7 @@ Set users = group.getUsers(); SortedSet sortedUsers = new TreeSet(new LastNameAlphabeticComparator()); sortedUsers.addAll(users); - String userOutput = buildUserString(sortedUsers); + String userOutput = buildUserStringXML(groupID, sortedUsers); writeAJAXResponse(response, userOutput); return null; } @@ -289,6 +282,144 @@ return userOutput; } + /** + * @param sortedUsers + * @return String of users + */ + private String buildUserStringXML(long groupId, SortedSet sortedUsers) { + String userOutput = ""; + userOutput += "" + groupId + ""; + userOutput += ""; + for ( User user : sortedUsers ) { + Integer userID = user.getUserId(); + String lastName = user.getLastName(); + String firstName = user.getFirstName(); + + userOutput+=""; + userOutput+="" + userID + ""; + userOutput+="" + firstName + ""; + userOutput+="" + lastName + ""; + userOutput+="" + firstName + " " + lastName + ""; + userOutput+=""; + } + userOutput += ""; + return userOutput; + } + + /** + * @param sortedGroups + * @return String of groups + */ + private String buildGroupsString(Set sortedGroups) { + String groupOutput = ""; + + boolean first = true; + for ( Group group: sortedGroups ) { + Long groupId = group.getGroupId(); + String name = group.getGroupName(); + Integer numberOfMembers = group.getUsers().size(); + if ( ! first ) { + groupOutput=groupOutput+";"; + } else { + first = false; + } + groupOutput=groupOutput+groupId+","+name+","+numberOfMembers; + } + + return groupOutput; + } + + /** + * @param sortedGroups + * @return String of groups + */ + private String buildGroupsStringXML(Set sortedGroups) { + String groupOutput = ""; + for ( Group group: sortedGroups ) { + Long groupId = group.getGroupId(); + String name = group.getGroupName(); + Integer numberOfMembers = group.getUsers().size(); + + groupOutput+=""; + groupOutput+="" + groupId + ""; + groupOutput+="" + name + ""; + groupOutput+="" + numberOfMembers + ""; + groupOutput+=""; + } + groupOutput += ""; + + return groupOutput; + } + + /** + * @param group + * @return String of xml with group added + */ + private String buildAddGroupStringXML(Group group) { + String groupOutput = ""; + groupOutput += "" + group.getGroupId() + ""; + groupOutput += "" + group.getGroupName() + ""; + groupOutput += ""; + return groupOutput; + } + + /** + * @param group + * @return String of xml with group added + */ + private String buildRemoveGroupStringXML(Long groupID) { + String groupOutput = ""; + groupOutput += "" + groupID + ""; + groupOutput += ""; + return groupOutput; + } + + /** + * @param group + * @return String of xml with group added + */ + private String buildChangeGroupNameStringXML(Long groupID, String name) { + String groupOutput = ""; + groupOutput += "" + groupID + ""; + groupOutput += "" + name + ""; + groupOutput += ""; + return groupOutput; + } + + /** + * @return String of xml with all needed language elements + */ + private String getLanguageXML(){ + IMonitoringService monitoringService = MonitoringServiceProxy.getMonitoringService(getServlet().getServletContext()); + MessageService messageService = monitoringService.getMessageService(); + ArrayList languageCollection = new ArrayList(); + languageCollection.add(new String("button.finished")); + languageCollection.add(new String("label.grouping.non.grouped.users.heading")); + languageCollection.add(new String("label.grouping.status")); + languageCollection.add(new String("label.grouping.functions")); + languageCollection.add(new String("label.grouping.popup.change.group.name")); + languageCollection.add(new String("label.grouping.popup.change.group.name.field")); + languageCollection.add(new String("label.grouping.learners")); + languageCollection.add(new String("label.grouping.popup.delete.group")); + languageCollection.add(new String("label.grouping.popup.delete.group.message")); + languageCollection.add(new String("button.ok")); + languageCollection.add(new String("button.cancel")); + languageCollection.add(new String("button.yes")); + languageCollection.add(new String("button.no")); + languageCollection.add(new String("error.title")); + languageCollection.add(new String("label.grouping.max.num.in.group.heading")); + + String languageOutput = ""; + + for(int i = 0; i < languageCollection.size(); i++){ + languageOutput += "" + messageService.getMessage(languageCollection.get(i)) + ""; + } + + languageOutput += ""; + + return languageOutput; + } + /** * Add a new group. Designed to respond to an AJAX call. * If the teacher wants to add more groups than the number of groups set in authoring, and this grouping @@ -305,8 +436,9 @@ Long activityID = WebUtil.readLongParam(request, AttributeNames.PARAM_ACTIVITY_ID); String name = WebUtil.readStrParam(request, PARAM_NAME); IMonitoringService monitoringService = MonitoringServiceProxy.getMonitoringService(getServlet().getServletContext()); - monitoringService.addGroup(activityID, name, true); - writeAJAXResponse(response,""); + Group group = monitoringService.addGroup(activityID, name, true); + String groupResponse = buildAddGroupStringXML(group); + writeAJAXResponse(response,groupResponse); return null; } @@ -326,7 +458,8 @@ IMonitoringService monitoringService = MonitoringServiceProxy.getMonitoringService(getServlet().getServletContext()); monitoringService.removeGroup(activityID, groupID); - writeAJAXOKResponse(response); + String responseString = buildRemoveGroupStringXML(groupID); + writeAJAXResponse(response, responseString); return null; } @@ -345,14 +478,36 @@ Long groupID = WebUtil.readLongParam(request, AttributeNames.PARAM_GROUP_ID); String members = WebUtil.readStrParam(request, PARAM_MEMBERS, true); if ( members != null ) { - String[] membersSplit = members.split(","); + String[] membersSplit = members.split(","); IMonitoringService monitoringService = MonitoringServiceProxy.getMonitoringService(getServlet().getServletContext()); monitoringService.addUsersToGroup(activityID, groupID, membersSplit); } writeAJAXOKResponse(response); return null; } + + /** + * Add learners to a group. Designed to respond to an AJAX call. + * + * Input parameters: activityID, name: group name, members: comma separated list of users + * + * Output format: no data returned - just the header + */ + public ActionForward changeGroupName(ActionMapping mapping, + ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws IOException, ServletException, LessonServiceException { + Long groupID = WebUtil.readLongParam(request, AttributeNames.PARAM_GROUP_ID); + String name = WebUtil.readStrParam(request, PARAM_NAME, true); + if ( name != null ) { + IMonitoringService monitoringService = MonitoringServiceProxy.getMonitoringService(getServlet().getServletContext()); + monitoringService.setGroupName(groupID, name); + } + String reponseSting = buildChangeGroupNameStringXML(groupID, name); + writeAJAXResponse(response, reponseSting); + return null; + } + /** * Remove a list of users from a group. Designed to respond to an AJAX call. * @@ -375,5 +530,4 @@ writeAJAXOKResponse(response); return null; } - } Index: lams_monitoring/web/branching/BranchManager.swf =================================================================== diff -u Binary files differ Index: lams_monitoring/web/branching/chosenSelection.jsp =================================================================== diff -u -r5822fa33a4644a07c816fa58c4a0e083e908c4a9 -redba2c28d900fba6e7bb761fb0a828aad979629e --- lams_monitoring/web/branching/chosenSelection.jsp (.../chosenSelection.jsp) (revision 5822fa33a4644a07c816fa58c4a0e083e908c4a9) +++ lams_monitoring/web/branching/chosenSelection.jsp (.../chosenSelection.jsp) (revision edba2c28d900fba6e7bb761fb0a828aad979629e) @@ -34,290 +34,21 @@ <c:out value="${title}"/> - + + - - - +
@@ -334,43 +65,84 @@

 

- - - - - - - - - - - - - - - - - -
- - - - - -
-   - - " onclick="addMembersToBranch()" disabled="true"/> - - " onclick="removeMembersFromBranch()" disabled="true"/> -
- <%@ include file="../template/finishbutton.jsp" %> - - + +
+ +
+
Index: lams_monitoring/web/branching/viewBranches.jsp =================================================================== diff -u -r3a4c502dd96ac40fd96827f36bc450158b145113 -redba2c28d900fba6e7bb761fb0a828aad979629e --- lams_monitoring/web/branching/viewBranches.jsp (.../viewBranches.jsp) (revision 3a4c502dd96ac40fd96827f36bc450158b145113) +++ lams_monitoring/web/branching/viewBranches.jsp (.../viewBranches.jsp) (revision edba2c28d900fba6e7bb761fb0a828aad979629e) @@ -26,7 +26,18 @@ <%@ taglib uri="tags-core" prefix="c" %> <%@ taglib uri="tags-lams" prefix="lams" %> + + +

@@ -36,34 +47,82 @@

- - - - - - - - - - - - -
 
- - - - -
-
- -
-
-
-
+
+ + +
Index: lams_monitoring/web/grouping/GroupManager.swf =================================================================== diff -u Binary files differ Index: lams_monitoring/web/grouping/chosenGrouping.jsp =================================================================== diff -u -r5822fa33a4644a07c816fa58c4a0e083e908c4a9 -redba2c28d900fba6e7bb761fb0a828aad979629e --- lams_monitoring/web/grouping/chosenGrouping.jsp (.../chosenGrouping.jsp) (revision 5822fa33a4644a07c816fa58c4a0e083e908c4a9) +++ lams_monitoring/web/grouping/chosenGrouping.jsp (.../chosenGrouping.jsp) (revision edba2c28d900fba6e7bb761fb0a828aad979629e) @@ -34,422 +34,21 @@ <c:out value="${title}"/> - + + - - - +
@@ -476,49 +75,82 @@

- - - - - - - - - - - - - - - - - - - - -
- - - - - -
- " onclick="removeGroup()" disabled="true"/> - - " onclick="addMembersToGroup()" disabled="true"/> - - " onclick="removeMembersFromGroup()" disabled="true"/> -
-
- " onclick="addGroup()" /> -
- <%@ include file="../template/finishbutton.jsp" %> - - + +
+ +
+
Index: lams_monitoring/web/grouping/viewGroups.jsp =================================================================== diff -u -rc209be8131f22f6fe37bd8d6c14b56425a78b766 -redba2c28d900fba6e7bb761fb0a828aad979629e --- lams_monitoring/web/grouping/viewGroups.jsp (.../viewGroups.jsp) (revision c209be8131f22f6fe37bd8d6c14b56425a78b766) +++ lams_monitoring/web/grouping/viewGroups.jsp (.../viewGroups.jsp) (revision edba2c28d900fba6e7bb761fb0a828aad979629e) @@ -26,7 +26,18 @@ <%@ taglib uri="tags-core" prefix="c" %> <%@ taglib uri="tags-lams" prefix="lams" %> + + +

@@ -36,31 +47,80 @@

- - -

-
- - - - - - - - - - -
- - - -
-
-
-
-
+
+ + +