You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by an...@apache.org on 2006/09/19 17:58:29 UTC

svn commit: r447892 - in /lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases: ChangeLabel.java ChangeVisibility.java

Author: andreas
Date: Tue Sep 19 08:58:28 2006
New Revision: 447892

URL: http://svn.apache.org/viewvc?view=rev&rev=447892
Log:
Invoke workflow event 'edit' when changing node visibility or label

Modified:
    lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeLabel.java
    lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeVisibility.java

Modified: lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeLabel.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeLabel.java?view=diff&rev=447892&r1=447891&r2=447892
==============================================================================
--- lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeLabel.java (original)
+++ lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeLabel.java Tue Sep 19 08:58:28 2006
@@ -17,6 +17,7 @@
 package org.apache.lenya.cms.site.usecases;
 
 import org.apache.avalon.framework.service.ServiceSelector;
+import org.apache.lenya.cms.metadata.dublincore.DublinCoreHelper;
 import org.apache.lenya.cms.publication.Document;
 import org.apache.lenya.cms.publication.DocumentException;
 import org.apache.lenya.cms.publication.Publication;
@@ -25,6 +26,7 @@
 import org.apache.lenya.cms.site.SiteStructure;
 import org.apache.lenya.cms.usecase.DocumentUsecase;
 import org.apache.lenya.cms.usecase.UsecaseException;
+import org.apache.lenya.cms.workflow.WorkflowUtil;
 
 /**
  * Change the label of a document.
@@ -36,6 +38,10 @@
     protected static final String LABEL = "label";
     protected static final String DOCUMENT_ID = "documentId";
 
+    protected String getEvent() {
+        return "edit";
+    }
+
     /**
      * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
      */
@@ -45,10 +51,14 @@
             return;
         }
 
+        Document doc = getSourceDocument();
         if (!getSourceDocument().getArea().equals(Publication.AUTHORING_AREA)) {
             addErrorMessage("This usecase can only be invoked in the authoring area!");
-        } else if (!getSourceDocument().exists()) {
-            addErrorMessage("This usecase can only be invoked on existing documents.");
+        }
+
+        if (!WorkflowUtil.canInvoke(this.manager, getSession(), getLogger(), doc, getEvent())) {
+            String title = DublinCoreHelper.getTitle(doc);
+            addErrorMessage("error-workflow-document", new String[] { getEvent(), title });
         }
     }
 
@@ -103,6 +113,8 @@
                 this.manager.release(selector);
             }
         }
+
+        WorkflowUtil.invoke(this.manager, getSession(), getLogger(), document, getEvent());
 
     }
 }

Modified: lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeVisibility.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeVisibility.java?view=diff&rev=447892&r1=447891&r2=447892
==============================================================================
--- lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeVisibility.java (original)
+++ lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/ChangeVisibility.java Tue Sep 19 08:58:28 2006
@@ -16,42 +16,60 @@
  */
 package org.apache.lenya.cms.site.usecases;
 
-import org.apache.avalon.framework.service.ServiceSelector;
+import org.apache.lenya.cms.metadata.dublincore.DublinCoreHelper;
 import org.apache.lenya.cms.publication.Document;
+import org.apache.lenya.cms.publication.Publication;
 import org.apache.lenya.cms.repository.Node;
-import org.apache.lenya.cms.site.SiteManager;
+import org.apache.lenya.cms.site.SiteNode;
 import org.apache.lenya.cms.site.SiteStructure;
 import org.apache.lenya.cms.usecase.DocumentUsecase;
 import org.apache.lenya.cms.usecase.UsecaseException;
+import org.apache.lenya.cms.workflow.WorkflowUtil;
 
 /**
  * Switch the navigation visibility of a document.
  */
 public class ChangeVisibility extends DocumentUsecase {
 
+    protected String getEvent() {
+        return "edit";
+    }
+
+    /**
+     * @see org.apache.lenya.cms.usecase.AbstractUsecase#doCheckPreconditions()
+     */
+    protected void doCheckPreconditions() throws Exception {
+        super.doCheckPreconditions();
+        if (hasErrors()) {
+            return;
+        }
+
+        Document doc = getSourceDocument();
+        if (!getSourceDocument().getArea().equals(Publication.AUTHORING_AREA)) {
+            addErrorMessage("This usecase can only be invoked in the authoring area!");
+        }
+
+        String[] languages = doc.getLanguages();
+        for (int i = 0; i < languages.length; i++) {
+            Document version = doc.getTranslation(languages[i]);
+            if (!WorkflowUtil.canInvoke(this.manager, getSession(), getLogger(), version,
+                    getEvent())) {
+                String title = DublinCoreHelper.getTitle(version);
+                addErrorMessage("error-workflow-document", new String[] { getEvent(), title });
+            }
+        }
+    }
+
     protected void doExecute() throws Exception {
-        
         super.doExecute();
-        
-        ServiceSelector selector = null;
-        SiteManager siteManager = null;
-        try {
-            Document document = getSourceDocument();
-            selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE + "Selector");
-            siteManager = (SiteManager) selector.select(document.getPublication()
-                    .getSiteManagerHint());
-
-            boolean visible = siteManager.isVisibleInNav(document);
-            siteManager.setVisibleInNav(document, !visible);
-        } catch (final Exception e) {
-            throw new RuntimeException(e);
-        } finally {
-            if (selector != null) {
-                if (siteManager != null) {
-                    selector.release(siteManager);
-                }
-                this.manager.release(selector);
-            }
+        Document doc = getSourceDocument();
+        SiteNode node = doc.getLink().getNode();
+        node.setVisible(!node.isVisible());
+
+        String[] languages = doc.getLanguages();
+        for (int i = 0; i < languages.length; i++) {
+            Document version = doc.getTranslation(languages[i]);
+            WorkflowUtil.invoke(this.manager, getSession(), getLogger(), version, getEvent());
         }
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org