Author: andreas
Date: Mon Jul 18 13:51:28 2005
New Revision: 219565
URL: http://svn.apache.org/viewcvs?rev=219565&view=rev
Log:
Fixed delete and restore usecases
Modified:
lenya/trunk/src/java/org/apache/lenya/cms/site/SiteUtil.java
lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/MoveSubsite.java
lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Restore.java
lenya/trunk/src/webapp/WEB-INF/cocoon-xconf.xsl
lenya/trunk/src/webapp/lenya/pubs/default/config/menus/generic.xsp
lenya/trunk/src/webapp/lenya/pubs/default/config/usecases.xconf
lenya/trunk/src/webapp/lenya/usecases/site/restore.jx
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/SiteUtil.java
URL:
http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/SiteUtil.java?rev=219565&r1=219564&r2=219565&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/SiteUtil.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/SiteUtil.java Mon Jul 18
13:51:28 2005
@@ -227,7 +227,7 @@
DocumentSet subSite = SiteUtil.getSubSite(manager, source);
Document[] docs = subSite.getDocuments();
for (int i = 0; i < docs.length; i++) {
- Document target = SiteUtil.getTarget(siteManager, docs[i],
targetArea, mode);
+ Document target = SiteUtil.getTransferedDocument(siteManager,
docs[i], targetArea, mode);
if (target != null) {
set.add(target);
}
@@ -246,7 +246,7 @@
return set;
}
- protected static Document getTarget(SiteManager siteManager, Document
source,
+ public static Document getTransferedDocument(SiteManager siteManager,
Document source,
String targetArea, int mode) throws SiteException,
DocumentException,
DocumentBuildException {
Document target = source.getIdentityMap().getAreaVersion(source,
targetArea);
Modified:
lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/MoveSubsite.java
URL:
http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/MoveSubsite.java?rev=219565&r1=219564&r2=219565&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/MoveSubsite.java
(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/MoveSubsite.java
Mon Jul 18 13:51:28 2005
@@ -20,11 +20,20 @@
import java.util.Arrays;
import java.util.List;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceSelector;
+import org.apache.lenya.cms.metadata.LenyaMetaData;
import org.apache.lenya.cms.publication.Document;
+import org.apache.lenya.cms.publication.DocumentBuildException;
import org.apache.lenya.cms.publication.DocumentIdentityMap;
import org.apache.lenya.cms.publication.DocumentManager;
import org.apache.lenya.cms.publication.Publication;
+import org.apache.lenya.cms.publication.util.DocumentHelper;
import org.apache.lenya.cms.publication.util.DocumentSet;
+import org.apache.lenya.cms.site.Node;
+import org.apache.lenya.cms.site.NodeFactory;
+import org.apache.lenya.cms.site.SiteException;
+import org.apache.lenya.cms.site.SiteManager;
import org.apache.lenya.cms.site.SiteUtil;
import org.apache.lenya.cms.usecase.DocumentUsecase;
import org.apache.lenya.cms.usecase.UsecaseException;
@@ -109,6 +118,7 @@
doc,
getTargetArea(),
SiteUtil.MODE_CHANGE_ID);
+ targets.addAll(getTargetDocsToCopy());
docs = targets.getDocuments();
for (int i = 0; i < docs.length; i++) {
nodes.addAll(Arrays.asList(docs[i].getRepositoryNodes()));
@@ -130,15 +140,32 @@
Document doc = getSourceDocument();
DocumentSet sources = SiteUtil.getSubSite(this.manager, doc);
+ DocumentIdentityMap map = getDocumentIdentityMap();
Document target = doc.getIdentityMap().getAreaVersion(doc,
getTargetArea());
target = SiteUtil.getAvailableDocument(this.manager, target);
+ DocumentSet docsToCopy = getTargetDocsToCopy();
+
DocumentManager documentManager = null;
try {
+
WorkflowUtil.invoke(this.manager, getLogger(), sources,
getEvent(), true);
documentManager = (DocumentManager)
this.manager.lookup(DocumentManager.ROLE);
+
+ SiteUtil.sortAscending(this.manager, docsToCopy);
+ Document[] targetDocs = docsToCopy.getDocuments();
+ for (int i = 0; i < targetDocs.length; i++) {
+ Document sourceDoc = map.getAreaVersion(targetDocs[i],
doc.getArea());
+ Document existingSourceDoc =
DocumentHelper.getExistingLanguageVersion(sourceDoc,
+ doc.getLanguage());
+ Document targetDoc = map.getAreaVersion(existingSourceDoc,
getTargetArea());
+ documentManager.copy(existingSourceDoc, targetDoc);
+ LenyaMetaData meta =
targetDoc.getMetaDataManager().getLenyaMetaData();
+ meta.setValue(LenyaMetaData.);
+ }
+
DocumentSet targets = SiteUtil.getTransferedSubSite(this.manager,
doc,
getTargetArea(),
@@ -155,4 +182,42 @@
}
+ /**
+ * @return All live documents that are required by the moved documents and
have to be copied.
+ * @throws ServiceException if an error occurs.
+ * @throws SiteException if an error occurs.
+ * @throws DocumentBuildException if an error occurs.
+ */
+ protected DocumentSet getTargetDocsToCopy() throws ServiceException,
SiteException,
+ DocumentBuildException {
+ Document doc = getSourceDocument();
+ DocumentIdentityMap map = getDocumentIdentityMap();
+ DocumentSet docsToCopy = new DocumentSet();
+ ServiceSelector selector = null;
+ SiteManager siteManager = null;
+ try {
+ selector = (ServiceSelector) this.manager.lookup(SiteManager.ROLE
+ "Selector");
+ siteManager = (SiteManager)
selector.select(doc.getPublication().getSiteManagerHint());
+
+ Node node = NodeFactory.getNode(doc);
+ Node[] requiredNodes = siteManager.getRequiredResources(map, node);
+ for (int i = 0; i < requiredNodes.length; i++) {
+ Document targetDoc =
map.get(getSourceDocument().getPublication(),
+ getTargetArea(),
+ requiredNodes[i].getDocumentId(),
+ doc.getLanguage());
+ if (!siteManager.containsInAnyLanguage(targetDoc)) {
+ docsToCopy.add(targetDoc);
+ }
+ }
+ } finally {
+ if (selector != null) {
+ if (siteManager != null) {
+ selector.release(siteManager);
+ }
+ this.manager.release(selector);
+ }
+ }
+ return docsToCopy;
+ }
}
Modified: lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Restore.java
URL:
http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Restore.java?rev=219565&r1=219564&r2=219565&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Restore.java
(original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/site/usecases/Restore.java Mon
Jul 18 13:51:28 2005
@@ -16,13 +16,34 @@
*/
package org.apache.lenya.cms.site.usecases;
-import org.apache.lenya.cms.usecase.DocumentUsecase;
+import org.apache.lenya.cms.publication.Publication;
/**
* Restore usecase handler.
- *
+ *
* @version $Id:$
*/
-public class Restore extends DocumentUsecase {
+public class Restore extends MoveSubsite {
+
+ /**
+ * @see org.apache.lenya.cms.site.usecases.MoveSubsite#getSourceAreas()
+ */
+ protected String[] getSourceAreas() {
+ return new String[] { Publication.TRASH_AREA, Publication.ARCHIVE_AREA
};
+ }
+
+ /**
+ * @see org.apache.lenya.cms.site.usecases.MoveSubsite#getTargetArea()
+ */
+ protected String getTargetArea() {
+ return Publication.AUTHORING_AREA;
+ }
+
+ /**
+ * @see org.apache.lenya.cms.site.usecases.MoveSubsite#getEvent()
+ */
+ protected String getEvent() {
+ return "restore";
+ }
}
Modified: lenya/trunk/src/webapp/WEB-INF/cocoon-xconf.xsl
URL:
http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/WEB-INF/cocoon-xconf.xsl?rev=219565&r1=219564&r2=219565&view=diff
==============================================================================
--- lenya/trunk/src/webapp/WEB-INF/cocoon-xconf.xsl (original)
+++ lenya/trunk/src/webapp/WEB-INF/cocoon-xconf.xsl Mon Jul 18 13:51:28 2005
@@ -435,7 +435,7 @@
<view template="site/archive"/>
</component-instance>
<component-instance name="site.restore" logger="lenya.site"
class="org.apache.lenya.cms.site.usecases.Restore">
- <view template="workflow/restore"/>
+ <view template="site/restore"/>
</component-instance>
<component-instance name="tab.acArchive" logger="lenya.site"
class="org.apache.lenya.cms.ac.usecases.AccessControl">
Modified: lenya/trunk/src/webapp/lenya/pubs/default/config/menus/generic.xsp
URL:
http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/pubs/default/config/menus/generic.xsp?rev=219565&r1=219564&r2=219565&view=diff
==============================================================================
--- lenya/trunk/src/webapp/lenya/pubs/default/config/menus/generic.xsp
(original)
+++ lenya/trunk/src/webapp/lenya/pubs/default/config/menus/generic.xsp Mon Jul
18 13:51:28 2005
@@ -90,29 +90,9 @@
<item uc:usecase="site.nudge" href="?direction=down"><i18n:text>Move
Down</i18n:text></item>
</block>
<block authoring="false">
-
- <xsp:logic>
- {
-
- if (isDocument &&
- !"/index".equals(<input:get-attribute
module="page-envelope" as="string" name="document-id"/>)) {
- <item wf:event="delete" uc:usecase="site.delete"
href="?"><i18n:text>Delete</i18n:text></item>
- <item wf:event="archive" uc:usecase="site.archive"
href="?"><i18n:text>Archive</i18n:text></item>
- }
- else {
- <item><i18n:text>Delete</i18n:text></item>
- <item><i18n:text>Archive</i18n:text></item>
- }
-
- if (isDocument && (area.equals(Publication.TRASH_AREA)
|| area.equals(Publication.ARCHIVE_AREA))) {
- <item wf:event="restore" uc:usecase="restore" uc:step="showscreen"
href="?">Restore</item>
- }
- else {
- <item><i18n:text>Restore</i18n:text></item>
- }
- }
- </xsp:logic>
-
+ <item uc:usecase="site.delete"
href="?"><i18n:text>Delete</i18n:text></item>
+ <item uc:usecase="site.archive"
href="?"><i18n:text>Archive</i18n:text></item>
+ <item uc:usecase="site.restore"
href="?"><i18n:text>Restore</i18n:text></item>
</block>
</menu>
Modified: lenya/trunk/src/webapp/lenya/pubs/default/config/usecases.xconf
URL:
http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/pubs/default/config/usecases.xconf?rev=219565&r1=219564&r2=219565&view=diff
==============================================================================
--- lenya/trunk/src/webapp/lenya/pubs/default/config/usecases.xconf (original)
+++ lenya/trunk/src/webapp/lenya/pubs/default/config/usecases.xconf Mon Jul 18
13:51:28 2005
@@ -47,13 +47,13 @@
class="org.apache.lenya.defaultpub.cms.usecases.Deactivate">
<view template="workflow/deactivate"/>
</component-instance>
-
+<!--
<component-instance name="default/site.delete"
logger="lenya.usecases.delete"
class="org.apache.lenya.defaultpub.cms.usecases.Delete">
<view template="site/delete"/>
</component-instance>
-
+-->
<component-instance name="default/webdav.put"
logger="lenya.publication"
class="org.apache.lenya.defaultpub.cms.usecases.webdav.Put">
Modified: lenya/trunk/src/webapp/lenya/usecases/site/restore.jx
URL:
http://svn.apache.org/viewcvs/lenya/trunk/src/webapp/lenya/usecases/site/restore.jx?rev=219565&r1=219564&r2=219565&view=diff
==============================================================================
--- lenya/trunk/src/webapp/lenya/usecases/site/restore.jx (original)
+++ lenya/trunk/src/webapp/lenya/usecases/site/restore.jx Mon Jul 18 13:51:28
2005
@@ -15,7 +15,7 @@
limitations under the License.
-->
<!-- $Id$ -->
-<page:page xmlns:c="http://apache.org/cocoon/templates/jx/1.0"
+<page:page xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
xmlns:page="http://apache.org/cocoon/lenya/cms-page/1.0" >
@@ -30,7 +30,7 @@
<i18n:text key="restore-doc"/>
<i18n:param>
<q>
- <jx:out value="${usecase.getParameter('documentid')}"/>
+ <jx:out value="${usecase.getParameter('document').getId()}"/>
</q>
</i18n:param>
</i18n:translate>
@@ -43,7 +43,8 @@
</jx:when>
<jx:otherwise>
<form method="get">
- <input type="hidden" name="lenya.usecase" value="restore"/>
+ <input type="hidden" name="lenya.continuation"
value="${continuation.id}"/>
+ <input type="hidden" name="lenya.usecase"
value="${request.getParameter('lenya.usecase')}"/>
<i18n:translate>
<i18n:text key="restore-doc?"/>
<i18n:param>
@@ -52,8 +53,9 @@
</strong>
</i18n:param>
</i18n:translate>
- <input type="submit" value="Restore"/> 
- <input type="button" onClick="location.href='${requesturi}';"
value="Cancel"/>
+ <input i18n:attr="value" type="submit" name="submit"
value="Restore"/>
+  
+ <input i18n:attr="value" type="submit" name="cancel"
value="Cancel"/>
</form>
</jx:otherwise>
</jx:choose>
|