Index: lams_central/web/fckeditor/editor/fckdialog.html
===================================================================
diff -u -r5f4a3fa1a4c16c3ff1b31fc7595ce720ab9b97bc -red376d7ba9e60ab607761599bd56dcf7eb590c47
--- lams_central/web/fckeditor/editor/fckdialog.html (.../fckdialog.html) (revision 5f4a3fa1a4c16c3ff1b31fc7595ce720ab9b97bc)
+++ lams_central/web/fckeditor/editor/fckdialog.html (.../fckdialog.html) (revision ed376d7ba9e60ab607761599bd56dcf7eb590c47)
@@ -1,340 +1,341 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- |
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ |
+
+
+
+
+
+
+
Fisheye: Tag ed376d7ba9e60ab607761599bd56dcf7eb590c47 refers to a dead (removed) revision in file `lams_central/web/fckeditor/editor/plugins/wikilink/fck_wikilink.html'.
Fisheye: No comparison available. Pass `N' to diff?
Index: lams_central/web/fckeditor/editor/plugins/wikilink/fck_wikilink.jsp
===================================================================
diff -u
--- lams_central/web/fckeditor/editor/plugins/wikilink/fck_wikilink.jsp (revision 0)
+++ lams_central/web/fckeditor/editor/plugins/wikilink/fck_wikilink.jsp (revision ed376d7ba9e60ab607761599bd56dcf7eb590c47)
@@ -0,0 +1,197 @@
+
+
+<%@ page language="java" pageEncoding="UTF-8" contentType="text/html;charset=utf-8" %>
+<%@ taglib uri="tags-lams" prefix="lams" %>
+<%@ taglib uri="tags-fmt" prefix="fmt" %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: lams_central/web/fckeditor/editor/plugins/wikilink/fckplugin.js
===================================================================
diff -u -r16ee266fef50cbbb388c55bd912fba51097c9f23 -red376d7ba9e60ab607761599bd56dcf7eb590c47
--- lams_central/web/fckeditor/editor/plugins/wikilink/fckplugin.js (.../fckplugin.js) (revision 16ee266fef50cbbb388c55bd912fba51097c9f23)
+++ lams_central/web/fckeditor/editor/plugins/wikilink/fckplugin.js (.../fckplugin.js) (revision ed376d7ba9e60ab607761599bd56dcf7eb590c47)
@@ -1,5 +1,5 @@
// Register the related command.
-FCKCommands.RegisterCommand( 'WikiLink', new FCKDialogCommand( 'WikiLink', FCKLang.WikiLinkDlgTitle, FCKPlugins.Items['wikilink'].Path + 'fck_wikilink.html', 300, 220 ) ) ;
+FCKCommands.RegisterCommand( 'WikiLink', new FCKDialogCommand( 'WikiLink', FCKLang.WikiLinkDlgTitle, FCKPlugins.Items['wikilink'].Path + 'fck_wikilink.jsp', 300, 220 ) ) ;
// Create the "WikiLink" toolbar button.
var oWikiLinkItem = new FCKToolbarButton( 'WikiLink', FCKLang.WikiLinkBtn ) ;
@@ -16,6 +16,3 @@
}
-
-
-
Index: lams_tool_wiki_orig/conf/xdoclet/servlet-mappings.xml
===================================================================
diff -u -re8343e8d676900d059435abdef072abc89d3b26b -red376d7ba9e60ab607761599bd56dcf7eb590c47
--- lams_tool_wiki_orig/conf/xdoclet/servlet-mappings.xml (.../servlet-mappings.xml) (revision e8343e8d676900d059435abdef072abc89d3b26b)
+++ lams_tool_wiki_orig/conf/xdoclet/servlet-mappings.xml (.../servlet-mappings.xml) (revision ed376d7ba9e60ab607761599bd56dcf7eb590c47)
@@ -18,4 +18,9 @@
exportPortfolio
/exportPortfolio
+
+
+ WikiLinkHandler
+ /WikiLinkHandler
+
Index: lams_tool_wiki_orig/conf/xdoclet/servlets.xml
===================================================================
diff -u -r51ab92ac37624b5c280cbd5f3ae8e3972b8540ff -red376d7ba9e60ab607761599bd56dcf7eb590c47
--- lams_tool_wiki_orig/conf/xdoclet/servlets.xml (.../servlets.xml) (revision 51ab92ac37624b5c280cbd5f3ae8e3972b8540ff)
+++ lams_tool_wiki_orig/conf/xdoclet/servlets.xml (.../servlets.xml) (revision ed376d7ba9e60ab607761599bd56dcf7eb590c47)
@@ -51,3 +51,11 @@
3
+
+
+ WikiLinkHandler
+ WikiLinkHandler Servlet For FCKEditor
+
+ org.lamsfoundation.lams.tool.wiki.web.WikiLinkHandlerServlet
+
+
Index: lams_tool_wiki_orig/src/java/org/lamsfoundation/lams/tool/wiki/util/WikiConstants.java
===================================================================
diff -u -r56a28a3bc9ee71dbde383b407cc475f68d5d6423 -red376d7ba9e60ab607761599bd56dcf7eb590c47
--- lams_tool_wiki_orig/src/java/org/lamsfoundation/lams/tool/wiki/util/WikiConstants.java (.../WikiConstants.java) (revision 56a28a3bc9ee71dbde383b407cc475f68d5d6423)
+++ lams_tool_wiki_orig/src/java/org/lamsfoundation/lams/tool/wiki/util/WikiConstants.java (.../WikiConstants.java) (revision ed376d7ba9e60ab607761599bd56dcf7eb590c47)
@@ -111,6 +111,7 @@
public static final String ATTR_ORIGINAL_MESSAGE = "originalMessage";
public static final String ATTR_TOPIC_ID = "topicID";
+ public static final String ATTR_WIKI_ID = "wikiID";
public static final String ATTR_REFLECTION_ON = "reflectOn";
public static final String ATTR_REFLECTION_INSTRUCTION = "reflectInstructions";
public static final String ATTR_REFLECTION_ENTRY = "reflectEntry";
Index: lams_tool_wiki_orig/src/java/org/lamsfoundation/lams/tool/wiki/web/WikiLinkHandlerServlet.java
===================================================================
diff -u
--- lams_tool_wiki_orig/src/java/org/lamsfoundation/lams/tool/wiki/web/WikiLinkHandlerServlet.java (revision 0)
+++ lams_tool_wiki_orig/src/java/org/lamsfoundation/lams/tool/wiki/web/WikiLinkHandlerServlet.java (revision ed376d7ba9e60ab607761599bd56dcf7eb590c47)
@@ -0,0 +1,269 @@
+/**
+ * Copyright (C) 2005 LAMS Foundation (http://lamsfoundation.org)
+ *
+ * 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; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+ * USA
+ *
+ * http://www.gnu.org/licenses/gpl.txt
+ */
+package org.lamsfoundation.lams.tool.wiki.web;
+
+import static org.lamsfoundation.lams.tool.wiki.util.WikiConstants.OLD_FORUM_STYLE;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Iterator;
+import java.util.Set;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import javax.sql.DataSource;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.springframework.web.context.support.WebApplicationContextUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+import org.apache.log4j.Logger;
+import org.apache.commons.lang.StringUtils;
+
+import org.lamsfoundation.lams.integration.service.IntegrationService;
+import org.lamsfoundation.lams.tool.wiki.service.IWikiService;
+import org.lamsfoundation.lams.tool.wiki.service.WikiService;
+import org.lamsfoundation.lams.tool.wiki.service.WikiServiceProxy;
+import org.lamsfoundation.lams.tool.wiki.util.WikiConstants;
+import org.lamsfoundation.lams.tool.wiki.web.forms.MessageForm;
+import org.lamsfoundation.lams.tool.wiki.web.forms.WikiForm;
+import org.lamsfoundation.lams.tool.wiki.persistence.Attachment;
+import org.lamsfoundation.lams.tool.wiki.persistence.Message;
+import org.lamsfoundation.lams.tool.wiki.persistence.PersistenceException;
+import org.lamsfoundation.lams.tool.wiki.persistence.Wiki;
+import org.lamsfoundation.lams.tool.wiki.persistence.WikiUser;
+import org.lamsfoundation.lams.tool.wiki.dto.MessageDTO;
+import org.lamsfoundation.lams.util.CentralConstants;
+import org.lamsfoundation.lams.util.WebUtil;
+import org.lamsfoundation.lams.web.util.SessionMap;
+import org.lamsfoundation.lams.web.session.SessionManager;
+import org.lamsfoundation.lams.tool.ToolAccessMode;
+import org.lamsfoundation.lams.usermanagement.dto.UserDTO;
+import org.lamsfoundation.lams.web.util.AttributeNames;
+/**
+ *
+ * @author Daniel Carlier
+ */
+@SuppressWarnings("serial")
+public class WikiLinkHandlerServlet extends HttpServlet {
+
+ private static Logger log = Logger.getLogger(WikiLinkHandlerServlet.class);
+
+ private static final String JNDI_DATASOURCE = "java:/jdbc/lams-ds";
+
+ private static final String PASSWORD_QUERY = "select password from lams_user where login=?";
+
+ private static IWikiService wikiService = null;
+
+ private String basePath;
+
+ //See LDEV652
+ // For old style (Fiona's description): The oldest topic is at the top, does not depends the reply date etc.
+ // For new style (Ernie's early desc): Most current popular wiki used style: latest topics
+ // should be at the top, reply date will descide the order etc.
+ public static final boolean OLD_FORUM_STYLE = true;
+
+
+ /**
+ * The doGet method of the servlet.
+ *
+ * This method is called when a form has its tag value method equals to get.
+ *
+ * @param request
+ * the request send by the client to the server
+ * @param response
+ * the response send by the server to the client
+ * @throws ServletException
+ * if an error occurred
+ * @throws IOException
+ * if an error occurred
+ */
+ public void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+
+ wikiService = WikiServiceProxy.getWikiService(getServletContext());
+
+
+ response.setCharacterEncoding("UTF8");
+ PrintWriter out = response.getWriter();
+
+ // set the base response path
+ basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath();
+
+
+ // get the request parameters
+ String method = request.getParameter("method");
+ String toolSessionId = request.getParameter("toolSessionId");
+ String sessionMapID = WebUtil.readStrParam(request, WikiConstants.ATTR_SESSION_MAP_ID);
+ Long wikiID = WebUtil.readLongParam(request, WikiConstants.ATTR_WIKI_ID);
+
+
+ SessionMap sessionMap = getSessionMap(request, sessionMapID);
+ if (method.equals("getWikis"))
+ {
+ response.setContentType("text/xml");
+ try
+ {
+ Document document = generateWikiDataXML(wikiService.getRootTopics(Long.parseLong(toolSessionId)), sessionMapID, Long.parseLong(toolSessionId), request);
+
+ // write out the xml document.
+ DOMSource domSource = new DOMSource(document);
+ StringWriter writer = new StringWriter();
+ StreamResult result = new StreamResult(writer);
+ TransformerFactory tf = TransformerFactory.newInstance();
+ Transformer transformer = tf.newTransformer();
+ transformer.transform(domSource, result);
+ out.write(writer.toString());
+ } catch (TransformerConfigurationException e) {
+ log.error("Can not convert XML document to string", e);
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ } catch (TransformerException e) {
+ log.error("Can not convert XML document to string", e);
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR );
+ } catch (ParserConfigurationException e) {
+ log.error("Can not build XML document", e);
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ } catch (Exception e) {
+ log.error("Problem loading learning manager servlet request", e);
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ }
+ }
+ else if (method.equals("createWiki"))
+ {
+ //response.setContentType("text/plain");
+ String wikiName = request.getParameter("wikiName");
+
+ out.write(createWiki(wikiService, sessionMap, wikiName, wikiID, Long.parseLong(toolSessionId)));
+ }
+ }
+
+ /**
+ * Each wiki should have [url, wiki name, display text]
+ * @param wikiList
+ * @return
+ */
+ public Document generateWikiDataXML(List wikiList, String sessionMapID, Long wikiID, HttpServletRequest request) throws ParserConfigurationException
+ {
+ Iterator it = wikiList.iterator();
+
+ // Create xml document
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ Document document = builder.newDocument();
+ Element element = document.createElement("WikiLinks");
+ while (it.hasNext())
+ {
+ MessageDTO wiki = (MessageDTO)it.next();
+
+ Element wikiElement = document.createElement("Wiki");
+
+ wikiElement.setAttribute("name", wiki.getMessage().getSubject());
+
+ String wikiURL = createURL(sessionMapID, wiki.getMessage().getUid().toString(), wiki.getMessage().getUpdated().getTime());
+
+ wikiElement.setAttribute("url", wikiURL);
+
+ element.appendChild(wikiElement);
+ }
+ document.appendChild(element);
+
+ return document;
+ }
+
+
+ public String createWiki(IWikiService wikiService, SessionMap sessionMap, String wikiName, Long wikiID, Long toolSessionID)
+ {
+
+ // Get user DTO
+ HttpSession ss = SessionManager.getSession();
+ UserDTO user = (UserDTO) ss.getAttribute(AttributeNames.USER);
+
+ Message message = new Message();
+ message.setIsAuthored(true);
+ message.setCreated(new Date());
+ message.setUpdated(new Date());
+ message.setLastReplyDate(new Date());
+ message.setSubject(wikiName);
+
+ //check whether this user exist or not
+ WikiUser wikiUser = wikiService.getUserByID(new Long(user.getUserID().intValue()));
+
+ String contentFolderID = (String) sessionMap.get(AttributeNames.PARAM_CONTENT_FOLDER_ID);
+
+ //check whether it is sysadmin:LDEV-906
+ if(wikiUser == null && !StringUtils.equals(contentFolderID,"-1" )){
+ //if user not exist, create new one in database
+ wikiUser = new WikiUser(user,null);
+ }
+
+ message.setCreatedBy(wikiUser);
+ message.setModifiedBy(wikiUser);
+
+
+ Message createdWiki = wikiService.createRootTopic(wikiID, toolSessionID, message);
+
+ return createURL(sessionMap.getSessionID(), createdWiki.getUid().toString(), createdWiki.getCreated().getTime());
+
+ }
+
+ public String createURL(String sessionID, String wikiID, long time) {
+ return basePath +
+ "/learning/viewTopic.do?sessionMapID=" + sessionID +
+ "&topicID=" + wikiID +
+ "&create=" + time;
+
+ }
+
+
+ /**
+ * Retrieve the SessionMap from the HttpSession.
+ *
+ * @param request
+ * @param authForm
+ * @return
+ */
+ private SessionMap getSessionMap(
+ HttpServletRequest request, String sessionID)
+ {
+ SessionMap sess = (SessionMap) request.getSession().getAttribute(sessionID);
+
+ return sess;
+ }
+
+
+
+}
Index: lams_tool_wiki_orig/web/jsps/learning/message/bodyarea.jsp
===================================================================
diff -u -r20550d731bc352d13962c705f72a2419bab9201a -red376d7ba9e60ab607761599bd56dcf7eb590c47
--- lams_tool_wiki_orig/web/jsps/learning/message/bodyarea.jsp (.../bodyarea.jsp) (revision 20550d731bc352d13962c705f72a2419bab9201a)
+++ lams_tool_wiki_orig/web/jsps/learning/message/bodyarea.jsp (.../bodyarea.jsp) (revision ed376d7ba9e60ab607761599bd56dcf7eb590c47)
@@ -1,12 +1,24 @@
<%@ include file="/includes/taglibs.jsp"%>
<%@ include file="../toolbarButtons.jsp"%>
+
+
+ toolbarSet="Custom-Learner">
+
+
+