From: <jbo...@li...> - 2006-05-16 19:17:28
|
Author: szimano Date: 2006-05-16 15:17:15 -0400 (Tue, 16 May 2006) New Revision: 4250 Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/etc/org/jboss/wiki/wikiPlugins.properties labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileMediaDataSource.java labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/MediaDataSource.java labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuMediaDataSource.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/management/NotificationMsg.java 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 labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-management/src/java/org/jboss/wiki/MailNotificationBean.java Log: JBWIKI-87 global watching and finishing Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/etc/org/jboss/wiki/wikiPlugins.properties =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/etc/org/jboss/wiki/wikiPlugins.properties 2006-05-16 18:27:02 UTC (rev 4249) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/etc/org/jboss/wiki/wikiPlugins.properties 2006-05-16 19:17:15 UTC (rev 4250) @@ -8,3 +8,4 @@ wikiHome = /portal/index.html?ctrl:cmd=action&ctrl:window=default.wiki.WikiPortletWindow #number of days that should be included in recent changes plugin recentDays = 30 +notification.fromEmail = do-...@la... Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileMediaDataSource.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileMediaDataSource.java 2006-05-16 18:27:02 UTC (rev 4249) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/FileMediaDataSource.java 2006-05-16 19:17:15 UTC (rev 4250) @@ -58,6 +58,8 @@ private final static String OTHER_LANG_DIR = "LANG/"; + private String GLOBAL_PROPS = "global.properties"; + private final static String LANG_FILE = "languages.properties"; public static final String propFileName = "filedatasource.properties"; @@ -77,6 +79,8 @@ private Logger log; private String langCode = null; + + private Properties globalProps; public void setWikiEngine(WikiEngine wikiEngine) { this.wikiEngine = wikiEngine; @@ -955,4 +959,60 @@ return langCode; } + private void refreshGlobalProps() throws IOException { + if (globalProps == null) { + globalProps = new Properties(); + } + File f = new File(pathToMedia + "/" + GLOBAL_PROPS); + + if (!f.exists()) { + f.createNewFile(); + } + + FileInputStream fis = new FileInputStream(f); + + globalProps.load(fis); + + fis.close(); + } + + public synchronized void setGlobalProperty(String key, String value) throws DataSourceException { + try { + refreshGlobalProps(); + + globalProps.setProperty(key, value); + + saveGlobalProps(); + } catch (IOException e) { + throw new DataSourceException(e); + } + } + + private void saveGlobalProps() throws IOException { + if (globalProps == null) { + globalProps = new Properties(); + } + File f = new File(pathToMedia + "/" + GLOBAL_PROPS); + + if (!f.exists()) { + f.createNewFile(); + } + + FileOutputStream fos = new FileOutputStream(f); + + globalProps.store(fos, SAVE_COMMENT); + + fos.close(); + } + + public synchronized String getGlobalProperty(String key) throws DataSourceException{ + try { + refreshGlobalProps(); + + return globalProps.getProperty(key); + } catch (IOException e) { + throw new DataSourceException(e); + } + } + } Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/MediaDataSource.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/MediaDataSource.java 2006-05-16 18:27:02 UTC (rev 4249) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/MediaDataSource.java 2006-05-16 19:17:15 UTC (rev 4250) @@ -37,7 +37,7 @@ public final static int EDITABLE = 100; public final static int VIEWABLE = 1; - + public static String mediaTrashName = "trash/pages"; /** @@ -56,7 +56,8 @@ * * @param page * Page to save (with changed version number, author and content) - * @param uid Page's uid + * @param uid + * Page's uid * @return true if page was succesfully saved */ public void savePage(String uid, WikiPage page) throws WikiSaveException; @@ -106,8 +107,8 @@ * @return Desired wiki page or null if it doesn't exists. Page will be * loaded with content or not due to loadContent. */ - public WikiPage getPageAtVersion(WikiPage originPage, String uid, boolean loadContent, - int version); + public WikiPage getPageAtVersion(WikiPage originPage, String uid, + boolean loadContent, int version); /** * Checks if given page exists. @@ -128,8 +129,8 @@ * @param version * Version of the page to load. */ - public void getContentAtVersion(WikiPage page, String uid, boolean loadContent, - int version); + public void getContentAtVersion(WikiPage page, String uid, + boolean loadContent, int version); /** * Gets all page names. @@ -157,62 +158,111 @@ */ public int getPageMod(String pageName); - /**Set right for a page. + /** + * Set right for a page. * - * @param pageName Name of the page to set right for. - * @param mods Sum of apropriate static variables EDITABLE and VIEWABLE + * @param pageName + * Name of the page to set right for. + * @param mods + * Sum of apropriate static variables EDITABLE and VIEWABLE */ public void setPageMod(String pageName, int mods); - - - - /**Deletes (or moves to trash) given page + + /** + * Deletes (or moves to trash) given page * - * @param pageName Name of the page to delete. + * @param pageName + * Name of the page to delete. */ public boolean deletePage(String pageName); - - /**Sets wikiEngine reference + + /** + * Sets wikiEngine reference + * * @param wikiEngine */ public void setWikiEngine(WikiEngine wikiEngine); - - /**Saves roles for given page. - * @param uid Page uid to save roles to - * @param roles Roles to save - * @param action can be MediaDataSource.EDITABLE or MediaDataSource.VIEWABLE + + /** + * Saves roles for given page. + * + * @param uid + * Page uid to save roles to + * @param roles + * Roles to save + * @param action + * can be MediaDataSource.EDITABLE or MediaDataSource.VIEWABLE */ - public void saveRolesSet(String uid, Set<String> roles, int action) throws DataSourceException; - - /**Save metadata properties for given page. - * @param uid Page uid to save properties to. + public void saveRolesSet(String uid, Set<String> roles, int action) + throws DataSourceException; + + /** + * Save metadata properties for given page. + * + * @param uid + * Page uid to save properties to. */ public void saveMetadataProps(String uid, Properties props); - - /**Gets metadata properties for given page. - * @param uid Page uid to get properties for. - * @return + + /** + * Gets metadata properties for given page. + * + * @param uid + * Page uid to get properties for. + * @return */ public Properties getMetadataProps(String uid); - - /**Set language code for current dataSource. - * @param langCode code of the language + + /** + * Set language code for current dataSource. + * + * @param langCode + * code of the language */ public void setLanguageCode(String langCode); - - /**Gets all available languages in this wiki. This should be only called to default DataSource + + /** + * Gets all available languages in this wiki. This should be only called to + * default DataSource + * * @return Map of sorted language two-letter codes and their descriptions */ public Map<String, String> getAvailableLanguages(); - - /**Adds langCode (to descriptor). This should be only called to default DataSource - * @param langCode Two-letter language code - * @param langDesc Language description + + /** + * Adds langCode (to descriptor). This should be only called to default + * DataSource + * + * @param langCode + * Two-letter language code + * @param langDesc + * Language description */ public void addLangCode(String langCode, String langDesc); - - /**Get's language code from this datasource + + /** + * Get's language code from this datasource + * * @return two-letter language code */ public String getLangCode(); + + /** + * Sets global property + * + * @param key + * Key + * @param value + * Value + */ + public void setGlobalProperty(String key, String value) throws DataSourceException; + + /** + * Gets global property + * + * @param key + * Key + * @return Value + */ + public String getGlobalProperty(String key) throws DataSourceException; } Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuMediaDataSource.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuMediaDataSource.java 2006-05-16 18:27:02 UTC (rev 4249) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/ShotokuMediaDataSource.java 2006-05-16 19:17:15 UTC (rev 4250) @@ -671,4 +671,14 @@ } } + + public void setGlobalProperty(String key, String value) throws DataSourceException { + // TODO Auto-generated method stub + + } + + public String getGlobalProperty(String key) throws DataSourceException { + // TODO Auto-generated method stub + 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-16 18:27:02 UTC (rev 4249) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiCommon.java 2006-05-16 19:17:15 UTC (rev 4250) @@ -42,6 +42,12 @@ import org.jboss.wiki.plugins.DifferenceEngine; import org.jboss.wiki.plugins.WatchListPlugin; +/** + * Commons class + * + * @author <a href="mailto:tom...@jb...">Tomasz Szymanski</a> + * + */ public class WikiCommon { public static final String wikiButtons = "!WikiButtons"; @@ -67,7 +73,7 @@ } public static void sendNotificationMail(WikiPage page, - WikiSession wikiSession, WikiEngine engine) { + WikiSession wikiSession, WikiEngine engine, String fromEmail) { try { InitialContext context = new InitialContext(); @@ -85,36 +91,65 @@ String notifs = page .getMetaDataProperty(WatchListPlugin.WATCH_PROPERTY); - if (notifs != null && notifs.length() > 0) { + String notifsGlobal = engine.getGlobalProperty( + WatchListPlugin.WATCH_PROPERTY, page.getLangCode()); + + if ((notifs != null && notifs.length() > 0) + || (notifsGlobal != null && notifsGlobal.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]; + if (notifs != null) { + String[] splitedUsers = notifs.split(";"); + + for (int i = 1; i < splitedUsers.length; i += 2) { + users.add(splitedUsers[i]); + } } - log.info(userStr); + if (notifsGlobal != null) { + String[] splitedUsers = notifsGlobal.split(";"); - for (int i = 1; i < splitedUsers.length; i += 2) { - users.add(splitedUsers[i]); + for (int i = 1; i < splitedUsers.length; i += 2) { + users.add(splitedUsers[i]); + } } page = (WikiPage) page.clone(); + engine.refreshPage(page.getName(), page.getLangCode()); + + WikiPage orgPage = engine.getByName(page.getName(), + null, page.getLastVersion() - 1, page + .getLangCode()); + WikiPage pageHtml = engine.getWikiType("htmlClear") .process(page, wikiSession); + + WikiPage link = (WikiPage)page.clone(); + link.setContent("["+page.getName()+"]"); + + String pageLink = engine.getWikiType("htmlClear") + .process(link, wikiSession).getContent(); DifferenceEngine differenceEngine = new DifferenceEngine( "UTF-8"); - String diffs = differenceEngine.makeDiff(page - .getContent(), page.getPageAtVersion(true, - page.getLastVersion() - 1).getContent()); + String diffs = "<br />\n<br /><h2>Diff</h2>\n<hr />\n"; + try { + diffs += differenceEngine + .colorizeDiff(differenceEngine.makeDiff( + orgPage.getContent(), page + .getContent())); + } catch (IOException e) { + log.error( + "Eroror generating diffs for email notifs", + e); + } NotificationMsg notifMsg = new NotificationMsg(users, - diffs + "<br />\n" + pageHtml.getContent(), - page.getName()); + diffs + "<br /><hr />\n<br/>\nThis is notification of page: " + pageLink + "<br/>\n" + + pageHtml.getContent(), + page.getName(), fromEmail, pageLink); ObjectMessage msg = sess.createObjectMessage(notifMsg); sess.createSender(queue).send(msg); } 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-16 18:27:02 UTC (rev 4249) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/WikiEngine.java 2006-05-16 19:17:15 UTC (rev 4250) @@ -86,7 +86,7 @@ private Set<Integer> editedPages; - //private Semaphore s = new Semaphore(1); + // private Semaphore s = new Semaphore(1); private Class credentialsClass; @@ -128,11 +128,10 @@ public synchronized WikiPage getByName(String pageName, WikiContext wikiContext, LanguageDataSource dataSource) { - /*try { - s.acquire(); - } catch (InterruptedException e) { - e.printStackTrace(); - }*/ + /* + * try { s.acquire(); } catch (InterruptedException e) { + * e.printStackTrace(); } + */ String realPageName = getUid(pageName, dataSource.getLanguageCode()); @@ -140,7 +139,7 @@ if (!dataSource.getMediaDataSource().preGet()) { log.error("Couldn't get page"); - //s.release(); + // s.release(); return null; } @@ -161,7 +160,7 @@ if (((wikiContext != null) && (ret != null) && (!ret.isViewable(wikiContext.getUser())) && (!wikiContext .getUser().isAdmin()))) { - //s.release(); + // s.release(); ret = new WikiPage(realPageName, null, "I am sorry, but you are not allowed to see this page", 0, 0, new Date(), this, false, false, null, null, 0, @@ -178,10 +177,10 @@ if (ret != null) { if (wikiContext != null) { - //s.release(); + // s.release(); return wikiContext.process(ret); } else { - //s.release(); + // s.release(); return ret; } } else { @@ -194,10 +193,10 @@ } if (wikiContext != null) { - //s.release(); + // s.release(); return wikiContext.process(ret); } else { - //s.release(); + // s.release(); return ret; } } @@ -211,11 +210,10 @@ public synchronized WikiPage getByName(String pageName, WikiContext wikiContext, int version, LanguageDataSource dataSource) { - /*try { - s.acquire(); - } catch (InterruptedException e) { - e.printStackTrace(); - }*/ + /* + * try { s.acquire(); } catch (InterruptedException e) { + * e.printStackTrace(); } + */ String realPageName = getUid(pageName, dataSource.getLanguageCode()); @@ -237,10 +235,10 @@ if (ret != null) { if (wikiContext != null) { - //s.release(); + // s.release(); return wikiContext.process(ret); } else { - //s.release(); + // s.release(); return ret; } } else { @@ -251,7 +249,7 @@ * (wikiContext != null) { return wikiContext.process(ret); } else { * return ret; } */ - //s.release(); + // s.release(); return null; } } @@ -766,16 +764,15 @@ // renaming subpage - create aprop. newName newName = uid.substring(0, uid.lastIndexOf("/") + 1) + newName; } - if (!arePagesEdited()) { languageDataSources.get(langCode).getWikiPageDictionary().rename( uid, newName); - + // add opposite translation languageDataSources.get(langCode).getWikiPageDictionary().rename( newName, uid); - + } else { // some pages are edited now - execute watcher languageDataSources.get(langCode).getRenamePageWatcher().rename( @@ -784,7 +781,7 @@ // add opposite translation languageDataSources.get(langCode).getRenamePageWatcher().rename( newName, uid); - + if (!languageDataSources.get(langCode).getRenamePageWatcher() .isRuning()) { languageDataSources.get(langCode).getRenamePageWatcher() @@ -860,8 +857,9 @@ languageDataSources.get(langCode).getMediaDataSource().preSave(); } - public void savePage(Credentials credentials, WikiPage page, String langCode, WikiSession wikiSession) - throws WikiSaveException, EditingNotAllowedException { + public void savePage(Credentials credentials, WikiPage page, + String langCode, WikiSession wikiSession) throws WikiSaveException, + EditingNotAllowedException { if (!page.isEditable(credentials)) { throw new EditingNotAllowedException( @@ -894,7 +892,7 @@ } postSave(langCode); - + } public void postSave(String langCode) throws WikiSaveException { @@ -982,9 +980,9 @@ editedPages.add(editSessionId); } - /*public Semaphore getS() { - return s; - }*/ + /* + * public Semaphore getS() { return s; } + */ public HashMap<String, String> getPagesWaiting(String langCode) { return languageDataSources.get(langCode).getRenamePageWatcher() @@ -1174,18 +1172,18 @@ if (!arePagesEdited()) { languageDataSources.get(langCode).getWikiPageDictionary() .removeDictForPage(getUid(pageName, langCode)); - - //remove opposite translation + + // remove opposite translation languageDataSources.get(langCode).getWikiPageDictionary() - .removeDictForPage(pageName); + .removeDictForPage(pageName); } else { // there are some pages edited - execute watcher languageDataSources.get(langCode).getRenamePageWatcher() .removeDictForPage(getUid(pageName, langCode)); - + // remove opposite translation languageDataSources.get(langCode).getRenamePageWatcher() - .removeDictForPage(pageName); + .removeDictForPage(pageName); if (!languageDataSources.get(langCode).getRenamePageWatcher() .isRuning()) { @@ -1201,6 +1199,45 @@ } public Map<String, String> getRenameMapings(String langCode) { - return languageDataSources.get(langCode).getWikiPageDictionary().getRenameMapings(); + return languageDataSources.get(langCode).getWikiPageDictionary() + .getRenameMapings(); } + + /** + * Sets global property + * + * @param key + * Key + * @param value + * Value + * @param langCode + * Language code + */ + public void setGlobalProperty(String key, String value, String langCode) { + try { + languageDataSources.get(langCode).getMediaDataSource() + .setGlobalProperty(key, value); + } catch (DataSourceException e) { + log.error(e); + } + } + + /** + * Gets global property + * + * @param key + * Key + * @param langCode + * Language code + * @return Value + */ + public String getGlobalProperty(String key, String langCode) { + try { + return languageDataSources.get(langCode).getMediaDataSource() + .getGlobalProperty(key); + } catch (DataSourceException e) { + log.error(e); + return null; + } + } } Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/management/NotificationMsg.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/management/NotificationMsg.java 2006-05-16 18:27:02 UTC (rev 4249) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/management/NotificationMsg.java 2006-05-16 19:17:15 UTC (rev 4250) @@ -37,10 +37,16 @@ private String pageName; - public NotificationMsg(Set<String> emails, String pageContent, String pageName) { + private String fromEmail; + + private String pageLink; + + public NotificationMsg(Set<String> emails, String pageContent, String pageName, String fromEmail, String pageLink) { this.emails = emails; this.pageContent = pageContent; this.pageName = pageName; + this.fromEmail = fromEmail; + this.pageLink = pageLink; } public Set<String> getEmails() { @@ -67,4 +73,12 @@ this.pageName = pageName; } + public String getFromEmail() { + return fromEmail; + } + + public String getPageLink() { + return pageLink; + } + } Modified: 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-16 18:27:02 UTC (rev 4249) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/SendNotificationPlugin.java 2006-05-16 19:17:15 UTC (rev 4250) @@ -21,8 +21,6 @@ */ package org.jboss.wiki.plugins; -import java.io.IOException; - import org.jboss.wiki.WikiCommon; import org.jboss.wiki.WikiPage; import org.jboss.wiki.WikiPlugin; @@ -30,6 +28,8 @@ public class SendNotificationPlugin extends WikiPlugin { + private String fromEmail = "ad...@la..."; + @Override public WikiPage process(WikiPage wikiPage, WikiSession wikiSession) { // just send notifications @@ -40,7 +40,7 @@ log.debug("sending notif"); WikiCommon - .sendNotificationMail(clonedPage, wikiSession, wikiEngine); + .sendNotificationMail(clonedPage, wikiSession, wikiEngine, fromEmail); } catch (CloneNotSupportedException e) { log.error(e); } @@ -50,7 +50,7 @@ @Override public void init() { - + fromEmail = getProperty("notification.fromEmail"); } } Modified: 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-16 18:27:02 UTC (rev 4249) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-common/src/java/org/jboss/wiki/plugins/WatchListPlugin.java 2006-05-16 19:17:15 UTC (rev 4250) @@ -47,13 +47,23 @@ if (notifications == null) { notifications = ""; - } - else if (notifications.startsWith(";")) { + } else if (notifications.startsWith(";")) { notifications = notifications.substring(1); } String[] users = notifications.split(";"); + String notificationsGlobal = wikiEngine.getGlobalProperty( + WATCH_PROPERTY, wikiPage.getLangCode()); + + if (notificationsGlobal == null) { + notificationsGlobal = ""; + } else if (notificationsGlobal.startsWith(";")) { + notificationsGlobal = notificationsGlobal.substring(1); + } + + String[] usersGlobal = notificationsGlobal.split(";"); + if (wikiSession.getAttribute("var1") != null && wikiSession.getAttribute("var1").equals("watch") && wikiSession.getAttribute("var2") != null @@ -63,11 +73,28 @@ log.info("Adding user: " + cred.getName() + " to watchlist for page: " + wikiPage.getName()); - notifications = toggleWatch(users, cred.getName(), cred.getEmail()); + notifications = toggleWatch(users, cred.getName(), cred + .getEmail()); users = notifications.split(";"); wikiPage.setMetaDataProperty(WATCH_PROPERTY, notifications); + } else if (wikiSession.getAttribute("var1") != null + && wikiSession.getAttribute("var1").equals("watchGlobal") + && wikiSession.getAttribute("var2") != null + && wikiSession.getAttribute("var2").equals("toggle")) { + // toggle global page watch/unwatch + + log.info("Adding user: " + cred.getName() + + " to watchlist for page: " + wikiPage.getName()); + + notificationsGlobal = toggleWatch(usersGlobal, cred.getName(), + cred.getEmail()); + usersGlobal = notificationsGlobal.split(";"); + + wikiEngine.setGlobalProperty(WATCH_PROPERTY, + notificationsGlobal, wikiPage.getLangCode()); + } StringBuffer buffer = new StringBuffer(wikiPage.getContent()); @@ -80,10 +107,23 @@ : "You are not watching this page. ").append( "<a href=\"").append( wikiSession.getAttribute(WikiSession.ACTION_URL)).append( + "&page=").append(wikiPage.getName()).append( "&var1=watch&var2=toggle\" >[").append( (watcher) ? "Stop watching this page" : "Watch this page") - .append("]</a>"); + .append("]</a><br />"); + watcher = userInWatchList(usersGlobal, cred.getName()); + + buffer.append( + (watcher) ? "Your global watch is switched ON. " + : "Your global watch is switched OFF. ").append( + "<a href=\"").append( + wikiSession.getAttribute(WikiSession.ACTION_URL)).append( + "&page=").append(wikiPage.getName()).append( + "&var1=watchGlobal&var2=toggle\" >[").append( + (watcher) ? "Switch it off" : "Switch it on").append( + "]</a>"); + wikiPage.setContent(buffer.toString()); } @@ -100,7 +140,8 @@ } } else { for (int i = 0; i < users.length; i++) { - if (notifs.length() != 0 || (users[i].length() != 0 && notifs.length() == 0)) { + if (notifs.length() != 0 + || (users[i].length() != 0 && notifs.length() == 0)) { notifs += users[i] + ";"; } } Modified: labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-management/src/java/org/jboss/wiki/MailNotificationBean.java =================================================================== --- labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-management/src/java/org/jboss/wiki/MailNotificationBean.java 2006-05-16 18:27:02 UTC (rev 4249) +++ labs/jbosslabs/trunk/portal-extensions/jbosswiki/wiki-management/src/java/org/jboss/wiki/MailNotificationBean.java 2006-05-16 19:17:15 UTC (rev 4250) @@ -44,8 +44,6 @@ @javax.ejb.ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/mdb") }) class MailNotificationBean implements MessageListener { - private final static String EMAIL_ADDRESS = "sz...@o2..."; - private Logger log = Logger.getLogger(this.getClass()); public void onMessage(Message msg) { @@ -76,7 +74,7 @@ MimeMessage m = new MimeMessage(session); if (email != null) { - m.setFrom(new InternetAddress(EMAIL_ADDRESS)); + m.setFrom(new InternetAddress(notifications.getFromEmail())); to = new InternetAddress[] { new InternetAddress( email) }; m.setRecipients(RecipientType.TO, to); @@ -85,7 +83,7 @@ m.setSentDate(new Date()); buffer = new StringBuffer(); - buffer.append("This message is generated automaticcaly. Please do not reply. To remove yourself from the watch list please go to www.\n\n"); + buffer.append("This message is generated automaticcaly. Please do not reply. To remove yourself from the watch list please go to ").append(notifications.getPageLink()).append("<br />\n"); buffer.append(notifications.getPageContent()); m.setContent(buffer.toString(), "text/html; charset=\"UTF-8\""); |