Author: ludovic
Date: 2007-12-29 14:34:57 +0100 (Sat, 29 Dec 2007)
New Revision: 6548

Modified:
   
xwiki-products/curriki/trunk/plugins/spacemanager/src/main/java/org/xwiki/plugin/spacemanager/api/Space.java
   
xwiki-products/curriki/trunk/plugins/spacemanager/src/main/java/org/xwiki/plugin/spacemanager/impl/SpaceManagerImpl.java
   
xwiki-products/curriki/trunk/plugins/spacemanager/src/test/java/org/xwiki/plugin/spacemanager/impl/SpaceImplTest.java
   
xwiki-products/curriki/trunk/plugins/spacemanager/src/test/java/org/xwiki/plugin/spacemanager/impl/SpaceManagerImplTest.java
Log:
CURRIKI-1287 Allow non admins to create groups

Modified: 
xwiki-products/curriki/trunk/plugins/spacemanager/src/main/java/org/xwiki/plugin/spacemanager/api/Space.java
===================================================================
--- 
xwiki-products/curriki/trunk/plugins/spacemanager/src/main/java/org/xwiki/plugin/spacemanager/api/Space.java
        2007-12-29 02:52:32 UTC (rev 6547)
+++ 
xwiki-products/curriki/trunk/plugins/spacemanager/src/main/java/org/xwiki/plugin/spacemanager/api/Space.java
        2007-12-29 13:34:57 UTC (rev 6548)
@@ -159,6 +159,12 @@
     public void save() throws XWikiException;
 
     /**
+     * Save the modified space
+     * @throws XWikiException
+     */
+    public void saveWithProgrammingRights() throws XWikiException;
+
+    /**
      * Update the space data from the request
      */
     public void updateSpaceFromRequest() throws SpaceManagerException;

Modified: 
xwiki-products/curriki/trunk/plugins/spacemanager/src/main/java/org/xwiki/plugin/spacemanager/impl/SpaceManagerImpl.java
===================================================================
--- 
xwiki-products/curriki/trunk/plugins/spacemanager/src/main/java/org/xwiki/plugin/spacemanager/impl/SpaceManagerImpl.java
    2007-12-29 02:52:32 UTC (rev 6547)
+++ 
xwiki-products/curriki/trunk/plugins/spacemanager/src/main/java/org/xwiki/plugin/spacemanager/impl/SpaceManagerImpl.java
    2007-12-29 13:34:57 UTC (rev 6548)
@@ -247,7 +247,7 @@
         // Make sure we set the type
         newspace.setType(getSpaceTypeName());
         try {
-            newspace.save();
+            newspace.saveWithProgrammingRights();
         } catch (XWikiException e) {
             throw new SpaceManagerException(e);
         }
@@ -286,7 +286,7 @@
         newspace.setDisplayTitle(spaceTitle);
         newspace.setCreator(context.getUser());
         try {
-            newspace.save();
+            newspace.saveWithProgrammingRights();
         } catch (XWikiException e) {
             throw new SpaceManagerException(e);
         }
@@ -342,7 +342,7 @@
         // we need to do it twice because data could have been overwritten by 
copyWikiWeb
                newspace.updateSpaceFromRequest();
         try {
-            newspace.save();
+            newspace.saveWithProgrammingRights();
         } catch (XWikiException e) {
             throw new SpaceManagerException(e);
         }
