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