Author: jvdrean
Date: 2008-02-27 16:28:32 +0100 (Wed, 27 Feb 2008)
New Revision: 8035

Added:
   
xwiki-platform/xwiki-applications/trunk/watchlist/src/main/resources/XWiki/WatchListManager
Removed:
   xwiki-platform/web/trunk/standard/src/main/webapp/templates/watchlist.vm
Modified:
   xwiki-platform/web/trunk/standard/src/main/webapp/templates/menuview.vm
   
xwiki-platform/xwiki-plugins/trunk/watchlist/src/main/java/com/xpn/xwiki/plugin/watchlist/WatchListPlugin.java
   
xwiki-products/xwiki-enterprise/trunk/distribution-test/selenium-tests/src/test/it/com/xpn/xwiki/it/selenium/WatchListTest.java
   
xwiki-products/xwiki-enterprise/trunk/distribution-test/selenium-tests/src/test/it/com/xpn/xwiki/it/selenium/framework/AbstractXWikiTestCase.java
Log:
XWIKI-2125 : It should be possible to enable/disable the watchlist feature by 
wiki
XPWATCHLIST-18 : Move watchlist management screen from platform templates to an 
application wiki page

Modified: 
xwiki-platform/web/trunk/standard/src/main/webapp/templates/menuview.vm
===================================================================
--- xwiki-platform/web/trunk/standard/src/main/webapp/templates/menuview.vm     
2008-02-27 15:20:08 UTC (rev 8034)
+++ xwiki-platform/web/trunk/standard/src/main/webapp/templates/menuview.vm     
2008-02-27 15:28:32 UTC (rev 8035)
@@ -87,7 +87,7 @@
 ## We're disabling the Watchlist menu for now since the Watchlist doesn't work 
yet in multiwiki
 ## mode. Remove when http://jira.xwiki.org/jira/browse/XPWATCHLIST-4 is fixed.
 #if (!$xwiki.isVirtual())
-  #if ($xwiki.watchlist && $context.user != "XWiki.XWikiGuest" && 
!$doc.isNew())
+  #if ($xwiki.watchlist && $context.user != "XWiki.XWikiGuest" && 
!$doc.isNew() && $xwiki.exists("XWiki.WatchListManager"))
 <script type="text/javascript">
 //<![CDATA[
 function reloadActionMenu()
@@ -134,7 +134,7 @@
       #submenuitem("javascript:watchlist('removespace')" 
$msg.get("core.menu.watchlist.remove.space"))
     #end
     #submenuseparator()
-    #submenuitem($crtUserDoc.getURL("view", "xpage=watchlist") 
$msg.get("core.menu.watchlist.management"))
+    #submenuitem($xwiki.getURL("XWiki.WatchListManager", "view") 
$msg.get("core.menu.watchlist.management"))
     #xwikitopmenuentryend()
   #end
 #end

