Index: tool_adapters/moodle/lams_tool_mdllesson/.classpath =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/.classpath (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/.classpath (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/.cvsignore =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/.cvsignore (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/.cvsignore (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,5 @@ +build +bin +.myeclipse +.mymetadata +.settings Index: tool_adapters/moodle/lams_tool_mdllesson/.project =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/.project (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/.project (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,22 @@ + + + lams_tool_mdlbla + + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.ibm.sse.model.structuredbuilder + + + + + + org.eclipse.jdt.core.javanature + + Index: tool_adapters/moodle/lams_tool_mdllesson/build.properties =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/build.properties (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/build.properties (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,20 @@ +# CVS ID: $Id$ +# project-wide properties +signature=mdlesn10 + +#project version +tool.version=20080724 + +package=org/lamsfoundation/lams/tool/mdlesn +package.name=org.lamsfoundation.lams.tool.mdlesn +weblib=lib + +# hide tool option +hideTool=false + +# Minimum compatible version +min.server.version.number=2.0 + +# Language files package +language.files.package=org.lamsfoundation.lams.tool.mdlesn + Index: tool_adapters/moodle/lams_tool_mdllesson/build.xml =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/build.xml (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/build.xml (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,528 @@ + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deploying the MdlLesson Tool + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/conf/hibernate/mappings/hibernate.properties =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/hibernate/mappings/hibernate.properties (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/hibernate/mappings/hibernate.properties (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,7 @@ +hibernate.connection.username=lams +hibernate.connection.password=lamsdemo +hibernate.connection.url=jdbc:mysql://localhost/lams +hibernate.connection.driver_class=com.mysql.jdbc.Driver +hibernate.dialect=org.hibernate.dialect.MySQLDialect + + Index: tool_adapters/moodle/lams_tool_mdllesson/conf/hibernate/mappings/org/lamsfoundation/lams/tool/mdlesn/model/MdlLesson.hbm.xml =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/hibernate/mappings/org/lamsfoundation/lams/tool/mdlesn/model/MdlLesson.hbm.xml (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/hibernate/mappings/org/lamsfoundation/lams/tool/mdlesn/model/MdlLesson.hbm.xml (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/conf/hibernate/mappings/org/lamsfoundation/lams/tool/mdlesn/model/MdlLessonConfigItem.hbm.xml =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/hibernate/mappings/org/lamsfoundation/lams/tool/mdlesn/model/MdlLessonConfigItem.hbm.xml (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/hibernate/mappings/org/lamsfoundation/lams/tool/mdlesn/model/MdlLessonConfigItem.hbm.xml (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/conf/hibernate/mappings/org/lamsfoundation/lams/tool/mdlesn/model/MdlLessonSession.hbm.xml =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/hibernate/mappings/org/lamsfoundation/lams/tool/mdlesn/model/MdlLessonSession.hbm.xml (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/hibernate/mappings/org/lamsfoundation/lams/tool/mdlesn/model/MdlLessonSession.hbm.xml (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/conf/hibernate/mappings/org/lamsfoundation/lams/tool/mdlesn/model/MdlLessonUser.hbm.xml =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/hibernate/mappings/org/lamsfoundation/lams/tool/mdlesn/model/MdlLessonUser.hbm.xml (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/hibernate/mappings/org/lamsfoundation/lams/tool/mdlesn/model/MdlLessonUser.hbm.xml (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/conf/jar/META-INF/MANIFEST.MF =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/jar/META-INF/MANIFEST.MF (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/jar/META-INF/MANIFEST.MF (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,3 @@ +Implementation-Title: LAMS - Notebok Tool +Implementation-Version: 2.1 +Implementation-Vendor: LAMS Foundation (http://lamsfoundation.org) Index: tool_adapters/moodle/lams_tool_mdllesson/conf/language/ApplicationResources.properties =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/language/ApplicationResources.properties (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/language/ApplicationResources.properties (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,45 @@ +appName = moodleLesson + + # CVS ID: $Id$ + +#=================== labels for moodleLesson =================# + +activity.helptext =Moodle Lesson Online threaded discussion tool +tool.display.name =Moodle Lesson +tool.description =Moodle Lesson Tool +activity.title =Moodle Lesson +activity.description =Moodle Lesson Tool +pageTitle.authoring =Moodle Lesson Authoring +pageTitle.admin =Moodle Lesson Configuration +admin.extToolAdapterServletUrl =External tool adapter servlet URL +admin.extServerId =External server id mapping +admin.extServerUrl =External server url +admin.formError =There was an error processing the form, please ensure both fields are filled and click save again. +admin.return =Return to maintain LAMS +monitor.sessions =Sessions +button.save =Save +pageTitle.learning =Online Moodle Lesson +message.defineLaterSet =Please wait for the teacher to complete the contents of this activity +message.runOfflineSet =This activity is not being done on the computer. Please see your instructor for details. +pageTitle.monitoring =Moodle Lesson Monitoring +button.summary =Summary +button.editActivity =Edit Activity +button.statistics =Statistics +titleHeading.summary =Summary +titleHeading.statistics =Statistics +titleHeading.editActivity =Edit Activity +titleHeading.exportPortfolio =Export Portfolio +exportPortfolio.message.nosessions =There are no sessions for this Moodle Lesson. +heading.group =Group {0}: +heading.totalLearners =Number of Learners: +heading.totalLearnersInGroup =Total Number of Learners in Group: +heading.totalFinishedLearnersInGroup =Number of Finished Learners: +button.cancel =Cancel +button.ok =OK +button.done =Done +button.next =Next +label.save =Save +label.cancel =Cancel +error.defineLater =Sorry, the activity is not ready yet. Please wait for the teacher to finishing defining the activity. + +#======= End labels ===== Index: tool_adapters/moodle/lams_tool_mdllesson/conf/language/lams/ApplicationResources.properties =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/language/lams/ApplicationResources.properties (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/language/lams/ApplicationResources.properties (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,46 @@ +appName = moodleLesson + + # CVS ID: $Id$ + +#=================== labels for moodleLesson =================# + +activity.helptext =Moodle Lesson Online threaded discussion tool +tool.display.name =Moodle Lesson +tool.description =Moodle Lesson Tool +activity.title =Moodle Lesson +activity.description =Moodle Lesson Tool +pageTitle.authoring =Moodle Lesson Authoring +pageTitle.admin =Moodle Lesson Configuration +admin.extToolAdapterServletUrl =External tool adapter servlet URL +admin.extServerId =External server id mapping +admin.extServerUrl =External server url +admin.formError =There was an error processing the form, please ensure both fields are filled and click save again. +admin.return =Return to maintain LAMS +monitor.sessions =Sessions +button.save =Save +pageTitle.learning =Online Moodle Lesson +message.defineLaterSet =Please wait for the teacher to complete the contents of this activity +message.runOfflineSet =This activity is not being done on the computer. Please see your instructor for details. +pageTitle.monitoring =Moodle Lesson Monitoring +button.summary =Summary +button.editActivity =Edit Activity +button.statistics =Statistics +titleHeading.summary =Summary +titleHeading.statistics =Statistics +titleHeading.editActivity =Edit Activity +titleHeading.exportPortfolio =Export Portfolio +exportPortfolio.message.nosessions =There are no sessions for this Moodle Lesson. +heading.group =Group {0}: +heading.totalLearners =Number of Learners: +heading.totalLearnersInGroup =Total Number of Learners in Group: +heading.totalFinishedLearnersInGroup =Number of Finished Learners: +button.cancel =Cancel +button.ok =OK +button.done =Done +button.next =Next +label.save =Save +label.cancel =Cancel +error.defineLater =Sorry, the activity is not ready yet. Please wait for the teacher to finishing defining the activity. +learner.number.of.entries = Learner's number of entries +learner.number.of.comments =Learner's number of comments +#======= End labels ===== Index: tool_adapters/moodle/lams_tool_mdllesson/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/language/lams/ApplicationResources_en_AU.properties (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/language/lams/ApplicationResources_en_AU.properties (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,46 @@ +appName = moodleLesson + + # CVS ID: $Id$ + +#=================== labels for moodleLesson =================# + +activity.helptext =Moodle Lesson Online threaded discussion tool +tool.display.name =Moodle Lesson +tool.description =Moodle Lesson Tool +activity.title =Moodle Lesson +activity.description =Moodle Lesson Tool +pageTitle.authoring =Moodle Lesson Authoring +pageTitle.admin =Moodle Lesson Configuration +admin.extToolAdapterServletUrl =External tool adapter servlet URL +admin.extServerId =External server id mapping +admin.extServerUrl =External server url +admin.formError =There was an error processing the form, please ensure both fields are filled and click save again. +admin.return =Return to maintain LAMS +monitor.sessions =Sessions +button.save =Save +pageTitle.learning =Online Moodle Lesson +message.defineLaterSet =Please wait for the teacher to complete the contents of this activity +message.runOfflineSet =This activity is not being done on the computer. Please see your instructor for details. +pageTitle.monitoring =Moodle Lesson Monitoring +button.summary =Summary +button.editActivity =Edit Activity +button.statistics =Statistics +titleHeading.summary =Summary +titleHeading.statistics =Statistics +titleHeading.editActivity =Edit Activity +titleHeading.exportPortfolio =Export Portfolio +exportPortfolio.message.nosessions =There are no sessions for this Moodle Lesson. +heading.group =Group {0}: +heading.totalLearners =Number of Learners: +heading.totalLearnersInGroup =Total Number of Learners in Group: +heading.totalFinishedLearnersInGroup =Number of Finished Learners: +button.cancel =Cancel +button.ok =OK +button.done =Done +button.next =Next +label.save =Save +label.cancel =Cancel +error.defineLater =Sorry, the activity is not ready yet. Please wait for the teacher to finishing defining the activity. +learner.number.of.entries = Learner's number of entries +learner.number.of.comments =Learner's number of comments +#======= End labels ===== Index: tool_adapters/moodle/lams_tool_mdllesson/conf/language/rams/ApplicationResources.properties =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/language/rams/ApplicationResources.properties (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/language/rams/ApplicationResources.properties (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,45 @@ +appName = moodleLesson + + # CVS ID: $Id$ + +#=================== labels for moodleLesson =================# + +activity.helptext =Moodle Lesson Online threaded discussion tool +tool.display.name =Moodle Lesson +tool.description =Moodle Lesson Tool +activity.title =Moodle Lesson +activity.description =Moodle Lesson Tool +pageTitle.authoring =Moodle Lesson Authoring +pageTitle.admin =Moodle Lesson Configuration +admin.extToolAdapterServletUrl =External tool adapter servlet URL +admin.extServerId =External server id mapping +admin.extServerUrl =External server url +admin.formError =There was an error processing the form, please ensure both fields are filled and click save again. +admin.return =Return to maintain LAMS +monitor.sessions =Sessions +button.save =Save +pageTitle.learning =Online Moodle Lesson +message.defineLaterSet =Please wait for the teacher to complete the contents of this activity +message.runOfflineSet =This activity is not being done on the computer. Please see your instructor for details. +pageTitle.monitoring =Moodle Lesson Monitoring +button.summary =Summary +button.editActivity =Edit Activity +button.statistics =Statistics +titleHeading.summary =Summary +titleHeading.statistics =Statistics +titleHeading.editActivity =Edit Activity +titleHeading.exportPortfolio =Export Portfolio +exportPortfolio.message.nosessions =There are no sessions for this Moodle Lesson. +heading.group =Group {0}: +heading.totalLearners =Number of Learners: +heading.totalLearnersInGroup =Total Number of Learners in Group: +heading.totalFinishedLearnersInGroup =Number of Finished Learners: +button.cancel =Cancel +button.ok =OK +button.done =Done +button.next =Next +label.save =Save +label.cancel =Cancel +error.defineLater =Sorry, the activity is not ready yet. Please wait for the teacher to finishing defining the activity. + +#======= End labels ===== Index: tool_adapters/moodle/lams_tool_mdllesson/conf/language/rams/ApplicationResources_en_AU.properties =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/language/rams/ApplicationResources_en_AU.properties (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/language/rams/ApplicationResources_en_AU.properties (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,45 @@ +appName = moodleLesson + + # CVS ID: $Id$ + +#=================== labels for moodleLesson =================# + +activity.helptext =Moodle Lesson Online threaded discussion tool +tool.display.name =Moodle Lesson +tool.description =Moodle Lesson Tool +activity.title =Moodle Lesson +activity.description =Moodle Lesson Tool +pageTitle.authoring =Moodle Lesson Authoring +pageTitle.admin =Moodle Lesson Configuration +admin.extToolAdapterServletUrl =External tool adapter servlet URL +admin.extServerId =External server id mapping +admin.extServerUrl =External server url +admin.formError =There was an error processing the form, please ensure both fields are filled and click save again. +admin.return =Return to maintain LAMS +monitor.sessions =Sessions +button.save =Save +pageTitle.learning =Online Moodle Lesson +message.defineLaterSet =Please wait for the teacher to complete the contents of this activity +message.runOfflineSet =This activity is not being done on the computer. Please see your instructor for details. +pageTitle.monitoring =Moodle Lesson Monitoring +button.summary =Summary +button.editActivity =Edit Activity +button.statistics =Statistics +titleHeading.summary =Summary +titleHeading.statistics =Statistics +titleHeading.editActivity =Edit Activity +titleHeading.exportPortfolio =Export Portfolio +exportPortfolio.message.nosessions =There are no sessions for this Moodle Lesson. +heading.group =Group {0}: +heading.totalLearners =Number of Learners: +heading.totalLearnersInGroup =Total Number of Learners in Group: +heading.totalFinishedLearnersInGroup =Number of Finished Learners: +button.cancel =Cancel +button.ok =OK +button.done =Done +button.next =Next +label.save =Save +label.cancel =Cancel +error.defineLater =Sorry, the activity is not ready yet. Please wait for the teacher to finishing defining the activity. + +#======= End labels ===== Index: tool_adapters/moodle/lams_tool_mdllesson/conf/middlegen/lams_tool_mdfrum10-prefs.properties =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/middlegen/lams_tool_mdfrum10-prefs.properties (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/middlegen/lams_tool_mdfrum10-prefs.properties (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,128 @@ +# Middlegen Preferences +hibernate.tables.tl_mdlesn10_attachment.base-class-name=MdlLessonAttachment +hibernate.tables.tl_mdlesn10_attachment.columns.create_date.columnspecialty=property +hibernate.tables.tl_mdlesn10_attachment.columns.create_date.java-name=createDate +hibernate.tables.tl_mdlesn10_attachment.columns.create_date.java-type=java.sql.Timestamp +hibernate.tables.tl_mdlesn10_attachment.columns.mdlLesson_uid.columnspecialty=foreign key +hibernate.tables.tl_mdlesn10_attachment.columns.mdlLesson_uid.java-name=mdlLessonUid +hibernate.tables.tl_mdlesn10_attachment.columns.mdlLesson_uid.java-type=java.lang.Long +hibernate.tables.tl_mdlesn10_attachment.columns.file_name.inctostring=true +hibernate.tables.tl_mdlesn10_attachment.columns.file_name.java-name=fileName +hibernate.tables.tl_mdlesn10_attachment.columns.file_name.java-type=java.lang.String +hibernate.tables.tl_mdlesn10_attachment.columns.file_type.java-name=fileType +hibernate.tables.tl_mdlesn10_attachment.columns.file_type.java-type=java.lang.String +hibernate.tables.tl_mdlesn10_attachment.columns.file_uuid.columnspecialty=property +hibernate.tables.tl_mdlesn10_attachment.columns.file_uuid.incequals=false +hibernate.tables.tl_mdlesn10_attachment.columns.file_uuid.inctostring=true +hibernate.tables.tl_mdlesn10_attachment.columns.file_uuid.java-name=fileUuid +hibernate.tables.tl_mdlesn10_attachment.columns.file_uuid.java-type=java.lang.Long +hibernate.tables.tl_mdlesn10_attachment.columns.file_version_id.inctostring=true +hibernate.tables.tl_mdlesn10_attachment.columns.file_version_id.java-name=fileVersionId +hibernate.tables.tl_mdlesn10_attachment.columns.file_version_id.java-type=java.lang.Long +hibernate.tables.tl_mdlesn10_attachment.columns.uid.columnspecialty=key +hibernate.tables.tl_mdlesn10_attachment.columns.uid.incequals=true +hibernate.tables.tl_mdlesn10_attachment.columns.uid.inctostring=true +hibernate.tables.tl_mdlesn10_attachment.columns.uid.java-name=uid +hibernate.tables.tl_mdlesn10_attachment.columns.uid.java-type=java.lang.Long +hibernate.tables.tl_mdlesn10_attachment.equalshashcode=true +hibernate.tables.tl_mdlesn10_attachment.keygenerator=native +hibernate.tables.tl_mdlesn10_mdlLesson.base-class-name=MdlLesson +hibernate.tables.tl_mdlesn10_mdlLesson.columns.content_in_use.java-name=contentInUse +hibernate.tables.tl_mdlesn10_mdlLesson.columns.content_in_use.java-type=java.lang.Boolean +hibernate.tables.tl_mdlesn10_mdlLesson.columns.create_by.java-name=createBy +hibernate.tables.tl_mdlesn10_mdlLesson.columns.create_by.java-type=java.lang.Long +hibernate.tables.tl_mdlesn10_mdlLesson.columns.create_date.java-name=createDate +hibernate.tables.tl_mdlesn10_mdlLesson.columns.create_date.java-type=java.sql.Timestamp +hibernate.tables.tl_mdlesn10_mdlLesson.columns.define_later.java-name=defineLater +hibernate.tables.tl_mdlesn10_mdlLesson.columns.define_later.java-type=java.lang.Boolean +hibernate.tables.tl_mdlesn10_mdlLesson.columns.instructions.inctostring=true +hibernate.tables.tl_mdlesn10_mdlLesson.columns.instructions.java-name=instructions +hibernate.tables.tl_mdlesn10_mdlLesson.columns.instructions.java-type=java.lang.String +hibernate.tables.tl_mdlesn10_mdlLesson.columns.lock_on_finished.java-name=lockOnFinished +hibernate.tables.tl_mdlesn10_mdlLesson.columns.lock_on_finished.java-type=java.lang.Boolean +hibernate.tables.tl_mdlesn10_mdlLesson.columns.offline_instructions.java-name=offlineInstructions +hibernate.tables.tl_mdlesn10_mdlLesson.columns.offline_instructions.java-type=java.lang.String +hibernate.tables.tl_mdlesn10_mdlLesson.columns.online_instructions.java-name=onlineInstructions +hibernate.tables.tl_mdlesn10_mdlLesson.columns.online_instructions.java-type=java.lang.String +hibernate.tables.tl_mdlesn10_mdlLesson.columns.run_offline.java-name=runOffline +hibernate.tables.tl_mdlesn10_mdlLesson.columns.run_offline.java-type=java.lang.Boolean +hibernate.tables.tl_mdlesn10_mdlLesson.columns.title.inctostring=true +hibernate.tables.tl_mdlesn10_mdlLesson.columns.title.java-name=title +hibernate.tables.tl_mdlesn10_mdlLesson.columns.title.java-type=java.lang.String +hibernate.tables.tl_mdlesn10_mdlLesson.columns.tool_content_id.inctostring=true +hibernate.tables.tl_mdlesn10_mdlLesson.columns.tool_content_id.java-name=toolContentId +hibernate.tables.tl_mdlesn10_mdlLesson.columns.tool_content_id.java-type=java.lang.Long +hibernate.tables.tl_mdlesn10_mdlLesson.columns.uid.columnspecialty=key +hibernate.tables.tl_mdlesn10_mdlLesson.columns.uid.incequals=true +hibernate.tables.tl_mdlesn10_mdlLesson.columns.uid.inctostring=true +hibernate.tables.tl_mdlesn10_mdlLesson.columns.uid.java-name=uid +hibernate.tables.tl_mdlesn10_mdlLesson.columns.uid.java-type=java.lang.Long +hibernate.tables.tl_mdlesn10_mdlLesson.columns.update_date.java-name=updateDate +hibernate.tables.tl_mdlesn10_mdlLesson.columns.update_date.java-type=java.sql.Timestamp +hibernate.tables.tl_mdlesn10_mdlLesson.dynamicInsert=false +hibernate.tables.tl_mdlesn10_mdlLesson.equalshashcode=true +hibernate.tables.tl_mdlesn10_mdlLesson.keygenerator=native +hibernate.tables.tl_mdlesn10_session.base-class-name=MdlLessonSession +hibernate.tables.tl_mdlesn10_session.columns.mdlLesson_uid.java-name=mdlLessonUid +hibernate.tables.tl_mdlesn10_session.columns.mdlLesson_uid.java-type=java.lang.Long +hibernate.tables.tl_mdlesn10_session.columns.session_end_date.inctostring=true +hibernate.tables.tl_mdlesn10_session.columns.session_end_date.java-name=sessionEndDate +hibernate.tables.tl_mdlesn10_session.columns.session_end_date.java-type=java.sql.Timestamp +hibernate.tables.tl_mdlesn10_session.columns.session_id.inctostring=true +hibernate.tables.tl_mdlesn10_session.columns.session_id.java-name=sessionId +hibernate.tables.tl_mdlesn10_session.columns.session_id.java-type=java.lang.Long +hibernate.tables.tl_mdlesn10_session.columns.session_name.inctostring=true +hibernate.tables.tl_mdlesn10_session.columns.session_name.java-name=sessionName +hibernate.tables.tl_mdlesn10_session.columns.session_name.java-type=java.lang.String +hibernate.tables.tl_mdlesn10_session.columns.session_start_date.inctostring=true +hibernate.tables.tl_mdlesn10_session.columns.session_start_date.java-name=sessionStartDate +hibernate.tables.tl_mdlesn10_session.columns.session_start_date.java-type=java.sql.Timestamp +hibernate.tables.tl_mdlesn10_session.columns.status.inctostring=true +hibernate.tables.tl_mdlesn10_session.columns.status.java-name=status +hibernate.tables.tl_mdlesn10_session.columns.status.java-type=java.lang.Integer +hibernate.tables.tl_mdlesn10_session.columns.uid.columnspecialty=key +hibernate.tables.tl_mdlesn10_session.columns.uid.incequals=true +hibernate.tables.tl_mdlesn10_session.columns.uid.inctostring=true +hibernate.tables.tl_mdlesn10_session.columns.uid.java-name=uid +hibernate.tables.tl_mdlesn10_session.columns.uid.java-type=java.lang.Long +hibernate.tables.tl_mdlesn10_session.equalshashcode=true +hibernate.tables.tl_mdlesn10_session.keygenerator=native +hibernate.tables.tl_mdlesn10_user.base-class-name=MdlLessonUser +hibernate.tables.tl_mdlesn10_user.columns.first_name.java-name=firstName +hibernate.tables.tl_mdlesn10_user.columns.first_name.java-type=java.lang.String +hibernate.tables.tl_mdlesn10_user.columns.last_name.columnspecialty=property +hibernate.tables.tl_mdlesn10_user.columns.last_name.java-name=lastName +hibernate.tables.tl_mdlesn10_user.columns.last_name.java-type=java.lang.String +hibernate.tables.tl_mdlesn10_user.columns.session_id.inctostring=true +hibernate.tables.tl_mdlesn10_user.columns.session_id.java-name=sessionId +hibernate.tables.tl_mdlesn10_user.columns.session_id.java-type=java.lang.Long +hibernate.tables.tl_mdlesn10_user.columns.uid.columnspecialty=key +hibernate.tables.tl_mdlesn10_user.columns.uid.incequals=true +hibernate.tables.tl_mdlesn10_user.columns.uid.inctostring=true +hibernate.tables.tl_mdlesn10_user.columns.uid.java-name=uid +hibernate.tables.tl_mdlesn10_user.columns.uid.java-type=java.lang.Long +hibernate.tables.tl_mdlesn10_user.columns.user_id.inctostring=true +hibernate.tables.tl_mdlesn10_user.columns.user_id.java-name=userId +hibernate.tables.tl_mdlesn10_user.columns.user_id.java-type=java.lang.Long +hibernate.tables.tl_mdlesn10_user.equalshashcode=true +hibernate.tables.tl_mdlesn10_user.keygenerator=sequence +relations.tl_mdlesn10_mdlLesson-tl_mdlesn10_attachment.tl_mdlesn10_attachment-has-tl_mdlesn10_mdlLesson.enabled=true +relations.tl_mdlesn10_mdlLesson-tl_mdlesn10_attachment.tl_mdlesn10_attachment-has-tl_mdlesn10_mdlLesson.target-many=false +relations.tl_mdlesn10_mdlLesson-tl_mdlesn10_attachment.tl_mdlesn10_mdlLesson-has-tl_mdlesn10_attachment.enabled=true +relations.tl_mdlesn10_mdlLesson-tl_mdlesn10_attachment.tl_mdlesn10_mdlLesson-has-tl_mdlesn10_attachment.target-many=true +relations.tl_mdlesn10_mdlLesson-tl_mdlesn10_session.tl_mdlesn10_mdlLesson-has-tl_mdlesn10_session.enabled=true +relations.tl_mdlesn10_mdlLesson-tl_mdlesn10_session.tl_mdlesn10_mdlLesson-has-tl_mdlesn10_session.target-many=true +relations.tl_mdlesn10_mdlLesson-tl_mdlesn10_session.tl_mdlesn10_session-has-tl_mdlesn10_mdlLesson.enabled=true +relations.tl_mdlesn10_mdlLesson-tl_mdlesn10_session.tl_mdlesn10_session-has-tl_mdlesn10_mdlLesson.target-many=false +relations.tl_mdlesn10_session-tl_mdlesn10_user.tl_mdlesn10_session-has-tl_mdlesn10_user.enabled=true +relations.tl_mdlesn10_session-tl_mdlesn10_user.tl_mdlesn10_session-has-tl_mdlesn10_user.target-many=true +relations.tl_mdlesn10_session-tl_mdlesn10_user.tl_mdlesn10_user-has-tl_mdlesn10_session.enabled=true +relations.tl_mdlesn10_session-tl_mdlesn10_user.tl_mdlesn10_user-has-tl_mdlesn10_session.target-many=false +tables.tl_mdlesn10_attachment.x=566 +tables.tl_mdlesn10_attachment.y=173 +tables.tl_mdlesn10_mdlLesson.x=308 +tables.tl_mdlesn10_mdlLesson.y=176 +tables.tl_mdlesn10_session.x=70 +tables.tl_mdlesn10_session.y=70 +tables.tl_mdlesn10_user.x=460 +tables.tl_mdlesn10_user.y=28 Index: tool_adapters/moodle/lams_tool_mdllesson/conf/war/META-INF/MANIFEST.MF =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/war/META-INF/MANIFEST.MF (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/war/META-INF/MANIFEST.MF (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,4 @@ +Implementation-Title: LAMS - MdlLesson Tool +Implementation-Version: 2.1 +Implementation-Vendor: LAMS Foundation (http://lamsfoundation.org) +Class-Path: ./lams.jar ./lams-tool-mdlesn10.jar ./lams-contentrepository.jar ./lams-learning.jar Index: tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/error-pages.xml =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/error-pages.xml (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/error-pages.xml (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,13 @@ + + 500 + /error.jsp + + + 403 + /403.jsp + + + 404 + /404.jsp + + Index: tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/filter-mappings.xml =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/filter-mappings.xml (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/filter-mappings.xml (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,14 @@ + + SystemSessionFilter + /* + + + + hibernateFilter + /* + + + + LocaleFilter + /* + Index: tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/filters.xml =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/filters.xml (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/filters.xml (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,24 @@ + + SystemSessionFilter + + org.lamsfoundation.lams.web.session.SystemSessionFilter + + + + + hibernateFilter + + org.lamsfoundation.lams.util.CustomizedOpenSessionInViewFilter + + + sessionFactoryBeanName + mdlLessonSessionFactory + + + + + LocaleFilter + + org.lamsfoundation.lams.web.filter.LocaleFilter + + Index: tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/global-forwards.xml =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/global-forwards.xml (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/global-forwards.xml (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,3 @@ + + + Index: tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/listeners.xml =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/listeners.xml (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/listeners.xml (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,10 @@ + + + org.springframework.web.context.ContextLoaderListener + + + + + org.lamsfoundation.lams.web.SessionListener + + Index: tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/servlet-mappings.xml =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/servlet-mappings.xml (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/servlet-mappings.xml (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,20 @@ + + action + *.do + + + + + Connector + /fckeditor/editor/filemanager/browser/default/connectors/jsp/connector + + + + download + /download/* + + + + exportPortfolio + /exportPortfolio + Index: tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/servlets.xml =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/servlets.xml (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/servlets.xml (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,56 @@ + + action + org.apache.struts.action.ActionServlet + + config + /WEB-INF/struts/struts-config.xml + + + debug + 999 + + + detail + 2 + + + validate + true + + 1 + + + + + + Connector + com.fredck.FCKeditor.connector.ConnectorServlet + + baseDir + /UserFiles/ + + + debug + false + + 1 + + + + + Attachment Download + Attachment Download + download + org.lamsfoundation.lams.contentrepository.client.ToolDownload + + toolContentHandlerBeanName + mdlLessonToolContentHandler + + 3 + + + + exportPortfolio + org.lamsfoundation.lams.tool.mdlesn.web.servlets.ExportServlet + + Index: tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/struts-forms.xml =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/struts-forms.xml (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/struts-forms.xml (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1 @@ \ No newline at end of file Index: tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/struts-message-resources.xml =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/struts-message-resources.xml (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/struts-message-resources.xml (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1 @@ + Index: tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/struts-plugins.xml =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/struts-plugins.xml (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/struts-plugins.xml (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,9 @@ + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/taglibs.xml =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/taglibs.xml (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/taglibs.xml (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,77 @@ + + + + + + + tags-bean + /WEB-INF/struts/tlds/struts-bean.tld + + + + tags-html + /WEB-INF/struts/tlds/struts-html.tld + + + + tags-logic + /WEB-INF/struts/tlds/struts-logic.tld + + + + tags-tiles + /WEB-INF/struts/tlds/struts-tiles.tld + + + + + + + + tags-fmt + /WEB-INF/jstl/tlds/fmt.tld + + + + tags-core + /WEB-INF/jstl/tlds/c.tld + + + + tags-function + /WEB-INF/jstl/tlds/fn.tld + + + + tags-xml + /WEB-INF/jstl/tlds/x.tld + + + + + + + tags-permittedTaglibs + /WEB-INF/jstl/tlds/permittedTaglibs.tld + + + + tags-scriptfree + /WEB-INF/jstl/tlds/scriptfree.tld + + + + + + + fck-editor + /WEB-INF/fckeditor/tlds/FCKeditor.tld + + + + tags-lams + /WEB-INF/lams.tld + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/web-security.xml =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/web-security.xml (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/web-security.xml (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,103 @@ + + + + Secure Content + *.jsp + *.html + *.do + + + LEARNER + TEACHER + MONITOR + AUTHOR + ADMIN + SYSADMIN + AUTHOR ADMIN + + + + + + Authoring Update + /authoring.do + + + AUTHOR + AUTHOR ADMIN + SYSADMIN + + + + + + Staff Content + /monitoring.do + + + MONITOR + TEACHER + + + + + + + Download Files + /download/ + + + AUTHOR + MONITOR + TEACHER + ADMIN + SYSADMIN + AUTHOR ADMIN + + + + + + FORM + LAMS + + /login.jsp + /login.jsp?failed=y + + + + + + + Student + LEARNER + + + Student + TEACHER + + + + Can create/modify a learning design + AUTHOR + + + + Can running and monitoring a learning session + MONITOR + + + + Can add/remove users to the system, set up classes of users for sessions + ADMIN + + + + Can add/remove users to the system, set up classes of users for sessions + SYSADMIN + + + + Can create/modify a learning design and edit default tool content + AUTHOR ADMIN + Index: tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/web-settings.xml =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/web-settings.xml (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/conf/xdoclet/web-settings.xml (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,20 @@ + + + + javax.servlet.jsp.jstl.fmt.localizationContext + org.lamsfoundation.lams.tool.mdlesn.ApplicationResources + + + + contextConfigLocation + + classpath:/org/lamsfoundation/lams/applicationContext.xml + classpath:/org/lamsfoundation/lams/lesson/lessonApplicationContext.xml + classpath:/org/lamsfoundation/lams/toolApplicationContext.xml + classpath:/org/lamsfoundation/lams/integrationContext.xml + classpath:/org/lamsfoundation/lams/learning/learningApplicationContext.xml + classpath:/org/lamsfoundation/lams/contentrepository/applicationContext.xml + classpath:/org/lamsfoundation/lams/tool/mdlesn/mdlLessonApplicationContext.xml + + + Index: tool_adapters/moodle/lams_tool_mdllesson/db/sql/activity_insert.sql =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/db/sql/activity_insert.sql (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/db/sql/activity_insert.sql (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,80 @@ +-- CVS ID: $Id$ + +INSERT INTO lams_learning_activity +( +activity_ui_id +, description +, title +, help_text +, xcoord +, ycoord +, parent_activity_id +, parent_ui_id +, learning_activity_type_id +, grouping_support_type_id +, apply_grouping_flag +, grouping_id +, grouping_ui_id +, order_id +, define_later_flag +, learning_design_id +, learning_library_id +, create_date_time +, run_offline_flag +, max_number_of_options +, min_number_of_options +, options_instructions +, tool_id +, tool_content_id +, activity_category_id +, gate_activity_level_id +, gate_open_flag +, gate_start_time_offset +, gate_end_time_offset +, gate_start_date_time +, gate_end_date_time +, library_activity_ui_image +, create_grouping_id +, create_grouping_ui_id +, library_activity_id +, language_file +) +VALUES +( +NULL +, 'Moodle Lesson Tool' +, 'Moodle Lesson Tool' +, 'Moodle Lesson Tool.' +, NULL +, NULL +, NULL +, NULL +, 1 +, 2 +, 0 +, NULL +, NULL +, NULL +, 0 +, NULL +, ${learning_library_id} +, NOW() +, 0 +, NULL +, NULL +, NULL +, ${tool_id} +, NULL +, 6 +, NULL +, NULL +, NULL +, NULL +, NULL +, NULL +, 'tool/mdlesn10/images/icon_mdlLesson.swf' +, NULL +, NULL +, NULL +, 'org.lamsfoundation.lams.tool.mdlesn.ApplicationResources' +) Index: tool_adapters/moodle/lams_tool_mdllesson/db/sql/create_lams_tool_mdlLesson.sql =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/db/sql/create_lams_tool_mdlLesson.sql (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/db/sql/create_lams_tool_mdlLesson.sql (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,48 @@ +-- CVS ID: $Id$ + +SET FOREIGN_KEY_CHECKS=0; +drop table if exists tl_mdlesn10_configuration; +drop table if exists tl_mdlesn10_mdllesson; +drop table if exists tl_mdlesn10_session; +drop table if exists tl_mdlesn10_user; +create table tl_mdlesn10_configuration (uid bigint not null auto_increment, config_key varchar(30) unique, config_value varchar(255), primary key (uid)); +create table tl_mdlesn10_mdllesson (uid bigint not null auto_increment, create_date datetime, update_date datetime, define_later bit, content_in_use bit, run_offline bit, tool_content_id bigint, ext_tool_content_id bigint, ext_user_name varchar(255), ext_course_id varchar(255), ext_section varchar(255), primary key (uid)); +create table tl_mdlesn10_session (uid bigint not null auto_increment, session_end_date datetime, session_start_date datetime, status integer, session_id bigint, ext_session_id bigint, session_name varchar(250), mdllesson_uid bigint, primary key (uid)); +create table tl_mdlesn10_user (uid bigint not null auto_increment, user_id bigint, last_name varchar(255), login_name varchar(255), first_name varchar(255), finishedActivity bit, mdllesson_session_uid bigint, entry_uid bigint, primary key (uid)); +alter table tl_mdlesn10_session add index FKBA4AC37B89669C81 (mdllesson_uid), add constraint FKBA4AC37B89669C81 foreign key (mdllesson_uid) references tl_mdlesn10_mdllesson (uid); +alter table tl_mdlesn10_user add index FK1B25DD0618E034DA (mdllesson_session_uid), add constraint FK1B25DD0618E034DA foreign key (mdllesson_session_uid) references tl_mdlesn10_session (uid); + +INSERT INTO tl_mdlesn10_configuration ( + config_key, + config_value +) +VALUES( + "toolAdapterServlet", + "http://localhost:8000/lams2conf/tooladapter_mdlesn10" +); + +INSERT INTO tl_mdlesn10_configuration ( + config_key, + config_value +) +VALUES( + "extServerUrl", + "http://localhost/moodle19/" +); + +INSERT INTO tl_mdlesn10_mdllesson ( + tool_content_id, + ext_tool_content_id, + run_offline, + content_in_use, + define_later +) +VALUES( + 0, + null, + 0, + 0, + 0 +); + +SET FOREIGN_KEY_CHECKS=1; Index: tool_adapters/moodle/lams_tool_mdllesson/db/sql/drop_lams_tool_mdlLesson.sql =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/db/sql/drop_lams_tool_mdlLesson.sql (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/db/sql/drop_lams_tool_mdlLesson.sql (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,13 @@ +-- CVS ID: $Id$ + +SET FOREIGN_KEY_CHECKS=0; +DROP TABLE IF EXISTS tl_mdlesn10_user; +DROP TABLE IF EXISTS tl_mdlesn10_attachment; +DROP TABLE IF EXISTS tl_mdlesn10_session; +DROP TABLE IF EXISTS tl_mdlesn10_mdllesson; +SET FOREIGN_KEY_CHECKS=1; + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/db/sql/library_insert.sql =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/db/sql/library_insert.sql (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/db/sql/library_insert.sql (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,16 @@ +-- CVS ID: $Id$ + +INSERT INTO lams_learning_library +( +description, +title, +valid_flag, +create_date_time +) +VALUES +( +'MdlLesson Tool', +'MdlLesson', +0, +NOW() +) Index: tool_adapters/moodle/lams_tool_mdllesson/db/sql/table-schema.sql =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/db/sql/table-schema.sql (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/db/sql/table-schema.sql (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,12 @@ +alter table tl_mdlesn10_session drop foreign key FKBA4AC37B89669C81; +alter table tl_mdlesn10_user drop foreign key FK1B25DD0618E034DA; +drop table if exists tl_mdlesn10_configuration; +drop table if exists tl_mdlesn10_mdllesson; +drop table if exists tl_mdlesn10_session; +drop table if exists tl_mdlesn10_user; +create table tl_mdlesn10_configuration (uid bigint not null auto_increment, config_key varchar(30) unique, config_value varchar(255), primary key (uid)); +create table tl_mdlesn10_mdllesson (uid bigint not null auto_increment, create_date datetime, update_date datetime, define_later bit, content_in_use bit, run_offline bit, tool_content_id bigint, ext_tool_content_id bigint, ext_user_name varchar(255), ext_course_id varchar(255), ext_section varchar(255), primary key (uid)); +create table tl_mdlesn10_session (uid bigint not null auto_increment, session_end_date datetime, session_start_date datetime, status integer, session_id bigint, ext_session_id bigint, session_name varchar(250), mdllesson_uid bigint, primary key (uid)); +create table tl_mdlesn10_user (uid bigint not null auto_increment, user_id bigint, last_name varchar(255), login_name varchar(255), first_name varchar(255), finishedActivity bit, mdllesson_session_uid bigint, entry_uid bigint, primary key (uid)); +alter table tl_mdlesn10_session add index FKBA4AC37B89669C81 (mdllesson_uid), add constraint FKBA4AC37B89669C81 foreign key (mdllesson_uid) references tl_mdlesn10_mdllesson (uid); +alter table tl_mdlesn10_user add index FK1B25DD0618E034DA (mdllesson_session_uid), add constraint FK1B25DD0618E034DA foreign key (mdllesson_session_uid) references tl_mdlesn10_session (uid); Index: tool_adapters/moodle/lams_tool_mdllesson/db/sql/tool_insert.sql =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/db/sql/tool_insert.sql (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/db/sql/tool_insert.sql (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,68 @@ +-- CVS ID: $Id$ + +INSERT INTO lams_tool +( +tool_signature, +service_name, +tool_display_name, +description, +tool_identifier, +tool_version, +learning_library_id, +default_tool_content_id, +valid_flag, +grouping_support_type_id, +supports_run_offline_flag, +learner_url, +learner_preview_url, +learner_progress_url, +author_url, +monitor_url, +define_later_url, +export_pfolio_learner_url, +export_pfolio_class_url, +contribute_url, +moderation_url, +help_url, +admin_url, +language_file, +classpath_addition, +context_file, +create_date_time, +modified_date_time, +ext_lms_id, +supports_outputs +) +VALUES +( +'mdlesn10', +'mdlLessonService', +'MdlLesson', +'MdlLesson', +'mdlLesson', +'@tool_version@', +NULL, +NULL, +0, +2, +1, +'tool/mdlesn10/learning.do?mode=learner', +'tool/mdlesn10/learning.do?mode=author', +'tool/mdlesn10/learning.do?mode=teacher', +'tool/mdlesn10/authoring.do', +'tool/mdlesn10/monitoring.do', +'tool/mdlesn10/authoring.do?mode=teacher', +'tool/mdlesn10/exportPortfolio?mode=learner', +'tool/mdlesn10/exportPortfolio?mode=teacher', +'tool/mdlesn10/contribute.do', +'tool/mdlesn10/moderate.do', +'http://wiki.lamsfoundation.org/display/lamsdocs/mdlesn10', +'tool/mdlesn10/mdlesn10admin.do', +'org.lamsfoundation.lams.tool.mdlesn.ApplicationResources', +'lams-tool-mdlesn10.jar', +'/org/lamsfoundation/lams/tool/mdlesn/mdlLessonApplicationContext.xml', +NOW(), +NOW(), +'moodle', +true +) Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dao/IMdlLessonConfigItemDAO.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dao/IMdlLessonConfigItemDAO.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dao/IMdlLessonConfigItemDAO.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,32 @@ +/**************************************************************** + * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +package org.lamsfoundation.lams.tool.mdlesn.dao; + +import org.lamsfoundation.lams.dao.IBaseDAO; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonConfigItem; + +public interface IMdlLessonConfigItemDAO extends IBaseDAO { + void saveOrUpdate(MdlLessonConfigItem toConfig); + + public MdlLessonConfigItem getConfigItemByKey(final String configKey); +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dao/IMdlLessonDAO.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dao/IMdlLessonDAO.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dao/IMdlLessonDAO.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,40 @@ +/**************************************************************** + * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.mdlesn.dao; + +import org.lamsfoundation.lams.dao.IBaseDAO; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLesson; + +/** + * DAO for accessing the MdlLesson objects - interface defining methods to be + * implemented by the Hibernate or other implementation. + */ +public interface IMdlLessonDAO extends IBaseDAO { + + MdlLesson getByContentId(Long toolContentId); + + void saveOrUpdate(MdlLesson toContent); + +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dao/IMdlLessonSessionDAO.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dao/IMdlLessonSessionDAO.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dao/IMdlLessonSessionDAO.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,41 @@ +/**************************************************************** + * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.mdlesn.dao; + +import org.lamsfoundation.lams.dao.IBaseDAO; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonSession; + +/** + * DAO for accessing the MdlLessonSession objects - interface defining methods to + * be implemented by the Hibernate or other implementation. + */ +public interface IMdlLessonSessionDAO extends IBaseDAO { + + void saveOrUpdate(MdlLessonSession session); + + MdlLessonSession getBySessionId(Long toolSessionId); + + void deleteBySessionID(Long toolSessionID); +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dao/IMdlLessonUserDAO.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dao/IMdlLessonUserDAO.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dao/IMdlLessonUserDAO.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.mdlesn.dao; + +import org.lamsfoundation.lams.dao.IBaseDAO; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonUser; + +/** + * DAO for accessing the MdlLessonUser objects - interface defining methods to be + * implemented by the Hibernate or other implementation. + */ +public interface IMdlLessonUserDAO extends IBaseDAO { + /** + * + * @param userId + * @param toolSessionId + * @return + */ + MdlLessonUser getByUserIdAndSessionId(Long userId, Long toolSessionId); + + void saveOrUpdate(MdlLessonUser mdlLessonUser); + + /** + * + * @param loginName + * @param sessionID + * @return + */ + MdlLessonUser getByLoginNameAndSessionId(String loginName, Long toolSessionId); + + /** + * + * @param uid + * @return + */ + MdlLessonUser getByUID(Long uid); +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dao/hibernate/MdlLessonConfigItemDAO.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dao/hibernate/MdlLessonConfigItemDAO.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dao/hibernate/MdlLessonConfigItemDAO.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,49 @@ +/**************************************************************** + * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +package org.lamsfoundation.lams.tool.mdlesn.dao.hibernate; + +import org.hibernate.HibernateException; +import org.hibernate.Session; +import org.lamsfoundation.lams.dao.hibernate.BaseDAO; +import org.lamsfoundation.lams.tool.mdlesn.dao.IMdlLessonConfigItemDAO; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonConfigItem; +import org.springframework.orm.hibernate3.HibernateCallback; + +public class MdlLessonConfigItemDAO extends BaseDAO implements IMdlLessonConfigItemDAO { + private static final String LOAD_CONFIG_ITEM_BY_KEY = "from MdlLessonConfigItem configuration" + + " where configuration.configKey=:key"; + + public MdlLessonConfigItem getConfigItemByKey(final String configKey) { + return (MdlLessonConfigItem) getHibernateTemplate().execute(new HibernateCallback() { + public Object doInHibernate(Session session) throws HibernateException { + return session.createQuery(LOAD_CONFIG_ITEM_BY_KEY).setString("key", configKey).uniqueResult(); + } + }); + + } + + public void saveOrUpdate(MdlLessonConfigItem mdlLessonConfigItem) { + this.getHibernateTemplate().saveOrUpdate(mdlLessonConfigItem); + this.getHibernateTemplate().flush(); + } +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dao/hibernate/MdlLessonDAO.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dao/hibernate/MdlLessonDAO.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dao/hibernate/MdlLessonDAO.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,53 @@ +/**************************************************************** + * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.mdlesn.dao.hibernate; + +import java.util.List; + +import org.lamsfoundation.lams.dao.hibernate.BaseDAO; +import org.lamsfoundation.lams.tool.mdlesn.dao.IMdlLessonDAO; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLesson; + +/** + * DAO for accessing the MdlLesson objects - Hibernate specific code. + */ +public class MdlLessonDAO extends BaseDAO implements IMdlLessonDAO { + + private static final String FIND_LESSON_BY_CONTENTID = "from MdlLesson mdlLesson where mdlLesson.toolContentId=?"; + + public MdlLesson getByContentId(Long toolContentId) { + List list = getHibernateTemplate().find(FIND_LESSON_BY_CONTENTID, toolContentId); + if (list != null && list.size() > 0) + return (MdlLesson) list.get(0); + else + return null; + } + + public void saveOrUpdate(MdlLesson mdlLesson) { + this.getHibernateTemplate().saveOrUpdate(mdlLesson); + this.getHibernateTemplate().flush(); + } + +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dao/hibernate/MdlLessonSessionDAO.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dao/hibernate/MdlLessonSessionDAO.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dao/hibernate/MdlLessonSessionDAO.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,60 @@ +/**************************************************************** + * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.mdlesn.dao.hibernate; + +import java.util.List; + +import org.lamsfoundation.lams.dao.hibernate.BaseDAO; +import org.lamsfoundation.lams.tool.mdlesn.dao.IMdlLessonSessionDAO; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonSession; + +/** + * DAO for accessing the MdlLessonSession objects - Hibernate specific code. + */ +public class MdlLessonSessionDAO extends BaseDAO implements IMdlLessonSessionDAO { + + public static final String SQL_QUERY_FIND_BY_SESSION_ID = "from " + MdlLessonSession.class.getName() + + " where session_id=?"; + + public void saveOrUpdate(MdlLessonSession session) { + this.getHibernateTemplate().saveOrUpdate(session); + this.getHibernateTemplate().flush(); + } + + public MdlLessonSession getBySessionId(Long toolSessionId) { + List list = this.getHibernateTemplate().find(SQL_QUERY_FIND_BY_SESSION_ID, toolSessionId); + if (list == null || list.isEmpty()) + return null; + return (MdlLessonSession) list.get(0); + } + + public void deleteBySessionID(Long toolSessionID) { + MdlLessonSession session = getBySessionId(toolSessionID); + if (session != null) { + this.getHibernateTemplate().delete(session); + this.getHibernateTemplate().flush(); + } + } +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dao/hibernate/MdlLessonUserDAO.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dao/hibernate/MdlLessonUserDAO.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dao/hibernate/MdlLessonUserDAO.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,81 @@ +/**************************************************************** + * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.mdlesn.dao.hibernate; + +import java.util.List; + +import org.lamsfoundation.lams.dao.hibernate.BaseDAO; +import org.lamsfoundation.lams.tool.mdlesn.dao.IMdlLessonUserDAO; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonUser; + +/** + * DAO for accessing the MdlLessonUser objects - Hibernate specific code. + */ +public class MdlLessonUserDAO extends BaseDAO implements IMdlLessonUserDAO { + + public static final String SQL_QUERY_FIND_BY_USER_ID_SESSION_ID = "from " + MdlLessonUser.class.getName() + " as f" + + " where user_id=? and f.mdlLessonSession.sessionId=?"; + + public static final String SQL_QUERY_FIND_BY_LOGIN_NAME_SESSION_ID = "from " + MdlLessonUser.class.getName() + + " as f where login_name=? and f.mdlLessonSession.sessionId=?"; + + private static final String SQL_QUERY_FIND_BY_UID = "from " + MdlLessonUser.class.getName() + " where uid=?"; + + public MdlLessonUser getByUserIdAndSessionId(Long userId, Long toolSessionId) { + List list = this.getHibernateTemplate().find(SQL_QUERY_FIND_BY_USER_ID_SESSION_ID, + new Object[] { userId, toolSessionId }); + + if (list == null || list.isEmpty()) + return null; + + return (MdlLessonUser) list.get(0); + } + + public MdlLessonUser getByLoginNameAndSessionId(String loginName, Long toolSessionId) { + + List list = this.getHibernateTemplate().find(SQL_QUERY_FIND_BY_LOGIN_NAME_SESSION_ID, + new Object[] { loginName, toolSessionId }); + + if (list == null || list.isEmpty()) + return null; + + return (MdlLessonUser) list.get(0); + + } + + public void saveOrUpdate(MdlLessonUser mdlLessonUser) { + this.getHibernateTemplate().saveOrUpdate(mdlLessonUser); + this.getHibernateTemplate().flush(); + } + + public MdlLessonUser getByUID(Long uid) { + List list = this.getHibernateTemplate().find(SQL_QUERY_FIND_BY_UID, new Object[] { uid }); + + if (list == null || list.isEmpty()) + return null; + + return (MdlLessonUser) list.get(0); + } +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dto/MdlLessonDTO.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dto/MdlLessonDTO.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dto/MdlLessonDTO.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,163 @@ +/**************************************************************** + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ + +package org.lamsfoundation.lams.tool.mdlesn.dto; + +import java.util.Date; +import java.util.Iterator; +import java.util.Set; +import java.util.TreeSet; + +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLesson; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonSession; + +public class MdlLessonDTO { + + private Long uid; + private Date createDate; + private Date updateDate; + private boolean defineLater; + private Long toolContentId; + private Long extToolContentId; + private String extUsername; + private String extCourseId; + private String extSection; + + public Set sessionDTOs = new TreeSet(); + + public Long currentTab; + + /* Constructors */ + public MdlLessonDTO() { + } + + public MdlLessonDTO(MdlLesson mdlLesson) { + uid = mdlLesson.getUid(); + createDate = mdlLesson.getCreateDate(); + updateDate = mdlLesson.getUpdateDate(); + defineLater = mdlLesson.isDefineLater(); + toolContentId = mdlLesson.getToolContentId(); + extToolContentId = mdlLesson.getExtToolContentId(); + extUsername = mdlLesson.getExtUsername(); + extCourseId = mdlLesson.getExtCourseId(); + extSection = mdlLesson.getExtSection(); + for (Iterator iter = mdlLesson.getMdlLessonSessions().iterator(); iter.hasNext();) { + MdlLessonSession session = (MdlLessonSession) iter.next(); + MdlLessonSessionDTO sessionDTO = new MdlLessonSessionDTO(session); + + sessionDTOs.add(sessionDTO); + } + } + + /* Getters / Setters */ + public Set getSessionDTOs() { + return sessionDTOs; + } + + public void setSessionDTOs(Set sessionDTOs) { + this.sessionDTOs = sessionDTOs; + } + + public Long getToolContentId() { + return toolContentId; + } + + public void setToolContentId(Long toolContentID) { + this.toolContentId = toolContentID; + } + + public Long getCurrentTab() { + return currentTab; + } + + public void setCurrentTab(Long currentTab) { + this.currentTab = currentTab; + } + + public Long getUid() { + return uid; + } + + public void setUid(Long uid) { + this.uid = uid; + } + + public Date getCreateDate() { + return createDate; + } + + public void setCreateDate(Date createDate) { + this.createDate = createDate; + } + + public Date getUpdateDate() { + return updateDate; + } + + public void setUpdateDate(Date updateDate) { + this.updateDate = updateDate; + } + + public boolean isDefineLater() { + return defineLater; + } + + public void setDefineLater(boolean defineLater) { + this.defineLater = defineLater; + } + + public Long getExtToolContentId() { + return extToolContentId; + } + + public void setExtToolContentId(Long extToolContentId) { + this.extToolContentId = extToolContentId; + } + + public String getExtUsername() { + return extUsername; + } + + public void setExtUsername(String extUsername) { + this.extUsername = extUsername; + } + + public String getExtCourseId() { + return extCourseId; + } + + public void setExtCourseId(String extCourseId) { + this.extCourseId = extCourseId; + } + + public String getExtSection() { + return extSection; + } + + public void setExtSection(String extSection) { + this.extSection = extSection; + } + +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dto/MdlLessonSessionDTO.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dto/MdlLessonSessionDTO.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dto/MdlLessonSessionDTO.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,135 @@ +/**************************************************************** + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ + +package org.lamsfoundation.lams.tool.mdlesn.dto; + +import java.util.Iterator; +import java.util.Set; +import java.util.TreeSet; + +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonSession; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonUser; + +public class MdlLessonSessionDTO implements Comparable { + + Long sessionID; + + Long extSessionID; + + String sessionName; + + Set userDTOs = new TreeSet(); + + int numberOfLearners; + + int numberOfFinishedLearners; + + String runTimeUrl; + + public MdlLessonSessionDTO(MdlLessonSession session) { + this.sessionID = session.getSessionId(); + this.sessionName = session.getSessionName(); + this.extSessionID = session.getExtSessionId(); + numberOfFinishedLearners = 0; + + /* + for (Iterator iterator = session.getMdlLessonUsers().iterator(); iterator.hasNext();) { + MdlLessonUser user = (MdlLessonUser) iterator.next(); + MdlLessonUserDTO userDTO = new MdlLessonUserDTO(user); + userDTOs.add(userDTO); + } + numberOfLearners = userDTOs.size(); + */ + } + + public MdlLessonSessionDTO() { + } + + public Long getSessionID() { + return sessionID; + } + + public void setSessionID(Long sessionID) { + this.sessionID = sessionID; + } + + public String getSessionName() { + return sessionName; + } + + public void setSessionName(String sessionName) { + this.sessionName = sessionName; + } + + public int compareTo(Object o) { + int returnValue; + MdlLessonSessionDTO toSession = (MdlLessonSessionDTO) o; + returnValue = this.sessionName.compareTo(toSession.sessionName); + if (returnValue == 0) { + returnValue = this.sessionID.compareTo(toSession.sessionID); + } + return returnValue; + } + + public Set getUserDTOs() { + return userDTOs; + } + + public void setUserDTOs(Set mdlLessonUsers) { + this.userDTOs = mdlLessonUsers; + } + + public int getNumberOfLearners() { + return numberOfLearners; + } + + public void setNumberOfLearners(int numberOfLearners) { + this.numberOfLearners = numberOfLearners; + } + + public int getNumberOfFinishedLearners() { + return numberOfFinishedLearners; + } + + public void setNumberOfFinishedLearners(int numberOfFinishedLearners) { + this.numberOfFinishedLearners = numberOfFinishedLearners; + } + + public Long getExtSessionID() { + return extSessionID; + } + + public void setExtSessionID(Long extSessionID) { + this.extSessionID = extSessionID; + } + + public String getRunTimeUrl() { + return runTimeUrl; + } + + public void setRunTimeUrl(String runTimeUrl) { + this.runTimeUrl = runTimeUrl; + } +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dto/MdlLessonUserDTO.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dto/MdlLessonUserDTO.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/dto/MdlLessonUserDTO.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,99 @@ +/**************************************************************** + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ + +package org.lamsfoundation.lams.tool.mdlesn.dto; + +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonUser; + +public class MdlLessonUserDTO { + + public Long uid; + + public String loginName; + + public String firstName; + + public String lastName; + + public boolean finishedActivity; + + public MdlLessonUserDTO(MdlLessonUser user) { + this.uid = user.getUid(); + this.loginName = user.getLoginName(); + this.firstName = user.getFirstName(); + this.lastName = user.getLastName(); + this.finishedActivity = user.isFinishedActivity(); + } + + public int compareTo(Object o) { + int returnValue; + MdlLessonUserDTO toUser = (MdlLessonUserDTO) o; + returnValue = this.lastName.compareTo(toUser.lastName); + if (returnValue == 0) { + returnValue = this.uid.compareTo(toUser.uid); + } + return returnValue; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getLoginName() { + return loginName; + } + + public void setLoginName(String loginName) { + this.loginName = loginName; + } + + public Long getUid() { + return uid; + } + + public void setUid(Long uid) { + this.uid = uid; + } + + public boolean isFinishedActivity() { + return finishedActivity; + } + + public void setFinishedActivity(boolean finishedActivity) { + this.finishedActivity = finishedActivity; + } +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/mdlLessonApplicationContext.xml =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/mdlLessonApplicationContext.xml (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/mdlLessonApplicationContext.xml (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + org/lamsfoundation/lams/tool/mdlesn/model/MdlLesson.hbm.xml + org/lamsfoundation/lams/tool/mdlesn/model/MdlLessonSession.hbm.xml + org/lamsfoundation/lams/tool/mdlesn/model/MdlLessonUser.hbm.xml + org/lamsfoundation/lams/tool/mdlesn/model/MdlLessonConfigItem.hbm.xml + + + + + + + + + + + + + + + + + + + + + + + + + + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + PROPAGATION_REQUIRED + + + + + + + + + + + + + + + + + + + + + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/model/MdlLesson.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/model/MdlLesson.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/model/MdlLesson.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,320 @@ +/**************************************************************** + * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.mdlesn.model; + +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Set; + +import org.apache.log4j.Logger; +import org.lamsfoundation.lams.contentrepository.client.IToolContentHandler; + +/** + * @hibernate.class table="tl_mdlesn10_mdllesson" + */ + +public class MdlLesson implements java.io.Serializable, Cloneable { + + /** + * + */ + private static final long serialVersionUID = 4093029387948273849L; + + static Logger log = Logger.getLogger(MdlLesson.class.getName()); + + private static final String CUSTOM_CSV_MAP_PARAM_USER = "user"; + private static final String CUSTOM_CSV_MAP_PARAM_COURSE = "course"; + private static final String CUSTOM_CSV_MAP_PARAM_SECTION = "section"; + + // Fields + /** + * + */ + private Long uid; + private Date createDate; + private Date updateDate; + private boolean defineLater; + private Long toolContentId; + private Long extToolContentId; + private Set mdlLessonSessions; + private boolean runOffline; + private boolean contentInUse; + private String extUsername; + private String extCourseId; + private String extSection; + + //*********** NON Persistent fields + private IToolContentHandler toolContentHandler; + + // Constructors + + public MdlLesson(Long uid, Date createDate, Date updateDate, boolean defineLater, boolean runOffline, + boolean contentInUse, Long toolContentId, Long extToolContentId, String extUsername, String extCourseId, + String extSection, Set mdlLessonSessions, IToolContentHandler toolContentHandler) { + super(); + this.uid = uid; + this.createDate = createDate; + this.updateDate = updateDate; + this.defineLater = defineLater; + this.toolContentId = toolContentId; + this.extToolContentId = extToolContentId; + this.mdlLessonSessions = mdlLessonSessions; + this.toolContentHandler = toolContentHandler; + this.runOffline = runOffline; + this.contentInUse = contentInUse; + this.extCourseId = extCourseId; + this.extUsername = extUsername; + this.extSection = extSection; + } + + /** default constructor */ + public MdlLesson() { + } + + // Property accessors + /** + * @hibernate.id generator-class="native" type="java.lang.Long" column="uid" + * + */ + public Long getUid() { + return this.uid; + } + + public void setUid(Long uid) { + this.uid = uid; + } + + /** + * @hibernate.property column="create_date" + * + */ + public Date getCreateDate() { + return this.createDate; + } + + public void setCreateDate(Date createDate) { + this.createDate = createDate; + } + + /** + * @hibernate.property column="update_date" + * + */ + public Date getUpdateDate() { + return this.updateDate; + } + + public void setUpdateDate(Date updateDate) { + this.updateDate = updateDate; + } + + /** + * @hibernate.property column="define_later" length="1" + * + */ + public boolean isDefineLater() { + return this.defineLater; + } + + public void setDefineLater(boolean defineLater) { + this.defineLater = defineLater; + } + + /** + * @hibernate.property column="content_in_use" length="1" + * + */ + public boolean isContentInUse() { + return contentInUse; + } + + public void setContentInUse(boolean contentInUse) { + this.contentInUse = contentInUse; + } + + /** + * @hibernate.property column="run_offline" length="1" + * + */ + public boolean isRunOffline() { + return runOffline; + } + + public void setRunOffline(boolean runOffline) { + this.runOffline = runOffline; + } + + /** + * @hibernate.property column="tool_content_id" length="20" + * + */ + public Long getToolContentId() { + return this.toolContentId; + } + + public void setToolContentId(Long toolContentId) { + this.toolContentId = toolContentId; + } + + /** + * @hibernate.property column="ext_tool_content_id" length="20" + * + */ + public Long getExtToolContentId() { + return extToolContentId; + } + + public void setExtToolContentId(Long extToolContentId) { + this.extToolContentId = extToolContentId; + } + + /** + * @hibernate.property column="ext_user_name" length="255" + * + */ + public String getExtUsername() { + return extUsername; + } + + public void setExtUsername(String extUsername) { + this.extUsername = extUsername; + } + + /** + * @hibernate.property column="ext_course_id" length="255" + * + */ + public String getExtCourseId() { + return extCourseId; + } + + public void setExtCourseId(String extCourseId) { + this.extCourseId = extCourseId; + } + + /** + * @hibernate.property column="ext_section" length="255" + * + */ + public String getExtSection() { + return extSection; + } + + public void setExtSection(String extSection) { + this.extSection = extSection; + } + + public static long getSerialVersionUID() { + return serialVersionUID; + } + + /** + * @hibernate.set lazy="true" inverse="true" cascade="none" + * @hibernate.collection-key column="mdllesson_uid" + * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonSession" + * + */ + public Set getMdlLessonSessions() { + return mdlLessonSessions; + } + + public void setMdlLessonSessions(Set mdlLessonSessions) { + this.mdlLessonSessions = mdlLessonSessions; + } + + public IToolContentHandler getToolContentHandler() { + return toolContentHandler; + } + + public void setToolContentHandler(IToolContentHandler toolContentHandler) { + this.toolContentHandler = toolContentHandler; + } + + /** + * toString + * + * @return String + */ + public String toString() { + StringBuffer buffer = new StringBuffer(); + + buffer.append(getClass().getName()).append("@").append(Integer.toHexString(hashCode())).append(" ["); + buffer.append("toolContentId").append("='").append(getToolContentId()).append("' "); + buffer.append("exttoolContentId").append("='").append(getExtToolContentId()).append("' "); + buffer.append("]"); + + return buffer.toString(); + } + + public boolean equals(Object other) { + if ((this == other)) + return true; + if ((other == null)) + return false; + if (!(other instanceof MdlLesson)) + return false; + MdlLesson castOther = (MdlLesson) other; + + return ((this.getUid() == castOther.getUid()) || (this.getUid() != null && castOther.getUid() != null && this + .getUid().equals(castOther.getUid()))); + } + + public int hashCode() { + int result = 17; + result = 37 * result + (getUid() == null ? 0 : this.getUid().hashCode()); + return result; + } + + public static MdlLesson newInstance(MdlLesson fromContent, Long toContentId, + IToolContentHandler mdlLessonToolContentHandler) { + MdlLesson toContent = new MdlLesson(); + fromContent.toolContentHandler = mdlLessonToolContentHandler; + toContent = (MdlLesson) fromContent.clone(); + toContent.setToolContentId(toContentId); + toContent.setCreateDate(new Date()); + return toContent; + } + + protected Object clone() { + + MdlLesson mdlLesson = null; + try { + mdlLesson = (MdlLesson) super.clone(); + mdlLesson.setUid(null); + mdlLesson.mdlLessonSessions = new HashSet(); + + } catch (CloneNotSupportedException cnse) { + log.error("Error cloning " + MdlLesson.class); + } + return mdlLesson; + } + + public void setByCustomCSVHashMap(HashMap params) { + this.extUsername = params.get(CUSTOM_CSV_MAP_PARAM_USER); + this.extCourseId = params.get(CUSTOM_CSV_MAP_PARAM_COURSE); + this.extSection = params.get(CUSTOM_CSV_MAP_PARAM_SECTION); + } +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/model/MdlLessonConfigItem.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/model/MdlLessonConfigItem.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/model/MdlLessonConfigItem.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,81 @@ +/**************************************************************** + * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +package org.lamsfoundation.lams.tool.mdlesn.model; + +import org.apache.log4j.Logger; + +/** + * @hibernate.class table="tl_mdlesn10_configuration" + */ +public class MdlLessonConfigItem implements java.io.Serializable { + + private static final long serialVersionUID = 2910983748293847627L; + + static Logger log = Logger.getLogger(MdlLessonConfigItem.class.getName()); + + public static final String KEY_EXTERNAL_TOOL_SERVLET = "toolAdapterServlet"; + public static final String KEY_EXTERNAL_SERVER_URL = "extServerUrl"; + + Long id; + String configKey; + String configValue; + + // empty contsructor + public MdlLessonConfigItem() { + } + + /** + * @hibernate.id generator-class="native" type="java.lang.Long" column="uid" + * + */ + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + /** + * @hibernate.property column="config_key" length="30" not-null="false" + * unique="true" + */ + public String getConfigKey() { + return configKey; + } + + public void setConfigKey(String configKey) { + this.configKey = configKey; + } + + /** + * @hibernate.property column="config_value" length="255" not-null="false" + */ + public String getConfigValue() { + return configValue; + } + + public void setConfigValue(String configValue) { + this.configValue = configValue; + } +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/model/MdlLessonSession.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/model/MdlLessonSession.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/model/MdlLessonSession.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,255 @@ +/**************************************************************** + * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.mdlesn.model; + +import java.util.Date; +import java.util.HashSet; +import java.util.Set; + +import org.apache.log4j.Logger; + +/** + * + * Represents the tool session. + * + * @hibernate.class table="tl_mdlesn10_session" + */ + +public class MdlLessonSession implements java.io.Serializable { + + private static Logger log = Logger.getLogger(MdlLessonSession.class); + /** + * + */ + private static final long serialVersionUID = 2736481298379482738L; + + // Fields + private Long uid; + + private Date sessionEndDate; + + private Date sessionStartDate; + + private Integer status; + + private Long sessionId; + + private Long extSessionId; + + private String sessionName; + + private MdlLesson mdlLesson; + + private Set mdlLessonUsers; + + // Constructors + + /** default constructor */ + public MdlLessonSession() { + } + + /** full constructor */ + public MdlLessonSession(Date sessionEndDate, Date sessionStartDate, Integer status, Long sessionId, + Long extSessionId, String sessionName, MdlLesson mdlLesson, Set mdlLessonUsers) { + this.sessionEndDate = sessionEndDate; + this.sessionStartDate = sessionStartDate; + this.status = status; + this.sessionId = sessionId; + this.sessionName = sessionName; + this.mdlLesson = mdlLesson; + this.mdlLessonUsers = mdlLessonUsers; + } + + // Property accessors + /** + * @hibernate.id generator-class="native" type="java.lang.Long" column="uid" + * + */ + + public Long getUid() { + return this.uid; + } + + public void setUid(Long uid) { + this.uid = uid; + } + + /** + * @hibernate.property column="session_end_date" + * + */ + + public Date getSessionEndDate() { + return this.sessionEndDate; + } + + public void setSessionEndDate(Date sessionEndDate) { + this.sessionEndDate = sessionEndDate; + } + + /** + * @hibernate.property column="session_start_date" + * + */ + + public Date getSessionStartDate() { + return this.sessionStartDate; + } + + public void setSessionStartDate(Date sessionStartDate) { + this.sessionStartDate = sessionStartDate; + } + + /** + * @hibernate.property column="status" length="11" + * + */ + + public Integer getStatus() { + return this.status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + /** + * @hibernate.property column="session_id" length="20" + * + */ + + public Long getSessionId() { + return this.sessionId; + } + + public void setSessionId(Long sessionId) { + this.sessionId = sessionId; + } + + /** + * @hibernate.property column="ext_session_id" length="20" + * @return + */ + public Long getExtSessionId() { + return extSessionId; + } + + public void setExtSessionId(Long extSessionId) { + this.extSessionId = extSessionId; + } + + /** + * @hibernate.property column="session_name" length="250" + * + */ + + public String getSessionName() { + return this.sessionName; + } + + public void setSessionName(String sessionName) { + this.sessionName = sessionName; + } + + /** + * @hibernate.many-to-one not-null="true" + * @hibernate.column name="mdllesson_uid" + * + */ + + public MdlLesson getMdlLesson() { + return this.mdlLesson; + } + + public void setMdlLesson(MdlLesson mdlLesson) { + this.mdlLesson = mdlLesson; + } + + /** + * @hibernate.set lazy="true" inverse="true" cascade="none" + * @hibernate.collection-key column="mdllesson_session_uid" + * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonUser" + * + */ + + public Set getMdlLessonUsers() { + return this.mdlLessonUsers; + } + + public void setMdlLessonUsers(Set mdlLessonUsers) { + this.mdlLessonUsers = mdlLessonUsers; + } + + /** + * toString + * + * @return String + */ + public String toString() { + StringBuffer buffer = new StringBuffer(); + + buffer.append(getClass().getName()).append("@").append(Integer.toHexString(hashCode())).append(" ["); + buffer.append("sessionEndDate").append("='").append(getSessionEndDate()).append("' "); + buffer.append("sessionStartDate").append("='").append(getSessionStartDate()).append("' "); + buffer.append("status").append("='").append(getStatus()).append("' "); + buffer.append("sessionID").append("='").append(getSessionId()).append("' "); + buffer.append("sessionName").append("='").append(getSessionName()).append("' "); + buffer.append("]"); + + return buffer.toString(); + } + + public boolean equals(Object other) { + if ((this == other)) + return true; + if ((other == null)) + return false; + if (!(other instanceof MdlLessonSession)) + return false; + MdlLessonSession castOther = (MdlLessonSession) other; + + return ((this.getUid() == castOther.getUid()) || (this.getUid() != null && castOther.getUid() != null && this + .getUid().equals(castOther.getUid()))); + } + + public int hashCode() { + int result = 17; + result = 37 * result + (getUid() == null ? 0 : this.getUid().hashCode()); + return result; + } + + public Object clone() { + + MdlLessonSession session = null; + try { + session = (MdlLessonSession) super.clone(); + session.mdlLessonUsers = new HashSet(); + } catch (CloneNotSupportedException e) { + log.error("When clone " + MdlLessonSession.class + " failed"); + } + return session; + } + +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/model/MdlLessonUser.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/model/MdlLessonUser.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/model/MdlLessonUser.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,213 @@ +/**************************************************************** + * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.mdlesn.model; + +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; + +/** + * + * Caches the user details. This allows the tool to be more efficient at + * displaying user names but means that when people's names change, they won't + * change in the "old" tool data. + * + * @hibernate.class table="tl_mdlesn10_user" + */ + +public class MdlLessonUser implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = 928378476276354672L; + + // Fields + private Long uid; + + private Long userId; + + private String lastName; + + private String firstName; + + private String loginName; + + private MdlLessonSession mdlLessonSession; + + private boolean finishedActivity; + + private Long entryUID; + + // Constructors + + /** default constructor */ + public MdlLessonUser() { + } + + public MdlLessonUser(UserDTO user, MdlLessonSession mdlLessonSession) { + this.userId = new Long(user.getUserID().intValue()); + this.firstName = user.getFirstName(); + this.lastName = user.getLastName(); + this.loginName = user.getLogin(); + this.mdlLessonSession = mdlLessonSession; + this.finishedActivity = false; + } + + /** full constructor */ + public MdlLessonUser(Long userId, String lastName, String firstName, MdlLessonSession mdlLessonSession) { + this.userId = userId; + this.lastName = lastName; + this.firstName = firstName; + this.mdlLessonSession = mdlLessonSession; + } + + // Property accessors + /** + * @hibernate.id generator-class="native" type="java.lang.Long" column="uid" + */ + public Long getUid() { + return this.uid; + } + + public void setUid(Long uid) { + this.uid = uid; + } + + /** + * @hibernate.property column="user_id" length="20" + * + */ + public Long getUserId() { + return this.userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + /** + * @hibernate.property column="last_name" length="255" + * + */ + public String getLastName() { + return this.lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + /** + * @hibernate.property column="login_name" length="255" + * + */ + public String getLoginName() { + return loginName; + } + + public void setLoginName(String loginName) { + this.loginName = loginName; + } + + /** + * @hibernate.property column="first_name" length="255" + * + */ + public String getFirstName() { + return this.firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + /** + * @hibernate.property column="finishedActivity" + */ + public boolean isFinishedActivity() { + return finishedActivity; + } + + public void setFinishedActivity(boolean finishedActivity) { + this.finishedActivity = finishedActivity; + } + + /** + * @hibernate.many-to-one not-null="true" + * @hibernate.column name="mdllesson_session_uid" + * + */ + public MdlLessonSession getMdlLessonSession() { + return this.mdlLessonSession; + } + + public void setMdlLessonSession(MdlLessonSession mdlLessonSession) { + this.mdlLessonSession = mdlLessonSession; + } + + /** + * @hibernate.property column="entry_uid" + */ + public Long getEntryUID() { + return entryUID; + } + + public void setEntryUID(Long entryUID) { + this.entryUID = entryUID; + } + + /** + * toString + * + * @return String + */ + public String toString() { + StringBuffer buffer = new StringBuffer(); + + buffer.append(getClass().getName()).append("@").append(Integer.toHexString(hashCode())).append(" ["); + buffer.append("userId").append("='").append(getUserId()).append("' "); + buffer.append("]"); + + return buffer.toString(); + } + + public boolean equals(Object other) { + if ((this == other)) + return true; + if ((other == null)) + return false; + if (!(other instanceof MdlLessonUser)) + return false; + MdlLessonUser castOther = (MdlLessonUser) other; + + return ((this.getUid() == castOther.getUid()) || (this.getUid() != null && castOther.getUid() != null && this + .getUid().equals(castOther.getUid()))); + } + + public int hashCode() { + int result = 17; + result = 37 * result + (getUid() == null ? 0 : this.getUid().hashCode()); + return result; + } +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/service/IMdlLessonService.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/service/IMdlLessonService.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/service/IMdlLessonService.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,208 @@ +/**************************************************************** + * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.mdlesn.service; + +import java.util.HashMap; + +import org.lamsfoundation.lams.integration.ExtServerOrgMap; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLesson; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonConfigItem; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonSession; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonUser; +import org.lamsfoundation.lams.tool.mdlesn.util.MdlLessonException; +import org.lamsfoundation.lams.tool.service.ILamsToolService; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; + +/** + * Defines the services available to the web layer from the MdlLesson Service + */ +public interface IMdlLessonService { + + public static final String EXT_SERVER_METHOD_CLONE = "clone"; + public static final String EXT_SERVER_METHOD_IMPORT = "import"; + public static final String EXT_SERVER_METHOD_EXPORT = "export"; + public static final String EXT_SERVER_METHOD_OUTPUT = "output"; + public static final String EXT_SERVER_METHOD_EXPORT_PORTFOLIO = "export_portfolio"; + + /** + * Makes a copy of the default content and assigns it a newContentID + * + * @params newContentID + * @return + */ + public MdlLesson copyDefaultContent(Long newContentID); + + /** + * Returns an instance of the MdlLesson tools default content. + * + * @return + */ + public MdlLesson getDefaultContent(); + + /** + * @param toolSignature + * @return + */ + public Long getDefaultContentIdBySignature(String toolSignature); + + /** + * @param toolContentID + * @return + */ + public MdlLesson getMdlLessonByContentId(Long toolContentID); + + /** + * @param uuid + * @param versionID + */ + public void deleteFromRepository(Long uuid, Long versionID) throws MdlLessonException; + + /** + * @param mdlLesson + */ + public void saveOrUpdateMdlLesson(MdlLesson mdlLesson); + + /** + * @param toolSessionId + * @return + */ + public MdlLessonSession getSessionBySessionId(Long toolSessionId); + + /** + * @param mdlLessonSession + */ + public void saveOrUpdateMdlLessonSession(MdlLessonSession mdlLessonSession); + + /** + * Get the mdlLesson config item by key + * + * @param key + * @return + */ + public MdlLessonConfigItem getConfigItem(String key); + + /** + * Save a mdl configItem + * + * @param item + */ + public void saveOrUpdateMdlLessonConfigItem(MdlLessonConfigItem item); + + /** + * + * @param userId + * @param toolSessionId + * @return + */ + public MdlLessonUser getUserByUserIdAndSessionId(Long userId, Long toolSessionId); + + /** + * + * @param uid + * @return + */ + public MdlLessonUser getUserByUID(Long uid); + + /** + * Gets the external organisation map for this tool adapter + * + * @return + */ + public ExtServerOrgMap getExtServerOrgMap(); + + /** + * Creates a hash for talking to the external server + * + * @param serverMap + * @param extUsername + * @param timestamp + * @return + */ + public String hash(ExtServerOrgMap serverMap, String extUsername, String timestamp); + + /** + * + * @param mdlLessonUser + */ + public void saveOrUpdateMdlLessonUser(MdlLessonUser mdlLessonUser); + + /** + * + * @param user + * @param mdlLessonSession + * @return + */ + public MdlLessonUser createMdlLessonUser(UserDTO user, MdlLessonSession mdlLessonSession); + + /** + * + * @return toolService + */ + ILamsToolService getToolService(); + + /** + * gets the tool output for the external server + * + * @param outputName + * @param mdlLesson + * @param userId + * @param extToolContentId + * @param toolSessionId + * @return + */ + public int getExternalToolOutputInt(String outputName, MdlLesson mdlLesson, Long userId, String extToolContentId, + Long toolSessionId); + + /** + * Converts the customCSV parameter into a hashmap + * + * @param customCSV + * @return + */ + public HashMap decodeCustomCSV(String customCSV); + + /** + * Constructs a parameter hashmap to be used for the default parameters + * required by the external LMS tool adapter servlet. For instance in + * mdlLesson, this constructs the following: + * { ["un", username], ["cs", course], ["ts", timestamp], ["hs", hash], } + * + * @param mdlLesson + * @return + */ + public HashMap getRequiredExtServletParams(MdlLesson mdlLesson); + + /** + * Constructs a parameter hashmap based off customCSV to be used for the + * default parameters required by the external LMS tool adapter servlet. For + * instance in mdlLesson, this constructs the following: + * { ["un", username], ["cs", course], ["ts", timestamp], ["hs", hash], } + * + * @param user + * @param course + * @return + */ + public HashMap getRequiredExtServletParams(String customCSV); +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/service/MdlLessonOutputFactory.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/service/MdlLessonOutputFactory.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/service/MdlLessonOutputFactory.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,94 @@ +/**************************************************************** + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +package org.lamsfoundation.lams.tool.mdlesn.service; + +import java.util.List; +import java.util.SortedMap; +import java.util.TreeMap; + +import org.lamsfoundation.lams.tool.OutputFactory; +import org.lamsfoundation.lams.tool.ToolOutput; +import org.lamsfoundation.lams.tool.ToolOutputDefinition; +import org.lamsfoundation.lams.tool.exception.ToolException; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLesson; + +/** + * Creates the output definitions for mdllesson tool Adapter tool. + */ +public class MdlLessonOutputFactory extends OutputFactory { + + protected final static String OUTPUT_NAME_LEARNER_NUM_POSTS = "learner.number.of.comments"; + protected final static String OUTPUT_NAME_LEARNER_NUM_ENTRIES = "learner.number.of.entries"; + + public MdlLessonOutputFactory() { + } + + /** + * @see org.lamsfoundation.lams.tool.OutputDefinitionFactory#getToolOutputDefinitions(java.lang.Object) + */ + public SortedMap getToolOutputDefinitions(Object toolContentObject) + throws ToolException { + TreeMap definitionMap = new TreeMap(); + + ToolOutputDefinition definition = buildRangeDefinition(OUTPUT_NAME_LEARNER_NUM_POSTS, new Long(0), null); + definitionMap.put(OUTPUT_NAME_LEARNER_NUM_POSTS, definition); + + ToolOutputDefinition definition2 = buildRangeDefinition(OUTPUT_NAME_LEARNER_NUM_ENTRIES, new Long(0), null); + definitionMap.put(OUTPUT_NAME_LEARNER_NUM_ENTRIES, definition2); + + return definitionMap; + } + + public SortedMap getToolOutput(List names, IMdlLessonService dlLessonService, + Long toolSessionId, Long learnerId, MdlLesson mdlLesson, Long extSessionId) { + + TreeMap map = new TreeMap(); + if (names == null || names.contains(OUTPUT_NAME_LEARNER_NUM_POSTS)) { + map.put(OUTPUT_NAME_LEARNER_NUM_POSTS, getExtToolOutput(OUTPUT_NAME_LEARNER_NUM_POSTS, dlLessonService, + mdlLesson, learnerId, extSessionId.toString(), toolSessionId)); + } + if (names.contains(OUTPUT_NAME_LEARNER_NUM_ENTRIES)) { + map.put(OUTPUT_NAME_LEARNER_NUM_ENTRIES, getExtToolOutput(OUTPUT_NAME_LEARNER_NUM_ENTRIES, dlLessonService, + mdlLesson, learnerId, extSessionId.toString(), toolSessionId)); + } + return map; + + } + + public ToolOutput getToolOutput(String name, IMdlLessonService dlLessonService, Long toolSessionId, Long learnerId, + MdlLesson getToolOutput, Long extSessionId) { + if (name != null) { + return getExtToolOutput(name, dlLessonService, getToolOutput, learnerId, extSessionId.toString(), + toolSessionId); + } + return null; + + } + + public ToolOutput getExtToolOutput(String outputName, IMdlLessonService mdlLessonService, MdlLesson mdlLesson, + Long userId, String extToolContentId, Long toolSessionId) { + int number = mdlLessonService.getExternalToolOutputInt(outputName, mdlLesson, userId, extToolContentId, + toolSessionId); + return new ToolOutput(outputName, getI18NText(outputName, true), new Long(number)); + } + +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/service/MdlLessonService.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/service/MdlLessonService.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/service/MdlLessonService.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,961 @@ +/**************************************************************** + * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.mdlesn.service; + +import java.io.BufferedOutputStream; +import java.io.BufferedReader; +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.net.URLEncoder; +import java.util.Date; +import java.util.HashMap; +import java.util.Hashtable; +import java.util.List; +import java.util.SortedMap; +import java.util.TreeMap; + +import org.apache.log4j.Logger; +import org.lamsfoundation.lams.contentrepository.AccessDeniedException; +import org.lamsfoundation.lams.contentrepository.ICredentials; +import org.lamsfoundation.lams.contentrepository.ITicket; +import org.lamsfoundation.lams.contentrepository.LoginException; +import org.lamsfoundation.lams.contentrepository.WorkspaceNotFoundException; +import org.lamsfoundation.lams.contentrepository.client.IToolContentHandler; +import org.lamsfoundation.lams.contentrepository.service.IRepositoryService; +import org.lamsfoundation.lams.contentrepository.service.RepositoryProxy; +import org.lamsfoundation.lams.contentrepository.service.SimpleCredentials; +import org.lamsfoundation.lams.integration.ExtServerOrgMap; +import org.lamsfoundation.lams.integration.UserInfoFetchException; +import org.lamsfoundation.lams.integration.service.IIntegrationService; +import org.lamsfoundation.lams.learning.service.ILearnerService; +import org.lamsfoundation.lams.learningdesign.service.ExportToolContentException; +import org.lamsfoundation.lams.learningdesign.service.IExportToolContentService; +import org.lamsfoundation.lams.learningdesign.service.ImportToolContentException; +import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; +import org.lamsfoundation.lams.tool.IToolVO; +import org.lamsfoundation.lams.tool.ToolAdapterContentManager; +import org.lamsfoundation.lams.tool.ToolContentImport102Manager; +import org.lamsfoundation.lams.tool.ToolOutput; +import org.lamsfoundation.lams.tool.ToolOutputDefinition; +import org.lamsfoundation.lams.tool.ToolSessionExportOutputData; +import org.lamsfoundation.lams.tool.ToolSessionManager; +import org.lamsfoundation.lams.tool.mdlesn.dao.IMdlLessonConfigItemDAO; +import org.lamsfoundation.lams.tool.mdlesn.dao.IMdlLessonDAO; +import org.lamsfoundation.lams.tool.mdlesn.dao.IMdlLessonSessionDAO; +import org.lamsfoundation.lams.tool.mdlesn.dao.IMdlLessonUserDAO; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLesson; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonConfigItem; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonSession; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonUser; +import org.lamsfoundation.lams.tool.mdlesn.util.MdlLessonConstants; +import org.lamsfoundation.lams.tool.mdlesn.util.MdlLessonException; +import org.lamsfoundation.lams.tool.mdlesn.util.MdlLessonToolContentHandler; +import org.lamsfoundation.lams.tool.mdlesn.util.WebUtility; +import org.lamsfoundation.lams.tool.exception.DataMissingException; +import org.lamsfoundation.lams.tool.exception.SessionDataExistsException; +import org.lamsfoundation.lams.tool.exception.ToolException; +import org.lamsfoundation.lams.tool.service.ILamsToolService; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.util.FileUtil; +import org.lamsfoundation.lams.util.HashUtil; +import org.lamsfoundation.lams.util.audit.IAuditService; +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +/** + * An implementation of the IMdlLessonService interface. + * + * As a requirement, all LAMS tool's service bean must implement + * ToolContentManager and ToolSessionManager. + */ + +public class MdlLessonService implements ToolSessionManager, ToolAdapterContentManager, IMdlLessonService, + ToolContentImport102Manager { + + static Logger logger = Logger.getLogger(MdlLessonService.class.getName()); + + public static final String CUSTOM_CSV_MAP_PARAM_USER = "user"; + public static final String CUSTOM_CSV_MAP_PARAM_COURSE = "course"; + public static final String CUSTOM_CSV_MAP_PARAM_SECTION = "section"; + + public static final String EXT_SERVER_PARAM_USER = "un"; + public static final String EXT_SERVER_PARAM_COURSE = "cs"; + public static final String EXT_SERVER_PARAM_SECTION = "section"; + public static final String EXT_SERVER_PARAM_TIMESTAMP = "ts"; + public static final String EXT_SERVER_PARAM_HASH = "hs"; + public static final String EXT_SERVER_PARAM_METHOD = "method"; + public static final String EXT_SERVER_PARAM_EXT_TOOL_CONTENT_ID = "extToolContentID"; + public static final String EXT_SERVER_PARAM_UPLOAD_FILE = "upload_file"; + public static final String EXT_SERVER_PARAM_OUTPUT_NAME = "oname"; + + private static final int EXPECTED_CSV_SIZE = 3; + private static final String EXPECTED_CSV_FORM = "user,course"; + + private IMdlLessonDAO mdlLessonDAO = null; + + private IMdlLessonSessionDAO mdlLessonSessionDAO = null; + + private IMdlLessonUserDAO mdlLessonUserDAO = null; + + private IMdlLessonConfigItemDAO mdlLessonConfigItemDAO = null; + + private ILearnerService learnerService; + + private ILamsToolService toolService; + + private IToolContentHandler mdlLessonToolContentHandler = null; + + private IRepositoryService repositoryService = null; + + private IAuditService auditService = null; + + private IExportToolContentService exportContentService; + + private ICoreNotebookService coreNotebookService; + + private IIntegrationService integrationService; + + private MdlLessonOutputFactory mdlLessonOutputFactory; + + public MdlLessonService() { + super(); + // TODO Auto-generated constructor stub + } + + /* ************ Methods from ToolSessionManager ************* */ + public void createToolSession(Long toolSessionId, String toolSessionName, Long toolContentId) throws ToolException { + if (logger.isDebugEnabled()) { + logger.debug("entering method createToolSession:" + " toolSessionId = " + toolSessionId + + " toolSessionName = " + toolSessionName + " toolContentId = " + toolContentId); + } + + MdlLessonSession session = new MdlLessonSession(); + session.setSessionId(toolSessionId); + session.setSessionName(toolSessionName); + + // learner starts + MdlLesson mdlLesson = mdlLessonDAO.getByContentId(toolContentId); + session.setMdlLesson(mdlLesson); + + try { + // Get the required params, then call the eternal server + HashMap params = getRequiredExtServletParams(mdlLesson); + params.put(EXT_SERVER_PARAM_EXT_TOOL_CONTENT_ID, mdlLesson.getExtToolContentId().toString()); + session.setExtSessionId(copyExternalToolContent(params)); + } catch (Exception e) { + logger.error("Failed to call external server to copy tool content" + e); + throw new ToolException("Failed to call external server to copy tool content" + e); + } + + mdlLessonSessionDAO.saveOrUpdate(session); + } + + /** + * Calls the external server to copy the content and return a new id + * + * @param extToolContentId + * @return + */ + public Long copyExternalToolContent(HashMap params) throws ToolException, Exception { + + String cloneServletUrl = mdlLessonConfigItemDAO.getConfigItemByKey(MdlLessonConfigItem.KEY_EXTERNAL_TOOL_SERVLET) + .getConfigValue(); + + // add the method to the params + params.put(EXT_SERVER_PARAM_METHOD, EXT_SERVER_METHOD_CLONE); + + // Make the request + InputStream is = WebUtility.getResponseInputStreamFromExternalServer(cloneServletUrl, params); + BufferedReader isReader = new BufferedReader(new InputStreamReader(is)); + String str = isReader.readLine(); + if (str == null) { + throw new UserInfoFetchException("Fail to clone lesson in .LRN:" + + " - No data returned from external server"); + } + + return Long.parseLong(str); + } + + public HashMap getRequiredExtServletParams(String customCSV) { + HashMap params = new HashMap(); + HashMap paramsCSV = decodeCustomCSV(customCSV); + params.put(EXT_SERVER_PARAM_COURSE, paramsCSV.get(CUSTOM_CSV_MAP_PARAM_COURSE)); + params.put(EXT_SERVER_PARAM_USER, paramsCSV.get(CUSTOM_CSV_MAP_PARAM_USER)); + params.put(EXT_SERVER_PARAM_SECTION, paramsCSV.get(CUSTOM_CSV_MAP_PARAM_SECTION)); + + String timestamp = Long.toString(new Date().getTime()); + params.put(EXT_SERVER_PARAM_TIMESTAMP, timestamp); + + ExtServerOrgMap serverMap = this.getExtServerOrgMap(); + String hash = hash(serverMap, paramsCSV.get(CUSTOM_CSV_MAP_PARAM_USER), timestamp); + params.put(EXT_SERVER_PARAM_HASH, hash); + + return params; + } + + public HashMap getRequiredExtServletParams(MdlLesson mdllesson) { + HashMap params = new HashMap(); + params.put(EXT_SERVER_PARAM_USER, mdllesson.getExtUsername()); + params.put(EXT_SERVER_PARAM_COURSE, mdllesson.getExtCourseId()); + params.put(EXT_SERVER_PARAM_SECTION, mdllesson.getExtSection()); + + String timestamp = Long.toString(new Date().getTime()); + params.put(EXT_SERVER_PARAM_TIMESTAMP, timestamp); + + ExtServerOrgMap serverMap = this.getExtServerOrgMap(); + String hash = hash(serverMap, mdllesson.getExtUsername(), timestamp); + params.put(EXT_SERVER_PARAM_HASH, hash); + + return params; + } + + public HashMap decodeCustomCSV(String customCSV) { + HashMap map = new HashMap(); + if (customCSV != null) { + String[] split = customCSV.split(","); + if (split.length != EXPECTED_CSV_SIZE) { + return null; + } + map.put(CUSTOM_CSV_MAP_PARAM_USER, split[0]); + map.put(CUSTOM_CSV_MAP_PARAM_COURSE, split[1]); + map.put(CUSTOM_CSV_MAP_PARAM_SECTION, split[2]); + return map; + } else { + return null; + } + } + + public int getExternalToolOutputInt(String outputName, MdlLesson mdlLesson, Long userId, String extToolContentId, + Long toolSessionId) { + MdlLessonUser user = this.getUserByUserIdAndSessionId(userId, toolSessionId); + ExtServerOrgMap extServerMap = getExtServerOrgMap(); + + String extUserName = user.getLoginName().substring(extServerMap.getPrefix().length() + 1); + + try { + String outputServletUrl = mdlLessonConfigItemDAO.getConfigItemByKey( + MdlLessonConfigItem.KEY_EXTERNAL_TOOL_SERVLET).getConfigValue(); + + // setting the mdlLesson username so the params are set up correctly + mdlLesson.setExtUsername(extUserName); + HashMap params = getRequiredExtServletParams(mdlLesson); + params.put(EXT_SERVER_PARAM_EXT_TOOL_CONTENT_ID, extToolContentId); + params.put(EXT_SERVER_PARAM_METHOD, EXT_SERVER_METHOD_OUTPUT); + params.put(EXT_SERVER_PARAM_OUTPUT_NAME, URLEncoder.encode(outputName, "UTF8")); + + InputStream is = WebUtility.getResponseInputStreamFromExternalServer(outputServletUrl, params); + BufferedReader isReader = new BufferedReader(new InputStreamReader(is)); + int ret = Integer.parseInt(isReader.readLine()); + return ret; + } catch (Exception e) { + logger.debug("Failed getting external output", e); + throw new ToolException("Failed getting external output", e); + } + } + + /** + * Get the tool output for the given tool output names. + * + * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.util.List, + * java.lang.Long, java.lang.Long) + */ + public SortedMap getToolOutput(List names, Long toolSessionId, Long learnerId) { + mdlLessonOutputFactory = getMdlLessonOutputFactory(); + MdlLessonSession session = this.getSessionBySessionId(toolSessionId); + if (session == null) { + return null; + } + return mdlLessonOutputFactory.getToolOutput(names, this, toolSessionId, learnerId, session.getMdlLesson(), + session.getExtSessionId()); + } + + /** + * Get the tool output for the given tool output name. + * + * @see org.lamsfoundation.lams.tool.ToolSessionManager#getToolOutput(java.lang.String, + * java.lang.Long, java.lang.Long) + */ + public ToolOutput getToolOutput(String name, Long toolSessionId, Long learnerId) { + mdlLessonOutputFactory = getMdlLessonOutputFactory(); + MdlLessonSession session = this.getSessionBySessionId(toolSessionId); + if (session == null) { + return null; + } + + return mdlLessonOutputFactory.getToolOutput(name, this, toolSessionId, learnerId, session.getMdlLesson(), session + .getExtSessionId()); + } + + /** + * Get the definitions for possible output for an activity, based on the + * toolContentId. These may be definitions that are always available for the + * tool (e.g. number of marks for Multiple Lesson) or a custom definition + * created for a particular activity such as the answer to the third + * question contains the word Koala and hence the need for the toolContentId + * + * @return SortedMap of ToolOutputDefinitions with the key being the name of + * each definition + */ + public SortedMap getToolOutputDefinitions(Long toolContentId) throws ToolException { + mdlLessonOutputFactory = getMdlLessonOutputFactory(); + MdlLesson mdlesn = getMdlLessonByContentId(toolContentId); + if (mdlesn == null) { + mdlesn = getDefaultContent(); + } + return mdlLessonOutputFactory.getToolOutputDefinitions(mdlesn); + } + + public String hash(ExtServerOrgMap serverMap, String extUsername, String timestamp) { + String serverId = serverMap.getServerid(); + String serverKey = serverMap.getServerkey(); + String plaintext = timestamp.trim().toLowerCase() + extUsername.trim().toLowerCase() + + serverId.trim().toLowerCase() + serverKey.trim().toLowerCase(); + return HashUtil.sha1(plaintext); + } + + public String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException { + return learnerService.completeToolSession(toolSessionId, learnerId); + } + + public ToolSessionExportOutputData exportToolSession(Long toolSessionId) throws DataMissingException, ToolException { + // TODO Auto-generated method stub + return null; + } + + public ToolSessionExportOutputData exportToolSession(List toolSessionIds) throws DataMissingException, + ToolException { + // TODO Auto-generated method stub + return null; + } + + public void removeToolSession(Long toolSessionId) throws DataMissingException, ToolException { + mdlLessonSessionDAO.deleteBySessionID(toolSessionId); + // TODO check if cascade worked + } + + /* ************ Methods from ToolContentManager ************************* */ + + public void copyToolContent(Long fromContentId, Long toContentId) throws ToolException { + + if (logger.isDebugEnabled()) { + logger.debug("entering method copyToolContent:" + " fromContentId=" + fromContentId + " toContentId=" + + toContentId); + } + + if (toContentId == null) { + String error = "Failed to copy tool content: toContentID is null"; + throw new ToolException(error); + } + + MdlLesson fromContent = null; + if (fromContentId != null) { + fromContent = mdlLessonDAO.getByContentId(fromContentId); + } + if (fromContent == null) { + // create the fromContent using the default tool content + fromContent = getDefaultContent(); + } + MdlLesson toContent = MdlLesson.newInstance(fromContent, toContentId, mdlLessonToolContentHandler); + + // calling the external tool to copy it's content. + /* + try + { + + toContent.setExtToolContentId(copyExternalToolContent( + fromContent.getExtToolContentId(), + fromContent.getExtUsername(), + fromContent.getExtCourseId(), + fromContent.getExtCourseUrl() + )); + + } + catch(Exception e) + { + throw new ToolException("Failed to call external server to copy tool content" + e); + }*/ + + mdlLessonDAO.saveOrUpdate(toContent); + } + + /** + * Special copyToolContent implemented from ToolAdapterContentManager + * customCSV is passed here so we have a chance to get the external course, + * user and course url. This function is only neccessary when we are + * integrated with an external LMS, otherwise this service should not + * implement ToolAdapterContentManager, but instead implement the regular + * ToolContentManager and use the regular copyContent(Long fromContentId, + * Long toContentId) function + */ + public void copyToolContent(Long fromContentId, Long toContentId, String customCSV) throws ToolException { + + if (logger.isDebugEnabled()) { + logger.debug("entering method copyToolContent:" + " fromContentId=" + fromContentId + " toContentId=" + + toContentId); + } + + if (toContentId == null) { + String error = "Failed to copy tool content: toContentID is null"; + throw new ToolException(error); + } + + HashMap mapCSV = decodeCustomCSV(customCSV); + if (mapCSV == null) { + logger.error("Tool adapter tool cusomCSV not in required (user,course,courseURL) form: " + + EXPECTED_CSV_FORM); + throw new ToolException("mdlLesson tool cusomCSV not in required (user,course,courseURL) form: " + + EXPECTED_CSV_FORM); + } + + MdlLesson fromContent = null; + if (fromContentId != null) { + fromContent = mdlLessonDAO.getByContentId(fromContentId); + } + + // Set the default params for the external cloning request + HashMap params = getRequiredExtServletParams(customCSV); + + if ((fromContent == null) || fromContent.getExtToolContentId() == null) { + // create the fromContent using the default tool content + fromContent = getDefaultContent(); + try { + // notify the external server to create the default content + params.put(EXT_SERVER_PARAM_EXT_TOOL_CONTENT_ID, "0"); + fromContent.setExtToolContentId(copyExternalToolContent(params)); + fromContent.setByCustomCSVHashMap(mapCSV); + } catch (Exception e) { + throw new ToolException("Failed to call external server to create default tool content" + e); + } + } + + // Create a new instance to copy the tool content to + MdlLesson toContent = MdlLesson.newInstance(fromContent, toContentId, mdlLessonToolContentHandler); + toContent.setByCustomCSVHashMap(mapCSV); + + // calling the external tool to copy it's content. + try { + params.put(EXT_SERVER_PARAM_EXT_TOOL_CONTENT_ID, fromContent.getExtToolContentId().toString()); + toContent.setExtToolContentId(copyExternalToolContent(params)); + } catch (Exception e) { + throw new ToolException("Failed to call external server to copy tool content" + e); + } + + mdlLessonDAO.saveOrUpdate(toContent); + } + + public void setAsDefineLater(Long toolContentId, boolean value) throws DataMissingException, ToolException { + MdlLesson mdlLesson = mdlLessonDAO.getByContentId(toolContentId); + if (mdlLesson == null) { + throw new ToolException("Could not find tool with toolContentID: " + toolContentId); + } + mdlLesson.setDefineLater(value); + mdlLessonDAO.saveOrUpdate(mdlLesson); + } + + public void setAsRunOffline(Long toolContentId, boolean value) throws DataMissingException, ToolException { + MdlLesson mdlLesson = mdlLessonDAO.getByContentId(toolContentId); + if (mdlLesson == null) { + throw new ToolException("Could not find tool with toolContentID: " + toolContentId); + } + mdlLesson.setRunOffline(value); + mdlLessonDAO.saveOrUpdate(mdlLesson); + } + + public void removeToolContent(Long toolContentId, boolean removeSessionData) throws SessionDataExistsException, + ToolException { + // TODO Auto-generated method stub + } + + /** + * Export the XML fragment for the tool's content, along with any files + * needed for the content. + * + * @throws DataMissingException + * if no tool content matches the toolSessionId + * @throws ToolException + * if any other error occurs + */ + + public void exportToolContent(Long toolContentId, String rootPath) throws DataMissingException, ToolException { + + MdlLesson mdlLesson = mdlLessonDAO.getByContentId(toolContentId); + if (mdlLesson == null) { + mdlLesson = getDefaultContent(); + } + if (mdlLesson == null) + throw new DataMissingException("Unable to find default content for the mdlLesson tool"); + + // If no external content was found, export empty mdlLesson + // Otherwise, call the external servlet to get the export file + if (mdlLesson.getExtToolContentId() == null) { + mdlLesson.setExtToolContentId(null); + mdlLesson.setToolContentHandler(null); + mdlLesson.setMdlLessonSessions(null); + + try { + exportContentService.exportToolContent(toolContentId, mdlLesson, mdlLessonToolContentHandler, rootPath); + } catch (ExportToolContentException e) { + throw new ToolException(e); + } + } else { + + URLConnection conn = null; + try { + // Create the directory to store the export file + String toolPath = FileUtil.getFullPath(rootPath, toolContentId.toString()); + FileUtil.createDirectory(toolPath); + + String exportServletUrl = mdlLessonConfigItemDAO.getConfigItemByKey( + MdlLessonConfigItem.KEY_EXTERNAL_TOOL_SERVLET).getConfigValue(); + + // setting these to arbitrary values since they are only used to construct the hash + + mdlLesson.setExtCourseId("extCourse"); + mdlLesson.setExtSection("0"); + mdlLesson.setExtUsername("authUser"); + HashMap params = this.getRequiredExtServletParams(mdlLesson); + params.put(EXT_SERVER_PARAM_METHOD, EXT_SERVER_METHOD_EXPORT); + params.put(EXT_SERVER_PARAM_EXT_TOOL_CONTENT_ID, mdlLesson.getExtToolContentId().toString()); + + // Get the reponse stream from the external server (hopefully containing the export file + InputStream in = WebUtility.getResponseInputStreamFromExternalServer(exportServletUrl, params); + + // Get the output stream to write the file for extport + OutputStream out = new BufferedOutputStream(new FileOutputStream(toolPath + "/ext_tool.txt")); + + byte[] buffer = new byte[1024]; + int numRead; + long numWritten = 0; + while ((numRead = in.read(buffer)) != -1) { + out.write(buffer, 0, numRead); + numWritten += numRead; + } + logger.debug("Path to mdlLesson export content: " + toolPath + "/ext_tool.txt"); + + out.flush(); + out.close(); + in.close(); + } catch (Exception e) { + logger.error("Problem exporting data from external .LRN servlet", e); + } + } + } + + /** + * Default importToolContent, not implemented because this is a tooladapter + * tool + */ + public void importToolContent(Long toolContentId, Integer newUserUid, String toolContentPath, String fromVersion, + String toVersion) throws ToolException { + + } + + public ExtServerOrgMap getExtServerOrgMap() { + if (integrationService == null) + integrationService = getIntegrationService(); + IToolVO tool = toolService.getToolBySignature(MdlLessonConstants.TOOL_SIGNATURE); + return integrationService.getExtServerOrgMap(tool.getExtLmsId()); + } + + /** + * Import the XML fragment for the tool's content, along with any files + * needed for the content. + * + * @throws ToolException + * if any other error occurs + */ + public void importToolContent(Long toolContentId, Integer newUserUid, String toolContentPath, String fromVersion, + String toVersion, String customCSV) throws ToolException { + + File extExportFile = new File(toolContentPath + "/ext_tool.txt"); + + // if specially exported tooladapter file is found, send it to the external server + // otherwise, simply import an empty mdlLesson + if (extExportFile.exists()) { + + try { + + String importServletUrl = mdlLessonConfigItemDAO.getConfigItemByKey( + MdlLessonConfigItem.KEY_EXTERNAL_TOOL_SERVLET).getConfigValue(); + + if (customCSV == null) { + logger.error("Could not retrieve customCSV required for importing tool adapter tool. CustomCSV: " + + customCSV); + throw new ToolException( + "Could not retrieve customCSV required for importing tool adapter tool. CustomCSV: " + + customCSV); + } + + HashMap params = getRequiredExtServletParams(customCSV); + params.put(EXT_SERVER_PARAM_METHOD, EXT_SERVER_METHOD_IMPORT); + + // Do the external multipart post to upload the file to external LMS (returns an extToolContentId) + InputStream is = WebUtility.performMultipartPost(extExportFile, EXT_SERVER_PARAM_UPLOAD_FILE, + importServletUrl, params); + DataInputStream inStream = new DataInputStream(is); + String str = inStream.readLine(); + Long extContentId = Long.parseLong(str); + inStream.close(); + + // Save the resulting mdl lesson + MdlLesson mdlLesson = new MdlLesson(); + mdlLesson.setToolContentId(toolContentId); + mdlLesson.setCreateDate(new Date()); + mdlLesson.setExtToolContentId(extContentId); + saveOrUpdateMdlLesson(mdlLesson); + + } catch (Exception e) { + logger.error("Problem passing mdlLesson export file to external server", e); + throw new ToolException(e); + } + } else // use the normal LAMS method of importing activities from an xml file + { + + try { + Object toolPOJO = exportContentService.importToolContent(toolContentPath, mdlLessonToolContentHandler, + fromVersion, toVersion); + if (!(toolPOJO instanceof MdlLesson)) + throw new ImportToolContentException("Import MdlLesson tool content failed. Deserialized object is " + + toolPOJO); + MdlLesson mdlLesson = (MdlLesson) toolPOJO; + // reset it to new toolContentId + mdlLesson.setToolContentId(toolContentId); + mdlLessonDAO.saveOrUpdate(mdlLesson); + } catch (Exception e) { + throw new ToolException(e); + } + } + } + + /* ********** IMdlLessonService Methods ********************************* */ + + public Long getDefaultContentIdBySignature(String toolSignature) { + Long toolContentId = null; + toolContentId = new Long(toolService.getToolDefaultContentIdBySignature(toolSignature)); + if (toolContentId == null) { + String error = "Could not retrieve default content id for this tool"; + logger.error(error); + throw new MdlLessonException(error); + } + return toolContentId; + } + + public MdlLesson getDefaultContent() { + /* + Long defaultContentID = getDefaultContentIdBySignature(MdlLessonConstants.TOOL_SIGNATURE); + MdlLesson defaultContent = getMdlLessonByContentId(defaultContentID); + if (defaultContent == null) { + String error = "Could not retrieve default content record for this tool"; + logger.error(error); + throw new MdlLessonException(error); + } + return defaultContent; + */ + MdlLesson defaultContent = new MdlLesson(); + return defaultContent; + } + + public MdlLesson copyDefaultContent(Long newContentID) { + + if (newContentID == null) { + String error = "Cannot copy the MdlLesson tools default content: + " + "newContentID is null"; + logger.error(error); + throw new MdlLessonException(error); + } + + MdlLesson defaultContent = getDefaultContent(); + // create new mdlLesson using the newContentID + MdlLesson newContent = new MdlLesson(); + newContent = MdlLesson.newInstance(defaultContent, newContentID, mdlLessonToolContentHandler); + mdlLessonDAO.saveOrUpdate(newContent); + return newContent; + } + + public MdlLesson getMdlLessonByContentId(Long toolContentID) { + MdlLesson mdlLesson = (MdlLesson) mdlLessonDAO.getByContentId(toolContentID); + if (mdlLesson == null) { + logger.debug("Could not find the content with toolContentID:" + toolContentID); + } + return mdlLesson; + } + + public MdlLessonConfigItem getConfigItem(String key) { + return mdlLessonConfigItemDAO.getConfigItemByKey(key); + } + + public void saveOrUpdateMdlLessonConfigItem(MdlLessonConfigItem item) { + mdlLessonConfigItemDAO.saveOrUpdate(item); + } + + public MdlLessonSession getSessionBySessionId(Long toolSessionId) { + MdlLessonSession mdlLessonSession = mdlLessonSessionDAO.getBySessionId(toolSessionId); + if (mdlLessonSession == null) { + logger.debug("Could not find the mdlLesson session with toolSessionID:" + toolSessionId); + } + return mdlLessonSession; + } + + public MdlLessonUser getUserByUserIdAndSessionId(Long userId, Long toolSessionId) { + return mdlLessonUserDAO.getByUserIdAndSessionId(userId, toolSessionId); + } + + public MdlLessonUser getUserByLoginNameAndSessionId(String loginName, Long toolSessionId) { + return mdlLessonUserDAO.getByLoginNameAndSessionId(loginName, toolSessionId); + } + + public MdlLessonUser getUserByUID(Long uid) { + return mdlLessonUserDAO.getByUID(uid); + } + + public void deleteFromRepository(Long uuid, Long versionID) throws MdlLessonException { + ITicket ticket = getRepositoryLoginTicket(); + try { + repositoryService.deleteVersion(ticket, uuid, versionID); + } catch (Exception e) { + throw new MdlLessonException("Exception occured while deleting files from" + " the repository " + + e.getMessage()); + } + } + + public void saveOrUpdateMdlLesson(MdlLesson mdlLesson) { + mdlLessonDAO.saveOrUpdate(mdlLesson); + } + + public void saveOrUpdateMdlLessonSession(MdlLessonSession mdlLessonSession) { + mdlLessonSessionDAO.saveOrUpdate(mdlLessonSession); + } + + public void saveOrUpdateMdlLessonUser(MdlLessonUser mdlLessonUser) { + mdlLessonUserDAO.saveOrUpdate(mdlLessonUser); + } + + public MdlLessonUser createMdlLessonUser(UserDTO user, MdlLessonSession mdlLessonSession) { + MdlLessonUser mdlLessonUser = new MdlLessonUser(user, mdlLessonSession); + saveOrUpdateMdlLessonUser(mdlLessonUser); + return mdlLessonUser; + } + + public IAuditService getAuditService() { + return auditService; + } + + public void setAuditService(IAuditService auditService) { + this.auditService = auditService; + } + + /** + * This method verifies the credentials of the SubmitFiles Tool and gives it + * the Ticket to login and access the Content Repository. + * + * A valid ticket is needed in order to access the content from the + * repository. This method would be called evertime the tool needs to + * upload/download files from the content repository. + * + * @return ITicket The ticket for repostory access + * @throws SubmitFilesException + */ + private ITicket getRepositoryLoginTicket() throws MdlLessonException { + repositoryService = RepositoryProxy.getRepositoryService(); + ICredentials credentials = new SimpleCredentials(MdlLessonToolContentHandler.repositoryUser, + MdlLessonToolContentHandler.repositoryId); + try { + ITicket ticket = repositoryService.login(credentials, MdlLessonToolContentHandler.repositoryWorkspaceName); + return ticket; + } catch (AccessDeniedException ae) { + throw new MdlLessonException("Access Denied to repository." + ae.getMessage()); + } catch (WorkspaceNotFoundException we) { + throw new MdlLessonException("Workspace not found." + we.getMessage()); + } catch (LoginException e) { + throw new MdlLessonException("Login failed." + e.getMessage()); + } + } + + /* ===============Methods implemented from ToolContentImport102Manager =============== */ + + /** + * Import the data for a 1.0.2 MdlLesson + */ + public void import102ToolContent(Long toolContentId, UserDTO user, Hashtable importValues) { + Date now = new Date(); + MdlLesson mdlLesson = new MdlLesson(); + mdlLesson.setCreateDate(now); + mdlLesson.setDefineLater(Boolean.FALSE); + mdlLesson.setRunOffline(Boolean.FALSE); + mdlLesson.setToolContentId(toolContentId); + mdlLesson.setUpdateDate(now); + + mdlLessonDAO.saveOrUpdate(mdlLesson); + } + + /** + * Set the description, throws away the title value as this is not supported + * in 2.0 + */ + public void setReflectiveData(Long toolContentId, String title, String description) throws ToolException, + DataMissingException { + + logger + .warn("Setting the reflective field on a mdlLesson. This doesn't make sense as the mdlLesson is for reflection and we don't reflect on reflection!"); + MdlLesson mdlLesson = getMdlLessonByContentId(toolContentId); + if (mdlLesson == null) { + throw new DataMissingException("Unable to set reflective data titled " + title + + " on activity toolContentId " + toolContentId + " as the tool content does not exist."); + } + + //mdlLesson.setInstructions(description); + } + + //========================================================================================= + /* ********** Used by Spring to "inject" the linked objects ************* */ + + public IMdlLessonDAO getMdlLessonDAO() { + return mdlLessonDAO; + } + + public void setMdlLessonDAO(IMdlLessonDAO mdlLessonDAO) { + this.mdlLessonDAO = mdlLessonDAO; + } + + public IMdlLessonConfigItemDAO getMdlLessonConfigItemDAO() { + return mdlLessonConfigItemDAO; + } + + public void setMdlLessonConfigItemDAO(IMdlLessonConfigItemDAO mdlLessonConfigItemDAO) { + this.mdlLessonConfigItemDAO = mdlLessonConfigItemDAO; + } + + public IToolContentHandler getMdlLessonToolContentHandler() { + return mdlLessonToolContentHandler; + } + + public void setMdlLessonToolContentHandler(IToolContentHandler mdlLessonToolContentHandler) { + this.mdlLessonToolContentHandler = mdlLessonToolContentHandler; + } + + public IMdlLessonSessionDAO getMdlLessonSessionDAO() { + return mdlLessonSessionDAO; + } + + public void setMdlLessonSessionDAO(IMdlLessonSessionDAO sessionDAO) { + this.mdlLessonSessionDAO = sessionDAO; + } + + public ILamsToolService getToolService() { + return toolService; + } + + public void setToolService(ILamsToolService toolService) { + this.toolService = toolService; + } + + public IMdlLessonUserDAO getMdlLessonUserDAO() { + return mdlLessonUserDAO; + } + + public void setMdlLessonUserDAO(IMdlLessonUserDAO userDAO) { + this.mdlLessonUserDAO = userDAO; + } + + public ILearnerService getLearnerService() { + return learnerService; + } + + public void setLearnerService(ILearnerService learnerService) { + this.learnerService = learnerService; + } + + public IExportToolContentService getExportContentService() { + return exportContentService; + } + + public void setExportContentService(IExportToolContentService exportContentService) { + this.exportContentService = exportContentService; + } + + public ICoreNotebookService getCoreNotebookService() { + return coreNotebookService; + } + + public void setCoreNotebookService(ICoreNotebookService coreNotebookService) { + this.coreNotebookService = coreNotebookService; + } + + public MdlLessonOutputFactory getMdlLessonOutputFactory() { + if (mdlLessonOutputFactory == null) { + mdlLessonOutputFactory = new MdlLessonOutputFactory(); + } + return mdlLessonOutputFactory; + } + + public void setMdlLessonOutputFactory(MdlLessonOutputFactory mdlLessonOutputFactory) { + this.mdlLessonOutputFactory = mdlLessonOutputFactory; + } + + /** + * TODO: Use spring injection instead of hacking a context + * + * @return + */ + public IIntegrationService getIntegrationService() { + + if (integrationService == null) { + String contexts[] = { "/org/lamsfoundation/lams/applicationContext.xml", + "/org/lamsfoundation/lams/lesson/lessonApplicationContext.xml", + "/org/lamsfoundation/lams/toolApplicationContext.xml", + "/org/lamsfoundation/lams/integrationContext.xml", + "/org/lamsfoundation/lams/learning/learningApplicationContext.xml", + "/org/lamsfoundation/lams/contentrepository/applicationContext.xml", + "/org/lamsfoundation/lams/tool/mdlesn/mdlLessonApplicationContext.xml", + "/org/lamsfoundation/lams/commonContext.xml" }; + + ApplicationContext context = new ClassPathXmlApplicationContext(contexts); + + if (context == null) + throw new MdlLessonException( + "Unable to access application context. Cannot create integration service object."); + + IIntegrationService service = (IIntegrationService) context.getBean("integrationService"); + return service; + } else { + return integrationService; + } + } + + public void setIntegrationService(IIntegrationService integrationService) { + this.integrationService = integrationService; + } +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/service/MdlLessonServiceProxy.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/service/MdlLessonServiceProxy.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/service/MdlLessonServiceProxy.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,76 @@ +/**************************************************************** + * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.mdlesn.service; + +import javax.servlet.ServletContext; + +import org.lamsfoundation.lams.integration.service.IIntegrationService; +import org.lamsfoundation.lams.tool.ToolContentManager; +import org.lamsfoundation.lams.tool.ToolSessionManager; +import org.springframework.web.context.WebApplicationContext; +import org.springframework.web.context.support.WebApplicationContextUtils; + +/** + *

+ * This class act as the proxy between web layer and service layer. It is + * designed to decouple the presentation logic and business logic completely. In + * this way, the presentation tier will no longer be aware of the changes in + * service layer. Therefore we can feel free to switch the business logic + * implementation. + *

+ */ + +public class MdlLessonServiceProxy { + + public static final IMdlLessonService getMdlLessonService(ServletContext servletContext) { + return (IMdlLessonService) getMdlLessonDomainService(servletContext); + } + + private static Object getMdlLessonDomainService(ServletContext servletContext) { + WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext); + return wac.getBean("mdlLessonService"); + } + + /* + * Return the mdlLesson tool version of tool session manager implementation. + * It will delegate to the Spring helper method to retrieve the proper + * bean from Spring bean factory. + * @param servletContext the servletContext for current application + * @return noticeboard service object.*/ + public static final ToolSessionManager getMdlLessonSessionManager(ServletContext servletContext) { + return (ToolSessionManager) getMdlLessonDomainService(servletContext); + } + + /* + * Return the mdlLesson tool version of tool content manager implementation. + * It will delegate to the Spring helper method to retrieve the proper + * bean from Spring bean factory. + * @param servletContext the servletContext for current application + * @return noticeboard service object. */ + public static final ToolContentManager getMdlLessonContentManager(ServletContext servletContext) { + return (ToolContentManager) getMdlLessonDomainService(servletContext); + } + +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/util/MdlLessonConstants.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/util/MdlLessonConstants.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/util/MdlLessonConstants.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,50 @@ +/**************************************************************** + * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.mdlesn.util; + +public interface MdlLessonConstants { + public static final String TOOL_SIGNATURE = "mdlesn10"; + + // MdlLesson session status + public static final Integer SESSION_NOT_STARTED = new Integer(0); + public static final Integer SESSION_IN_PROGRESS = new Integer(1); + public static final Integer SESSION_COMPLETED = new Integer(2); + + public static final String AUTHORING_DEFAULT_TAB = "1"; + public static final String DELETED_ATTACHMENT_LIST = "deletedAttachmentList"; + public static final String AUTH_SESSION_ID_COUNTER = "authoringSessionIdCounter"; + public static final String AUTH_SESSION_ID = "authoringSessionId"; + + public static final int MONITORING_SUMMARY_MAX_MESSAGES = 5; + + // Attribute names + public static final String ATTR_MESSAGE = "message"; + public static final String ATTR_SESSION_MAP = "sessionMap"; + + // Parameter names + public static final String PARAM_PARENT_PAGE = "parentPage"; + + static final String FILTER_REPLACE_TEXT = "***"; +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/util/MdlLessonException.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/util/MdlLessonException.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/util/MdlLessonException.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,57 @@ +/**************************************************************** + * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.mdlesn.util; + +/** + * + * @author lfoxton + * + */ +public class MdlLessonException extends RuntimeException { + + /** + * + */ + private static final long serialVersionUID = -5518806968051758859L; + + public MdlLessonException(String message) { + super(message); + } + + public MdlLessonException(String message, Throwable cause) { + super(message, cause); + } + + public MdlLessonException() { + super(); + + } + + public MdlLessonException(Throwable cause) { + super(cause); + + } + +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/util/MdlLessonToolContentHandler.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/util/MdlLessonToolContentHandler.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/util/MdlLessonToolContentHandler.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,76 @@ +/**************************************************************** + * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.mdlesn.util; + +import org.lamsfoundation.lams.contentrepository.client.ToolContentHandler; + +/** + * Simple client for accessing the content repository. + */ +public class MdlLessonToolContentHandler extends ToolContentHandler { + + // TODO these three fields were changed to public, since accessor methods + // cannot be made static. Check if we can do this a better way. + public static String repositoryWorkspaceName = "mdlLessonworkspace"; + + public static String repositoryUser = "mdlLesson"; + + public static char[] repositoryId = { 'l', 'a', 'm', 's', '-', 'e', 'x' }; + + /** + * + */ + public MdlLessonToolContentHandler() { + super(); + } + + /* + * (non-Javadoc) + * + * @see org.lamsfoundation.lams.contentrepository.client.ToolContentHandler#getRepositoryWorkspaceName() + */ + public String getRepositoryWorkspaceName() { + return repositoryWorkspaceName; + } + + /* + * (non-Javadoc) + * + * @see org.lamsfoundation.lams.contentrepository.client.ToolContentHandler#getRepositoryUser() + */ + public String getRepositoryUser() { + return repositoryUser; + } + + /* + * (non-Javadoc) + * + * @see org.lamsfoundation.lams.contentrepository.client.ToolContentHandler#getRepositoryId() + */ + public char[] getRepositoryId() { + return repositoryId; + } + +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/util/WebUtility.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/util/WebUtility.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/util/WebUtility.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,179 @@ +/**************************************************************** + * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +package org.lamsfoundation.lams.tool.mdlesn.util; + +import java.io.DataInputStream; +import java.io.DataOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.HashMap; +import java.util.Map.Entry; + +import org.apache.log4j.Logger; +import org.lamsfoundation.lams.tool.exception.ToolException; + +public class WebUtility { + static Logger logger = Logger.getLogger(WebUtility.class.getName()); + + /** + * Uploads a file for importing sequences Uses a multi-part http post to + * post the file as well as the user, course, and hash server-authentication + * strings. + * + * Some of the java multipart posting libraries clashed with existing jboss + * libraries So instead, the multipart post is put together manually + * + * @param f + * @param urlString + * @param timestamp + * @param extUsername + * @param extCourseId + * @param hash + * @return + * @throws IOException + */ + public static InputStream performMultipartPost(File f, String fileParamName, String urlString, + HashMap params) throws MalformedURLException, IOException { + HttpURLConnection conn = null; + DataOutputStream dos = null; + DataInputStream inStream = null; + String lineEnd = "\r\n"; + String twoHyphens = "--"; + String boundary = "*****"; + int bytesRead, bytesAvailable, bufferSize; + byte[] buffer; + int maxBufferSize = 1 * 1024 * 1024; + + //------------------ CLIENT REQUEST + FileInputStream fileInputStream = new FileInputStream(f); + + // open a URL connection to the Servlet + URL url = new URL(urlString); + + // Open a HTTP connection to the URL + conn = (HttpURLConnection) url.openConnection(); + + // Allow Inputs + conn.setDoInput(true); + + // Allow Outputs + conn.setDoOutput(true); + + // Don't use a cached copy. + conn.setUseCaches(false); + + String httpRequest = ""; + for (Entry entry : params.entrySet()) { + httpRequest += twoHyphens + boundary + lineEnd; + httpRequest += "Content-Disposition: form-data; name=\"" + entry.getKey() + "\";" + lineEnd; + httpRequest += lineEnd; + httpRequest += entry.getValue() + lineEnd; + } + httpRequest += twoHyphens + boundary + lineEnd; + httpRequest += "Content-Disposition: form-data; name=\"" + fileParamName + "\";" + " filename=\"" + f.getName() + + "\"" + lineEnd; + httpRequest += lineEnd; + + // Use a post method. + conn.setRequestMethod("POST"); + conn.setRequestProperty("Connection", "Keep-Alive"); + conn.setRequestProperty("Content-Length", new Long(f.length() + httpRequest.getBytes().length + 64).toString()); + logger.debug(f.length()); + logger.debug(httpRequest.getBytes().length); + logger.debug("" + f.length() + httpRequest.getBytes().length + 64); + logger.debug(httpRequest); + + conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); + + dos = new DataOutputStream(conn.getOutputStream()); + dos.writeBytes(httpRequest); + + // create a buffer of maximum size + bytesAvailable = fileInputStream.available(); + bufferSize = Math.min(bytesAvailable, maxBufferSize); + buffer = new byte[bufferSize]; + + // read file and write it into form... + bytesRead = fileInputStream.read(buffer, 0, bufferSize); + while (bytesRead > 0) { + dos.write(buffer, 0, bufferSize); + bytesAvailable = fileInputStream.available(); + bufferSize = Math.min(bytesAvailable, maxBufferSize); + bytesRead = fileInputStream.read(buffer, 0, bufferSize); + } + + // send multipart form data necessary after file data... + dos.writeBytes(lineEnd); + dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); + // Write the file part into the post------------------------------- + + // close streams + fileInputStream.close(); + dos.flush(); + dos.close(); + + return conn.getInputStream(); + } + + public static InputStream getResponseInputStreamFromExternalServer(String urlStr, HashMap params) + throws ToolException, IOException { + if (!urlStr.endsWith("?")) + urlStr += "?"; + + for (Entry entry : params.entrySet()) { + urlStr += "&" + entry.getKey() + "=" + entry.getValue(); + } + + logger.debug("Making request to external servlet: " + urlStr); + + URL url = new URL(urlStr); + URLConnection conn = url.openConnection(); + if (!(conn instanceof HttpURLConnection)) { + logger.error("Fail to connect to external server though url: " + urlStr); + throw new ToolException("Fail to connect to external server though url: " + urlStr); + } + + HttpURLConnection httpConn = (HttpURLConnection) conn; + if (httpConn.getResponseCode() != HttpURLConnection.HTTP_OK) { + logger.error("Fail to fetch data from external server, response code: " + httpConn.getResponseCode() + + " Url: " + urlStr); + throw new ToolException("Fail to fetch data from external server, response code: " + + httpConn.getResponseCode() + " Url: " + urlStr); + } + + InputStream is = url.openConnection().getInputStream(); + if (is == null) { + logger.error("Fail to fetch data from external server, return InputStream null: " + urlStr); + throw new ToolException("Fail to fetch data from external server, return inputStream null: " + urlStr); + } + + return is; + } + +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/actions/AdminAction.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/actions/AdminAction.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/actions/AdminAction.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,117 @@ +/**************************************************************** + * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ +package org.lamsfoundation.lams.tool.mdlesn.web.actions; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import org.lamsfoundation.lams.tool.Tool; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonConfigItem; +import org.lamsfoundation.lams.tool.mdlesn.service.IMdlLessonService; +import org.lamsfoundation.lams.tool.mdlesn.service.MdlLessonServiceProxy; +import org.lamsfoundation.lams.tool.mdlesn.util.MdlLessonConstants; +import org.lamsfoundation.lams.tool.mdlesn.web.forms.AdminForm; +import org.lamsfoundation.lams.tool.service.ILamsToolService; +import org.lamsfoundation.lams.web.action.LamsDispatchAction; + +/** + * @author + * @version + * + * @struts.action path="/mdlesn10admin" parameter="dispatch" scope="request" + * name="mdlesn10AdminForm" validate="false" + * + * @struts.action-forward name="config" path="/pages/admin/config.jsp" + */ +public class AdminAction extends LamsDispatchAction { + public IMdlLessonService mdlLessonService; + public ILamsToolService toolService; + + public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + // set up mdlLessonService + if (mdlLessonService == null) { + mdlLessonService = MdlLessonServiceProxy.getMdlLessonService(this.getServlet().getServletContext()); + } + + AdminForm adminForm = (AdminForm) form; + + if (toolService == null) { + toolService = mdlLessonService.getToolService(); + } + Tool tool = toolService.getPersistToolBySignature(MdlLessonConstants.TOOL_SIGNATURE); + + MdlLessonConfigItem toolAdpServlet = mdlLessonService.getConfigItem(MdlLessonConfigItem.KEY_EXTERNAL_TOOL_SERVLET); + if (toolAdpServlet != null) + adminForm.setToolAdapterServlet(toolAdpServlet.getConfigValue()); + + MdlLessonConfigItem extServerConfig = mdlLessonService.getConfigItem(MdlLessonConfigItem.KEY_EXTERNAL_SERVER_URL); + if (extServerConfig != null) + adminForm.setExtServerUrl(extServerConfig.getConfigValue()); + + if (tool != null && tool.getExtLmsId() != null) + adminForm.setServerIdMapping(tool.getExtLmsId()); + + request.setAttribute("error", false); + return mapping.findForward("config"); + } + + public ActionForward saveContent(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + AdminForm adminForm = (AdminForm) form; + + if (adminForm.getToolAdapterServlet() != null && !adminForm.getToolAdapterServlet().equals("") + && adminForm.getServerIdMapping() != null && !adminForm.getServerIdMapping().equals("") + && adminForm.getExtServerUrl() != null && !adminForm.getExtServerUrl().equals("")) { + // set up mdlLessonService + if (mdlLessonService == null) { + mdlLessonService = MdlLessonServiceProxy.getMdlLessonService(this.getServlet().getServletContext()); + } + + MdlLessonConfigItem servletConfig = mdlLessonService + .getConfigItem(MdlLessonConfigItem.KEY_EXTERNAL_TOOL_SERVLET); + servletConfig.setConfigValue(adminForm.getToolAdapterServlet()); + mdlLessonService.saveOrUpdateMdlLessonConfigItem(servletConfig); + + MdlLessonConfigItem extServerConfig = mdlLessonService + .getConfigItem(MdlLessonConfigItem.KEY_EXTERNAL_SERVER_URL); + extServerConfig.setConfigValue(adminForm.getExtServerUrl()); + mdlLessonService.saveOrUpdateMdlLessonConfigItem(extServerConfig); + + if (toolService == null) { + toolService = mdlLessonService.getToolService(); + } + Tool tool = toolService.getPersistToolBySignature(MdlLessonConstants.TOOL_SIGNATURE); + tool.setExtLmsId(adminForm.getServerIdMapping()); + toolService.saveOrUpdateTool(tool); + return mapping.findForward("config"); + } else { + request.setAttribute("error", true); + return mapping.findForward("config"); + } + } +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/actions/AuthoringAction.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/actions/AuthoringAction.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/actions/AuthoringAction.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,228 @@ +/**************************************************************** + * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.mdlesn.web.actions; + +import java.net.URLEncoder; +import java.util.Date; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.log4j.Logger; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import org.lamsfoundation.lams.integration.service.IIntegrationService; +import org.lamsfoundation.lams.tool.ToolAccessMode; +import org.lamsfoundation.lams.tool.exception.ToolException; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLesson; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonConfigItem; +import org.lamsfoundation.lams.tool.mdlesn.service.IMdlLessonService; +import org.lamsfoundation.lams.tool.mdlesn.service.MdlLessonServiceProxy; +import org.lamsfoundation.lams.tool.mdlesn.util.MdlLessonConstants; +import org.lamsfoundation.lams.util.Configuration; +import org.lamsfoundation.lams.util.ConfigurationKeys; +import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.action.LamsDispatchAction; +import org.lamsfoundation.lams.web.util.AttributeNames; + +/** + * @author + * @version + * + * @struts.action path="/authoring" name="authoringForm" parameter="dispatch" + * scope="request" validate="false" + * + * @struts.action-forward name="success" path="tiles:/authoring/main" + * @struts.action-forward name="message_page" path="tiles:/generic/message" + */ +public class AuthoringAction extends LamsDispatchAction { + + private static Logger logger = Logger.getLogger(AuthoringAction.class); + + public IMdlLessonService mdlLessonService; + + //public static final String RELATIVE_MOODLE_AUTHOR_URL = "/course/modedit-lams.php?"; + public static final String RELATIVE_MOODLE_AUTHOR_URL = "course/lamsframes.php?"; + public static final String MOODLE_EDIT_URL = "course/modedit-lams.php"; + + // Authoring SessionMap key names + private static final String KEY_TOOL_CONTENT_ID = "toolContentID"; + + private static final String KEY_EXTERNAL_TOOL_CONTENT_ID = "extToolContentID"; + + private static final String KEY_MODE = "mode"; + + private static final String TOOL_APP_URL = Configuration.get(ConfigurationKeys.SERVER_URL) + "/tool/" + + MdlLessonConstants.TOOL_SIGNATURE + "/"; + + public IIntegrationService integrationService; + + /** + * Default method when no dispatch parameter is specified. It is expected + * that the parameter toolContentID will be passed in. This + * will be used to retrieve content for this tool. + * + */ + protected ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + + // Extract toolContentID, contentFolderID and ToolAccessMode from parameters. + Long toolContentID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID)); + String contentFolderID = WebUtil.readStrParam(request, AttributeNames.PARAM_CONTENT_FOLDER_ID); + ToolAccessMode mode = WebUtil.readToolAccessModeParam(request, KEY_MODE, true); + + // set up mdlLessonService + if (mdlLessonService == null) { + mdlLessonService = MdlLessonServiceProxy.getMdlLessonService(this.getServlet().getServletContext()); + } + + // retrieving MdlLesson with given toolContentID + // if is a new instance, customCSV should be passed, and used for the course url, otherwise the saved value should be used + MdlLesson mdlLesson = mdlLessonService.getMdlLessonByContentId(toolContentID); + + // Getting the custom csv from the request + String customCSV = WebUtil.readStrParam(request, "customCSV", true); + String userFromCSV = null; + String courseFromCSV = null; + String sectionFromCSV = null; + if (customCSV == null && mdlLesson == null) { + logger.error("CustomCSV required if mdlLesson is null"); + throw new ToolException("CustomCSV required if mdlLesson is null"); + } else if (customCSV != null) { + String splitCSV[] = customCSV.split(","); + if (splitCSV.length != 3) { + logger.error("mdlLesson tool customCSV not in required (user,course,courseURL) form: " + customCSV); + throw new ToolException("mdlLesson tool cusomCSV not in required (user,course,courseURL) form: " + + customCSV); + } else { + userFromCSV = splitCSV[0]; + courseFromCSV = splitCSV[1]; + sectionFromCSV = splitCSV[2]; + } + } + + if (mdlLesson == null) { + mdlLesson = mdlLessonService.copyDefaultContent(toolContentID); + mdlLesson.setExtUsername(userFromCSV); + mdlLesson.setExtCourseId(courseFromCSV); + mdlLesson.setExtSection(sectionFromCSV); + mdlLesson.setCreateDate(new Date()); + } + + if (mode != null && mode.isTeacher()) { + // Set the defineLater flag so that learners cannot use content + // while we + // are editing. This flag is released when updateContent is called. + mdlLesson.setDefineLater(true); + mdlLessonService.saveOrUpdateMdlLesson(mdlLesson); + } + + // if no external content id, open the mdl author page, otherwise, open the edit page + try { + + // If the mdlLesson has a saved course url, use it, otherwise use the one giving in the request in customCSV + //String courseUrlToBeUsed = (mdlLesson.getExtCourseUrl() != null) ? mdlLesson.getExtCourseUrl() : courseUrlFromCSV; + + String responseUrl = mdlLessonService.getConfigItem(MdlLessonConfigItem.KEY_EXTERNAL_SERVER_URL) + .getConfigValue(); + /* responseUrl += RELATIVE_MOODLE_AUTHOR_URL; + String returnUpdateUrl = URLEncoder.encode(TOOL_APP_URL + "/authoring.do?dispatch=updateContent" + "&" + + AttributeNames.PARAM_TOOL_CONTENT_ID + "=" + toolContentID.toString(), "UTF8"); + responseUrl += "&lamsUpdateURL=" + returnUpdateUrl;*/ + + + responseUrl += RELATIVE_MOODLE_AUTHOR_URL; + String returnUpdateUrl = URLEncoder.encode(TOOL_APP_URL + "/authoring.do?dispatch=updateContent" + "&" + + AttributeNames.PARAM_TOOL_CONTENT_ID + "=" + toolContentID.toString(), "UTF8"); + + + returnUpdateUrl = URLEncoder.encode(returnUpdateUrl, "UTF8"); + + responseUrl += "lamsUpdateURL=" + returnUpdateUrl; + + String encodedMoodleRelativePath = URLEncoder.encode(MOODLE_EDIT_URL, "UTF8"); + + responseUrl += "&dest=" + encodedMoodleRelativePath ; + + + if (mdlLesson.getExtSection() != null) { + responseUrl += "§ion=" + mdlLesson.getExtSection(); + } else { + responseUrl += "§ion=" + sectionFromCSV; + } + + if (mdlLesson.getExtToolContentId() != null) { + responseUrl += "&id=" + mdlLesson.getExtToolContentId().toString(); + } else { + responseUrl += "&add=lesson"; + } + + if (mdlLesson.getExtCourseId() != null) { + responseUrl += "&course=" + mdlLesson.getExtCourseId(); + } else { + responseUrl += "&course=" + courseFromCSV; + } + + log.debug("Sending to moodle lesson edit page: " + responseUrl); + + response.sendRedirect(responseUrl); + } catch (Exception e) { + log.error("Could not redirect to mdl lesson authoring", e); + } + return null; + } + + public ActionForward updateContent(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + // TODO need error checking. + + Long toolContentID = new Long(WebUtil.readLongParam(request, KEY_TOOL_CONTENT_ID)); + Long externalToolContentID = new Long(WebUtil.readLongParam(request, KEY_EXTERNAL_TOOL_CONTENT_ID)); + //String sessionMapID = WebUtil.readStrParam(request,"sessionMapID"); + + // get mdlLesson content. + MdlLesson mdlLesson = mdlLessonService.getMdlLessonByContentId(toolContentID); + mdlLesson.setExtToolContentId(externalToolContentID); + mdlLesson.setUpdateDate(new Date()); + mdlLesson.setDefineLater(false); + mdlLessonService.saveOrUpdateMdlLesson(mdlLesson); + + String redirectString = Configuration.get(ConfigurationKeys.SERVER_URL) + "/tool/" + + MdlLessonConstants.TOOL_SIGNATURE + "/clearsession.do" + "?action=confirm&mode=author" + "&signature=" + + MdlLessonConstants.TOOL_SIGNATURE + "&toolContentID=" + toolContentID.toString() + "&defineLater=no" + + "&customiseSessionID=" + "&contentFolderID=0"; + + log.debug("Manual redirect for MdlLesson to: " + redirectString); + + try { + response.sendRedirect(redirectString); + } catch (Exception e) { + log.error("Could not redirect to clear session action for MdlLesson", e); + } + + return null; + } +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/actions/ClearSessionAction.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/actions/ClearSessionAction.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/actions/ClearSessionAction.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,51 @@ +/**************************************************************** + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ +package org.lamsfoundation.lams.tool.mdlesn.web.actions; + +import javax.servlet.http.HttpSession; + +import org.lamsfoundation.lams.authoring.web.LamsAuthoringFinishAction; +import org.lamsfoundation.lams.tool.ToolAccessMode; + +/** + * This class give a chance to clear HttpSession when user save/close authoring + * page. + * + * @author lfoxton + * + * @struts:action path="/clearsession" validate="false" + * + * @version $Revision$ + */ +public class ClearSessionAction extends LamsAuthoringFinishAction { + + @Override + public void clearSession(String customiseSessionID, HttpSession session, ToolAccessMode mode) { + if (mode.isAuthor()) { + session.removeAttribute(customiseSessionID); + } + } + +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/actions/LearningAction.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/actions/LearningAction.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/actions/LearningAction.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,206 @@ +/**************************************************************** + * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.mdlesn.web.actions; + +import java.io.IOException; +import java.net.URLEncoder; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.log4j.Logger; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import org.lamsfoundation.lams.tool.ToolAccessMode; +import org.lamsfoundation.lams.tool.ToolSessionManager; +import org.lamsfoundation.lams.tool.exception.DataMissingException; +import org.lamsfoundation.lams.tool.exception.ToolException; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonUser; +import org.lamsfoundation.lams.tool.mdlesn.dto.MdlLessonDTO; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLesson; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonConfigItem; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonSession; +import org.lamsfoundation.lams.tool.mdlesn.service.IMdlLessonService; +import org.lamsfoundation.lams.tool.mdlesn.service.MdlLessonServiceProxy; +import org.lamsfoundation.lams.tool.mdlesn.util.MdlLessonConstants; +import org.lamsfoundation.lams.tool.mdlesn.util.MdlLessonException; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.util.Configuration; +import org.lamsfoundation.lams.util.ConfigurationKeys; +import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.action.LamsDispatchAction; +import org.lamsfoundation.lams.web.session.SessionManager; +import org.lamsfoundation.lams.web.util.AttributeNames; + +/** + * @author + * @version + * + * @struts.action path="/learning" parameter="dispatch" scope="request" + * name="learningForm" + * @struts.action-forward name="mdlLesson" path="tiles:/learning/main" + * @struts.action-forward name="runOffline" path="tiles:/learning/runOffline" + * @struts.action-forward name="defineLater" path="tiles:/learning/defineLater" + */ +public class LearningAction extends LamsDispatchAction { + + private static Logger log = Logger.getLogger(LearningAction.class); + + private static final boolean MODE_OPTIONAL = false; + + private static final String TOOL_APP_URL = Configuration.get(ConfigurationKeys.SERVER_URL) + "/tool/" + + MdlLessonConstants.TOOL_SIGNATURE + "/"; + + public static final String RELATIVE_LEARNER_URL = "course/lamsframes.php?"; + public static final String MOODLE_VIEW_URL = "mod/lesson/view.php"; + public static final String RELATIVE_TEACHER_URL = "mod/lesson/view.php?mode=author&"; + + private IMdlLessonService mdlLessonService; + + public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { + + Long toolSessionID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID); + + // set up mdlLessonService + if (mdlLessonService == null) { + mdlLessonService = MdlLessonServiceProxy.getMdlLessonService(this.getServlet().getServletContext()); + } + + // Retrieve the session and content. + ToolAccessMode mode = WebUtil.readToolAccessModeParam(request,AttributeNames.PARAM_MODE, false); + MdlLessonSession mdlLessonSession = mdlLessonService.getSessionBySessionId(toolSessionID); + if (mdlLessonSession == null) { + throw new MdlLessonException("Cannot retreive session with toolSessionID: " + toolSessionID); + } + + MdlLesson mdlLesson = mdlLessonSession.getMdlLesson(); + MdlLessonUser mdlLessonUser = getCurrentUser(toolSessionID); + + // check defineLater + if (mdlLesson.isDefineLater()) { + return mapping.findForward("defineLater"); + } + + MdlLessonDTO mdlLessonDTO = new MdlLessonDTO(); + request.setAttribute("mdlLessonDTO", mdlLessonDTO); + + // Set the content in use flag. + if (!mdlLesson.isContentInUse()) { + mdlLesson.setContentInUse(new Boolean(true)); + mdlLessonService.saveOrUpdateMdlLesson(mdlLesson); + } + + // check runOffline + if (mdlLesson.isRunOffline()) { + return mapping.findForward("runOffline"); + } + + if (mdlLesson.getExtToolContentId() != null) { + try { + String responseUrl = mdlLessonService.getConfigItem(MdlLessonConfigItem.KEY_EXTERNAL_SERVER_URL) + .getConfigValue(); + + if(mode.equals(ToolAccessMode.TEACHER)) + { + responseUrl += RELATIVE_TEACHER_URL; + } + else if (mode.equals(ToolAccessMode.LEARNER) || mode.equals(ToolAccessMode.AUTHOR)) + { + responseUrl += RELATIVE_LEARNER_URL; + } + + String returnUrl = TOOL_APP_URL + "learning.do?" + AttributeNames.PARAM_TOOL_SESSION_ID + "=" + + toolSessionID.toString() + "&dispatch=finishActivity"; + + String encodedMoodleRelativePath = URLEncoder.encode(MOODLE_VIEW_URL, "UTF8"); + + returnUrl = URLEncoder.encode(returnUrl, "UTF8"); + + + responseUrl += "&id=" + mdlLessonSession.getExtSessionId() + "&returnUrl=" + returnUrl + + "&dest=" + encodedMoodleRelativePath + "&is_learner=1" + "&isFinished=" + mdlLessonUser.isFinishedActivity(); + + + log.debug("Redirecting for mdl lesson learner: " + responseUrl); + response.sendRedirect(responseUrl); + } catch (Exception e) { + log.error("Could not redirect to mdl lesson authoring", e); + } + } else { + throw new MdlLessonException("External content id null for learner"); + } + return null; + } + + private MdlLessonUser getCurrentUser(Long toolSessionId) { + UserDTO user = (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER); + + // attempt to retrieve user using userId and toolSessionId + MdlLessonUser mdlLessonUser = mdlLessonService.getUserByUserIdAndSessionId(new Long(user.getUserID().intValue()), + toolSessionId); + + if (mdlLessonUser == null) { + MdlLessonSession mdlLessonSession = mdlLessonService.getSessionBySessionId(toolSessionId); + mdlLessonUser = mdlLessonService.createMdlLessonUser(user, mdlLessonSession); + } + + return mdlLessonUser; + } + + public ActionForward finishActivity(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + + Long toolSessionID = WebUtil.readLongParam(request, "toolSessionID"); + + MdlLessonUser mdlLessonUser = getCurrentUser(toolSessionID); + + if (mdlLessonUser != null) { + mdlLessonUser.setFinishedActivity(true); + mdlLessonService.saveOrUpdateMdlLessonUser(mdlLessonUser); + } else { + log.error("finishActivity(): couldn't find MdlLessonUser with id: " + mdlLessonUser.getUserId() + + "and toolSessionID: " + toolSessionID); + } + + ToolSessionManager sessionMgrService = MdlLessonServiceProxy.getMdlLessonSessionManager(getServlet() + .getServletContext()); + + String nextActivityUrl; + try { + nextActivityUrl = sessionMgrService.leaveToolSession(toolSessionID, mdlLessonUser.getUserId()); + response.sendRedirect(nextActivityUrl); + } catch (DataMissingException e) { + throw new MdlLessonException(e); + } catch (ToolException e) { + throw new MdlLessonException(e); + } catch (IOException e) { + throw new MdlLessonException(e); + } + + return null; // TODO need to return proper page. + } +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/actions/MonitoringAction.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/actions/MonitoringAction.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/actions/MonitoringAction.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,122 @@ +/**************************************************************** + * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +/* $$Id$$ */ + +package org.lamsfoundation.lams.tool.mdlesn.web.actions; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.log4j.Logger; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionForward; +import org.apache.struts.action.ActionMapping; +import org.lamsfoundation.lams.tool.mdlesn.dto.MdlLessonDTO; +import org.lamsfoundation.lams.tool.mdlesn.dto.MdlLessonSessionDTO; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLesson; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonConfigItem; +import org.lamsfoundation.lams.tool.mdlesn.service.IMdlLessonService; +import org.lamsfoundation.lams.tool.mdlesn.service.MdlLessonServiceProxy; +import org.lamsfoundation.lams.tool.mdlesn.util.MdlLessonConstants; +import org.lamsfoundation.lams.util.Configuration; +import org.lamsfoundation.lams.util.ConfigurationKeys; +import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.action.LamsDispatchAction; +import org.lamsfoundation.lams.web.util.AttributeNames; + +/** + * @author + * @version + * + * @struts.action path="/monitoring" parameter="dispatch" scope="request" + * name="monitoringForm" validate="false" + * + * @struts.action-forward name="success" path="tiles:/monitoring/main" + * + */ +public class MonitoringAction extends LamsDispatchAction { + + private static Logger log = Logger.getLogger(MonitoringAction.class); + + private static final String TOOL_APP_URL = Configuration.get(ConfigurationKeys.SERVER_URL) + "/tool/" + + MdlLessonConstants.TOOL_SIGNATURE + "/"; + + public static final String RELATIVE_MONITOR_URL = "mod/lesson/view.php?"; + + public IMdlLessonService mdlLessonService; + + public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + + setupService(); + + Long toolContentID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID)); + + String contentFolderID = WebUtil.readStrParam(request, AttributeNames.PARAM_CONTENT_FOLDER_ID); + + MdlLesson mdlLesson = mdlLessonService.getMdlLessonByContentId(toolContentID); + + if (mdlLesson == null) { + // TODO error page. + } + + MdlLessonDTO mdlLessonDT0 = new MdlLessonDTO(mdlLesson); + + Long currentTab = WebUtil.readLongParam(request, AttributeNames.PARAM_CURRENT_TAB, true); + mdlLessonDT0.setCurrentTab(currentTab); + + for (MdlLessonSessionDTO sessionDTO : mdlLessonDT0.getSessionDTOs()) { + try { + String responseUrl = mdlLessonService.getConfigItem(MdlLessonConfigItem.KEY_EXTERNAL_SERVER_URL) + .getConfigValue(); + responseUrl += RELATIVE_MONITOR_URL; + + String returnUrl = TOOL_APP_URL + "learning.do?" + AttributeNames.PARAM_TOOL_SESSION_ID + "=" + + sessionDTO.getSessionID().toString() + "&dispatch=finishActivity"; + returnUrl = URLEncoder.encode(returnUrl, "UTF8"); + + responseUrl += "&id=" + sessionDTO.getExtSessionID() + "&returnUrl=" + returnUrl; + + sessionDTO.setRunTimeUrl(responseUrl); + } catch (UnsupportedEncodingException e) { + log.error(e); + } + } + + request.setAttribute("mdlLessonDTO", mdlLessonDT0); + request.setAttribute("contentFolderID", contentFolderID); + return mapping.findForward("success"); + } + + /** + * set up mdlLessonService + */ + private void setupService() { + if (mdlLessonService == null) { + mdlLessonService = MdlLessonServiceProxy.getMdlLessonService(this.getServlet().getServletContext()); + } + } +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/forms/AdminForm.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/forms/AdminForm.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/forms/AdminForm.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,77 @@ +/**************************************************************** + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ +package org.lamsfoundation.lams.tool.mdlesn.web.forms; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionMapping; +import org.apache.struts.action.ActionMessage; +import org.apache.struts.action.ActionMessages; + +/** + * @struts.form name="mdlesn10AdminForm" + */ +public class AdminForm extends ActionForm { + private static final long serialVersionUID = 8872637862875198L; + + String toolAdapterServlet; + String extServerUrl; + String serverIdMapping; + + @Override + public ActionErrors validate(ActionMapping arg0, HttpServletRequest arg1) { + ActionErrors ac = new ActionErrors(); + ac.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("this is an error")); + return ac; + } + + public String getToolAdapterServlet() { + return toolAdapterServlet; + } + + public void setToolAdapterServlet(String toolAdapterServlet) { + this.toolAdapterServlet = toolAdapterServlet; + } + + public String getServerIdMapping() { + return serverIdMapping; + } + + public void setServerIdMapping(String serverIdMapping) { + this.serverIdMapping = serverIdMapping; + } + + public String getExtServerUrl() { + return extServerUrl; + } + + public void setExtServerUrl(String extServerUrl) { + this.extServerUrl = extServerUrl; + } + + public static long getSerialVersionUID() { + return serialVersionUID; + } +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/forms/AuthoringForm.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/forms/AuthoringForm.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/forms/AuthoringForm.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,215 @@ +/**************************************************************** + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ + +package org.lamsfoundation.lams.tool.mdlesn.web.forms; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.struts.action.ActionErrors; +import org.apache.struts.action.ActionForm; +import org.apache.struts.action.ActionMapping; +import org.apache.struts.action.ActionMessage; +import org.apache.struts.action.ActionMessages; +import org.apache.struts.upload.FormFile; +import org.lamsfoundation.lams.web.util.SessionMap; + +/** + * @struts.form name="authoringForm" + */ +public class AuthoringForm extends ActionForm { + + private static final long serialVersionUID = 3950453134542135495L; + + // Properties + + String title; + + String instructions; + + String offlineInstruction; + + String onlineInstruction; + + boolean lockOnFinished; + + boolean allowRichEditor; + + boolean evalcomixEvaluationByLearners; + + boolean evalcomixEvaluationByTeachers; + + String evalcomixInstrumentFormAndViewUrl; + + FormFile onlineFile; + + FormFile offlineFile; + + String currentTab; + + String dispatch; + + String sessionMapID; + + Long deleteFileUuid; + + SessionMap sessionMap; + + @Override + public ActionErrors validate(ActionMapping arg0, HttpServletRequest arg1) { + ActionErrors ac = new ActionErrors(); + ac.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("this is an error")); + + return ac; + } + + public String getSessionMapID() { + return sessionMapID; + } + + public void setSessionMapID(String sessionMapID) { + this.sessionMapID = sessionMapID; + } + + public String getCurrentTab() { + return currentTab; + } + + public void setCurrentTab(String currentTab) { + this.currentTab = currentTab; + } + + public String getDispatch() { + return dispatch; + } + + public void setDispatch(String dispatch) { + this.dispatch = dispatch; + } + + public String getInstructions() { + return instructions; + } + + public void setInstructions(String instructions) { + this.instructions = instructions; + } + + public boolean isLockOnFinished() { + return lockOnFinished; + } + + public void setLockOnFinished(boolean lockOnFinished) { + this.lockOnFinished = lockOnFinished; + } + + public FormFile getOfflineFile() { + return offlineFile; + } + + public void setOfflineFile(FormFile offlineFile) { + this.offlineFile = offlineFile; + } + + public String getOfflineInstruction() { + return offlineInstruction; + } + + public void setOfflineInstruction(String offlineInstruction) { + this.offlineInstruction = offlineInstruction; + } + + public FormFile getOnlineFile() { + return onlineFile; + } + + public void setOnlineFile(FormFile onlineFile) { + this.onlineFile = onlineFile; + } + + public String getOnlineInstruction() { + return onlineInstruction; + } + + public void setOnlineInstruction(String onlineInstruction) { + this.onlineInstruction = onlineInstruction; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public void setSessionMap(SessionMap sessionMap) { + this.sessionMap = sessionMap; + } + + public SessionMap getSessionMap() { + return sessionMap; + } + + public Long getDeleteFileUuid() { + return deleteFileUuid; + } + + public void setDeleteFileUuid(Long deleteFile) { + this.deleteFileUuid = deleteFile; + } + + public boolean isAllowRichEditor() { + return allowRichEditor; + } + + public void setAllowRichEditor(boolean allowRichEditor) { + this.allowRichEditor = allowRichEditor; + } + + public String getEvalcomixInstrumentFormAndViewUrl() { + return evalcomixInstrumentFormAndViewUrl; + } + + public void setEvalcomixInstrumentFormAndViewUrl(String evalcomixInstrumentFormAndViewUrl) { + this.evalcomixInstrumentFormAndViewUrl = evalcomixInstrumentFormAndViewUrl; + } + + public boolean isEvalcomixEvaluationByLearners() { + return evalcomixEvaluationByLearners; + } + + public void setEvalcomixEvaluationByLearners(boolean evalcomixEvaluationByLearners) { + this.evalcomixEvaluationByLearners = evalcomixEvaluationByLearners; + } + + public boolean isEvalcomixEvaluationByTeachers() { + return evalcomixEvaluationByTeachers; + } + + public void setEvalcomixEvaluationByTeachers(boolean evalcomixEvaluationByTeachers) { + this.evalcomixEvaluationByTeachers = evalcomixEvaluationByTeachers; + } + +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/forms/LearningForm.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/forms/LearningForm.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/forms/LearningForm.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,96 @@ +/**************************************************************** + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ + +package org.lamsfoundation.lams.tool.mdlesn.web.forms; + +import org.apache.struts.action.ActionForm; + +/** + * + * @author lfoxton + * + * @struts.form name="learningForm" + */ +public class LearningForm extends ActionForm { + + private static final long serialVersionUID = -4728946254882237144L; + + String title; + String instructions; + + String dispatch; + Long toolSessionID; + String mode; + + String entryText; + + public String getMode() { + return mode; + } + + public void setMode(String mode) { + this.mode = mode; + } + + public String getDispatch() { + return dispatch; + } + + public void setDispatch(String dispatch) { + this.dispatch = dispatch; + } + + public Long getToolSessionID() { + return toolSessionID; + } + + public void setToolSessionID(Long toolSessionID) { + this.toolSessionID = toolSessionID; + } + + public String getInstructions() { + return instructions; + } + + public void setInstructions(String instructions) { + this.instructions = instructions; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getEntryText() { + return entryText; + } + + public void setEntryText(String entryText) { + this.entryText = entryText; + } +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/forms/MonitoringForm.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/forms/MonitoringForm.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/forms/MonitoringForm.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,94 @@ +/**************************************************************** + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ + +package org.lamsfoundation.lams.tool.mdlesn.web.forms; + +import org.apache.struts.action.ActionForm; + +/** + * @struts.form name="monitoringForm" + */ +public class MonitoringForm extends ActionForm { + + private static final long serialVersionUID = 9096908688391850595L; + + String dispatch; + boolean teacherVisible; + Long toolSessionID; + + // editing message page. + Long messageUID; + String messageBody; + boolean messageHidden; + + public String getMessageBody() { + return messageBody; + } + + public void setMessageBody(String messageBody) { + this.messageBody = messageBody; + } + + public Long getMessageUID() { + return messageUID; + } + + public void setMessageUID(Long messageUID) { + this.messageUID = messageUID; + } + + public String getDispatch() { + return dispatch; + } + + public void setDispatch(String dispatch) { + this.dispatch = dispatch; + } + + public Long getToolSessionID() { + return toolSessionID; + } + + public void setToolSessionID(Long toolSessionID) { + this.toolSessionID = toolSessionID; + } + + public boolean isTeacherVisible() { + return teacherVisible; + } + + public void setTeacherVisible(boolean visible) { + this.teacherVisible = visible; + } + + public boolean isMessageHidden() { + return messageHidden; + } + + public void setMessageHidden(boolean messageHidden) { + this.messageHidden = messageHidden; + } + +} Index: tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/servlets/ExportServlet.java =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/servlets/ExportServlet.java (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/src/java/org/lamsfoundation/lams/tool/mdlesn/web/servlets/ExportServlet.java (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,194 @@ +/**************************************************************** + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/* $Id$ */ + +package org.lamsfoundation.lams.tool.mdlesn.web.servlets; + +import java.io.BufferedOutputStream; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.HashMap; +import java.util.Set; + +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; +import org.lamsfoundation.lams.tool.ToolAccessMode; +import org.lamsfoundation.lams.tool.mdlesn.dto.MdlLessonDTO; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLesson; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonConfigItem; +import org.lamsfoundation.lams.tool.mdlesn.model.MdlLessonSession; +import org.lamsfoundation.lams.tool.mdlesn.service.MdlLessonServiceProxy; +import org.lamsfoundation.lams.tool.mdlesn.service.IMdlLessonService; +import org.lamsfoundation.lams.tool.mdlesn.util.MdlLessonException; +import org.lamsfoundation.lams.tool.mdlesn.util.WebUtility; +import org.lamsfoundation.lams.web.servlet.AbstractExportPortfolioServlet; +import org.lamsfoundation.lams.web.util.AttributeNames; + +public class ExportServlet extends AbstractExportPortfolioServlet { + + private static final long serialVersionUID = -2829707715037631881L; + + private static Logger logger = Logger.getLogger(ExportServlet.class); + + private final String FILENAME = "mdlLesson_main.html"; + + private IMdlLessonService mdlLessonService; + + protected String doExport(HttpServletRequest request, HttpServletResponse response, String directoryName, + Cookie[] cookies) { + + if (mdlLessonService == null) { + mdlLessonService = MdlLessonServiceProxy.getMdlLessonService(getServletContext()); + } + + try { + if (StringUtils.equals(mode, ToolAccessMode.LEARNER.toString())) { + request.getSession().setAttribute(AttributeNames.ATTR_MODE, ToolAccessMode.LEARNER); + doLearnerExport(request, response, directoryName, cookies); + } else if (StringUtils.equals(mode, ToolAccessMode.TEACHER.toString())) { + request.getSession().setAttribute(AttributeNames.ATTR_MODE, ToolAccessMode.TEACHER); + doTeacherExport(request, response, directoryName, cookies); + String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + + request.getContextPath(); + writeResponseToFile(basePath + "/pages/export/exportPortfolio.jsp", directoryName, FILENAME, cookies); + + } + } catch (MdlLessonException e) { + logger.error("Cannot perform export for mdlLesson tool."); + } + return FILENAME; + } + + protected String doOfflineExport(HttpServletRequest request, HttpServletResponse response, String directoryName, + Cookie[] cookies) { + if (toolContentID == null && toolSessionID == null) { + logger.error("Tool content Id or and session Id are null. Unable to activity title"); + } else { + if (mdlLessonService == null) { + mdlLessonService = MdlLessonServiceProxy.getMdlLessonService(getServletContext()); + } + + MdlLesson content = null; + if (toolContentID != null) { + content = mdlLessonService.getMdlLessonByContentId(toolContentID); + } else { + MdlLessonSession session = mdlLessonService.getSessionBySessionId(toolSessionID); + if (session != null) + content = session.getMdlLesson(); + } + if (content != null) { + //activityTitle = content.getTitle(); + } + } + return super.doOfflineExport(request, response, directoryName, cookies); + } + + private void doLearnerExport(HttpServletRequest request, HttpServletResponse response, String directoryName, + Cookie[] cookies) throws MdlLessonException { + + logger.debug("doExportLearner: toolContentID:" + toolSessionID); + + // check if toolSessionID available + if (toolSessionID == null) { + String error = "Tool Session ID is missing. Unable to continue"; + logger.error(error); + throw new MdlLessonException(error); + } + + MdlLessonSession mdlLessonSession = mdlLessonService.getSessionBySessionId(toolSessionID); + + MdlLesson mdlLesson = mdlLessonSession.getMdlLesson(); + + try { + exportFileFromExternalServer(request, response, mdlLessonSession.getExtSessionId(), mdlLesson, directoryName + + "/" + FILENAME); + } catch (Exception e) { + logger.error("Could not fetch export file from external servlet", e); + throw new MdlLessonException("Could not fetch export file from external servlet", e); + } + } + + private void doTeacherExport(HttpServletRequest request, HttpServletResponse response, String directoryName, + Cookie[] cookies) throws MdlLessonException { + + logger.debug("doExportTeacher: toolContentID:" + toolContentID); + + // check if toolContentID available + if (toolContentID == null) { + String error = "Tool Content ID is missing. Unable to continue"; + logger.error(error); + throw new MdlLessonException(error); + } + + MdlLesson mdlLesson = mdlLessonService.getMdlLessonByContentId(toolContentID); + MdlLessonDTO mdlLessonDTO = new MdlLessonDTO(mdlLesson); + request.getSession().setAttribute("mdlLessonDTO", mdlLessonDTO); + + Set sessions = mdlLesson.getMdlLessonSessions(); + for (MdlLessonSession session : sessions) { + try { + String fullPath = directoryName + "/" + session.getSessionName(); + exportFileFromExternalServer(request, response, session.getExtSessionId(), mdlLesson, fullPath); + } catch (Exception e) { + logger.error("Could not fetch export file from external servlet", e); + throw new MdlLessonException("Could not fetch export file from external servlet", e); + } + } + + request.getSession().setAttribute("sessions", sessions); + } + + private void exportFileFromExternalServer(HttpServletRequest request, HttpServletResponse response, + Long extToolSessionId, MdlLesson mdlLesson, String fullPath) throws Exception { + String exportPortFolioServletUrl = mdlLessonService.getConfigItem(MdlLessonConfigItem.KEY_EXTERNAL_TOOL_SERVLET) + .getConfigValue(); + + String extUsername = "user"; // setting user to arbitrary values since they are only used to construct the hash + + HashMap params = mdlLessonService.getRequiredExtServletParams(mdlLesson); + params.put("method", IMdlLessonService.EXT_SERVER_METHOD_EXPORT_PORTFOLIO); + params.put("extToolContentID", extToolSessionId.toString()); + + InputStream in = WebUtility.getResponseInputStreamFromExternalServer(exportPortFolioServletUrl, params); + OutputStream out = new BufferedOutputStream(new FileOutputStream(fullPath)); + byte[] buffer = new byte[1024]; + int numRead; + long numWritten = 0; + logger.debug("Getting file..."); + while ((numRead = in.read(buffer)) != -1) { + out.write(buffer, 0, numRead); + logger.debug(new String(buffer)); + numWritten += numRead; + } + logger.debug("Path to mdlLesson export portfolio content: " + fullPath); + out.flush(); + out.close(); + } + +} Index: tool_adapters/moodle/lams_tool_mdllesson/web/403.jsp =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/403.jsp (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/403.jsp (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,25 @@ +<%-- +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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + http://www.gnu.org/licenses/gpl.txt +--%> +<%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=utf-8" %> +<%@ taglib uri="tags-lams" prefix="lams"%> +<%@ taglib uri="tags-core" prefix="c" %> + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/404.jsp =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/404.jsp (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/404.jsp (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,27 @@ +<%-- +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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + http://www.gnu.org/licenses/gpl.txt +--%> +<%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=utf-8" %> +<%@ taglib uri="tags-lams" prefix="lams"%> +<%@ taglib uri="tags-core" prefix="c" %> + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/META-INF/MANIFEST.MF =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/META-INF/MANIFEST.MF (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/META-INF/MANIFEST.MF (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,5 @@ +Implementation-Title: LAMS - MdlLesson Tool +Implementation-Version: 2.1 +Implementation-Vendor: LAMS Foundation (http://lamsfoundation.org) +Class-Path: ./lams.jar + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/fckeditor/tlds/FCKeditor.tld =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/fckeditor/tlds/FCKeditor.tld (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/fckeditor/tlds/FCKeditor.tld (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,215 @@ + + + + + 2.3 + 1.1 + FCKeditor + http://fckeditor.net/tags-fckeditor + FCKeditor taglib + + editor + com.fredck.FCKeditor.tags.FCKeditorTag + JSP + + id + true + true + + + basePath + false + true + + + toolbarSet + false + true + + + width + false + true + + + height + false + true + + + customConfigurationsPath + false + true + + + editorAreaCSS + false + true + + + baseHref + false + true + + + skinPath + false + true + + + pluginsPath + false + true + + + fullPage + false + true + + + debug + false + true + + + autoDetectLanguage + false + true + + + defaultLanguage + false + true + + + contentLangDirection + false + true + + + enableXHTML + false + true + + + enableSourceXHTML + false + true + + + fillEmptyBlocks + false + true + + + formatSource + false + true + + + formatOutput + false + true + + + formatIndentator + false + true + + + geckoUseSPAN + false + true + + + startupFocus + false + true + + + forcePasteAsPlainText + false + true + + + forceSimpleAmpersand + false + true + + + tabSpaces + false + true + + + useBROnCarriageReturn + false + true + + + toolbarStartExpanded + false + true + + + toolbarCanCollapse + false + true + + + fontColors + false + true + + + fontNames + false + true + + + fontSizes + false + true + + + fontFormats + false + true + + + stylesXmlPath + false + true + + + linkBrowserURL + false + true + + + imageBrowserURL + false + true + + + flashBrowserURL + false + true + + + linkUploadURL + false + true + + + imageUploadURL + false + true + + + flashUploadURL + false + true + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/jstl/tlds/c.tld =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/jstl/tlds/c.tld (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/jstl/tlds/c.tld (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,563 @@ + + + + + JSTL 1.1 core library + JSTL core + 1.1 + c + http://java.sun.com/jsp/jstl/core + + + + Provides core validation features for JSTL tags. + + + org.apache.taglibs.standard.tlv.JstlCoreTLV + + + + + + Catches any Throwable that occurs in its body and optionally + exposes it. + + catch + org.apache.taglibs.standard.tag.common.core.CatchTag + JSP + + +Name of the exported scoped variable for the +exception thrown from a nested action. The type of the +scoped variable is the type of the exception thrown. + + var + false + false + + + + + + Simple conditional tag that establishes a context for + mutually exclusive conditional operations, marked by + <when> and <otherwise> + + choose + org.apache.taglibs.standard.tag.common.core.ChooseTag + JSP + + + + + Simple conditional tag, which evalutes its body if the + supplied condition is true and optionally exposes a Boolean + scripting variable representing the evaluation of this condition + + if + org.apache.taglibs.standard.tag.rt.core.IfTag + JSP + + +The test condition that determines whether or +not the body content should be processed. + + test + true + true + boolean + + + +Name of the exported scoped variable for the +resulting value of the test condition. The type +of the scoped variable is Boolean. + + var + false + false + + + +Scope for var. + + scope + false + false + + + + + + Retrieves an absolute or relative URL and exposes its contents + to either the page, a String in 'var', or a Reader in 'varReader'. + + import + org.apache.taglibs.standard.tag.rt.core.ImportTag + org.apache.taglibs.standard.tei.ImportTEI + JSP + + +The URL of the resource to import. + + url + true + true + + + +Name of the exported scoped variable for the +resource's content. The type of the scoped +variable is String. + + var + false + false + + + +Scope for var. + + scope + false + false + + + +Name of the exported scoped variable for the +resource's content. The type of the scoped +variable is Reader. + + varReader + false + false + + + +Name of the context when accessing a relative +URL resource that belongs to a foreign +context. + + context + false + true + + + +Character encoding of the content at the input +resource. + + charEncoding + false + true + + + + + + The basic iteration tag, accepting many different + collection types and supporting subsetting and other + functionality + + forEach + org.apache.taglibs.standard.tag.rt.core.ForEachTag + org.apache.taglibs.standard.tei.ForEachTEI + JSP + + +Collection of items to iterate over. + + items + false + true + java.lang.Object + + + +If items specified: +Iteration begins at the item located at the +specified index. First item of the collection has +index 0. +If items not specified: +Iteration begins with index set at the value +specified. + + begin + false + true + int + + + +If items specified: +Iteration ends at the item located at the +specified index (inclusive). +If items not specified: +Iteration ends when index reaches the value +specified. + + end + false + true + int + + + +Iteration will only process every step items of +the collection, starting with the first one. + + step + false + true + int + + + +Name of the exported scoped variable for the +current item of the iteration. This scoped +variable has nested visibility. Its type depends +on the object of the underlying collection. + + var + false + false + + + +Name of the exported scoped variable for the +status of the iteration. Object exported is of type +javax.servlet.jsp.jstl.core.LoopTagStatus. This scoped variable has nested +visibility. + + varStatus + false + false + + + + + + Iterates over tokens, separated by the supplied delimeters + + forTokens + org.apache.taglibs.standard.tag.rt.core.ForTokensTag + JSP + + +String of tokens to iterate over. + + items + true + true + java.lang.String + + + +The set of delimiters (the characters that +separate the tokens in the string). + + delims + true + true + java.lang.String + + + +Iteration begins at the token located at the +specified index. First token has index 0. + + begin + false + true + int + + + +Iteration ends at the token located at the +specified index (inclusive). + + end + false + true + int + + + +Iteration will only process every step tokens +of the string, starting with the first one. + + step + false + true + int + + + +Name of the exported scoped variable for the +current item of the iteration. This scoped +variable has nested visibility. + + var + false + false + + + +Name of the exported scoped variable for the +status of the iteration. Object exported is of +type +javax.servlet.jsp.jstl.core.LoopTag +Status. This scoped variable has nested +visibility. + + varStatus + false + false + + + + + + Like <%= ... >, but for expressions. + + out + org.apache.taglibs.standard.tag.rt.core.OutTag + JSP + + +Expression to be evaluated. + + value + true + true + + + +Default value if the resulting value is null. + + default + false + true + + + +Determines whether characters <,>,&,'," in the +resulting string should be converted to their +corresponding character entity codes. Default value is +true. + + escapeXml + false + true + + + + + + + Subtag of <choose> that follows <when> tags + and runs only if all of the prior conditions evaluated to + 'false' + + otherwise + org.apache.taglibs.standard.tag.common.core.OtherwiseTag + JSP + + + + + Adds a parameter to a containing 'import' tag's URL. + + param + org.apache.taglibs.standard.tag.rt.core.ParamTag + JSP + + +Name of the query string parameter. + + name + true + true + + + +Value of the parameter. + + value + false + true + + + + + + Redirects to a new URL. + + redirect + org.apache.taglibs.standard.tag.rt.core.RedirectTag + JSP + + +The URL of the resource to redirect to. + + url + false + true + + + +Name of the context when redirecting to a relative URL +resource that belongs to a foreign context. + + context + false + true + + + + + + Removes a scoped variable (from a particular scope, if specified). + + remove + org.apache.taglibs.standard.tag.common.core.RemoveTag + empty + + +Name of the scoped variable to be removed. + + var + true + false + + + +Scope for var. + + scope + false + false + + + + + + Sets the result of an expression evaluation in a 'scope' + + set + org.apache.taglibs.standard.tag.rt.core.SetTag + JSP + + +Name of the exported scoped variable to hold the value +specified in the action. The type of the scoped variable is +whatever type the value expression evaluates to. + + var + false + false + + + +Expression to be evaluated. + + value + false + true + + + +Target object whose property will be set. Must evaluate to +a JavaBeans object with setter property property, or to a +java.util.Map object. + + target + false + true + + + +Name of the property to be set in the target object. + + property + false + true + + + +Scope for var. + + scope + false + false + + + + + + Creates a URL with optional query parameters. + + url + org.apache.taglibs.standard.tag.rt.core.UrlTag + JSP + + +Name of the exported scoped variable for the +processed url. The type of the scoped variable is +String. + + var + false + false + + + +Scope for var. + + scope + false + false + + + +URL to be processed. + + value + false + true + + + +Name of the context when specifying a relative URL +resource that belongs to a foreign context. + + context + false + true + + + + + + Subtag of <choose> that includes its body if its + condition evalutes to 'true' + + when + org.apache.taglibs.standard.tag.rt.core.WhenTag + JSP + + +The test condition that determines whether or not the +body content should be processed. + + test + true + true + boolean + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/jstl/tlds/fmt.tld =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/jstl/tlds/fmt.tld (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/jstl/tlds/fmt.tld (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,671 @@ + + + + + JSTL 1.1 i18n-capable formatting library + JSTL fmt + 1.1 + fmt + http://java.sun.com/jsp/jstl/fmt + + + + Provides core validation features for JSTL tags. + + + org.apache.taglibs.standard.tlv.JstlFmtTLV + + + + + + Sets the request character encoding + + requestEncoding + org.apache.taglibs.standard.tag.rt.fmt.RequestEncodingTag + empty + + +Name of character encoding to be applied when +decoding request parameters. + + value + false + true + + + + + + Stores the given locale in the locale configuration variable + + setLocale + org.apache.taglibs.standard.tag.rt.fmt.SetLocaleTag + empty + + +A String value is interpreted as the +printable representation of a locale, which +must contain a two-letter (lower-case) +language code (as defined by ISO-639), +and may contain a two-letter (upper-case) +country code (as defined by ISO-3166). +Language and country codes must be +separated by hyphen (-) or underscore +(_). + + value + true + true + + + +Vendor- or browser-specific variant. +See the java.util.Locale javadocs for +more information on variants. + + variant + false + true + + + +Scope of the locale configuration variable. + + scope + false + false + + + + + + Specifies the time zone for any time formatting or parsing actions + nested in its body + + timeZone + org.apache.taglibs.standard.tag.rt.fmt.TimeZoneTag + JSP + + +The time zone. A String value is interpreted as +a time zone ID. This may be one of the time zone +IDs supported by the Java platform (such as +"America/Los_Angeles") or a custom time zone +ID (such as "GMT-8"). See +java.util.TimeZone for more information on +supported time zone formats. + + value + true + true + + + + + + Stores the given time zone in the time zone configuration variable + + setTimeZone + org.apache.taglibs.standard.tag.rt.fmt.SetTimeZoneTag + empty + + +The time zone. A String value is interpreted as +a time zone ID. This may be one of the time zone +IDs supported by the Java platform (such as +"America/Los_Angeles") or a custom time zone +ID (such as "GMT-8"). See java.util.TimeZone for +more information on supported time zone +formats. + + value + true + true + + + +Name of the exported scoped variable which +stores the time zone of type +java.util.TimeZone. + + var + false + false + + + +Scope of var or the time zone configuration +variable. + + scope + false + false + + + + + + Loads a resource bundle to be used by its tag body + + bundle + org.apache.taglibs.standard.tag.rt.fmt.BundleTag + JSP + + +Resource bundle base name. This is the bundle's +fully-qualified resource name, which has the same +form as a fully-qualified class name, that is, it uses +"." as the package component separator and does not +have any file type (such as ".class" or ".properties") +suffix. + + basename + true + true + + + +Prefix to be prepended to the value of the message +key of any nested <fmt:message> action. + + prefix + false + true + + + + + + Loads a resource bundle and stores it in the named scoped variable or + the bundle configuration variable + + setBundle + org.apache.taglibs.standard.tag.rt.fmt.SetBundleTag + empty + + +Resource bundle base name. This is the bundle's +fully-qualified resource name, which has the same +form as a fully-qualified class name, that is, it uses +"." as the package component separator and does not +have any file type (such as ".class" or ".properties") +suffix. + + basename + true + true + + + +Name of the exported scoped variable which stores +the i18n localization context of type +javax.servlet.jsp.jstl.fmt.LocalizationC +ontext. + + var + false + false + + + +Scope of var or the localization context +configuration variable. + + scope + false + false + + + + + + Maps key to localized message and performs parametric replacement + + message + org.apache.taglibs.standard.tag.rt.fmt.MessageTag + JSP + + +Message key to be looked up. + + key + false + true + + + +Localization context in whose resource +bundle the message key is looked up. + + bundle + false + true + + + +Name of the exported scoped variable +which stores the localized message. + + var + false + false + + + +Scope of var. + + scope + false + false + + + + + + Supplies an argument for parametric replacement to a containing + <message> tag + + param + org.apache.taglibs.standard.tag.rt.fmt.ParamTag + JSP + + +Argument used for parametric replacement. + + value + false + true + + + + + + Formats a numeric value as a number, currency, or percentage + + formatNumber + org.apache.taglibs.standard.tag.rt.fmt.FormatNumberTag + JSP + + +Numeric value to be formatted. + + value + false + true + + + +Specifies whether the value is to be +formatted as number, currency, or +percentage. + + type + false + true + + + +Custom formatting pattern. + + pattern + false + true + + + +ISO 4217 currency code. Applied only +when formatting currencies (i.e. if type is +equal to "currency"); ignored otherwise. + + currencyCode + false + true + + + +Currency symbol. Applied only when +formatting currencies (i.e. if type is equal +to "currency"); ignored otherwise. + + currencySymbol + false + true + + + +Specifies whether the formatted output +will contain any grouping separators. + + groupingUsed + false + true + + + +Maximum number of digits in the integer +portion of the formatted output. + + maxIntegerDigits + false + true + + + +Minimum number of digits in the integer +portion of the formatted output. + + minIntegerDigits + false + true + + + +Maximum number of digits in the +fractional portion of the formatted output. + + maxFractionDigits + false + true + + + +Minimum number of digits in the +fractional portion of the formatted output. + + minFractionDigits + false + true + + + +Name of the exported scoped variable +which stores the formatted result as a +String. + + var + false + false + + + +Scope of var. + + scope + false + false + + + + + + Parses the string representation of a number, currency, or percentage + + parseNumber + org.apache.taglibs.standard.tag.rt.fmt.ParseNumberTag + JSP + + +String to be parsed. + + value + false + true + + + +Specifies whether the string in the value +attribute should be parsed as a number, +currency, or percentage. + + type + false + true + + + +Custom formatting pattern that determines +how the string in the value attribute is to be +parsed. + + pattern + false + true + + + +Locale whose default formatting pattern (for +numbers, currencies, or percentages, +respectively) is to be used during the parse +operation, or to which the pattern specified +via the pattern attribute (if present) is +applied. + + parseLocale + false + true + + + +Specifies whether just the integer portion of +the given value should be parsed. + + integerOnly + false + true + + + +Name of the exported scoped variable which +stores the parsed result (of type +java.lang.Number). + + var + false + false + + + +Scope of var. + + scope + false + false + + + + + + Formats a date and/or time using the supplied styles and pattern + + formatDate + org.apache.taglibs.standard.tag.rt.fmt.FormatDateTag + empty + + +Date and/or time to be formatted. + + value + true + true + + + +Specifies whether the time, the date, or both +the time and date components of the given +date are to be formatted. + + type + false + true + + + +Predefined formatting style for dates. Follows +the semantics defined in class +java.text.DateFormat. Applied only +when formatting a date or both a date and +time (i.e. if type is missing or is equal to +"date" or "both"); ignored otherwise. + + dateStyle + false + true + + + +Predefined formatting style for times. Follows +the semantics defined in class +java.text.DateFormat. Applied only +when formatting a time or both a date and +time (i.e. if type is equal to "time" or "both"); +ignored otherwise. + + timeStyle + false + true + + + +Custom formatting style for dates and times. + + pattern + false + true + + + +Time zone in which to represent the formatted +time. + + timeZone + false + true + + + +Name of the exported scoped variable which +stores the formatted result as a String. + + var + false + false + + + +Scope of var. + + scope + false + false + + + + + + Parses the string representation of a date and/or time + + parseDate + org.apache.taglibs.standard.tag.rt.fmt.ParseDateTag + JSP + + +Date string to be parsed. + + value + false + true + + + +Specifies whether the date string in the +value attribute is supposed to contain a +time, a date, or both. + + type + false + true + + + +Predefined formatting style for days +which determines how the date +component of the date string is to be +parsed. Applied only when formatting a +date or both a date and time (i.e. if type +is missing or is equal to "date" or "both"); +ignored otherwise. + + dateStyle + false + true + + + +Predefined formatting styles for times +which determines how the time +component in the date string is to be +parsed. Applied only when formatting a +time or both a date and time (i.e. if type +is equal to "time" or "both"); ignored +otherwise. + + timeStyle + false + true + + + +Custom formatting pattern which +determines how the date string is to be +parsed. + + pattern + false + true + + + +Time zone in which to interpret any time +information in the date string. + + timeZone + false + true + + + +Locale whose predefined formatting styles +for dates and times are to be used during +the parse operation, or to which the +pattern specified via the pattern +attribute (if present) is applied. + + parseLocale + false + true + + + +Name of the exported scoped variable in +which the parsing result (of type +java.util.Date) is stored. + + var + false + false + + + +Scope of var. + + scope + false + false + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/jstl/tlds/fn.tld =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/jstl/tlds/fn.tld (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/jstl/tlds/fn.tld (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,207 @@ + + + + + JSTL 1.1 functions library + JSTL functions + 1.1 + fn + http://java.sun.com/jsp/jstl/functions + + + + Tests if an input string contains the specified substring. + + contains + org.apache.taglibs.standard.functions.Functions + boolean contains(java.lang.String, java.lang.String) + + <c:if test="${fn:contains(name, searchString)}"> + + + + + + Tests if an input string contains the specified substring in a case insensitive way. + + containsIgnoreCase + org.apache.taglibs.standard.functions.Functions + boolean containsIgnoreCase(java.lang.String, java.lang.String) + + <c:if test="${fn:containsIgnoreCase(name, searchString)}"> + + + + + + Tests if an input string ends with the specified suffix. + + endsWith + org.apache.taglibs.standard.functions.Functions + boolean endsWith(java.lang.String, java.lang.String) + + <c:if test="${fn:endsWith(filename, ".txt")}"> + + + + + + Escapes characters that could be interpreted as XML markup. + + escapeXml + org.apache.taglibs.standard.functions.Functions + java.lang.String escapeXml(java.lang.String) + + ${fn:escapeXml(param:info)} + + + + + + Returns the index withing a string of the first occurrence of a specified substring. + + indexOf + org.apache.taglibs.standard.functions.Functions + int indexOf(java.lang.String, java.lang.String) + + ${fn:indexOf(name, "-")} + + + + + + Joins all elements of an array into a string. + + join + org.apache.taglibs.standard.functions.Functions + java.lang.String join(java.lang.String[], java.lang.String) + + ${fn:join(array, ";")} + + + + + + Returns the number of items in a collection, or the number of characters in a string. + + length + org.apache.taglibs.standard.functions.Functions + int length(java.lang.Object) + + You have ${fn:length(shoppingCart.products)} in your shopping cart. + + + + + + Returns a string resulting from replacing in an input string all occurrences + of a "before" string into an "after" substring. + + replace + org.apache.taglibs.standard.functions.Functions + java.lang.String replace(java.lang.String, java.lang.String, java.lang.String) + + ${fn:replace(text, "-", "•")} + + + + + + Splits a string into an array of substrings. + + split + org.apache.taglibs.standard.functions.Functions + java.lang.String[] split(java.lang.String, java.lang.String) + + ${fn:split(customerNames, ";")} + + + + + + Tests if an input string starts with the specified prefix. + + startsWith + org.apache.taglibs.standard.functions.Functions + boolean startsWith(java.lang.String, java.lang.String) + + <c:if test="${fn:startsWith(product.id, "100-")}"> + + + + + + Returns a subset of a string. + + substring + org.apache.taglibs.standard.functions.Functions + java.lang.String substring(java.lang.String, int, int) + + P.O. Box: ${fn:substring(zip, 6, -1)} + + + + + + Returns a subset of a string following a specific substring. + + substringAfter + org.apache.taglibs.standard.functions.Functions + java.lang.String substringAfter(java.lang.String, java.lang.String) + + P.O. Box: ${fn:substringAfter(zip, "-")} + + + + + + Returns a subset of a string before a specific substring. + + substringBefore + org.apache.taglibs.standard.functions.Functions + java.lang.String substringBefore(java.lang.String, java.lang.String) + + Zip (without P.O. Box): ${fn:substringBefore(zip, "-")} + + + + + + Converts all of the characters of a string to lower case. + + toLowerCase + org.apache.taglibs.standard.functions.Functions + java.lang.String toLowerCase(java.lang.String) + + Product name: ${fn.toLowerCase(product.name)} + + + + + + Converts all of the characters of a string to upper case. + + toUpperCase + org.apache.taglibs.standard.functions.Functions + java.lang.String toUpperCase(java.lang.String) + + Product name: ${fn.UpperCase(product.name)} + + + + + + Removes white spaces from both ends of a string. + + trim + org.apache.taglibs.standard.functions.Functions + java.lang.String trim(java.lang.String) + + Name: ${fn.trim(name)} + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/jstl/tlds/permittedTaglibs.tld =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/jstl/tlds/permittedTaglibs.tld (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/jstl/tlds/permittedTaglibs.tld (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,34 @@ + + + + + Restricts JSP pages to the JSTL tag libraries + + permittedTaglibs + 1.1 + permittedTaglibs + http://jakarta.apache.org/taglibs/standard/permittedTaglibs + + + + javax.servlet.jsp.jstl.tlv.PermittedTaglibsTLV + + + + Whitespace-separated list of taglib URIs to permit. This example + TLD for the Standard Taglib allows only JSTL 'el' taglibs to be + imported. + + permittedTaglibs + + http://java.sun.com/jsp/jstl/core + http://java.sun.com/jsp/jstl/fmt + http://java.sun.com/jsp/jstl/sql + http://java.sun.com/jsp/jstl/xml + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/jstl/tlds/scriptfree.tld =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/jstl/tlds/scriptfree.tld (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/jstl/tlds/scriptfree.tld (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,51 @@ + + + + + Validates JSP pages to prohibit use of scripting elements. + + 1.1 + scriptfree + http://jakarta.apache.org/taglibs/standard/scriptfree + + + + Validates prohibitions against scripting elements. + + + javax.servlet.jsp.jstl.tlv.ScriptFreeTLV + + + + Controls whether or not declarations are considered valid. + + allowDeclarations + false + + + + Controls whether or not scriptlets are considered valid. + + allowScriptlets + false + + + + Controls whether or not top-level expressions are considered valid. + + allowExpressions + false + + + + Controls whether or not expressions used to supply request-time + attribute values are considered valid. + + allowRTExpressions + false + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/jstl/tlds/x.tld =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/jstl/tlds/x.tld (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/jstl/tlds/x.tld (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,448 @@ + + + + + JSTL 1.1 XML library + JSTL XML + 1.1 + x + http://java.sun.com/jsp/jstl/xml + + + + Provides validation features for JSTL XML tags. + + + org.apache.taglibs.standard.tlv.JstlXmlTLV + + + + + + Simple conditional tag that establishes a context for + mutually exclusive conditional operations, marked by + <when> and <otherwise> + + choose + org.apache.taglibs.standard.tag.common.core.ChooseTag + JSP + + + + + Like <%= ... >, but for XPath expressions. + + out + org.apache.taglibs.standard.tag.rt.xml.ExprTag + empty + + +XPath expression to be evaluated. + + select + true + false + + + +Determines whether characters <,>,&,'," in the +resulting string should be converted to their +corresponding character entity codes. Default +value is true. + + escapeXml + false + true + + + + + + XML conditional tag, which evalutes its body if the + supplied XPath expression evalutes to 'true' as a boolean + + if + org.apache.taglibs.standard.tag.common.xml.IfTag + JSP + + +The test condition that tells whether or not the +body content should be processed. + + select + true + false + + + +Name of the exported scoped variable for the +resulting value of the test condition. The type +of the scoped variable is Boolean. + + var + false + false + + + +Scope for var. + + scope + false + false + + + + + + XML iteration tag. + + forEach + org.apache.taglibs.standard.tag.common.xml.ForEachTag + JSP + + +Name of the exported scoped variable for the +current item of the iteration. This scoped variable +has nested visibility. Its type depends on the +result of the XPath expression in the select +attribute. + + var + false + false + + + +XPath expression to be evaluated. + + select + true + false + + + +Iteration begins at the item located at the +specified index. First item of the collection has +index 0. + + begin + false + true + int + + + +Iteration ends at the item located at the specified +index (inclusive). + + end + false + true + int + + + +Iteration will only process every step items of +the collection, starting with the first one. + + step + false + true + int + + + +Name of the exported scoped variable for the +status of the iteration. Object exported is of type +javax.servlet.jsp.jstl.core.LoopTagStatus. This scoped variable has nested visibility. + + varStatus + false + false + + + + + + Subtag of <choose> that follows <when> tags + and runs only if all of the prior conditions evaluated to + 'false' + + otherwise + org.apache.taglibs.standard.tag.common.core.OtherwiseTag + JSP + + + + + Adds a parameter to a containing 'transform' tag's Transformer + + param + org.apache.taglibs.standard.tag.rt.xml.ParamTag + JSP + + +Name of the transformation parameter. + + name + true + true + + + +Value of the parameter. + + value + false + true + + + + + + Parses XML content from 'source' attribute or 'body' + + parse + org.apache.taglibs.standard.tag.rt.xml.ParseTag + org.apache.taglibs.standard.tei.XmlParseTEI + JSP + + +Name of the exported scoped variable for +the parsed XML document. The type of the +scoped variable is implementation +dependent. + + var + false + false + + + +Name of the exported scoped variable for +the parsed XML document. The type of the +scoped variable is +org.w3c.dom.Document. + + varDom + false + false + + + +Scope for var. + + scope + false + false + + + +Scope for varDom. + + scopeDom + false + false + + + +Deprecated. Use attribute 'doc' instead. + + xml + false + true + + + +Source XML document to be parsed. + + doc + false + true + + + +The system identifier (URI) for parsing the +XML document. + + systemId + false + true + + + +Filter to be applied to the source +document. + + filter + false + true + + + + + + Saves the result of an XPath expression evaluation in a 'scope' + + set + org.apache.taglibs.standard.tag.common.xml.SetTag + empty + + +Name of the exported scoped variable to hold +the value specified in the action. The type of the +scoped variable is whatever type the select +expression evaluates to. + + var + true + false + + + +XPath expression to be evaluated. + + select + false + false + + + +Scope for var. + + scope + false + false + + + + + + Conducts a transformation given a source XML document + and an XSLT stylesheet + + transform + org.apache.taglibs.standard.tag.rt.xml.TransformTag + org.apache.taglibs.standard.tei.XmlTransformTEI + JSP + + +Name of the exported +scoped variable for the +transformed XML +document. The type of the +scoped variable is +org.w3c.dom.Document. + + var + false + false + + + +Scope for var. + + scope + false + false + + + +Result +Object that captures or +processes the transformation +result. + + result + false + true + + + +Deprecated. Use attribute +'doc' instead. + + xml + false + true + + + +Source XML document to be +transformed. (If exported by +<x:set>, it must correspond +to a well-formed XML +document, not a partial +document.) + + doc + false + true + + + +Deprecated. Use attribute +'docSystemId' instead. + + xmlSystemId + false + true + + + +The system identifier (URI) +for parsing the XML +document. + + docSystemId + false + true + + + +javax.xml.transform.Source +Transformation stylesheet as +a String, Reader, or +Source object. + + xslt + false + true + + + +The system identifier (URI) +for parsing the XSLT +stylesheet. + + xsltSystemId + false + true + + + + + + Subtag of <choose> that includes its body if its + expression evalutes to 'true' + + when + org.apache.taglibs.standard.tag.common.xml.WhenTag + JSP + + +The test condition that tells whether or +not the body content should be +processed + + select + true + false + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/lams.tld =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/lams.tld (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/lams.tld (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,508 @@ + + + + + 1.0 + lams + + LAMSTags + + + + + Output the basic URL for the current webapp. e.g. http://server/lams/tool/nb11/ + Base URL for the current web app + + + WebAppURL + org.lamsfoundation.lams.web.tag.WebAppURLTag + empty + + + + + Output a random number for the learner and passon flash movies to communicate directly. + generate unique ID + + + generateID + org.lamsfoundation.lams.web.tag.GenerateIDTag + empty + + + Output a random number for the learner and passon flash movies to communicate directly. + id + false + + true + + + + + + + Get the configuration value for the specified key + Configuration value + + + Configuration + org.lamsfoundation.lams.web.tag.ConfigurationTag + empty + + + Get the configuration value for the specified key + key + false + + true + + + + + + + Output the Server URL as defined in the lams.xml configuration file. + LAMS URL + + + LAMSURL + org.lamsfoundation.lams.web.tag.LAMSURLTag + empty + + + + + Render html tag with direction and language + Render html tag with direction and language + + + html + org.lamsfoundation.lams.web.tag.HtmlTag + JSP + + + Render html tag with direction and language + xhtml + false + + true + + + + + + + Converts text from \n or \r\n to <BR> before rendering + Converts text from \n or \r\n to <BR> before rendering + + + out + org.lamsfoundation.lams.web.tag.MultiLinesOutputTag + empty + + + Converts text from \n or \r\n to <BR> before rendering + value + true + + true + + + + Converts text from \n or \r\n to <BR> before rendering + escapeHtml + false + + true + + + + + + + Help tag + Help tag + + + help + org.lamsfoundation.lams.web.tag.HelpTag + empty + + + Help tag + module + false + + true + + + + Help tag + toolSignature + false + + true + + + + Help tag + page + false + + true + + + + Help tag + style + false + + true + + + + + + + Converts role name into form usable as message resources key + Converts role name into form usable as message resources key + + + role + org.lamsfoundation.lams.web.tag.RoleTag + empty + + + Converts role name into form usable as message resources key + role + true + + true + + + + + + + Output stylesheet based on the user preferences. + User's chosen stylesheet + + + css + org.lamsfoundation.lams.web.tag.CssTag + empty + + + Output stylesheet based on the user preferences. + localLinkPath + false + + true + + + + Output stylesheet based on the user preferences. + style + false + + true + + + + + + + Output details from the shared session UserDTO object + user details + + + user + org.lamsfoundation.lams.web.tag.UserTag + empty + + + Output details from the shared session UserDTO object + property + true + + true + + + + + + + STRUTS-textarea + org.lamsfoundation.lams.web.tag.MultiLinesTextareaTag + empty + + accesskey + false + true + + + alt + false + true + + + altKey + false + true + + + bundle + false + true + + + cols + false + true + + + disabled + false + true + + + errorKey + false + true + + + errorStyle + false + true + + + errorStyleClass + false + true + + + errorStyleId + false + true + + + indexed + false + true + + + name + false + true + + + onblur + false + true + + + onchange + false + true + + + onclick + false + true + + + ondblclick + false + true + + + onfocus + false + true + + + onkeydown + false + true + + + onkeypress + false + true + + + onkeyup + false + true + + + onmousedown + false + true + + + onmousemove + false + true + + + onmouseout + false + true + + + onmouseover + false + true + + + onmouseup + false + true + + + property + true + true + + + readonly + false + true + + + rows + false + true + + + style + false + true + + + styleClass + false + true + + + styleId + false + true + + + tabindex + false + true + + + title + false + true + + + titleKey + false + true + + + value + false + true + + + + Tab + /WEB-INF/tags/Tab.tag + + + Tabs + /WEB-INF/tags/Tabs.tag + + + TabBody + /WEB-INF/tags/TabBody.tag + + + TabName + /WEB-INF/tags/TabName.tag + + + FCKEditor + /WEB-INF/tags/FCKEditor.tag + + + AuthoringButton + /WEB-INF/tags/AuthoringButton.tag + + + headItems + /WEB-INF/tags/headItems.tag + + + Passon + /WEB-INF/tags/Passon.tag + + + ExportPortOutput + /WEB-INF/tags/ExportPortOutput.tag + + + Date + /WEB-INF/tags/Date.tag + + + DefineLater + /WEB-INF/tags/DefineLater.tag + + + ImgButtonWrapper + /WEB-INF/tags/ImgButtonWrapper.tag + + + textarea + org.lamsfoundation.lams.web.tag.LAMSMultiLinesTextareaTag + JSP + true + + Render text exactly same as original input, which even won't escape the input HTML tag. + + + + + name + true + true + + + + + id + false + true + + + + + onchange + false + true + + + + head + /WEB-INF/tags/Head.tag + + + ProgressOutput + /WEB-INF/tags/ProgressOutput.tag + + + LearnerFlashEnabled + /WEB-INF/tags/LearnerFlashEnabled.tag + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/struts/struts-config.xml =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/struts/struts-config.xml (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/struts/struts-config.xml (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/struts/tiles-defs.xml =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/struts/tiles-defs.xml (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/struts/tiles-defs.xml (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/struts/tlds/struts-bean.tld =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/struts/tlds/struts-bean.tld (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/struts/tlds/struts-bean.tld (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,382 @@ + + + + + + + + + + +1.2 +1.1 +bean +http://struts.apache.org/tags-bean + +cookie +org.apache.struts.taglib.bean.CookieTag +org.apache.struts.taglib.bean.CookieTei +empty + +id +true +false + + +multiple +false +true + + +name +true +true + + +value +false +true + + + +define +org.apache.struts.taglib.bean.DefineTag +org.apache.struts.taglib.bean.DefineTei +JSP + +id +true +false + + +name +false +true + + +property +false +true + + +scope +false +true + + +toScope +false +true + + +type +false +true + + +value +false +true + + + +header +org.apache.struts.taglib.bean.HeaderTag +org.apache.struts.taglib.bean.HeaderTei +empty + +id +true +false + + +multiple +false +true + + +name +true +true + + +value +false +true + + + +include +org.apache.struts.taglib.bean.IncludeTag +org.apache.struts.taglib.bean.IncludeTei +empty + +anchor +false +true + + +forward +false +true + + +href +false +true + + +id +true +false + + +name +false +true + + +page +false +true + + +transaction +false +true + + + +message +org.apache.struts.taglib.bean.MessageTag +empty + +arg0 +false +true + + +arg1 +false +true + + +arg2 +false +true + + +arg3 +false +true + + +arg4 +false +true + + +bundle +false +true + + +key +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + +scope +false +true + + + +page +org.apache.struts.taglib.bean.PageTag +org.apache.struts.taglib.bean.PageTei +empty + +id +true +false + + +property +true +true + + + +parameter +org.apache.struts.taglib.bean.ParameterTag +org.apache.struts.taglib.bean.ParameterTei +empty + +id +true +false + + +multiple +false +true + + +name +true +true + + +value +false +true + + + +resource +org.apache.struts.taglib.bean.ResourceTag +org.apache.struts.taglib.bean.ResourceTei +empty + +id +true +false + + +input +false +true + + +name +true +true + + + +size +org.apache.struts.taglib.bean.SizeTag +org.apache.struts.taglib.bean.SizeTei +empty + +collection +false +true + + +id +true +false + + +name +false +true + + +property +false +true + + +scope +false +true + + + +struts +org.apache.struts.taglib.bean.StrutsTag +org.apache.struts.taglib.bean.StrutsTei +empty + +id +true +false + + +formBean +false +true + + +forward +false +true + + +mapping +false +true + + + +write +org.apache.struts.taglib.bean.WriteTag +empty + +bundle +false +true + + +filter +false +true + + +format +false +true + + +formatKey +false +true + + +ignore +false +true + + +locale +false +true + + +name +true +true + + +property +false +true + + +scope +false +true + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/struts/tlds/struts-html.tld =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/struts/tlds/struts-html.tld (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/struts/tlds/struts-html.tld (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,3302 @@ + + + + + + + + + + +1.2 +1.1 +html +http://struts.apache.org/tags-html + +base +org.apache.struts.taglib.html.BaseTag +empty + +target +false +true + + +server +false +true + + + +button +org.apache.struts.taglib.html.ButtonTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +indexed +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +cancel +org.apache.struts.taglib.html.CancelTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +checkbox +org.apache.struts.taglib.html.CheckboxTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +errors +org.apache.struts.taglib.html.ErrorsTag +empty + +bundle +false +true + + +footer +false +true + + +header +false +true + + +locale +false +true + + +name +false +true + + +prefix +false +true + + +property +false +true + + +suffix +false +true + + + +file +org.apache.struts.taglib.html.FileTag + +accesskey +false +true + + +accept +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +size +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +form +org.apache.struts.taglib.html.FormTag +JSP + +action +true +true + + +acceptCharset +false +true + + +disabled +false +true + + +enctype +false +true + + +focus +false +true + + +focusIndex +false +true + + +method +false +true + + +onreset +false +true + + +onsubmit +false +true + + +readonly +false +true + + +scriptLanguage +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +target +false +true + + + +frame +org.apache.struts.taglib.html.FrameTag + +bundle +false +true + + +action +false +true + + +module +false +true + + +anchor +false +true + + +forward +false +true + + +frameborder +false +true + + +frameName +false +true + + +href +false +true + + +longdesc +false +true + + +marginheight +false +true + + +marginwidth +false +true + + +name +false +true + + +noresize +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +scrolling +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +title +false +true + + +titleKey +false +true + + +transaction +false +true + + + +hidden +org.apache.struts.taglib.html.HiddenTag +empty + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + +write +false +true + + + +html +org.apache.struts.taglib.html.HtmlTag +JSP + +lang +false +true + + +locale +false +true + + +xhtml +false +true + + + +image +org.apache.struts.taglib.html.ImageTag + +accesskey +false +true + + +align +false +true + + +alt +false +true + + +altKey +false +true + + +border +false +true + + +bundle +false +true + + +disabled +false +true + + +indexed +false +true + + +locale +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +page +false +true + + +pageKey +false +true + + +property +false +true + + +src +false +true + + +srcKey +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +img +org.apache.struts.taglib.html.ImgTag +empty + +align +false +true + + +alt +false +true + + +altKey +false +true + + +border +false +true + + +bundle +false +true + + +contextRelative +false +true + + +height +false +true + + +hspace +false +true + + +imageName +false +true + + +ismap +false +true + + +locale +false +true + + +lowsrc +false +true + + +name +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +paramId +false +true + + +page +false +true + + +pageKey +false +true + + +action +false +true + + +module +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +src +false +true + + +srcKey +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +title +false +true + + +titleKey +false +true + + +useLocalEncoding +false +true + + +usemap +false +true + + +vspace +false +true + + +width +false +true + + + +javascript +org.apache.struts.taglib.html.JavascriptValidatorTag +empty + +cdata +false +true + + +dynamicJavascript +false +false + + +formName +false +true + + +method +false +true + + +page +false +true + + +scriptLanguage +false +true + + +src +false +true + + +staticJavascript +false +false + + +htmlComment +false +true + + +bundle +false +true + + + +link +org.apache.struts.taglib.html.LinkTag + +accesskey +false +true + + +action +false +true + + +module +false +true + + +anchor +false +true + + +forward +false +true + + +href +false +true + + +indexed +false +true + + +indexId +false +true + + +bundle +false +true + + +linkName +false +true + + +name +false +true + + +onblur +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +target +false +true + + +title +false +true + + +titleKey +false +true + + +transaction +false +true + + +useLocalEncoding +false +true + + + +messages +org.apache.struts.taglib.html.MessagesTag +org.apache.struts.taglib.html.MessagesTei +JSP + +id +true +false + + +bundle +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + +header +false +true + + +footer +false +true + + +message +false +true + + + +multibox +org.apache.struts.taglib.html.MultiboxTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +option +org.apache.struts.taglib.html.OptionTag + +bundle +false +true + + +disabled +false +true + + +key +false +true + + +locale +false +true + + +style +false +true + + +styleId +false +true + + +styleClass +false +true + + +value +true +true + + + +options +org.apache.struts.taglib.html.OptionsTag +empty + +collection +false +true + + +filter +false +true + + +labelName +false +true + + +labelProperty +false +true + + +name +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + + +optionsCollection +org.apache.struts.taglib.html.OptionsCollectionTag +empty + +filter +false +true + + +label +false +true + + +name +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +value +false +true + + + +password +org.apache.struts.taglib.html.PasswordTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +redisplay +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +size +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +radio +org.apache.struts.taglib.html.RadioTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +property +true +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +true +true + + +idName +false +true + + + +reset +org.apache.struts.taglib.html.ResetTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +rewrite +org.apache.struts.taglib.html.RewriteTag +empty + +action +false +true + + +module +false +true + + +anchor +false +true + + +forward +false +true + + +href +false +true + + +name +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +transaction +false +true + + +useLocalEncoding +false +true + + + +select +org.apache.struts.taglib.html.SelectTag +JSP + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +multiple +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +size +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +submit +org.apache.struts.taglib.html.SubmitTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +indexed +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +text +org.apache.struts.taglib.html.TextTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +size +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +textarea +org.apache.struts.taglib.html.TextareaTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +cols +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +rows +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +xhtml +org.apache.struts.taglib.html.XhtmlTag +empty + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/struts/tlds/struts-logic.tld =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/struts/tlds/struts-logic.tld (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/struts/tlds/struts-logic.tld (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,652 @@ + + + + + + + + + +1.2 +1.1 +logic +http://struts.apache.org/tags-logic + +empty +org.apache.struts.taglib.logic.EmptyTag +JSP + +name +false +true + + +property +false +true + + +scope +false +true + + + +equal +org.apache.struts.taglib.logic.EqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +forward +org.apache.struts.taglib.logic.ForwardTag +empty + +name +true +true + + + +greaterEqual +org.apache.struts.taglib.logic.GreaterEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +greaterThan +org.apache.struts.taglib.logic.GreaterThanTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +iterate +org.apache.struts.taglib.logic.IterateTag +org.apache.struts.taglib.logic.IterateTei +JSP + +collection +false +true + + +id +true +false + + +indexId +false +false + + +length +false +true + + +name +false +true + + +offset +false +true + + +property +false +true + + +scope +false +true + + +type +false +true + + + +lessEqual +org.apache.struts.taglib.logic.LessEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +lessThan +org.apache.struts.taglib.logic.LessThanTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +match +org.apache.struts.taglib.logic.MatchTag +JSP + +cookie +false +true + + +header +false +true + + +location +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +messagesNotPresent +org.apache.struts.taglib.logic.MessagesNotPresentTag +JSP + +name +false +true + + +property +false +true + + +message +false +true + + + +messagesPresent +org.apache.struts.taglib.logic.MessagesPresentTag +JSP + +name +false +true + + +property +false +true + + +message +false +true + + + +notEmpty +org.apache.struts.taglib.logic.NotEmptyTag +JSP + +name +false +true + + +property +false +true + + +scope +false +true + + + +notEqual +org.apache.struts.taglib.logic.NotEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +notMatch +org.apache.struts.taglib.logic.NotMatchTag +JSP + +cookie +false +true + + +header +false +true + + +location +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +notPresent +org.apache.struts.taglib.logic.NotPresentTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +role +false +true + + +scope +false +true + + +user +false +true + + + +present +org.apache.struts.taglib.logic.PresentTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +role +false +true + + +scope +false +true + + +user +false +true + + + +redirect +org.apache.struts.taglib.logic.RedirectTag + +action +false +true + + +anchor +false +true + + +forward +false +true + + +href +false +true + + +name +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +transaction +false +true + + +useLocalEncoding +false +true + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/struts/tlds/struts-nested.tld =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/struts/tlds/struts-nested.tld (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/struts/tlds/struts-nested.tld (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,3171 @@ + + + + + + + + + +1.2 +1.1 +nested +http://struts.apache.org/tags-nested + +nest +org.apache.struts.taglib.nested.NestedPropertyTag +JSP + +property +false +true + + + +writeNesting +org.apache.struts.taglib.nested.NestedWriteNestingTag +org.apache.struts.taglib.nested.NestedWriteNestingTei +JSP + +property +false +true + + +id +false +true + + +filter +false +true + + + +root +org.apache.struts.taglib.nested.NestedRootTag +JSP + +name +false +true + + + +define +org.apache.struts.taglib.nested.bean.NestedDefineTag +org.apache.struts.taglib.nested.bean.NestedDefineTei +empty + +id +true +true + + +name +false +true + + +property +false +true + + +scope +false +true + + +toScope +false +true + + +type +false +true + + +value +false +true + + + +message +org.apache.struts.taglib.nested.bean.NestedMessageTag +empty + +arg0 +false +true + + +arg1 +false +true + + +arg2 +false +true + + +arg3 +false +true + + +arg4 +false +true + + +bundle +false +true + + +key +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + +scope +false +true + + + +size +org.apache.struts.taglib.nested.bean.NestedSizeTag +org.apache.struts.taglib.bean.SizeTei +empty + +collection +false +true + + +id +true +true + + +name +false +true + + +property +false +true + + +scope +false +true + + + +write +org.apache.struts.taglib.nested.bean.NestedWriteTag +empty + +bundle +false +true + + +filter +false +true + + +format +false +true + + +formatKey +false +true + + +ignore +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + +scope +false +true + + + +checkbox +org.apache.struts.taglib.nested.html.NestedCheckboxTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +errors +org.apache.struts.taglib.nested.html.NestedErrorsTag +empty + +bundle +false +true + + +footer +false +true + + +header +false +true + + +locale +false +true + + +name +false +true + + +prefix +false +true + + +property +false +true + + +suffix +false +true + + + +file +org.apache.struts.taglib.nested.html.NestedFileTag + +accesskey +false +true + + +accept +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +size +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +form +org.apache.struts.taglib.nested.html.NestedFormTag +JSP + +action +true +true + + +acceptCharset +false +true + + +disabled +false +true + + +enctype +false +true + + +focus +false +true + + +focusIndex +false +true + + +method +false +true + + +onreset +false +true + + +onsubmit +false +true + + +readonly +false +true + + +scriptLanguage +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +target +false +true + + + +hidden +org.apache.struts.taglib.nested.html.NestedHiddenTag + +alt +false +true + + +altKey +false +true + + +indexed +false +true + + +name +false +true + + +property +true +true + + +title +false +true + + +titleKey +false +true + + +styleClass +false +true + + +styleId +false +true + + +value +false +true + + +write +false +true + + + +image +org.apache.struts.taglib.nested.html.NestedImageTag + +accesskey +false +true + + +align +false +true + + +alt +false +true + + +altKey +false +true + + +border +false +true + + +bundle +false +true + + +disabled +false +true + + +indexed +false +true + + +locale +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +page +false +true + + +pageKey +false +true + + +property +false +true + + +src +false +true + + +srcKey +false +true + + +style +false +true + + +styleClass +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +img +org.apache.struts.taglib.nested.html.NestedImgTag +empty + +accesskey +false +true + + +align +false +true + + +alt +false +true + + +altKey +false +true + + +border +false +true + + +bundle +false +true + + +height +false +true + + +hspace +false +true + + +imageName +false +true + + +ismap +false +true + + +locale +false +true + + +lowsrc +false +true + + +name +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +paramId +false +true + + +page +false +true + + +pageKey +false +true + + +action +false +true + + +module +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +src +false +true + + +srcKey +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +title +false +true + + +titleKey +false +true + + +useLocalEncoding +false +true + + +usemap +false +true + + +vspace +false +true + + +width +false +true + + + +link +org.apache.struts.taglib.nested.html.NestedLinkTag + +accesskey +false +true + + +action +false +true + + +module +false +true + + +anchor +false +true + + +forward +false +true + + +href +false +true + + +indexed +false +true + + +indexId +false +true + + +bundle +false +true + + +linkName +false +true + + +name +false +true + + +onblur +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +page +false +true + + +paramId +false +true + + +paramName +false +true + + +paramProperty +false +true + + +paramScope +false +true + + +property +false +true + + +scope +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +target +false +true + + +title +false +true + + +titleKey +false +true + + +transaction +false +true + + +useLocalEncoding +false +true + + + +messages +org.apache.struts.taglib.nested.html.NestedMessagesTag +org.apache.struts.taglib.html.MessagesTei +JSP + +id +true +true + + +bundle +false +true + + +locale +false +true + + +name +false +true + + +property +false +true + + +header +false +true + + +footer +false +true + + +message +false +true + + + +multibox +org.apache.struts.taglib.nested.html.NestedMultiboxTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +options +org.apache.struts.taglib.nested.html.NestedOptionsTag +empty + +collection +false +true + + +filter +false +true + + +labelName +false +true + + +labelProperty +false +true + + +name +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + + +optionsCollection +org.apache.struts.taglib.nested.html.NestedOptionsCollectionTag +empty + +filter +false +true + + +label +false +true + + +name +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +value +false +true + + + +password +org.apache.struts.taglib.nested.html.NestedPasswordTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +redisplay +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +size +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +radio +org.apache.struts.taglib.nested.html.NestedRadioTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +property +true +true + + +onmousedown +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +true +true + + +idName +false +true + + + +select +org.apache.struts.taglib.nested.html.NestedSelectTag +JSP + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +multiple +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +size +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +submit +org.apache.struts.taglib.nested.html.NestedSubmitTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +indexed +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +text +org.apache.struts.taglib.nested.html.NestedTextTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +maxlength +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +size +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +textarea +org.apache.struts.taglib.nested.html.NestedTextareaTag + +accesskey +false +true + + +alt +false +true + + +altKey +false +true + + +bundle +false +true + + +cols +false +true + + +disabled +false +true + + +errorKey +false +true + + +errorStyle +false +true + + +errorStyleClass +false +true + + +errorStyleId +false +true + + +indexed +false +true + + +name +false +true + + +onblur +false +true + + +onchange +false +true + + +onclick +false +true + + +ondblclick +false +true + + +onfocus +false +true + + +onkeydown +false +true + + +onkeypress +false +true + + +onkeyup +false +true + + +onmousedown +false +true + + +onmousemove +false +true + + +onmouseout +false +true + + +onmouseover +false +true + + +onmouseup +false +true + + +property +true +true + + +readonly +false +true + + +rows +false +true + + +style +false +true + + +styleClass +false +true + + +styleId +false +true + + +tabindex +false +true + + +title +false +true + + +titleKey +false +true + + +value +false +true + + + +empty +org.apache.struts.taglib.nested.logic.NestedEmptyTag +JSP + +name +false +true + + +property +false +true + + +scope +false +true + + + +equal +org.apache.struts.taglib.nested.logic.NestedEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +greaterEqual +org.apache.struts.taglib.nested.logic.NestedGreaterEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +greaterThan +org.apache.struts.taglib.nested.logic.NestedGreaterThanTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +iterate +org.apache.struts.taglib.nested.logic.NestedIterateTag +org.apache.struts.taglib.nested.logic.NestedIterateTei +JSP + +collection +false +true + + +id +false +true + + +indexId +false +true + + +length +false +true + + +name +false +true + + +offset +false +true + + +property +false +true + + +scope +false +true + + +type +false +true + + + +lessEqual +org.apache.struts.taglib.nested.logic.NestedLessEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +lessThan +org.apache.struts.taglib.nested.logic.NestedLessThanTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +match +org.apache.struts.taglib.nested.logic.NestedMatchTag +JSP + +cookie +false +true + + +header +false +true + + +location +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +messagesNotPresent +org.apache.struts.taglib.nested.logic.NestedMessagesNotPresentTag +JSP + +name +false +true + + +property +false +true + + +message +false +true + + + +messagesPresent +org.apache.struts.taglib.nested.logic.NestedMessagesPresentTag +JSP + +name +false +true + + +property +false +true + + +message +false +true + + + +notEmpty +org.apache.struts.taglib.nested.logic.NestedNotEmptyTag +JSP + +name +false +true + + +property +false +true + + +scope +false +true + + + +notEqual +org.apache.struts.taglib.nested.logic.NestedNotEqualTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +notMatch +org.apache.struts.taglib.nested.logic.NestedNotMatchTag +JSP + +cookie +false +true + + +header +false +true + + +location +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +scope +false +true + + +value +true +true + + + +notPresent +org.apache.struts.taglib.nested.logic.NestedNotPresentTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +role +false +true + + +scope +false +true + + +user +false +true + + + +present +org.apache.struts.taglib.nested.logic.NestedPresentTag +JSP + +cookie +false +true + + +header +false +true + + +name +false +true + + +parameter +false +true + + +property +false +true + + +role +false +true + + +scope +false +true + + +user +false +true + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/struts/tlds/struts-tiles.tld =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/struts/tlds/struts-tiles.tld (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/struts/tlds/struts-tiles.tld (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,344 @@ + + + + + + + + + + +1.2 +1.1 +tiles +http://struts.apache.org/tags-tiles + +insert +org.apache.struts.taglib.tiles.InsertTag +JSP + +template +false +true + + +component +false +true + + +page +false +true + + +definition +false +true + + +attribute +false +false + + +name +false +true + + +beanName +false +true + + +beanProperty +false +true + + +beanScope +false +false + + +flush +false +false + + +ignore +false +true + + +role +false +true + + +controllerUrl +false +true + + +controllerClass +false +true + + + +definition +org.apache.struts.taglib.tiles.DefinitionTag +JSP + +id +true +false + + +scope +false +false + + +template +false +true + + +page +false +true + + +role +false +true + + +extends +false +true + + + +put +org.apache.struts.taglib.tiles.PutTag +JSP + +name +false +false + + +value +false +true + + +content +false +true + + +direct +false +false + + +type +false +false + + +beanName +false +true + + +beanProperty +false +true + + +beanScope +false +false + + +role +false +true + + + +putList +org.apache.struts.taglib.tiles.PutListTag +JSP + +name +true +false + + + +add +org.apache.struts.taglib.tiles.AddTag +JSP + +value +false +false + + +content +false +true + + +direct +false +false + + +type +false +false + + +beanName +false +true + + +beanProperty +false +true + + +beanScope +false +false + + +role +false +true + + + +get +org.apache.struts.taglib.tiles.GetTag +empty + +name +true +true + + +ignore +false +true + + +flush +false +false + + +role +false +true + + + +getAsString +org.apache.struts.taglib.tiles.GetAttributeTag +empty + +name +true +true + + +ignore +false +true + + +role +false +true + + + +useAttribute +org.apache.struts.taglib.tiles.UseAttributeTag +org.apache.struts.taglib.tiles.UseAttributeTei +empty + +id +false +false + + +classname +false +false + + +scope +false +false + + +name +true +true + + +ignore +false +true + + + +importAttribute +org.apache.struts.taglib.tiles.ImportAttributeTag +empty + +name +false +true + + +scope +false +false + + +ignore +false +true + + + +initComponentDefinitions +org.apache.struts.taglib.tiles.InitDefinitionsTag +empty + +file +true +false + + +classname +false +false + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/struts/validator-rules.xml =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/struts/validator-rules.xml (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/struts/validator-rules.xml (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,313 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/AuthoringButton.tag =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/AuthoringButton.tag (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/AuthoringButton.tag (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,98 @@ +<% +/**************************************************************** + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + + /** + * AuthoringButton.tag + * Author: Dapeng Ni + * Description: Creates the save/cancel button for authoring page + */ + + %> +<%@ tag body-content="scriptless" %> +<%@ taglib uri="tags-core" prefix="c" %> +<%@ taglib uri="tags-fmt" prefix="fmt" %> +<%@ taglib uri="tags-html" prefix="html" %> + +<%@ attribute name="formID" required="true" rtexprvalue="true" %> +<%@ attribute name="toolSignature" required="true" rtexprvalue="true" %> +<%@ attribute name="toolContentID" required="true" rtexprvalue="true" %> +<%@ attribute name="contentFolderID" required="true" rtexprvalue="true" %> +<%@ attribute name="clearSessionActionUrl" required="true" rtexprvalue="true" %> + +<%-- Optional attribute --%> +<%@ attribute name="accessMode" required="false" rtexprvalue="true" %> +<%@ attribute name="cancelButtonLabelKey" required="false" rtexprvalue="true" %> +<%@ attribute name="saveButtonLabelKey" required="false" rtexprvalue="true" %> +<%@ attribute name="cancelConfirmMsgKey" required="false" rtexprvalue="true" %> +<%@ attribute name="defineLater" required="false" rtexprvalue="true" %> +<%@ attribute name="customiseSessionID" required="false" rtexprvalue="true" %> + +<%-- Default value for message key --%> + + + + + + + + + + + + + + + +

+ + + + + + +

+ Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/Date.tag =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/Date.tag (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/Date.tag (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,52 @@ +<% +/**************************************************************** + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + + /** + * Author: Fiona Malikoff + * Description: Format a date, using the locale, based on standard parameters. + * Need to use long for the date otherwise the AU locale comes out as 1/2/06 and + * full is needed to include the timezone. + */ + + %> +<%@ tag body-content="empty" %> +<%@ attribute name="value" required="true" rtexprvalue="true" type="java.util.Date" %> +<%@ attribute name="style" required="false" rtexprvalue="true"%> +<%@ attribute name="type" required="false" rtexprvalue="true"%> + +<%@ taglib uri="tags-fmt" prefix="fmt" %> +<%@ taglib uri="tags-core" prefix="c" %> + + + + + + + + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/DefineLater.tag =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/DefineLater.tag (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/DefineLater.tag (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,58 @@ + +<% + /**************************************************************** + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + + /** + * DefineLater.tag + * Author: Fiona Malikoff + * Description: Layout for "Define Later" screens - to be used in learning. + * A suggested layout - unless the tool has special requirements, this layout should be used. + * Expects to be used inside
+ */ +%> + +<%@ tag body-content="scriptless"%> +<%@ taglib uri="tags-fmt" prefix="fmt"%> +<%@ taglib uri="tags-core" prefix="c"%> + +<%@ attribute name="defineLaterMessageKey" required="false" + rtexprvalue="true"%> +<%@ attribute name="buttonTryAgainKey" required="false" + rtexprvalue="true"%> + +<%-- Default value for I18N keys --%> + + + + + + + +

+ +

+
+ +
Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/ExportPortOutput.tag =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/ExportPortOutput.tag (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/ExportPortOutput.tag (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * 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" %> + +
  • + + + " target="_blank"/> + + + + + + + + +
      + + + +
    +
    +
    + +
  • + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/FCKEditor.tag =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/FCKEditor.tag (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/FCKEditor.tag (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,57 @@ +<%@ taglib uri="tags-core" prefix="c"%> +<%@ taglib uri="tags-lams" prefix="lams"%> +<%@ taglib uri="fck-editor" prefix="fck"%> + +<%@ attribute name="id" required="true" rtexprvalue="true"%> +<%@ attribute name="value" required="true" rtexprvalue="true"%> +<%@ attribute name="toolbarSet" required="false" rtexprvalue="true"%> +<%@ attribute name="contentFolderID" required="false" rtexprvalue="true"%> + + + + + + + + + +/fckeditor/ + + + + + ${value} + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/Head.tag =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/Head.tag (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/Head.tag (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,41 @@ +<%/**************************************************************** + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/** + * Head.tag + * Author: Fiona Malikoff + * Description: Sets up the non-cache pragma statements and the UTF-8 + * encoding. Use in place of the normal head tag. + */ +%> + +<%@ tag body-content="scriptless"%> + + + + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/ImgButtonWrapper.tag =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/ImgButtonWrapper.tag (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/ImgButtonWrapper.tag (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,37 @@ +<% +/**************************************************************** + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + + /** + * ImgButtonWrapper.tag + * Author: Mitchell Seaton + * Description: Simple wrapper that will display buttons correctly when RTL page rendering is used. + */ + + %> +<%@ tag body-content="scriptless" %> +
    +
    + +
    +
    Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/LearnerFlashEnabled.tag =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/LearnerFlashEnabled.tag (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/LearnerFlashEnabled.tag (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,45 @@ +<% +/**************************************************************** + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + + /** + * Learner Flash Enabled + * Author: Fiona Malikoff + * Description: Is Flash enabled for learner? + * + */ + + %> +<%@ tag body-content="empty" %> +<%@ taglib uri="tags-core" prefix="c" %> +<%@ taglib uri="tags-lams" prefix="lams" %> + + + + + + true + false + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/Passon.tag =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/Passon.tag (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/Passon.tag (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,86 @@ +<% +/**************************************************************** + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + + /** + * Passon + * Author: Mitchell Seaton + * Description: Passes on progress data to the Flash Learner to update the progress bar. + * + */ + + %> +<%@ tag body-content="empty" %> +<%@ attribute name="progress" required="true" rtexprvalue="true" type="java.lang.String" %> +<%@ attribute name="version" required="false" rtexprvalue="true" %> +<%@ attribute name="id" required="true" rtexprvalue="true" %> +<%@ attribute name="redirect" required="false" rtexprvalue="true" %> +<%@ taglib uri="tags-core" prefix="c" %> +<%@ taglib uri="tags-lams" prefix="lams" %> + + + + + + + + + + + + + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/ProgressOutput.tag =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/ProgressOutput.tag (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/ProgressOutput.tag (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,79 @@ +<% +/**************************************************************** + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + + /** + * Progress Output + * Author: Fiona Malikoff + * Description: Outputs the Activity details on the jsp progress page. Recursive tag + * + */ + + /** Need to add current ! */ + + %> +<%@ tag body-content="empty" %> +<%@ attribute name="activity" required="true" rtexprvalue="true" type="org.lamsfoundation.lams.learning.web.bean.ActivityURL" %> +<%@ taglib uri="tags-core" prefix="c" %> +<%@ taglib uri="tags-lams" prefix="lams" %> + +
  • + + + + + + + + + + + + + + + + + + + + + + + + ${activity.title} + + + + + +
      + + + +
    +
    +
    + +
  • + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/Tab.tag =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/Tab.tag (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/Tab.tag (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,85 @@ +<% + /**************************************************************** + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + + /** + * Tab.tag + * Author: Mitchell Seaton + * Description: Creates a tab element. + * Wiki: + */ +%> +<%@ tag body-content="empty"%> +<%@ attribute name="id" required="true" rtexprvalue="true"%> +<%@ attribute name="value" required="false" rtexprvalue="true"%> +<%@ attribute name="key" required="false" rtexprvalue="true"%> +<%@ attribute name="inactive" required="false" rtexprvalue="true"%> +<%@ attribute name="methodCall" required="false" rtexprvalue="true"%> + +<%@ taglib uri="tags-core" prefix="c"%> +<%@ taglib uri="tags-fmt" prefix="fmt"%> +<%@ taglib uri="tags-lams" prefix="lams"%> + +<%-- Check if bundle is set --%> + + + + + + + + + + +<%-- + Usually methodCall is selectTab, but the calling code can override methodCall if desired. + this is handy if the page needs different logic on initialisation and user switching tabs +--%> + + + + + + + + + + + + + + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/TabBody.tag =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/TabBody.tag (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/TabBody.tag (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,52 @@ +<%/**************************************************************** + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/** + * TabBody.tag + * Author: Mitchell Seaton + * Description: Creates the body container for a tab element + * Wiki: + */ + + %> +<%@ tag body-content="scriptless"%> +<%@ attribute name="id" required="true" rtexprvalue="true"%> +<%@ attribute name="tabTitle" required="false" rtexprvalue="true"%> +<%@ attribute name="titleKey" required="false" rtexprvalue="true"%> +<%@ attribute name="page" required="false" rtexprvalue="true"%> +<%@ taglib uri="tags-core" prefix="c"%> +<%@ taglib uri="tags-bean" prefix="bean"%> + + +
    + + + + + + + + + +
    + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/TabName.tag =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/TabName.tag (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/TabName.tag (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,60 @@ +<%/**************************************************************** + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/** + * TabName Tag + * Author: Mitchell Seaton + * Description: Shortens name that are too long to fit inside a tab + */ + + %> +<%@ tag body-content="scriptless" %> + +<%@ attribute name="url" required="true" rtexprvalue="true"%> +<%@ attribute name="highlight" required="false" rtexprvalue="true" %> + +<%@ taglib uri="tags-core" prefix="c"%> +<%@ taglib uri="tags-function" prefix="fn"%> + +12 + + + + + + + + + + + + + + + + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/Tabs.tag =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/Tabs.tag (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/Tabs.tag (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,69 @@ +<%/**************************************************************** + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/** + * Tabs.tag + * Author: Mitchell Seaton + * Description: Create a tab list from a input collection or nested Tab tags. + * Wiki: + */ + + %> +<%@ tag body-content="scriptless"%> +<%@ attribute name="collection" type="java.util.Collection" required="false" rtexprvalue="true"%> +<%@ attribute name="control" required="false" rtexprvalue="true"%> +<%@ attribute name="useKey" required="false" rtexprvalue="true"%> +<%@ taglib uri="tags-core" prefix="c"%> +<%@ taglib uri="tags-lams" prefix="lams"%> + + + + + + + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/headItems.tag =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/headItems.tag (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/tags/headItems.tag (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,52 @@ +<%/**************************************************************** + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 + * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +/** + * Standard Head Items + * Author: Fiona Malikoff + * Description: Includes all the standard head items e.g. the + * lams css files, sets the content type, standard javascript files. + */ + + %> +<%@ tag body-content="empty"%> + +<%@ taglib uri="tags-core" prefix="c"%> +<%@ taglib uri="tags-lams" prefix="lams"%> +<%@ taglib uri="tags-fmt" prefix="fmt"%> + + + + + + + + + + + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/web.xml =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/web.xml (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/WEB-INF/web.xml (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,339 @@ + + + + + + + javax.servlet.jsp.jstl.fmt.localizationContext + org.lamsfoundation.lams.tool.mdlesn.ApplicationResources + + + + contextConfigLocation + + classpath:/org/lamsfoundation/lams/applicationContext.xml + classpath:/org/lamsfoundation/lams/lesson/lessonApplicationContext.xml + classpath:/org/lamsfoundation/lams/toolApplicationContext.xml + classpath:/org/lamsfoundation/lams/integrationContext.xml + classpath:/org/lamsfoundation/lams/learning/learningApplicationContext.xml + classpath:/org/lamsfoundation/lams/contentrepository/applicationContext.xml + classpath:/org/lamsfoundation/lams/tool/mdlesn/mdlLessonApplicationContext.xml + + + + + SystemSessionFilter + + org.lamsfoundation.lams.web.session.SystemSessionFilter + + + + hibernateFilter + + org.lamsfoundation.lams.util.CustomizedOpenSessionInViewFilter + + + sessionFactoryBeanName + mdlLessonSessionFactory + + + + LocaleFilter + + org.lamsfoundation.lams.web.filter.LocaleFilter + + + + + SystemSessionFilter + /* + + + hibernateFilter + /* + + + LocaleFilter + /* + + + + + org.springframework.web.context.ContextLoaderListener + + + + + org.lamsfoundation.lams.web.SessionListener + + + + + action + org.apache.struts.action.ActionServlet + + config + /WEB-INF/struts/struts-config.xml + + + debug + 999 + + + detail + 2 + + + validate + true + + 1 + + + + + + Connector + com.fredck.FCKeditor.connector.ConnectorServlet + + baseDir + /UserFiles/ + + + debug + false + + 1 + + + + + Attachment Download + Attachment Download + download + org.lamsfoundation.lams.contentrepository.client.ToolDownload + + toolContentHandlerBeanName + mdlLessonToolContentHandler + + 3 + + + + exportPortfolio + org.lamsfoundation.lams.tool.mdlesn.web.servlets.ExportServlet + + + + action + *.do + + + + + Connector + /fckeditor/editor/filemanager/browser/default/connectors/jsp/connector + + + + download + /download/* + + + + exportPortfolio + /exportPortfolio + + + + 120 + + + + + + 500 + /error.jsp + + + 403 + /403.jsp + + + 404 + /404.jsp + + + + + + + + + tags-bean + /WEB-INF/struts/tlds/struts-bean.tld + + + tags-html + /WEB-INF/struts/tlds/struts-html.tld + + + tags-logic + /WEB-INF/struts/tlds/struts-logic.tld + + + tags-tiles + /WEB-INF/struts/tlds/struts-tiles.tld + + + + + + tags-fmt + /WEB-INF/jstl/tlds/fmt.tld + + + tags-core + /WEB-INF/jstl/tlds/c.tld + + + tags-function + /WEB-INF/jstl/tlds/fn.tld + + + tags-xml + /WEB-INF/jstl/tlds/x.tld + + + + + + tags-permittedTaglibs + /WEB-INF/jstl/tlds/permittedTaglibs.tld + + + tags-scriptfree + /WEB-INF/jstl/tlds/scriptfree.tld + + + + + + fck-editor + /WEB-INF/fckeditor/tlds/FCKeditor.tld + + + tags-lams + /WEB-INF/lams.tld + + + + + + + + Secure Content + *.jsp + *.html + *.do + + + LEARNER + TEACHER + MONITOR + AUTHOR + ADMIN + SYSADMIN + AUTHOR ADMIN + + + + + + Authoring Update + /authoring.do + + + AUTHOR + AUTHOR ADMIN + SYSADMIN + + + + + Staff Content + /monitoring.do + + + MONITOR + TEACHER + + + + + + + Download Files + /download/ + + + AUTHOR + MONITOR + TEACHER + ADMIN + SYSADMIN + AUTHOR ADMIN + + + + + + FORM + LAMS + + /login.jsp + /login.jsp?failed=y + + + + + + + Student + LEARNER + + + Student + TEACHER + + + + Can create/modify a learning design + AUTHOR + + + + Can running and monitoring a learning session + MONITOR + + + + Can add/remove users to the system, set up classes of users for sessions + ADMIN + + + + Can add/remove users to the system, set up classes of users for sessions + SYSADMIN + + + Can create/modify a learning design and edit default tool content + AUTHOR ADMIN + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/common/empty.jsp =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/common/empty.jsp (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/common/empty.jsp (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1 @@ \ No newline at end of file Index: tool_adapters/moodle/lams_tool_mdllesson/web/common/footer.jsp =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/common/footer.jsp (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/common/footer.jsp (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1 @@ +

    Copyright (C) 2006 LAMS Foundation (http://lamsfoundation.org

    Index: tool_adapters/moodle/lams_tool_mdllesson/web/common/header.jsp =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/common/header.jsp (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/common/header.jsp (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,17 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + + + + <fmt:message key="activity.title" /> + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/common/learnerheader.jsp =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/common/learnerheader.jsp (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/common/learnerheader.jsp (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,22 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + + + + <fmt:message key="activity.title" /> + + + + + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/common/message.jsp =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/common/message.jsp (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/common/message.jsp (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,5 @@ +<%@ include file="/common/taglibs.jsp"%> + +

    + ${requestScope.message}; +

    Index: tool_adapters/moodle/lams_tool_mdllesson/web/common/taglibs.jsp =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/common/taglibs.jsp (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/common/taglibs.jsp (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,11 @@ +<%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=utf-8"%> + +<%@ taglib uri="tags-bean" prefix="bean"%> +<%@ taglib uri="tags-logic" prefix="logic"%> +<%@ taglib uri="tags-tiles" prefix="tiles"%> +<%@ taglib uri="tags-html" prefix="html"%> +<%@ taglib uri="tags-core" prefix="c"%> +<%@ taglib uri="tags-fmt" prefix="fmt"%> +<%@ taglib uri="tags-lams" prefix="lams"%> +<%@ taglib uri="fck-editor" prefix="fck"%> + Index: tool_adapters/moodle/lams_tool_mdllesson/web/error.jsp =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/error.jsp (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/error.jsp (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,91 @@ +<%-- +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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + http://www.gnu.org/licenses/gpl.txt +--%> + + + +<%@ page language="java" isErrorPage="true" pageEncoding="UTF-8" contentType="text/html;charset=utf-8"%> +<%@ taglib uri="tags-lams" prefix="lams"%> +<%@ taglib uri="tags-core" prefix="c"%> +<%@ taglib uri="tags-fmt" prefix="fmt"%> + + + + + + +<%-- Catch JSP Servlet Exception --%> +<% +if (exception != null) { +%> + + <%=exception.getMessage()%> + + + <%=exception.getClass().getName()%> + +<% + java.io.ByteArrayOutputStream bos = new java.io.ByteArrayOutputStream(); + java.io.PrintStream os = new java.io.PrintStream(bos); + exception.printStackTrace(os); + String stack = new String(bos.toByteArray()); +%> + + <%=stack%> + +<% +} else if ((Exception) request.getAttribute("javax.servlet.error.exception") != null) { +%> + + + <%=((Exception) request.getAttribute("javax.servlet.error.exception")).getMessage()%> + + + <%=((Exception) request.getAttribute("javax.servlet.error.exception")).getMessage() + .getClass().getName()%> + +<% + java.io.ByteArrayOutputStream bos = new java.io.ByteArrayOutputStream(); + java.io.PrintStream os = new java.io.PrintStream(bos); + ((Exception) request.getAttribute("javax.servlet.error.exception")).printStackTrace(os); + String stack = new String(bos.toByteArray()); +%> + + <%=stack%> + +<% +} +%> + +
    + + + +
    + + + +
    Index: tool_adapters/moodle/lams_tool_mdllesson/web/images/Thumbs.db =================================================================== diff -u Binary files differ Index: tool_adapters/moodle/lams_tool_mdllesson/web/images/edit.gif =================================================================== diff -u Binary files differ Index: tool_adapters/moodle/lams_tool_mdllesson/web/images/icon_mdlLesson.swf =================================================================== diff -u Binary files differ Index: tool_adapters/moodle/lams_tool_mdllesson/web/images/success.gif =================================================================== diff -u Binary files differ Index: tool_adapters/moodle/lams_tool_mdllesson/web/includes/javascript/monitoring.js =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/includes/javascript/monitoring.js (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/includes/javascript/monitoring.js (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,16 @@ + +function init() { + if (initialTabId) { + selectTab(initialTabId); + } else { + selectTab(1); + } +} +function doSelectTab(tabId) { + selectTab(tabId); +} +function doSubmit(method, tabId) { + document.monitoringForm.method.value = method; + document.monitoringForm.submit(); +} + Index: tool_adapters/moodle/lams_tool_mdllesson/web/layouts/defaultLayout.jsp =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/layouts/defaultLayout.jsp (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/layouts/defaultLayout.jsp (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,22 @@ + + +<%@ include file="/common/taglibs.jsp"%> + + + + +
    + + +

    + +

    +
    +
    + +
    + +
    + +
    Index: tool_adapters/moodle/lams_tool_mdllesson/web/layouts/learningLayout.jsp =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/layouts/learningLayout.jsp (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/layouts/learningLayout.jsp (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,13 @@ + + +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/layouts/tabLayout.jsp =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/layouts/tabLayout.jsp (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/layouts/tabLayout.jsp (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,18 @@ + + +<%@ include file="/common/taglibs.jsp"%> + + + + +
    + + +

    + +

    + +
    + +
    Index: tool_adapters/moodle/lams_tool_mdllesson/web/pages/admin/config.jsp =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/pages/admin/config.jsp (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/pages/admin/config.jsp (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,63 @@ + + +<%@ include file="/common/taglibs.jsp"%> + + + + <fmt:message key="pageTitle.admin" /> + + + + + +
    + +

    + +

    + + + +

    + + +

    + +

    + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + + + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/pages/export/exportPortfolio.jsp =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/pages/export/exportPortfolio.jsp (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/pages/export/exportPortfolio.jsp (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,39 @@ + + +<%@ include file="/common/taglibs.jsp"%> + + + + <fmt:message key="titleHeading.exportPortfolio" /> + + + + + +
    +

    + + + +

    + ${session.sessionName} +

    +
    +
    + +

    + +

    +
    +
    + +
    + + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/pages/monitoring/editActivity.jsp =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/pages/monitoring/editActivity.jsp (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/pages/monitoring/editActivity.jsp (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1 @@ + Index: tool_adapters/moodle/lams_tool_mdllesson/web/pages/monitoring/headItems.jsp =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/pages/monitoring/headItems.jsp (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/pages/monitoring/headItems.jsp (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,9 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/pages/monitoring/instructions.jsp =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/pages/monitoring/instructions.jsp (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/pages/monitoring/instructions.jsp (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1 @@ + Index: tool_adapters/moodle/lams_tool_mdllesson/web/pages/monitoring/monitoring.jsp =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/pages/monitoring/monitoring.jsp (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/pages/monitoring/monitoring.jsp (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,19 @@ +<%@ include file="/common/taglibs.jsp"%> +<%@ page import="org.lamsfoundation.lams.tool.mdlesn.util.MdlLessonConstants"%> + + + +
    + + + +
    + + Index: tool_adapters/moodle/lams_tool_mdllesson/web/pages/monitoring/statistics.jsp =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/pages/monitoring/statistics.jsp (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/pages/monitoring/statistics.jsp (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,34 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + +
    +

    + ${session.sessionName} +

    +
    + + + + + + + + + + +
    + heading.totalLearnersInGroup + + ${session.numberOfLearners} +
    + heading.totalFinishedLearnersInGroup + + ${session.numberOfFinishedLearners} +
    +
    Index: tool_adapters/moodle/lams_tool_mdllesson/web/pages/monitoring/summary.jsp =================================================================== diff -u --- tool_adapters/moodle/lams_tool_mdllesson/web/pages/monitoring/summary.jsp (revision 0) +++ tool_adapters/moodle/lams_tool_mdllesson/web/pages/monitoring/summary.jsp (revision 1900d45594cf161971a48d0e596b36fbcf06a0eb) @@ -0,0 +1,13 @@ +<%@ include file="/common/taglibs.jsp"%> + + + +

    +
    + +

    + + ${session.sessionName} + +

    +