tdraier 2005/10/19 18:13:52 CEST
Modified files:
core/src/java/org/jahia/engines/containerlistproperties
ContainerListProperties_Engine.java
core/src/java/org/jahia/services/importexport
ImportExportBaseService.java
ImportHandler.java
Log:
import/export field rights
Revision Changes Path
1.20 +4 -4
jahia/core/src/java/org/jahia/engines/containerlistproperties/ContainerListProperties_Engine.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/engines/containerlistproperties/ContainerListProperties_Engine.java.diff?r1=1.19&r2=1.20&f=h
1.35 +74 -41
jahia/core/src/java/org/jahia/services/importexport/ImportExportBaseService.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/importexport/ImportExportBaseService.java.diff?r1=1.34&r2=1.35&f=h
1.29 +54 -31
jahia/core/src/java/org/jahia/services/importexport/ImportHandler.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/importexport/ImportHandler.java.diff?r1=1.28&r2=1.29&f=h
Index: ContainerListProperties_Engine.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/engines/containerlistproperties/ContainerListProperties_Engine.java,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
--- ContainerListProperties_Engine.java 12 Oct 2005 16:25:47 -0000
1.19
+++ ContainerListProperties_Engine.java 19 Oct 2005 16:13:51 -0000
1.20
@@ -14,10 +14,7 @@
import org.apache.regexp.RE;
import org.apache.regexp.RESyntaxException;
-import org.jahia.content.ContentContainerListKey;
-import org.jahia.content.ContentContainerListsXRefManager;
-import org.jahia.content.ContentDefinition;
-import org.jahia.content.ObjectKey;
+import org.jahia.content.*;
import org.jahia.data.JahiaData;
import org.jahia.data.containers.JahiaContainer;
import org.jahia.data.containers.JahiaContainerDefinition;
@@ -52,6 +49,7 @@
import org.jahia.services.lock.LockService;
import org.jahia.services.pages.ContentPage;
import org.jahia.services.usermanager.JahiaUser;
+import org.jahia.services.workflow.WorkflowEvent;
import org.jahia.views.engines.contentdefinition.ContentDefinitionEngine;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionStatus;
@@ -554,6 +552,8 @@
engineMap, theContainerList.getAclID());
}
}
+ WorkflowEvent objectChangedEvent = new
WorkflowEvent (this, theContainerList.getContentContainerList(), user,
ContentObject.SHARED_LANGUAGE, false);
+
ServicesRegistry.getInstance().getJahiaEventService().fireObjectChanged(objectChangedEvent);
} catch (Throwable e) {
throw new RuntimeException(e);
}
Index: ImportExportBaseService.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/importexport/ImportExportBaseService.java,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -r1.34 -r1.35
--- ImportExportBaseService.java 19 Oct 2005 09:47:20 -0000 1.34
+++ ImportExportBaseService.java 19 Oct 2005 16:13:52 -0000 1.35
@@ -20,6 +20,8 @@
import org.jahia.services.JahiaService;
import org.jahia.services.acl.JahiaACLEntry;
import org.jahia.services.acl.JahiaBaseACL;
+import org.jahia.services.acl.ACLNotFoundException;
+import org.jahia.services.acl.JahiaACLException;
import org.jahia.services.containers.ContentContainer;
import org.jahia.services.containers.ContentContainerList;
import org.jahia.services.fields.ContentField;
@@ -285,6 +287,31 @@
attr.addAttribute(JCR_URI, "primaryType",
"jcr:primaryType", "CDATA", jParams.getSiteKey()+"nt:"+pt+"List");
}
elementName = jcd.getName()+"List";
+
+ Properties p = cc.getJahiaContainerList(jParams,
toLoadRequest).getProperties();
+ Enumeration en = p.keys();
+ while (en.hasMoreElements()) {
+ String s = (String) en.nextElement();
+ if (s.startsWith("view_field_acl_")) {
+ String prop = p.getProperty(s);
+ if (prop != null) {
+ try {
+ int aclID = Integer.parseInt(prop);
+ JahiaBaseACL theACL = null;
+ try {
+ theACL = new JahiaBaseACL (aclID);
+ exportAcl(theACL, s, attr, top);
+ }
+ catch (ACLNotFoundException ex) {
+ }
+ catch (JahiaException ex) {
+ }
+ } catch ( Throwable t ){
+ }
+ }
+ }
+ }
+
attr.addAttribute(JCR_URI, "uuid", "jcr:uuid", "CDATA",
getUuid(object));
} else if (object instanceof ContentContainer) {
ContentContainer cc = (ContentContainer) object;
@@ -340,48 +367,10 @@
attr.addAttribute(JAHIA_URI, "diff", "jahia:diff",
"CDATA", changedStatus);
}
- String perms = "";
JahiaBaseACL acl = object.getACL();
- Vector users = acl.getUsernameList(null);
- JahiaUserManagerService userManager =
ServicesRegistry.getInstance().getJahiaUserManagerService();
- for (Iterator iterator = users.iterator();
iterator.hasNext();) {
- String username = (String) iterator.next();
- JahiaUser user = userManager.lookupUser(username);
- if (user != null) {
- JahiaAclEntry ace = acl.getUserEntry(user);
- if (ace != null) {
- perms += "|u:" + user.getUserKey() + ":" +
((ace.getPermission(JahiaBaseACL.READ_RIGHTS) ==
JahiaACLEntry.ACL_YES)?"r":"-") +
-
((ace.getPermission(JahiaBaseACL.WRITE_RIGHTS) ==
JahiaACLEntry.ACL_YES)?"w":"-") +
-
((ace.getPermission(JahiaBaseACL.ADMIN_RIGHTS) ==
JahiaACLEntry.ACL_YES)?"a":"-");
- } else if (top) {
- perms += "|u:" + user.getUserKey() + ":" +
((acl.getPermission (user, JahiaBaseACL.READ_RIGHTS))?"r":"-") +
- ((acl.getPermission (user,
JahiaBaseACL.WRITE_RIGHTS))?"w":"-") +
- ((acl.getPermission (user,
JahiaBaseACL.ADMIN_RIGHTS))?"a":"-");
- }
- }
- }
- Vector groups = acl.getGroupnameListNoAdmin(null);
- JahiaGroupManagerService groupManager =
ServicesRegistry.getInstance().getJahiaGroupManagerService();
- for (Iterator iterator = groups.iterator();
iterator.hasNext();) {
- String groupname = (String) iterator.next();
- JahiaGroup group = groupManager.lookupGroup(groupname);
- if (group != null) {
- JahiaAclEntry ace = acl.getGroupEntry(group);
- if (ace != null) {
- perms += "|g:" + group.getGroupKey() + ":" +
((ace.getPermission(JahiaBaseACL.READ_RIGHTS) ==
JahiaACLEntry.ACL_YES)?"r":"-") +
-
((ace.getPermission(JahiaBaseACL.WRITE_RIGHTS) ==
JahiaACLEntry.ACL_YES)?"w":"-") +
-
((ace.getPermission(JahiaBaseACL.ADMIN_RIGHTS) ==
JahiaACLEntry.ACL_YES)?"a":"-");
- } else if (top) {
- perms += "|g:" + group.getGroupKey() + ":" +
((acl.getPermission (group, JahiaBaseACL.READ_RIGHTS))?"r":"-") +
- ((acl.getPermission (group,
JahiaBaseACL.WRITE_RIGHTS))?"w":"-") +
- ((acl.getPermission (group,
JahiaBaseACL.ADMIN_RIGHTS))?"a":"-");
- }
- }
- }
- if (perms.length() > 0) {
- perms = perms.substring(1);
- attr.addAttribute(JAHIA_URI, "acl", "jahia:acl",
"CDATA", perms);
- }
+ String attrName = "acl";
+
+ exportAcl(acl, "acl", attr, top);
if (link) {
attr.addAttribute(JAHIA_URI, "linkkey", "jahia:linkkey",
"CDATA", object.getObjectKey().toString());
}
@@ -422,6 +411,50 @@
}
}
+ private void exportAcl(JahiaBaseACL acl, String attrName, AttributesImpl
attr, boolean top) throws JahiaACLException {
+ String perms = "";
+ Vector users = acl.getUsernameList(null);
+ JahiaUserManagerService userManager =
ServicesRegistry.getInstance().getJahiaUserManagerService();
+ for (Iterator iterator = users.iterator(); iterator.hasNext();) {
+ String username = (String) iterator.next();
+ JahiaUser user = userManager.lookupUser(username);
+ if (user != null) {
+ JahiaAclEntry ace = acl.getUserEntry(user);
+ if (ace != null) {
+ perms += "|u:" + user.getUserKey() + ":" +
((ace.getPermission(JahiaBaseACL.READ_RIGHTS) ==
JahiaACLEntry.ACL_YES)?"r":"-") +
+ ((ace.getPermission(JahiaBaseACL.WRITE_RIGHTS)
== JahiaACLEntry.ACL_YES)?"w":"-") +
+ ((ace.getPermission(JahiaBaseACL.ADMIN_RIGHTS)
== JahiaACLEntry.ACL_YES)?"a":"-");
+ } else if (top) {
+ perms += "|u:" + user.getUserKey() + ":" +
((acl.getPermission (user, JahiaBaseACL.READ_RIGHTS))?"r":"-") +
+ ((acl.getPermission (user,
JahiaBaseACL.WRITE_RIGHTS))?"w":"-") +
+ ((acl.getPermission (user,
JahiaBaseACL.ADMIN_RIGHTS))?"a":"-");
+ }
+ }
+ }
+ Vector groups = acl.getGroupnameListNoAdmin(null);
+ JahiaGroupManagerService groupManager =
ServicesRegistry.getInstance().getJahiaGroupManagerService();
+ for (Iterator iterator = groups.iterator(); iterator.hasNext();) {
+ String groupname = (String) iterator.next();
+ JahiaGroup group = groupManager.lookupGroup(groupname);
+ if (group != null) {
+ JahiaAclEntry ace = acl.getGroupEntry(group);
+ if (ace != null) {
+ perms += "|g:" + group.getGroupKey() + ":" +
((ace.getPermission(JahiaBaseACL.READ_RIGHTS) ==
JahiaACLEntry.ACL_YES)?"r":"-") +
+ ((ace.getPermission(JahiaBaseACL.WRITE_RIGHTS)
== JahiaACLEntry.ACL_YES)?"w":"-") +
+ ((ace.getPermission(JahiaBaseACL.ADMIN_RIGHTS)
== JahiaACLEntry.ACL_YES)?"a":"-");
+ } else if (top) {
+ perms += "|g:" + group.getGroupKey() + ":" +
((acl.getPermission (group, JahiaBaseACL.READ_RIGHTS))?"r":"-") +
+ ((acl.getPermission (group,
JahiaBaseACL.WRITE_RIGHTS))?"w":"-") +
+ ((acl.getPermission (group,
JahiaBaseACL.ADMIN_RIGHTS))?"a":"-");
+ }
+ }
+ }
+ if (perms.length() > 0) {
+ perms = perms.substring(1);
+ attr.addAttribute(JAHIA_URI, attrName, "jahia:"+attrName,
"CDATA", perms);
+ }
+ }
+
private String getFieldValue(ContentField contentField, Set files,
ProcessingContext jParams, ContentObjectEntryState entryState, AttributesImpl
attr) throws JahiaException {
String value = contentField.getValue(jParams, entryState);
if ("<empty>".equals(value) || value == null || "".equals(value)) {
Index: ImportHandler.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/importexport/ImportHandler.java,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- ImportHandler.java 18 Oct 2005 16:09:50 -0000 1.28
+++ ImportHandler.java 19 Oct 2005 16:13:52 -0000 1.29
@@ -558,10 +558,10 @@
if (cc == null) {
// ContainerList definition
- JahiaContainerList newList = new JahiaContainerList (0,
containerID, pageID, ((JahiaContainerDefinition)def).getID(), 0);
+ containerList = new JahiaContainerList (0, containerID,
pageID, ((JahiaContainerDefinition)def).getID(), 0);
ServicesRegistry.getInstance ().getJahiaContainersService ().
- saveContainerListInfo (newList,
parent.getAclID(),jParams);
- cc = newList.getContentContainerList();
+ saveContainerListInfo (containerList,
parent.getAclID(),jParams);
+ cc = containerList.getContentContainerList();
}
object = cc;
} else if (isField) {
@@ -656,39 +656,62 @@
}
}
- protected void setAcl(ContentObject object, Attributes atts) {
+ protected void setAcl(ContentObject object, Attributes atts) throws
JahiaException {
String acl = atts.getValue(ImportExportBaseService.JAHIA_URI, "acl");
if (acl != null) {
JahiaBaseACL jAcl = object.getACL();
- StringTokenizer st = new StringTokenizer(acl, "|");
- while (st.hasMoreTokens()) {
- String ace = st.nextToken();
- int colonIndex = ace.lastIndexOf(":");
- String perm = ace.substring(colonIndex+1);
-
- JahiaAclEntry permissions = new JahiaAclEntry ();
- permissions.setPermission (JahiaBaseACL.READ_RIGHTS,
perm.charAt (0) == 'r' ?
- JahiaACLEntry.ACL_YES :
- JahiaACLEntry.ACL_NO);
- permissions.setPermission (JahiaBaseACL.WRITE_RIGHTS,
perm.charAt (1) == 'w' ?
- JahiaACLEntry.ACL_YES :
- JahiaACLEntry.ACL_NO);
- permissions.setPermission (JahiaBaseACL.ADMIN_RIGHTS,
perm.charAt (2) == 'a' ?
- JahiaACLEntry.ACL_YES :
- JahiaACLEntry.ACL_NO);
+ fillAcl(jAcl, acl);
+ }
- String principal = ace.substring(0, colonIndex);
- try {
- if (principal.charAt(0) == 'u') {
- JahiaUser user =
ServicesRegistry.getInstance().getJahiaUserManagerService().lookupUser(principal.substring(2));
- jAcl.setUserEntry (user, permissions);
- } else {
- JahiaGroup group =
ServicesRegistry.getInstance().getJahiaGroupManagerService().lookupGroup(principal.substring(2));
- jAcl.setGroupEntry (group, permissions);
- }
- } catch (JahiaACLException jae) {
- logger.error ("Cannot set user or group ACL entry !!",
jae);
+ if (object instanceof ContentContainerList) {
+ boolean modified = false;
+ JahiaContainerList containerList =
((ContentContainerList)object).getJahiaContainerList(jParams, elr);
+ for(int i = 0; i<atts.getLength(); i++) {
+ if (
ImportExportBaseService.JAHIA_URI.equals(atts.getURI(i)) &&
atts.getLocalName(i).startsWith("view_field_acl_") ) {
+ JahiaBaseACL newAcl = null;
+ newAcl = new JahiaBaseACL ();
+ newAcl.create (containerList.getAclID ());
+ containerList.setProperty (atts.getLocalName(i),
String.valueOf (newAcl.getID ()));
+ fillAcl(newAcl, atts.getValue(i));
+ modified = true;
+ }
+ }
+ if (modified) {
+ ServicesRegistry.getInstance ().getJahiaContainersService ().
+ saveContainerListInfo (containerList,
object.getParent(null).getAclID(),jParams);
+ }
+ }
+ }
+
+ private void fillAcl(JahiaBaseACL jAcl, String acl) {
+ StringTokenizer st = new StringTokenizer(acl, "|");
+ while (st.hasMoreTokens()) {
+ String ace = st.nextToken();
+ int colonIndex = ace.lastIndexOf(":");
+ String perm = ace.substring(colonIndex+1);
+
+ JahiaAclEntry permissions = new JahiaAclEntry ();
+ permissions.setPermission (JahiaBaseACL.READ_RIGHTS, perm.charAt
(0) == 'r' ?
+ JahiaACLEntry.ACL_YES :
+ JahiaACLEntry.ACL_NO);
+ permissions.setPermission (JahiaBaseACL.WRITE_RIGHTS,
perm.charAt (1) == 'w' ?
+ JahiaACLEntry.ACL_YES :
+ JahiaACLEntry.ACL_NO);
+ permissions.setPermission (JahiaBaseACL.ADMIN_RIGHTS,
perm.charAt (2) == 'a' ?
+ JahiaACLEntry.ACL_YES :
+ JahiaACLEntry.ACL_NO);
+
+ String principal = ace.substring(0, colonIndex);
+ try {
+ if (principal.charAt(0) == 'u') {
+ JahiaUser user =
ServicesRegistry.getInstance().getJahiaUserManagerService().lookupUser(principal.substring(2));
+ jAcl.setUserEntry (user, permissions);
+ } else {
+ JahiaGroup group =
ServicesRegistry.getInstance().getJahiaGroupManagerService().lookupGroup(principal.substring(2));
+ jAcl.setGroupEntry (group, permissions);
}
+ } catch (JahiaACLException jae) {
+ logger.error ("Cannot set user or group ACL entry !!", jae);
}
}
}