Deleted: 
xwiki-platform/web/trunk/standard/src/main/webapp/templates/watchlist.vm
===================================================================
--- xwiki-platform/web/trunk/standard/src/main/webapp/templates/watchlist.vm    
2008-02-27 15:20:08 UTC (rev 8034)
+++ xwiki-platform/web/trunk/standard/src/main/webapp/templates/watchlist.vm    
2008-02-27 15:28:32 UTC (rev 8035)
@@ -1,137 +0,0 @@
-###
-### User's watchlist
-###
-###
-#template("startpage.vm")
-<div class="minwidthb"></div>
-<div class="main layoutsubsection">
-<h5 class="heading-1">$msg.get("watchlist.title", 
[$xwiki.getUserName($doc.fullName, false)])</h5>
-#if($doc.getObject("XWikiUsers", 0))
-#set($i = $context.user.indexOf(":")+1)
-#set($isMyProfile = $context.user.substring($i) == $doc.fullName)
-#if ($isMyProfile || $hasAdmin)
-#if ($request.removedocument || $request.removespace)
-  #set ($el = "")
-  #if ($isMyProfile)
-    #if ($request.removedocument)
-      #set ($el = $request.removedocument)
-      #set ($ret = $xwiki.watchlist.removeDocument($request.removedocument))
-    #else
-      #set ($el = $request.removespace)
-      #set ($ret = $xwiki.watchlist.removeSpace($request.removespace))
-    #end
-  #else
-    #if ($request.removedocument)
-      #set ($el = $request.removedocument)
-      #set ($ret = $xwiki.watchlist.removeDocumentForUser($doc.fullName, 
$request.removedocument))
-    #else
-      #set ($el = $request.removespace)
-      #set ($ret = $xwiki.watchlist.removeSpaceForUser($doc.fullName, 
$request.removespace))
-    #end
-  #end
-  #if ($ret == true)
-    #info($msg.get("watchlist.delete.ok", [$el]))
-  #else
-    #error($msg.get("watchlist.delete.ko", [$el]))
-  #end
-#elseif ($request.removespace)
-#end
-    ##
-    ## Info
-    ##
-    <h2 class="heading-1-1">$msg.get("watchlist.staytuned")</h2>
-    ##
-    ## Notifications
-    ##
-    <div class="padded">
-        <div style="width:48%;float:left;">
-        <h5 class="heading-1-1-1">$msg.get("watchlist.staytuned.email")</h5>
-        $msg.get("watchlist.staytuned.email.info")<br/>
-        <br/>
-        <form action="$doc.getURL("save")" method="post">
-        $msg.get("watchlist.staytuned.email.frequency") :
-        #set ($iVal = $doc.display("interval", "view"))
-        #set ($sel = "selected=\"selected\"")
-            <select size="1" name="XWiki.WatchListClass_0_interval" 
id="XWiki.WatchListClass_0_interval">
-                <option label="never" value="0" #if ($iVal == "never") $sel 
#end>never</option>
-                <option label="hourly" value="1" #if ($iVal == "hourly") $sel 
#end>hourly</option>
-                <option label="daily" value="2" #if ($iVal == "daily") $sel 
#end>daily</option>
-                <option label="weekly" value="3" #if ($iVal == "weekly") $sel 
#end>weekly</option>
-                <option label="monthly" value="4" #if ($iVal == "monthly") 
$sel #end>monthly</option>
-            </select>
-            <input type="hidden" name="xredirect" id="xredirect" 
value="$doc.getURL("view", "xpage=watchlist")">
-            <input type="submit" 
value="$msg.get("watchlist.staytuned.email.frequency.save")" class="button"/>
-        </div>
-        </form>
-        <div style="width:48%;float:right;">
-        <h5 class="heading-1-1-1">$msg.get("watchlist.staytuned.rss")</h5>
-        <a target="_blank" href="$doc.getURL("view", "xpage=watchlistrss")" 
style="padding-left:16px;background:url($xwiki.getSkinFile("icons/black-rss-mini2.png"))
 left 
