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);
               }
           }
       }
  

Reply via email to