svn commit: r580365 - in /lenya/trunk/src/modules-core/sitemanagement: java/src/org/apache/lenya/cms/site/usecases/Paste.java resources/i18n/cmsui.xml resources/i18n/cmsui_de.xml

[email protected]
Newsgroups gmane.comp.cms.lenya.cvs
Message-ID <[email protected]>
Author: andreas
Date: Fri Sep 28 07:16:05 2007
New Revision: 580365

URL: http://svn.apache.org/viewvc?rev=580365&view=rev
Log:
Don't allow to paste a cut doc in its own subtree. This fixes bug 43459.

Modified:
    lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Paste.java
    lenya/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui.xml
    lenya/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui_de.xml

Modified: lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Paste.java
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Paste.java?rev=580365&r1=580364&r2=580365&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Paste.java (original)
+++ lenya/trunk/src/modules-core/sitemanagement/java/src/org/apache/lenya/cms/site/usecases/Paste.java Fri Sep 28 07:16:05 2007
@@ -34,6 +34,7 @@
 import org.apache.lenya.cms.repository.Node;
 import org.apache.lenya.cms.site.NodeSet;
 import org.apache.lenya.cms.site.SiteException;
+import org.apache.lenya.cms.site.SiteNode;
 import org.apache.lenya.cms.site.SiteUtil;
 import org.apache.lenya.cms.usecase.AbstractUsecase;
 import org.apache.lenya.cms.usecase.UsecaseException;
@@ -64,6 +65,25 @@
         Clipboard clipboard = new ClipboardHelper().getClipboard(getContext());
         if (clipboard == null) {
             addErrorMessage("clipboard-empty");
+        }
+        else if (clipboard.getMethod() == Clipboard.METHOD_CUT) {
+            Document doc = getSourceDocument();
+            Document clippedDoc = clipboard.getDocument(getDocumentFactory(), doc.getPublication());
+            String uuid = clippedDoc.getUUID();
+            if (willPasteInOwnSubtree(doc.getLink().getNode(), uuid)) {
+                addErrorMessage("will-paste-in-own-subtree");
+            }
+        }
+    }
+
+    protected boolean willPasteInOwnSubtree(SiteNode node, String uuid) throws SiteException {
+        String nodeUuid = node.getUuid();
+        if (nodeUuid.equals(uuid)) {
+            return true;
+        } else if (!node.isTopLevel()) {
+            return willPasteInOwnSubtree(node.getParent(), uuid);
+        } else {
+            return false;
         }
     }
 

Modified: lenya/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui.xml?rev=580365&r1=580364&r2=580365&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui.xml (original)
+++ lenya/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui.xml Fri Sep 28 07:16:05 2007
@@ -70,6 +70,7 @@
   review state.</message>
   <message key="no-rollback-no-privileges">Rollback disabled. You do not
   have sufficient privileges.</message>
+  <message key="will-paste-in-own-subtree">Can't paste a cut document in its own subtree.</message>
   
   <!-- force check-in -->
   <message key="force-checkin">Force Check-In</message>

Modified: lenya/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui_de.xml
URL: http://svn.apache.org/viewvc/lenya/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui_de.xml?rev=580365&r1=580364&r2=580365&view=diff
==============================================================================
--- lenya/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui_de.xml (original)
+++ lenya/trunk/src/modules-core/sitemanagement/resources/i18n/cmsui_de.xml Fri Sep 28 07:16:05 2007
@@ -69,7 +69,10 @@
   <message key="no-rollback-in-review">Im Arbeitsschritt "Freigabe" ist
   keine Wiederherstellung möglich.</message>
   <message key="no-rollback-no-privileges">Keine ausreichenden Rechte zum Wiederherstellen.</message>
-                   
+  <message key="will-paste-in-own-subtree">
+    Ein ausgeschnittenes Dokument kann nicht im eigenen Teilbaum eingefügt werden.
+  </message>
+  
   <!-- force check-in -->
   <message key="force-checkin">Check-In erzwingen</message>
   <message key="force-checkin-question">Wollen Sie das Dokument "{0}" wirklich einchecken?</message>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.