no-repeat;font-weight:bold;">$msg.get("watchlist.staytuned.rss.info")</a><br/>
-        <br/>
-        </div>
-        <div style="clear:both;"></div>
-    </div>
-    ##
-    ## Watched elements
-    ##
-    <div class="padded">
-        ##
-        ## Pages
-        ##
-        <h5 class="heading-1-1">$msg.get("watchlist.elements")</h5>
-        <h5 class="heading-1-1-1">$msg.get("watchlist.pages")</h5>
-        <table id="searchTable" class="grid sortable filterable doOddEven">
-        <tr class="sortHeader">
-            <th>$msg.get("watchlist.page")</th>
-            <th style="width:140px" 
class="selectFilter">$msg.get("watchlist.space")</th>
-            <th style="width:180px" class="unsortable 
noFilter">$msg.get("watchlist.actions")</th>
-        </tr>
-        #set ($wlist = $xwiki.watchlist.getWatchedDocuments())
-        #foreach($item in $wlist)
-            #if ($item != "")
-            <tr>
-                #set ($idoc = $xwiki.getDocument($item))
-                #if (!$idoc.isNew())
-                <td><a 
href="$idoc.getURL()">$idoc.getDisplayTitle().replaceAll("[^\\.,:]+:", 
"")</a></td>
-                <td>$idoc.web</td>
-                <td><a href="$doc.getURL("view", 
"xpage=watchlist&removedocument=${item}")" 
title="$msg.get("watchlist.delete.tooltip")">$msg.get("watchlist.delete")</a></td>
-                #else
-                  #if ($isMyProfile)
-                    #set ($ret = $xwiki.watchlist.removeDocument($item))
-                  #else
-                    #set ($ret = 
$xwiki.watchlist.removeDocumentForUser($doc.fullName, $item))
-                  #end
-                #end
-            </tr>
-            #end
-        #end
-        </table>
-        ##
-        ## Spaces
-        ##
-        <h5 class="heading-1-1-1">$msg.get("watchlist.spaces")</h5>
-        <table id="searchTable" class="grid sortable doOddEven">
-        <tr class="">
-            <th>$msg.get("watchlist.space")</th>
-            <th style="width:180px" class="unsortable 
noFilter">$msg.get("watchlist.actions")</th>
-        </tr>
-        #set ($wlist = $xwiki.watchlist.getWatchedSpaces())
-        #foreach($item in $wlist)
-            #if ($item != "")
-            <tr>
-                <td>$item.replaceAll("[^\\.,:]+:", "")</td>
-                <td><a href="$doc.getURL("view", 
"xpage=watchlist&removespace=${item}")" 
title="$msg.get("watchlist.delete.tooltip")">$msg.get("watchlist.delete")</a></td>
-            </tr>
-            #end
-        #end
-        </table>
-    </div>
-#else
-#xwikimessageboxstart($msg.get("error") $msg.get("notallowed"))
-#xwikimessageboxend()
-#end
-#else
-#xwikimessageboxstart($msg.get("watchlist") $msg.get("notauser"))
-#xwikimessageboxend()
-#end
-</div>
-#template("endpage.vm")
\ No newline at end of file

Added: 
xwiki-platform/xwiki-applications/trunk/watchlist/src/main/resources/XWiki/WatchListManager
===================================================================
--- 
xwiki-platform/xwiki-applications/trunk/watchlist/src/main/resources/XWiki/WatchListManager
                         (rev 0)
+++ 
xwiki-platform/xwiki-applications/trunk/watchlist/src/main/resources/XWiki/WatchListManager
 2008-02-27 15:28:32 UTC (rev 8035)
