Index: main/plugin-web/resources/js/org/ametys/web/tool/sitemap/SitemapTool.i18n.js
===================================================================
--- main/plugin-web/resources/js/org/ametys/web/tool/sitemap/SitemapTool.i18n.js	(revision 38958)
+++ main/plugin-web/resources/js/org/ametys/web/tool/sitemap/SitemapTool.i18n.js	(working copy)
@@ -321,46 +321,10 @@
 
 org.ametys.web.tool.sitemap.SitemapTool.prototype._moveNode = function (tree, node, oldParent, newParent, index)
 {
-	// 1 - First check right on moved page
+	// 1 - First check right on new parent page
 	var currentTargets = org.ametys.ribbon.RibbonManager.getInstance().getCurrentSelectionTargets();
 	var pageTarget = org.ametys.messagebus.message.MessageTargetHelper.findFirst(currentTargets, function(target) {return target.getType() == 'page'});
-	if (pageTarget != null &amp;&amp; pageTarget.getParameters().id == node.id)
-	{
-		if (pageTarget.getParameters().rights.indexOf('Web_Rights_Page_Delete') == -1)
-		{
-			// User has no right to delete dragged page: cancel the move
-			var msg = "<i18n:text i18n:key='PLUGINS_WEB_TOOL_SITEMAP_SITEMAPTOOL_ERROR_INSUFFICIENT_RIGHTS_DESC'/>";
-			msg += "<i18n:text i18n:key='PLUGINS_WEB_TOOL_SITEMAP_SITEMAPTOOL_ERROR_DELETION_RIGHT'/>";
-			msg += "&lt;b&gt;" + pageTarget.getParameters().title + "&lt;/b&gt;"
-			
-			Ext.Msg.show ({
-	            title: "<i18n:text i18n:key='PLUGINS_WEB_TOOL_SITEMAP_SITEMAPTOOL_ERROR_INSUFFICIENT_RIGHTS'/>",
-	            msg: msg,
-	            buttons: Ext.Msg.OK,
-	            icon: Ext.MessageBox.ERROR
-	        });
-			
-			return false;
-		}
-	}
-	else if (!this._hasRights(tree._siteName, tree._lang, node, "Web_Rights_Page_Delete"))
-	{
-		// User has no right to delete dragged page: cancel the move
-		var msg = "<i18n:text i18n:key='PLUGINS_WEB_TOOL_SITEMAP_SITEMAPTOOL_ERROR_INSUFFICIENT_RIGHTS_DESC'/>";
-		msg += "<i18n:text i18n:key='PLUGINS_WEB_TOOL_SITEMAP_SITEMAPTOOL_ERROR_DELETION_RIGHT'/>";
-		msg += "&lt;b&gt;" + node.attributes.title + "&lt;/b&gt;";
-		
-		Ext.Msg.show ({
-            title: "<i18n:text i18n:key='PLUGINS_WEB_TOOL_SITEMAP_SITEMAPTOOL_ERROR_INSUFFICIENT_RIGHTS'/>",
-            msg: msg,
-            buttons: Ext.Msg.OK,
-            icon: Ext.MessageBox.ERROR
-        });
-		
-		return false;
-	}
-	
-	// 2 - Then check right on new parent page
+
 	if (!this._hasRights(tree._siteName, tree._lang, newParent, "Web_Rights_Page_Create"))
 	{
 		// User has no right to create page under dropped page: cancel the move
@@ -385,7 +349,7 @@
 		return false;
 	}
 	 
-	// 3 - Do move
+	// 2 - Do move
 	var params = {};
 	params.id = node.id;
 	params.oldParent = oldParent.id;
@@ -406,6 +370,23 @@
 		return false;
 	}
 	
