Author: sshyrkov Date: Tue Oct 2 16:15:24 2007 New Revision: 18727 URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D18727&repname= =3Djahia Log: JAHIA-2340: N-Step - Copying a page, managed under N-Step workflow, does no= t copy all role assignments =
http://www.jahia.net/jira/browse/JAHIA-2340 Resolution: properly export and import new "quick correction" actions for t= he external workflow Modified: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/importexp= ort/ImportExportBaseService.java branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/importexp= ort/ImportHandler.java Modified: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/imp= ortexport/ImportExportBaseService.java URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP= -BRANCH/core/src/java/org/jahia/services/importexport/ImportExportBaseServi= ce.java&rev=3D18727&repname=3Djahia =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/importexp= ort/ImportExportBaseService.java (original) +++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/importexp= ort/ImportExportBaseService.java Tue Oct 2 16:15:24 2007 @@ -35,7 +35,6 @@ import org.jahia.data.applications.EntryPointInstance; import org.jahia.data.applications.WebAppContext; import org.jahia.data.containers.JahiaContainerDefinition; -import org.jahia.data.fields.JahiaApplicationField; import org.jahia.data.fields.JahiaFieldDefinition; import org.jahia.data.files.JahiaFileField; import org.jahia.data.templates.JahiaTemplatesPackage; @@ -1214,7 +1213,25 @@ attr.addAttribute(JAHIA_URI, "workflow= Role"+role, "jahia:workflowRole"+role, "CDATA", v.substring(1)); } } - } + role +=3D "_unlock"; + grp =3D service.getRoleGroup(obj, role, false); + if (grp !=3D null) { + Enumeration en =3D grp.members(); + String v =3D ""; + while (en.hasMoreElements()) { + Object curMember =3D en.nextElement(); + if (curMember instanceof JahiaUser) { + JahiaUser user =3D (JahiaUser) cur= Member; + v +=3D "|u:"+user.getUsername(); + } else if (curMember instanceof JahiaG= roup) { + JahiaGroup group =3D (JahiaGroup) = curMember; + v +=3D "|g:"+group.getGroupname(); + } + } + if (v.length()> 0) { + attr.addAttribute(JAHIA_URI, "workflow= Role"+role, "jahia:workflowRole"+role, "CDATA", v.substring(1)); + } + } } } return; case WorkflowService.INHERITED: @@ -1259,7 +1276,6 @@ context =3D Integer.toString(contentField.getID()); } = = - JahiaApplicationField theField =3D (JahiaApplicationFi= eld) contentField.getJahiaField(jParams.getEntryLoadRequest()); int appID =3D epi.getApplicationID(); = try { @@ -1810,7 +1826,7 @@ String first =3D st.nextToken(); if ("users".equals(first) || "groups".equals(first)) { if (st.hasMoreTokens()) { - String sec =3D st.nextToken(); + st.nextToken(); if (st.hasMoreTokens()) { String third =3D st.nextToken(); if (!st.hasMoreTokens()) { @@ -2362,19 +2378,6 @@ = = /** - * internal utility method to display the content of datamap - * @param data - * @return a string - */ - private String getDataMapToString(JobDataMap data){ - StringBuffer sb=3Dnew StringBuffer(); - for(Iterator it=3Ddata.keySet().iterator();it.hasNext();){ - String key=3D(String) it.next(); - sb.append(key).append(":").append(data.get(key)).append("\n"); - } - return sb.toString(); - } - /** * Export all modification on a site from a specified date, with a par= ticular profile. * * @param site the site to export Modified: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/imp= ortexport/ImportHandler.java URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP= -BRANCH/core/src/java/org/jahia/services/importexport/ImportHandler.java&re= v=3D18727&repname=3Djahia =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/importexp= ort/ImportHandler.java (original) +++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/services/importexp= ort/ImportHandler.java Tue Oct 2 16:15:24 2007 @@ -16,10 +16,9 @@ * limitations under the License. */package org.jahia.services.importexport; = -import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Level; import org.apache.log4j.Logger; -import org.apache.log4j.Priority; import org.jahia.bin.Jahia; import org.jahia.content.*; import org.jahia.data.applications.ApplicationBean; @@ -76,18 +75,13 @@ import org.jahia.services.esi.ContentInfo; import org.jahia.services.esi.EsiService; import org.jahia.utils.LanguageCodeConverters; -import org.jahia.utils.JahiaTools; import org.jahia.engines.EngineMessage; -import org.springframework.transaction.support.TransactionTemplate; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.Locator; import org.xml.sax.helpers.DefaultHandler; = import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.URL; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -131,7 +125,6 @@ protected int count =3D 0; private Locator locator; = - private TransactionTemplate transactionTemplate =3D null; public static final String JAHIA_LINK =3D "jahiaLink"; = public ImportHandler(ContentObject root, ProcessingContext jParams, St= ring language, ExtendedImportResult result) { @@ -642,7 +635,6 @@ = if (lastObject instanceof ContentPage) { lastPage =3D (ContentPage) lastObject; - JahiaEvent esi =3D new JahiaEvent(this, jParams, lastObject); try { ServicesRegistry.getInstance().getEsiService().pageRequire= sInvalidation(lastPage.getID(),new ContentInfo( EsiService.PAGE,lastPage.getID(),"Imported")); @@ -1064,7 +1056,6 @@ = // Field or containerlist inside a container or page if (isContainerList) { - String containerName =3D localName.substring(0, localName.leng= th() - 4); ContentContainerList cc =3D null; JahiaContainerList containerList =3D null; if (parent instanceof ContentContainer) { @@ -1140,7 +1131,7 @@ } object =3D cf; } else { - if (logger.isEnabledFor(Priority.WARN)) { + if (logger.isEnabledFor(Level.WARN)) { String tplName =3D null; String ctnName =3D null; = @@ -1177,7 +1168,6 @@ = protected void update(ContentObject object, String localName, Attribut= es atts) throws JahiaException { int pageID =3D 0; - int containerID =3D 0; if (object instanceof ContentField) { ContentField cf =3D (ContentField) object; ArrayList locales =3D new ArrayList(); @@ -1194,17 +1184,10 @@ updateField(jahiaField, fieldType, value, atts, -1); ServicesRegistry.getInstance ().getJahiaFieldService ().sa= veField (jahiaField, object.getAclID (), jParams); } - containerID =3D cf.getContainerID(); pageID =3D cf.getPageID(); } else if (object instanceof ContentPage) { ContentPage cp =3D (ContentPage) object; pageID =3D updatePage(cp, localName, atts); - - ContentField cf =3D (ContentField) cp.getParent(EntryLoadReque= st.STAGED); - - if (cf !=3D null) { - containerID =3D cf.getContainerID(); - } } = if (object !=3D null) { @@ -1642,6 +1625,35 @@ } } } + role +=3D "_unlock"; + v =3D atts.getValue(ImportExportService.JAHIA_URI, "wo= rkflowRole"+role); + if (v !=3D null ) { = + JahiaGroup g =3D service.getRoleGroup(object, role= , true); + StringTokenizer st =3D new StringTokenizer(v, "|"); + while (st.hasMoreTokens()) { + String principal =3D st.nextToken(); + String userName =3D principal.substring(2); + Principal p =3D null; + if (principal.charAt(0) =3D=3D 'u') { + try { + p =3D ServicesRegistry.getInstance().g= etJahiaSiteUserManagerService().getMember(site.getID(), userName); + if (p =3D=3D null) { + p =3D ServicesRegistry.getInstance= ().getJahiaUserManagerService().lookupUser(userName); + } + } catch (JahiaException e) { + } + } else { + p =3D ServicesRegistry.getInstance().getJa= hiaGroupManagerService().lookupGroup(site.getID(), userName); + if (p =3D=3D null) { + p =3D ServicesRegistry.getInstance().g= etJahiaGroupManagerService().lookupGroup(userName); + + } + } + if (p !=3D null ) { + g.addMember(p); + } + } + } } } else if ("inherited".equals(wf)) { service.setWorkflowMode(object, WorkflowService.INHERITED,= null,null,jParams); @@ -1687,7 +1699,6 @@ JahiaSaveVersion saveVersion =3D new JahiaSaveVersion(false, f= alse); for (Iterator iterator =3D md.iterator(); iterator.hasNext();)= { String metadataName =3D (String) iterator.next(); - JahiaFieldDefinition def =3D (JahiaFieldDefinition) fieldD= efs.get(metadataName); String value; if (CoreMetadataConstant.CREATION_DATE.equals(metadataName= )) { value =3D attr.getValue(ImportExportBaseService.JCR_UR= I, "created"); @@ -1845,31 +1856,6 @@ } } = - private void loadPage(int pageID) throws JahiaException { - GetMethod method =3D null; - /// Try again after page load - try { - logger.debug("Cannot find definitions, try to initialize page"= ); - URL url =3D new URL(Jahia.getSettings().getLocalAccessUri() + = jParams.composePageUrl(pageID)); - - InputStream is =3D JahiaTools.makeJahiaRequest(url, jParams.ge= tUser(), null, null, 5); - is.close(); - } catch (IOException e) { - if (e.getMessage().startsWith("Unsupported HTTP status code [5= 00]")) { - String defname =3D ContentPage.getPage(pageID).getPageTemp= late(elr).getName(); - final EngineMessage msg =3D new EngineMessage("org.jahia.e= ngines.importexport.import.templateCompilation", new Object[] {defname}); - result.setStatus(TreeOperationResult.PARTIAL_OPERATION_STA= TUS); - result.appendError(new NodeImportResult(new ContentPageKey= (pageID), language, msg, null,null,null,null,e)); - } else { - logger.error("Cant make a local request at "+Jahia.getSett= ings().getLocalAccessUri()+", check your localAccessUri parameter ("+e.getM= essage()+")"); - } - } - finally { - if (method !=3D null) - method.releaseConnection(); - } - } - private int getLineNumber() { if (locator !=3D null) { return locator.getLineNumber(); _______________________________________________ cvs_list mailing list [email protected] http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list