@@ -0,0 +1,193 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<xwikidoc>
+<web>XWiki</web>
+<name>WatchListManager</name>
+<language></language>
+<defaultLanguage>en</defaultLanguage>
+<translation>0</translation>
+<parent></parent>
+<creator>XWiki.Admin</creator>
+<author>XWiki.Admin</author>
+<customClass></customClass>
+<contentAuthor>XWiki.Admin</contentAuthor>
+<creationDate>1204121756000</creationDate>
+<date>1204122314000</date>
+<contentUpdateDate>1204122314000</contentUpdateDate>
+<version>4.1</version>
+<title></title>
+<template></template>
+<defaultTemplate></defaultTemplate>
+<validationScript></validationScript>
+<comment></comment>
+<minorEdit>false</minorEdit>
+<object>
+<class>
+<name>XWiki.TagClass</name>
+<customClass></customClass>
+<customMapping></customMapping>
+<defaultViewSheet></defaultViewSheet>
+<defaultEditSheet></defaultEditSheet>
+<defaultWeb></defaultWeb>
+<nameField></nameField>
+<validationScript></validationScript>
+<tags>
+<cache>0</cache>
+<displayType>input</displayType>
+<multiSelect>1</multiSelect>
+<name>tags</name>
+<number>1</number>
+<prettyName>Tags</prettyName>
+<relationalStorage>1</relationalStorage>
+<separator> </separator>
+<separators> ,|</separators>
+<size>30</size>
+<unmodifiable>0</unmodifiable>
+<values></values>
+<classType>com.xpn.xwiki.objects.classes.StaticListClass</classType>
+</tags>
+</class>
+<name>XWiki.WatchListManager</name>
+<number>0</number>
+<className>XWiki.TagClass</className>
+<property>
+<tags/>
+</property>
+</object>
+<content>###
+### User's watchlist
+###
+###
+#if ($request.user)
+  #set ($udoc = $xwiki.getDocument($request.user))
+  #if ($udoc.getObjects("XWiki.XWikiUsers").size() &gt; 0)
+    #set ($profileDoc = $udoc)
+    #set ($isMyProfile = false)
+  #else
+    #xwikimessageboxstart($msg.get("watchlist") $msg.get("notauser"))
+    #xwikimessageboxend()
+  #end
+#else
+  #set ($profileDoc = $crtUserDoc)
+  #set ($isMyProfile = true)
+#end
+#if ($profileDoc)
+&lt;h5 class="heading-1"&gt;$msg.get("watchlist.title", 
[$xwiki.getUserName($profileDoc.fullName, false)])&lt;/h5&gt;
+&lt;br/&gt;
+#if ($request.removedocument || $request.removespace)
+  #set ($el = "")
+  #if ($isMyProfile)
+    #if ($request.removedocument)
+      #set ($el = $request.removedocument)
+      #set ($ret = $xwiki.watchlist.removeDocument($request.removedocument))
+    #else
+      #set ($el = $request.removespace)
+      #set ($ret = $xwiki.watchlist.removeSpace($request.removespace))
+    #end
+  #else
+    #if ($request.removedocument)
+      #set ($el = $request.removedocument)
+      #set ($ret = 
$xwiki.watchlist.removeDocumentForUser($profileDoc.fullName, 
$request.removedocument))
+    #else
+      #set ($el = $request.removespace)
+      #set ($ret = $xwiki.watchlist.removeSpaceForUser($profileDoc.fullName, 
$request.removespace))
+    #end
+  #end
+  #if ($ret == true)
+    #info($msg.get("watchlist.delete.ok", [$el]))
+  #else
+    #error($msg.get("watchlist.delete.ko", [$el]))
+  #end
+#elseif ($request.removespace)
+#end
+    ##
+    ## Info
+    ##
+    &lt;h2 class="heading-1-1"&gt;$msg.get("watchlist.staytuned")&lt;/h2&gt;
+    ##
+    ## Notifications
+    ##
+    &lt;div class="padded"&gt;
+        &lt;div style="width:48%;float:left;"&gt;
+        &lt;h5 
class="heading-1-1-1"&gt;$msg.get("watchlist.staytuned.email")&lt;/h5&gt;
+        $msg.get("watchlist.staytuned.email.info")&lt;br/&gt;
+        &lt;br/&gt;
+        &lt;form action="$profileDoc.getURL("save")" method="post"&gt;
+        $msg.get("watchlist.staytuned.email.frequency") :
+        #set ($iVal = $profileDoc.display("interval", "view"))
+        #set ($sel = "selected=\"selected\"")
+            &lt;select size="1" name="XWiki.WatchListClass_0_interval" 
id="XWiki.WatchListClass_0_interval"&gt;
+                &lt;option label="never" value="0" #if ($iVal == "never") $sel 
#end&gt;never&lt;/option&gt;
+                &lt;option label="hourly" value="1" #if ($iVal == "hourly") 
$sel #end&gt;hourly&lt;/option&gt;
+                &lt;option label="daily" value="2" #if ($iVal == "daily") $sel 
#end&gt;daily&lt;/option&gt;
+                &lt;option label="weekly" value="3" #if ($iVal == "weekly") 
$sel #end&gt;weekly&lt;/option&gt;
+                &lt;option label="monthly" value="4" #if ($iVal == "monthly") 
$sel #end&gt;monthly&lt;/option&gt;
+            &lt;/select&gt;
+            &lt;input type="hidden" name="xredirect" id="xredirect" 
value="$doc.getURL("view")"&gt;
+            &lt;input type="submit" 
value="$msg.get("watchlist.staytuned.email.frequency.save")" class="button"/&gt;
+        &lt;/div&gt;
+        &lt;/form&gt;
+        &lt;div style="width:48%;float:right;"&gt;
+        &lt;h5 
class="heading-1-1-1"&gt;$msg.get("watchlist.staytuned.rss")&lt;/h5&gt;
+        &lt;a target="_blank" href="$profileDoc.getURL("view", 
"xpage=watchlistrss")" 
style="padding-left:16px;background:url($xwiki.getSkinFile("icons/black-rss-mini2.png"))
 left 
