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