Index: lams_tool_wiki/.classpath =================================================================== diff -u --- lams_tool_wiki/.classpath (revision 0) +++ lams_tool_wiki/.classpath (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + Index: lams_tool_wiki/.cvsignore =================================================================== diff -u --- lams_tool_wiki/.cvsignore (revision 0) +++ lams_tool_wiki/.cvsignore (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,4 @@ +build +bin +.myeclipse +.mymetadata Index: lams_tool_wiki/.project =================================================================== diff -u --- lams_tool_wiki/.project (revision 0) +++ lams_tool_wiki/.project (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,12 @@ + + + lams_tool_wiki + + + + + + + org.eclipse.jdt.core.javanature + + Index: lams_tool_wiki/.settings/com.genuitec.eclipse.j2eedt.core.prefs =================================================================== diff -u --- lams_tool_wiki/.settings/com.genuitec.eclipse.j2eedt.core.prefs (revision 0) +++ lams_tool_wiki/.settings/com.genuitec.eclipse.j2eedt.core.prefs (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,3 @@ +#Fri Jun 02 15:55:47 EST 2006 +defaultTldInfo=http\://java.sun.com/jsp/jstl/core\=c;http\://java.sun.com/jsp/jstl/sql\=sql;html\=http\://struts.apache.org/tags-html;c\=http\://java.sun.com/jsp/jstl/core;fmt\=http\://java.sun.com/jsp/jstl/fmt;h\=http\://java.sun.com/jsf/html;nested\=http\://struts.apache.org/tags-nested;http\://struts.apache.org/tags-html\=html;http\://java.sun.com/jsp/jstl/fmt\=fmt;bean\=http\://struts.apache.org/tags-bean;http\://java.sun.com/jsp/jstl/functions\=fn;fn\=http\://java.sun.com/jsp/jstl/functions;logic\=http\://struts.apache.org/tags-logic;http\://struts.apache.org/tags-nested\=nested;http\://java.sun.com/jsp/jstl/xml\=x;f\=http\://java.sun.com/jsf/core;tiles\=http\://struts.apache.org/tags-tiles;http\://java.sun.com/jsf/html\=h;http\://struts.apache.org/tags-tiles\=tiles;http\://java.sun.com/jsf/core\=f;http\://struts.apache.org/tags-bean\=bean;x\=http\://java.sun.com/jsp/jstl/xml;sql\=http\://java.sun.com/jsp/jstl/sql;http\://struts.apache.org/tags-logic\=logic +eclipse.preferences.version=1 Index: lams_tool_wiki/.settings/org.eclipse.core.resources.prefs =================================================================== diff -u --- lams_tool_wiki/.settings/org.eclipse.core.resources.prefs (revision 0) +++ lams_tool_wiki/.settings/org.eclipse.core.resources.prefs (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,4 @@ +#Wed Mar 22 11:10:51 EST 2006 +eclipse.preferences.version=1 +encoding//conf/xdoclet/web-settings.xml=UTF-8 +encoding//web/WEB-INF/web.xml=UTF-8 Index: lams_tool_wiki/.settings/org.eclipse.jdt.core.prefs =================================================================== diff -u --- lams_tool_wiki/.settings/org.eclipse.jdt.core.prefs (revision 0) +++ lams_tool_wiki/.settings/org.eclipse.jdt.core.prefs (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,12 @@ +#Thu Jul 20 11:06:01 EST 2006 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.5 Index: lams_tool_wiki/.settings/org.eclipse.jdt.ui.prefs =================================================================== diff -u --- lams_tool_wiki/.settings/org.eclipse.jdt.ui.prefs (revision 0) +++ lams_tool_wiki/.settings/org.eclipse.jdt.ui.prefs (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,3 @@ +#Thu Mar 23 13:45:11 EST 2006 +eclipse.preferences.version=1 +internal.default.compliance=default Index: lams_tool_wiki/build.properties =================================================================== diff -u --- lams_tool_wiki/build.properties (revision 0) +++ lams_tool_wiki/build.properties (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,20 @@ + +# project-wide properties +signature=lawiki10 + +#project version +tool.version=20080929 + +package=org/lamsfoundation/lams/tool/wiki +package.name=org.lamsfoundation.lams.tool.wiki +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.wiki + Index: lams_tool_wiki/build.xml =================================================================== diff -u --- lams_tool_wiki/build.xml (revision 0) +++ lams_tool_wiki/build.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,532 @@ + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Deploying the Wiki Tool + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_tool_wiki/conf/hibernate/mappings/hibernate.properties =================================================================== diff -u --- lams_tool_wiki/conf/hibernate/mappings/hibernate.properties (revision 0) +++ lams_tool_wiki/conf/hibernate/mappings/hibernate.properties (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/conf/hibernate/mappings/org/lamsfoundation/lams/tool/wiki/model/Wiki.hbm.xml =================================================================== diff -u --- lams_tool_wiki/conf/hibernate/mappings/org/lamsfoundation/lams/tool/wiki/model/Wiki.hbm.xml (revision 0) +++ lams_tool_wiki/conf/hibernate/mappings/org/lamsfoundation/lams/tool/wiki/model/Wiki.hbm.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_tool_wiki/conf/hibernate/mappings/org/lamsfoundation/lams/tool/wiki/model/WikiAttachment.hbm.xml =================================================================== diff -u --- lams_tool_wiki/conf/hibernate/mappings/org/lamsfoundation/lams/tool/wiki/model/WikiAttachment.hbm.xml (revision 0) +++ lams_tool_wiki/conf/hibernate/mappings/org/lamsfoundation/lams/tool/wiki/model/WikiAttachment.hbm.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_tool_wiki/conf/hibernate/mappings/org/lamsfoundation/lams/tool/wiki/model/WikiPage.hbm.xml =================================================================== diff -u --- lams_tool_wiki/conf/hibernate/mappings/org/lamsfoundation/lams/tool/wiki/model/WikiPage.hbm.xml (revision 0) +++ lams_tool_wiki/conf/hibernate/mappings/org/lamsfoundation/lams/tool/wiki/model/WikiPage.hbm.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_tool_wiki/conf/hibernate/mappings/org/lamsfoundation/lams/tool/wiki/model/WikiPageContent.hbm.xml =================================================================== diff -u --- lams_tool_wiki/conf/hibernate/mappings/org/lamsfoundation/lams/tool/wiki/model/WikiPageContent.hbm.xml (revision 0) +++ lams_tool_wiki/conf/hibernate/mappings/org/lamsfoundation/lams/tool/wiki/model/WikiPageContent.hbm.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_tool_wiki/conf/hibernate/mappings/org/lamsfoundation/lams/tool/wiki/model/WikiSession.hbm.xml =================================================================== diff -u --- lams_tool_wiki/conf/hibernate/mappings/org/lamsfoundation/lams/tool/wiki/model/WikiSession.hbm.xml (revision 0) +++ lams_tool_wiki/conf/hibernate/mappings/org/lamsfoundation/lams/tool/wiki/model/WikiSession.hbm.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_tool_wiki/conf/hibernate/mappings/org/lamsfoundation/lams/tool/wiki/model/WikiUser.hbm.xml =================================================================== diff -u --- lams_tool_wiki/conf/hibernate/mappings/org/lamsfoundation/lams/tool/wiki/model/WikiUser.hbm.xml (revision 0) +++ lams_tool_wiki/conf/hibernate/mappings/org/lamsfoundation/lams/tool/wiki/model/WikiUser.hbm.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_tool_wiki/conf/jar/META-INF/MANIFEST.MF =================================================================== diff -u --- lams_tool_wiki/conf/jar/META-INF/MANIFEST.MF (revision 0) +++ lams_tool_wiki/conf/jar/META-INF/MANIFEST.MF (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,3 @@ +Implementation-Title: LAMS - Notebok Tool +Implementation-Version: 2.1 +Implementation-Vendor: LAMS Foundation (http://lamsfoundation.org) Index: lams_tool_wiki/conf/language/ApplicationResources.properties =================================================================== diff -u --- lams_tool_wiki/conf/language/ApplicationResources.properties (revision 0) +++ lams_tool_wiki/conf/language/ApplicationResources.properties (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,85 @@ +appName = notebook +#language code: en +#locale code: AU + + # CVS ID: $Id$ Exported from the LAMS Community by Ernie Ghiglione on Fri Aug 11 07:11:53 GMT 2006 + +#=================== labels for Notebook =================# + +tool.display.name =Notebook +tool.description =Notebook Tool +activity.title =Notebook +activity.description =Notebook Tool +activity.helptext =Notebook for notes and reflections +pageTitle.authoring =Notebook Authoring +button.basic =Basic +button.advanced =Advanced +button.instructions =Instructions +button.upload =Upload +label.authoring.basic.title =Title: +label.authoring.basic.content =Content: +label.authoring.basic.instructions =Instructions: +advanced.lockOnFinished =Lock when finished +advanced.allowRichEditor =Allow rich text editor +instructions.onlineInstructions =Online Instructions: +instructions.offlineInstructions =Offline Instructions: +instructions.uploadOnlineInstr =Online Instructions File: +instructions.uploadOfflineInstr =Offline Instructions File: +instructions.type.online =Online +instructions.type.offline =Offline +label.filename =Filename +label.type =Type +label.attachments =Attachments +link.view =View +link.download =Download +link.delete =Delete +message.updateSuccess =Changes saved +message.unsavedChanges =Page contains unsaved changes +pageTitle.learning =Online Notebook +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 =Notebook Monitoring +button.summary =Summary +button.editActivity =Edit Activity +button.statistics =Statistics +titleHeading.summary =Summary +titleHeading.instructions =Instructions +titleHeading.statistics =Statistics +titleHeading.editActivity =Edit Activity +titleHeading.exportPortfolio =Export Portfolio +heading.group =Group {0}: +heading.totalLearners =Number of Learners: +heading.totalLearnersInGroup =Total Number of Learners in Group: +heading.totalFinishedLearnersInGroup =Number of Finished Learners: +message.contentInUseSet =The modification of content is not allowed since one or more students has attempted the activity. +message.summary =There is no summary available for this tool. +label.view =View +label.notAvailable =Not Available +heading.learner =Learner +heading.notebookEntry =Notebook Entry +button.cancel =Cancel +button.ok =OK +button.done =Done +button.save =Save +button.finish =Finish +button.next =Next +label.save =Save +label.cancel =Cancel +label.created =Created +label.lastModified =Last modified +label.notebookEntry =Notebook entry +error.missingParam =Unable to continue. {0} is missing. +error.exceedMaxFileSize =File size exceeded +error.exception.NbApplication =An internal error has occured with the Notebook Tool. If reporting this error, please report:
{0} +error.contentrepository =An error has occurred when saving/deleting instruction file {0}. The files may not be saved correctly. +error.content.locked =The content has been locked since it is being used by one or more learners. The modification of the content is not allowed. +error.defineLater =Sorry, the activity is not ready yet. Please wait for the teacher to finishing defining the activity. +errors.maxfilesize =The uploaded file has exceeded the maximum file size limit of {0} bytes +error.mandatoryField ={0} field is mandatory. +error.mark.invalid.number ={0} field must be a valid number. Decimal points are not allowed. +error.mark.invalid.decimal.number ={0} field must be a valid decimal number. +authoring.msg.cancel.save =Do you want to close this window without saving? +button.try.again =Try Again + + +#======= End labels: Exported 74 labels for en AU ===== Index: lams_tool_wiki/conf/language/lams/ApplicationResources.properties =================================================================== diff -u --- lams_tool_wiki/conf/language/lams/ApplicationResources.properties (revision 0) +++ lams_tool_wiki/conf/language/lams/ApplicationResources.properties (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,92 @@ +appName = notebook +#language code: en +#locale code: AU + + # CVS ID: $Id$ Exported from the LAMS Community by Ernie Ghiglione on Wed Aug 27 01:17:00 BST 2008 + +#=================== labels for Notebook =================# + +error.contentrepository =An error has occurred when saving/deleting instruction file {0}. The files may not be saved correctly. +button.instructions =Instructions +instructions.uploadOfflineInstr =Offline Instructions File: +instructions.uploadOnlineInstr =Online Instructions File: +instructions.offlineInstructions =Offline Instructions: +instructions.onlineInstructions =Online Instructions: +activity.helptext =Notebook for notes and reflections +message.contentInUseSet =Modification of content is not allowed since one or more students has attempted the activity. +error.content.locked =The content has been locked since it is being used by one or more learners. The modification of the content is not allowed. +tool.display.name =Notebook +tool.description =Notebook Tool +activity.title =Wiki +activity.description =Notebook Tool +pageTitle.authoring =Notebook Authoring +button.basic =Basic +button.advanced =Advanced +button.upload =Upload +label.authoring.basic.title =Title: +label.authoring.basic.content =Content: +advanced.lockOnFinished =Lock when finished +advanced.allowRichEditor =Allow rich text editor +instructions.type.online =Online +instructions.type.offline =Offline +label.filename =Filename +label.type =Type +label.attachments =Attachments +link.view =View +link.download =Download +link.delete =Delete +message.updateSuccess =Changes saved +message.unsavedChanges =Page contains unsaved changes +pageTitle.learning =Online Notebook +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 =Notebook 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 +heading.group =Group {0}: +heading.totalLearners =Number of Learners: +heading.totalLearnersInGroup =Total Number of Learners in Group: +heading.totalFinishedLearnersInGroup =Number of Finished Learners: +message.summary =There is no summary available for this tool. +label.view =View +label.notAvailable =Not Available +heading.learner =Learner +heading.notebookEntry =Notebook Entry +button.cancel =Cancel +button.ok =OK +button.done =Done +button.save =Save +button.next =Next +label.save =Save +label.cancel =Cancel +label.created =Created +label.lastModified =Last modified +label.notebookEntry =Notebook entry +error.missingParam =Unable to continue. {0} is missing. +error.exceedMaxFileSize =File size exceeded +error.exception.NbApplication =An internal error has occured with the Notebook Tool. If reporting this error, please report:
{0} +error.defineLater =Sorry, the activity is not ready yet. Please wait for the teacher to finishing defining the activity. +errors.maxfilesize =The uploaded file has exceeded the maximum file size limit of {0} bytes +error.mandatoryField ={0} field is mandatory. +error.mark.invalid.number ={0} field must be a valid number. Decimal points are not allowed. +error.mark.invalid.decimal.number ={0} field must be a valid decimal number. +authoring.msg.cancel.save =Do you want to close this window without saving? +button.try.again =Try Again +message.learner.blank.input =You have not written anything. Are you sure this is correct? +button.finish =Next Activity +message.alertContentEdit =Warning: One of more students have accessed this activity. Changing this content will result in students getting different information. +message.warnLockOnFinish =Note: After you click on "Next Activity" and you come back to this Notebook, you won't be able to continue adding notes. +message.activityLocked =The instructor has set this activity not to allow notes after you have finished it. As you are returning to this Notebook, you are able to see your notes but not allowed to add more. +titleHeading.instructions =Instructions +label.authoring.basic.instructions =Instructions: +label.on =On +label.off =Off +monitor.summary.th.advancedSettings =Advanced Settings + + +#======= End labels: Exported 81 labels for en AU ===== Index: lams_tool_wiki/conf/language/lams/ApplicationResources_en_AU.properties =================================================================== diff -u --- lams_tool_wiki/conf/language/lams/ApplicationResources_en_AU.properties (revision 0) +++ lams_tool_wiki/conf/language/lams/ApplicationResources_en_AU.properties (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,99 @@ +appName = notebook +#language code: en +#locale code: AU + + # CVS ID: $Id$ Exported from the LAMS Community by Ernie Ghiglione on Wed Aug 27 01:17:00 BST 2008 + +#=================== labels for Notebook =================# + +error.contentrepository =An error has occurred when saving/deleting instruction file {0}. The files may not be saved correctly. +button.instructions =Instructions +instructions.uploadOfflineInstr =Offline Instructions File: +instructions.uploadOnlineInstr =Online Instructions File: +instructions.offlineInstructions =Offline Instructions: +instructions.onlineInstructions =Online Instructions: +activity.helptext =Notebook for notes and reflections +message.contentInUseSet =Modification of content is not allowed since one or more students has attempted the activity. +error.content.locked =The content has been locked since it is being used by one or more learners. The modification of the content is not allowed. +tool.display.name =Notebook +tool.description =Notebook Tool +activity.title =Wiki +activity.description =Notebook Tool +pageTitle.authoring =Notebook Authoring +button.basic =Basic +button.advanced =Advanced +button.upload =Upload +label.authoring.basic.title =Title: +label.authoring.basic.content =Content: +advanced.lockOnFinished =Lock when finished +advanced.allowRichEditor =Allow rich text editor +instructions.type.online =Online +instructions.type.offline =Offline +label.filename =Filename +label.type =Type +label.attachments =Attachments +link.view =View +link.download =Download +link.delete =Delete +message.updateSuccess =Changes saved +message.unsavedChanges =Page contains unsaved changes +pageTitle.learning =Online Notebook +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 =Notebook 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 +heading.group =Group {0}: +heading.totalLearners =Number of Learners: +heading.totalLearnersInGroup =Total Number of Learners in Group: +heading.totalFinishedLearnersInGroup =Number of Finished Learners: +message.summary =There is no summary available for this tool. +label.view =View +label.notAvailable =Not Available +heading.learner =Learner +heading.notebookEntry =Notebook Entry +button.cancel =Cancel +button.ok =OK +button.done =Done +button.save =Save +button.next =Next +label.save =Save +label.cancel =Cancel +label.created =Created +label.lastModified =Last modified +label.notebookEntry =Notebook entry +error.missingParam =Unable to continue. {0} is missing. +error.exceedMaxFileSize =File size exceeded +error.exception.NbApplication =An internal error has occured with the Notebook Tool. If reporting this error, please report:
{0} +error.defineLater =Sorry, the activity is not ready yet. Please wait for the teacher to finishing defining the activity. +errors.maxfilesize =The uploaded file has exceeded the maximum file size limit of {0} bytes +error.mandatoryField ={0} field is mandatory. +error.mark.invalid.number ={0} field must be a valid number. Decimal points are not allowed. +error.mark.invalid.decimal.number ={0} field must be a valid decimal number. +authoring.msg.cancel.save =Do you want to close this window without saving? +button.try.again =Try Again +message.learner.blank.input =You have not written anything. Are you sure this is correct? +button.finish =Next Activity +message.alertContentEdit =Warning: One of more students have accessed this activity. Changing this content will result in students getting different information. +message.warnLockOnFinish =Note: After you click on "Next Activity" and you come back to this Notebook, you won't be able to continue adding notes. +message.activityLocked =The instructor has set this activity not to allow notes after you have finished it. As you are returning to this Notebook, you are able to see your notes but not allowed to add more. +titleHeading.instructions =Instructions +label.authoring.basic.instructions =Instructions: +label.wiki.body =Wiki Body +label.wiki.edit =Edit Page +label.wiki.add =Add Page +label.wiki.history =View History +label.wiki.remove =Remove +label.wiki.pages =Wiki Pages +label.wiki.main =(Main) +label.on =On +label.off =Off +monitor.summary.th.advancedSettings =Advanced Settings + + +#======= End labels: Exported 81 labels for en AU ===== Index: lams_tool_wiki/conf/language/rams/ApplicationResources.properties =================================================================== diff -u --- lams_tool_wiki/conf/language/rams/ApplicationResources.properties (revision 0) +++ lams_tool_wiki/conf/language/rams/ApplicationResources.properties (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,92 @@ +appName = notebook +#language code: en +#locale code: AU + + # CVS ID: $Id$ Exported from the LAMS Community by Ernie Ghiglione on Wed Aug 27 01:17:00 BST 2008 + +#=================== labels for Notebook =================# + +error.contentrepository =An error has occurred when saving/deleting instruction file {0}. The files may not be saved correctly. +button.instructions =Instructions +instructions.uploadOfflineInstr =Offline Instructions File: +instructions.uploadOnlineInstr =Online Instructions File: +instructions.offlineInstructions =Offline Instructions: +instructions.onlineInstructions =Online Instructions: +activity.helptext =Notebook for notes and reflections +message.contentInUseSet =Modification of content is not allowed since one or more students has attempted the activity. +error.content.locked =The content has been locked since it is being used by one or more learners. The modification of the content is not allowed. +tool.display.name =Notebook +tool.description =Notebook Tool +activity.title =Wiki +activity.description =Notebook Tool +pageTitle.authoring =Notebook Authoring +button.basic =Basic +button.advanced =Advanced +button.upload =Upload +label.authoring.basic.title =Title: +label.authoring.basic.content =Content: +advanced.lockOnFinished =Lock when finished +advanced.allowRichEditor =Allow rich text editor +instructions.type.online =Online +instructions.type.offline =Offline +label.filename =Filename +label.type =Type +label.attachments =Attachments +link.view =View +link.download =Download +link.delete =Delete +message.updateSuccess =Changes saved +message.unsavedChanges =Page contains unsaved changes +pageTitle.learning =Online Notebook +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 =Notebook 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 +heading.group =Group {0}: +heading.totalLearners =Number of Learners: +heading.totalLearnersInGroup =Total Number of Learners in Group: +heading.totalFinishedLearnersInGroup =Number of Finished Learners: +message.summary =There is no summary available for this tool. +label.view =View +label.notAvailable =Not Available +heading.learner =Learner +heading.notebookEntry =Notebook Entry +button.cancel =Cancel +button.ok =OK +button.done =Done +button.save =Save +button.next =Next +label.save =Save +label.cancel =Cancel +label.created =Created +label.lastModified =Last modified +label.notebookEntry =Notebook entry +error.missingParam =Unable to continue. {0} is missing. +error.exceedMaxFileSize =File size exceeded +error.exception.NbApplication =An internal error has occured with the Notebook Tool. If reporting this error, please report:
{0} +error.defineLater =Sorry, the activity is not ready yet. Please wait for the teacher to finishing defining the activity. +errors.maxfilesize =The uploaded file has exceeded the maximum file size limit of {0} bytes +error.mandatoryField ={0} field is mandatory. +error.mark.invalid.number ={0} field must be a valid number. Decimal points are not allowed. +error.mark.invalid.decimal.number ={0} field must be a valid decimal number. +authoring.msg.cancel.save =Do you want to close this window without saving? +button.try.again =Try Again +message.learner.blank.input =You have not written anything. Are you sure this is correct? +button.finish =Next Activity +message.alertContentEdit =Warning: One of more students have accessed this activity. Changing this content will result in students getting different information. +message.warnLockOnFinish =Note: After you click on "Next Activity" and you come back to this Notebook, you won't be able to continue adding notes. +message.activityLocked =The instructor has set this activity not to allow notes after you have finished it. As you are returning to this Notebook, you are able to see your notes but not allowed to add more. +titleHeading.instructions =Instructions +label.authoring.basic.instructions =Instructions: +label.on =On +label.off =Off +monitor.summary.th.advancedSettings =Advanced Settings + + +#======= End labels: Exported 81 labels for en AU ===== Index: lams_tool_wiki/conf/language/rams/ApplicationResources_en_AU.properties =================================================================== diff -u --- lams_tool_wiki/conf/language/rams/ApplicationResources_en_AU.properties (revision 0) +++ lams_tool_wiki/conf/language/rams/ApplicationResources_en_AU.properties (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,133 @@ +appName = wiki +#language code: en +#locale code: AU + + # CVS ID: $Id$ Exported from the LAMS Community by Ernie Ghiglione on Wed Aug 27 01:17:00 BST 2008 + +#=================== labels for Notebook =================# + +error.contentrepository =An error has occurred when saving/deleting instruction file {0}. The files may not be saved correctly. +button.instructions =Instructions +instructions.uploadOfflineInstr =Offline Instructions File: +instructions.uploadOnlineInstr =Online Instructions File: +instructions.offlineInstructions =Offline Instructions: +instructions.onlineInstructions =Online Instructions: +activity.helptext =Wiki tool for creating wiki pages +message.contentInUseSet =Modification of content is not allowed since one or more students has attempted the activity. +error.content.locked =The content has been locked since it is being used by one or more learners. The modification of the content is not allowed. +tool.display.name =Wiki +tool.description =Wiki Tool +activity.title =Wiki +activity.description =Wiki Tool +pageTitle.authoring =Wiki Authoring +button.basic =Basic +button.advanced =Advanced +button.upload =Upload +label.authoring.basic.title =Title: +label.authoring.basic.content =Content: +label.authoring.basic.wikipagevisible =Make wiki page editable +advanced.lockOnFinished =Lock when finished +advanced.allowLearnerCreatePages =Allow learners to create new wiki pages +advanced.allowLearnerInsertLinks =Allow learners to insert external links into wiki +advanced.allowLearnerAttachImages =Allow learners to attach images to wiki +advanced.reflectOnActivity =Add Notebook at end of forum with the following instructions: +advanced.editingLimits =Editing Limits +advanced.editingLimits.prompt =Number of times a learner can edit a page +advanced.editingLimits.minimum =Minimum: +advanced.editingLimits.maximum =Maximum: +advanced.editingLimits.nominimum =No minimum +advanced.editingLimits.nomaximum =No maximum +advanced.editingLimits.error =Maximum edits must be larger or equal to minimum. +instructions.type.online =Online +instructions.type.offline =Offline +label.filename =Filename +label.type =Type +label.attachments =Attachments +link.view =View +link.download =Download +link.delete =Delete +message.updateSuccess =Changes saved +message.unsavedChanges =Page contains unsaved changes +pageTitle.learning =Wiki +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 =Wiki 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 +heading.group =Group {0}: +heading.totalLearners =Number of Learners: +heading.totalLearnersInGroup =Total Number of Learners in Group: +heading.totalFinishedLearnersInGroup =Number of Finished Learners: +message.summary =There is no summary available for this tool. +label.view =View +label.notAvailable =Not Available +heading.learner =Learner +heading.notebookEntry =Notebook Entry +button.cancel =Cancel +button.close =Close +button.ok =OK +button.done =Done +button.save =Save +button.next =Next +label.save =Save +label.cancel =Cancel +label.created =Created +label.lastModified =Last modified +label.notebookEntry =Notebook entry +error.missingParam =Unable to continue. {0} is missing. +error.exceedMaxFileSize =File size exceeded +error.exception.NbApplication =An internal error has occured with the wiki Tool. If reporting this error, please report:
{0} +error.defineLater =Sorry, the activity is not ready yet. Please wait for the teacher to finishing defining the activity. +errors.maxfilesize =The uploaded file has exceeded the maximum file size limit of {0} bytes +error.mandatoryField ={0} field is mandatory. +error.mark.invalid.number ={0} field must be a valid number. Decimal points are not allowed. +error.mark.invalid.decimal.number ={0} field must be a valid decimal number. +authoring.msg.cancel.save =Do you want to close this window without saving? +button.try.again =Try Again +message.learner.blank.input =You have not written anything. Are you sure this is correct? +button.finish =Next Activity +message.alertContentEdit =Warning: One of more students have accessed this activity. Changing this content will result in students getting different information. +message.warnLockOnFinish =Note: After you click on "Next Activity" and you come back to this wiki, you won't be able to continue editing. +message.activityLocked =The instructor has set this activity not to allow editing after you have finished it. As you are returning to this wiki, you are able to see your wiki but not allowed to edit it. +titleHeading.instructions =Instructions +label.authoring.basic.instructions =Instructions: +label.wiki.body =Wiki Body +label.wiki.edit =Edit +label.wiki.add =Add +label.wiki.add.title.exists =A wiki page with title "{0}" already exists, please choose a different title. +label.wiki.add.title.required =A title is required for the wiki page. +label.wiki.last.edit =Last edited by {0}, at {1} +label.wiki.view =View +label.wiki.remove =Remove +label.wiki.remove.confirm =Delete entire wiki page? This action cannot be undone. +label.wiki.pages =Wiki Pages +label.wiki.main =(Main) +label.wiki.savechanges =Save changes +label.wiki.remove.confirm =Are you sure you want to delete this wiki page? This action cannot be undone. +label.wiki.history =History +label.wiki.history.version =Version +label.wiki.history.empty =There are no previous versions of this wiki page. +label.wiki.history.date =Edit Date +label.wiki.history.editor =Edit By +label.wiki.history.editor.author =Author +label.wiki.history.actions =Actions +label.wiki.history.actions.revert =Revert +label.wiki.history.actions.revert.tooltip =Revert back to this version +label.wiki.history.actions.compare =Compare +label.wiki.history.actions.view =View +label.wiki.history.actions.view.tooltip =View page version +label.wiki.history.actions.compare.tooltip =Compare current version to this version +label.wiki.compare =Comparing versions {0} +label.wiki.compare.added.line =Added lines +label.wiki.compare.removed.line =Removed lines +label.on =On +label.off =Off +monitor.summary.th.advancedSettings =Advanced Settings + + +#======= End labels: Exported 81 labels for en AU ===== Index: lams_tool_wiki/conf/middlegen/lams_tool_lawiki11-prefs.properties =================================================================== diff -u --- lams_tool_wiki/conf/middlegen/lams_tool_lawiki11-prefs.properties (revision 0) +++ lams_tool_wiki/conf/middlegen/lams_tool_lawiki11-prefs.properties (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,128 @@ +# Middlegen Preferences +hibernate.tables.tl_lawiki10_attachment.base-class-name=WikiAttachment +hibernate.tables.tl_lawiki10_attachment.columns.create_date.columnspecialty=property +hibernate.tables.tl_lawiki10_attachment.columns.create_date.java-name=createDate +hibernate.tables.tl_lawiki10_attachment.columns.create_date.java-type=java.sql.Timestamp +hibernate.tables.tl_lawiki10_attachment.columns.wiki_uid.columnspecialty=foreign key +hibernate.tables.tl_lawiki10_attachment.columns.wiki_uid.java-name=wikiUid +hibernate.tables.tl_lawiki10_attachment.columns.wiki_uid.java-type=java.lang.Long +hibernate.tables.tl_lawiki10_attachment.columns.file_name.inctostring=true +hibernate.tables.tl_lawiki10_attachment.columns.file_name.java-name=fileName +hibernate.tables.tl_lawiki10_attachment.columns.file_name.java-type=java.lang.String +hibernate.tables.tl_lawiki10_attachment.columns.file_type.java-name=fileType +hibernate.tables.tl_lawiki10_attachment.columns.file_type.java-type=java.lang.String +hibernate.tables.tl_lawiki10_attachment.columns.file_uuid.columnspecialty=property +hibernate.tables.tl_lawiki10_attachment.columns.file_uuid.incequals=false +hibernate.tables.tl_lawiki10_attachment.columns.file_uuid.inctostring=true +hibernate.tables.tl_lawiki10_attachment.columns.file_uuid.java-name=fileUuid +hibernate.tables.tl_lawiki10_attachment.columns.file_uuid.java-type=java.lang.Long +hibernate.tables.tl_lawiki10_attachment.columns.file_version_id.inctostring=true +hibernate.tables.tl_lawiki10_attachment.columns.file_version_id.java-name=fileVersionId +hibernate.tables.tl_lawiki10_attachment.columns.file_version_id.java-type=java.lang.Long +hibernate.tables.tl_lawiki10_attachment.columns.uid.columnspecialty=key +hibernate.tables.tl_lawiki10_attachment.columns.uid.incequals=true +hibernate.tables.tl_lawiki10_attachment.columns.uid.inctostring=true +hibernate.tables.tl_lawiki10_attachment.columns.uid.java-name=uid +hibernate.tables.tl_lawiki10_attachment.columns.uid.java-type=java.lang.Long +hibernate.tables.tl_lawiki10_attachment.equalshashcode=true +hibernate.tables.tl_lawiki10_attachment.keygenerator=native +hibernate.tables.tl_lawiki10_wiki.base-class-name=Wiki +hibernate.tables.tl_lawiki10_wiki.columns.content_in_use.java-name=contentInUse +hibernate.tables.tl_lawiki10_wiki.columns.content_in_use.java-type=java.lang.Boolean +hibernate.tables.tl_lawiki10_wiki.columns.create_by.java-name=createBy +hibernate.tables.tl_lawiki10_wiki.columns.create_by.java-type=java.lang.Long +hibernate.tables.tl_lawiki10_wiki.columns.create_date.java-name=createDate +hibernate.tables.tl_lawiki10_wiki.columns.create_date.java-type=java.sql.Timestamp +hibernate.tables.tl_lawiki10_wiki.columns.define_later.java-name=defineLater +hibernate.tables.tl_lawiki10_wiki.columns.define_later.java-type=java.lang.Boolean +hibernate.tables.tl_lawiki10_wiki.columns.instructions.inctostring=true +hibernate.tables.tl_lawiki10_wiki.columns.instructions.java-name=instructions +hibernate.tables.tl_lawiki10_wiki.columns.instructions.java-type=java.lang.String +hibernate.tables.tl_lawiki10_wiki.columns.lock_on_finished.java-name=lockOnFinished +hibernate.tables.tl_lawiki10_wiki.columns.lock_on_finished.java-type=java.lang.Boolean +hibernate.tables.tl_lawiki10_wiki.columns.offline_instructions.java-name=offlineInstructions +hibernate.tables.tl_lawiki10_wiki.columns.offline_instructions.java-type=java.lang.String +hibernate.tables.tl_lawiki10_wiki.columns.online_instructions.java-name=onlineInstructions +hibernate.tables.tl_lawiki10_wiki.columns.online_instructions.java-type=java.lang.String +hibernate.tables.tl_lawiki10_wiki.columns.run_offline.java-name=runOffline +hibernate.tables.tl_lawiki10_wiki.columns.run_offline.java-type=java.lang.Boolean +hibernate.tables.tl_lawiki10_wiki.columns.title.inctostring=true +hibernate.tables.tl_lawiki10_wiki.columns.title.java-name=title +hibernate.tables.tl_lawiki10_wiki.columns.title.java-type=java.lang.String +hibernate.tables.tl_lawiki10_wiki.columns.tool_content_id.inctostring=true +hibernate.tables.tl_lawiki10_wiki.columns.tool_content_id.java-name=toolContentId +hibernate.tables.tl_lawiki10_wiki.columns.tool_content_id.java-type=java.lang.Long +hibernate.tables.tl_lawiki10_wiki.columns.uid.columnspecialty=key +hibernate.tables.tl_lawiki10_wiki.columns.uid.incequals=true +hibernate.tables.tl_lawiki10_wiki.columns.uid.inctostring=true +hibernate.tables.tl_lawiki10_wiki.columns.uid.java-name=uid +hibernate.tables.tl_lawiki10_wiki.columns.uid.java-type=java.lang.Long +hibernate.tables.tl_lawiki10_wiki.columns.update_date.java-name=updateDate +hibernate.tables.tl_lawiki10_wiki.columns.update_date.java-type=java.sql.Timestamp +hibernate.tables.tl_lawiki10_wiki.dynamicInsert=false +hibernate.tables.tl_lawiki10_wiki.equalshashcode=true +hibernate.tables.tl_lawiki10_wiki.keygenerator=native +hibernate.tables.tl_lawiki10_session.base-class-name=WikiSession +hibernate.tables.tl_lawiki10_session.columns.wiki_uid.java-name=wikiUid +hibernate.tables.tl_lawiki10_session.columns.wiki_uid.java-type=java.lang.Long +hibernate.tables.tl_lawiki10_session.columns.session_end_date.inctostring=true +hibernate.tables.tl_lawiki10_session.columns.session_end_date.java-name=sessionEndDate +hibernate.tables.tl_lawiki10_session.columns.session_end_date.java-type=java.sql.Timestamp +hibernate.tables.tl_lawiki10_session.columns.session_id.inctostring=true +hibernate.tables.tl_lawiki10_session.columns.session_id.java-name=sessionId +hibernate.tables.tl_lawiki10_session.columns.session_id.java-type=java.lang.Long +hibernate.tables.tl_lawiki10_session.columns.session_name.inctostring=true +hibernate.tables.tl_lawiki10_session.columns.session_name.java-name=sessionName +hibernate.tables.tl_lawiki10_session.columns.session_name.java-type=java.lang.String +hibernate.tables.tl_lawiki10_session.columns.session_start_date.inctostring=true +hibernate.tables.tl_lawiki10_session.columns.session_start_date.java-name=sessionStartDate +hibernate.tables.tl_lawiki10_session.columns.session_start_date.java-type=java.sql.Timestamp +hibernate.tables.tl_lawiki10_session.columns.status.inctostring=true +hibernate.tables.tl_lawiki10_session.columns.status.java-name=status +hibernate.tables.tl_lawiki10_session.columns.status.java-type=java.lang.Integer +hibernate.tables.tl_lawiki10_session.columns.uid.columnspecialty=key +hibernate.tables.tl_lawiki10_session.columns.uid.incequals=true +hibernate.tables.tl_lawiki10_session.columns.uid.inctostring=true +hibernate.tables.tl_lawiki10_session.columns.uid.java-name=uid +hibernate.tables.tl_lawiki10_session.columns.uid.java-type=java.lang.Long +hibernate.tables.tl_lawiki10_session.equalshashcode=true +hibernate.tables.tl_lawiki10_session.keygenerator=native +hibernate.tables.tl_lawiki10_user.base-class-name=WikiUser +hibernate.tables.tl_lawiki10_user.columns.first_name.java-name=firstName +hibernate.tables.tl_lawiki10_user.columns.first_name.java-type=java.lang.String +hibernate.tables.tl_lawiki10_user.columns.last_name.columnspecialty=property +hibernate.tables.tl_lawiki10_user.columns.last_name.java-name=lastName +hibernate.tables.tl_lawiki10_user.columns.last_name.java-type=java.lang.String +hibernate.tables.tl_lawiki10_user.columns.session_id.inctostring=true +hibernate.tables.tl_lawiki10_user.columns.session_id.java-name=sessionId +hibernate.tables.tl_lawiki10_user.columns.session_id.java-type=java.lang.Long +hibernate.tables.tl_lawiki10_user.columns.uid.columnspecialty=key +hibernate.tables.tl_lawiki10_user.columns.uid.incequals=true +hibernate.tables.tl_lawiki10_user.columns.uid.inctostring=true +hibernate.tables.tl_lawiki10_user.columns.uid.java-name=uid +hibernate.tables.tl_lawiki10_user.columns.uid.java-type=java.lang.Long +hibernate.tables.tl_lawiki10_user.columns.user_id.inctostring=true +hibernate.tables.tl_lawiki10_user.columns.user_id.java-name=userId +hibernate.tables.tl_lawiki10_user.columns.user_id.java-type=java.lang.Long +hibernate.tables.tl_lawiki10_user.equalshashcode=true +hibernate.tables.tl_lawiki10_user.keygenerator=sequence +relations.tl_lawiki10_wiki-tl_lawiki10_attachment.tl_lawiki10_attachment-has-tl_lawiki10_wiki.enabled=true +relations.tl_lawiki10_wiki-tl_lawiki10_attachment.tl_lawiki10_attachment-has-tl_lawiki10_wiki.target-many=false +relations.tl_lawiki10_wiki-tl_lawiki10_attachment.tl_lawiki10_wiki-has-tl_lawiki10_attachment.enabled=true +relations.tl_lawiki10_wiki-tl_lawiki10_attachment.tl_lawiki10_wiki-has-tl_lawiki10_attachment.target-many=true +relations.tl_lawiki10_wiki-tl_lawiki10_session.tl_lawiki10_wiki-has-tl_lawiki10_session.enabled=true +relations.tl_lawiki10_wiki-tl_lawiki10_session.tl_lawiki10_wiki-has-tl_lawiki10_session.target-many=true +relations.tl_lawiki10_wiki-tl_lawiki10_session.tl_lawiki10_session-has-tl_lawiki10_wiki.enabled=true +relations.tl_lawiki10_wiki-tl_lawiki10_session.tl_lawiki10_session-has-tl_lawiki10_wiki.target-many=false +relations.tl_lawiki10_session-tl_lawiki10_user.tl_lawiki10_session-has-tl_lawiki10_user.enabled=true +relations.tl_lawiki10_session-tl_lawiki10_user.tl_lawiki10_session-has-tl_lawiki10_user.target-many=true +relations.tl_lawiki10_session-tl_lawiki10_user.tl_lawiki10_user-has-tl_lawiki10_session.enabled=true +relations.tl_lawiki10_session-tl_lawiki10_user.tl_lawiki10_user-has-tl_lawiki10_session.target-many=false +tables.tl_lawiki10_attachment.x=566 +tables.tl_lawiki10_attachment.y=173 +tables.tl_lawiki10_wiki.x=308 +tables.tl_lawiki10_wiki.y=176 +tables.tl_lawiki10_session.x=70 +tables.tl_lawiki10_session.y=70 +tables.tl_lawiki10_user.x=460 +tables.tl_lawiki10_user.y=28 Index: lams_tool_wiki/conf/war/META-INF/MANIFEST.MF =================================================================== diff -u --- lams_tool_wiki/conf/war/META-INF/MANIFEST.MF (revision 0) +++ lams_tool_wiki/conf/war/META-INF/MANIFEST.MF (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,4 @@ +Implementation-Title: LAMS - Wiki Tool +Implementation-Version: 2.1 +Implementation-Vendor: LAMS Foundation (http://lamsfoundation.org) +Class-Path: ./lams.jar ./lams-tool-lawiki10.jar ./lams-contentrepository.jar ./lams-learning.jar Index: lams_tool_wiki/conf/xdoclet/error-pages.xml =================================================================== diff -u --- lams_tool_wiki/conf/xdoclet/error-pages.xml (revision 0) +++ lams_tool_wiki/conf/xdoclet/error-pages.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,13 @@ + + 500 + /error.jsp + + + 403 + /403.jsp + + + 404 + /404.jsp + + Index: lams_tool_wiki/conf/xdoclet/filter-mappings.xml =================================================================== diff -u --- lams_tool_wiki/conf/xdoclet/filter-mappings.xml (revision 0) +++ lams_tool_wiki/conf/xdoclet/filter-mappings.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,14 @@ + + SystemSessionFilter + /* + + + + hibernateFilter + /* + + + + LocaleFilter + /* + Index: lams_tool_wiki/conf/xdoclet/filters.xml =================================================================== diff -u --- lams_tool_wiki/conf/xdoclet/filters.xml (revision 0) +++ lams_tool_wiki/conf/xdoclet/filters.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,24 @@ + + SystemSessionFilter + + org.lamsfoundation.lams.web.session.SystemSessionFilter + + + + + hibernateFilter + + org.lamsfoundation.lams.util.CustomizedOpenSessionInViewFilter + + + sessionFactoryBeanName + wikiSessionFactory + + + + + LocaleFilter + + org.lamsfoundation.lams.web.filter.LocaleFilter + + Index: lams_tool_wiki/conf/xdoclet/global-forwards.xml =================================================================== diff -u --- lams_tool_wiki/conf/xdoclet/global-forwards.xml (revision 0) +++ lams_tool_wiki/conf/xdoclet/global-forwards.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,3 @@ + + + Index: lams_tool_wiki/conf/xdoclet/listeners.xml =================================================================== diff -u --- lams_tool_wiki/conf/xdoclet/listeners.xml (revision 0) +++ lams_tool_wiki/conf/xdoclet/listeners.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,11 @@ + + + org.springframework.web.context.ContextLoaderListener + + + + + org.lamsfoundation.lams.web.session.SetMaxTimeoutListener + + + Index: lams_tool_wiki/conf/xdoclet/servlet-mappings.xml =================================================================== diff -u --- lams_tool_wiki/conf/xdoclet/servlet-mappings.xml (revision 0) +++ lams_tool_wiki/conf/xdoclet/servlet-mappings.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,20 @@ + + action + *.do + + + + + Connector + /fckeditor/editor/filemanager/browser/default/connectors/jsp/connector + + + + download + /download/* + + + + exportPortfolio + /exportPortfolio + Index: lams_tool_wiki/conf/xdoclet/servlets.xml =================================================================== diff -u --- lams_tool_wiki/conf/xdoclet/servlets.xml (revision 0) +++ lams_tool_wiki/conf/xdoclet/servlets.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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 + wikiToolContentHandler + + 3 + + + + exportPortfolio + org.lamsfoundation.lams.tool.wiki.web.servlets.ExportServlet + + Index: lams_tool_wiki/conf/xdoclet/struts-forms.xml =================================================================== diff -u --- lams_tool_wiki/conf/xdoclet/struts-forms.xml (revision 0) +++ lams_tool_wiki/conf/xdoclet/struts-forms.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1 @@ \ No newline at end of file Index: lams_tool_wiki/conf/xdoclet/struts-message-resources.xml =================================================================== diff -u --- lams_tool_wiki/conf/xdoclet/struts-message-resources.xml (revision 0) +++ lams_tool_wiki/conf/xdoclet/struts-message-resources.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1 @@ + Index: lams_tool_wiki/conf/xdoclet/struts-plugins.xml =================================================================== diff -u --- lams_tool_wiki/conf/xdoclet/struts-plugins.xml (revision 0) +++ lams_tool_wiki/conf/xdoclet/struts-plugins.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,9 @@ + + + + Index: lams_tool_wiki/conf/xdoclet/taglibs.xml =================================================================== diff -u --- lams_tool_wiki/conf/xdoclet/taglibs.xml (revision 0) +++ lams_tool_wiki/conf/xdoclet/taglibs.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/conf/xdoclet/web-security.xml =================================================================== diff -u --- lams_tool_wiki/conf/xdoclet/web-security.xml (revision 0) +++ lams_tool_wiki/conf/xdoclet/web-security.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/conf/xdoclet/web-settings.xml =================================================================== diff -u --- lams_tool_wiki/conf/xdoclet/web-settings.xml (revision 0) +++ lams_tool_wiki/conf/xdoclet/web-settings.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,20 @@ + + + + javax.servlet.jsp.jstl.fmt.localizationContext + org.lamsfoundation.lams.tool.wiki.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/learning/learningApplicationContext.xml + classpath:/org/lamsfoundation/lams/contentrepository/applicationContext.xml + classpath:/org/lamsfoundation/lams/tool/wiki/wikiApplicationContext.xml + classpath:/org/lamsfoundation/lams/tool/wiki/dbupdates/autopatchContext.xml + + + Index: lams_tool_wiki/db/model/wiki_tool.clay =================================================================== diff -u --- lams_tool_wiki/db/model/wiki_tool.clay (revision 0) +++ lams_tool_wiki/db/model/wiki_tool.clay (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,580 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+
Index: lams_tool_wiki/db/sql/activity_insert.sql =================================================================== diff -u --- lams_tool_wiki/db/sql/activity_insert.sql (revision 0) +++ lams_tool_wiki/db/sql/activity_insert.sql (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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 +, 'Wiki Tool' +, 'Wiki Tool' +, 'Put some help text here.' +, 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/lawiki10/images/icon_wiki.swf' +, NULL +, NULL +, NULL +, 'org.lamsfoundation.lams.tool.wiki.ApplicationResources' +) Index: lams_tool_wiki/db/sql/create_lams_tool_wiki.sql =================================================================== diff -u --- lams_tool_wiki/db/sql/create_lams_tool_wiki.sql (revision 0) +++ lams_tool_wiki/db/sql/create_lams_tool_wiki.sql (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,95 @@ +-- CVS ID: $Id$ + +SET FOREIGN_KEY_CHECKS=0; +drop table if exists tl_lawiki10_attachment; +drop table if exists tl_lawiki10_session; +drop table if exists tl_lawiki10_user; +drop table if exists tl_lawiki10_wiki; +drop table if exists tl_lawiki10_wiki_page; +drop table if exists tl_lawiki10_wiki_page_content; +create table tl_lawiki10_attachment (uid bigint not null auto_increment, file_version_id bigint, file_type varchar(255), file_name varchar(255), file_uuid bigint, create_date datetime, wiki_uid bigint, primary key (uid)); +create table tl_lawiki10_session (uid bigint not null auto_increment, session_end_date datetime, session_start_date datetime, status integer, session_id bigint, session_name varchar(250), wiki_uid bigint, primary key (uid)); +create table tl_lawiki10_user (uid bigint not null auto_increment, user_id bigint, last_name varchar(255), login_name varchar(255), first_name varchar(255), finishedActivity bit, wiki_session_uid bigint, entry_uid bigint, primary key (uid)); +create table tl_lawiki10_wiki (uid bigint not null auto_increment, create_date datetime, update_date datetime, create_by bigint, title varchar(255), instructions text, run_offline bit, lock_on_finished bit, allow_learner_create_pages bit, allow_learner_insert_links bit, allow_learner_attach_images bit, reflect_on_activity bit, reflect_instructions text, minimum_edits integer, maximum_edits integer, online_instructions text, offline_instructions text, content_in_use bit, define_later bit, tool_content_id bigint, wiki_main_page_uid bigint, primary key (uid)); +create table tl_lawiki10_wiki_page (uid bigint not null auto_increment, wiki_uid bigint, title varchar(255), editable bit, wiki_current_content bigint, wiki_session_uid bigint, primary key (uid)); +create table tl_lawiki10_wiki_page_content (uid bigint not null auto_increment, wiki_page_uid bigint, body text, editor bigint, edit_date datetime, version bigint, primary key (uid)); +alter table tl_lawiki10_attachment add index FK9406D87760B3B03B (wiki_uid), add constraint FK9406D87760B3B03B foreign key (wiki_uid) references tl_lawiki10_wiki (uid); +alter table tl_lawiki10_session add index FKF01D63C260B3B03B (wiki_uid), add constraint FKF01D63C260B3B03B foreign key (wiki_uid) references tl_lawiki10_wiki (uid); +alter table tl_lawiki10_user add index FKED5D7A1FD8004954 (wiki_session_uid), add constraint FKED5D7A1FD8004954 foreign key (wiki_session_uid) references tl_lawiki10_session (uid); +alter table tl_lawiki10_wiki add index FKED5E3E04A3FF7EC0 (wiki_main_page_uid), add constraint FKED5E3E04A3FF7EC0 foreign key (wiki_main_page_uid) references tl_lawiki10_wiki_page (uid); +alter table tl_lawiki10_wiki_page add index FK961AFFEAD8004954 (wiki_session_uid), add constraint FK961AFFEAD8004954 foreign key (wiki_session_uid) references tl_lawiki10_session (uid); +alter table tl_lawiki10_wiki_page add index FK961AFFEA60B3B03B (wiki_uid), add constraint FK961AFFEA60B3B03B foreign key (wiki_uid) references tl_lawiki10_wiki (uid); +alter table tl_lawiki10_wiki_page add index FK961AFFEAE48332B4 (wiki_current_content), add constraint FK961AFFEAE48332B4 foreign key (wiki_current_content) references tl_lawiki10_wiki_page_content (uid); +alter table tl_lawiki10_wiki_page_content add index FK528051242D44CCF8 (wiki_page_uid), add constraint FK528051242D44CCF8 foreign key (wiki_page_uid) references tl_lawiki10_wiki_page (uid); +alter table tl_lawiki10_wiki_page_content add index FK528051243233D952 (editor), add constraint FK528051243233D952 foreign key (editor) references tl_lawiki10_user (uid); + +INSERT INTO tl_lawiki10_wiki +( + title, + instructions, + online_instructions, + offline_instructions, + tool_content_id, + run_offline, + lock_on_finished, + content_in_use, + define_later, + allow_learner_create_pages, + allow_learner_insert_links, + allow_learner_attach_images, + reflect_on_activity, + reflect_instructions, + minimum_edits, + maximum_edits +) +VALUES +( + "Wiki", + "Instructions", + "", + "", + ${default_content_id}, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 0, + "", + 0, + 0 +); + +INSERT INTO tl_lawiki10_wiki_page +( + wiki_uid, + title, + editable +) +VALUES +( + 1, + "Wiki Main Page", + 1 +); + +INSERT INTO tl_lawiki10_wiki_page_content +( + wiki_page_uid, + body, + version +) +VALUES +( + 1, + "
Wiki Body
", + 0 +); + +UPDATE tl_lawiki10_wiki_page SET wiki_current_content=1 where uid=1; +UPDATE tl_lawiki10_wiki SET wiki_main_page_uid=1 where uid=1; + + +SET FOREIGN_KEY_CHECKS=1; Index: lams_tool_wiki/db/sql/db_version_insert.sql =================================================================== diff -u --- lams_tool_wiki/db/sql/db_version_insert.sql (revision 0) +++ lams_tool_wiki/db/sql/db_version_insert.sql (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,2 @@ +-- $Id$ +INSERT INTO patches VALUES ('@signature@', '@tool_version@', NOW(), 'F'); Index: lams_tool_wiki/db/sql/drop_lams_tool_wiki.sql =================================================================== diff -u --- lams_tool_wiki/db/sql/drop_lams_tool_wiki.sql (revision 0) +++ lams_tool_wiki/db/sql/drop_lams_tool_wiki.sql (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,13 @@ +-- CVS ID: $Id$ + +SET FOREIGN_KEY_CHECKS=0; +DROP TABLE IF EXISTS tl_lawiki10_user; +DROP TABLE IF EXISTS tl_lawiki10_attachment; +DROP TABLE IF EXISTS tl_lawiki10_session; +DROP TABLE IF EXISTS tl_lawiki10_wiki; +SET FOREIGN_KEY_CHECKS=1; + + + + + Index: lams_tool_wiki/db/sql/library_insert.sql =================================================================== diff -u --- lams_tool_wiki/db/sql/library_insert.sql (revision 0) +++ lams_tool_wiki/db/sql/library_insert.sql (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,16 @@ +-- CVS ID: $Id$ + +INSERT INTO lams_learning_library +( +description, +title, +valid_flag, +create_date_time +) +VALUES +( +'Wiki Tool', +'Wiki', +0, +NOW() +) Index: lams_tool_wiki/db/sql/table-schema.sql =================================================================== diff -u --- lams_tool_wiki/db/sql/table-schema.sql (revision 0) +++ lams_tool_wiki/db/sql/table-schema.sql (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,30 @@ +alter table tl_lawiki10_attachment drop foreign key FK9406D87760B3B03B; +alter table tl_lawiki10_session drop foreign key FKF01D63C260B3B03B; +alter table tl_lawiki10_user drop foreign key FKED5D7A1FD8004954; +alter table tl_lawiki10_wiki drop foreign key FKED5E3E04A3FF7EC0; +alter table tl_lawiki10_wiki_page drop foreign key FK961AFFEAD8004954; +alter table tl_lawiki10_wiki_page drop foreign key FK961AFFEA60B3B03B; +alter table tl_lawiki10_wiki_page drop foreign key FK961AFFEAE48332B4; +alter table tl_lawiki10_wiki_page_content drop foreign key FK528051242D44CCF8; +alter table tl_lawiki10_wiki_page_content drop foreign key FK528051243233D952; +drop table if exists tl_lawiki10_attachment; +drop table if exists tl_lawiki10_session; +drop table if exists tl_lawiki10_user; +drop table if exists tl_lawiki10_wiki; +drop table if exists tl_lawiki10_wiki_page; +drop table if exists tl_lawiki10_wiki_page_content; +create table tl_lawiki10_attachment (uid bigint not null auto_increment, file_version_id bigint, file_type varchar(255), file_name varchar(255), file_uuid bigint, create_date datetime, wiki_uid bigint, primary key (uid)); +create table tl_lawiki10_session (uid bigint not null auto_increment, session_end_date datetime, session_start_date datetime, status integer, session_id bigint, session_name varchar(250), wiki_uid bigint, primary key (uid)); +create table tl_lawiki10_user (uid bigint not null auto_increment, user_id bigint, last_name varchar(255), login_name varchar(255), first_name varchar(255), finishedActivity bit, wiki_session_uid bigint, entry_uid bigint, primary key (uid)); +create table tl_lawiki10_wiki (uid bigint not null auto_increment, create_date datetime, update_date datetime, create_by bigint, title varchar(255), instructions text, run_offline bit, lock_on_finished bit, allow_learner_create_pages bit, allow_learner_insert_links bit, allow_learner_attach_images bit, reflect_on_activity bit, reflect_instructions text, minimum_edits integer, maximum_edits integer, online_instructions text, offline_instructions text, content_in_use bit, define_later bit, tool_content_id bigint, wiki_main_page_uid bigint, primary key (uid)); +create table tl_lawiki10_wiki_page (uid bigint not null auto_increment, wiki_uid bigint, title varchar(255), editable bit, wiki_current_content bigint, wiki_session_uid bigint, primary key (uid)); +create table tl_lawiki10_wiki_page_content (uid bigint not null auto_increment, wiki_page_uid bigint, body text, editor bigint, edit_date datetime, version bigint, primary key (uid)); +alter table tl_lawiki10_attachment add index FK9406D87760B3B03B (wiki_uid), add constraint FK9406D87760B3B03B foreign key (wiki_uid) references tl_lawiki10_wiki (uid); +alter table tl_lawiki10_session add index FKF01D63C260B3B03B (wiki_uid), add constraint FKF01D63C260B3B03B foreign key (wiki_uid) references tl_lawiki10_wiki (uid); +alter table tl_lawiki10_user add index FKED5D7A1FD8004954 (wiki_session_uid), add constraint FKED5D7A1FD8004954 foreign key (wiki_session_uid) references tl_lawiki10_session (uid); +alter table tl_lawiki10_wiki add index FKED5E3E04A3FF7EC0 (wiki_main_page_uid), add constraint FKED5E3E04A3FF7EC0 foreign key (wiki_main_page_uid) references tl_lawiki10_wiki_page (uid); +alter table tl_lawiki10_wiki_page add index FK961AFFEAD8004954 (wiki_session_uid), add constraint FK961AFFEAD8004954 foreign key (wiki_session_uid) references tl_lawiki10_session (uid); +alter table tl_lawiki10_wiki_page add index FK961AFFEA60B3B03B (wiki_uid), add constraint FK961AFFEA60B3B03B foreign key (wiki_uid) references tl_lawiki10_wiki (uid); +alter table tl_lawiki10_wiki_page add index FK961AFFEAE48332B4 (wiki_current_content), add constraint FK961AFFEAE48332B4 foreign key (wiki_current_content) references tl_lawiki10_wiki_page_content (uid); +alter table tl_lawiki10_wiki_page_content add index FK528051242D44CCF8 (wiki_page_uid), add constraint FK528051242D44CCF8 foreign key (wiki_page_uid) references tl_lawiki10_wiki_page (uid); +alter table tl_lawiki10_wiki_page_content add index FK528051243233D952 (editor), add constraint FK528051243233D952 foreign key (editor) references tl_lawiki10_user (uid); Index: lams_tool_wiki/db/sql/tool_insert.sql =================================================================== diff -u --- lams_tool_wiki/db/sql/tool_insert.sql (revision 0) +++ lams_tool_wiki/db/sql/tool_insert.sql (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,62 @@ +-- 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, +language_file, +classpath_addition, +context_file, +create_date_time, +modified_date_time +) +VALUES +( +'lawiki10', +'wikiService', +'Wiki', +'Wiki', +'wiki', +'@tool_version@', +NULL, +NULL, +0, +2, +1, +'tool/lawiki10/learning.do?mode=learner', +'tool/lawiki10/learning.do?mode=author', +'tool/lawiki10/learning.do?mode=teacher', +'tool/lawiki10/authoring.do', +'tool/lawiki10/monitoring.do', +'tool/lawiki10/authoring.do?mode=teacher', +'tool/lawiki10/exportPortfolio?mode=learner', +'tool/lawiki10/exportPortfolio?mode=teacher', +'tool/lawiki10/contribute.do', +'tool/lawiki10/moderate.do', +'http://wiki.lamsfoundation.org/display/lamsdocs/lawiki10', +'org.lamsfoundation.lams.tool.wiki.ApplicationResources', +'lams-tool-lawiki10.jar', +'/org/lamsfoundation/lams/tool/wiki/wikiApplicationContext.xml', +NOW(), +NOW() +) Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/IWikiAttachmentDAO.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/IWikiAttachmentDAO.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/IWikiAttachmentDAO.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,35 @@ +/**************************************************************** + * 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.wiki.dao; + +import org.lamsfoundation.lams.dao.IBaseDAO; + +/** + * DAO for accessing the WikiAttachment objects - interface defining methods to + * be implemented by the Hibernate or other implementation. + */ +public interface IWikiAttachmentDAO extends IBaseDAO { + +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/IWikiDAO.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/IWikiDAO.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/IWikiDAO.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,42 @@ +/**************************************************************** + * 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.wiki.dao; + +import org.lamsfoundation.lams.dao.IBaseDAO; +import org.lamsfoundation.lams.tool.wiki.model.Wiki; + +/** + * DAO for accessing the Wiki objects - interface defining methods to be + * implemented by the Hibernate or other implementation. + */ +public interface IWikiDAO extends IBaseDAO { + + Wiki getByContentId(Long toolContentId); + + void saveOrUpdate(Wiki toContent); + + void deleteInstructionFile(Long toolContentId, Long uuid, Long versionId, String type); + +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/IWikiPageContentDAO.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/IWikiPageContentDAO.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/IWikiPageContentDAO.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,9 @@ +package org.lamsfoundation.lams.tool.wiki.dao; + +import org.lamsfoundation.lams.dao.IBaseDAO; +import org.lamsfoundation.lams.tool.wiki.model.WikiPageContent; + +public interface IWikiPageContentDAO extends IBaseDAO { + + void saveOrUpdate(WikiPageContent content); +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/IWikiPageDAO.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/IWikiPageDAO.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/IWikiPageDAO.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,15 @@ +package org.lamsfoundation.lams.tool.wiki.dao; + +import org.lamsfoundation.lams.dao.IBaseDAO; +import org.lamsfoundation.lams.tool.wiki.model.Wiki; +import org.lamsfoundation.lams.tool.wiki.model.WikiPage; +import org.lamsfoundation.lams.tool.wiki.model.WikiSession; + +public interface IWikiPageDAO extends IBaseDAO { + + void saveOrUpdate(WikiPage wikipage); + + WikiPage getByWikiAndTitle(Wiki wiki, String title); + + WikiPage getBySessionAndTitle(WikiSession wikiSession, String title); +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/IWikiSessionDAO.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/IWikiSessionDAO.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/IWikiSessionDAO.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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.wiki.dao; + +import org.lamsfoundation.lams.dao.IBaseDAO; +import org.lamsfoundation.lams.tool.wiki.model.WikiSession; + +/** + * DAO for accessing the WikiSession objects - interface defining methods to be + * implemented by the Hibernate or other implementation. + */ +public interface IWikiSessionDAO extends IBaseDAO { + + void saveOrUpdate(WikiSession session); + + WikiSession getBySessionId(Long toolSessionId); + + void deleteBySessionID(Long toolSessionID); +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/IWikiUserDAO.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/IWikiUserDAO.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/IWikiUserDAO.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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.wiki.dao; + +import org.lamsfoundation.lams.dao.IBaseDAO; +import org.lamsfoundation.lams.tool.wiki.model.WikiUser; + +/** + * DAO for accessing the WikiUser objects - interface defining methods to be + * implemented by the Hibernate or other implementation. + */ +public interface IWikiUserDAO extends IBaseDAO { + /** + * + * @param userId + * @param toolSessionId + * @return + */ + WikiUser getByUserIdAndSessionId(Long userId, Long toolSessionId); + + void saveOrUpdate(WikiUser wikiUser); + + /** + * + * @param loginName + * @param sessionID + * @return + */ + WikiUser getByLoginNameAndSessionId(String loginName, Long toolSessionId); + + /** + * + * @param uid + * @return + */ + WikiUser getByUID(Long uid); +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/hibernate/WikiAttachmentDAO.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/hibernate/WikiAttachmentDAO.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/hibernate/WikiAttachmentDAO.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,35 @@ +/**************************************************************** + * 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.wiki.dao.hibernate; + +import org.lamsfoundation.lams.dao.hibernate.BaseDAO; +import org.lamsfoundation.lams.tool.wiki.dao.IWikiAttachmentDAO; + +/** + * DAO for accessing the WikiAttachment objects - Hibernate specific code. + */ +public class WikiAttachmentDAO extends BaseDAO implements IWikiAttachmentDAO { + +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/hibernate/WikiDAO.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/hibernate/WikiDAO.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/hibernate/WikiDAO.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,73 @@ +/**************************************************************** + * 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.wiki.dao.hibernate; + +import java.util.List; + +import org.hibernate.FlushMode; +import org.lamsfoundation.lams.dao.hibernate.BaseDAO; +import org.lamsfoundation.lams.tool.wiki.dao.IWikiDAO; +import org.lamsfoundation.lams.tool.wiki.model.Wiki; +import org.lamsfoundation.lams.tool.wiki.model.WikiAttachment; +import org.springframework.orm.hibernate3.HibernateTemplate; + +/** + * DAO for accessing the Wiki objects - Hibernate specific code. + */ +public class WikiDAO extends BaseDAO implements IWikiDAO { + + private static final String FIND_FORUM_BY_CONTENTID = "from Wiki wiki where wiki.toolContentId=?"; + + private static final String FIND_INSTRUCTION_FILE = "from " + WikiAttachment.class.getName() + + " as i where tool_content_id=? and i.file_uuid=? and i.file_version_id=? and i.file_type=?"; + + public Wiki getByContentId(Long toolContentId) { + List list = getHibernateTemplate().find(FIND_FORUM_BY_CONTENTID, toolContentId); + if (list != null && list.size() > 0) + return (Wiki) list.get(0); + else + return null; + } + + public void saveOrUpdate(Wiki wiki) { + this.getHibernateTemplate().saveOrUpdate(wiki); + this.getHibernateTemplate().flush(); + } + + public void deleteInstructionFile(Long toolContentId, Long uuid, Long versionId, String type) { + HibernateTemplate templ = this.getHibernateTemplate(); + if (toolContentId != null && uuid != null && versionId != null) { + List list = getSession().createQuery(FIND_INSTRUCTION_FILE).setLong(0, toolContentId.longValue()).setLong( + 1, uuid.longValue()).setLong(2, versionId.longValue()).setString(3, type).list(); + if (list != null && list.size() > 0) { + WikiAttachment file = (WikiAttachment) list.get(0); + this.getSession().setFlushMode(FlushMode.AUTO); + templ.delete(file); + templ.flush(); + } + } + + } +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/hibernate/WikiPageContentDAO.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/hibernate/WikiPageContentDAO.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/hibernate/WikiPageContentDAO.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,13 @@ +package org.lamsfoundation.lams.tool.wiki.dao.hibernate; + +import org.lamsfoundation.lams.tool.wiki.model.WikiPageContent; +import org.lamsfoundation.lams.tool.wiki.dao.IWikiPageContentDAO; +import org.lamsfoundation.lams.dao.hibernate.BaseDAO; + +public class WikiPageContentDAO extends BaseDAO implements IWikiPageContentDAO { + + public void saveOrUpdate(WikiPageContent content) { + this.getHibernateTemplate().saveOrUpdate(content); + } + +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/hibernate/WikiPageDAO.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/hibernate/WikiPageDAO.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/hibernate/WikiPageDAO.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,44 @@ +package org.lamsfoundation.lams.tool.wiki.dao.hibernate; + +import org.hibernate.Query; +import org.lamsfoundation.lams.dao.hibernate.BaseDAO; +import org.lamsfoundation.lams.tool.wiki.dao.IWikiPageDAO; +import org.lamsfoundation.lams.tool.wiki.model.Wiki; +import org.lamsfoundation.lams.tool.wiki.model.WikiPage; +import org.lamsfoundation.lams.tool.wiki.model.WikiSession; + +public class WikiPageDAO extends BaseDAO implements IWikiPageDAO { + + public static final String GET_BY_WIKI_AND_TITLE = "from tl_lawiki10_wiki_page in class " + + WikiPage.class.getName() + " where wiki_uid=? AND title=? AND wiki_session_uid=null"; + + public static final String GET_BY_SESSION_AND_TITLE = "from tl_lawiki10_wiki_page in class " + + WikiPage.class.getName() + " where wiki_session_uid=? AND title=?"; + + public void saveOrUpdate(WikiPage wikiPage) { + this.getHibernateTemplate().saveOrUpdate(wikiPage); + } + + public WikiPage getByWikiAndTitle(Wiki wiki, String title) { + if (wiki != null && title != null && title.length() > 0) { + Long wikiId = wiki.getUid(); + Query query = this.getSession().createQuery(GET_BY_WIKI_AND_TITLE); + query.setLong(0, wikiId); + query.setString(1, title); + return (WikiPage) query.uniqueResult(); + } + return null; + } + + public WikiPage getBySessionAndTitle(WikiSession wikiSession, String title) { + if (wikiSession != null && title != null && title.length() > 0) { + Long wikiId = wikiSession.getUid(); + Query query = this.getSession().createQuery(GET_BY_SESSION_AND_TITLE); + query.setLong(0, wikiId); + query.setString(1, title); + return (WikiPage) query.uniqueResult(); + } + return null; + } + +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/hibernate/WikiSessionDAO.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/hibernate/WikiSessionDAO.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/hibernate/WikiSessionDAO.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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.wiki.dao.hibernate; + +import java.util.List; + +import org.lamsfoundation.lams.dao.hibernate.BaseDAO; +import org.lamsfoundation.lams.tool.wiki.dao.IWikiSessionDAO; +import org.lamsfoundation.lams.tool.wiki.model.WikiSession; + +/** + * DAO for accessing the WikiSession objects - Hibernate specific code. + */ +public class WikiSessionDAO extends BaseDAO implements IWikiSessionDAO { + + public static final String SQL_QUERY_FIND_BY_SESSION_ID = "from " + WikiSession.class.getName() + + " where session_id=?"; + + public void saveOrUpdate(WikiSession session) { + this.getHibernateTemplate().saveOrUpdate(session); + this.getHibernateTemplate().flush(); + } + + public WikiSession getBySessionId(Long toolSessionId) { + List list = this.getHibernateTemplate().find(SQL_QUERY_FIND_BY_SESSION_ID, toolSessionId); + if (list == null || list.isEmpty()) + return null; + return (WikiSession) list.get(0); + } + + public void deleteBySessionID(Long toolSessionID) { + WikiSession session = getBySessionId(toolSessionID); + if (session != null) { + this.getHibernateTemplate().delete(session); + this.getHibernateTemplate().flush(); + } + } +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/hibernate/WikiUserDAO.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/hibernate/WikiUserDAO.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dao/hibernate/WikiUserDAO.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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.wiki.dao.hibernate; + +import java.util.List; + +import org.lamsfoundation.lams.dao.hibernate.BaseDAO; +import org.lamsfoundation.lams.tool.wiki.dao.IWikiUserDAO; +import org.lamsfoundation.lams.tool.wiki.model.WikiUser; + +/** + * DAO for accessing the WikiUser objects - Hibernate specific code. + */ +public class WikiUserDAO extends BaseDAO implements IWikiUserDAO { + + public static final String SQL_QUERY_FIND_BY_USER_ID_SESSION_ID = "from " + WikiUser.class.getName() + " as f" + + " where user_id=? and f.wikiSession.sessionId=?"; + + public static final String SQL_QUERY_FIND_BY_LOGIN_NAME_SESSION_ID = "from " + WikiUser.class.getName() + + " as f where login_name=? and f.wikiSession.sessionId=?"; + + private static final String SQL_QUERY_FIND_BY_UID = "from " + WikiUser.class.getName() + " where uid=?"; + + public WikiUser 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 (WikiUser) list.get(0); + } + + public WikiUser 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 (WikiUser) list.get(0); + + } + + public void saveOrUpdate(WikiUser wikiUser) { + this.getHibernateTemplate().saveOrUpdate(wikiUser); + this.getHibernateTemplate().flush(); + } + + public WikiUser getByUID(Long uid) { + List list = this.getHibernateTemplate().find(SQL_QUERY_FIND_BY_UID, new Object[] { uid }); + + if (list == null || list.isEmpty()) + return null; + + return (WikiUser) list.get(0); + } +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dbupdates/autopatchContext.xml =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dbupdates/autopatchContext.xml (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dbupdates/autopatchContext.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,11 @@ + + + + + + + + + + + Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dto/NotebookEntryDTO.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dto/NotebookEntryDTO.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dto/NotebookEntryDTO.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,56 @@ +package org.lamsfoundation.lams.tool.wiki.dto; + +import java.util.Date; + +import org.lamsfoundation.lams.notebook.model.NotebookEntry; + +public class NotebookEntryDTO { + + private Long uid; + + private String entry; + + private Date createDate; + + private Date lastModified; + + public NotebookEntryDTO(NotebookEntry entry) { + this.uid = entry.getUid(); + this.entry = entry.getEntry(); + this.createDate = entry.getCreateDate(); + this.lastModified = entry.getLastModified(); + } + + public Date getCreateDate() { + return createDate; + } + + public void setCreateDate(Date createDate) { + this.createDate = createDate; + } + + public String getEntry() { + return entry; + } + + public void setEntry(String entry) { + this.entry = entry; + } + + public Date getLastModified() { + return lastModified; + } + + public void setLastModified(Date lastModified) { + this.lastModified = lastModified; + } + + public Long getUid() { + return uid; + } + + public void setUid(Long uid) { + this.uid = uid; + } + +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dto/WikiAttachmentDTO.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dto/WikiAttachmentDTO.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dto/WikiAttachmentDTO.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,101 @@ +/**************************************************************** + * 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.wiki.dto; + +import java.util.Date; + +import org.lamsfoundation.lams.tool.wiki.model.WikiAttachment; + +public class WikiAttachmentDTO implements Comparable { + + public WikiAttachmentDTO(WikiAttachment att) { + this.fileUuid = att.getFileUuid(); + this.fileName = att.getFileName(); + this.fileVersionId = att.getFileVersionId(); + this.createDate = att.getCreateDate(); + this.uid = att.getUid(); + } + + Long uid; + + Long fileUuid; + + Long fileVersionId; + + String fileName; + + Date createDate; + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + public Long getFileUuid() { + return fileUuid; + } + + public void setFileUuid(Long fileUuid) { + this.fileUuid = fileUuid; + } + + public Long getFileVersionId() { + return fileVersionId; + } + + public void setFileVersionId(Long fileVersionId) { + this.fileVersionId = fileVersionId; + } + + public Date getCreateDate() { + return createDate; + } + + public void setCreateDate(Date createDate) { + this.createDate = createDate; + } + + public Long getUid() { + return uid; + } + + public void setUid(Long uid) { + this.uid = uid; + } + + public int compareTo(Object o) { + WikiAttachmentDTO toAttachment = (WikiAttachmentDTO) o; + int returnValue = this.createDate.compareTo(((WikiAttachmentDTO) o).getCreateDate()); + + if (returnValue == 0) { + returnValue = this.uid.compareTo(toAttachment.getUid()); + } + return returnValue; + } +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dto/WikiDTO.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dto/WikiDTO.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dto/WikiDTO.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,281 @@ +/**************************************************************** + * 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.wiki.dto; + +import java.util.Iterator; +import java.util.Set; +import java.util.TreeSet; + +import org.apache.log4j.Logger; +import org.lamsfoundation.lams.contentrepository.client.IToolContentHandler; +import org.lamsfoundation.lams.tool.wiki.model.Wiki; +import org.lamsfoundation.lams.tool.wiki.model.WikiAttachment; +import org.lamsfoundation.lams.tool.wiki.model.WikiSession; + +public class WikiDTO { + + private static Logger logger = Logger.getLogger(WikiDTO.class); + + public Long toolContentId; + + public String title; + + public String instructions; + + public String onlineInstructions; + + public String offlineInstructions; + + public boolean defineLater; + + public boolean contentInUse; + + public boolean lockOnFinish; + + private boolean allowLearnerCreatePages; + + private boolean allowLearnerInsertLinks; + + private boolean allowLearnerAttachImages; + + private boolean reflectOnActivity; + + private String reflectInstructions; + + private Integer minimumEdits; + + private Integer maximumEdits; + + public Set onlineInstructionsFiles; + + public Set offlineInstructionsFiles; + + public Set sessionDTOs = new TreeSet(); + + public Long currentTab; + + /* Constructors */ + public WikiDTO() { + } + + public WikiDTO(Wiki wiki) { + toolContentId = wiki.getToolContentId(); + title = wiki.getTitle(); + instructions = wiki.getInstructions(); + onlineInstructions = wiki.getOnlineInstructions(); + offlineInstructions = wiki.getOfflineInstructions(); + contentInUse = wiki.isContentInUse(); + lockOnFinish = wiki.isLockOnFinished(); + allowLearnerCreatePages = wiki.isAllowLearnerCreatePages(); + allowLearnerInsertLinks = wiki.isAllowLearnerInsertLinks(); + allowLearnerAttachImages = wiki.isAllowLearnerAttachImages(); + reflectOnActivity = wiki.isReflectOnActivity(); + reflectInstructions = wiki.getReflectInstructions(); + minimumEdits = wiki.getMinimumEdits(); + maximumEdits = wiki.getMaximumEdits(); + + onlineInstructionsFiles = new TreeSet(); + offlineInstructionsFiles = new TreeSet(); + + for (Iterator i = wiki.getWikiAttachments().iterator(); i.hasNext();) { + WikiAttachment att = (WikiAttachment) i.next(); + if (att.getFileType().equals(IToolContentHandler.TYPE_OFFLINE)) { + WikiAttachmentDTO attDTO = new WikiAttachmentDTO(att); + offlineInstructionsFiles.add(attDTO); + } else if (att.getFileType().equals(IToolContentHandler.TYPE_ONLINE)) { + WikiAttachmentDTO attDTO = new WikiAttachmentDTO(att); + onlineInstructionsFiles.add(attDTO); + } else { + // something is wrong. Ignore file, log error + logger.error("File with uid " + att.getFileUuid() + " contains invalid fileType: " + att.getFileType()); + } + } + + for (Iterator iter = wiki.getWikiSessions().iterator(); iter.hasNext();) { + WikiSession session = (WikiSession) iter.next(); + WikiSessionDTO sessionDTO = new WikiSessionDTO(session); + + sessionDTOs.add(sessionDTO); + } + } + + /* Getters / Setters */ + public Set getSessionDTOs() { + return sessionDTOs; + } + + public void setSessionDTOs(Set sessionDTOs) { + this.sessionDTOs = sessionDTOs; + } + + public String getInstructions() { + return instructions; + } + + public void setInstructions(String instructions) { + this.instructions = instructions; + } + + public String getOfflineInstructions() { + return offlineInstructions; + } + + public void setOfflineInstructions(String offlineInstructions) { + this.offlineInstructions = offlineInstructions; + } + + public Set getOfflineInstructionsFiles() { + return offlineInstructionsFiles; + } + + public void setOfflineInstructionsFiles(Set offlineInstructionsFiles) { + this.offlineInstructionsFiles = offlineInstructionsFiles; + } + + public String getOnlineInstructions() { + return onlineInstructions; + } + + public void setOnlineInstructions(String onlineInstructions) { + this.onlineInstructions = onlineInstructions; + } + + public Set getOnlineInstructionsFiles() { + return onlineInstructionsFiles; + } + + public void setOnlineInstructionsFiles(Set onlineInstructionsFiles) { + this.onlineInstructionsFiles = onlineInstructionsFiles; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public Long getToolContentId() { + return toolContentId; + } + + public void setToolContentId(Long toolContentID) { + this.toolContentId = toolContentID; + } + + public Boolean getContentInUse() { + return contentInUse; + } + + public void setContentInUse(Boolean contentInUse) { + this.contentInUse = contentInUse; + } + + public boolean isDefineLater() { + return defineLater; + } + + public void setDefineLater(boolean defineLater) { + this.defineLater = defineLater; + } + + public boolean isAllowLearnerCreatePages() { + return allowLearnerCreatePages; + } + + public void setAllowLearnerCreatePages(boolean allowLearnerCreatePages) { + this.allowLearnerCreatePages = allowLearnerCreatePages; + } + + public boolean isAllowLearnerInsertLinks() { + return allowLearnerInsertLinks; + } + + public void setAllowLearnerInsertLinks(boolean allowLearnerInsertLinks) { + this.allowLearnerInsertLinks = allowLearnerInsertLinks; + } + + public boolean isAllowLearnerAttachImages() { + return allowLearnerAttachImages; + } + + public void setAllowLearnerAttachImages(boolean allowLearnerAttachImages) { + this.allowLearnerAttachImages = allowLearnerAttachImages; + } + + public boolean isReflectOnActivity() { + return reflectOnActivity; + } + + public void setReflectOnActivity(boolean reflectOnActivity) { + this.reflectOnActivity = reflectOnActivity; + } + + public String getReflectInstructions() { + return reflectInstructions; + } + + public void setReflectInstructions(String reflectInstructions) { + this.reflectInstructions = reflectInstructions; + } + + public Integer getMinimumEdits() { + return minimumEdits; + } + + public void setMinimumEdits(Integer minimumEdits) { + this.minimumEdits = minimumEdits; + } + + public Integer getMaximumEdits() { + return maximumEdits; + } + + public void setMaximumEdits(Integer maximumEdits) { + this.maximumEdits = maximumEdits; + } + + public void setContentInUse(boolean contentInUse) { + this.contentInUse = contentInUse; + } + + public boolean isLockOnFinish() { + return lockOnFinish; + } + + public void setLockOnFinish(boolean lockOnFinish) { + this.lockOnFinish = lockOnFinish; + } + + public Long getCurrentTab() { + return currentTab; + } + + public void setCurrentTab(Long currentTab) { + this.currentTab = currentTab; + } +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dto/WikiPageContentDTO.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dto/WikiPageContentDTO.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dto/WikiPageContentDTO.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,72 @@ +package org.lamsfoundation.lams.tool.wiki.dto; + +import java.util.Date; + +import org.lamsfoundation.lams.tool.wiki.model.WikiPageContent; + +public class WikiPageContentDTO implements Comparable { + + public Long uid; + public String body; + public WikiUserDTO editorDTO; + public Date editDate; + public Long version; + + public WikiPageContentDTO() { + } + + public WikiPageContentDTO(WikiPageContent pageContent) { + this.uid = pageContent.getUid(); + this.body = pageContent.getBody(); + this.editDate = pageContent.getEditDate(); + this.version = pageContent.getVersion(); + + if (pageContent.getEditor() != null) { + this.editorDTO = new WikiUserDTO(pageContent.getEditor()); + } + } + + public Long getUid() { + return uid; + } + + public void setUid(Long uid) { + this.uid = uid; + } + + public String getBody() { + return body; + } + + public void setBody(String body) { + this.body = body; + } + + public WikiUserDTO getEditorDTO() { + return editorDTO; + } + + public void setEditorDTO(WikiUserDTO editorDTO) { + this.editorDTO = editorDTO; + } + + public Date getEditDate() { + return editDate; + } + + public void setEditDate(Date editDate) { + this.editDate = editDate; + } + + public Long getVersion() { + return version; + } + + public void setVersion(Long version) { + this.version = version; + } + + public int compareTo(WikiPageContentDTO wikiPageContentDTO) { + return wikiPageContentDTO.getUid().compareTo(uid) * -1; + } +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dto/WikiPageDTO.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dto/WikiPageDTO.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dto/WikiPageDTO.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,58 @@ +package org.lamsfoundation.lams.tool.wiki.dto; + +import org.lamsfoundation.lams.tool.wiki.model.WikiPage; + +public class WikiPageDTO implements Comparable { + + private Long uid; + private String title; + private Boolean editable; + private WikiPageContentDTO currentWikiContentDTO; + + public WikiPageDTO() { + } + + public WikiPageDTO(WikiPage wikiPage) { + this.uid = wikiPage.getUid(); + this.title = wikiPage.getTitle(); + this.editable = wikiPage.getEditable(); + this.currentWikiContentDTO = new WikiPageContentDTO(wikiPage.getCurrentWikiContent()); + } + + public Long getUid() { + return uid; + } + + public void setUid(Long uid) { + this.uid = uid; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public Boolean getEditable() { + return editable; + } + + public void setEditable(Boolean editable) { + this.editable = editable; + } + + public WikiPageContentDTO getCurrentWikiContentDTO() { + return currentWikiContentDTO; + } + + public void setCurrentWikiContentDTO(WikiPageContentDTO currentWikiContentDTO) { + this.currentWikiContentDTO = currentWikiContentDTO; + } + + public int compareTo(WikiPageDTO wikiPageDTO) { + return wikiPageDTO.getUid().compareTo(uid) * -1; + } + +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dto/WikiSessionDTO.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dto/WikiSessionDTO.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dto/WikiSessionDTO.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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 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.wiki.dto; + +import java.util.Iterator; +import java.util.Set; +import java.util.TreeSet; + +import org.lamsfoundation.lams.tool.wiki.model.WikiSession; +import org.lamsfoundation.lams.tool.wiki.model.WikiUser; + +public class WikiSessionDTO implements Comparable { + + Long sessionID; + + String sessionName; + + Set userDTOs = new TreeSet(); + + int numberOfLearners; + + int numberOfFinishedLearners;; + + public WikiSessionDTO(WikiSession session) { + this.sessionID = session.getSessionId(); + this.sessionName = session.getSessionName(); + + numberOfFinishedLearners = 0; + for (Iterator iterator = session.getWikiUsers().iterator(); iterator.hasNext();) { + WikiUser user = (WikiUser) iterator.next(); + WikiUserDTO userDTO = new WikiUserDTO(user); + if (userDTO.getEntryUID() != null) { + numberOfFinishedLearners++; + } + userDTOs.add(userDTO); + } + + numberOfLearners = userDTOs.size(); + + } + + public WikiSessionDTO() { + } + + 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; + WikiSessionDTO toSession = (WikiSessionDTO) 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 wikiUsers) { + this.userDTOs = wikiUsers; + } + + 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; + } +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dto/WikiUserDTO.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dto/WikiUserDTO.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/dto/WikiUserDTO.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,131 @@ +/**************************************************************** + * 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.wiki.dto; + +import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.tool.wiki.model.WikiUser; + +public class WikiUserDTO implements Comparable { + + public Long uid; + + public String loginName; + + public String firstName; + + public String lastName; + + public boolean finishedActivity; + + public NotebookEntryDTO entryDTO; + + public Long entryUID; + + public WikiUserDTO(WikiUser user, NotebookEntry entry) { + this.uid = user.getUid(); + this.loginName = user.getLoginName(); + this.firstName = user.getFirstName(); + this.lastName = user.getLastName(); + this.finishedActivity = user.isFinishedActivity(); + this.entryUID = user.getEntryUID(); + this.entryDTO = new NotebookEntryDTO(entry); + } + + public WikiUserDTO(WikiUser user) { + this.uid = user.getUid(); + this.loginName = user.getLoginName(); + this.firstName = user.getFirstName(); + this.lastName = user.getLastName(); + this.finishedActivity = user.isFinishedActivity(); + this.entryUID = user.getEntryUID(); + } + + public int compareTo(Object o) { + int returnValue; + WikiUserDTO toUser = (WikiUserDTO) 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 NotebookEntryDTO getEntryDTO() { + return entryDTO; + } + + public void setEntryDTO(NotebookEntryDTO entryDTO) { + this.entryDTO = entryDTO; + } + + public Long getEntryUID() { + return entryUID; + } + + public void setEntryUID(Long entryUID) { + this.entryUID = entryUID; + } + + public boolean isFinishedActivity() { + return finishedActivity; + } + + public void setFinishedActivity(boolean finishedActivity) { + this.finishedActivity = finishedActivity; + } +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/model/Wiki.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/model/Wiki.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/model/Wiki.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,545 @@ +/**************************************************************** + * 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.wiki.model; + +import java.util.Date; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Set; + +import org.apache.log4j.Logger; +import org.lamsfoundation.lams.contentrepository.client.IToolContentHandler; + +/** + * @hibernate.class table="tl_lawiki10_wiki" + */ + +public class Wiki implements java.io.Serializable, Cloneable { + + /** + * + */ + private static final long serialVersionUID = 382787654329119829L; + + static Logger log = Logger.getLogger(Wiki.class.getName()); + + // Fields + /** + * + */ + private Long uid; + + private Date createDate; + + private Date updateDate; + + private Long createBy; + + private String title; + + private String instructions; + + private boolean runOffline; + + // BEGIN ADVANCED OPTIONS------------------ + + // Lock the wiki after learner is finished + private boolean lockOnFinished; + + // Allow learners to create their own pages + private boolean allowLearnerCreatePages; + + // Allow learners to insert external links into wiki + private boolean allowLearnerInsertLinks; + + // Allow learners to attach images to the wiki page + private boolean allowLearnerAttachImages; + + // Add notebook at the end of activity + private boolean reflectOnActivity; + + // instructions for notebook + private String reflectInstructions; + + // Minimum number of edits a learner must do before finishing activity + private Integer minimumEdits; + + // Maximum number of edits a learner can do for an activity + private Integer maximumEdits; + + // END ADVANCED OPTIONS------------------ + + private String onlineInstructions; + + private String offlineInstructions; + + private boolean contentInUse; + + private boolean defineLater; + + private Long toolContentId; + + private Set wikiAttachments; + + private Set wikiSessions; + + private Set wikiPages; + + private WikiPage mainPage; + + // *********** NON Persist fields + private IToolContentHandler toolContentHandler; + + // Constructors + + /** default constructor */ + public Wiki() { + } + + /** full constructor */ + public Wiki(Date createDate, Date updateDate, Long createBy, String title, String instructions, boolean runOffline, + boolean lockOnFinished, boolean filteringEnabled, String filterKeywords, String onlineInstructions, + String offlineInstructions, boolean contentInUse, boolean defineLater, Long toolContentId, + Set wikiAttachments, Set wikiSessions, Set wikiPages) { + this.createDate = createDate; + this.updateDate = updateDate; + this.createBy = createBy; + this.title = title; + this.instructions = instructions; + this.runOffline = runOffline; + this.lockOnFinished = lockOnFinished; + this.onlineInstructions = onlineInstructions; + this.offlineInstructions = offlineInstructions; + this.contentInUse = contentInUse; + this.defineLater = defineLater; + this.toolContentId = toolContentId; + this.wikiAttachments = wikiAttachments; + this.wikiSessions = wikiSessions; + this.wikiPages = wikiPages; + } + + // 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="create_by" length="20" + * + */ + + public Long getCreateBy() { + return this.createBy; + } + + public void setCreateBy(Long createBy) { + this.createBy = createBy; + } + + /** + * @hibernate.property column="title" length="255" + * + */ + + public String getTitle() { + return this.title; + } + + public void setTitle(String title) { + this.title = title; + } + + /** + * @hibernate.property column="instructions" length="65535" + * + */ + + public String getInstructions() { + return this.instructions; + } + + public void setInstructions(String instructions) { + this.instructions = instructions; + } + + /** + * @hibernate.property column="run_offline" length="1" + * + */ + + public boolean isRunOffline() { + return this.runOffline; + } + + public void setRunOffline(boolean runOffline) { + this.runOffline = runOffline; + } + + /** + * @hibernate.property column="lock_on_finished" length="1" + * + */ + + public boolean isLockOnFinished() { + return this.lockOnFinished; + } + + public void setLockOnFinished(boolean lockOnFinished) { + this.lockOnFinished = lockOnFinished; + } + + /** + * @hibernate.property column="allow_learner_create_pages" length="1" + * + */ + public boolean isAllowLearnerCreatePages() { + return allowLearnerCreatePages; + } + + public void setAllowLearnerCreatePages(boolean allowLearnerCreatePages) { + this.allowLearnerCreatePages = allowLearnerCreatePages; + } + + /** + * @hibernate.property column="allow_learner_insert_links" length="1" + * + */ + public boolean isAllowLearnerInsertLinks() { + return allowLearnerInsertLinks; + } + + public void setAllowLearnerInsertLinks(boolean allowLearnerInsertLinks) { + this.allowLearnerInsertLinks = allowLearnerInsertLinks; + } + + /** + * @hibernate.property column="allow_learner_attach_images" length="1" + * + */ + public boolean isAllowLearnerAttachImages() { + return allowLearnerAttachImages; + } + + public void setAllowLearnerAttachImages(boolean allowLearnerAttachImages) { + this.allowLearnerAttachImages = allowLearnerAttachImages; + } + + /** + * @hibernate.property column="reflect_on_activity" length="1" + */ + public boolean isReflectOnActivity() { + return reflectOnActivity; + } + + public void setReflectOnActivity(boolean reflectOnActivity) { + this.reflectOnActivity = reflectOnActivity; + } + + /** + * @hibernate.property column="reflect_instructions" length="65535" + */ + public String getReflectInstructions() { + return reflectInstructions; + } + + public void setReflectInstructions(String reflectInstructions) { + this.reflectInstructions = reflectInstructions; + } + + /** + * @hibernate.property column="minimum_edits" + */ + public Integer getMinimumEdits() { + return minimumEdits; + } + + public void setMinimumEdits(Integer minimumEdits) { + this.minimumEdits = minimumEdits; + } + + /** + * @hibernate.property column="maximum_edits" + */ + public Integer getMaximumEdits() { + return maximumEdits; + } + + public void setMaximumEdits(Integer maximumEdits) { + this.maximumEdits = maximumEdits; + } + + /** + * @hibernate.property column="online_instructions" length="65535" + * + */ + + public String getOnlineInstructions() { + return this.onlineInstructions; + } + + public void setOnlineInstructions(String onlineInstructions) { + this.onlineInstructions = onlineInstructions; + } + + /** + * @hibernate.property column="offline_instructions" length="65535" + * + */ + + public String getOfflineInstructions() { + return this.offlineInstructions; + } + + public void setOfflineInstructions(String offlineInstructions) { + this.offlineInstructions = offlineInstructions; + } + + /** + * @hibernate.property column="content_in_use" length="1" + * + */ + + public boolean isContentInUse() { + return this.contentInUse; + } + + public void setContentInUse(boolean contentInUse) { + this.contentInUse = contentInUse; + } + + /** + * @hibernate.property column="define_later" length="1" + * + */ + + public boolean isDefineLater() { + return this.defineLater; + } + + public void setDefineLater(boolean defineLater) { + this.defineLater = defineLater; + } + + /** + * @hibernate.property column="tool_content_id" length="20" + * + */ + + public Long getToolContentId() { + return this.toolContentId; + } + + public void setToolContentId(Long toolContentId) { + this.toolContentId = toolContentId; + } + + /** + * @hibernate.set lazy="true" inverse="false" cascade="all-delete-orphan" + * @hibernate.collection-key column="wiki_uid" + * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.tool.wiki.model.WikiAttachment" + * + */ + + public Set getWikiAttachments() { + return this.wikiAttachments; + } + + public void setWikiAttachments(Set wikiAttachments) { + this.wikiAttachments = wikiAttachments; + } + + /** + * @hibernate.set lazy="true" inverse="true" cascade="none" + * @hibernate.collection-key column="wiki_uid" + * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.tool.wiki.model.WikiSession" + * + */ + + public Set getWikiSessions() { + return this.wikiSessions; + } + + public void setWikiSessions(Set wikiSessions) { + this.wikiSessions = wikiSessions; + } + + /** + * @hibernate.set lazy="true" inverse="true" cascade="none" order-by="uid + * asc" + * @hibernate.collection-key column="wiki_uid" + * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.tool.wiki.model.WikiPage" + * + */ + + public Set getWikiPages() { + return wikiPages; + } + + public void setWikiPages(Set wikiPages) { + this.wikiPages = wikiPages; + } + + /** + * @hibernate.many-to-one not-null="true" + * @hibernate.column name="wiki_main_page_uid" + * + */ + public WikiPage getMainPage() { + return mainPage; + } + + public void setMainPage(WikiPage mainPage) { + this.mainPage = mainPage; + } + + /** + * toString + * + * @return String + */ + public String toString() { + StringBuffer buffer = new StringBuffer(); + + buffer.append(getClass().getName()).append("@").append(Integer.toHexString(hashCode())).append(" ["); + buffer.append("title").append("='").append(getTitle()).append("' "); + buffer.append("instructions").append("='").append(getInstructions()).append("' "); + buffer.append("toolContentId").append("='").append(getToolContentId()).append("' "); + buffer.append("]"); + + return buffer.toString(); + } + + public boolean equals(Object other) { + if ((this == other)) + return true; + if ((other == null)) + return false; + if (!(other instanceof Wiki)) + return false; + Wiki castOther = (Wiki) 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 Wiki newInstance(Wiki fromContent, Long toContentId, IToolContentHandler wikiToolContentHandler) { + Wiki toContent = new Wiki(); + fromContent.toolContentHandler = wikiToolContentHandler; + toContent = (Wiki) fromContent.clone(); + toContent.setToolContentId(toContentId); + toContent.setCreateDate(new Date()); + return toContent; + } + + protected Object clone() { + + Wiki wiki = null; + try { + wiki = (Wiki) super.clone(); + wiki.setUid(null); + + if (wikiAttachments != null) { + // create a copy of the attachments + Iterator iter = wikiAttachments.iterator(); + Set set = new HashSet(); + while (iter.hasNext()) { + WikiAttachment originalFile = (WikiAttachment) iter.next(); + WikiAttachment newFile = (WikiAttachment) originalFile.clone(); + set.add(newFile); + } + wiki.wikiAttachments = set; + } + + if (wikiPages != null) { + Set newPages = new HashSet(); + for (WikiPage page : wikiPages) { + WikiPage newPage = (WikiPage) page.clone(); + newPage.setParentWiki(wiki); + if (page.getTitle().equals(mainPage.getTitle())) { + wiki.setMainPage(page); + } + newPages.add(newPage); + } + wiki.setWikiPages(newPages); + } + + // create an empty set for the wikiSession + wiki.wikiSessions = new HashSet(); + + } catch (CloneNotSupportedException cnse) { + log.error("Error cloning " + Wiki.class); + } + return wiki; + } + + public IToolContentHandler getToolContentHandler() { + return toolContentHandler; + } + + public void setToolContentHandler(IToolContentHandler toolContentHandler) { + this.toolContentHandler = toolContentHandler; + } +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/model/WikiAttachment.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/model/WikiAttachment.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/model/WikiAttachment.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,222 @@ +/**************************************************************** + * 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.wiki.model; + +import java.util.Date; + +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.log4j.Logger; + +/** + * + * The details of files attached to the tool. In most cases this will be the + * online/offline instruction files. + * + * @hibernate.class table="tl_lawiki10_attachment" + * + */ + +public class WikiAttachment implements java.io.Serializable, Cloneable { + + /** + * + */ + private static final long serialVersionUID = 432773542342341767L; + + private static final Logger log = Logger.getLogger(WikiAttachment.class); + + /** + * + */ + private Long uid; + + private Long fileVersionId; + + private String fileType; + + private String fileName; + + private Long fileUuid; + + private Date createDate; + + private Wiki wiki; + + // Constructors + + /** default constructor */ + public WikiAttachment() { + } + + /** Constructor setting up all the properties except for wiki one */ + public WikiAttachment(Long fileVersionId, String fileType, String fileName, Long fileUuid, Date createDate) { + this.fileVersionId = fileVersionId; + this.fileType = fileType; + this.fileName = fileName; + this.fileUuid = fileUuid; + this.createDate = createDate; + } + + // 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="file_version_id" length="20" + * + */ + + public Long getFileVersionId() { + return this.fileVersionId; + } + + public void setFileVersionId(Long fileVersionId) { + this.fileVersionId = fileVersionId; + } + + /** + * @hibernate.property column="file_type" length="255" + * + */ + + public String getFileType() { + return this.fileType; + } + + public void setFileType(String fileType) { + this.fileType = fileType; + } + + /** + * @hibernate.property column="file_name" length="255" + * + */ + + public String getFileName() { + return this.fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } + + /** + * @hibernate.property column="file_uuid" length="20" + * + */ + + public Long getFileUuid() { + return this.fileUuid; + } + + public void setFileUuid(Long fileUuid) { + this.fileUuid = fileUuid; + } + + /** + * @hibernate.property column="create_date" + * + */ + + public Date getCreateDate() { + return this.createDate; + } + + public void setCreateDate(Date createDate) { + this.createDate = createDate; + } + + /** + * @hibernate.many-to-one not-null="true" + * @hibernate.column name="wiki_uid" + * + */ + + public Wiki getWiki() { + return this.wiki; + } + + public void setWiki(Wiki wiki) { + this.wiki = wiki; + } + + /** + * toString + * + * @return String + */ + public String toString() { + StringBuffer buffer = new StringBuffer(); + + buffer.append(getClass().getName()).append("@").append(Integer.toHexString(hashCode())).append(" ["); + buffer.append("fileVersionId").append("='").append(getFileVersionId()).append("' "); + buffer.append("fileName").append("='").append(getFileName()).append("' "); + buffer.append("fileUuid").append("='").append(getFileUuid()).append("' "); + buffer.append("]"); + + return buffer.toString(); + } + + public boolean equals(Object o) { + if (this == o) + return true; + if (!(o instanceof WikiAttachment)) + return false; + + final WikiAttachment genericEntity = (WikiAttachment) o; + + return new EqualsBuilder().append(this.uid, genericEntity.uid).append(this.fileVersionId, + genericEntity.fileVersionId).append(this.fileName, genericEntity.fileName).append(this.fileType, + genericEntity.fileType).append(this.createDate, genericEntity.createDate).isEquals(); + } + + public int hashCode() { + int result = 17; + result = 37 * result + (getUid() == null ? 0 : this.getUid().hashCode()); + return result; + } + + public Object clone() { + Object obj = null; + try { + obj = super.clone(); + ((WikiAttachment) obj).setUid(null); + } catch (CloneNotSupportedException e) { + log.error("Failed to clone " + WikiAttachment.class); + } + + return obj; + } +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/model/WikiPage.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/model/WikiPage.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/model/WikiPage.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,141 @@ +package org.lamsfoundation.lams.tool.wiki.model; + +import java.util.HashSet; +import java.util.Set; + +import org.apache.log4j.Logger; + +/** + * Each instance of WikiPage represents a page on the wiki (can be the main + * page) Each WikiPage instance has 0 to many edits, and therefore has 0 to many + * WikiContent instances + * + * @author lfoxton + * @hibernate.class table="tl_lawiki10_wiki_page" + */ +public class WikiPage implements java.io.Serializable, Cloneable { + private static final long serialVersionUID = 2980989002817635889L; + + private static Logger log = Logger.getLogger(WikiPage.class.getName()); + + private Long uid; + private Wiki parentWiki; + private String title; + private Boolean editable; + private Set wikiContentVersions; + private WikiPageContent currentWikiContent; + private WikiSession wikiSession; + + public WikiPage() { + } + + /** + * @hibernate.id generator-class="native" type="java.lang.Long" column="uid" + * + */ + public Long getUid() { + return uid; + } + + public void setUid(Long uid) { + this.uid = uid; + } + + /** + * @hibernate.many-to-one not-null="true" + * @hibernate.column name="wiki_uid" + * + */ + public Wiki getParentWiki() { + return parentWiki; + } + + public void setParentWiki(Wiki parentWiki) { + this.parentWiki = parentWiki; + } + + /** + * @hibernate.property column="title" length="255" + * + */ + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + /** + * @hibernate.property column="editable" length="1" + * + */ + public Boolean getEditable() { + return editable; + } + + public void setEditable(Boolean editable) { + this.editable = editable; + } + + /** + * @hibernate.set lazy="true" inverse="false" cascade="all-delete-orphan" + * order-by="uid asc" + * @hibernate.collection-key column="wiki_page_uid" + * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.tool.wiki.model.WikiPageContent" + * + */ + public Set getWikiContentVersions() { + return wikiContentVersions; + } + + public void setWikiContentVersions(Set wikiContentVersions) { + this.wikiContentVersions = wikiContentVersions; + } + + /** + * @hibernate.many-to-one not-null="true" + * @hibernate.column name="wiki_current_content" + * + */ + public WikiPageContent getCurrentWikiContent() { + return currentWikiContent; + } + + public void setCurrentWikiContent(WikiPageContent currentWikiContent) { + this.currentWikiContent = currentWikiContent; + } + + /** + * Gets the toolSession + * + * @hibernate.many-to-one cascade="none" + * class="org.lamsfoundation.lams.tool.wiki.model.WikiSession" + * column="wiki_session_uid" + * + */ + public WikiSession getWikiSession() { + return wikiSession; + } + + public void setWikiSession(WikiSession wikiSession) { + this.wikiSession = wikiSession; + } + + public Object clone() { + + WikiPage wikiPage = null; + try { + wikiPage = (WikiPage) super.clone(); + wikiPage.setUid(null); + wikiPage.setWikiSession(null); + WikiPageContent newContent = (WikiPageContent) currentWikiContent.clone(); + newContent.setWikiPage(wikiPage); + wikiPage.setCurrentWikiContent(newContent); + wikiPage.setWikiContentVersions(new HashSet()); + } catch (CloneNotSupportedException cnse) { + log.error("Error cloning " + WikiPage.class); + } + return wikiPage; + } +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/model/WikiPageContent.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/model/WikiPageContent.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/model/WikiPageContent.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,140 @@ +/**************************************************************** + * 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.wiki.model; + +import java.util.Date; + +import org.apache.log4j.Logger; + +/** + * An instance of WikiContent represents 1 version of the Wiki Page. Each time + * you edit, a new instance of WikiContent will be created, so we will be able + * to search the history and do reverts. + * + * @author lfoxton + * @hibernate.class table="tl_lawiki10_wiki_page_content" + */ +public class WikiPageContent implements java.io.Serializable, Cloneable { + + private static final long serialVersionUID = 98276541234892314L; + + private static Logger log = Logger.getLogger(WikiPageContent.class.getName()); + + private Long uid; + private WikiPage wikiPage; + private String body; + private WikiUser editor; + private Date editDate; + private Long version; + + public WikiPageContent() { + } + + /** + * @hibernate.id generator-class="native" type="java.lang.Long" column="uid" + * + */ + public Long getUid() { + return uid; + } + + public void setUid(Long uid) { + this.uid = uid; + } + + /** + * @hibernate.many-to-one not-null="true" + * @hibernate.column name="wiki_page_uid" + * + */ + public WikiPage getWikiPage() { + return wikiPage; + } + + public void setWikiPage(WikiPage wikiPage) { + this.wikiPage = wikiPage; + } + + /** + * + * @hibernate.property column="body" length="65535" + */ + public String getBody() { + return body; + } + + public void setBody(String body) { + this.body = body; + } + + /** + * @hibernate.many-to-one not-null="true" + * @hibernate.column name="editor" + * + */ + public WikiUser getEditor() { + return editor; + } + + public void setEditor(WikiUser editor) { + this.editor = editor; + } + + /** + * + * @hibernate.property column="edit_date" + */ + public Date getEditDate() { + return editDate; + } + + public void setEditDate(Date editDate) { + this.editDate = editDate; + } + + /** + * + * @hibernate.property column="version" + */ + public Long getVersion() { + return version; + } + + public void setVersion(Long version) { + this.version = version; + } + + public Object clone() { + + WikiPageContent wikiContent = null; + try { + wikiContent = (WikiPageContent) super.clone(); + wikiContent.setUid(null); + } catch (CloneNotSupportedException cnse) { + log.error("Error cloning " + WikiPageContent.class); + } + return wikiContent; + } + +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/model/WikiSession.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/model/WikiSession.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/model/WikiSession.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,259 @@ +/**************************************************************** + * 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.wiki.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_lawiki10_session" + */ + +public class WikiSession implements java.io.Serializable { + + private static Logger log = Logger.getLogger(WikiSession.class); + /** + * + */ + private static final long serialVersionUID = 7762187772612318324L; + + // Fields + private Long uid; + + private Date sessionEndDate; + + private Date sessionStartDate; + + private Integer status; + + private Long sessionId; + + private String sessionName; + + private Wiki wiki; + + private Set wikiUsers; + + private Set wikiPages; // Need a runtime copy for each wikiPage + + // Constructors + + /** default constructor */ + public WikiSession() { + } + + /** full constructor */ + public WikiSession(Date sessionEndDate, Date sessionStartDate, Integer status, Long sessionId, String sessionName, + Wiki wiki, Set wikiUsers, Set wikiPages) { + this.sessionEndDate = sessionEndDate; + this.sessionStartDate = sessionStartDate; + this.status = status; + this.sessionId = sessionId; + this.sessionName = sessionName; + this.wiki = wiki; + this.wikiUsers = wikiUsers; + this.wikiPages = wikiPages; + } + + // 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="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="wiki_uid" + * + */ + + public Wiki getWiki() { + return this.wiki; + } + + public void setWiki(Wiki wiki) { + this.wiki = wiki; + } + + /** + * @hibernate.set lazy="true" inverse="true" cascade="none" + * @hibernate.collection-key column="wiki_session_uid" + * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.tool.wiki.model.WikiUser" + * + */ + + public Set getWikiUsers() { + return this.wikiUsers; + } + + public void setWikiUsers(Set wikiUsers) { + this.wikiUsers = wikiUsers; + } + + /** + * @hibernate.set lazy="true" inverse="true" cascade="none" order-by="uid + * asc" + * @hibernate.collection-key column="wiki_session_uid" + * @hibernate.collection-one-to-many class="org.lamsfoundation.lams.tool.wiki.model.WikiPage" + * + */ + public Set getWikiPages() { + return wikiPages; + } + + public void setWikiPages(Set wikiPages) { + this.wikiPages = wikiPages; + } + + /** + * 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 WikiSession)) + return false; + WikiSession castOther = (WikiSession) 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() { + + WikiSession session = null; + try { + session = (WikiSession) super.clone(); + session.wikiUsers = new HashSet(); + } catch (CloneNotSupportedException e) { + log.error("When clone " + WikiSession.class + " failed"); + } + return session; + } + +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/model/WikiUser.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/model/WikiUser.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/model/WikiUser.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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.wiki.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_lawiki10_user" + */ + +public class WikiUser implements java.io.Serializable { + + /** + * + */ + private static final long serialVersionUID = -3243742837238907521L; + + // Fields + private Long uid; + + private Long userId; + + private String lastName; + + private String firstName; + + private String loginName; + + private WikiSession wikiSession; + + private boolean finishedActivity; + + private Long entryUID; + + // Constructors + + /** default constructor */ + public WikiUser() { + } + + public WikiUser(UserDTO user, WikiSession wikiSession) { + this.userId = new Long(user.getUserID().intValue()); + this.firstName = user.getFirstName(); + this.lastName = user.getLastName(); + this.loginName = user.getLogin(); + this.wikiSession = wikiSession; + this.finishedActivity = false; + } + + /** full constructor */ + public WikiUser(Long userId, String lastName, String firstName, WikiSession wikiSession) { + this.userId = userId; + this.lastName = lastName; + this.firstName = firstName; + this.wikiSession = wikiSession; + } + + // 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="wiki_session_uid" + * + */ + public WikiSession getWikiSession() { + return this.wikiSession; + } + + public void setWikiSession(WikiSession wikiSession) { + this.wikiSession = wikiSession; + } + + /** + * @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 WikiUser)) + return false; + WikiUser castOther = (WikiUser) 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: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/service/IWikiService.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/service/IWikiService.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/service/IWikiService.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,234 @@ +/**************************************************************** + * 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.wiki.service; + +import org.apache.struts.upload.FormFile; +import org.lamsfoundation.lams.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.tool.wiki.model.Wiki; +import org.lamsfoundation.lams.tool.wiki.model.WikiAttachment; +import org.lamsfoundation.lams.tool.wiki.model.WikiPage; +import org.lamsfoundation.lams.tool.wiki.model.WikiPageContent; +import org.lamsfoundation.lams.tool.wiki.model.WikiSession; +import org.lamsfoundation.lams.tool.wiki.model.WikiUser; +import org.lamsfoundation.lams.tool.wiki.util.WikiException; +import org.lamsfoundation.lams.tool.wiki.web.forms.WikiPageForm; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; + +/** + * Defines the services available to the web layer from the Wiki Service + */ +public interface IWikiService { + /** + * Makes a copy of the default content and assigns it a newContentID + * + * @params newContentID + * @return + */ + public Wiki copyDefaultContent(Long newContentID); + + /** + * Returns an instance of the Wiki tools default content. + * + * @return + */ + public Wiki getDefaultContent(); + + /** + * @param toolSignature + * @return + */ + public Long getDefaultContentIdBySignature(String toolSignature); + + /** + * @param toolContentID + * @return + */ + public Wiki getWikiByContentId(Long toolContentID); + + /** + * @param toolContentId + * @param file + * @param type + * @return + */ + public WikiAttachment uploadFileToContent(Long toolContentId, FormFile file, String type); + + /** + * @param uuid + * @param versionID + */ + public void deleteFromRepository(Long uuid, Long versionID) throws WikiException; + + /** + * @param contentID + * @param uuid + * @param versionID + * @param type + */ + public void deleteInstructionFile(Long contentID, Long uuid, Long versionID, String type); + + /** + * @param wiki + */ + public void saveOrUpdateWiki(Wiki wiki); + + /** + * + * @param wikiPage + */ + public void saveOrUpdateWikiPage(WikiPage wikiPage); + + /** + * + * @param wikiPageForm + */ + public void updateWikiPage(WikiPageForm wikiPageForm, Long wikiPageUid, WikiUser user); + + /** + * + * @param wikiPageForm + * @param wiki + * @param user + * @param session + */ + public Long insertWikiPage(WikiPageForm wikiPageForm, Wiki wiki, WikiUser user, WikiSession session); + + /** + * + * @param wikiPage + */ + public void deleteWikiPage(WikiPage wikiPage); + + /** + * + * @param wiki + * @param title + * @return + */ + public WikiPage getWikiPageByWikiAndTitle(Wiki wiki, String title); + + /** + * + * @param wikiSession + * @param title + * @return + */ + public WikiPage getWikiBySessionAndTitle(WikiSession wikiSession, String title); + + /** + * + * @param uid + * @return + */ + public WikiPage getWikiPageByUid(Long uid); + + /** + * + * @param uid + * @return + */ + public WikiPageContent getWikiPageContent(Long uid); + + /** + * + * @param wikiPageContent + */ + public void saveOrUpdateWikiPageContent(WikiPageContent wikiPageContent); + + /** + * @param toolSessionId + * @return + */ + public WikiSession getSessionBySessionId(Long toolSessionId); + + /** + * @param wikiSession + */ + public void saveOrUpdateWikiSession(WikiSession wikiSession); + + /** + * + * @param userId + * @param toolSessionId + * @return + */ + public WikiUser getUserByUserIdAndSessionId(Long userId, Long toolSessionId); + + /** + * + * @param uid + * @return + */ + public WikiUser getUserByUID(Long uid); + + /** + * + * @param wikiUser + */ + public void saveOrUpdateWikiUser(WikiUser wikiUser); + + /** + * + * @param user + * @param wikiSession + * @return + */ + public WikiUser createWikiUser(UserDTO user, WikiSession wikiSession); + + /** + * + * @param id + * @param idType + * @param signature + * @param userID + * @param title + * @param entry + * @return + */ + Long createNotebookEntry(Long id, Integer idType, String signature, Integer userID, String entry); + + /** + * + * @param uid + * @return + */ + NotebookEntry getEntry(Long uid); + + /** + * + * @param uid + * @param title + * @param entry + */ + void updateEntry(Long uid, String entry); + + /** + * + * @param old + * @param current + * @return + */ + String comparePages(String old, String current); +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/service/WikiService.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/service/WikiService.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/service/WikiService.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,888 @@ +/**************************************************************** + * 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.wiki.service; + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.Arrays; +import java.util.Date; +import java.util.HashSet; +import java.util.Hashtable; +import java.util.LinkedList; +import java.util.List; +import java.util.Set; +import java.util.SortedMap; +import java.util.TreeMap; + +import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; +import org.apache.struts.upload.FormFile; +import org.lamsfoundation.lams.contentrepository.AccessDeniedException; +import org.lamsfoundation.lams.contentrepository.ICredentials; +import org.lamsfoundation.lams.contentrepository.ITicket; +import org.lamsfoundation.lams.contentrepository.InvalidParameterException; +import org.lamsfoundation.lams.contentrepository.LoginException; +import org.lamsfoundation.lams.contentrepository.NodeKey; +import org.lamsfoundation.lams.contentrepository.RepositoryCheckedException; +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.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.model.NotebookEntry; +import org.lamsfoundation.lams.notebook.service.ICoreNotebookService; +import org.lamsfoundation.lams.tool.ToolContentImport102Manager; +import org.lamsfoundation.lams.tool.ToolContentManager; +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.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.tool.wiki.dao.IWikiAttachmentDAO; +import org.lamsfoundation.lams.tool.wiki.dao.IWikiDAO; +import org.lamsfoundation.lams.tool.wiki.dao.IWikiPageContentDAO; +import org.lamsfoundation.lams.tool.wiki.dao.IWikiPageDAO; +import org.lamsfoundation.lams.tool.wiki.dao.IWikiSessionDAO; +import org.lamsfoundation.lams.tool.wiki.dao.IWikiUserDAO; +import org.lamsfoundation.lams.tool.wiki.model.Wiki; +import org.lamsfoundation.lams.tool.wiki.model.WikiAttachment; +import org.lamsfoundation.lams.tool.wiki.model.WikiPage; +import org.lamsfoundation.lams.tool.wiki.model.WikiPageContent; +import org.lamsfoundation.lams.tool.wiki.model.WikiSession; +import org.lamsfoundation.lams.tool.wiki.model.WikiUser; +import org.lamsfoundation.lams.tool.wiki.util.WikiConstants; +import org.lamsfoundation.lams.tool.wiki.util.WikiException; +import org.lamsfoundation.lams.tool.wiki.util.WikiToolContentHandler; +import org.lamsfoundation.lams.tool.wiki.util.diff.Diff; +import org.lamsfoundation.lams.tool.wiki.util.diff.Difference; +import org.lamsfoundation.lams.tool.wiki.web.forms.WikiPageForm; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.util.audit.IAuditService; + +/** + * An implementation of the IWikiService interface. + * + * As a requirement, all LAMS tool's service bean must implement + * ToolContentManager and ToolSessionManager. + */ + +public class WikiService implements ToolSessionManager, ToolContentManager, IWikiService, ToolContentImport102Manager { + + static Logger logger = Logger.getLogger(WikiService.class.getName()); + + private IWikiDAO wikiDAO = null; + + private IWikiPageDAO wikiPageDAO = null; + + private IWikiPageContentDAO wikiPageContentDAO = null; + + private IWikiSessionDAO wikiSessionDAO = null; + + private IWikiUserDAO wikiUserDAO = null; + + private IWikiAttachmentDAO wikiAttachmentDAO = null; + + private ILearnerService learnerService; + + private ILamsToolService toolService; + + private IToolContentHandler wikiToolContentHandler = null; + + private IRepositoryService repositoryService = null; + + private IAuditService auditService = null; + + private IExportToolContentService exportContentService; + + private ICoreNotebookService coreNotebookService; + + public WikiService() { + 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); + } + + // create a new tool session + WikiSession session = new WikiSession(); + session.setSessionId(toolSessionId); + session.setSessionName(toolSessionName); + + // Get the wiki content to start a session + Wiki wiki = wikiDAO.getByContentId(toolContentId); + session.setWiki(wiki); + + // Create an empty list to copy the wiki pages into + Set sessionWikiPages = new HashSet(); + + // Here we need to clone wikipages and content for tool session versions + for (WikiPage childPage : wiki.getWikiPages()) { + // Clone the wiki page + WikiPage newChildPage = (WikiPage) childPage.clone(); + wikiPageDAO.saveOrUpdate(newChildPage); + + // Clone the current content - leave the history null + WikiPageContent newPageContent = (WikiPageContent) childPage.getCurrentWikiContent().clone(); + newPageContent.setWikiPage(newChildPage); + wikiPageContentDAO.saveOrUpdate(newPageContent); + + // Set the current content + newChildPage.setCurrentWikiContent(newPageContent); + newChildPage.setParentWiki(wiki); + newChildPage.setWikiSession(session); + newChildPage.getWikiContentVersions().add(newPageContent); + + // Add page to the list + sessionWikiPages.add(newChildPage); + } + session.setWikiPages(sessionWikiPages); + wikiSessionDAO.saveOrUpdate(session); + } + + public String leaveToolSession(Long toolSessionId, Long learnerId) throws DataMissingException, ToolException { + return learnerService.completeToolSession(toolSessionId, learnerId); + } + + public ToolSessionExportOutputData exportToolSession(Long toolSessionId) throws DataMissingException, ToolException { + return null; + } + + public ToolSessionExportOutputData exportToolSession(List toolSessionIds) throws DataMissingException, + ToolException { + return null; + } + + public void removeToolSession(Long toolSessionId) throws DataMissingException, ToolException { + wikiSessionDAO.deleteBySessionID(toolSessionId); + } + + /** + * 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) { + return new TreeMap(); + } + + /** + * 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) { + return null; + } + + /* ************ 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); + } + + Wiki fromContent = null; + if (fromContentId != null) { + fromContent = wikiDAO.getByContentId(fromContentId); + } + if (fromContent == null) { + // create the fromContent using the default tool content + fromContent = getDefaultContent(); + } + Wiki toContent = Wiki.newInstance(fromContent, toContentId, wikiToolContentHandler); + + wikiDAO.saveOrUpdate(toContent); + + // Go through and copy child pages and content + for (WikiPage childPage : fromContent.getWikiPages()) { + // Clone the wiki page + WikiPage newChildPage = (WikiPage) childPage.clone(); + wikiPageDAO.saveOrUpdate(newChildPage); + + // Clone the current content - leave the history null + WikiPageContent newPageContent = (WikiPageContent) childPage.getCurrentWikiContent().clone(); + newPageContent.setWikiPage(newChildPage); + wikiPageContentDAO.saveOrUpdate(newPageContent); + + // Set the current content + newChildPage.setCurrentWikiContent(newPageContent); + newChildPage.setParentWiki(toContent); + newChildPage.getWikiContentVersions().add(newPageContent); + + if (newChildPage.getTitle().equals(fromContent.getMainPage().getTitle())) { + // This is the main page + toContent.setMainPage(newChildPage); + } + + // Add page to the list + toContent.getWikiPages().add(newChildPage); + + } + wikiDAO.saveOrUpdate(toContent); + } + + public void setAsDefineLater(Long toolContentId, boolean value) throws DataMissingException, ToolException { + Wiki wiki = wikiDAO.getByContentId(toolContentId); + if (wiki == null) { + throw new ToolException("Could not find tool with toolContentID: " + toolContentId); + } + wiki.setDefineLater(value); + wikiDAO.saveOrUpdate(wiki); + } + + public void setAsRunOffline(Long toolContentId, boolean value) throws DataMissingException, ToolException { + Wiki wiki = wikiDAO.getByContentId(toolContentId); + if (wiki == null) { + throw new ToolException("Could not find tool with toolContentID: " + toolContentId); + } + wiki.setRunOffline(value); + wikiDAO.saveOrUpdate(wiki); + } + + 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 { + Wiki wiki = wikiDAO.getByContentId(toolContentId); + if (wiki == null) { + wiki = getDefaultContent(); + } + if (wiki == null) + throw new DataMissingException("Unable to find default content for the wiki tool"); + + // set ResourceToolContentHandler as null to avoid copy file node in + // repository again. + wiki = Wiki.newInstance(wiki, toolContentId, null); + wiki.setToolContentHandler(null); + wiki.setWikiSessions(null); + Set atts = wiki.getWikiAttachments(); + for (WikiAttachment att : atts) { + att.setWiki(null); + } + try { + exportContentService + .registerFileClassForExport(WikiAttachment.class.getName(), "fileUuid", "fileVersionId"); + exportContentService.exportToolContent(toolContentId, wiki, wikiToolContentHandler, rootPath); + } catch (ExportToolContentException e) { + throw new ToolException(e); + } + } + + /** + * 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) throws ToolException { + try { + exportContentService.registerFileClassForImport(WikiAttachment.class.getName(), "fileUuid", + "fileVersionId", "fileName", "fileType", null, null); + + Object toolPOJO = exportContentService.importToolContent(toolContentPath, wikiToolContentHandler, + fromVersion, toVersion); + if (!(toolPOJO instanceof Wiki)) + throw new ImportToolContentException("Import Wiki tool content failed. Deserialized object is " + + toolPOJO); + Wiki wiki = (Wiki) toolPOJO; + + // reset it to new toolContentId + wiki.setToolContentId(toolContentId); + wiki.setCreateBy(new Long(newUserUid.longValue())); + + wikiDAO.saveOrUpdate(wiki); + } catch (ImportToolContentException e) { + throw new ToolException(e); + } + } + + /** + * 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 Choice) 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 { + return new TreeMap(); + } + + /* ********** IWikiService Methods ********************************* */ + + public Long createNotebookEntry(Long id, Integer idType, String signature, Integer userID, String entry) { + return coreNotebookService.createNotebookEntry(id, idType, signature, userID, "", entry); + } + + public NotebookEntry getEntry(Long uid) { + return coreNotebookService.getEntry(uid); + } + + public void updateEntry(Long uid, String entry) { + coreNotebookService.updateEntry(uid, "", entry); + } + + public String comparePages(String old, String current) { + String oldArray[] = old.replaceAll("[\\t\\n\\r]", "").split("
"); + String currentArray[] = current.replaceAll("[\\t\\n\\r]", "").split("
"); + + Diff diff = new Diff(oldArray, currentArray); + List diffOut = diff.diff(); + + LinkedList result = new LinkedList(Arrays.asList(currentArray)); + + int resultOffset = 0; + for (Difference difference : diffOut) { + if (difference.getDeletedEnd() == -1) { + // Added + for (int i = difference.getAddedStart(); i <= difference.getAddedEnd(); i++) { + result.set(i + resultOffset, "
" + + currentArray[i]); + } + } else if (difference.getAddedEnd() == -1) { + // Deleted + for (int i = difference.getDeletedStart(); i <= difference.getDeletedEnd(); i++) { + if (result.size() > i + resultOffset) { + result.add(i + resultOffset, "
" + + oldArray[i]); + } else { + result.add("
" + oldArray[i]); + } + resultOffset++; + } + } else { + + // Replaced + for (int i = difference.getAddedStart(); i <= difference.getAddedEnd(); i++) { + result.set(i + resultOffset, "
" + + currentArray[i]); + } + for (int i = difference.getDeletedStart(); i <= difference.getDeletedEnd(); i++) { + if (result.size() > i + resultOffset) { + result.add(i + resultOffset, "
" + + oldArray[i]); + } else { + result.add("
" + oldArray[i]); + } + resultOffset++; + } + } + } + + StringBuffer retBuf = new StringBuffer(); + for (String line : result) { + line = line.replaceAll("[//r][//n][//t]", ""); + + // fix up lines that dont have the div tag on them + if (!line.startsWith(""); + + retBuf.append(line); + + // fix up lines that dont have the div tag on them + // if(!line.endsWith("
")) + // retBuf.append("
"); + if (!line.contains("
")) + retBuf.append("
"); + } + logger.debug("Result:"); + logger.debug(retBuf); + return retBuf.toString(); + } + + 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 WikiException(error); + } + return toolContentId; + } + + public Wiki getDefaultContent() { + Long defaultContentID = getDefaultContentIdBySignature(WikiConstants.TOOL_SIGNATURE); + Wiki defaultContent = getWikiByContentId(defaultContentID); + if (defaultContent == null) { + String error = "Could not retrieve default content record for this tool"; + logger.error(error); + throw new WikiException(error); + } + return defaultContent; + } + + public Wiki copyDefaultContent(Long newContentID) { + + if (newContentID == null) { + String error = "Cannot copy the Wiki tools default content: + " + "newContentID is null"; + logger.error(error); + throw new WikiException(error); + } + + Wiki defaultContent = getDefaultContent(); + // create new wiki using the newContentID + Wiki newContent = new Wiki(); + newContent = Wiki.newInstance(defaultContent, newContentID, wikiToolContentHandler); + wikiDAO.saveOrUpdate(newContent); + + WikiPage newMainPage = (WikiPage) defaultContent.getMainPage().clone(); + wikiPageDAO.saveOrUpdate(newMainPage); + + WikiPageContent newMainPageContent = (WikiPageContent) defaultContent.getMainPage().getCurrentWikiContent() + .clone(); + newMainPageContent.setEditDate(new Date()); + wikiPageContentDAO.saveOrUpdate(newMainPageContent); + + newMainPageContent.setWikiPage(newMainPage); + newMainPage.setCurrentWikiContent(newMainPageContent); + newMainPage.setParentWiki(newContent); + newContent.setMainPage(newMainPage); + wikiDAO.saveOrUpdate(newContent); + return newContent; + } + + public Wiki getWikiByContentId(Long toolContentID) { + Wiki wiki = (Wiki) wikiDAO.getByContentId(toolContentID); + if (wiki == null) { + logger.debug("Could not find the content with toolContentID:" + toolContentID); + } + return wiki; + } + + public WikiSession getSessionBySessionId(Long toolSessionId) { + WikiSession wikiSession = wikiSessionDAO.getBySessionId(toolSessionId); + if (wikiSession == null) { + logger.debug("Could not find the wiki session with toolSessionID:" + toolSessionId); + } + return wikiSession; + } + + public WikiUser getUserByUserIdAndSessionId(Long userId, Long toolSessionId) { + return wikiUserDAO.getByUserIdAndSessionId(userId, toolSessionId); + } + + public WikiUser getUserByLoginNameAndSessionId(String loginName, Long toolSessionId) { + return wikiUserDAO.getByLoginNameAndSessionId(loginName, toolSessionId); + } + + public WikiUser getUserByUID(Long uid) { + return wikiUserDAO.getByUID(uid); + } + + public WikiAttachment uploadFileToContent(Long toolContentId, FormFile file, String type) { + if (file == null || StringUtils.isEmpty(file.getFileName())) + throw new WikiException("Could not find upload file: " + file); + + NodeKey nodeKey = processFile(file, type); + + WikiAttachment attachment = new WikiAttachment(nodeKey.getVersion(), type, file.getFileName(), nodeKey + .getUuid(), new Date()); + return attachment; + } + + public void deleteFromRepository(Long uuid, Long versionID) throws WikiException { + ITicket ticket = getRepositoryLoginTicket(); + try { + repositoryService.deleteVersion(ticket, uuid, versionID); + } catch (Exception e) { + throw new WikiException("Exception occured while deleting files from" + " the repository " + e.getMessage()); + } + } + + /** + * Updates the wikiPage from the WikiPageForm, used in author, monitor and + * learner + * + * @param wikiPageForm + * @param wikiPageUid + * @param user + */ + public void updateWikiPage(WikiPageForm wikiPageForm, Long wikiPageUid, WikiUser user) { + + // First retrieve the wikipage from the db + WikiPage wikiPage = getWikiPageByUid(wikiPageUid); + if (wikiPage == null) { + throw new WikiException("Could not find wiki page to update with uid: " + wikiPageUid.toString()); + } + + // Create a new wiki page content using the wiki page form + WikiPageContent wikiPageContent = new WikiPageContent(); + wikiPageContent.setBody(wikiPageForm.getWikiBody()); + wikiPageContent.setEditDate(new Date()); + wikiPageContent.setEditor(user); + wikiPageContent.setVersion(wikiPage.getCurrentWikiContent().getVersion() + 1); + wikiPageContent.setWikiPage(wikiPage); + wikiPageContentDAO.saveOrUpdate(wikiPageContent); + + // Now save the wiki Page + wikiPage.setTitle(wikiPageForm.getTitle()); + wikiPage.setEditable(wikiPageForm.getIsEditable()); + wikiPage.setCurrentWikiContent(wikiPageContent); + wikiPage.getWikiContentVersions().add(wikiPageContent); + wikiPage.setEditable(wikiPageForm.getIsEditable()); + wikiPageContentDAO.saveOrUpdate(wikiPageContent); + } + + /** + * Inserts the wikiPage from the WikiPageForm, used in author, monitor and + * learner + * + * @param wikiPageForm + * @param wikiPageUid + * @param user + */ + public Long insertWikiPage(WikiPageForm wikiPageForm, Wiki wiki, WikiUser user, WikiSession session) { + + // First create a new wiki page + WikiPage wikiPage = new WikiPage(); + wikiPage.setEditable(wikiPageForm.getIsEditable()); + wikiPage.setParentWiki(wiki); + wikiPage.setTitle(wikiPageForm.getNewPageTitle()); + wikiPage.setEditable(wikiPageForm.getNewPageIsEditable()); + wikiPage.setWikiContentVersions(new HashSet()); + wikiPage.setWikiSession(session); + wikiPageDAO.saveOrUpdate(wikiPage); + + // Create a new wiki page content using the wiki page form + WikiPageContent wikiPageContent = new WikiPageContent(); + wikiPageContent.setBody(wikiPageForm.getNewPageWikiBody()); + wikiPageContent.setEditDate(new Date()); + wikiPageContent.setEditor(user); + wikiPageContent.setVersion(new Long(1)); + wikiPageContent.setWikiPage(wikiPage); + wikiPageContentDAO.saveOrUpdate(wikiPageContent); + + // Apply the content to the wiki page and save + wikiPage.setCurrentWikiContent(wikiPageContent); + wikiPage.getWikiContentVersions().add(wikiPageContent); + wikiPageDAO.saveOrUpdate(wikiPage); + + return wikiPage.getUid(); + } + + public void deleteWikiPage(WikiPage wikiPage) { + wikiPageDAO.delete(wikiPage); + } + + public void deleteInstructionFile(Long contentID, Long uuid, Long versionID, String type) { + wikiDAO.deleteInstructionFile(contentID, uuid, versionID, type); + + } + + public void saveOrUpdateWiki(Wiki wiki) { + wikiDAO.saveOrUpdate(wiki); + } + + public void saveOrUpdateWikiPage(WikiPage wikiPage) { + wikiPageDAO.saveOrUpdate(wikiPage); + } + + public WikiPage getWikiPageByWikiAndTitle(Wiki wiki, String title) { + return wikiPageDAO.getByWikiAndTitle(wiki, title); + } + + public WikiPage getWikiBySessionAndTitle(WikiSession wikiSession, String title) { + return wikiPageDAO.getBySessionAndTitle(wikiSession, title); + } + + public WikiPage getWikiPageByUid(Long uid) { + List list = wikiPageDAO.findByProperty(WikiPage.class, "uid", uid); + if (list == null || list.size() == 0) { + return null; + } else { + return (WikiPage) list.get(0); + } + } + + public WikiPageContent getWikiPageContent(Long uid) { + List list = wikiPageContentDAO.findByProperty(WikiPageContent.class, "uid", uid); + if (list == null || list.size() == 0) { + return null; + } else { + return (WikiPageContent) list.get(0); + } + } + + public void saveOrUpdateWikiPageContent(WikiPageContent wikiPageContent) { + wikiPageContentDAO.saveOrUpdate(wikiPageContent); + } + + public void saveOrUpdateWikiSession(WikiSession wikiSession) { + wikiSessionDAO.saveOrUpdate(wikiSession); + } + + public void saveOrUpdateWikiUser(WikiUser wikiUser) { + wikiUserDAO.saveOrUpdate(wikiUser); + } + + public WikiUser createWikiUser(UserDTO user, WikiSession wikiSession) { + WikiUser wikiUser = new WikiUser(user, wikiSession); + saveOrUpdateWikiUser(wikiUser); + return wikiUser; + } + + public IAuditService getAuditService() { + return auditService; + } + + public void setAuditService(IAuditService auditService) { + this.auditService = auditService; + } + + private NodeKey processFile(FormFile file, String type) { + NodeKey node = null; + if (file != null && !StringUtils.isEmpty(file.getFileName())) { + String fileName = file.getFileName(); + try { + node = getWikiToolContentHandler().uploadFile(file.getInputStream(), fileName, file.getContentType(), + type); + } catch (InvalidParameterException e) { + throw new WikiException("InvalidParameterException occured while trying to upload File" + + e.getMessage()); + } catch (FileNotFoundException e) { + throw new WikiException("FileNotFoundException occured while trying to upload File" + e.getMessage()); + } catch (RepositoryCheckedException e) { + throw new WikiException("RepositoryCheckedException occured while trying to upload File" + + e.getMessage()); + } catch (IOException e) { + throw new WikiException("IOException occured while trying to upload File" + e.getMessage()); + } + } + return node; + } + + /** + * 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 WikiException { + repositoryService = RepositoryProxy.getRepositoryService(); + ICredentials credentials = new SimpleCredentials(WikiToolContentHandler.repositoryUser, + WikiToolContentHandler.repositoryId); + try { + ITicket ticket = repositoryService.login(credentials, WikiToolContentHandler.repositoryWorkspaceName); + return ticket; + } catch (AccessDeniedException ae) { + throw new WikiException("Access Denied to repository." + ae.getMessage()); + } catch (WorkspaceNotFoundException we) { + throw new WikiException("Workspace not found." + we.getMessage()); + } catch (LoginException e) { + throw new WikiException("Login failed." + e.getMessage()); + } + } + + /* + * ===============Methods implemented from ToolContentImport102Manager + * =============== + */ + + /** + * Import the data for a 1.0.2 Wiki + */ + public void import102ToolContent(Long toolContentId, UserDTO user, Hashtable importValues) { + Date now = new Date(); + Wiki wiki = new Wiki(); + wiki.setContentInUse(Boolean.FALSE); + wiki.setCreateBy(new Long(user.getUserID().longValue())); + wiki.setCreateDate(now); + wiki.setDefineLater(Boolean.FALSE); + wiki.setInstructions(WebUtil.convertNewlines((String) importValues + .get(ToolContentImport102Manager.CONTENT_BODY))); + wiki.setLockOnFinished(Boolean.TRUE); + wiki.setOfflineInstructions(null); + wiki.setOnlineInstructions(null); + wiki.setRunOffline(Boolean.FALSE); + wiki.setTitle((String) importValues.get(ToolContentImport102Manager.CONTENT_TITLE)); + wiki.setToolContentId(toolContentId); + wiki.setUpdateDate(now); + wiki.setAllowLearnerAttachImages(Boolean.TRUE); + wiki.setAllowLearnerCreatePages(Boolean.TRUE); + wiki.setAllowLearnerInsertLinks(Boolean.TRUE); + wiki.setReflectOnActivity(Boolean.FALSE); + wiki.setReflectInstructions(null); + wiki.setMaximumEdits(0); + wiki.setMinimumEdits(0); + + // leave as empty, no need to set them to anything. + // setWikiAttachments(Set wikiAttachments); + // setWikiSessions(Set wikiSessions); + wikiDAO.saveOrUpdate(wiki); + } + + /** + * 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 wiki. This doesn't make sense as the wiki is for reflection and we don't reflect on reflection!"); + Wiki wiki = getWikiByContentId(toolContentId); + if (wiki == null) { + throw new DataMissingException("Unable to set reflective data titled " + title + + " on activity toolContentId " + toolContentId + " as the tool content does not exist."); + } + + wiki.setInstructions(description); + } + + // ========================================================================================= + /* ********** Used by Spring to "inject" the linked objects ************* */ + + public IWikiAttachmentDAO getWikiAttachmentDAO() { + return wikiAttachmentDAO; + } + + public void setWikiAttachmentDAO(IWikiAttachmentDAO attachmentDAO) { + this.wikiAttachmentDAO = attachmentDAO; + } + + public IWikiDAO getWikiDAO() { + return wikiDAO; + } + + public void setWikiDAO(IWikiDAO wikiDAO) { + this.wikiDAO = wikiDAO; + } + + public IWikiPageDAO getWikiPageDAO() { + return wikiPageDAO; + } + + public void setWikiPageDAO(IWikiPageDAO wikiPageDAO) { + this.wikiPageDAO = wikiPageDAO; + } + + public IWikiPageContentDAO getWikiPageContentDAO() { + return wikiPageContentDAO; + } + + public void setWikiPageContentDAO(IWikiPageContentDAO wikiPageContentDAO) { + this.wikiPageContentDAO = wikiPageContentDAO; + } + + public IToolContentHandler getWikiToolContentHandler() { + return wikiToolContentHandler; + } + + public void setWikiToolContentHandler(IToolContentHandler wikiToolContentHandler) { + this.wikiToolContentHandler = wikiToolContentHandler; + } + + public IWikiSessionDAO getWikiSessionDAO() { + return wikiSessionDAO; + } + + public void setWikiSessionDAO(IWikiSessionDAO sessionDAO) { + this.wikiSessionDAO = sessionDAO; + } + + public ILamsToolService getToolService() { + return toolService; + } + + public void setToolService(ILamsToolService toolService) { + this.toolService = toolService; + } + + public IWikiUserDAO getWikiUserDAO() { + return wikiUserDAO; + } + + public void setWikiUserDAO(IWikiUserDAO userDAO) { + this.wikiUserDAO = 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; + } +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/service/WikiServiceProxy.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/service/WikiServiceProxy.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/service/WikiServiceProxy.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,75 @@ +/**************************************************************** + * 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.wiki.service; + +import javax.servlet.ServletContext; + +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 WikiServiceProxy { + + public static final IWikiService getWikiService(ServletContext servletContext) { + return (IWikiService) getWikiDomainService(servletContext); + } + + private static Object getWikiDomainService(ServletContext servletContext) { + WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext); + return wac.getBean("wikiService"); + } + + /* + * Return the wiki 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 getWikiSessionManager(ServletContext servletContext) { + return (ToolSessionManager) getWikiDomainService(servletContext); + } + + /* + * Return the wiki 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 getWikiContentManager(ServletContext servletContext) { + return (ToolContentManager) getWikiDomainService(servletContext); + } + +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/util/WikiConstants.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/util/WikiConstants.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/util/WikiConstants.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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.wiki.util; + +public interface WikiConstants { + public static final String TOOL_SIGNATURE = "lawiki10"; + + // Wiki 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 ATTACHMENT_LIST = "attachmentList"; + 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"; + public static final String ATTR_MAIN_WIKI_PAGE = "mainWikiPage"; + public static final String ATTR_WIKI_PAGES = "wikiPages"; + public static final String ATTR_WIKI_PAGE_CONTENT_HISTORY = "wikiPageContentHistory"; + public static final String ATTR_CURRENT_WIKI = "currentWikiPage"; + public static final String ATTR_NEW_PAGE_NAME = "newPageName"; + public static final String ATTR_HISTORY_PAGE_CONTENT_ID = "historyPageContentId"; + public static final String ATTR_COMPARE_STRING = "compareString"; + public static final String ATTR_COMPARE_TITLE = "compareTitle"; + public static final String ATTR_COMPARE_VERSIONS = "compareVersions"; + + // Parameter names + public static final String PARAM_PARENT_PAGE = "parentPage"; + + static final String FILTER_REPLACE_TEXT = "***"; +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/util/WikiException.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/util/WikiException.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/util/WikiException.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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.wiki.util; + +/** + * + * @author Anthony Sukkar + * + */ +public class WikiException extends RuntimeException { + + /** + * + */ + private static final long serialVersionUID = -5518806968051758859L; + + public WikiException(String message) { + super(message); + } + + public WikiException(String message, Throwable cause) { + super(message, cause); + } + + public WikiException() { + super(); + + } + + public WikiException(Throwable cause) { + super(cause); + + } + +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/util/WikiToolContentHandler.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/util/WikiToolContentHandler.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/util/WikiToolContentHandler.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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.wiki.util; + +import org.lamsfoundation.lams.contentrepository.client.ToolContentHandler; + +/** + * Simple client for accessing the content repository. + */ +public class WikiToolContentHandler 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 = "wikiworkspace"; + + public static String repositoryUser = "wiki"; + + public static char[] repositoryId = { 'l', 'a', 'm', 's', '-', 'e', 'x' }; + + /** + * + */ + public WikiToolContentHandler() { + 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: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/util/diff/Diff.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/util/diff/Diff.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/util/diff/Diff.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,435 @@ +package org.lamsfoundation.lams.tool.wiki.util.diff; + +import java.util.*; + +/** + * Compares two collections, returning a list of the additions, changes, and + * deletions between them. A Comparator may be passed as an + * argument to the constructor, and will thus be used. If not provided, the + * initial value in the a ("from") collection will be looked at + * to see if it supports the Comparable interface. If so, its + * equals and compareTo methods will be invoked on + * the instances in the "from" and "to" collections; otherwise, for speed, hash + * codes from the objects will be used instead for comparison. + * + *

+ * The file FileDiff.java shows an example usage of this class, in an + * application similar to the Unix "diff" program. + *

+ */ +public class Diff { + /** + * The source array, AKA the "from" values. + */ + protected Object[] a; + + /** + * The target array, AKA the "to" values. + */ + protected Object[] b; + + /** + * The list of differences, as Difference instances. + */ + protected List diffs = new ArrayList(); + + /** + * The pending, uncommitted difference. + */ + private Difference pending; + + /** + * The comparator used, if any. + */ + private Comparator comparator; + + /** + * The thresholds. + */ + private TreeMap thresh; + + /** + * Constructs the Diff object for the two arrays, using the given + * comparator. + */ + public Diff(Object[] a, Object[] b, Comparator comp) { + this.a = a; + this.b = b; + this.comparator = comp; + this.thresh = null; // created in getLongestCommonSubsequences + } + + /** + * Constructs the Diff object for the two arrays, using the default + * comparison mechanism between the objects, such as equals + * and compareTo. + */ + public Diff(Object[] a, Object[] b) { + this(a, b, null); + } + + /** + * Constructs the Diff object for the two collections, using the given + * comparator. + */ + public Diff(Collection a, Collection b, Comparator comp) { + this(a.toArray(), b.toArray(), comp); + } + + /** + * Constructs the Diff object for the two collections, using the default + * comparison mechanism between the objects, such as equals + * and compareTo. + */ + public Diff(Collection a, Collection b) { + this(a, b, null); + } + + /** + * Runs diff and returns the results. + */ + public List diff() { + traverseSequences(); + + // add the last difference, if pending: + if (pending != null) { + diffs.add(pending); + } + + return diffs; + } + + /** + * Traverses the sequences, seeking the longest common subsequences, + * invoking the methods finishedA, finishedB, + * onANotB, and onBNotA. + */ + protected void traverseSequences() { + Integer[] matches = getLongestCommonSubsequences(); + + int lastA = a.length - 1; + int lastB = b.length - 1; + int bi = 0; + int ai; + + int lastMatch = matches.length - 1; + + for (ai = 0; ai <= lastMatch; ++ai) { + Integer bLine = matches[ai]; + + if (bLine == null) { + onANotB(ai, bi); + } else { + while (bi < bLine.intValue()) { + onBNotA(ai, bi++); + } + + onMatch(ai, bi++); + } + } + + boolean calledFinishA = false; + boolean calledFinishB = false; + + while (ai <= lastA || bi <= lastB) { + + // last A? + if (ai == lastA + 1 && bi <= lastB) { + if (!calledFinishA && callFinishedA()) { + finishedA(lastA); + calledFinishA = true; + } else { + while (bi <= lastB) { + onBNotA(ai, bi++); + } + } + } + + // last B? + if (bi == lastB + 1 && ai <= lastA) { + if (!calledFinishB && callFinishedB()) { + finishedB(lastB); + calledFinishB = true; + } else { + while (ai <= lastA) { + onANotB(ai++, bi); + } + } + } + + if (ai <= lastA) { + onANotB(ai++, bi); + } + + if (bi <= lastB) { + onBNotA(ai, bi++); + } + } + } + + /** + * Override and return true in order to have finishedA + * invoked at the last element in the a array. + */ + protected boolean callFinishedA() { + return false; + } + + /** + * Override and return true in order to have finishedB + * invoked at the last element in the b array. + */ + protected boolean callFinishedB() { + return false; + } + + /** + * Invoked at the last element in a, if + * callFinishedA returns true. + */ + protected void finishedA(int lastA) { + } + + /** + * Invoked at the last element in b, if + * callFinishedB returns true. + */ + protected void finishedB(int lastB) { + } + + /** + * Invoked for elements in a and not in b. + */ + protected void onANotB(int ai, int bi) { + if (pending == null) { + pending = new Difference(ai, ai, bi, -1); + } else { + pending.setDeleted(ai); + } + } + + /** + * Invoked for elements in b and not in a. + */ + protected void onBNotA(int ai, int bi) { + if (pending == null) { + pending = new Difference(ai, -1, bi, bi); + } else { + pending.setAdded(bi); + } + } + + /** + * Invoked for elements matching in a and b. + */ + protected void onMatch(int ai, int bi) { + if (pending == null) { + // no current pending + } else { + diffs.add(pending); + pending = null; + } + } + + /** + * Compares the two objects, using the comparator provided with the + * constructor, if any. + */ + protected boolean equals(Object x, Object y) { + return comparator == null ? x.equals(y) : comparator.compare(x, y) == 0; + } + + /** + * Returns an array of the longest common subsequences. + */ + public Integer[] getLongestCommonSubsequences() { + int aStart = 0; + int aEnd = a.length - 1; + + int bStart = 0; + int bEnd = b.length - 1; + + TreeMap matches = new TreeMap(); + + while (aStart <= aEnd && bStart <= bEnd && equals(a[aStart], b[bStart])) { + matches.put(new Integer(aStart++), new Integer(bStart++)); + } + + while (aStart <= aEnd && bStart <= bEnd && equals(a[aEnd], b[bEnd])) { + matches.put(new Integer(aEnd--), new Integer(bEnd--)); + } + + Map bMatches = null; + if (comparator == null) { + if (a.length > 0 && a[0] instanceof Comparable) { + // this uses the Comparable interface + bMatches = new TreeMap(); + } else { + // this just uses hashCode() + bMatches = new HashMap(); + } + } else { + // we don't really want them sorted, but this is the only Map + // implementation (as of JDK 1.4) that takes a comparator. + bMatches = new TreeMap(comparator); + } + + for (int bi = bStart; bi <= bEnd; ++bi) { + Object element = b[bi]; + Object key = element; + List positions = (List) bMatches.get(key); + if (positions == null) { + positions = new ArrayList(); + bMatches.put(key, positions); + } + positions.add(new Integer(bi)); + } + + thresh = new TreeMap(); + Map links = new HashMap(); + + for (int i = aStart; i <= aEnd; ++i) { + Object aElement = a[i]; // keygen here. + List positions = (List) bMatches.get(aElement); + + if (positions != null) { + Integer k = new Integer(0); + ListIterator pit = positions.listIterator(positions.size()); + while (pit.hasPrevious()) { + Integer j = (Integer) pit.previous(); + + k = insert(j, k); + + if (k == null) { + // nothing + } else { + Object value = k.intValue() > 0 ? links.get(new Integer(k.intValue() - 1)) : null; + links.put(k, new Object[] { value, new Integer(i), j }); + } + } + } + } + + if (thresh.size() > 0) { + Integer ti = (Integer) thresh.lastKey(); + Object[] link = (Object[]) links.get(ti); + while (link != null) { + Integer x = (Integer) link[1]; + Integer y = (Integer) link[2]; + matches.put(x, y); + link = (Object[]) link[0]; + } + } + + return toArray(matches); + } + + /** + * Converts the map (indexed by java.lang.Integers) into an array. + */ + protected static Integer[] toArray(TreeMap map) { + int size = map.size() == 0 ? 0 : 1 + ((Integer) map.lastKey()).intValue(); + Integer[] ary = new Integer[size]; + Iterator it = map.keySet().iterator(); + + while (it.hasNext()) { + Integer idx = (Integer) it.next(); + Integer val = (Integer) map.get(idx); + ary[idx.intValue()] = val; + } + return ary; + } + + /** + * Returns whether the integer is not zero (including if it is not null). + */ + protected static boolean isNonzero(Integer i) { + return i != null && i.intValue() != 0; + } + + /** + * Returns whether the value in the map for the given index is greater than + * the given value. + */ + protected boolean isGreaterThan(Integer index, Integer val) { + Integer lhs = (Integer) thresh.get(index); + return lhs != null && val != null && lhs.compareTo(val) > 0; + } + + /** + * Returns whether the value in the map for the given index is less than the + * given value. + */ + protected boolean isLessThan(Integer index, Integer val) { + Integer lhs = (Integer) thresh.get(index); + return lhs != null && (val == null || lhs.compareTo(val) < 0); + } + + /** + * Returns the value for the greatest key in the map. + */ + protected Integer getLastValue() { + return (Integer) thresh.get(thresh.lastKey()); + } + + /** + * Adds the given value to the "end" of the threshold map, that is, with the + * greatest index/key. + */ + protected void append(Integer value) { + Integer addIdx = null; + if (thresh.size() == 0) { + addIdx = new Integer(0); + } else { + Integer lastKey = (Integer) thresh.lastKey(); + addIdx = new Integer(lastKey.intValue() + 1); + } + thresh.put(addIdx, value); + } + + /** + * Inserts the given values into the threshold map. + */ + protected Integer insert(Integer j, Integer k) { + if (isNonzero(k) && isGreaterThan(k, j) && isLessThan(new Integer(k.intValue() - 1), j)) { + thresh.put(k, j); + } else { + int hi = -1; + + if (isNonzero(k)) { + hi = k.intValue(); + } else if (thresh.size() > 0) { + hi = ((Integer) thresh.lastKey()).intValue(); + } + + // off the end? + if (hi == -1 || j.compareTo(getLastValue()) > 0) { + append(j); + k = new Integer(hi + 1); + } else { + // binary search for insertion point: + int lo = 0; + + while (lo <= hi) { + int index = (hi + lo) / 2; + Integer val = (Integer) thresh.get(new Integer(index)); + int cmp = j.compareTo(val); + + if (cmp == 0) { + return null; + } else if (cmp > 0) { + lo = index + 1; + } else { + hi = index - 1; + } + } + + thresh.put(new Integer(lo), j); + k = new Integer(lo); + } + } + + return k; + } + +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/util/diff/Difference.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/util/diff/Difference.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/util/diff/Difference.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,120 @@ +package org.lamsfoundation.lams.tool.wiki.util.diff; + +/** + * Represents a difference, as used in Diff. A difference + * consists of two pairs of starting and ending points, each pair representing + * either the "from" or the "to" collection passed to Diff. If + * an ending point is -1, then the difference was either a deletion or an + * addition. For example, if getDeletedEnd() returns -1, then the + * difference represents an addition. + */ +public class Difference { + public static final int NONE = -1; + + /** + * The point at which the deletion starts. + */ + private int delStart = NONE; + + /** + * The point at which the deletion ends. + */ + private int delEnd = NONE; + + /** + * The point at which the addition starts. + */ + private int addStart = NONE; + + /** + * The point at which the addition ends. + */ + private int addEnd = NONE; + + /** + * Creates the difference for the given start and end points for the + * deletion and addition. + */ + public Difference(int delStart, int delEnd, int addStart, int addEnd) { + this.delStart = delStart; + this.delEnd = delEnd; + this.addStart = addStart; + this.addEnd = addEnd; + } + + /** + * The point at which the deletion starts, if any. A value equal to + * NONE means this is an addition. + */ + public int getDeletedStart() { + return delStart; + } + + /** + * The point at which the deletion ends, if any. A value equal to + * NONE means this is an addition. + */ + public int getDeletedEnd() { + return delEnd; + } + + /** + * The point at which the addition starts, if any. A value equal to + * NONE means this must be an addition. + */ + public int getAddedStart() { + return addStart; + } + + /** + * The point at which the addition ends, if any. A value equal to + * NONE means this must be an addition. + */ + public int getAddedEnd() { + return addEnd; + } + + /** + * Sets the point as deleted. The start and end points will be modified to + * include the given line. + */ + public void setDeleted(int line) { + delStart = Math.min(line, delStart); + delEnd = Math.max(line, delEnd); + } + + /** + * Sets the point as added. The start and end points will be modified to + * include the given line. + */ + public void setAdded(int line) { + addStart = Math.min(line, addStart); + addEnd = Math.max(line, addEnd); + } + + /** + * Compares this object to the other for equality. Both objects must be of + * type Difference, with the same starting and ending points. + */ + public boolean equals(Object obj) { + if (obj instanceof Difference) { + Difference other = (Difference) obj; + + return (delStart == other.delStart && delEnd == other.delEnd && addStart == other.addStart && addEnd == other.addEnd); + } else { + return false; + } + } + + /** + * Returns a string representation of this difference. + */ + public String toString() { + StringBuffer buf = new StringBuffer(); + buf.append("del: [" + delStart + ", " + delEnd + "]"); + buf.append(" "); + buf.append("add: [" + addStart + ", " + addEnd + "]"); + return buf.toString(); + } + +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/AuthoringAction.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/AuthoringAction.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/AuthoringAction.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,530 @@ +/**************************************************************** + * 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.wiki.web.actions; + +import java.util.Date; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Set; +import java.util.SortedSet; +import java.util.TreeSet; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.lang.StringUtils; +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.apache.struts.action.ActionMessages; +import org.apache.struts.upload.FormFile; +import org.lamsfoundation.lams.authoring.web.AuthoringConstants; +import org.lamsfoundation.lams.contentrepository.client.IToolContentHandler; +import org.lamsfoundation.lams.tool.ToolAccessMode; +import org.lamsfoundation.lams.tool.wiki.dto.WikiPageContentDTO; +import org.lamsfoundation.lams.tool.wiki.dto.WikiPageDTO; +import org.lamsfoundation.lams.tool.wiki.model.Wiki; +import org.lamsfoundation.lams.tool.wiki.model.WikiAttachment; +import org.lamsfoundation.lams.tool.wiki.model.WikiPage; +import org.lamsfoundation.lams.tool.wiki.model.WikiPageContent; +import org.lamsfoundation.lams.tool.wiki.model.WikiUser; +import org.lamsfoundation.lams.tool.wiki.service.IWikiService; +import org.lamsfoundation.lams.tool.wiki.service.WikiServiceProxy; // import + // org.lamsfoundation.lams.tool.wiki.util.Diff; +import org.lamsfoundation.lams.tool.wiki.util.diff.Diff; +import org.lamsfoundation.lams.tool.wiki.util.diff.Difference; +import org.lamsfoundation.lams.tool.wiki.util.WikiConstants; +import org.lamsfoundation.lams.tool.wiki.web.forms.AuthoringForm; +import org.lamsfoundation.lams.util.FileValidatorUtil; +import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.action.LamsDispatchAction; +import org.lamsfoundation.lams.web.util.AttributeNames; +import org.lamsfoundation.lams.web.util.SessionMap; + +/** + * @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="compareWiki" path="/pages/wiki/compare.jsp" + * @struts.action-forward name="viewWiki" path="/pages/wiki/viewWiki.jsp" + * @struts.action-forward name="message_page" path="tiles:/generic/message" + */ +public class AuthoringAction extends WikiPageAction { + + private static Logger logger = Logger.getLogger(AuthoringAction.class); + + public IWikiService wikiService; + + // Authoring SessionMap key names + private static final String KEY_TOOL_CONTENT_ID = "toolContentID"; + + private static final String KEY_CONTENT_FOLDER_ID = "contentFolderID"; + + private static final String KEY_MODE = "mode"; + + private static final String KEY_ONLINE_FILES = "onlineFiles"; + + private static final String KEY_OFFLINE_FILES = "offlineFiles"; + + private static final String KEY_UNSAVED_ONLINE_FILES = "unsavedOnlineFiles"; + + private static final String KEY_UNSAVED_OFFLINE_FILES = "unsavedOfflineFiles"; + + private static final String KEY_DELETED_FILES = "deletedFiles"; + + /** + * 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) throws Exception { + + // Extract toolContentID 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, "mode", true); + + // Set up the authForm. + AuthoringForm authForm = (AuthoringForm) form; + + // Long currentPageUid = WebUtil.readLongParam(request, + // WikiConstants.ATTR_CURRENT_WIKI, true); + Long currentPageUid = authForm.getCurrentWikiPageId(); + + // set up wikiService + if (wikiService == null) { + wikiService = WikiServiceProxy.getWikiService(this.getServlet().getServletContext()); + } + + // retrieving Wiki with given toolContentID + Wiki wiki = wikiService.getWikiByContentId(toolContentID); + if (wiki == null) { + wiki = wikiService.copyDefaultContent(toolContentID); + wiki.setCreateDate(new Date()); + wikiService.saveOrUpdateWiki(wiki); + // TODO NOTE: this causes DB orphans when LD not saved. + } + + 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. + wiki.setDefineLater(true); + wikiService.saveOrUpdateWiki(wiki); + } + + // update the form + updateAuthForm(authForm, wiki); + + // Set the required main wiki page + WikiPageDTO mainPageDTO = new WikiPageDTO(wiki.getMainPage()); + request.setAttribute(WikiConstants.ATTR_MAIN_WIKI_PAGE, mainPageDTO); + + // Set the current wiki page, if there is none, set to the main page + WikiPage currentWikiPage = null; + if (currentPageUid != null) { + currentWikiPage = wikiService.getWikiPageByUid(currentPageUid); + } else { + currentWikiPage = wiki.getMainPage(); + } + WikiPageDTO currentPageDTO = new WikiPageDTO(currentWikiPage); + request.setAttribute(WikiConstants.ATTR_CURRENT_WIKI, currentPageDTO); + + // Set the current wiki history + SortedSet currentWikiPageHistoryDTOs = new TreeSet(); + for (WikiPageContent wikiPageContentHistoryItem : currentWikiPage.getWikiContentVersions()) { + currentWikiPageHistoryDTOs.add(new WikiPageContentDTO(wikiPageContentHistoryItem)); + } + request.setAttribute(WikiConstants.ATTR_WIKI_PAGE_CONTENT_HISTORY, currentWikiPageHistoryDTOs); + + // Get the child wiki pages + SortedSet wikiPageDTOs = new TreeSet(); + for (WikiPage wikiPage : wiki.getWikiPages()) { + wikiPageDTOs.add(new WikiPageDTO(wikiPage)); + } + request.setAttribute(WikiConstants.ATTR_WIKI_PAGES, wikiPageDTOs); + + // Set up sessionMap + SessionMap map = createSessionMap(wiki, getAccessMode(request), contentFolderID, toolContentID); + authForm.setSessionMapID(map.getSessionID()); + + // add the sessionMap to HTTPSession. + request.getSession().setAttribute(map.getSessionID(), map); + request.setAttribute(WikiConstants.ATTR_SESSION_MAP, map); + + return mapping.findForward("success"); + } + + protected ActionForward returnToWiki(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response, Long currentWikiPageId) throws Exception { + AuthoringForm authForm = (AuthoringForm) form; + authForm.setCurrentWikiPageId(currentWikiPageId); + return unspecified(mapping, authForm, request, response); + } + + public WikiUser getCurrentUser(Long toolSessionId) { + // return null here to signify that this is in author + return null; + } + + public ActionForward updateContent(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + // TODO need error checking. + + // get authForm and session map. + AuthoringForm authForm = (AuthoringForm) form; + SessionMap map = getSessionMap(request, authForm); + + // get wiki content. + Wiki wiki = wikiService.getWikiByContentId((Long) map.get(KEY_TOOL_CONTENT_ID)); + + // update wiki content using form inputs. + ToolAccessMode mode = (ToolAccessMode) map.get(KEY_MODE); + updateWiki(wiki, authForm, mode); + + // remove attachments marked for deletion. + Set attachments = wiki.getWikiAttachments(); + if (attachments == null) { + attachments = new HashSet(); + } + + for (WikiAttachment att : getAttList(KEY_DELETED_FILES, map)) { + // remove from db, leave in repository + attachments.remove(att); + } + + // add unsaved attachments + attachments.addAll(getAttList(KEY_UNSAVED_ONLINE_FILES, map)); + attachments.addAll(getAttList(KEY_UNSAVED_OFFLINE_FILES, map)); + + // set attachments in case it didn't exist + wiki.setWikiAttachments(attachments); + + // set the update date + wiki.setUpdateDate(new Date()); + + // releasing defineLater flag so that learner can start using the tool. + wiki.setDefineLater(false); + + wikiService.saveOrUpdateWiki(wiki); + + request.setAttribute(AuthoringConstants.LAMS_AUTHORING_SUCCESS_FLAG, Boolean.TRUE); + + // add the sessionMapID to form + authForm.setSessionMapID(map.getSessionID()); + + request.setAttribute(WikiConstants.ATTR_SESSION_MAP, map); + + return mapping.findForward("success"); + } + + public ActionForward uploadOnline(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + return uploadFile(mapping, (AuthoringForm) form, IToolContentHandler.TYPE_ONLINE, request); + } + + public ActionForward uploadOffline(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + return uploadFile(mapping, (AuthoringForm) form, IToolContentHandler.TYPE_OFFLINE, request); + } + + public ActionForward deleteOnline(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + return deleteFile(mapping, (AuthoringForm) form, IToolContentHandler.TYPE_ONLINE, request); + } + + public ActionForward deleteOffline(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + return deleteFile(mapping, (AuthoringForm) form, IToolContentHandler.TYPE_OFFLINE, request); + } + + public ActionForward removeUnsavedOnline(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + return removeUnsaved(mapping, (AuthoringForm) form, IToolContentHandler.TYPE_ONLINE, request); + } + + public ActionForward removeUnsavedOffline(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + return removeUnsaved(mapping, (AuthoringForm) form, IToolContentHandler.TYPE_OFFLINE, request); + } + + /* ========== Private Methods ********** */ + + private ActionForward uploadFile(ActionMapping mapping, AuthoringForm authForm, String type, + HttpServletRequest request) { + SessionMap map = getSessionMap(request, authForm); + + FormFile file; + List unsavedFiles; + List savedFiles; + if (StringUtils.equals(IToolContentHandler.TYPE_OFFLINE, type)) { + file = (FormFile) authForm.getOfflineFile(); + unsavedFiles = getAttList(KEY_UNSAVED_OFFLINE_FILES, map); + + savedFiles = getAttList(KEY_OFFLINE_FILES, map); + } else { + file = (FormFile) authForm.getOnlineFile(); + unsavedFiles = getAttList(KEY_UNSAVED_ONLINE_FILES, map); + + savedFiles = getAttList(KEY_ONLINE_FILES, map); + } + + // validate file max size + ActionMessages errors = new ActionMessages(); + FileValidatorUtil.validateFileSize(file, true, errors); + if (!errors.isEmpty()) { + request.setAttribute(WikiConstants.ATTR_SESSION_MAP, map); + this.saveErrors(request, errors); + return mapping.findForward("success"); + } + + if (file.getFileName().length() != 0) { + + // upload file to repository + WikiAttachment newAtt = wikiService.uploadFileToContent((Long) map.get(KEY_TOOL_CONTENT_ID), file, type); + + // Add attachment to unsavedFiles + // check to see if file with same name exists + WikiAttachment currAtt; + Iterator iter = savedFiles.iterator(); + while (iter.hasNext()) { + currAtt = (WikiAttachment) iter.next(); + if (StringUtils.equals(currAtt.getFileName(), newAtt.getFileName()) + && StringUtils.equals(currAtt.getFileType(), newAtt.getFileType())) { + // move from this this list to deleted list. + getAttList(KEY_DELETED_FILES, map).add(currAtt); + iter.remove(); + break; + } + } + unsavedFiles.add(newAtt); + + request.setAttribute(WikiConstants.ATTR_SESSION_MAP, map); + request.setAttribute("unsavedChanges", new Boolean(true)); + } + return mapping.findForward("success"); + } + + private ActionForward deleteFile(ActionMapping mapping, AuthoringForm authForm, String type, + HttpServletRequest request) { + SessionMap map = getSessionMap(request, authForm); + + List fileList; + if (StringUtils.equals(IToolContentHandler.TYPE_OFFLINE, type)) { + fileList = getAttList(KEY_OFFLINE_FILES, map); + } else { + fileList = getAttList(KEY_ONLINE_FILES, map); + } + + Iterator iter = fileList.iterator(); + + while (iter.hasNext()) { + WikiAttachment att = (WikiAttachment) iter.next(); + + if (att.getFileUuid().equals(authForm.getDeleteFileUuid())) { + // move to delete file list, deleted at next updateContent + getAttList(KEY_DELETED_FILES, map).add(att); + + // remove from this list + iter.remove(); + break; + } + } + + request.setAttribute(WikiConstants.ATTR_SESSION_MAP, map); + request.setAttribute("unsavedChanges", new Boolean(true)); + + return mapping.findForward("success"); + } + + private ActionForward removeUnsaved(ActionMapping mapping, AuthoringForm authForm, String type, + HttpServletRequest request) { + SessionMap map = getSessionMap(request, authForm); + + List unsavedFiles; + + if (StringUtils.equals(IToolContentHandler.TYPE_OFFLINE, type)) { + unsavedFiles = getAttList(KEY_UNSAVED_OFFLINE_FILES, map); + } else { + unsavedFiles = getAttList(KEY_UNSAVED_ONLINE_FILES, map); + } + + Iterator iter = unsavedFiles.iterator(); + while (iter.hasNext()) { + WikiAttachment att = (WikiAttachment) iter.next(); + + if (att.getFileUuid().equals(authForm.getDeleteFileUuid())) { + // delete from repository and list + wikiService.deleteFromRepository(att.getFileUuid(), att.getFileVersionId()); + iter.remove(); + break; + } + } + + request.setAttribute(WikiConstants.ATTR_SESSION_MAP, map); + request.setAttribute("unsavedChanges", new Boolean(true)); + + return mapping.findForward("success"); + } + + /** + * Updates Wiki content using AuthoringForm inputs. + * + * @param authForm + * @param mode + * @return + */ + private void updateWiki(Wiki wiki, AuthoringForm authForm, ToolAccessMode mode) { + // wiki.setTitle(authForm.getTitle()); + WikiPage mainPage = wiki.getMainPage(); + // mainPage.setTitle(authForm.getTitle()); + + WikiPageContent content = mainPage.getCurrentWikiContent(); + // content.setBody(authForm.getWikiBody()); + // mainPage.setCurrentWikiContent(content); + + wiki.setMainPage(mainPage); + + if (mode.isAuthor()) { // Teacher cannot modify following + wiki.setOfflineInstructions(authForm.getOnlineInstruction()); + wiki.setOnlineInstructions(authForm.getOfflineInstruction()); + wiki.setLockOnFinished(authForm.isLockOnFinished()); + wiki.setAllowLearnerAttachImages(authForm.isAllowLearnerAttachImages()); + wiki.setAllowLearnerCreatePages(authForm.isAllowLearnerCreatePages()); + wiki.setAllowLearnerInsertLinks(authForm.isAllowLearnerInsertLinks()); + wiki.setReflectOnActivity(authForm.isReflectOnActivity()); + wiki.setReflectInstructions(authForm.getReflectInstructions()); + wiki.setMaximumEdits(authForm.getMaximumEdits()); + wiki.setMinimumEdits(authForm.getMinimumEdits()); + } + } + + /** + * Updates AuthoringForm using Wiki content. + * + * @param wiki + * @param authForm + * @return + */ + private void updateAuthForm(AuthoringForm authForm, Wiki wiki) { + authForm.setOnlineInstruction(wiki.getOnlineInstructions()); + authForm.setOfflineInstruction(wiki.getOfflineInstructions()); + authForm.setLockOnFinished(wiki.isLockOnFinished()); + authForm.setAllowLearnerAttachImages(wiki.isAllowLearnerAttachImages()); + authForm.setAllowLearnerCreatePages(wiki.isAllowLearnerCreatePages()); + authForm.setAllowLearnerInsertLinks(wiki.isAllowLearnerInsertLinks()); + authForm.setReflectOnActivity(wiki.isReflectOnActivity()); + authForm.setReflectInstructions(wiki.getReflectInstructions()); + authForm.setMaximumEdits(wiki.getMaximumEdits()); + authForm.setMinimumEdits(wiki.getMinimumEdits()); + authForm.setNewPageIsEditable(true); + } + + /** + * Updates SessionMap using Wiki content. + * + * @param wiki + * @param mode + */ + private SessionMap createSessionMap(Wiki wiki, ToolAccessMode mode, String contentFolderID, + Long toolContentID) { + + SessionMap map = new SessionMap(); + + map.put(KEY_MODE, mode); + map.put(KEY_CONTENT_FOLDER_ID, contentFolderID); + map.put(KEY_TOOL_CONTENT_ID, toolContentID); + map.put(KEY_ONLINE_FILES, new LinkedList()); + map.put(KEY_OFFLINE_FILES, new LinkedList()); + map.put(KEY_UNSAVED_ONLINE_FILES, new LinkedList()); + map.put(KEY_UNSAVED_OFFLINE_FILES, new LinkedList()); + map.put(KEY_DELETED_FILES, new LinkedList()); + + Iterator iter = wiki.getWikiAttachments().iterator(); + while (iter.hasNext()) { + WikiAttachment attachment = (WikiAttachment) iter.next(); + String type = attachment.getFileType(); + if (type.equals(IToolContentHandler.TYPE_OFFLINE)) { + getAttList(KEY_OFFLINE_FILES, map).add(attachment); + } + if (type.equals(IToolContentHandler.TYPE_ONLINE)) { + getAttList(KEY_ONLINE_FILES, map).add(attachment); + } + } + + return map; + } + + /** + * Get ToolAccessMode from HttpRequest parameters. Default value is AUTHOR + * mode. + * + * @param request + * @return + */ + private ToolAccessMode getAccessMode(HttpServletRequest request) { + ToolAccessMode mode; + String modeStr = request.getParameter(AttributeNames.ATTR_MODE); + if (StringUtils.equalsIgnoreCase(modeStr, ToolAccessMode.TEACHER.toString())) + mode = ToolAccessMode.TEACHER; + else + mode = ToolAccessMode.AUTHOR; + return mode; + } + + /** + * Retrieves a List of attachments from the map using the key. + * + * @param key + * @param map + * @return + */ + private List getAttList(String key, SessionMap map) { + List list = (List) map.get(key); + return list; + } + + /** + * Retrieve the SessionMap from the HttpSession. + * + * @param request + * @param authForm + * @return + */ + private SessionMap getSessionMap(HttpServletRequest request, AuthoringForm authForm) { + return (SessionMap) request.getSession().getAttribute(authForm.getSessionMapID()); + } +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/ClearSessionAction.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/ClearSessionAction.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/ClearSessionAction.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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.wiki.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: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/IWikiPageAction.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/IWikiPageAction.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/IWikiPageAction.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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 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.wiki.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; + +public interface IWikiPageAction { + + ActionForward editPage(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response); + + ActionForward addPage(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response); + + ActionForward removePage(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response); + +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/LearningAction.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/LearningAction.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/LearningAction.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,262 @@ +/**************************************************************** + * 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.wiki.web.actions; + +import java.io.IOException; +import java.util.SortedSet; +import java.util.TreeSet; + +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.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.notebook.service.CoreNotebookConstants; +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.wiki.dto.WikiDTO; +import org.lamsfoundation.lams.tool.wiki.dto.WikiPageContentDTO; +import org.lamsfoundation.lams.tool.wiki.dto.WikiPageDTO; +import org.lamsfoundation.lams.tool.wiki.dto.WikiUserDTO; +import org.lamsfoundation.lams.tool.wiki.model.Wiki; +import org.lamsfoundation.lams.tool.wiki.model.WikiPage; +import org.lamsfoundation.lams.tool.wiki.model.WikiPageContent; +import org.lamsfoundation.lams.tool.wiki.model.WikiSession; +import org.lamsfoundation.lams.tool.wiki.model.WikiUser; +import org.lamsfoundation.lams.tool.wiki.service.IWikiService; +import org.lamsfoundation.lams.tool.wiki.service.WikiServiceProxy; +import org.lamsfoundation.lams.tool.wiki.util.WikiConstants; +import org.lamsfoundation.lams.tool.wiki.util.WikiException; +import org.lamsfoundation.lams.tool.wiki.web.forms.AuthoringForm; +import org.lamsfoundation.lams.tool.wiki.web.forms.LearningForm; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +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 lfoxton + * @version + * + * @struts.action path="/learning" parameter="dispatch" scope="request" + * name="learningForm" validate="false" + * @struts.action-forward name="wiki" path="tiles:/learning/main" + * @struts.action-forward name="runOffline" path="tiles:/learning/runOffline" + * @struts.action-forward name="compareWiki" path="/pages/wiki/compare.jsp" + * @struts.action-forward name="viewWiki" path="/pages/wiki/viewWiki.jsp" + * @struts.action-forward name="defineLater" path="tiles:/learning/defineLater" + */ +public class LearningAction extends WikiPageAction { + + private static Logger log = Logger.getLogger(LearningAction.class); + + private static final boolean MODE_OPTIONAL = false; + + private IWikiService wikiService; + + protected ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { + + LearningForm learningForm = (LearningForm) form; + + // 'toolSessionID' and 'mode' parameters are expected to be present. + // TODO need to catch exceptions and handle errors. + ToolAccessMode mode = WebUtil.readToolAccessModeParam(request, AttributeNames.PARAM_MODE, MODE_OPTIONAL); + + Long toolSessionID = WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID); + + Long currentPageUid = learningForm.getCurrentWikiPageId(); + + // set up wikiService + if (wikiService == null) { + wikiService = WikiServiceProxy.getWikiService(this.getServlet().getServletContext()); + } + + // Retrieve the session and content. + WikiSession wikiSession = wikiService.getSessionBySessionId(toolSessionID); + if (wikiSession == null) { + throw new WikiException("Cannot retreive session with toolSessionID" + toolSessionID); + } + + Wiki wiki = wikiSession.getWiki(); + + // check defineLater + if (wiki.isDefineLater()) { + return mapping.findForward("defineLater"); + } + + // set mode, toolSessionID and WikiDTO + request.setAttribute("mode", mode.toString()); + learningForm.setToolSessionID(toolSessionID); + + WikiDTO wikiDTO = new WikiDTO(); + wikiDTO.title = wiki.getTitle(); + wikiDTO.instructions = wiki.getInstructions(); + wikiDTO.lockOnFinish = wiki.isLockOnFinished(); + request.setAttribute("wikiDTO", wikiDTO); + + // Set the content in use flag. + if (!wiki.isContentInUse()) { + wiki.setContentInUse(new Boolean(true)); + wikiService.saveOrUpdateWiki(wiki); + } + + // check runOffline + if (wiki.isRunOffline()) { + return mapping.findForward("runOffline"); + } + + WikiUser wikiUser; + if (mode.equals(ToolAccessMode.TEACHER)) { + Long userID = WebUtil.readLongParam(request, AttributeNames.PARAM_USER_ID, false); + wikiUser = wikiService.getUserByUserIdAndSessionId(userID, toolSessionID); + } else { + wikiUser = getCurrentUser(toolSessionID); + } + + // Get the wikipages from the session and the main page + SortedSet wikiPageDTOs = new TreeSet(); + WikiPage mainPage = null; + for (WikiPage wikiPage : wikiSession.getWikiPages()) { + WikiPageDTO pageDTO = new WikiPageDTO(wikiPage); + + wikiPageDTOs.add(pageDTO); + + // Set the main page + if (wikiPage.getTitle().equals(wiki.getMainPage().getTitle())) { + mainPage = wikiPage; + } + } + request.setAttribute(WikiConstants.ATTR_WIKI_PAGES, wikiPageDTOs); + request.setAttribute(WikiConstants.ATTR_MAIN_WIKI_PAGE, new WikiPageDTO(mainPage)); + + // Set the current wiki page, if there is none, set to the main page + WikiPage currentWikiPage = null; + if (currentPageUid != null) { + currentWikiPage = wikiService.getWikiPageByUid(currentPageUid); + } else { + currentWikiPage = mainPage; + } + request.setAttribute(WikiConstants.ATTR_CURRENT_WIKI, new WikiPageDTO(currentWikiPage)); + + // Set the current wiki history + SortedSet currentWikiPageHistoryDTOs = new TreeSet(); + for (WikiPageContent wikiPageContentHistoryItem : currentWikiPage.getWikiContentVersions()) { + currentWikiPageHistoryDTOs.add(new WikiPageContentDTO(wikiPageContentHistoryItem)); + } + request.setAttribute(WikiConstants.ATTR_WIKI_PAGE_CONTENT_HISTORY, currentWikiPageHistoryDTOs); + + // get any existing wiki entry + /* + * NotebookEntry nbEntry = null; if ( wikiUser != null ) { nbEntry = + * wikiService.getEntry(wikiUser.getEntryUID()); } if (nbEntry != null) { + * learningForm.setEntryText(nbEntry.getEntry()); } + */ + + // set readOnly flag. + if (mode.equals(ToolAccessMode.TEACHER) || (wiki.isLockOnFinished() && wikiUser.isFinishedActivity())) { + request.setAttribute("contentEditable", false); + } else { + request.setAttribute("contentEditable", true); + } + request.setAttribute("finishedActivity", wikiUser.isFinishedActivity()); + + return mapping.findForward("wiki"); + } + + protected ActionForward returnToWiki(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response, Long currentWikiPageId) throws Exception { + LearningForm learnForm = (LearningForm) form; + learnForm.setCurrentWikiPageId(currentWikiPageId); + return unspecified(mapping, learnForm, request, response); + } + + protected WikiUser getCurrentUser(Long toolSessionId) { + UserDTO user = (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER); + + // attempt to retrieve user using userId and toolSessionId + WikiUser wikiUser = wikiService.getUserByUserIdAndSessionId(new Long(user.getUserID().intValue()), + toolSessionId); + + if (wikiUser == null) { + WikiSession wikiSession = wikiService.getSessionBySessionId(toolSessionId); + wikiUser = wikiService.createWikiUser(user, wikiSession); + } + + return wikiUser; + } + + public ActionForward finishActivity(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + + Long toolSessionID = WebUtil.readLongParam(request, "toolSessionID"); + + WikiUser wikiUser = getCurrentUser(toolSessionID); + + if (wikiUser != null) { + + LearningForm learningForm = (LearningForm) form; + + // TODO fix idType to use real value not 999 + + if (wikiUser.getEntryUID() == null) { + wikiUser.setEntryUID(wikiService.createNotebookEntry(toolSessionID, + CoreNotebookConstants.NOTEBOOK_TOOL, WikiConstants.TOOL_SIGNATURE, wikiUser.getUserId() + .intValue(), learningForm.getEntryText())); + } else { + // update existing entry. + wikiService.updateEntry(wikiUser.getEntryUID(), learningForm.getEntryText()); + } + + wikiUser.setFinishedActivity(true); + wikiService.saveOrUpdateWikiUser(wikiUser); + } else { + log.error("finishActivity(): couldn't find WikiUser with id: " + wikiUser.getUserId() + + "and toolSessionID: " + toolSessionID); + } + + ToolSessionManager sessionMgrService = WikiServiceProxy.getWikiSessionManager(getServlet().getServletContext()); + + String nextActivityUrl; + try { + nextActivityUrl = sessionMgrService.leaveToolSession(toolSessionID, wikiUser.getUserId()); + response.sendRedirect(nextActivityUrl); + } catch (DataMissingException e) { + throw new WikiException(e); + } catch (ToolException e) { + throw new WikiException(e); + } catch (IOException e) { + throw new WikiException(e); + } + + return null; // TODO need to return proper page. + } +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/MonitoringAction.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/MonitoringAction.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/MonitoringAction.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,128 @@ +/**************************************************************** + * 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.wiki.web.actions; + +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.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.tool.wiki.dto.WikiDTO; +import org.lamsfoundation.lams.tool.wiki.dto.WikiUserDTO; +import org.lamsfoundation.lams.tool.wiki.model.Wiki; +import org.lamsfoundation.lams.tool.wiki.model.WikiUser; +import org.lamsfoundation.lams.tool.wiki.service.IWikiService; +import org.lamsfoundation.lams.tool.wiki.service.WikiServiceProxy; +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" + * @struts.action-forward name="wiki_display" + * path="tiles:/monitoring/wiki_display" + * + */ +public class MonitoringAction extends LamsDispatchAction implements IWikiPageAction { + + private static Logger log = Logger.getLogger(MonitoringAction.class); + + public IWikiService wikiService; + + 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); + + Wiki wiki = wikiService.getWikiByContentId(toolContentID); + + if (wiki == null) { + // TODO error page. + } + + WikiDTO wikiDT0 = new WikiDTO(wiki); + + Long currentTab = WebUtil.readLongParam(request, AttributeNames.PARAM_CURRENT_TAB, true); + wikiDT0.setCurrentTab(currentTab); + + request.setAttribute("wikiDTO", wikiDT0); + request.setAttribute("contentFolderID", contentFolderID); + return mapping.findForward("success"); + } + + public ActionForward showWiki(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + + setupService(); + + Long uid = new Long(WebUtil.readLongParam(request, "userUID")); + + WikiUser user = wikiService.getUserByUID(uid); + NotebookEntry entry = wikiService.getEntry(user.getEntryUID()); + + WikiUserDTO userDTO = new WikiUserDTO(user, entry); + + request.setAttribute("userDTO", userDTO); + + return mapping.findForward("wiki_display"); + } + + /** + * set up wikiService + */ + private void setupService() { + if (wikiService == null) { + wikiService = WikiServiceProxy.getWikiService(this.getServlet().getServletContext()); + } + } + + public ActionForward editPage(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + return null; + } + + public ActionForward addPage(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + return null; + } + + public ActionForward removePage(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) { + return null; + } +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/WikiPageAction.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/WikiPageAction.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/actions/WikiPageAction.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,350 @@ +/**************************************************************** + * 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.wiki.web.actions; + +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.wiki.dto.WikiPageContentDTO; +import org.lamsfoundation.lams.tool.wiki.dto.WikiPageDTO; +import org.lamsfoundation.lams.tool.wiki.model.Wiki; +import org.lamsfoundation.lams.tool.wiki.model.WikiPage; +import org.lamsfoundation.lams.tool.wiki.model.WikiPageContent; +import org.lamsfoundation.lams.tool.wiki.model.WikiSession; +import org.lamsfoundation.lams.tool.wiki.model.WikiUser; +import org.lamsfoundation.lams.tool.wiki.service.IWikiService; +import org.lamsfoundation.lams.tool.wiki.service.WikiServiceProxy; +import org.lamsfoundation.lams.tool.wiki.util.WikiConstants; +import org.lamsfoundation.lams.tool.wiki.web.forms.WikiPageForm; +import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.action.LamsDispatchAction; +import org.lamsfoundation.lams.web.util.AttributeNames; + +/** + * An abstract class used for wiki actions common to monitor, learner and author + * + * @author lfoxton + * + */ +public abstract class WikiPageAction extends LamsDispatchAction { + + private static Logger logger = Logger.getLogger(AuthoringAction.class); + + public IWikiService wikiService; + + /** + * Default method when no dispatch parameter is specified. + */ + protected abstract ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception; + + /** + * This action returns to the current wiki by updating the form accordingly + * + * @param mapping + * @param form + * @param request + * @param response + * @return + */ + protected abstract ActionForward returnToWiki(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response, Long currentWikiPageId) throws Exception; + + protected abstract WikiUser getCurrentUser(Long toolSessionId); + + /** + * Edit a page and make a new page content entry + * + * @param mapping + * @param form + * @param request + * @param response + * @return + */ + public ActionForward editPage(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { + Long currentPageUid = WebUtil.readLongParam(request, WikiConstants.ATTR_CURRENT_WIKI); + + // set up wikiService + if (wikiService == null) { + wikiService = WikiServiceProxy.getWikiService(this.getServlet().getServletContext()); + } + + // Set up the wiki form + WikiPageForm wikiForm = (WikiPageForm) form; + + // Set up the wiki user if this is a tool session (learner) + Long toolSessionID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID, true)); + WikiUser user = null; + if (toolSessionID != null) { + user = this.getCurrentUser(toolSessionID); + } + + // Updating the wikiPage, setting a null user which indicated this + // change was made in author + wikiService.updateWikiPage(wikiForm, currentPageUid, user); + + // Make sure the current page is set correctly then return to the wiki + return returnToWiki(mapping, wikiForm, request, response, currentPageUid); + } + + /** + * Revert to a previous page content in the page history + * + * @param mapping + * @param form + * @param request + * @param response + * @return + */ + public ActionForward revertPage(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { + Long revertPageContentVersion = new Long(WebUtil.readLongParam(request, + WikiConstants.ATTR_HISTORY_PAGE_CONTENT_ID)); + Long currentPageUid = WebUtil.readLongParam(request, WikiConstants.ATTR_CURRENT_WIKI); + + // set up wikiService + if (wikiService == null) { + wikiService = WikiServiceProxy.getWikiService(this.getServlet().getServletContext()); + } + + // Set up the wiki user if this is a tool session (learner) + Long toolSessionID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID, true)); + WikiUser user = null; + if (toolSessionID != null) { + user = this.getCurrentUser(toolSessionID); + } + + WikiPageContent content = wikiService.getWikiPageContent(revertPageContentVersion); + + // Set up the authoring form + WikiPageForm wikiForm = (WikiPageForm) form; + + // Set the wiki body in the authform + wikiForm.setWikiBody(content.getBody()); + + // Updating the wikiPage, setting a null user which indicated this + // change was made in author + wikiService.updateWikiPage(wikiForm, currentPageUid, user); + + return unspecified(mapping, wikiForm, request, response); + } + + /** + * Compare two page content history items and return the result + * + * @param mapping + * @param form + * @param request + * @param response + * @return + */ + public ActionForward comparePage(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { + Long revertPageContentVersion = new Long(WebUtil.readLongParam(request, + WikiConstants.ATTR_HISTORY_PAGE_CONTENT_ID)); + Long currentPageUid = WebUtil.readLongParam(request, WikiConstants.ATTR_CURRENT_WIKI); + + // set up wikiService + if (wikiService == null) { + wikiService = WikiServiceProxy.getWikiService(this.getServlet().getServletContext()); + } + + // Get the current wiki page content + WikiPage currentWikiPage = wikiService.getWikiPageByUid(currentPageUid); + WikiPageContent currentContent = currentWikiPage.getCurrentWikiContent(); + + // Get the old wiki content to compare + WikiPageContent compareContent = wikiService.getWikiPageContent(revertPageContentVersion); + + // String diff = Diff.diff(compareContent.getBody(), + // currentContent.getBody()); + String diff = wikiService.comparePages(compareContent.getBody(), currentContent.getBody()); + + request.setAttribute(WikiConstants.ATTR_COMPARE_VERSIONS, compareContent.getVersion().toString() + "-" + + currentContent.getVersion().toString()); + request.setAttribute(WikiConstants.ATTR_COMPARE_TITLE, currentWikiPage.getTitle()); + request.setAttribute(WikiConstants.ATTR_COMPARE_STRING, diff); + + return mapping.findForward("compareWiki"); + } + + /** + * View a page content from a wiki page's history + * + * @param mapping + * @param form + * @param request + * @param response + * @return + */ + public ActionForward viewPage(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { + Long revertPageContentVersion = new Long(WebUtil.readLongParam(request, + WikiConstants.ATTR_HISTORY_PAGE_CONTENT_ID)); + Long currentPageUid = WebUtil.readLongParam(request, WikiConstants.ATTR_CURRENT_WIKI); + + // set up wikiService + if (wikiService == null) { + wikiService = WikiServiceProxy.getWikiService(this.getServlet().getServletContext()); + } + + // Get the current wiki page content + WikiPage currentWikiPage = wikiService.getWikiPageByUid(currentPageUid); + + // Get the old wiki content + WikiPageContent oldContent = wikiService.getWikiPageContent(revertPageContentVersion); + + // Set up the dto, only need to set title and content, as this is a view + WikiPageDTO pageDTO = new WikiPageDTO(); + pageDTO.setTitle(currentWikiPage.getTitle()); + pageDTO.setCurrentWikiContentDTO(new WikiPageContentDTO(oldContent)); + + request.setAttribute(WikiConstants.ATTR_CURRENT_WIKI, pageDTO); + + return mapping.findForward("viewWiki"); + } + + /** + * Change the active page of the wiki form + * + * @param mapping + * @param form + * @param request + * @param response + * @return + */ + public ActionForward changePage(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { + // set up wikiService + if (wikiService == null) { + wikiService = WikiServiceProxy.getWikiService(this.getServlet().getServletContext()); + } + + Wiki wiki = null; + WikiSession session = null; + WikiPage wikiPage = null; + + String newPageName = WebUtil.readStrParam(request, WikiConstants.ATTR_NEW_PAGE_NAME); + + Long toolSessionID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID, true)); + + // get the wiki by either toolContentId or tool session + if (toolSessionID == null) { + Long toolContentID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID)); + wiki = wikiService.getWikiByContentId(toolContentID); + + // Get the page to change to + wikiPage = wikiService.getWikiPageByWikiAndTitle(wiki, newPageName); + } else { + session = wikiService.getSessionBySessionId(toolSessionID); + wiki = session.getWiki(); + + // Get the page to change to + wikiPage = wikiService.getWikiBySessionAndTitle(session, newPageName); + } + + // go through unspecified to display the author screen, using wrapper + // method to set the current page + return this.returnToWiki(mapping, form, request, response, wikiPage.getUid()); + } + + /** + * Add a new wiki page to this wiki instance + * + * @param mapping + * @param form + * @param request + * @param response + * @return + */ + public ActionForward addPage(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { + // set up wikiService + if (wikiService == null) { + wikiService = WikiServiceProxy.getWikiService(this.getServlet().getServletContext()); + } + + Wiki wiki = null; + WikiSession session = null; + WikiUser user = null; + + Long toolSessionID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_SESSION_ID, true)); + + // get the wiki by either toolContentId or tool session + if (toolSessionID == null) { + Long toolContentID = new Long(WebUtil.readLongParam(request, AttributeNames.PARAM_TOOL_CONTENT_ID)); + wiki = wikiService.getWikiByContentId(toolContentID); + } else { + session = wikiService.getSessionBySessionId(toolSessionID); + wiki = session.getWiki(); + user = getCurrentUser(toolSessionID); + } + + // Set up the authoring form + WikiPageForm wikiForm = (WikiPageForm) form; + + // inserting the wiki page, null user and session indicates that this + // page was saved in author + Long currentWikiPageUid = wikiService.insertWikiPage(wikiForm, wiki, user, session); + + // go to the new wiki page + return returnToWiki(mapping, wikiForm, request, response, currentWikiPageUid); + } + + /** + * Remove a wiki page from the wiki instance + * + * @param mapping + * @param form + * @param request + * @param response + * @return + */ + public ActionForward removePage(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws Exception { + // The page to be removed + Long currentPageUid = WebUtil.readLongParam(request, WikiConstants.ATTR_CURRENT_WIKI); + + // set up wikiService + if (wikiService == null) { + wikiService = WikiServiceProxy.getWikiService(this.getServlet().getServletContext()); + } + + WikiPage wikiPage = wikiService.getWikiPageByUid(currentPageUid); + + // Updating the wikiPage, setting a null user which indicated this + // change was made in author + wikiService.deleteWikiPage(wikiPage); + + // return to the main page, by setting the current page to null + return this.returnToWiki(mapping, form, request, response, null); + + } +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/forms/AuthoringForm.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/forms/AuthoringForm.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/forms/AuthoringForm.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,253 @@ +/**************************************************************** + * 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.wiki.web.forms; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.struts.action.ActionErrors; +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 WikiPageForm { + + private static final long serialVersionUID = 353256767734345767L; + + // Properties + + String offlineInstruction; + + String onlineInstruction; + + boolean lockOnFinished; + + boolean allowLearnerCreatePages; + + boolean allowLearnerInsertLinks; + + boolean allowLearnerAttachImages; + + boolean reflectOnActivity; + + String reflectInstructions; + + Integer minimumEdits; + + Integer maximumEdits; + + FormFile onlineFile; + + FormFile offlineFile; + + String currentTab; + + String dispatch; + + String sessionMapID; + + Long deleteFileUuid; + + Long toolContentID; + + String contentFolderID; + + String mode; + + 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 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 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 isAllowLearnerCreatePages() { + return allowLearnerCreatePages; + } + + public void setAllowLearnerCreatePages(boolean allowLearnerCreatePages) { + this.allowLearnerCreatePages = allowLearnerCreatePages; + } + + public boolean isAllowLearnerInsertLinks() { + return allowLearnerInsertLinks; + } + + public void setAllowLearnerInsertLinks(boolean allowLearnerInsertLinks) { + this.allowLearnerInsertLinks = allowLearnerInsertLinks; + } + + public boolean isAllowLearnerAttachImages() { + return allowLearnerAttachImages; + } + + public void setAllowLearnerAttachImages(boolean allowLearnerAttachImages) { + this.allowLearnerAttachImages = allowLearnerAttachImages; + } + + public boolean isReflectOnActivity() { + return reflectOnActivity; + } + + public void setReflectOnActivity(boolean reflectOnActivity) { + this.reflectOnActivity = reflectOnActivity; + } + + public String getReflectInstructions() { + return reflectInstructions; + } + + public void setReflectInstructions(String reflectInstructions) { + this.reflectInstructions = reflectInstructions; + } + + public Integer getMinimumEdits() { + return minimumEdits; + } + + public void setMinimumEdits(Integer minimumEdits) { + this.minimumEdits = minimumEdits; + } + + public Integer getMaximumEdits() { + return maximumEdits; + } + + public void setMaximumEdits(Integer maximumEdits) { + this.maximumEdits = maximumEdits; + } + + public Long getToolContentID() { + return toolContentID; + } + + public void setToolContentID(Long toolContentID) { + this.toolContentID = toolContentID; + } + + public String getContentFolderID() { + return contentFolderID; + } + + public void setContentFolderID(String contentFolderID) { + this.contentFolderID = contentFolderID; + } + + public String getMode() { + return mode; + } + + public void setMode(String mode) { + this.mode = mode; + } +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/forms/LearningForm.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/forms/LearningForm.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/forms/LearningForm.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,93 @@ +/**************************************************************** + * 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.wiki.web.forms; + +/** + * + * @author lfoxton + * @struts.form name="learningForm" + */ +public class LearningForm extends WikiPageForm { + + 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: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/forms/MonitoringForm.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/forms/MonitoringForm.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/forms/MonitoringForm.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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.wiki.web.forms; + +import org.apache.struts.action.ActionForm; + +/** + * @struts.form name="monitoringForm" + */ +public class MonitoringForm extends WikiPageForm { + + 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: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/forms/WikiPageForm.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/forms/WikiPageForm.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/forms/WikiPageForm.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,145 @@ +/**************************************************************** + * 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.wiki.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.lamsfoundation.lams.web.util.SessionMap; + +/** + * This is a parent class for all wiki forms, it contains all the neccessary + * information required to save a wiki page + * + * @author lfoxton + * + * + */ +public class WikiPageForm extends ActionForm { + + private static final long serialVersionUID = 234235265633376356L; + + private String title; + private String wikiBody; + private Boolean isEditable; + + // Extra params for adding pages + private String newPageTitle; + private String newPageWikiBody; + + private Long currentWikiPageId; + private String newPageName; + private Boolean newPageIsEditable; + + private Long historyPageContentId; + + public WikiPageForm() { + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getWikiBody() { + return wikiBody; + } + + public void setWikiBody(String wikiBody) { + this.wikiBody = wikiBody; + } + + public Boolean getIsEditable() { + return isEditable; + } + + public void setIsEditable(Boolean isEditable) { + this.isEditable = isEditable; + } + + public Long getCurrentWikiPageId() { + return currentWikiPageId; + } + + public void setCurrentWikiPageId(Long currentWikiPageId) { + this.currentWikiPageId = currentWikiPageId; + } + + public String getNewPageTitle() { + return newPageTitle; + } + + public void setNewPageTitle(String newPageTitle) { + this.newPageTitle = newPageTitle; + } + + public String getNewPageWikiBody() { + return newPageWikiBody; + } + + public void setNewPageWikiBody(String newPageWikiBody) { + this.newPageWikiBody = newPageWikiBody; + } + + public String getNewPageName() { + return newPageName; + } + + public void setNewPageName(String newPageName) { + this.newPageName = newPageName; + } + + public Long getHistoryPageContentId() { + return historyPageContentId; + } + + public void setHistoryPageContentId(Long historyPageContentId) { + this.historyPageContentId = historyPageContentId; + } + + public Boolean getNewPageIsEditable() { + return newPageIsEditable; + } + + public void setNewPageIsEditable(Boolean newPageIsEditable) { + this.newPageIsEditable = newPageIsEditable; + } + + @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; + } +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/servlets/ExportServlet.java =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/servlets/ExportServlet.java (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/web/servlets/ExportServlet.java (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,182 @@ +/**************************************************************** + * 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.wiki.web.servlets; + +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.notebook.model.NotebookEntry; +import org.lamsfoundation.lams.tool.ToolAccessMode; +import org.lamsfoundation.lams.tool.wiki.dto.WikiDTO; +import org.lamsfoundation.lams.tool.wiki.dto.NotebookEntryDTO; +import org.lamsfoundation.lams.tool.wiki.dto.WikiSessionDTO; +import org.lamsfoundation.lams.tool.wiki.dto.WikiUserDTO; +import org.lamsfoundation.lams.tool.wiki.model.Wiki; +import org.lamsfoundation.lams.tool.wiki.model.WikiSession; +import org.lamsfoundation.lams.tool.wiki.model.WikiUser; +import org.lamsfoundation.lams.tool.wiki.service.IWikiService; +import org.lamsfoundation.lams.tool.wiki.service.WikiServiceProxy; +import org.lamsfoundation.lams.tool.wiki.util.WikiException; +import org.lamsfoundation.lams.usermanagement.dto.UserDTO; +import org.lamsfoundation.lams.web.servlet.AbstractExportPortfolioServlet; +import org.lamsfoundation.lams.web.session.SessionManager; +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 = "wiki_main.html"; + + private IWikiService wikiService; + + protected String doExport(HttpServletRequest request, HttpServletResponse response, String directoryName, + Cookie[] cookies) { + + if (wikiService == null) { + wikiService = WikiServiceProxy.getWikiService(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); + } + } catch (WikiException e) { + logger.error("Cannot perform export for wiki tool."); + } + + String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + + request.getContextPath(); + writeResponseToFile(basePath + "/pages/export/exportPortfolio.jsp", directoryName, FILENAME, cookies); + + 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 (wikiService == null) { + wikiService = WikiServiceProxy.getWikiService(getServletContext()); + } + + Wiki content = null; + if (toolContentID != null) { + content = wikiService.getWikiByContentId(toolContentID); + } else { + WikiSession session = wikiService.getSessionBySessionId(toolSessionID); + if (session != null) + content = session.getWiki(); + } + 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 WikiException { + + logger.debug("doExportLearner: toolContentID:" + toolSessionID); + + // check if toolContentID available + if (toolSessionID == null) { + String error = "Tool Session ID is missing. Unable to continue"; + logger.error(error); + throw new WikiException(error); + } + + WikiSession wikiSession = wikiService.getSessionBySessionId(toolSessionID); + + Wiki wiki = wikiSession.getWiki(); + + UserDTO lamsUserDTO = (UserDTO) SessionManager.getSession().getAttribute(AttributeNames.USER); + + WikiUser wikiUser = wikiService.getUserByUserIdAndSessionId(new Long(lamsUserDTO.getUserID()), toolSessionID); + + NotebookEntry wikiEntry = wikiService.getEntry(wikiUser.getEntryUID()); + + // construct dto's + WikiDTO wikiDTO = new WikiDTO(); + wikiDTO.setTitle(wiki.getTitle()); + wikiDTO.setInstructions(wiki.getInstructions()); + + WikiSessionDTO sessionDTO = new WikiSessionDTO(); + sessionDTO.setSessionName(wikiSession.getSessionName()); + sessionDTO.setSessionID(wikiSession.getSessionId()); + + // If the user hasn't put in their entry yet, wikiEntry will be null; + WikiUserDTO userDTO = wikiEntry != null ? new WikiUserDTO(wikiUser, wikiEntry) : new WikiUserDTO(wikiUser); + + sessionDTO.getUserDTOs().add(userDTO); + wikiDTO.getSessionDTOs().add(sessionDTO); + + request.getSession().setAttribute("wikiDTO", wikiDTO); + } + + private void doTeacherExport(HttpServletRequest request, HttpServletResponse response, String directoryName, + Cookie[] cookies) throws WikiException { + + 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 WikiException(error); + } + + Wiki wiki = wikiService.getWikiByContentId(toolContentID); + + WikiDTO wikiDTO = new WikiDTO(wiki); + + // add the wikiEntry for each user in each session + + for (WikiSessionDTO session : wikiDTO.getSessionDTOs()) { + for (WikiUserDTO user : session.getUserDTOs()) { + NotebookEntry entry = wikiService.getEntry(user.getEntryUID()); + if (entry != null) { + NotebookEntryDTO entryDTO = new NotebookEntryDTO(entry); + user.setEntryDTO(entryDTO); + } + } + } + + request.getSession().setAttribute("wikiDTO", wikiDTO); + } + +} Index: lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/wikiApplicationContext.xml =================================================================== diff -u --- lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/wikiApplicationContext.xml (revision 0) +++ lams_tool_wiki/src/java/org/lamsfoundation/lams/tool/wiki/wikiApplicationContext.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + org/lamsfoundation/lams/tool/wiki/model/Wiki.hbm.xml + org/lamsfoundation/lams/tool/wiki/model/WikiPage.hbm.xml + org/lamsfoundation/lams/tool/wiki/model/WikiPageContent.hbm.xml + org/lamsfoundation/lams/tool/wiki/model/WikiSession.hbm.xml + org/lamsfoundation/lams/tool/wiki/model/WikiUser.hbm.xml + org/lamsfoundation/lams/tool/wiki/model/WikiAttachment.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: lams_tool_wiki/web/403.jsp =================================================================== diff -u --- lams_tool_wiki/web/403.jsp (revision 0) +++ lams_tool_wiki/web/403.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/404.jsp =================================================================== diff -u --- lams_tool_wiki/web/404.jsp (revision 0) +++ lams_tool_wiki/web/404.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/META-INF/MANIFEST.MF =================================================================== diff -u --- lams_tool_wiki/web/META-INF/MANIFEST.MF (revision 0) +++ lams_tool_wiki/web/META-INF/MANIFEST.MF (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,5 @@ +Implementation-Title: LAMS - Wiki Tool +Implementation-Version: 2.1 +Implementation-Vendor: LAMS Foundation (http://lamsfoundation.org) +Class-Path: + Index: lams_tool_wiki/web/WEB-INF/fckeditor/tlds/FCKeditor.tld =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/fckeditor/tlds/FCKeditor.tld (revision 0) +++ lams_tool_wiki/web/WEB-INF/fckeditor/tlds/FCKeditor.tld (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/jstl/tlds/c.tld =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/jstl/tlds/c.tld (revision 0) +++ lams_tool_wiki/web/WEB-INF/jstl/tlds/c.tld (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/jstl/tlds/fmt.tld =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/jstl/tlds/fmt.tld (revision 0) +++ lams_tool_wiki/web/WEB-INF/jstl/tlds/fmt.tld (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/jstl/tlds/fn.tld =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/jstl/tlds/fn.tld (revision 0) +++ lams_tool_wiki/web/WEB-INF/jstl/tlds/fn.tld (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/jstl/tlds/permittedTaglibs.tld =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/jstl/tlds/permittedTaglibs.tld (revision 0) +++ lams_tool_wiki/web/WEB-INF/jstl/tlds/permittedTaglibs.tld (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/jstl/tlds/scriptfree.tld =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/jstl/tlds/scriptfree.tld (revision 0) +++ lams_tool_wiki/web/WEB-INF/jstl/tlds/scriptfree.tld (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/jstl/tlds/x.tld =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/jstl/tlds/x.tld (revision 0) +++ lams_tool_wiki/web/WEB-INF/jstl/tlds/x.tld (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/lams.tld =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/lams.tld (revision 0) +++ lams_tool_wiki/web/WEB-INF/lams.tld (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,513 @@ + + + + + 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 + + + index + 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: lams_tool_wiki/web/WEB-INF/struts/struts-config.xml =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/struts/struts-config.xml (revision 0) +++ lams_tool_wiki/web/WEB-INF/struts/struts-config.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_tool_wiki/web/WEB-INF/struts/tiles-defs.xml =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/struts/tiles-defs.xml (revision 0) +++ lams_tool_wiki/web/WEB-INF/struts/tiles-defs.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_tool_wiki/web/WEB-INF/struts/tlds/struts-bean.tld =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/struts/tlds/struts-bean.tld (revision 0) +++ lams_tool_wiki/web/WEB-INF/struts/tlds/struts-bean.tld (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/struts/tlds/struts-html.tld =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/struts/tlds/struts-html.tld (revision 0) +++ lams_tool_wiki/web/WEB-INF/struts/tlds/struts-html.tld (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/struts/tlds/struts-logic.tld =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/struts/tlds/struts-logic.tld (revision 0) +++ lams_tool_wiki/web/WEB-INF/struts/tlds/struts-logic.tld (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/struts/tlds/struts-nested.tld =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/struts/tlds/struts-nested.tld (revision 0) +++ lams_tool_wiki/web/WEB-INF/struts/tlds/struts-nested.tld (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/struts/tlds/struts-tiles.tld =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/struts/tlds/struts-tiles.tld (revision 0) +++ lams_tool_wiki/web/WEB-INF/struts/tlds/struts-tiles.tld (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/struts/validator-rules.xml =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/struts/validator-rules.xml (revision 0) +++ lams_tool_wiki/web/WEB-INF/struts/validator-rules.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,313 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lams_tool_wiki/web/WEB-INF/tags/AuthoringButton.tag =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/tags/AuthoringButton.tag (revision 0) +++ lams_tool_wiki/web/WEB-INF/tags/AuthoringButton.tag (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,93 @@ +<% +/**************************************************************** + * 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: lams_tool_wiki/web/WEB-INF/tags/Date.tag =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/tags/Date.tag (revision 0) +++ lams_tool_wiki/web/WEB-INF/tags/Date.tag (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/tags/DefineLater.tag =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/tags/DefineLater.tag (revision 0) +++ lams_tool_wiki/web/WEB-INF/tags/DefineLater.tag (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/tags/ExportPortOutput.tag =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/tags/ExportPortOutput.tag (revision 0) +++ lams_tool_wiki/web/WEB-INF/tags/ExportPortOutput.tag (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/tags/FCKEditor.tag =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/tags/FCKEditor.tag (revision 0) +++ lams_tool_wiki/web/WEB-INF/tags/FCKEditor.tag (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,59 @@ +<%@ 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="height" required="false" rtexprvalue="true"%> +<%@ attribute name="contentFolderID" required="false" rtexprvalue="true"%> + + + + + + + + + +/fckeditor/ + + + + + ${value} + + + + + Index: lams_tool_wiki/web/WEB-INF/tags/Head.tag =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/tags/Head.tag (revision 0) +++ lams_tool_wiki/web/WEB-INF/tags/Head.tag (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/tags/ImgButtonWrapper.tag =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/tags/ImgButtonWrapper.tag (revision 0) +++ lams_tool_wiki/web/WEB-INF/tags/ImgButtonWrapper.tag (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/tags/LearnerFlashEnabled.tag =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/tags/LearnerFlashEnabled.tag (revision 0) +++ lams_tool_wiki/web/WEB-INF/tags/LearnerFlashEnabled.tag (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/tags/Passon.tag =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/tags/Passon.tag (revision 0) +++ lams_tool_wiki/web/WEB-INF/tags/Passon.tag (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/tags/ProgressOutput.tag =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/tags/ProgressOutput.tag (revision 0) +++ lams_tool_wiki/web/WEB-INF/tags/ProgressOutput.tag (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/tags/Tab.tag =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/tags/Tab.tag (revision 0) +++ lams_tool_wiki/web/WEB-INF/tags/Tab.tag (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/tags/TabBody.tag =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/tags/TabBody.tag (revision 0) +++ lams_tool_wiki/web/WEB-INF/tags/TabBody.tag (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/tags/TabName.tag =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/tags/TabName.tag (revision 0) +++ lams_tool_wiki/web/WEB-INF/tags/TabName.tag (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/tags/Tabs.tag =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/tags/Tabs.tag (revision 0) +++ lams_tool_wiki/web/WEB-INF/tags/Tabs.tag (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/tags/headItems.tag =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/tags/headItems.tag (revision 0) +++ lams_tool_wiki/web/WEB-INF/tags/headItems.tag (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/WEB-INF/web.xml =================================================================== diff -u --- lams_tool_wiki/web/WEB-INF/web.xml (revision 0) +++ lams_tool_wiki/web/WEB-INF/web.xml (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,339 @@ + + + + + + + javax.servlet.jsp.jstl.fmt.localizationContext + org.lamsfoundation.lams.tool.wiki.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/learning/learningApplicationContext.xml + classpath:/org/lamsfoundation/lams/contentrepository/applicationContext.xml + classpath:/org/lamsfoundation/lams/tool/wiki/wikiApplicationContext.xml + classpath:/org/lamsfoundation/lams/tool/wiki/dbupdates/autopatchContext.xml + + + + + SystemSessionFilter + + org.lamsfoundation.lams.web.session.SystemSessionFilter + + + + hibernateFilter + + org.lamsfoundation.lams.util.CustomizedOpenSessionInViewFilter + + + sessionFactoryBeanName + wikiSessionFactory + + + + LocaleFilter + + org.lamsfoundation.lams.web.filter.LocaleFilter + + + + + SystemSessionFilter + /* + + + hibernateFilter + /* + + + LocaleFilter + /* + + + + + org.springframework.web.context.ContextLoaderListener + + + + + org.lamsfoundation.lams.web.session.SetMaxTimeoutListener + + + + + 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 + wikiToolContentHandler + + 3 + + + + exportPortfolio + org.lamsfoundation.lams.tool.wiki.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: lams_tool_wiki/web/common/empty.jsp =================================================================== diff -u --- lams_tool_wiki/web/common/empty.jsp (revision 0) +++ lams_tool_wiki/web/common/empty.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1 @@ \ No newline at end of file Index: lams_tool_wiki/web/common/footer.jsp =================================================================== diff -u --- lams_tool_wiki/web/common/footer.jsp (revision 0) +++ lams_tool_wiki/web/common/footer.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1 @@ +

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

    Index: lams_tool_wiki/web/common/header.jsp =================================================================== diff -u --- lams_tool_wiki/web/common/header.jsp (revision 0) +++ lams_tool_wiki/web/common/header.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,23 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + + + + <fmt:message key="activity.title" /> + + + + + + + + + + + Index: lams_tool_wiki/web/common/learnerheader.jsp =================================================================== diff -u --- lams_tool_wiki/web/common/learnerheader.jsp (revision 0) +++ lams_tool_wiki/web/common/learnerheader.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,24 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + + + + <fmt:message key="activity.title" /> + + + + + + + + + + + + Index: lams_tool_wiki/web/common/message.jsp =================================================================== diff -u --- lams_tool_wiki/web/common/message.jsp (revision 0) +++ lams_tool_wiki/web/common/message.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,5 @@ +<%@ include file="/common/taglibs.jsp"%> + +

    + ${requestScope.message}; +

    Index: lams_tool_wiki/web/common/taglibs.jsp =================================================================== diff -u --- lams_tool_wiki/web/common/taglibs.jsp (revision 0) +++ lams_tool_wiki/web/common/taglibs.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/error.jsp =================================================================== diff -u --- lams_tool_wiki/web/error.jsp (revision 0) +++ lams_tool_wiki/web/error.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/images/edit.gif =================================================================== diff -u Binary files differ Index: lams_tool_wiki/web/images/icon_wiki.swf =================================================================== diff -u Binary files differ Index: lams_tool_wiki/web/images/success.gif =================================================================== diff -u Binary files differ Index: lams_tool_wiki/web/includes/css/wiki_style.css =================================================================== diff -u --- lams_tool_wiki/web/includes/css/wiki_style.css (revision 0) +++ lams_tool_wiki/web/includes/css/wiki_style.css (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,36 @@ +h1 { + margin-left:0px; +} + +h2 { + margin-left:0px; +} + + +h3 { + margin-left:0px; +} + +.textareaPanel { + width: 625px; + height: 600px; + margin-left: 20px; + margin-top: 12px; +} + +.smallTextareaPanel { + width: 625px; + height: 500px; + margin-left: 20px; + margin-top: 12px; +} + +#wyswygEditorScreen { + position: absolute; + width: 625px; + height: 600px; + padding: 0px; + margin: 0px; +} + + \ No newline at end of file Index: lams_tool_wiki/web/includes/javascript/authoring.js =================================================================== diff -u --- lams_tool_wiki/web/includes/javascript/authoring.js (revision 0) +++ lams_tool_wiki/web/includes/javascript/authoring.js (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,24 @@ + +function init() { + // open the current tab + var tag = document.getElementById("currentTab"); + if (tag.value != "") { + selectTab(tag.value); + } else { + selectTab(1); + } +} +function doSelectTab(tabId) { + var tag = document.getElementById("currentTab"); + tag.value = tabId; + selectTab(tabId); +} +function doSubmit(method) { + document.authoringForm.dispatch.value = method; + document.authoringForm.submit(); +} +function deleteAttachment(dispatch, uuid) { + document.authoringForm.dispatch.value = dispatch; + document.authoringForm.deleteFileUuid.value = uuid; + document.authoringForm.submit(); +} Index: lams_tool_wiki/web/includes/javascript/monitoring.js =================================================================== diff -u --- lams_tool_wiki/web/includes/javascript/monitoring.js (revision 0) +++ lams_tool_wiki/web/includes/javascript/monitoring.js (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -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: lams_tool_wiki/web/includes/javascript/wikiCommon.js =================================================================== diff -u --- lams_tool_wiki/web/includes/javascript/wikiCommon.js (revision 0) +++ lams_tool_wiki/web/includes/javascript/wikiCommon.js (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,67 @@ +function changeDiv(divId) +{ + document.getElementById("edit").style.display = "none"; + document.getElementById("view").style.display = "none"; + document.getElementById("add").style.display = "none"; + document.getElementById("history").style.display = "none"; + document.getElementById(divId).style.display = "block"; + + if (divId=="view") + { + //document.getElementById("viewFrame").style.display = "block"; + document.getElementById("finishButtonDiv").style.display = "block"; + } + else + { + //document.getElementById(divId).style.display = "block"; + document.getElementById("finishButtonDiv").style.display = "none"; + //document.getElementById("viewFrame").style.display = "none"; + } + +} + +function cancelAdd(){ + document.getElementById("newPageTitle").value=""; + var fckEditor = FCKeditorAPI.GetInstance("newPageWikiBody"); + fckEditor.EditorDocument.body.innerHTML = ""; +} + +function changeWikiPage(pageName){ + document.getElementById("newPageName").value = pageName; + submitWiki("changePage"); +} + +function doRevert(id) +{ + document.getElementById("historyPageContentId").value=id; + submitWiki("revertPage"); +} + +function trim(str) +{ + return str.replace(/^\s+|\s+$/g, ''); +} + +function doRemove(confirmMessage) +{ + var remove = confirm(confirmMessage); + if (remove) + { + submitWiki('removePage'); + } +} + +var compareWindow = null; +function doCompareOrView(webAppUrl, historyId, currentPageId, dispatch) +{ + var url = webAppUrl + "/authoring.do?"; + url += "&historyPageContentId=" + historyId; + url += "¤tWikiPage=" + currentPageId; + url += "&dispatch=" + dispatch; + + if(compareWindow && compareWindow.open && !compareWindow.closed){ + compareWindow.close(); + } + compareWindow = window.open(url,'instructions','resizable,width=796,height=570,scrollbars'); + compareWindow.window.focus(); +} Index: lams_tool_wiki/web/includes/jsp/wikiCommon.jsp =================================================================== diff -u --- lams_tool_wiki/web/includes/jsp/wikiCommon.jsp (revision 0) +++ lams_tool_wiki/web/includes/jsp/wikiCommon.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,81 @@ +<%@ include file="/common/taglibs.jsp"%> + + \ No newline at end of file Index: lams_tool_wiki/web/layouts/defaultLayout.jsp =================================================================== diff -u --- lams_tool_wiki/web/layouts/defaultLayout.jsp (revision 0) +++ lams_tool_wiki/web/layouts/defaultLayout.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,22 @@ + + +<%@ include file="/common/taglibs.jsp"%> + + + + +
    + + +

    + +

    +
    +
    + +
    + +
    + +
    Index: lams_tool_wiki/web/layouts/learningLayout.jsp =================================================================== diff -u --- lams_tool_wiki/web/layouts/learningLayout.jsp (revision 0) +++ lams_tool_wiki/web/layouts/learningLayout.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,13 @@ + + +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + Index: lams_tool_wiki/web/layouts/tabLayout.jsp =================================================================== diff -u --- lams_tool_wiki/web/layouts/tabLayout.jsp (revision 0) +++ lams_tool_wiki/web/layouts/tabLayout.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,18 @@ + + +<%@ include file="/common/taglibs.jsp"%> + + + + +
    + + +

    + +

    + +
    + +
    Index: lams_tool_wiki/web/pages/authoring/advanced.jsp =================================================================== diff -u --- lams_tool_wiki/web/pages/authoring/advanced.jsp (revision 0) +++ lams_tool_wiki/web/pages/authoring/advanced.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,107 @@ +<%@ include file="/common/taglibs.jsp"%> + + + +

    +

    + +

    + +

    + +

    + +

    +

    + + +

    + +

    + +

    + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + + + + + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 +

    + + + + Index: lams_tool_wiki/web/pages/authoring/authoring.jsp =================================================================== diff -u --- lams_tool_wiki/web/pages/authoring/authoring.jsp (revision 0) +++ lams_tool_wiki/web/pages/authoring/authoring.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,78 @@ +<%@ include file="/common/taglibs.jsp"%> + +<%@ page import="org.lamsfoundation.lams.tool.wiki.util.WikiConstants"%> + + + + + + + + + + + + + + +
    + + + + + + + + + + + +
    + + + + +

    + +
    +
    +

    +
    +
    + + + + + + <%-- Page tabs --%> + + + + + + +
    + +
    +
    +
    + + Index: lams_tool_wiki/web/pages/authoring/basic.jsp =================================================================== diff -u --- lams_tool_wiki/web/pages/authoring/basic.jsp (revision 0) +++ lams_tool_wiki/web/pages/authoring/basic.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,273 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + + +
    +
    +
    +
    + +
    +

    + ${currentWikiPage.title} +

    +
    + + + + + + + + + ${currentWikiPage.currentWikiContentDTO.editorDTO.firstName} ${currentWikiPage.currentWikiContentDTO.editorDTO.lastName} + + + + + + +
    +
    +
    + ${currentWikiPage.currentWikiContentDTO.body} +
    +
    + + + + + + + + +
    +
    +
    + +
    + +
    + + + ${wikiPage.title} + + + +
    +
    + + + Index: lams_tool_wiki/web/pages/authoring/headItems.jsp =================================================================== diff -u --- lams_tool_wiki/web/pages/authoring/headItems.jsp (revision 0) +++ lams_tool_wiki/web/pages/authoring/headItems.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,8 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + + + Index: lams_tool_wiki/web/pages/authoring/instructions.jsp =================================================================== diff -u --- lams_tool_wiki/web/pages/authoring/instructions.jsp (revision 0) +++ lams_tool_wiki/web/pages/authoring/instructions.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,208 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + + <%-- Online Instructions --%> + + + + + <%-- Online Attachments --%> + + + + + + + <%-- Online Attachments Upload --%> + + + + + + + + + <%-- Offline Instructions --%> + + + + + + + <%-- Offline Attachments --%> + + + + + + + <%--Offline Attachments Upload --%> + + + + +
    +
    + +
    + +
    +
    +
      + + <%-- Online Saved Files --%> + +
    • + + + + + +   + + + + + +   + + + + +
    • +
      + + <%-- Online Unsaved Files --%> + +
    • + + * + + + + +   + + + + + +   + + + + +
    • +
      + +
    +
    +
    +
    + +
    + + + + + + + +
    +
    +
    +
    + +
    + +
    +
    +
      + + <%-- Offline Saved Attachments --%> + +
    • + + + + + +   + + + + + +   + + + + +
    • +
      + + <%-- Offline Unsaved Attachments --%> + +
    • + + * + + + + +   + + + + + +   + + + + +
    • +
      + +
    +
    +
    +
    + +
    + + + + + + + +
    + Index: lams_tool_wiki/web/pages/authoring/wikiPage.html =================================================================== diff -u --- lams_tool_wiki/web/pages/authoring/wikiPage.html (revision 0) +++ lams_tool_wiki/web/pages/authoring/wikiPage.html (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,7 @@ + + +
    + Hello! +
    + + \ No newline at end of file Index: lams_tool_wiki/web/pages/export/exportPortfolio.jsp =================================================================== diff -u --- lams_tool_wiki/web/pages/export/exportPortfolio.jsp (revision 0) +++ lams_tool_wiki/web/pages/export/exportPortfolio.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,92 @@ + + +<%@ include file="/common/taglibs.jsp"%> + + + + <c:out value="${wikiDTO.title}" escapeXml="false" /> + + + + + + +
    + +

    + +

    + +

    + +

    + + +
    + +
    +
    + + +
    +

    + ${session.sessionName} +

    +

    +   +

    + + + + + + + + + + + + + + + + + + + + +
    + ${user.firstName} ${user.lastName } +
    + + + +
    + + + +
    + + + +
    +
    +
    +
    +
    + + + + + + + + Index: lams_tool_wiki/web/pages/learning/defineLater.jsp =================================================================== diff -u --- lams_tool_wiki/web/pages/learning/defineLater.jsp (revision 0) +++ lams_tool_wiki/web/pages/learning/defineLater.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,11 @@ +<%@ include file="/common/taglibs.jsp"%> + +
    +

    + +

    + +
    + + + Index: lams_tool_wiki/web/pages/learning/headItems.jsp =================================================================== diff -u --- lams_tool_wiki/web/pages/learning/headItems.jsp (revision 0) +++ lams_tool_wiki/web/pages/learning/headItems.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1 @@ \ No newline at end of file Index: lams_tool_wiki/web/pages/learning/runOffline.jsp =================================================================== diff -u --- lams_tool_wiki/web/pages/learning/runOffline.jsp (revision 0) +++ lams_tool_wiki/web/pages/learning/runOffline.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,31 @@ +<%@ include file="/common/taglibs.jsp"%> + + + +
    +

    + ${wikiDTO.title} +

    + +

    + +

    + + + + + + +
    + + button.finish + +
    +
    +
    +
    + Index: lams_tool_wiki/web/pages/learning/wiki.jsp =================================================================== diff -u --- lams_tool_wiki/web/pages/learning/wiki.jsp (revision 0) +++ lams_tool_wiki/web/pages/learning/wiki.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,372 @@ +<%@ include file="/common/taglibs.jsp"%> + + + +
    + +
    + + + + + + + + +
    +
    + +   + + + + + + + + + + + + + + +
    +
    +
    +
    + +
    +

    + ${currentWikiPage.title} +

    + + + + + + + + + ${currentWikiPage.currentWikiContentDTO.editorDTO.firstName} ${currentWikiPage.currentWikiContentDTO.editorDTO.lastName} + + + + + + +
    +
    +
    + ${currentWikiPage.currentWikiContentDTO.body} +
    +
    + + + + + + + + +
    +
    +
    + + +
    + +
    + + + ${wikiPage.title} + + + +
    +
    + + + + +
    + +
    +
    +
    + + +
    +
    + + Index: lams_tool_wiki/web/pages/monitoring/editActivity.jsp =================================================================== diff -u --- lams_tool_wiki/web/pages/monitoring/editActivity.jsp (revision 0) +++ lams_tool_wiki/web/pages/monitoring/editActivity.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,43 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + +

    + +

    +
    + + + + + + + + + + + + +
    + + + +
    + + + +
    + +

    + + + + + + + + +

    + + Index: lams_tool_wiki/web/pages/monitoring/headItems.jsp =================================================================== diff -u --- lams_tool_wiki/web/pages/monitoring/headItems.jsp (revision 0) +++ lams_tool_wiki/web/pages/monitoring/headItems.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,9 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + + Index: lams_tool_wiki/web/pages/monitoring/instructions.jsp =================================================================== diff -u --- lams_tool_wiki/web/pages/monitoring/instructions.jsp (revision 0) +++ lams_tool_wiki/web/pages/monitoring/instructions.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,95 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    + +
    +
    + +
    + + + + + +   + + + + + +
    +
    +
    +
    + +
    +
    + +
    +
    + +
    + + + + + +   + + + + + +
    Index: lams_tool_wiki/web/pages/monitoring/monitoring.jsp =================================================================== diff -u --- lams_tool_wiki/web/pages/monitoring/monitoring.jsp (revision 0) +++ lams_tool_wiki/web/pages/monitoring/monitoring.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,25 @@ +<%@ include file="/common/taglibs.jsp"%> +<%@ page import="org.lamsfoundation.lams.tool.wiki.util.WikiConstants"%> + + + +
    + + + + + + +
    + + Index: lams_tool_wiki/web/pages/monitoring/statistics.jsp =================================================================== diff -u --- lams_tool_wiki/web/pages/monitoring/statistics.jsp (revision 0) +++ lams_tool_wiki/web/pages/monitoring/statistics.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,34 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + +
    +

    + ${session.sessionName} +

    +
    + + + + + + + + + + +
    + heading.totalLearnersInGroup + + ${session.numberOfLearners} +
    + heading.totalFinishedLearnersInGroup + + ${session.numberOfFinishedLearners} +
    +
    Index: lams_tool_wiki/web/pages/monitoring/summary.jsp =================================================================== diff -u --- lams_tool_wiki/web/pages/monitoring/summary.jsp (revision 0) +++ lams_tool_wiki/web/pages/monitoring/summary.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,122 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + +

    + + + + + +

    +
    + + + + + + + + + +
    +

    + ${session.sessionName} +

    +
    + + + + + + +
    + + + ${session.numberOfLearners} +
    + + + + + + + + + + + + + + + +
    + + + +
    + ${user.firstName} ${user.lastName} + + + + + + + + + + + + +
    +
    Index: lams_tool_wiki/web/pages/monitoring/wikiDisplay.jsp =================================================================== diff -u --- lams_tool_wiki/web/pages/monitoring/wikiDisplay.jsp (revision 0) +++ lams_tool_wiki/web/pages/monitoring/wikiDisplay.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,37 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + + + + + + + + + + + + + + +
    +

    + ${userDTO.firstName} ${userDTO.lastName } +

    +
    + + + + +
    + + + +
    + + + +
    Index: lams_tool_wiki/web/pages/wiki/compare.jsp =================================================================== diff -u --- lams_tool_wiki/web/pages/wiki/compare.jsp (revision 0) +++ lams_tool_wiki/web/pages/wiki/compare.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,48 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + <fmt:message key="label.wiki.history.actions.view" /> + + + + + + + +
    + + + +
    +

    + ${compareTitle} +

    + +

    + ${compareVersions} +

    + +      +      +
    +      +      +

    + +
    + ${compareString} +
    + +
    +

    + +

    +
    + + +
    +
    \ No newline at end of file Index: lams_tool_wiki/web/pages/wiki/viewWiki.jsp =================================================================== diff -u --- lams_tool_wiki/web/pages/wiki/viewWiki.jsp (revision 0) +++ lams_tool_wiki/web/pages/wiki/viewWiki.jsp (revision 1082bdcc357c105126a5641cecc68acfa645b66b) @@ -0,0 +1,53 @@ +<%@ include file="/common/taglibs.jsp"%> + + + + + + <fmt:message key="label.wiki.history.actions.view" /> + + + + + + + +
    + + + +
    +

    + ${currentWikiPage.title} +

    + +

    + : ${currentWikiPage.currentWikiContentDTO.version}
    + :
    + : + + + ${currentWikiPage.currentWikiContentDTO.editorDTO.firstName} ${currentWikiPage.currentWikiContentDTO.editorDTO.firstName} + + + + + +

    + +
    +
    + ${currentWikiPage.currentWikiContentDTO.body} +
    + +

    + +

    +
    + + +
    + +
    \ No newline at end of file