"
+ + 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" %>
+
+
+
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