@@ -382,7 +382,7 @@
         if (!space.isNew()) {
             space.setType("deleted");
             try {
-                space.save();
+                space.saveWithProgrammingRights();
             } catch (XWikiException e) {
                 throw new SpaceManagerException(e);                
             }
@@ -411,7 +411,7 @@
         if (space.isDeleted()) {
              space.setType(getSpaceTypeName());
             try {
-                space.save();
+                space.saveWithProgrammingRights();
             } catch (XWikiException e) {
                 throw new SpaceManagerException(e);
             }
@@ -587,7 +587,7 @@
      */
     public void saveSpace(Space space, XWikiContext context) throws 
SpaceManagerException {
         try {
-            space.save();
+            space.saveWithProgrammingRights();
         } catch (XWikiException e) {
             throw new SpaceManagerException(e);
         }

Modified: 
xwiki-products/curriki/trunk/plugins/spacemanager/src/test/java/org/xwiki/plugin/spacemanager/impl/SpaceImplTest.java
===================================================================
--- 
xwiki-products/curriki/trunk/plugins/spacemanager/src/test/java/org/xwiki/plugin/spacemanager/impl/SpaceImplTest.java
       2007-12-29 02:52:32 UTC (rev 6547)
+++ 
xwiki-products/curriki/trunk/plugins/spacemanager/src/test/java/org/xwiki/plugin/spacemanager/impl/SpaceImplTest.java
       2007-12-29 13:34:57 UTC (rev 6548)
@@ -13,6 +13,7 @@
 import com.xpn.xwiki.XWikiConfig;
 import com.xpn.xwiki.XWikiContext;
 import com.xpn.xwiki.XWikiException;
+import com.xpn.xwiki.objects.BaseObject;
 import com.xpn.xwiki.doc.XWikiDocument;
 import com.xpn.xwiki.store.XWikiHibernateStore;
 import com.xpn.xwiki.store.XWikiHibernateVersioningStore;
@@ -97,9 +98,28 @@
         this.xwiki.setVersioningStore((XWikiVersioningStoreInterface) 
mockXWikiVersioningStore
             .proxy());
         this.context.setWiki(xwiki);
+        this.context.setDatabase("xwiki");
+        this.context.setMainXWiki("xwiki");
+        this.context.setUser("XWiki.Admin");
 
         this.spaceManager = new 
SpaceManagerImpl("spacemanager",SpaceManagerImpl.class.toString(),context);
         this.spaceManager.init(context);
+
+        XWikiDocument prefdoc = new XWikiDocument("XWiki", "XWikiPreferences");
+        BaseObject obj = new BaseObject();
+        obj.setName("XWiki.XWikiPreferences");
+        obj.setClassName("XWiki.XWikiGlobalRights");
+        obj.setStringValue("users", "XWiki.Admin");
+        obj.setStringValue("groups", "");
+        obj.setStringValue("levels", "admin,programming");
+        obj.setIntValue("allow", 1);
+        prefdoc.addObject("XWiki.XWikiGlobalRights", obj);
+        this.xwiki.saveDocument(prefdoc, context);
+
+        XWikiDocument doc = new XWikiDocument("Main", "WebHome");
+        doc.setAuthor("xwiki:XWiki.Admin");
+        context.setDoc(doc);
+
         this.space = (SpaceImpl) this.spaceManager.createSpace(displayTitle, 
context);
        }
        

Modified: 
xwiki-products/curriki/trunk/plugins/spacemanager/src/test/java/org/xwiki/plugin/spacemanager/impl/SpaceManagerImplTest.java
===================================================================
--- 
xwiki-products/curriki/trunk/plugins/spacemanager/src/test/java/org/xwiki/plugin/spacemanager/impl/SpaceManagerImplTest.java
        2007-12-29 02:52:32 UTC (rev 6547)
+++ 
xwiki-products/curriki/trunk/plugins/spacemanager/src/test/java/org/xwiki/plugin/spacemanager/impl/SpaceManagerImplTest.java
        2007-12-29 13:34:57 UTC (rev 6548)
@@ -12,6 +12,7 @@
 import com.xpn.xwiki.XWikiConfig;
 import com.xpn.xwiki.XWikiContext;
 import com.xpn.xwiki.XWikiException;
+import com.xpn.xwiki.objects.BaseObject;
 import com.xpn.xwiki.doc.XWikiDocument;
 import com.xpn.xwiki.store.XWikiHibernateVersioningStore;
 import com.xpn.xwiki.store.XWikiHibernateStore;
@@ -101,10 +102,30 @@
         this.xwiki.setStore((XWikiStoreInterface) mockXWikiStore.proxy());
         this.xwiki.setVersioningStore((XWikiVersioningStoreInterface) 
mockXWikiVersioningStore
             .proxy());
+        this.xwiki.setDatabase("xwiki");
+
         this.context.setWiki(xwiki);
+        this.context.setUser("XWiki.NotAdmin");
+        this.context.setDatabase("xwiki");
+        this.context.setMainXWiki("xwiki");
 
         this.spaceManager = new 
SpaceManagerImpl("spacemanager",SpaceManagerImpl.class.toString(),context);
-        this.spaceManager.init(context);       
+        this.spaceManager.init(context);
+
+        XWikiDocument prefdoc = new XWikiDocument("XWiki", "XWikiPreferences");
+        BaseObject obj = new BaseObject();
+        obj.setName("XWiki.XWikiPreferences");
+        obj.setClassName("XWiki.XWikiGlobalRights");
+        obj.setStringValue("users", "XWiki.Admin");
+        obj.setStringValue("groups", "");
+        obj.setStringValue("levels", "admin,programming");
+        obj.setIntValue("allow", 1);
+        prefdoc.addObject("XWiki.XWikiGlobalRights", obj);
+        this.xwiki.saveDocument(prefdoc, context);
+
+        XWikiDocument doc = new XWikiDocument("Main", "WebHome");
+        doc.setAuthor("xwiki:XWiki.Admin");
+        context.setDoc(doc);
     }
        
        /**

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

Reply via email to