r1483 - xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/assets

Jeremi Joslin jeremi at users.forge.objectweb.org
Tue Oct 31 16:19:35 CET 2006


Author: jeremi
Date: 2006-10-31 16:19:35 +0100 (Tue, 31 Oct 2006)
New Revision: 1483

Modified:
   xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/assets/AssetConstant.java
   xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/assets/AssetManagerPlugin.java
Log:
protect the published Asset Page

Modified: xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/assets/AssetConstant.java
===================================================================
--- xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/assets/AssetConstant.java	2006-10-31 12:54:36 UTC (rev 1482)
+++ xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/assets/AssetConstant.java	2006-10-31 15:19:35 UTC (rev 1483)
@@ -30,6 +30,7 @@
     public final static int ASSET_STATUS_EXTERNAL_LINK = 3;
     public final static int ASSET_STATUS_LICENCE = 4;
     public final static int ASSET_STATUS_SIZE = 5;
+    public final static int ASSET_STATUS_RIGHTS = 6;
 
     public final static String ASSET_TEMPORARY_SPACE = "AssetTemp";
 
@@ -70,6 +71,12 @@
     public static final String ASSET_ITEM_EDUCATIONAL_LEVEL = "educational_level";
     public static final String ASSET_ITEM_EDUCATIONAL_LEVEL_VALUES = "Preschool|Early Elementary|Upper Elementary|Middle School|High School|Higher Ed|Professional";
 
+    public static final String ASSET_ITEM_RIGHT = "rights";
+    public static final String ASSET_ITEM_RIGHT_PUBLIC = "Public";
+    public static final String ASSET_ITEM_RIGHT_MEMBERS = "Members";
+    public static final String ASSET_ITEM_RIGHT_PRIVATE = "Private";
+    public static final String ASSET_ITEM_RIGHT_VALUES = "Public|Members|Private";
+    
 
     /**
      *    Class ExternalAssetClass

Modified: xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/assets/AssetManagerPlugin.java
===================================================================
--- xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/assets/AssetManagerPlugin.java	2006-10-31 12:54:36 UTC (rev 1482)
+++ xwiki-apps/gelc/gelcv1/trunk/gelcplugins/src/main/java/org/gelc/xwiki/plugins/assets/AssetManagerPlugin.java	2006-10-31 15:19:35 UTC (rev 1483)
@@ -80,6 +80,8 @@
         asset.setTitle(assetName);
         asset.setCustomClass(Asset.class.getName());
         asset.setContent("#includeForm(\"XWiki.AssetTemplate\")");
+        XWikiDocument doc = asset.getDocument();
+        doc.setAuthor(context.getUser());
         protectAssetPage(asset, context);
         return asset;
     }
@@ -95,12 +97,47 @@
         if (isComplet(asset, context) && asset.hasAccessLevel("edit") && hasPublishingRight(collection, context)){
             String fullName = collection + "." + asset.getName();
             context.getWiki().renamePage(context.getWiki().getDocument(asset.getFullName(), context), fullName, context);
-            return (Asset) context.getWiki().getDocument(fullName, context).newDocument(context);
+            asset = (Asset) context.getWiki().getDocument(fullName, context).newDocument(context);
+            protectPublishedAsset(asset, context);
+            asset.save();
+            return asset;
         }
         else
             return null;
     }
 
+    private void protectPublishedAsset(Asset asset, XWikiContext context) throws XWikiException {
+        asset.removeObjects("XWiki.XWikiRights");
+
+        asset.use(ASSET_CLASS_FULLNAME);
+        String right = (String) asset.get(ASSET_ITEM_RIGHT);
+        
+        Object obj = asset.newObject("XWiki.XWikiRights");
+        asset.use(obj);
+        if (right.equals(ASSET_ITEM_RIGHT_PUBLIC)){
+            asset.set("users", "XWiki.XWikiGuest");
+            asset.set("groups", "XWiki.XWikiAllGroup");
+            asset.set("levels", "view");
+            asset.set("allow", 1);
+        }
+        else if (right.equals(ASSET_ITEM_RIGHT_MEMBERS)){
+            asset.set("groups", "XWiki.XWikiAllGroup");
+            asset.set("levels", "view");
+            asset.set("allow", 1);
+        }
+        else {
+            asset.set("users", context.getUser());
+            asset.set("levels", "view");
+            asset.set("allow", 1);            
+        }
+        obj = asset.newObject("XWiki.XWikiRights");
+        asset.use(obj);
+        asset.set("users", context.getUser());
+        asset.set("levels", "edit");
+        asset.set("allow", 1);
+
+    }
+
     public boolean hasPublishingRight(String collection, XWikiContext context) throws XWikiException {
         Document doc = context.getWiki().getDocument(collection, "WebHome", context).newDocument(context);
         return doc.hasAccessLevel("edit");
@@ -228,6 +265,8 @@
             return false;
         if (res.get(ASSET_STATUS_FRAMEWORK_ITEM_SELECTED).equals(0))
             return false;
+        if (res.get(ASSET_STATUS_RIGHTS).equals(0))
+            return false;
         return true;
     }
 
@@ -242,16 +281,28 @@
             res.put(ASSET_STATUS_ATTACHEMENT, 0);
         else
             res.put(ASSET_STATUS_ATTACHEMENT, 1);
+
         if (getExternalAsset(asset, context).size() == 0)
             res.put(ASSET_STATUS_EXTERNAL_LINK, 0);
         else
             res.put(ASSET_STATUS_EXTERNAL_LINK, 1);
+
         res.put(ASSET_STATUS_ADDTIONAL_FRAMEWORK_SELECTED, 0);
+
         if (getMasterFrameworkItem(asset, context) == null)
             res.put(ASSET_STATUS_FRAMEWORK_ITEM_SELECTED, 0);
         else
             res.put(ASSET_STATUS_FRAMEWORK_ITEM_SELECTED, 1);
+
         res.put(ASSET_STATUS_LICENCE, 0);
+
+        asset.use(ASSET_CLASS_FULLNAME);
+        String right = (String) asset.get(ASSET_ITEM_RIGHT);
+        if (right != null && right.length() > 0)
+            res.put(ASSET_STATUS_RIGHTS, 1);
+        else
+            res.put(ASSET_STATUS_RIGHTS, 0);
+
         return res;
     }
 
@@ -362,6 +413,7 @@
         needsUpdate |= bclass.addStaticListField(ASSET_ITEM_LEARNING_RESOURCE_TYPE, "Learnign resource Type", ASSET_ITEM_LEARNING_RESOURCE_TYPE_VALUES);
         needsUpdate |= bclass.addStaticListField(ASSET_ITEM_DIFICULTY, "Dificulty", ASSET_ITEM_DIFICULTY_VALUES);
         needsUpdate |= bclass.addStaticListField(ASSET_ITEM_EDUCATIONAL_LEVEL, "Educational Level", ASSET_ITEM_EDUCATIONAL_LEVEL_VALUES);
+        needsUpdate |= bclass.addStaticListField(ASSET_ITEM_RIGHT, "Right", ASSET_ITEM_RIGHT_VALUES);
 
 
 





More information about the Xwiki-notifications mailing list