Index: lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java =================================================================== diff -u -r660fde180a1b4dbfbe304df8eeef71459aa91f95 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java (.../ObjectExtractor.java) (revision 660fde180a1b4dbfbe304df8eeef71459aa91f95) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/ObjectExtractor.java (.../ObjectExtractor.java) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -32,8 +32,10 @@ import java.util.Vector; import org.apache.log4j.Logger; +import org.lamsfoundation.lams.dao.hibernate.BaseDAO; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.ChosenGrouping; +import org.lamsfoundation.lams.learningdesign.ComplexActivity; import org.lamsfoundation.lams.learningdesign.GateActivity; import org.lamsfoundation.lams.learningdesign.Group; import org.lamsfoundation.lams.learningdesign.Grouping; @@ -43,7 +45,6 @@ import org.lamsfoundation.lams.learningdesign.License; import org.lamsfoundation.lams.learningdesign.OptionsActivity; import org.lamsfoundation.lams.learningdesign.ParallelActivity; -import org.lamsfoundation.lams.learningdesign.ComplexActivity; import org.lamsfoundation.lams.learningdesign.PermissionGateActivity; import org.lamsfoundation.lams.learningdesign.RandomGrouping; import org.lamsfoundation.lams.learningdesign.ScheduleGateActivity; @@ -59,11 +60,12 @@ import org.lamsfoundation.lams.learningdesign.dao.hibernate.LicenseDAO; import org.lamsfoundation.lams.learningdesign.dao.hibernate.TransitionDAO; import org.lamsfoundation.lams.lesson.LessonClass; +import org.lamsfoundation.lams.tool.SystemTool; import org.lamsfoundation.lams.tool.Tool; +import org.lamsfoundation.lams.tool.dao.hibernate.SystemToolDAO; import org.lamsfoundation.lams.tool.dao.hibernate.ToolDAO; import org.lamsfoundation.lams.usermanagement.User; import org.lamsfoundation.lams.usermanagement.WorkspaceFolder; -import org.lamsfoundation.lams.dao.hibernate.BaseDAO; import org.lamsfoundation.lams.util.wddx.WDDXProcessor; import org.lamsfoundation.lams.util.wddx.WDDXProcessorConversionException; import org.lamsfoundation.lams.util.wddx.WDDXTAGS; @@ -97,6 +99,7 @@ protected LicenseDAO licenseDAO = null; protected GroupingDAO groupingDAO = null; protected ToolDAO toolDAO = null; + protected SystemToolDAO systemToolDAO = null; protected GroupDAO groupDAO = null; /** The newActivityMap is a local copy of all the current activities. This will include @@ -122,7 +125,7 @@ public ObjectExtractor(BaseDAO baseDAO, LearningDesignDAO learningDesignDAO, ActivityDAO activityDAO, LearningLibraryDAO learningLibraryDAO, LicenseDAO licenseDAO, - GroupingDAO groupingDAO, ToolDAO toolDAO, + GroupingDAO groupingDAO, ToolDAO toolDAO, SystemToolDAO systemToolDAO, GroupDAO groupDAO,TransitionDAO transitionDAO) { this.baseDAO = baseDAO; this.learningDesignDAO = learningDesignDAO; @@ -131,6 +134,7 @@ this.licenseDAO = licenseDAO; this.groupingDAO = groupingDAO; this.toolDAO = toolDAO; + this.systemToolDAO = systemToolDAO; this.groupDAO = groupDAO; this.transitionDAO = transitionDAO; } @@ -200,6 +204,15 @@ this.toolDAO = toolDAO; } + + public SystemToolDAO getSystemToolDAO() { + return systemToolDAO; + } + + public void setSystemToolDAO(SystemToolDAO systemToolDAO) { + this.systemToolDAO = systemToolDAO; + } + public TransitionDAO getTransitionDAO() { return transitionDAO; } @@ -715,6 +728,10 @@ groupingActivity.setCreateGrouping(grouping); groupingActivity.setCreateGroupingUIID(createGroupingUIID); } + + SystemTool systemTool = systemToolDAO.getSystemToolByID(SystemTool.GROUPING); + groupingActivity.setSystemTool(systemTool); + /*Hashtable groupingDetails = (Hashtable) activityDetails.get(WDDXTAGS.GROUPING_DTO); if( groupingDetails != null ){ Grouping grouping = extractGroupingObject(groupingDetails); @@ -761,14 +778,20 @@ } private void buildSynchGateActivity(SynchGateActivity activity,Hashtable activityDetails) throws WDDXProcessorConversionException{ + SystemTool systemTool = systemToolDAO.getSystemToolByID(SystemTool.SYNC_GATE); + activity.setSystemTool(systemTool); } private void buildPermissionGateActivity(PermissionGateActivity activity,Hashtable activityDetails) throws WDDXProcessorConversionException{ + SystemTool systemTool = systemToolDAO.getSystemToolByID(SystemTool.PERMISSION_GATE); + activity.setSystemTool(systemTool); } - private static void buildScheduleGateActivity(ScheduleGateActivity activity,Hashtable activityDetails) throws WDDXProcessorConversionException{ + private void buildScheduleGateActivity(ScheduleGateActivity activity,Hashtable activityDetails) throws WDDXProcessorConversionException{ //activity.setGateStartDateTime(WDDXProcessor.convertToDate(activityDetails,WDDXTAGS.GATE_START_DATE)); //activity.setGateEndDateTime(WDDXProcessor.convertToDate(activityDetails,WDDXTAGS.GATE_END_DATE)); activity.setGateStartTimeOffset(WDDXProcessor.convertToLong(activityDetails,WDDXTAGS.GATE_START_OFFSET)); activity.setGateEndTimeOffset(WDDXProcessor.convertToLong(activityDetails,WDDXTAGS.GATE_END_OFFSET)); + SystemTool systemTool = systemToolDAO.getSystemToolByID(SystemTool.SCHEDULE_GATE); + activity.setSystemTool(systemTool); } Index: lams_central/src/java/org/lamsfoundation/lams/authoring/authoringApplicationContext.xml =================================================================== diff -u -r660fde180a1b4dbfbe304df8eeef71459aa91f95 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_central/src/java/org/lamsfoundation/lams/authoring/authoringApplicationContext.xml (.../authoringApplicationContext.xml) (revision 660fde180a1b4dbfbe304df8eeef71459aa91f95) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/authoringApplicationContext.xml (.../authoringApplicationContext.xml) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -28,6 +28,7 @@ + Index: lams_central/web/WEB-INF/lams.tld =================================================================== diff -u -rd52b0a9ea260d27335a647fc2fba615c8e2e228e -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_central/web/WEB-INF/lams.tld (.../lams.tld) (revision d52b0a9ea260d27335a647fc2fba615c8e2e228e) +++ lams_central/web/WEB-INF/lams.tld (.../lams.tld) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -302,9 +302,15 @@ headItems /WEB-INF/tags/headItems.tag + + - Passon - /WEB-INF/tags/Passon.tag + Passon + /WEB-INF/tags/Passon.tag + + ExportPortOutput + /WEB-INF/tags/ExportPortOutput.tag + Index: lams_central/web/WEB-INF/struts/struts-config.xml =================================================================== diff -u -rb3da97f5c8cfdd02a2c2cb566dcee601100f3c07 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_central/web/WEB-INF/struts/struts-config.xml (.../struts-config.xml) (revision b3da97f5c8cfdd02a2c2cb566dcee601100f3c07) +++ lams_central/web/WEB-INF/struts/struts-config.xml (.../struts-config.xml) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -63,11 +63,10 @@ /> @@ -124,13 +123,17 @@ path=".passwordChange" redirect="false" /> + Index: lams_central/web/WEB-INF/tags/ExportPortOutput.tag =================================================================== diff -u --- lams_central/web/WEB-INF/tags/ExportPortOutput.tag (revision 0) +++ lams_central/web/WEB-INF/tags/ExportPortOutput.tag (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -0,0 +1,59 @@ +<% +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + + /** + * Passon + * Author: Fiona Malikoff + * Description: Outputs the Activity details on the main page in export portfolio. Recursive tag. + * + */ + + %> +<%@ tag body-content="empty" %> +<%@ attribute name="actport" required="true" rtexprvalue="true" type="org.lamsfoundation.lams.learning.export.ActivityPortfolio" %> +<%@ taglib uri="tags-core" prefix="c" %> +<%@ taglib uri="tags-lams" prefix="lams" %> + +
  • + + + "/> + + + + + + + + +
      + + + +
    +
    +
    + +
  • + Index: lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml =================================================================== diff -u -r56dc9e59c9512b28858b2da10f756103010d9cca -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml (.../Activity.hbm.xml) (revision 56dc9e59c9512b28858b2da10f756103010d9cca) +++ lams_common/conf/hibernate/mappings/org/lamsfoundation/lams/learningdesign/Activity.hbm.xml (.../Activity.hbm.xml) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -153,59 +153,70 @@ - - @hibernate.class - - - @hibernate.property column="create_grouping_ui_id" length="11" - - - - - - - - - - @hibernate.class - - - - - - - - + + @hibernate.class + public abstract + + + + + + + @hibernate.class - - @hibernate.property column="gate_start_time_offset" length="20" - true - - - - @hibernate.property column="gate_end_time_offset" length="20" - true - - - - @hibernate.property column="gate_start_date_time" length="19" - true - - - - @hibernate.property column="gate_end_date_time" length="19" - true - - + + @hibernate.property column="create_grouping_ui_id" length="11" + + + + + + - + + @hibernate.class - - - @hibernate.class - - + + + + + + + + + @hibernate.class + + + @hibernate.property column="gate_start_time_offset" length="20" + true + + + + @hibernate.property column="gate_end_time_offset" length="20" + true + + + + @hibernate.property column="gate_start_date_time" length="19" + true + + + + @hibernate.property column="gate_end_date_time" length="19" + true + + + + + @hibernate.class + + + @hibernate.class + + + + Index: lams_common/db/model/lams_11.clay =================================================================== diff -u -r0ec0d87a13f5cd499a8300d7a51a6d453108545e -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_common/db/model/lams_11.clay (.../lams_11.clay) (revision 0ec0d87a13f5cd499a8300d7a51a6d453108545e) +++ lams_common/db/model/lams_11.clay (.../lams_11.clay) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -1,2609 +1,2636 @@ - - + + - - + + - - - +
    + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - + + + + + - - + + - - + + - - + + - - + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - - + + + + + - - + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - - + + + + + - - + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - - + + + + + - - + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - - - + + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - + + + + + + + + + + + + + + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + + + + + + + + - - + + - - + + - - + + - - + + - - + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - - + + + + + - - + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - - - + + + + + - + When a lesson is started, the authored design is considered the orginial learning design - - + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - + + + - - - - - + + + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - + + - - + + - - + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - + + - - + + - - + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - + + + - - + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - + + - - + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - - + + + + + - - - + + + - - - + + + - - + + - - + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - + - - - - + + + + - + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - + + + + + - - + + - - + + - - + + - - + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - + + - - + + - - + + + + + + + + + - - + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - + + + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + + - - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + @@ -2612,412 +2639,412 @@
    - - - +
    + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - + Unique signature for each version of a tool. <organisation><tool><version> - - - + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - + Unique identifier for the tool. This should remain the same for every version of the tool. It will be used for the IMS LD import/export. - - - + + + - + Version of tool. Expected to be in format [major version.minor version] eg 1.2 - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - - - + + + + + - - + + - - + + - - + + - - + + - - + + @@ -3026,163 +3053,163 @@
    - - - +
    + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + @@ -3191,53 +3218,53 @@
    - - - +
    + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - + + - - + + - - + + @@ -3246,53 +3273,53 @@
    - - - +
    + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - + + - - + + - - + + @@ -3301,86 +3328,86 @@
    - - - +
    + + - - - - + + + + - - - + + + - - - - - + + + + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - + + - - + + - - + + @@ -3389,78 +3416,78 @@
    - - - +
    + + - - - - + + + + - - - + + + - - - - - + + + + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - + + - - + + @@ -3469,51 +3496,51 @@
    - - - +
    + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - + + - - + + - - + + @@ -3522,51 +3549,51 @@
    - - - +
    + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - + + - - + + - - + + @@ -3575,309 +3602,309 @@
    - - - +
    + + - - - - + + + + - - - + + + - - - - - + + + + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - - - + + + + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - - + + + + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - - + + + + + - - + +
    - +
    There will usually be 0 or 1 workspace for each tool in LAMS, so this should be a pretty small table. The main lookup is done on name, but given the small number of rows a complete table scan should be fine. A name index would probably be about the same size as the table anyway. - + - - - - + + + + - - - + + + - - - - - + + + + + - - + +
    - +
    Like lams_cr_workspace, there will usually be 0 or 1 workspace for each tool in LAMS, so this should be a pretty small table. The main lookup is done on name, but given the small number of rows a complete table scan should be fine. - + - - - - + + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - + + - - + + - - + + @@ -3886,67 +3913,67 @@
    - +
    Has a "dummy" id nv_id (node version id) which is unique for all node_id and version_id combinations. It is the node_id and version_id combination that is the "real" key for this table. - + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - + + - - + + @@ -3955,72 +3982,72 @@
    - - - +
    + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - - - + + + + - - + + - - + + @@ -4029,91 +4056,91 @@
    - +
    A node can only belong to one parent - so each time a new version of a package is created, all the nodes are recreated. - + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - + + - - + + @@ -4122,150 +4149,150 @@
    - - - +
    + + - - - - + + + + - - - + + + - - - - - + + + + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - - + + + + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - - - + + + + + - - + + - - + + @@ -4274,170 +4301,170 @@
    - - - +
    + + - - - - + + + + - - - + + + - - - - - + + + + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - + + + + + - - + + - - + + - - + + - - + + - - + + @@ -4446,105 +4473,105 @@
    - - - +
    + + - - - - + + + + - - - + + + - - - - - + + + + + - - + +
    - - - +
    + + - - - - + + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - + + - - + + @@ -4553,79 +4580,79 @@
    - - - +
    + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + - - - + + + - - - - + + + + - - + + - - + + @@ -4634,47 +4661,47 @@
    - +
    All the lams_css_property values matching this lams_css_style make up the CSSStyleDeclaration for this style. It may be a "base" style for a theme, or it may be for a named visual element. Each style may have a subset of properties, such as "_tf" - + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - + + - - + + @@ -4683,111 +4710,111 @@
    - +
    Url details for system tools such as gates and grouping - + - - - - + + + + - - - + + + - + Unique signature for each version of a tool. <organisation><tool><version> - - + + - - - + + + - - - - - + + + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - - + + - - + + - - + + @@ -4796,110 +4823,110 @@
    - +
    Individual permissions, such as read access to a content folder. - + - - - - + + + + - - - + + + - - - - - + + + + + - - - - - + + + + + - - + + - - + +
    - +
    Link table between lams_role and lams_privilege. - + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - + + - - + + - - + + @@ -4908,33 +4935,33 @@
    - - - +
    + + - - - - + + + + - - - + + + - - - - - + + + + + - - + + Index: lams_common/db/sql/create_lams_11_tables.sql =================================================================== diff -u -r0ec0d87a13f5cd499a8300d7a51a6d453108545e -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_common/db/sql/create_lams_11_tables.sql (.../create_lams_11_tables.sql) (revision 0ec0d87a13f5cd499a8300d7a51a6d453108545e) +++ lams_common/db/sql/create_lams_11_tables.sql (.../create_lams_11_tables.sql) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -469,6 +469,7 @@ , create_grouping_ui_id INT(11) , library_activity_id BIGINT(20) , language_file VARCHAR(255) + , system_tool_id BIGINT(20) , PRIMARY KEY (activity_id) , INDEX (learning_library_id) , CONSTRAINT FK_lams_learning_activity_7 FOREIGN KEY (learning_library_id) @@ -503,6 +504,9 @@ , INDEX (grouping_support_type_id) , CONSTRAINT FK_lams_learning_activity_13 FOREIGN KEY (grouping_support_type_id) REFERENCES lams_grouping_support_type (grouping_support_type_id) + , INDEX (system_tool_id) + , CONSTRAINT FK_lams_learning_activity_14 FOREIGN KEY (system_tool_id) + REFERENCES lams_system_tool (system_tool_id) )TYPE=InnoDB; CREATE TABLE lams_lesson ( Index: lams_common/db/sql/insert_types_data.sql =================================================================== diff -u -r8a59c74d7ef56cedd32135410a7d95a26ce3c91f -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_common/db/sql/insert_types_data.sql (.../insert_types_data.sql) (revision 8a59c74d7ef56cedd32135410a7d95a26ce3c91f) +++ lams_common/db/sql/insert_types_data.sql (.../insert_types_data.sql) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -132,8 +132,8 @@ export_pfolio_class_url, monitor_url, contribute_url, create_date_time) VALUES (1, 2, 'Grouping', 'All types of grouping including random and chosen.', 'learning/grouping.do?method=performGrouping', 'learning/grouping.do?method=performGrouping', - 'learning/grouping.do?method=viewGrouping', 'learning/grouping.do?method=viewGrouping', - 'learning/grouping.do?method=viewGrouping', + 'learning/grouping.do?method=viewGrouping', 'learning/groupingExportPortfolio?mode=learner', + 'learning/groupingExportPortfolio?mode=teacher', 'monitoring/grouping.do?method=startGrouping', 'monitoring/grouping.do?method=startGrouping', now() ); @@ -142,21 +142,24 @@ export_pfolio_class_url, monitor_url, contribute_url, create_date_time) VALUES (2, 3, 'Sync Gate', 'Gate: Synchronise Learners.', 'learning/gate.do?method=knockGate', 'learning/gate.do?method=knockGate', null, null, - null, 'monitoring/gate.do?method=viewGate', 'monitoring/gate.do?method=viewGate', now() ); + 'monitoring/gateExportPortfolio?mode=teacher', 'monitoring/gate.do?method=viewGate', + 'monitoring/gate.do?method=viewGate', now() ); INSERT INTO lams_system_tool (system_tool_id, learning_activity_type_id, tool_display_name, description, learner_url, learner_preview_url, learner_progress_url, export_pfolio_learner_url, export_pfolio_class_url, monitor_url, contribute_url, create_date_time) VALUES (3, 4, 'Schedule Gate', 'Gate: Opens/shuts at particular times.', 'learning/gate.do?method=knockGate', 'learning/gate.do?method=knockGate', null, null, - null, 'monitoring/gate.do?method=viewGate', 'monitoring/gate.do?method=viewGate', now() ); + 'monitoring/gateExportPortfolio?mode=teacher', 'monitoring/gate.do?method=viewGate', + 'monitoring/gate.do?method=viewGate', now() ); INSERT INTO lams_system_tool (system_tool_id, learning_activity_type_id, tool_display_name, description, learner_url, learner_preview_url, learner_progress_url, export_pfolio_learner_url, export_pfolio_class_url, monitor_url, contribute_url, create_date_time) VALUES (4, 5, 'Permission Gate', 'Gate: Opens under teacher or staff control.', 'learning/gate.do?method=knockGate', 'learning/gate.do?method=knockGate', null, null, - null, 'monitoring/gate.do?method=viewGate', 'monitoring/gate.do?method=viewGate', now() ); + 'monitoring/gateExportPortfolio?mode=teacher', 'monitoring/gate.do?method=viewGate', + 'monitoring/gate.do?method=viewGate', now() ); INSERT INTO lams_country VALUES (1, 'AU'); INSERT INTO lams_country VALUES (2, 'US'); Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java =================================================================== diff -u -r03392c988a23f5e9129967f8ae692488213632fe -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java (.../Activity.java) (revision 03392c988a23f5e9129967f8ae692488213632fe) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/Activity.java (.../Activity.java) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -813,12 +813,41 @@ } /** Create a deep copy of the this activity. It should return the same - * subclass as the activity being copied + * subclass as the activity being copied. Generally doesn't copy the "link" type + * fields like transitions, learning design, etc * @return deep copy of this object */ public abstract Activity createCopy(); - + protected void copyToNewActivity(Activity newActivity ) { + + newActivity.setActivityUIID(this.getActivityUIID()); + newActivity.setDescription(this.getDescription()); + newActivity.setTitle(this.getTitle()); + newActivity.setHelpText(this.getHelpText()); + newActivity.setXcoord(this.getXcoord()); + newActivity.setYcoord(this.getYcoord()); + newActivity.setActivityTypeId(this.getActivityTypeId()); + + newActivity.setGroupingSupportType(this.getGroupingSupportType()); + newActivity.setApplyGrouping(this.getApplyGrouping()); + newActivity.setActivityCategoryID(this.getActivityCategoryID()); + + newActivity.setGrouping(this.getGrouping()); + newActivity.setGroupingUIID(this.getGroupingUIID()); + + newActivity.setDefineLater(this.getDefineLater()); + newActivity.setCreateDateTime(new Date()); + newActivity.setRunOffline(this.getRunOffline()); + newActivity.setLearningLibrary(this.getLearningLibrary()); + newActivity.setLibraryActivity(this.getLibraryActivity()); + newActivity.setLibraryActivityUiImage(this.getLibraryActivityUiImage()); + newActivity.setLanguageFile(this.getLanguageFile()); + + newActivity.setOrderId(this.getOrderId()); + } + + // --------------------------------------------------------------------- // Data Validation methods //--------------------------------------------------------------------- Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/GateActivity.java =================================================================== diff -u -r0a3641cb6f80f0def4d3172ca10da9788a9268f4 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/GateActivity.java (.../GateActivity.java) (revision 0a3641cb6f80f0def4d3172ca10da9788a9268f4) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/GateActivity.java (.../GateActivity.java) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -30,6 +30,7 @@ import org.apache.commons.lang.builder.ToStringBuilder; import org.lamsfoundation.lams.learningdesign.strategy.GateActivityStrategy; +import org.lamsfoundation.lams.tool.SystemTool; import org.lamsfoundation.lams.usermanagement.User; @@ -77,7 +78,8 @@ Transition transitionFrom, String languageFile, Integer gateActivityLevelId, - Set waitingLearners) + Set waitingLearners, + SystemTool sysTool) { super(activityId, id, @@ -97,7 +99,8 @@ activityTypeId, transitionTo, transitionFrom, - languageFile); + languageFile, + sysTool); this.gateActivityLevelId = gateActivityLevelId; this.waitingLearners = waitingLearners; } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupingActivity.java =================================================================== diff -u -r3f60ecf7d3a92231a1089191ae75c68bc66e9595 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupingActivity.java (.../GroupingActivity.java) (revision 3f60ecf7d3a92231a1089191ae75c68bc66e9595) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/GroupingActivity.java (.../GroupingActivity.java) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -28,6 +28,7 @@ import org.apache.commons.lang.builder.ToStringBuilder; import org.lamsfoundation.lams.learningdesign.strategy.GroupingActivityStrategy; +import org.lamsfoundation.lams.tool.SystemTool; /** @@ -66,7 +67,8 @@ Grouping createGrouping, Integer grouping_ui_id, Integer create_grouping_ui_id, - String languageFile) + String languageFile, + SystemTool sysTool) { super(activityId, id, @@ -86,7 +88,8 @@ activityTypeId, transitionTo, transitionFrom, - languageFile); + languageFile, + sysTool); this.createGrouping = createGrouping; this.createGroupingUIID = create_grouping_ui_id; super.simpleActivityStrategy = new GroupingActivityStrategy(this); @@ -142,29 +145,11 @@ */ public Activity createCopy(){ GroupingActivity groupingActivity = new GroupingActivity(); - - groupingActivity.setActivityUIID(this.getActivityUIID()); - groupingActivity.setDescription(this.getDescription()); - groupingActivity.setTitle(this.getTitle()); - groupingActivity.setHelpText(this.getHelpText()); - groupingActivity.setXcoord(this.getXcoord()); - groupingActivity.setYcoord(this.getYcoord()); - groupingActivity.setActivityTypeId(this.getActivityTypeId()); - - groupingActivity.setGroupingSupportType(this.getGroupingSupportType()); - groupingActivity.setApplyGrouping(this.getApplyGrouping()); - groupingActivity.setActivityCategoryID(this.getActivityCategoryID()); - - groupingActivity.setDefineLater(this.getDefineLater()); - groupingActivity.setCreateDateTime(new Date()); - groupingActivity.setRunOffline(this.getRunOffline()); - groupingActivity.setLibraryActivityUiImage(this.getLibraryActivityUiImage()); - groupingActivity.setLanguageFile(this.getLanguageFile()); - + copyToNewActivity(groupingActivity); + groupingActivity.setCreateGroupingUIID(this.createGroupingUIID); Grouping currentGrouping = this.getCreateGrouping(); Grouping newGrouping = currentGrouping.createCopy(); groupingActivity.setCreateGrouping(newGrouping); - return groupingActivity; } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/OptionsActivity.java =================================================================== diff -u -rd1d6cf4ec5a79ec9371fdfda64ce634483d2a325 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/OptionsActivity.java (.../OptionsActivity.java) (revision d1d6cf4ec5a79ec9371fdfda64ce634483d2a325) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/OptionsActivity.java (.../OptionsActivity.java) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -128,34 +128,12 @@ } public Activity createCopy(){ OptionsActivity newOptionsActivity = new OptionsActivity(); - + copyToNewActivity(newOptionsActivity); + /** OptionsActivity Specific Attributes */ newOptionsActivity.setMaxNumberOfOptions(this.getMaxNumberOfOptions()); newOptionsActivity.setMinNumberOfOptions(this.getMinNumberOfOptions()); newOptionsActivity.setOptionsInstructions(this.getOptionsInstructions()); - - /** Generic Activity Attributes */ - newOptionsActivity.setActivityUIID(this.getActivityUIID()); - newOptionsActivity.setDescription(this.getDescription()); - newOptionsActivity.setTitle(this.getTitle()); - newOptionsActivity.setHelpText(this.getHelpText()); - newOptionsActivity.setXcoord(this.getXcoord()); - newOptionsActivity.setYcoord(this.getYcoord()); - newOptionsActivity.setActivityTypeId(this.getActivityTypeId()); - - newOptionsActivity.setGroupingSupportType(this.getGroupingSupportType()); - newOptionsActivity.setApplyGrouping(this.getApplyGrouping()); - newOptionsActivity.setActivityCategoryID(this.getActivityCategoryID()); - - newOptionsActivity.setGrouping(this.getGrouping()); - newOptionsActivity.setGroupingUIID(this.getGroupingUIID()); - newOptionsActivity.setDefineLater(this.getDefineLater()); - newOptionsActivity.setLearningLibrary(this.getLearningLibrary()); - newOptionsActivity.setCreateDateTime(new Date()); - newOptionsActivity.setRunOffline(this.getRunOffline()); - newOptionsActivity.setLibraryActivityUiImage(this.getLibraryActivityUiImage()); - newOptionsActivity.setLibraryActivity(this.getLibraryActivity()); - newOptionsActivity.setLanguageFile(this.getLanguageFile()); return newOptionsActivity; } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ParallelActivity.java =================================================================== diff -u -r34b959260a0f8f8285793a4481a95ca3580eabc5 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ParallelActivity.java (.../ParallelActivity.java) (revision 34b959260a0f8f8285793a4481a95ca3580eabc5) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ParallelActivity.java (.../ParallelActivity.java) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -117,31 +117,7 @@ public Activity createCopy(){ ParallelActivity newParallelActivity = new ParallelActivity(); - - newParallelActivity.setActivityUIID(this.getActivityUIID()); - newParallelActivity.setDescription(this.getDescription()); - newParallelActivity.setTitle(this.getTitle()); - newParallelActivity.setHelpText(this.getHelpText()); - newParallelActivity.setXcoord(this.getXcoord()); - newParallelActivity.setYcoord(this.getYcoord()); - newParallelActivity.setActivityTypeId(this.getActivityTypeId()); - - newParallelActivity.setGroupingSupportType(this.getGroupingSupportType()); - newParallelActivity.setApplyGrouping(this.getApplyGrouping()); - newParallelActivity.setActivityCategoryID(this.getActivityCategoryID()); - - newParallelActivity.setGrouping(this.getGrouping()); - newParallelActivity.setLearningLibrary(this.getLearningLibrary()); - newParallelActivity.setGroupingUIID(this.getGroupingUIID()); - - newParallelActivity.setDefineLater(this.getDefineLater()); - newParallelActivity.setCreateDateTime(new Date()); - newParallelActivity.setRunOffline(this.getRunOffline()); - - newParallelActivity.setLibraryActivityUiImage(this.getLibraryActivityUiImage()); - newParallelActivity.setLibraryActivity(this.getLibraryActivity()); - newParallelActivity.setLanguageFile(this.getLanguageFile()); - + copyToNewActivity(newParallelActivity); return newParallelActivity; } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/PermissionGateActivity.java =================================================================== diff -u -r34b959260a0f8f8285793a4481a95ca3580eabc5 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/PermissionGateActivity.java (.../PermissionGateActivity.java) (revision 34b959260a0f8f8285793a4481a95ca3580eabc5) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/PermissionGateActivity.java (.../PermissionGateActivity.java) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -29,6 +29,7 @@ import org.apache.commons.lang.builder.ToStringBuilder; import org.lamsfoundation.lams.learningdesign.strategy.PermissionGateActivityStrategy; +import org.lamsfoundation.lams.tool.SystemTool; /** @@ -59,7 +60,8 @@ Transition transitionFrom, String languageFile, Integer gateActivityLevelId, - Set waitingLearners) + Set waitingLearners, + SystemTool sysTool) { super(activityId, id, @@ -81,7 +83,8 @@ transitionFrom, languageFile, gateActivityLevelId, - waitingLearners); + waitingLearners, + sysTool); super.simpleActivityStrategy = new PermissionGateActivityStrategy(this); } @@ -125,31 +128,9 @@ */ public Activity createCopy(){ PermissionGateActivity newPermissionGateActivity = new PermissionGateActivity(); - + copyToNewActivity(newPermissionGateActivity); newPermissionGateActivity.setGateOpen(new Boolean(false)); newPermissionGateActivity.setGateActivityLevelId(this.getGateActivityLevelId()); - - newPermissionGateActivity.setActivityUIID(this.getActivityUIID()); - newPermissionGateActivity.setDescription(this.getDescription()); - newPermissionGateActivity.setTitle(this.getTitle()); - newPermissionGateActivity.setHelpText(this.getHelpText()); - newPermissionGateActivity.setXcoord(this.getXcoord()); - newPermissionGateActivity.setYcoord(this.getYcoord()); - newPermissionGateActivity.setActivityTypeId(this.getActivityTypeId()); - - newPermissionGateActivity.setGroupingSupportType(this.getGroupingSupportType()); - newPermissionGateActivity.setApplyGrouping(this.getApplyGrouping()); - newPermissionGateActivity.setActivityCategoryID(this.getActivityCategoryID()); - - newPermissionGateActivity.setGrouping(this.getGrouping()); - newPermissionGateActivity.setGroupingUIID(this.getGroupingUIID()); - newPermissionGateActivity.setLearningLibrary(this.getLearningLibrary()); - newPermissionGateActivity.setDefineLater(this.getDefineLater()); - newPermissionGateActivity.setCreateDateTime(new Date()); - newPermissionGateActivity.setRunOffline(this.getRunOffline()); - newPermissionGateActivity.setLibraryActivity(this.getLibraryActivity()); - newPermissionGateActivity.setLibraryActivityUiImage(this.getLibraryActivityUiImage()); - newPermissionGateActivity.setLanguageFile(this.getLanguageFile()); return newPermissionGateActivity; } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ScheduleGateActivity.java =================================================================== diff -u -r34b959260a0f8f8285793a4481a95ca3580eabc5 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ScheduleGateActivity.java (.../ScheduleGateActivity.java) (revision 34b959260a0f8f8285793a4481a95ca3580eabc5) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ScheduleGateActivity.java (.../ScheduleGateActivity.java) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -28,14 +28,13 @@ import java.util.Date; import java.util.GregorianCalendar; import java.util.Set; -import java.util.Vector; import java.util.TimeZone; +import java.util.Vector; import org.apache.commons.lang.builder.ToStringBuilder; import org.lamsfoundation.lams.learningdesign.dto.ValidationErrorDTO; -//import org.lamsfoundation.lams.learningdesign.exception.ActivityBehaviorException; import org.lamsfoundation.lams.learningdesign.strategy.ScheduleGateActivityStrategy; - +import org.lamsfoundation.lams.tool.SystemTool; import org.lamsfoundation.lams.util.MessageService; /** @@ -109,7 +108,8 @@ Integer gateActivityLevelId, Long gateStartTimeOffset, Long gateEndTimeOffset, - Set waitingLearners) { + Set waitingLearners, + SystemTool sysTool) { super(activityId, id, description, @@ -130,7 +130,8 @@ transitionFrom, languageFile, gateActivityLevelId, - waitingLearners); + waitingLearners, + sysTool); //validate pre-condition. if(gateStartTimeOffset != null && gateEndTimeOffset != null && (gateStartTimeOffset.intValue()>gateEndTimeOffset.intValue())) throw new IllegalStateException("End time offset must be larger" + @@ -187,36 +188,14 @@ */ public Activity createCopy(){ ScheduleGateActivity newScheduleGateActivity = new ScheduleGateActivity(); - + copyToNewActivity(newScheduleGateActivity); newScheduleGateActivity.setGateActivityLevelId(this.getGateActivityLevelId()); newScheduleGateActivity.setGateOpen(new Boolean(false)); newScheduleGateActivity.setGateEndTimeOffset(this.getGateEndTimeOffset()); newScheduleGateActivity.setGateStartTimeOffset(this.getGateStartTimeOffset()); newScheduleGateActivity.setGateEndDateTime(this.getGateEndDateTime()); newScheduleGateActivity.setGateStartDateTime(this.getGateStartDateTime()); - - newScheduleGateActivity.setActivityUIID(this.getActivityUIID()); - newScheduleGateActivity.setDescription(this.getDescription()); - newScheduleGateActivity.setTitle(this.getTitle()); - newScheduleGateActivity.setHelpText(this.getHelpText()); - newScheduleGateActivity.setXcoord(this.getXcoord()); - newScheduleGateActivity.setYcoord(this.getYcoord()); - newScheduleGateActivity.setActivityTypeId(this.getActivityTypeId()); - - newScheduleGateActivity.setGroupingSupportType(this.getGroupingSupportType()); - newScheduleGateActivity.setApplyGrouping(this.getApplyGrouping()); - newScheduleGateActivity.setActivityCategoryID(this.getActivityCategoryID()); - - newScheduleGateActivity.setGrouping(this.getGrouping()); - newScheduleGateActivity.setGroupingUIID(this.getGroupingUIID()); - newScheduleGateActivity.setLearningLibrary(this.getLearningLibrary()); - newScheduleGateActivity.setDefineLater(this.getDefineLater()); - newScheduleGateActivity.setCreateDateTime(new Date()); - newScheduleGateActivity.setRunOffline(this.getRunOffline()); - newScheduleGateActivity.setLibraryActivity(this.getLibraryActivity()); - newScheduleGateActivity.setLibraryActivityUiImage(this.getLibraryActivityUiImage()); - newScheduleGateActivity.setLanguageFile(this.getLanguageFile()); return newScheduleGateActivity; } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/SequenceActivity.java =================================================================== diff -u -r34b959260a0f8f8285793a4481a95ca3580eabc5 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/SequenceActivity.java (.../SequenceActivity.java) (revision 34b959260a0f8f8285793a4481a95ca3580eabc5) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SequenceActivity.java (.../SequenceActivity.java) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -119,29 +119,7 @@ */ public Activity createCopy(){ SequenceActivity newSequenceActivity = new SequenceActivity(); - - newSequenceActivity.setActivityUIID(this.getActivityUIID()); - newSequenceActivity.setDescription(this.getDescription()); - newSequenceActivity.setTitle(this.getTitle()); - newSequenceActivity.setHelpText(this.getHelpText()); - newSequenceActivity.setXcoord(this.getXcoord()); - newSequenceActivity.setYcoord(this.getYcoord()); - newSequenceActivity.setActivityTypeId(this.getActivityTypeId()); - - newSequenceActivity.setGroupingSupportType(this.getGroupingSupportType()); - newSequenceActivity.setApplyGrouping(this.getApplyGrouping()); - newSequenceActivity.setActivityCategoryID(this.getActivityCategoryID()); - - newSequenceActivity.setGrouping(this.getGrouping()); - newSequenceActivity.setGroupingUIID(this.getGroupingUIID()); - newSequenceActivity.setLearningLibrary(this.getLearningLibrary()); - newSequenceActivity.setDefineLater(this.getDefineLater()); - newSequenceActivity.setCreateDateTime(new Date()); - newSequenceActivity.setRunOffline(this.getRunOffline()); - - newSequenceActivity.setLibraryActivity(this.getLibraryActivity()); - newSequenceActivity.setLibraryActivityUiImage(this.getLibraryActivityUiImage()); - newSequenceActivity.setLanguageFile(this.getLanguageFile()); + copyToNewActivity(newSequenceActivity); return newSequenceActivity; } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/SynchGateActivity.java =================================================================== diff -u -r34b959260a0f8f8285793a4481a95ca3580eabc5 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/SynchGateActivity.java (.../SynchGateActivity.java) (revision 34b959260a0f8f8285793a4481a95ca3580eabc5) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SynchGateActivity.java (.../SynchGateActivity.java) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -29,6 +29,7 @@ import org.apache.commons.lang.builder.ToStringBuilder; import org.lamsfoundation.lams.learningdesign.strategy.SynchGateActivityStrategy; +import org.lamsfoundation.lams.tool.SystemTool; /** @@ -58,7 +59,8 @@ Transition transitionFrom, String languageFile, Integer gateActivityLevelId, - Set waitingLearners) { + Set waitingLearners, + SystemTool sysTool) { super(activityId, id, description, @@ -79,7 +81,8 @@ transitionFrom, languageFile, gateActivityLevelId, - waitingLearners); + waitingLearners, + sysTool); super.simpleActivityStrategy = new SynchGateActivityStrategy(this); } @@ -123,32 +126,9 @@ */ public Activity createCopy() { SynchGateActivity newSynchGateActivity = new SynchGateActivity(); - + copyToNewActivity(newSynchGateActivity); newSynchGateActivity.setGateActivityLevelId(this.getGateActivityLevelId()); newSynchGateActivity.setGateOpen(new Boolean(false)); - - newSynchGateActivity.setActivityUIID(this.getActivityUIID()); - newSynchGateActivity.setDescription(this.getDescription()); - newSynchGateActivity.setTitle(this.getTitle()); - newSynchGateActivity.setHelpText(this.getHelpText()); - newSynchGateActivity.setXcoord(this.getXcoord()); - newSynchGateActivity.setYcoord(this.getYcoord()); - newSynchGateActivity.setActivityTypeId(this.getActivityTypeId()); - - newSynchGateActivity.setGroupingSupportType(this.getGroupingSupportType()); - newSynchGateActivity.setApplyGrouping(this.getApplyGrouping()); - newSynchGateActivity.setActivityCategoryID(this.getActivityCategoryID()); - - newSynchGateActivity.setGrouping(this.getGrouping()); - newSynchGateActivity.setGroupingUIID(this.getGroupingUIID()); - newSynchGateActivity.setLearningLibrary(this.getLearningLibrary()); - newSynchGateActivity.setDefineLater(this.getDefineLater()); - newSynchGateActivity.setCreateDateTime(new Date()); - newSynchGateActivity.setRunOffline(this.getRunOffline()); - newSynchGateActivity.setLibraryActivity(this.getLibraryActivity()); - newSynchGateActivity.setLibraryActivityUiImage(this.getLibraryActivityUiImage()); - newSynchGateActivity.setLanguageFile(this.getLanguageFile()); - return newSynchGateActivity; } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/SystemToolActivity.java =================================================================== diff -u -r3f60ecf7d3a92231a1089191ae75c68bc66e9595 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/SystemToolActivity.java (.../SystemToolActivity.java) (revision 3f60ecf7d3a92231a1089191ae75c68bc66e9595) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/SystemToolActivity.java (.../SystemToolActivity.java) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -24,15 +24,20 @@ package org.lamsfoundation.lams.learningdesign; import java.io.Serializable; +import java.util.Date; +import org.lamsfoundation.lams.tool.SystemTool; + /** * Groups gate and grouping activities into system tools. Used to access the system_tool table. * @hibernate.class */ public abstract class SystemToolActivity extends SimpleActivity implements Serializable { + private SystemTool systemTool; + /** full constructor */ public SystemToolActivity(Long activityId, Integer id, @@ -52,7 +57,8 @@ Integer activityTypeId, Transition transitionTo, Transition transitionFrom, - String languageFile) + String languageFile, + SystemTool systemTool) { super(activityId, id, @@ -73,6 +79,7 @@ transitionTo, transitionFrom, languageFile); + this.systemTool = systemTool; } /** default constructor */ @@ -103,5 +110,19 @@ transitionTo, transitionFrom); } + + protected void copyToNewActivity(SystemToolActivity newActivity ) { + + super.copyToNewActivity(newActivity); + newActivity.setSystemTool(this.getSystemTool()); + } + + public SystemTool getSystemTool() { + return systemTool; + } + + public void setSystemTool(SystemTool systemTool) { + this.systemTool = systemTool; + } } Index: lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolActivity.java =================================================================== diff -u -r03392c988a23f5e9129967f8ae692488213632fe -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolActivity.java (.../ToolActivity.java) (revision 03392c988a23f5e9129967f8ae692488213632fe) +++ lams_common/src/java/org/lamsfoundation/lams/learningdesign/ToolActivity.java (.../ToolActivity.java) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -148,32 +148,9 @@ */ public Activity createCopy(){ ToolActivity newToolActivity = new ToolActivity(); - + copyToNewActivity(newToolActivity); newToolActivity.setTool(this.getTool()); newToolActivity.setToolContentId(this.getToolContentId()); - newToolActivity.setActivityUIID(this.getActivityUIID()); - newToolActivity.setDescription(this.getDescription()); - newToolActivity.setTitle(this.getTitle()); - newToolActivity.setHelpText(this.getHelpText()); - newToolActivity.setXcoord(this.getXcoord()); - newToolActivity.setYcoord(this.getYcoord()); - newToolActivity.setActivityTypeId(this.getActivityTypeId()); - - newToolActivity.setGroupingSupportType(this.getGroupingSupportType()); - newToolActivity.setApplyGrouping(this.getApplyGrouping()); - newToolActivity.setGrouping(this.getGrouping()); - - newToolActivity.setGroupingUIID(this.getGroupingUIID()); - newToolActivity.setOrderId(this.getOrderId()); - newToolActivity.setDefineLater(this.getDefineLater()); - newToolActivity.setLearningLibrary(this.getLearningLibrary()); - newToolActivity.setCreateDateTime(new Date()); - newToolActivity.setRunOffline(this.getRunOffline()); - newToolActivity.setActivityCategoryID(this.getActivityCategoryID()); - newToolActivity.setLibraryActivityUiImage(this.getLibraryActivityUiImage()); - newToolActivity.setLibraryActivity(this.getLibraryActivity()); - newToolActivity.setLanguageFile(this.getLanguageFile()); - return newToolActivity; } Index: lams_common/src/java/org/lamsfoundation/lams/tool/SystemTool.java =================================================================== diff -u -r27bc32d524b0e22831ba7c75b3c11b8adb23189e -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_common/src/java/org/lamsfoundation/lams/tool/SystemTool.java (.../SystemTool.java) (revision 27bc32d524b0e22831ba7c75b3c11b8adb23189e) +++ lams_common/src/java/org/lamsfoundation/lams/tool/SystemTool.java (.../SystemTool.java) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -40,6 +40,12 @@ */ public class SystemTool implements Serializable { + /* System Tool IDs */ + public static final Long GROUPING = new Long(1); + public static final Long SYNC_GATE = new Long(2); + public static final Long SCHEDULE_GATE = new Long(3); + public static final Long PERMISSION_GATE = new Long(4); + /** identifier field */ private Long systemToolId; Index: lams_learning/conf/language/ApplicationResources.properties =================================================================== diff -u -r6f11dd80335ff2b8a2d06d21f1a49b307ed233c1 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_learning/conf/language/ApplicationResources.properties (.../ApplicationResources.properties) (revision 6f11dd80335ff2b8a2d06d21f1a49b307ed233c1) +++ lams_learning/conf/language/ApplicationResources.properties (.../ApplicationResources.properties) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -60,4 +60,5 @@ # Export portfolio: error message put in the activity's page if the activity doesn't support export portfolio. The name of the activity goes in {0} error.export.portfolio.not.supported=The activity {0} does not support portfolio export. - +# Export portfolio: Message displayed in portfolio if there aren't any activities on which to report. +export.portfolio.noneAttempted.message=No activities have been attempted. Index: lams_learning/conf/xdoclet/filter-mappings.xml =================================================================== diff -u -rfc085e0eda6c46d659c5b98f9ee9e29f495af042 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_learning/conf/xdoclet/filter-mappings.xml (.../filter-mappings.xml) (revision fc085e0eda6c46d659c5b98f9ee9e29f495af042) +++ lams_learning/conf/xdoclet/filter-mappings.xml (.../filter-mappings.xml) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -1,12 +1,8 @@ HibernateFilter - *.do + /* - - HibernateFilter - *.jsp - SystemSessionFilter Index: lams_learning/conf/xdoclet/filters.xml =================================================================== diff -u -rfc085e0eda6c46d659c5b98f9ee9e29f495af042 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_learning/conf/xdoclet/filters.xml (.../filters.xml) (revision fc085e0eda6c46d659c5b98f9ee9e29f495af042) +++ lams_learning/conf/xdoclet/filters.xml (.../filters.xml) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -7,7 +7,7 @@ singleSession - false + true Index: lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/ExportPortfolioService.java =================================================================== diff -u -r959094c1e3f58345e88113046f165ff586fddcf7 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/ExportPortfolioService.java (.../ExportPortfolioService.java) (revision 959094c1e3f58345e88113046f165ff586fddcf7) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/ExportPortfolioService.java (.../ExportPortfolioService.java) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -32,6 +32,7 @@ import java.net.MalformedURLException; import java.util.ArrayList; import java.util.Iterator; +import java.util.List; import java.util.Vector; import javax.servlet.http.Cookie; @@ -134,7 +135,7 @@ { try { - PortfolioBuilder builder = new PortfolioBuilder(lesson.getLearningDesign(), activityDAO, lamsCoreToolService, ToolAccessMode.TEACHER, null, null); + PortfolioBuilder builder = new PortfolioBuilder(lesson.getLearningDesign(), activityDAO, lamsCoreToolService, ToolAccessMode.TEACHER, lesson, null, null); builder.parseLearningDesign(); portfolios = builder.getPortfolioList(); @@ -175,16 +176,16 @@ User learner = (User)baseDAO.find(User.class,userId); Lesson lesson = lessonDAO.getLesson(lessonID); - if (learner != null && lesson != null) + if (learner != null) { - LearnerProgress learnerProgress = learnerService.getProgress(learner.getUserId(), lesson.getLessonId()); + LearnerProgress learnerProgress = learnerService.getProgress(learner.getUserId(), lessonID); if (learnerProgress != null) { try { - PortfolioBuilder builder = new PortfolioBuilder(lesson.getLearningDesign(), activityDAO, lamsCoreToolService, ToolAccessMode.LEARNER, learnerProgress, learner); + PortfolioBuilder builder = new PortfolioBuilder(lesson.getLearningDesign(), activityDAO, lamsCoreToolService, ToolAccessMode.LEARNER, lesson, learnerProgress, learner); builder.parseLearningDesign(); portfolios = builder.getPortfolioList(); @@ -258,10 +259,6 @@ /** @see org.lamsfoundation.lams.learning.export.service.IExportPortfolioService#doExport(Vector, Cookie[]) */ public Portfolio doExport(ArrayList portfolios, Cookie[] cookies, Lesson lesson) { - String activitySubDirectory; - String exportURL; - String toolLink; - String mainFileName = null; String tempDirectoryName; //create the root directory for the export @@ -274,6 +271,15 @@ portfolio.setLessonName(lesson.getLessonName()); portfolio.setLessonDescription(lesson.getLessonDescription()); + processPortfolios(portfolios, cookies, tempDirectoryName); + portfolio.setActivityPortfolios((ActivityPortfolio[])portfolios.toArray(new ActivityPortfolio[portfolios.size()])); + return portfolio; + + + } + + private void processPortfolios(List portfolios, Cookie[] cookies, String tempDirectoryName) { + Iterator i = portfolios.iterator(); //iterate through the list of portfolios, create subdirectory, while(i.hasNext()) @@ -288,30 +294,30 @@ } // The directory in which the activity must place its files - activitySubDirectory = tempDirectoryName + File.separator + subDirectoryName; + String activitySubDirectory = tempDirectoryName + File.separator + subDirectoryName; //for security reasons, append the relative directory name to the end of the export url instead of the whole path String relativePath = activitySubDirectory.substring(FileUtil.TEMP_DIR.length()+1, activitySubDirectory.length()); - exportURL = WebUtil.appendParameterToURL(activityPortfolio.getExportUrl(), AttributeNames.PARAM_DIRECTORY_NAME, relativePath); - String absoluteExportURL = ExportPortfolioConstants.HOST + exportURL; - - activityPortfolio.setExportUrl(absoluteExportURL); - - //get tool to export its files, mainFileName is the name of the main HTML page that the tool exported. - mainFileName = connectToToolViaExportURL(absoluteExportURL, cookies, activitySubDirectory); - - //toolLink is used in main page, so that it can link with the tools export pages. - toolLink = subDirectoryName + "/" + mainFileName; - activityPortfolio.setToolLink(toolLink); + // Complex activities don't have export urls. + if ( activityPortfolio.getExportUrl() != null ) { + activityPortfolio.setExportUrl( ExportPortfolioConstants.HOST + activityPortfolio.getExportUrl() ); + activityPortfolio.setExportUrl( WebUtil.appendParameterToURL(activityPortfolio.getExportUrl(), AttributeNames.PARAM_DIRECTORY_NAME, relativePath) ); + + //get tool to export its files, mainFileName is the name of the main HTML page that the tool exported. + String mainFileName = connectToToolViaExportURL(activityPortfolio.getActivityName(), activityPortfolio.getExportUrl(), cookies, activitySubDirectory); + + //toolLink is used in main page, so that it can link with the tools export pages. + String toolLink = subDirectoryName + "/" + mainFileName; + activityPortfolio.setToolLink(toolLink); + } - + if ( activityPortfolio.getChildPortfolios() != null && activityPortfolio.getChildPortfolios().size() > 0 ) { + processPortfolios(activityPortfolio.getChildPortfolios(), cookies, tempDirectoryName); + } } - portfolio.setActivityPortfolios((ActivityPortfolio[])portfolios.toArray(new ActivityPortfolio[portfolios.size()])); - return portfolio; - } /** @@ -363,7 +369,7 @@ /** @see org.lamsfoundation.lams.learning.export.service.IExportPortfolioService#exportToolPortfolio(org.lamsfoundation.lams.learning.export.Portfolio) */ - public String connectToToolViaExportURL(String exportURL, Cookie[] cookies, String directoryToStoreErrorFile) + public String connectToToolViaExportURL(String activityName, String exportURL, Cookie[] cookies, String directoryToStoreErrorFile) { String filename = null; try @@ -373,24 +379,24 @@ { filename = ExportPortfolioConstants.EXPORT_ERROR_FILENAME; log.error("A problem has occurred while connecting to the tool's export url. The export url may be invalid or may not exist"); - writeErrorMessageToFile(directoryToStoreErrorFile); + writeErrorMessageToFile(directoryToStoreErrorFile, activityName); } } catch(MalformedURLException e) { log.error("The URL "+exportURL+" given is invalid.",e); - writeErrorMessageToFile(directoryToStoreErrorFile); + writeErrorMessageToFile(directoryToStoreErrorFile, activityName); } catch(FileNotFoundException e) { log.error("The directory "+directoryToStoreErrorFile+" may not exist.",e); - writeErrorMessageToFile(directoryToStoreErrorFile); + writeErrorMessageToFile(directoryToStoreErrorFile, activityName); } catch(IOException e) { log.error("A problem has occurred while writing the contents of " + exportURL + " to file.", e); - writeErrorMessageToFile(directoryToStoreErrorFile); + writeErrorMessageToFile(directoryToStoreErrorFile, activityName); } @@ -413,26 +419,22 @@ catch(MalformedURLException e) { log.error("The URL given is invalid. Exception Message was: " +e); - writeErrorMessageToFile(portfolio.getExportTmpDir()); } catch(FileNotFoundException e) { log.error("The directory or file may not exist. Exception Message was: " +e); - writeErrorMessageToFile(portfolio.getExportTmpDir()); } catch(IOException e) { log.error("A problem has occurred while writing the contents of " + url + " to file. Exception Message was: " +e); - writeErrorMessageToFile(portfolio.getExportTmpDir()); - } } - private void writeErrorMessageToFile(String directoryToStoreFile) + private void writeErrorMessageToFile(String directoryToStoreFile, String activityTitle) { try { - String errorMessage = messageService.getMessage(ExportPortfolioConstants.EXPORT_ACTIVITY_ERROR_KEY); + String errorMessage = messageService.getMessage(ExportPortfolioConstants.EXPORT_ACTIVITY_ERROR_KEY, new Object[]{activityTitle}); String filepath = directoryToStoreFile + File.separator + ExportPortfolioConstants.EXPORT_ERROR_FILENAME; BufferedWriter fileout = new BufferedWriter(new FileWriter(filepath)); fileout.write(errorMessage); Index: lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/PortfolioBuilder.java =================================================================== diff -u -r6f11dd80335ff2b8a2d06d21f1a49b307ed233c1 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/PortfolioBuilder.java (.../PortfolioBuilder.java) (revision 6f11dd80335ff2b8a2d06d21f1a49b307ed233c1) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/export/service/PortfolioBuilder.java (.../PortfolioBuilder.java) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -36,10 +36,13 @@ import org.lamsfoundation.lams.learningdesign.LearningDesign; import org.lamsfoundation.lams.learningdesign.LearningDesignProcessor; import org.lamsfoundation.lams.learningdesign.SimpleActivity; +import org.lamsfoundation.lams.learningdesign.SystemToolActivity; import org.lamsfoundation.lams.learningdesign.ToolActivity; import org.lamsfoundation.lams.learningdesign.dao.IActivityDAO; import org.lamsfoundation.lams.learningdesign.exception.LearningDesignProcessorException; import org.lamsfoundation.lams.lesson.LearnerProgress; +import org.lamsfoundation.lams.lesson.Lesson; +import org.lamsfoundation.lams.tool.SystemTool; import org.lamsfoundation.lams.tool.Tool; import org.lamsfoundation.lams.tool.ToolAccessMode; import org.lamsfoundation.lams.tool.ToolSession; @@ -59,32 +62,36 @@ ILamsCoreToolService lamsCoreToolService; User user; LearnerProgress progress; + Lesson lesson; /** Create the builder. Supply all the data that will be needed to parse the design and build the portfolio entries. * * If accessMode == LEARNER then progress and user must not be null. This will create a list of portfolio objects for * all activities that the LEARNER has completed or attempted. * - * If accessMode == TEACHER then progress and user will be ignored and all activities will be included. + * If accessMode == TEACHER then progress and user will be null and all activities will be included. Note: Because + * the progress is null we can't rely on getting the lesson from the progress. * * @param design * @param activityDAO * @param lamsCoreToolService * @param accessMode - * @param progress + * @param lesson + * @param progress * @param user */ public PortfolioBuilder(LearningDesign design, IActivityDAO activityDAO, ILamsCoreToolService lamsCoreToolService, ToolAccessMode accessMode, - LearnerProgress progress, User user) { + Lesson lesson, LearnerProgress progress, User user) { super(design, activityDAO); this.mainPortfolioList = new ArrayList(); this.currentPortfolioList = mainPortfolioList; this.activityListStack = new ArrayStack(5); this.accessMode = accessMode; this.lamsCoreToolService = lamsCoreToolService; + this.user = user; - + this.lesson = lesson; this.progress = progress; } @@ -144,30 +151,52 @@ * If the export is done by teacher: mode, toolContentId is appended * If the export is done by learner: mode, userId, toolSessionId is appended */ - if (accessMode == ToolAccessMode.LEARNER) - { - exportUrlForTool = WebUtil.appendParameterToURL(exportUrlForTool, AttributeNames.PARAM_USER_ID, user.getUserId().toString()); - ToolSession toolSession = lamsCoreToolService.getToolSessionByActivity(user, toolActivity); - if (toolSession != null) { - exportUrlForTool = WebUtil.appendParameterToURL(exportUrlForTool, AttributeNames.PARAM_TOOL_SESSION_ID, toolSession.getToolSessionId().toString()); + if ( exportUrlForTool != null ) { + if (accessMode == ToolAccessMode.LEARNER) + { + exportUrlForTool = WebUtil.appendParameterToURL(exportUrlForTool, AttributeNames.PARAM_USER_ID, user.getUserId().toString()); + ToolSession toolSession = lamsCoreToolService.getToolSessionByActivity(user, toolActivity); + if (toolSession != null) { + exportUrlForTool = WebUtil.appendParameterToURL(exportUrlForTool, AttributeNames.PARAM_TOOL_SESSION_ID, toolSession.getToolSessionId().toString()); + } } + else if (accessMode == ToolAccessMode.TEACHER) + { + exportUrlForTool = WebUtil.appendParameterToURL(exportUrlForTool, AttributeNames.PARAM_TOOL_CONTENT_ID, toolActivity.getToolContentId().toString()); + } } - else if (accessMode == ToolAccessMode.TEACHER) - { - exportUrlForTool = WebUtil.appendParameterToURL(exportUrlForTool, AttributeNames.PARAM_TOOL_CONTENT_ID, toolActivity.getToolContentId().toString()); - } - } else if ( activity.isGateActivity() ) { - // only include the gates in the teacher version - - } else if ( activity.isGroupingActivity() ) { - - } + } else if ( activity.isSystemToolActivity() ) { + // only include the gates in the teacher version - learner gate has been avoided at the beginning of this method + // always include grouping + // system tools don't use the modes or the tool session id but need to add them or the validation fails in + // AbstractExportPortfolio servlet. So why leave the validation there - because system tools are the exception + // rather than the rule. In the future, they may need these parameters. + SystemToolActivity sysToolActivity = (SystemToolActivity) activity; + SystemTool tool = sysToolActivity.getSystemTool(); + if ( tool != null ) { + if (accessMode == ToolAccessMode.LEARNER) { + exportUrlForTool = tool.getExportPortfolioLearnerUrl(); + } else { + exportUrlForTool = tool.getExportPortfolioClassUrl(); + } + } + if ( exportUrlForTool != null ) { + if (accessMode == ToolAccessMode.LEARNER) { + exportUrlForTool = WebUtil.appendParameterToURL(exportUrlForTool, AttributeNames.PARAM_USER_ID, user.getUserId().toString()); + exportUrlForTool = WebUtil.appendParameterToURL(exportUrlForTool, AttributeNames.PARAM_TOOL_SESSION_ID, "0"); + } else { + exportUrlForTool = WebUtil.appendParameterToURL(exportUrlForTool, AttributeNames.PARAM_TOOL_CONTENT_ID, "0"); + } + exportUrlForTool = WebUtil.appendParameterToURL(exportUrlForTool, AttributeNames.PARAM_ACTIVITY_ID, activity.getActivityId().toString()); + exportUrlForTool = WebUtil.appendParameterToURL(exportUrlForTool, AttributeNames.PARAM_LESSON_ID, lesson.getLessonId().toString()); + } + } if ( exportUrlForTool == null ) { exportUrlForTool = ExportPortfolioConstants.URL_FOR_UNSUPPORTED_EXPORT; exportUrlForTool = WebUtil.appendParameterToURL(exportUrlForTool, "activityTitle", activity.getTitle()); - exportUrlForTool = WebUtil.appendParameterToURL(exportUrlForTool, "lessonName", progress.getLesson().getLessonName()); + exportUrlForTool = WebUtil.appendParameterToURL(exportUrlForTool, "lessonName", lesson.getLessonName()); } p.setExportUrl(exportUrlForTool); Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GroupingAction.java =================================================================== diff -u -re5049e0948ac38f849ed086dfa9b8b7dfd8d76ae -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GroupingAction.java (.../GroupingAction.java) (revision e5049e0948ac38f849ed086dfa9b8b7dfd8d76ae) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GroupingAction.java (.../GroupingAction.java) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -93,14 +93,15 @@ //--------------------------------------------------------------------- // Class level constants - Session Attributes //--------------------------------------------------------------------- - private static final String GROUPS = "groups"; + public static final String GROUPS = "groups"; + public static final String FINISHED_BUTTON = "finishedButton"; //--------------------------------------------------------------------- // Class level constants - Struts forward //--------------------------------------------------------------------- - private static final String VIEW_GROUP = "viewGroup"; - private static final String WAIT_GROUP = "waitGroup"; - private static final String SHOW_GROUP = "showGroup"; + public static final String VIEW_GROUP = "viewGroup"; + public static final String WAIT_GROUP = "waitGroup"; + public static final String SHOW_GROUP = "showGroup"; //--------------------------------------------------------------------- // Struts Dispatch Method @@ -140,7 +141,12 @@ DynaActionForm groupForm = (DynaActionForm)form; groupForm.set("previewLesson",learnerProgress.getLesson().isPreviewLesson()); - return mapping.findForward(groupingDone ? VIEW_GROUP : WAIT_GROUP); + + if ( groupingDone ) { + request.setAttribute(FINISHED_BUTTON, Boolean.TRUE); + return mapping.findForward(VIEW_GROUP); + } + return mapping.findForward(WAIT_GROUP); } /** @@ -170,13 +176,51 @@ if ( grouping != null) groups.addAll(grouping.getGroups()); - request.getSession().setAttribute(GROUPS,groups); + request.setAttribute(GROUPS,groups); + request.setAttribute(FINISHED_BUTTON,Boolean.TRUE); request.setAttribute(AttributeNames.PARAM_ACTIVITY_ID, activity.getActivityId()); return mapping.findForward(SHOW_GROUP); } /** + * Do the export portfolio. Take the parameters from the standard String request parameters, don't expect + * attributes to be in the request + * + * @param mapping + * @param form + * @param request + * @param response + * @return + * @throws IOException + * @throws ServletException + */ + public ActionForward exportPortfolio(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response) throws IOException, + ServletException + { + //initialize service object + ILearnerService learnerService = LearnerServiceProxy.getLearnerService(getServlet().getServletContext()); + + SortedSet groups = new TreeSet(new GroupComparator()); + + Long activityId = WebUtil.readLongParam(request,AttributeNames.PARAM_ACTIVITY_ID); + Activity activity = learnerService.getActivity(activityId); + + Grouping grouping = ((GroupingActivity)activity).getCreateGrouping(); + if ( grouping != null) + groups.addAll(grouping.getGroups()); + + request.setAttribute(GROUPS,groups); + request.setAttribute(FINISHED_BUTTON,Boolean.FALSE); + request.setAttribute(AttributeNames.PARAM_ACTIVITY_ID, activity.getActivityId()); + + return mapping.findForward(SHOW_GROUP); + } + + /** * Complete the current tool activity and forward to the url of next activity * in the learning design. * Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GroupingExportPortfolioServlet.java =================================================================== diff -u --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GroupingExportPortfolioServlet.java (revision 0) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/action/GroupingExportPortfolioServlet.java (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -0,0 +1,74 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ + +package org.lamsfoundation.lams.learning.web.action; + +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.lamsfoundation.lams.learning.service.ILearnerService; +import org.lamsfoundation.lams.learning.service.LearnerServiceProxy; +import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.servlet.AbstractExportPortfolioServlet; +import org.lamsfoundation.lams.web.util.AttributeNames; + + +/** + * Export portfolio page for Grouping. If the grouping has been done + * then the groups are shown, otherwise a "not done" message is given. + * The screen is the same for teachers and learners. + * + * @web:servlet name="groupingExportPortfolio" + * @web:servlet-mapping url-pattern="/groupingExportPortfolio" + * + */ +public class GroupingExportPortfolioServlet extends AbstractExportPortfolioServlet { + + private static final long serialVersionUID = 677903773190753547L; + + + //--------------------------------------------------------------------- + // Class level constants - Session Attributes + //--------------------------------------------------------------------- + public static final String GROUPS = "groups"; + private final String FILENAME = "groups.html"; + + + public String doExport(HttpServletRequest request, HttpServletResponse response, String directoryName, Cookie[] cookies) + { + Long lessonId = WebUtil.readLongParam(request,AttributeNames.PARAM_LESSON_ID); + Long activityId = WebUtil.readLongParam(request, AttributeNames.PARAM_ACTIVITY_ID); + + String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath(); + writeResponseToFile( + basePath+"/grouping.do?method=exportPortfolio&lessonID="+lessonId+"&activityID="+activityId, + directoryName,FILENAME,cookies); + return FILENAME; + + } + + +} Index: lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMapping.java =================================================================== diff -u -re5049e0948ac38f849ed086dfa9b8b7dfd8d76ae -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMapping.java (.../ActivityMapping.java) (revision e5049e0948ac38f849ed086dfa9b8b7dfd8d76ae) +++ lams_learning/src/java/org/lamsfoundation/lams/learning/web/util/ActivityMapping.java (.../ActivityMapping.java) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -270,7 +270,7 @@ * @param activity, the activity the action is for. * @param useContext, if true prepends the server and context to the URL. */ - protected String strutsActionToURL(String strutsAction, + public static String strutsActionToURL(String strutsAction, Activity activity, boolean useContext) { Index: lams_learning/web/WEB-INF/lams.tld =================================================================== diff -u -rd52b0a9ea260d27335a647fc2fba615c8e2e228e -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_learning/web/WEB-INF/lams.tld (.../lams.tld) (revision d52b0a9ea260d27335a647fc2fba615c8e2e228e) +++ lams_learning/web/WEB-INF/lams.tld (.../lams.tld) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -35,7 +35,7 @@ Output a random number for the learner and passon flash movies to communicate directly. id - false + true true @@ -302,9 +302,15 @@ headItems /WEB-INF/tags/headItems.tag + + - Passon - /WEB-INF/tags/Passon.tag + Passon + /WEB-INF/tags/Passon.tag + + ExportPortOutput + /WEB-INF/tags/ExportPortOutput.tag + Index: lams_learning/web/WEB-INF/struts/struts-config.xml =================================================================== diff -u -ra0722fe03d763f9da5efc82987034d929e6a23a1 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_learning/web/WEB-INF/struts/struts-config.xml (.../struts-config.xml) (revision a0722fe03d763f9da5efc82987034d929e6a23a1) +++ lams_learning/web/WEB-INF/struts/struts-config.xml (.../struts-config.xml) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -126,11 +126,6 @@ unknown="false" validate="false" > - + <%@ attribute name="saveButtonLabelKey" required="false" rtexprvalue="true" %> <%@ attribute name="cancelConfirmMsgKey" required="false" rtexprvalue="true" %> -<%@ attribute name="defineLater" required="false" rtexprvalue="false" %> +<%@ attribute name="defineLater" required="false" rtexprvalue="true" %> <%-- Default value for message key --%> Index: lams_learning/web/WEB-INF/tags/ExportPortOutput.tag =================================================================== diff -u --- lams_learning/web/WEB-INF/tags/ExportPortOutput.tag (revision 0) +++ lams_learning/web/WEB-INF/tags/ExportPortOutput.tag (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -0,0 +1,59 @@ +<% +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + + /** + * Passon + * Author: Fiona Malikoff + * Description: Outputs the Activity details on the main page in export portfolio. Recursive tag. + * + */ + + %> +<%@ tag body-content="empty" %> +<%@ attribute name="actport" required="true" rtexprvalue="true" type="org.lamsfoundation.lams.learning.export.ActivityPortfolio" %> +<%@ taglib uri="tags-core" prefix="c" %> +<%@ taglib uri="tags-lams" prefix="lams" %> + +
  • + + + "/> + + + + + + + + +
      + + + +
    +
    +
    + +
  • + Index: lams_learning/web/WEB-INF/web.xml =================================================================== diff -u -rcdab8186de5e9c75a9d6774616ead602dbf9cb69 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_learning/web/WEB-INF/web.xml (.../web.xml) (revision cdab8186de5e9c75a9d6774616ead602dbf9cb69) +++ lams_learning/web/WEB-INF/web.xml (.../web.xml) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -31,7 +31,7 @@ singleSession - false + true @@ -51,12 +51,8 @@ HibernateFilter - *.do + /* - - HibernateFilter - *.jsp - SystemSessionFilter @@ -74,6 +70,12 @@ project's merge dir. --> + + groupingExportPortfolio + org.lamsfoundation.lams.learning.web.action.GroupingExportPortfolioServlet + + + context org.springframework.web.context.ContextLoaderServlet @@ -140,6 +142,11 @@ /exportNotSupported + + groupingExportPortfolio + /groupingExportPortfolio + + 120 Index: lams_learning/web/exportPortfolio/main.jsp =================================================================== diff -u -r6f11dd80335ff2b8a2d06d21f1a49b307ed233c1 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_learning/web/exportPortfolio/main.jsp (.../main.jsp) (revision 6f11dd80335ff2b8a2d06d21f1a49b307ed233c1) +++ lams_learning/web/exportPortfolio/main.jsp (.../main.jsp) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -41,18 +41,19 @@

    - + + + + + -
      +
        -
      • - "/>: - -
      • + -
    +
    Index: lams_learning/web/grouping/show.jsp =================================================================== diff -u -ra0722fe03d763f9da5efc82987034d929e6a23a1 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_learning/web/grouping/show.jsp (.../show.jsp) (revision a0722fe03d763f9da5efc82987034d929e6a23a1) +++ lams_learning/web/grouping/show.jsp (.../show.jsp) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -49,12 +49,15 @@ + +
    +
     
    Index: lams_learning/web/layout/groupWaitLayout.jsp =================================================================== diff -u -r4f63e229406635f45a2a98726c9c47e554210e01 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_learning/web/layout/groupWaitLayout.jsp (.../groupWaitLayout.jsp) (revision 4f63e229406635f45a2a98726c9c47e554210e01) +++ lams_learning/web/layout/groupWaitLayout.jsp (.../groupWaitLayout.jsp) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -37,7 +37,7 @@ <fmt:message key="label.view.groups.title"/> - + Index: lams_monitoring/conf/xdoclet/struts-forms.xml =================================================================== diff -u -rdc3ace7961973e93b262349670d69142149be245 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_monitoring/conf/xdoclet/struts-forms.xml (.../struts-forms.xml) (revision dc3ace7961973e93b262349670d69142149be245) +++ lams_monitoring/conf/xdoclet/struts-forms.xml (.../struts-forms.xml) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -5,5 +5,6 @@ + Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/GateAction.java =================================================================== diff -u -ra1c1ca14a171ef3e0468aa9e5a5711be44f130c1 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/GateAction.java (.../GateAction.java) (revision a1c1ca14a171ef3e0468aa9e5a5711be44f130c1) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/GateAction.java (.../GateAction.java) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -100,8 +100,11 @@ private static final String VIEW_SYNCH_GATE = "viewSynchGate"; private static final String VIEW_PERMISSION_GATE = "viewPermissionGate"; private static final String VIEW_SCHEDULE_GATE="viewScheduleGate"; + + // Gate Form fields private static final String ACTIVITY_FORM_FIELD = "activityId"; private static final String TOTAL_LEARNERS_FORM_FIELD = "totalLearners"; + public static final String READ_ONLY= "readOnly"; //--------------------------------------------------------------------- // Struts Dispatch Method @@ -193,10 +196,26 @@ return findViewByGateType(mapping, gateForm, gate); } + + /** + * Export Portfolio Page + */ + public ActionForward exportPortfolio(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response) throws IOException, + ServletException + { + DynaActionForm gateForm = (DynaActionForm)form; + ActionForward forward = viewGate(mapping, form, request, response); + gateForm.set(READ_ONLY, Boolean.TRUE); + return forward; + } + //--------------------------------------------------------------------- // Helper Methods - //--------------------------------------------------------------------- + //--------------------------------------------------------------------- /** * Dispatch view the according to the gate type. * Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/GateExportPortfolioServlet.java =================================================================== diff -u --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/GateExportPortfolioServlet.java (revision 0) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/GateExportPortfolioServlet.java (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -0,0 +1,68 @@ +/**************************************************************** + * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ + +package org.lamsfoundation.lams.monitoring.web; + +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.servlet.AbstractExportPortfolioServlet; +import org.lamsfoundation.lams.web.util.AttributeNames; + + +/** + * Export portfolio page for the gates. Only the teacher gets portfolio pages for gates - learners + * do not see a page in their portfolio. Uses the normal gate "view" page. + * + * @web:servlet name="gateExportPortfolio" + * @web:servlet-mapping url-pattern="/gateExportPortfolio" + * + */ +public class GateExportPortfolioServlet extends AbstractExportPortfolioServlet { + + private static final long serialVersionUID = -5262996309778140432L; + + //--------------------------------------------------------------------- + // Class level constants - Session Attributes + //--------------------------------------------------------------------- + private final String FILENAME = "gate.html"; + + public String doExport(HttpServletRequest request, HttpServletResponse response, String directoryName, Cookie[] cookies) + { + Long lessonId = WebUtil.readLongParam(request,AttributeNames.PARAM_LESSON_ID); + Long gateId = WebUtil.readLongParam(request, AttributeNames.PARAM_ACTIVITY_ID); + + String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath(); + writeResponseToFile( + basePath+"/gate.do?method=exportPortfolio&lessonID="+lessonId+"&activityID="+gateId, + directoryName,FILENAME,cookies); + return FILENAME; + } + + + +} Index: lams_monitoring/web/WEB-INF/struts/struts-config.xml =================================================================== diff -u -r6b2751bb0a75d2d7d73b3297262dffd574d6b313 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_monitoring/web/WEB-INF/struts/struts-config.xml (.../struts-config.xml) (revision 6b2751bb0a75d2d7d73b3297262dffd574d6b313) +++ lams_monitoring/web/WEB-INF/struts/struts-config.xml (.../struts-config.xml) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -25,6 +25,7 @@ + Index: lams_monitoring/web/WEB-INF/web.xml =================================================================== diff -u -r440554bb4a9a414c6e3e676a93de72de3298951c -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_monitoring/web/WEB-INF/web.xml (.../web.xml) (revision 440554bb4a9a414c6e3e676a93de72de3298951c) +++ lams_monitoring/web/WEB-INF/web.xml (.../web.xml) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -77,7 +77,12 @@ org.lamsfoundation.lams.monitoring.web.CreateLessonServlet + + gateExportPortfolio + org.lamsfoundation.lams.monitoring.web.GateExportPortfolioServlet + + action org.apache.struts.action.ActionServlet @@ -113,6 +118,10 @@ createLessonClass /createLessonClass + + gateExportPortfolio + /gateExportPortfolio + 120 Index: lams_monitoring/web/gate/permissionGateContent.jsp =================================================================== diff -u -r0d8523cc71b9c30f8a0e9f4fd25b23923302f254 -r250486f86b66ac04cece0001879c3dc39c96ed98 --- lams_monitoring/web/gate/permissionGateContent.jsp (.../permissionGateContent.jsp) (revision 0d8523cc71b9c30f8a0e9f4fd25b23923302f254) +++ lams_monitoring/web/gate/permissionGateContent.jsp (.../permissionGateContent.jsp) (revision 250486f86b66ac04cece0001879c3dc39c96ed98) @@ -39,11 +39,14 @@ + <%-- set to read only if in export portfolio --%> + +