no-repeat;font-weight:bold;"&gt;$msg.get("watchlist.staytuned.rss.info")&lt;/a&gt;&lt;br/&gt;
+        &lt;br/&gt;
+        &lt;/div&gt;
+        &lt;div style="clear:both;"&gt;&lt;/div&gt;
+    &lt;/div&gt;
+    ##
+    ## Watched elements
+    ##
+    &lt;div class="padded"&gt;
+        ##
+        ## Pages
+        ##
+        &lt;h5 class="heading-1-1"&gt;$msg.get("watchlist.elements")&lt;/h5&gt;
+        &lt;h5 class="heading-1-1-1"&gt;$msg.get("watchlist.pages")&lt;/h5&gt;
+        &lt;table id="searchTable" class="grid sortable filterable 
doOddEven"&gt;
+        &lt;tr class="sortHeader"&gt;
+            &lt;th&gt;$msg.get("watchlist.page")&lt;/th&gt;
+            &lt;th style="width:140px" 
class="selectFilter"&gt;$msg.get("watchlist.space")&lt;/th&gt;
+            &lt;th style="width:180px" class="unsortable 
noFilter"&gt;$msg.get("watchlist.actions")&lt;/th&gt;
+        &lt;/tr&gt;
+        #set ($wlist = $xwiki.watchlist.getWatchedDocuments())
+        #foreach($item in $wlist)
+            #if ($item != "")
+            &lt;tr&gt;
+                #set ($idoc = $xwiki.getDocument($item))
+                #if (!$idoc.isNew())
+                &lt;td&gt;&lt;a 
href="$idoc.getURL()"&gt;$idoc.getDisplayTitle().replaceAll("[^\\.,:]+:", 
"")&lt;/a&gt;&lt;/td&gt;
+                &lt;td&gt;$idoc.web&lt;/td&gt;
+                &lt;td&gt;&lt;a href="$doc.getURL("view", 
"removedocument=${item}")" 
title="$msg.get("watchlist.delete.tooltip")"&gt;$msg.get("watchlist.delete")&lt;/a&gt;&lt;/td&gt;
+                #else
+                  #if ($isMyProfile)
+                    #set ($ret = $xwiki.watchlist.removeDocument($item))
+                  #else
+                    #set ($ret = 
$xwiki.watchlist.removeDocumentForUser($profileDoc.fullName, $item))
+                  #end
+                #end
+            &lt;/tr&gt;
+            #end
+        #end
+        &lt;/table&gt;
+        ##
+        ## Spaces
+        ##
+        &lt;h5 class="heading-1-1-1"&gt;$msg.get("watchlist.spaces")&lt;/h5&gt;
+        &lt;table id="searchTable" class="grid sortable doOddEven"&gt;
+        &lt;tr class=""&gt;
+            &lt;th&gt;$msg.get("watchlist.space")&lt;/th&gt;
+            &lt;th style="width:180px" class="unsortable 
noFilter"&gt;$msg.get("watchlist.actions")&lt;/th&gt;
+        &lt;/tr&gt;
+        #set ($wlist = $xwiki.watchlist.getWatchedSpaces())
+        #foreach($item in $wlist)
+            #if ($item != "")
+            &lt;tr&gt;
+                &lt;td&gt;$item.replaceAll("[^\\.,:]+:", "")&lt;/td&gt;
+                &lt;td&gt;&lt;a href="$doc.getURL("view", 
"removespace=${item}")" 
title="$msg.get("watchlist.delete.tooltip")"&gt;$msg.get("watchlist.delete")&lt;/a&gt;&lt;/td&gt;
+            &lt;/tr&gt;
+            #end
+        #end
+        &lt;/table&gt;
+    &lt;/div&gt;
+#end</content>
+</xwikidoc>

Modified: 
xwiki-platform/xwiki-plugins/trunk/watchlist/src/main/java/com/xpn/xwiki/plugin/watchlist/WatchListPlugin.java
===================================================================
--- 
xwiki-platform/xwiki-plugins/trunk/watchlist/src/main/java/com/xpn/xwiki/plugin/watchlist/WatchListPlugin.java
      2008-02-27 15:20:08 UTC (rev 8034)
