From: <jbo...@li...> - 2006-05-15 21:39:05
|
Author: szimano Date: 2006-05-15 17:38:40 -0400 (Mon, 15 May 2006) New Revision: 4234 Added: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/SendNotificationPlugin.java labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/WatchListPlugin.java Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/etc/WikiTypes.xml labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/AdminSimpleCredentials.java labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/Credentials.java labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/JBossPortalCredentials.java labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/SimpleCredentials.java labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiCommon.java labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPage.java labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/ATOMPlugin.java labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorParts.java labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RDFPlugin.java labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RSSPlugin.java labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-test/src/java/org/jboss/wiki/test/DictionaryTest.java labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-test/src/java/org/jboss/wiki/test/GetSavePageTest.java labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-test/src/java/org/jboss/wiki/test/PageModsTest.java labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-test/src/java/org/jboss/wiki/test/SubPagesTest.java labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-test/src/java/org/jboss/wiki/test/TestCredentials.java labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-test/src/java/org/jboss/wiki/test/WikiTest.java Log: JBWIKI-87 Added plugin for user, changed a little bit postedit processing (added wikisession there) Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java 2006-05-15 17:52:24 UTC (rev 4233) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/forge-wiki/src/java/org/jboss/wiki/WikiPortlet.java 2006-05-15 21:38:40 UTC (rev 4234) @@ -34,6 +34,7 @@ import javax.portlet.ActionResponse; import javax.portlet.GenericPortlet; import javax.portlet.PortletException; +import javax.portlet.PortletSession; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; @@ -317,7 +318,8 @@ edPage.save(credentials, Integer .valueOf((String) convertedParameters .get("editSessionId")), - (String) convertedParameters.get("language")); + (String) convertedParameters.get("language"), + new PortletWikiSession(rReq.getPortletSession())); } catch (NumberFormatException e) { log.error(e); } catch (EditSessionExpired e) { @@ -367,15 +369,7 @@ + ((rReq.getServerPort() == 80) ? "" : ":" + rReq.getServerPort()); - // prepare some data for plugins in session - rReq.getPortletSession().setAttribute(WikiSession.CREDENTIALS, - credentials); - rReq.getPortletSession() - .setAttribute(WikiSession.HOST_URL, hostURL); - rReq.getPortletSession().setAttribute(WikiSession.ACTION_URL, - wikiURL); - rReq.getPortletSession().setAttribute(WikiSession.IS_SECURE, - new Boolean(rReq.isSecure())); + prepareSession(rReq.getPortletSession(), credentials, hostURL, wikiURL, rReq.isSecure()); /* * WikiPage noSuchPage = new WikiPage("", credentials, "There is no @@ -629,4 +623,13 @@ throw (e); } } + + private void prepareSession(PortletSession portletSession, + Credentials credentials, String hostURL, String wikiURL, Boolean isSecure) { + // prepare some data for plugins in session + portletSession.setAttribute(WikiSession.CREDENTIALS, credentials); + portletSession.setAttribute(WikiSession.HOST_URL, hostURL); + portletSession.setAttribute(WikiSession.ACTION_URL, wikiURL); + portletSession.setAttribute(WikiSession.IS_SECURE, isSecure); + } } \ No newline at end of file Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/etc/WikiTypes.xml =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/etc/WikiTypes.xml 2006-05-15 17:52:24 UTC (rev 4233) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/etc/WikiTypes.xml 2006-05-15 21:38:40 UTC (rev 4234) @@ -13,6 +13,10 @@ <class>org.jboss.wiki.plugins.TrailPlugin</class> </plugin> <plugin> + <name>watchList</name> + <class>org.jboss.wiki.plugins.WatchListPlugin</class> + </plugin> + <plugin> <name>subPagesList</name> <class>org.jboss.wiki.plugins.SubpagesListPlugin</class> </plugin> @@ -140,6 +144,10 @@ <name>updateRefs</name> <class>org.jboss.wiki.plugins.UpdateRefs</class> </plugin> + <plugin> + <name>sendNotifications</name> + <class>org.jboss.wiki.plugins.SendNotificationPlugin</class> + </plugin> </wikiType> <wikiType> <name>admin</name> Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/AdminSimpleCredentials.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/AdminSimpleCredentials.java 2006-05-15 17:52:24 UTC (rev 4233) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/AdminSimpleCredentials.java 2006-05-15 21:38:40 UTC (rev 4234) @@ -63,4 +63,9 @@ return new TreeSet<String>(); } + @Override + public String getEmail() { + return null; + } + } Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/Credentials.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/Credentials.java 2006-05-15 17:52:24 UTC (rev 4233) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/Credentials.java 2006-05-15 21:38:40 UTC (rev 4234) @@ -26,47 +26,72 @@ import javax.portlet.ActionRequest; import javax.portlet.RenderRequest; -/**@author <a href="mailto:tom...@jb...">Tomasz Szymanski</a><br /> - * <p></p> +/** + * @author <a href="mailto:tom...@jb...">Tomasz Szymanski</a><br /> + * <p> + * </p> * */ public abstract class Credentials { - /**Gets userName + /** + * Gets userName + * * @return userName of current user. */ public abstract String getName(); - - /**Checks if any user is logged in. + + /** + * Checks if any user is logged in. + * * @return true if anyone is logged in, false othwerwise. */ public abstract boolean isLoggedIn(); - - /**Checks if logged in user is Admin. + + /** + * Checks if logged in user is Admin. + * * @return true if user is admin, false othwerwise. */ public abstract boolean isAdmin(); - - /* (non-Javadoc) + + /* + * (non-Javadoc) + * * @see java.lang.Object#toString() */ public String toString() { return getName(); } - - /**Sets ActionRequest for current credentials. - * @param rReq ActionRequest to set. + + /** + * Sets ActionRequest for current credentials. + * + * @param rReq + * ActionRequest to set. */ public abstract void setParam(Object param); - - /**Checks if user is in given role. - * @param role to check + + /** + * Checks if user is in given role. + * + * @param role + * to check * @return True if is in role, false otherwise. */ public abstract boolean isUserInRole(String role); - - /**Get Set of ALL role names. + + /** + * Get Set of ALL role names. + * * @return Set of role names or empty Set if there are no roles */ public abstract Set<String> getAllRoles(); - } + + /** + * Get email address of this user + * + * @return Email or null if email is not available + */ + public abstract String getEmail(); +} Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/JBossPortalCredentials.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/JBossPortalCredentials.java 2006-05-15 17:52:24 UTC (rev 4233) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/JBossPortalCredentials.java 2006-05-15 21:38:40 UTC (rev 4234) @@ -55,6 +55,8 @@ private Set<Role> allRoles; private TransactionManager tm; + + private String email; private static final String roleModulesCtx = "java:portal/RoleModule"; @@ -78,6 +80,7 @@ isAdmin = jrReq.getUser().getRoleNames() .contains(adminRoleName); roles = jrReq.getUser().getRoleNames(); + email = jrReq.getUser().getRealEmail(); } } else if (param instanceof JBossRenderRequest) { @@ -89,6 +92,7 @@ isAdmin = jrReq.getUser().getRoleNames() .contains(adminRoleName); roles = jrReq.getUser().getRoleNames(); + email = jrReq.getUser().getRealEmail(); } else { name = "Unknown"; } @@ -121,7 +125,9 @@ public boolean isAdmin() { return isAdmin; } + private static final String userModuleCtx = "java:portal/UserModule"; + public boolean isLoggedIn() { return logedIn; } @@ -145,4 +151,9 @@ return roleNames; } + @Override + public String getEmail() { + return email; + } + } Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/SimpleCredentials.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/SimpleCredentials.java 2006-05-15 17:52:24 UTC (rev 4233) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/SimpleCredentials.java 2006-05-15 21:38:40 UTC (rev 4234) @@ -64,5 +64,10 @@ return new TreeSet<String>(); } + @Override + public String getEmail() { + return null; + } + } Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiCommon.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiCommon.java 2006-05-15 17:52:24 UTC (rev 4233) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiCommon.java 2006-05-15 21:38:40 UTC (rev 4234) @@ -21,11 +21,11 @@ */ package org.jboss.wiki; -import java.util.Map; +import java.io.IOException; import java.util.Set; -import java.util.TreeMap; import java.util.TreeSet; +import javax.jms.JMSException; import javax.jms.ObjectMessage; import javax.jms.Queue; import javax.jms.QueueConnectionFactory; @@ -39,32 +39,35 @@ import org.jboss.wiki.exceptions.WikiManagementNotFoundException; import org.jboss.wiki.management.NotificationMsg; import org.jboss.wiki.management.WikiServiceMenagement; +import org.jboss.wiki.plugins.DifferenceEngine; +import org.jboss.wiki.plugins.WatchListPlugin; public class WikiCommon { - + public static final String wikiButtons = "!WikiButtons"; - + public static final String WIKI_SERVICE_NAME = "wiki:service=wikiService"; - + private static Logger log = Logger.getLogger(WikiCommon.class); - + private static WikiServiceMenagement wikiServiceMenagement; - public static WikiServiceMenagement getWikiManagement() throws WikiManagementNotFoundException{ + public static WikiServiceMenagement getWikiManagement() + throws WikiManagementNotFoundException { try { - if (wikiServiceMenagement == null) - wikiServiceMenagement = (WikiServiceMenagement) MBeanProxyExt.create( - WikiServiceMenagement.class, - WIKI_SERVICE_NAME, - MBeanServerLocator.locate()); - - return wikiServiceMenagement; - } catch (Exception e) { - throw new WikiManagementNotFoundException(e); - } + if (wikiServiceMenagement == null) + wikiServiceMenagement = (WikiServiceMenagement) MBeanProxyExt + .create(WikiServiceMenagement.class, WIKI_SERVICE_NAME, + MBeanServerLocator.locate()); + + return wikiServiceMenagement; + } catch (Exception e) { + throw new WikiManagementNotFoundException(e); + } } - - public static void sendNotificationMail(WikiPage page) { + + public static void sendNotificationMail(WikiPage page, + WikiSession wikiSession, WikiEngine engine) { try { InitialContext context = new InitialContext(); @@ -78,48 +81,50 @@ false, QueueSession.AUTO_ACKNOWLEDGE); if (sess != null) { - - String notifs = page.getMetaDataProperty("notifications"); - - if (notifs != null) { - Set<String> emails = new TreeSet<String>(); - String[] splitedMails = notifs.split(";"); - - for (int i = 0; i < splitedMails.length; i++) { - emails.add(splitedMails[i]); + + String notifs = page + .getMetaDataProperty(WatchListPlugin.WATCH_PROPERTY); + + if (notifs != null && notifs.length() > 0) { + Set<String> users = new TreeSet<String>(); + String[] splitedUsers = notifs.split(";"); + + String userStr = ""; + for (int i = 0; i < splitedUsers.length; i++) { + userStr += " [" + i + "] " + splitedUsers[i]; } - + + log.info(userStr); + + for (int i = 1; i < splitedUsers.length; i += 2) { + users.add(splitedUsers[i]); + } + page = (WikiPage) page.clone(); - WikiEngine engine = getWikiManagement().getWikiEngine(); - page = engine.getWikiType("htmlClear").process(page, new WikiSession(){ - - private Map<String, Object> attributes = new TreeMap<String, Object>(); - public Object getAttribute(String attributeName) { - return attributes.get(attributeName); - } - public void setAttribute(String attributeName, Object attribute) { - attributes.put(attributeName, attribute); - } + WikiPage pageHtml = engine.getWikiType("htmlClear") + .process(page, wikiSession); - public void removeAttribute(String attributeName) { - attributes.remove(attributeName); - } + DifferenceEngine differenceEngine = new DifferenceEngine( + "UTF-8"); - public String getId() { - return this.toString(); - }}); - - NotificationMsg notifMsg = new NotificationMsg(emails, page.getContent(), page.getName()); + String diffs = differenceEngine.makeDiff(page + .getContent(), page.getPageAtVersion(true, + page.getLastVersion() - 1).getContent()); + + NotificationMsg notifMsg = new NotificationMsg(users, + diffs + "<br />\n" + pageHtml.getContent(), + page.getName()); ObjectMessage msg = sess.createObjectMessage(notifMsg); sess.createSender(queue).send(msg); } - } - else { + } else { log.error("Couldn't create queue session."); } - } catch (Exception e) { + } catch (CloneNotSupportedException e) { log.error(e); + } catch (JMSException e) { + log.error(e); } } catch (NamingException e1) { log.error(e1); Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java 2006-05-15 17:52:24 UTC (rev 4233) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java 2006-05-15 21:38:40 UTC (rev 4234) @@ -45,6 +45,7 @@ import org.jboss.wiki.exceptions.PageNotEditedException; import org.jboss.wiki.exceptions.PageRenamingException; import org.jboss.wiki.exceptions.WikiSaveException; +import org.jboss.wiki.plugins.WatchListPlugin; import org.jboss.logging.Logger; import org.w3c.dom.Document; @@ -859,7 +860,7 @@ languageDataSources.get(langCode).getMediaDataSource().preSave(); } - public void savePage(Credentials credentials, WikiPage page, String langCode) + public void savePage(Credentials credentials, WikiPage page, String langCode, WikiSession wikiSession) throws WikiSaveException, EditingNotAllowedException { if (!page.isEditable(credentials)) { @@ -878,7 +879,7 @@ if (postEditProcess != null) { // there are some plugins for postediting a page - page = postEditProcess.process(page, null); + page = postEditProcess.process(page, wikiSession); } // put processed page to pages map @@ -894,11 +895,6 @@ postSave(langCode); - // send notifications - page.setMetaDataProperty("notifications", "sz...@as..."); - log.info("sending notif"); - WikiCommon.sendNotificationMail(page); - } public void postSave(String langCode) throws WikiSaveException { Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPage.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPage.java 2006-05-15 17:52:24 UTC (rev 4233) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiPage.java 2006-05-15 21:38:40 UTC (rev 4234) @@ -134,17 +134,20 @@ editSessionWatchers = new HashMap<Integer, EditSessionWatcher>(); log = Logger.getLogger(WikiPage.class); - this.editRoles = (editRoles == null) ? new TreeSet<String>() : editRoles; - this.viewRoles = (viewRoles == null) ? new TreeSet<String>() : viewRoles; + this.editRoles = (editRoles == null) ? new TreeSet<String>() + : editRoles; + this.viewRoles = (viewRoles == null) ? new TreeSet<String>() + : viewRoles; this.length = length; - + setLangCode(langCode); - + } - public synchronized void save(Credentials credentials,Integer editActionId, String langCode) - throws EditSessionExpired, WikiSaveException, EditingNotAllowedException { + public synchronized void save(Credentials credentials, + Integer editActionId, String langCode, WikiSession wikiSession) throws EditSessionExpired, + WikiSaveException, EditingNotAllowedException { if (expiredSessionIds.contains(editActionId)) { throw new EditSessionExpired( @@ -156,7 +159,7 @@ editSessionWatchers.remove(editActionId); } - wikiEngine.savePage(credentials, this, langCode); + wikiEngine.savePage(credentials, this, langCode, wikiSession); } public WikiPage getPageAtVersion(boolean loadContent, int version) { @@ -180,7 +183,6 @@ return getPageContent(); } - public void showPage() { log.info("Page name: " + getName()); log.info("Page author: " + getLastAuthor()); @@ -434,8 +436,7 @@ public void setEditRoles(Set<String> editRoles) { if (editRoles == null) { this.editRoles.clear(); - } - else { + } else { this.editRoles = editRoles; } } @@ -443,8 +444,7 @@ public void setViewRoles(Set<String> viewRoles) { if (viewRoles == null) { this.viewRoles.clear(); - } - else { + } else { this.viewRoles = viewRoles; } } @@ -536,8 +536,16 @@ props.setProperty(key, value); wikiEngine.saveMetaProps(props, this); + + wikiEngine.refreshPage(getName(), getLangCode()); } + public void resetMetaProps() { + if (permVariables.get(METADATA) != null) { + permVariables.remove(METADATA); + } + } + public String getMetaDataProperty(String key) { if (permVariables.get(METADATA) != null) { return ((Properties) permVariables.get(METADATA)).getProperty(key); Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/ATOMPlugin.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/ATOMPlugin.java 2006-05-15 17:52:24 UTC (rev 4233) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/ATOMPlugin.java 2006-05-15 21:38:40 UTC (rev 4234) @@ -127,7 +127,7 @@ @Override public void init() { - differenceEngine = new DifferenceEngine("ISO-8859-1"); + differenceEngine = new DifferenceEngine("UTF-8"); } } Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorParts.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorParts.java 2006-05-15 17:52:24 UTC (rev 4233) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/HTMLTranslatorParts.java 2006-05-15 21:38:40 UTC (rev 4234) @@ -1025,10 +1025,10 @@ public WikiPage process(final WikiPage wikiPage, WikiSession wikiSession) { WikiPage newPage = null; - portalHome = (String) wikiSession.getAttribute("hostURL") - + (String) wikiSession.getAttribute("actionURL"); + portalHome = (String) wikiSession.getAttribute(WikiSession.HOST_URL) + + (String) wikiSession.getAttribute(WikiSession.ACTION_URL); wikiHome = ""; - imagePath = (String) wikiSession.getAttribute("hostURL") + imagePath = (String) wikiSession.getAttribute(WikiSession.HOST_URL) + "/wiki" + (!wikiPage.getLangCode().equals(wikiEngine.defaultLangugeCode) ? "/" + wikiPage.getLangCode().toLowerCase() Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RDFPlugin.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RDFPlugin.java 2006-05-15 17:52:24 UTC (rev 4233) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RDFPlugin.java 2006-05-15 21:38:40 UTC (rev 4234) @@ -111,7 +111,7 @@ @Override public void init() { - differenceEngine = new DifferenceEngine("ISO-8859-1"); + differenceEngine = new DifferenceEngine("UTF-8"); } } Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RSSPlugin.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RSSPlugin.java 2006-05-15 17:52:24 UTC (rev 4233) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/RSSPlugin.java 2006-05-15 21:38:40 UTC (rev 4234) @@ -93,7 +93,7 @@ @Override public void init() { - differenceEngine = new DifferenceEngine("ISO-8859-1"); + differenceEngine = new DifferenceEngine("UTF-8"); } } Added: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/SendNotificationPlugin.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/SendNotificationPlugin.java 2006-05-15 17:52:24 UTC (rev 4233) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/SendNotificationPlugin.java 2006-05-15 21:38:40 UTC (rev 4234) @@ -0,0 +1,56 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.jboss.wiki.plugins; + +import java.io.IOException; + +import org.jboss.wiki.WikiCommon; +import org.jboss.wiki.WikiPage; +import org.jboss.wiki.WikiPlugin; +import org.jboss.wiki.WikiSession; + +public class SendNotificationPlugin extends WikiPlugin { + + @Override + public WikiPage process(WikiPage wikiPage, WikiSession wikiSession) { + // just send notifications + + try { + WikiPage clonedPage = (WikiPage) wikiPage.clone(); + + log.debug("sending notif"); + + WikiCommon + .sendNotificationMail(clonedPage, wikiSession, wikiEngine); + } catch (CloneNotSupportedException e) { + log.error(e); + } + + return wikiPage; + } + + @Override + public void init() { + + } + +} Added: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/WatchListPlugin.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/WatchListPlugin.java 2006-05-15 17:52:24 UTC (rev 4233) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/WatchListPlugin.java 2006-05-15 21:38:40 UTC (rev 4234) @@ -0,0 +1,129 @@ +/* + * JBoss, Home of Professional Open Source + * Copyright 2005, JBoss Inc., and individual contributors as indicated + * by the @authors tag. See the copyright.txt in the distribution for a + * full listing of individual contributors. + * + * This is free software; you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This software 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this software; if not, write to the Free + * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA + * 02110-1301 USA, or see the FSF site: http://www.fsf.org. + */ +package org.jboss.wiki.plugins; + +import org.jboss.wiki.Credentials; +import org.jboss.wiki.WikiPage; +import org.jboss.wiki.WikiPlugin; +import org.jboss.wiki.WikiSession; + +/** + * Plugin that adds user to watch list (for sending on-change notifications) + * + * @author <a href="mailto:tom...@jb...">Tomasz Szymanski</a> + * + */ +public class WatchListPlugin extends WikiPlugin { + + public static final String WATCH_PROPERTY = "notifications"; + + @Override + public WikiPage process(WikiPage wikiPage, WikiSession wikiSession) { + Credentials cred = (Credentials) wikiSession + .getAttribute(WikiSession.CREDENTIALS); + + if (cred.isLoggedIn()) { + String notifications = wikiPage + .getMetaDataProperty(WatchListPlugin.WATCH_PROPERTY); + + if (notifications == null) { + notifications = ""; + } + else if (notifications.startsWith(";")) { + notifications = notifications.substring(1); + } + + String[] users = notifications.split(";"); + + if (wikiSession.getAttribute("var1") != null + && wikiSession.getAttribute("var1").equals("watch") + && wikiSession.getAttribute("var2") != null + && wikiSession.getAttribute("var2").equals("toggle")) { + // toggle page watch/unwatch + + log.info("Adding user: " + cred.getName() + + " to watchlist for page: " + wikiPage.getName()); + + notifications = toggleWatch(users, cred.getName(), cred.getEmail()); + users = notifications.split(";"); + + wikiPage.setMetaDataProperty(WATCH_PROPERTY, notifications); + + } + + StringBuffer buffer = new StringBuffer(wikiPage.getContent()); + buffer.append("<hr />\n").append("<h3>Page watching</h3>\n"); + + boolean watcher = userInWatchList(users, cred.getName()); + + buffer.append( + (watcher) ? "You are watching this page. " + : "You are not watching this page. ").append( + "<a href=\"").append( + wikiSession.getAttribute(WikiSession.ACTION_URL)).append( + "&var1=watch&var2=toggle\" >[").append( + (watcher) ? "Stop watching this page" : "Watch this page") + .append("]</a>"); + + wikiPage.setContent(buffer.toString()); + } + + return wikiPage; + } + + private String toggleWatch(String[] users, String user, String email) { + String notifs = ""; + if (users.length > 0 && userInWatchList(users, user)) { + for (int i = 0; i < users.length; i += 2) { + if (!users[i].equals(user)) { + notifs += users[i] + ";" + users[i + 1] + ";"; + } + } + } else { + for (int i = 0; i < users.length; i++) { + if (notifs.length() != 0 || (users[i].length() != 0 && notifs.length() == 0)) { + notifs += users[i] + ";"; + } + } + notifs += user + ";" + email + ";"; + } + + return notifs; + } + + @Override + public void init() { + + } + + private boolean userInWatchList(String[] allUsers, String user) { + boolean is = false; + + for (int i = 0; i < allUsers.length && is == false; i += 2) { + if (allUsers[i].equals(user)) { + is = true; + } + } + + return is; + } +} Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-test/src/java/org/jboss/wiki/test/DictionaryTest.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-test/src/java/org/jboss/wiki/test/DictionaryTest.java 2006-05-15 17:52:24 UTC (rev 4233) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-test/src/java/org/jboss/wiki/test/DictionaryTest.java 2006-05-15 21:38:40 UTC (rev 4234) @@ -51,11 +51,11 @@ // set apropriate content of pages wikiPage1.setContent("1 ["+page2+"]"); wikiPage1.setLastVersion(wikiPage1.getLastVersion()+1); - wikiPage1.save(plainUser, wikiEngine.getEditSessionId(), langCode); + wikiPage1.save(plainUser, wikiEngine.getEditSessionId(), langCode, testWikiSession); wikiPage2.setContent("1 ["+page2+"]"); wikiPage2.setLastVersion(wikiPage2.getLastVersion()+1); - wikiPage2.save(plainUser, wikiEngine.getEditSessionId(), langCode); + wikiPage2.save(plainUser, wikiEngine.getEditSessionId(), langCode, testWikiSession); int i = 0; String newPage2Name = page2 + (i++); Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-test/src/java/org/jboss/wiki/test/GetSavePageTest.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-test/src/java/org/jboss/wiki/test/GetSavePageTest.java 2006-05-15 17:52:24 UTC (rev 4233) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-test/src/java/org/jboss/wiki/test/GetSavePageTest.java 2006-05-15 21:38:40 UTC (rev 4234) @@ -92,7 +92,7 @@ } // try saving page with wrong sessionId - wikiPage.save(plainUser, NUM_OF_SESSIDS * 2, langCode); + wikiPage.save(plainUser, NUM_OF_SESSIDS * 2, langCode, testWikiSession); // check what wikiEngine thinks assertTrue(wikiEngine.arePagesEdited()); @@ -115,7 +115,7 @@ PAGE_CONTENT.length(), langCode); // save page - wikiEngine.savePage(plainUser, testPage, langCode); + wikiEngine.savePage(plainUser, testPage, langCode, testWikiSession); // add testpage to to-delete list pagesToDelete.add(testPageName); @@ -130,7 +130,7 @@ testPage.setContent(PAGE_CONTENT_2); testPage.setLastVersion(testPage.getLastVersion() + 1); - wikiEngine.savePage(plainUser, testPage, langCode); + wikiEngine.savePage(plainUser, testPage, langCode, testWikiSession); // get page again at current version testPage = wikiEngine.getByName(testPageName, null, langCode); Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-test/src/java/org/jboss/wiki/test/PageModsTest.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-test/src/java/org/jboss/wiki/test/PageModsTest.java 2006-05-15 17:52:24 UTC (rev 4233) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-test/src/java/org/jboss/wiki/test/PageModsTest.java 2006-05-15 21:38:40 UTC (rev 4234) @@ -50,7 +50,7 @@ page.setLastVersion(page.getLastVersion() + 1); try { - wikiEngine.savePage(plainUser, page, langCode); + wikiEngine.savePage(plainUser, page, langCode, testWikiSession); fail("Saving should throw an exception - page isn't editable"); } catch (EditingNotAllowedException e) { // it's ok - page isn't editable @@ -96,7 +96,7 @@ page.setLastVersion(page.getLastVersion() + 1); try { - wikiEngine.savePage(plainUser, page, langCode); + wikiEngine.savePage(plainUser, page, langCode, testWikiSession); fail("Saving should throw an exception - page isn't editable"); } catch (EditingNotAllowedException e) { // it's ok - page isn't editable Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-test/src/java/org/jboss/wiki/test/SubPagesTest.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-test/src/java/org/jboss/wiki/test/SubPagesTest.java 2006-05-15 17:52:24 UTC (rev 4233) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-test/src/java/org/jboss/wiki/test/SubPagesTest.java 2006-05-15 21:38:40 UTC (rev 4234) @@ -48,7 +48,7 @@ PAGE_CONTENT_2, 1, 1, new Date(), wikiEngine, true, true, null, null, PAGE_CONTENT_2.length(), langCode); - wikiEngine.savePage(plainUser, subPage1, langCode); + wikiEngine.savePage(plainUser, subPage1, langCode, testWikiSession); //add to "to-delete" list pagesToDelete.add(page+"/"+SUB_PAGE_1); @@ -58,7 +58,7 @@ PAGE_CONTENT_3, 1, 1, new Date(), wikiEngine, true, true, null, null, PAGE_CONTENT_3.length(), langCode); - wikiEngine.savePage(plainUser, subPage2, langCode); + wikiEngine.savePage(plainUser, subPage2, langCode, testWikiSession); //add to "to-delete" list pagesToDelete.add(page+"/"+SUB_PAGE_2); @@ -83,7 +83,7 @@ PAGE_CONTENT_2, 1, 1, new Date(), wikiEngine, true, true, null, null, PAGE_CONTENT_2.length(), langCode); - wikiEngine.savePage(plainUser, rootPage, langCode); + wikiEngine.savePage(plainUser, rootPage, langCode, testWikiSession); createdPages.add(page); // create first subpage @@ -91,7 +91,7 @@ PAGE_CONTENT_2, 1, 1, new Date(), wikiEngine, true, true, null, null, PAGE_CONTENT_2.length(), langCode); - wikiEngine.savePage(plainUser, subPage1, langCode); + wikiEngine.savePage(plainUser, subPage1, langCode, testWikiSession); createdPages.add(page + "/" + SUB_PAGE_1); // create second subpage @@ -99,7 +99,7 @@ PAGE_CONTENT_2, 1, 1, new Date(), wikiEngine, true, true, null, null, PAGE_CONTENT_2.length(), langCode); - wikiEngine.savePage(plainUser, subPage2, langCode); + wikiEngine.savePage(plainUser, subPage2, langCode, testWikiSession); createdPages.add(page + "/" + SUB_PAGE_2); // create first subsubpage @@ -107,7 +107,7 @@ PAGE_CONTENT_2, 1, 1, new Date(), wikiEngine, true, true, null, null, PAGE_CONTENT_2.length(), langCode); - wikiEngine.savePage(plainUser, subSubPage1, langCode); + wikiEngine.savePage(plainUser, subSubPage1, langCode, testWikiSession); createdPages.add(page + "/" + SUB_PAGE_1 + "/" + SUB_PAGE_1); // add a page that is more deep inside @@ -116,7 +116,7 @@ PAGE_CONTENT_2, 1, 1, new Date(), wikiEngine, true, true, null, null, PAGE_CONTENT_2.length(), langCode); - wikiEngine.savePage(plainUser, subSubmultiple, langCode); + wikiEngine.savePage(plainUser, subSubmultiple, langCode, testWikiSession); createdPages.add(name); Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-test/src/java/org/jboss/wiki/test/TestCredentials.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-test/src/java/org/jboss/wiki/test/TestCredentials.java 2006-05-15 17:52:24 UTC (rev 4233) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-test/src/java/org/jboss/wiki/test/TestCredentials.java 2006-05-15 21:38:40 UTC (rev 4234) @@ -78,5 +78,10 @@ public Set<String> getAllRoles() { return roles; } + + @Override + public String getEmail() { + return null; + } } \ No newline at end of file Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-test/src/java/org/jboss/wiki/test/WikiTest.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-test/src/java/org/jboss/wiki/test/WikiTest.java 2006-05-15 17:52:24 UTC (rev 4233) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-test/src/java/org/jboss/wiki/test/WikiTest.java 2006-05-15 21:38:40 UTC (rev 4234) @@ -136,7 +136,7 @@ new Date(), wikiEngine, true, true, null, null, pageContent .length(), langCode); - wikiPage.save(plainUser, wikiEngine.getEditSessionId(), langCode); + wikiPage.save(plainUser, wikiEngine.getEditSessionId(), langCode, testWikiSession); pagesToDelete.add(testPageName); |