+	if (response.selectSingleNode("ActionResult/insufficientRight")[org.ametys.servercomm.ServerComm.xmlTextContent] == "true")
+	{
+		// User has no right to delete dragged page: cancel the move
+		var msg = "<i18n:text i18n:key='PLUGINS_WEB_TOOL_SITEMAP_SITEMAPTOOL_ERROR_INSUFFICIENT_RIGHTS_DESC'/>";
+		msg += "<i18n:text i18n:key='PLUGINS_WEB_TOOL_SITEMAP_SITEMAPTOOL_ERROR_DELETION_RIGHT'/>";
+		msg += "&lt;b&gt;" + pageTarget.getParameters().title + "&lt;/b&gt;"
+		
+		Ext.Msg.show ({
+            title: "<i18n:text i18n:key='PLUGINS_WEB_TOOL_SITEMAP_SITEMAPTOOL_ERROR_INSUFFICIENT_RIGHTS'/>",
+            msg: msg,
+            buttons: Ext.Msg.OK,
+            icon: Ext.MessageBox.ERROR
+        });
+		
+		return false;
+	}
+	
 	var pageTarget = org.ametys.messagebus.bus.MessageBuilder.getInstance().createTarget("page", {'id': node.id});
 	var message = org.ametys.messagebus.bus.MessageBuilder.getInstance().createMessage(org.ametys.ribbon.RibbonManager.EVENTTYPE_MOVED, {}, [pageTarget]);
 	org.ametys.messagebus.MessageBus.getInstance().fireMessages([message]);
Index: main/plugin-web/sitemap-back.xmap
===================================================================
--- main/plugin-web/sitemap-back.xmap	(revision 38958)
+++ main/plugin-web/sitemap-back.xmap	(working copy)
@@ -512,7 +512,9 @@
 			
 			<map:match pattern="repository/move-page">
 				<map:act type="move-page">
-					<map:generate type="action-result"/>
+					<map:generate type="action-result">
+					   <map:parameter name="insufficientRight" value="{insufficientRight}" />
+					</map:generate>
 					<map:serialize type="xml"/>
 				</map:act>
 			</map:match>
Index: main/plugin-web/src/org/ametys/web/repository/page/actions/MovePageAction.java
===================================================================
--- main/plugin-web/src/org/ametys/web/repository/page/actions/MovePageAction.java	(revision 38958)
+++ main/plugin-web/src/org/ametys/web/repository/page/actions/MovePageAction.java	(working copy)
@@ -15,6 +15,7 @@
  */
 package org.ametys.web.repository.page.actions;
 
+import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.avalon.framework.parameters.Parameters;
@@ -49,6 +50,7 @@
     public Map act(Redirector redirector, SourceResolver resolver, Map objectModel, String source, Parameters parameters) throws Exception
     {
         Request request = ObjectModelHelper.getRequest(objectModel);
+        Map<String, String> result = new HashMap<String, String>();
 
         String id = request.getParameter("id");
         String oldParent = request.getParameter("oldParent");
@@ -65,9 +67,10 @@
         // Check rights
         if (!_isSuperUser())
         {
-            if (_rightsManager.hasRight(_getCurrentUser(), "Web_Rights_Page_Delete", "/pages/" + page.getSitemapName() + "/" + oldPathInSitemap) != RightResult.RIGHT_OK)
+            if (!_hasMoveRight(page))
             {
-                throw new IllegalStateException("You do not have the rights to delete the page '/" + page.getSitemapName() + "/" + oldPathInSitemap + "'");
+                result.put("insufficientRight", "true");
+                return result;
             }
         }
         
@@ -118,4 +121,19 @@
         
         return EMPTY_MAP;
     }
+    
+    private boolean _hasMoveRight(Page page)
+    {
+        String login = _getCurrentUser();
+        if (_rightsManager.hasRight(login, "Web_Rights_Page_Delete", "/pages/" + page.getSitemapName() + "/" + page.getPathInSitemap()) == RightResult.RIGHT_OK)
+        {
+            return true;
+        }
+        else if (_rightsManager.hasRight(login, "Web_Rights_ChildPages_Delete", "/pages/" + page.getSitemapName() + "/" + ((PagesContainer) page.getParent()).getPathInSitemap()) == RightResult.RIGHT_OK)
+        {
+            return true;
+        }
+        
+        return false;
+    }
 }