+++ 
xwiki-platform/xwiki-plugins/trunk/watchlist/src/main/java/com/xpn/xwiki/plugin/watchlist/WatchListPlugin.java
      2008-02-27 15:28:32 UTC (rev 8035)
@@ -437,7 +437,9 @@
     public boolean removeWatchedElement(String user, String watchedElement,
         boolean isSpace, XWikiContext context) throws XWikiException
     {
-        watchedElement = context.getDatabase() + ":" + watchedElement;
+        if (!watchedElement.contains(":")) {
+            watchedElement = context.getDatabase() + ":" + watchedElement;
+        }
 
         if (!this.isWatched(user, watchedElement, context)) {
             return false;

Modified: 
xwiki-products/xwiki-enterprise/trunk/distribution-test/selenium-tests/src/test/it/com/xpn/xwiki/it/selenium/WatchListTest.java
===================================================================
--- 
xwiki-products/xwiki-enterprise/trunk/distribution-test/selenium-tests/src/test/it/com/xpn/xwiki/it/selenium/WatchListTest.java
     2008-02-27 15:20:08 UTC (rev 8034)
+++ 
xwiki-products/xwiki-enterprise/trunk/distribution-test/selenium-tests/src/test/it/com/xpn/xwiki/it/selenium/WatchListTest.java
     2008-02-27 15:28:32 UTC (rev 8035)
@@ -40,12 +40,17 @@
 
     public void testWatchThisPageAndWholeSpace()
     {
+
         loginAsAdmin();
 
         // Test if the email template exists
         open("/xwiki/bin/edit/XWiki/WatchListMessage?editor=object");
         assertTextPresent("XWiki.Mail[0]");
 
+        // Test if the watchlist manager exists
+        open("/xwiki/bin/view/XWiki/WatchListManager");
+        assertTextPresent("Stay tuned");
+
         // Watch Test.TestWatchThisPage
         open("/xwiki/bin/edit/Test/TestWatchThisPage?editor=wiki");
         setFieldValue("content", "TestWatchThisPage selenium");
@@ -58,8 +63,14 @@
         clickEditSaveAndView();
         getSelenium().click("link=Watch whole space");
 
+        // Verify that the watched page & space are present in the watchlist 
manager
         getSelenium().click("link=Manage your watchlist");
         assertTextPresent("TestWatchThisPage");
         assertTextPresent("TestWatchWholeSpace");
+
+        // XWIKI-2125
+        // Watchlist menu entry not present if XWiki.WatchListManager does not 
exists
+        
open("/xwiki/bin/delete/XWiki/WatchListManager?confirm=1&xredirect=/xwiki/bin/view/Main/");
+        assertTextNotPresent("Manage your watchlist");
     }
 }

Modified: 
xwiki-products/xwiki-enterprise/trunk/distribution-test/selenium-tests/src/test/it/com/xpn/xwiki/it/selenium/framework/AbstractXWikiTestCase.java
===================================================================
--- 
xwiki-products/xwiki-enterprise/trunk/distribution-test/selenium-tests/src/test/it/com/xpn/xwiki/it/selenium/framework/AbstractXWikiTestCase.java
   2008-02-27 15:20:08 UTC (rev 8034)
+++ 
xwiki-products/xwiki-enterprise/trunk/distribution-test/selenium-tests/src/test/it/com/xpn/xwiki/it/selenium/framework/AbstractXWikiTestCase.java
   2008-02-27 15:28:32 UTC (rev 8035)
@@ -118,6 +118,11 @@
         assertTrue("[" + text + "] isn't present.", 
getSelenium().isTextPresent(text));
     }
 
+    public void assertTextNotPresent(String text)
+    {
+        assertFalse("[" + text + "] is present.", 
getSelenium().isTextPresent(text));        
+    }
+
     public void assertElementPresent(String elementLocator)
     {
         assertTrue("[" + elementLocator + "] isn't present.", 
isElementPresent(elementLocator));

_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications

Reply via email to