Index: main/plugin-web/i18n/messages_en.xml
===================================================================
--- main/plugin-web/i18n/messages_en.xml	(revision 34122)
+++ main/plugin-web/i18n/messages_en.xml	(working copy)
@@ -32,8 +32,8 @@
     <message key="PLUGINS_WEB_RIGHTS_PAGE_CREATE_DESCRIPTION">Allow to create pages</message>
     <message key="PLUGINS_WEB_RIGHTS_PAGE_RENAME_LABEL">Rename page</message>
     <message key="PLUGINS_WEB_RIGHTS_PAGE_RENAME_DESCRIPTION">Allow to rename pages</message>
-    <message key="PLUGINS_WEB_RIGHTS_PAGE_DELETE_LABEL">Delete page</message>
-    <message key="PLUGINS_WEB_RIGHTS_PAGE_DELETE_DESCRIPTION">Allow to delete pages</message>
+    <message key="PLUGINS_WEB_RIGHTS_PAGE_DELETE_LABEL">Delete child page</message>
+    <message key="PLUGINS_WEB_RIGHTS_PAGE_DELETE_DESCRIPTION">Allow to delete child pages</message>
 	<message key="PLUGINS_WEB_RIGHTS_PAGE_SEO_LABEL">SEO</message>
 	<message key="PLUGINS_WEB_RIGHTS_PAGE_SEO_DESCRIPTION">Allow to include or exclude pages from SEO files</message>
 	<message key="PLUGINS_WEB_RIGHTS_PAGE_TAG_LABEL">Page tagging</message>
Index: main/plugin-web/i18n/messages_fr.xml
===================================================================
--- main/plugin-web/i18n/messages_fr.xml	(revision 34122)
+++ main/plugin-web/i18n/messages_fr.xml	(working copy)
@@ -32,8 +32,8 @@
     <message key="PLUGINS_WEB_RIGHTS_PAGE_CREATE_DESCRIPTION">Autorise à créer des pages</message>
     <message key="PLUGINS_WEB_RIGHTS_PAGE_RENAME_LABEL">Renommer une page</message>
     <message key="PLUGINS_WEB_RIGHTS_PAGE_RENAME_DESCRIPTION">Autorise à renommer des pages</message>
-    <message key="PLUGINS_WEB_RIGHTS_PAGE_DELETE_LABEL">Supprimer une page</message>
-    <message key="PLUGINS_WEB_RIGHTS_PAGE_DELETE_DESCRIPTION">Autorise supprimer des pages</message>
+    <message key="PLUGINS_WEB_RIGHTS_PAGE_DELETE_LABEL">Supprimer les pages filles</message>
+    <message key="PLUGINS_WEB_RIGHTS_PAGE_DELETE_DESCRIPTION">Autorise supprimer les pages filles</message>
 	<message key="PLUGINS_WEB_RIGHTS_PAGE_SEO_LABEL">Référencement</message>
 	<message key="PLUGINS_WEB_RIGHTS_PAGE_SEO_DESCRIPTION">Autorise à inclure ou exclure une page du référencement</message>
 	<message key="PLUGINS_WEB_RIGHTS_PAGE_TAG_LABEL">Etiqueter une page</message>
Index: main/plugin-web/plugin.xml
===================================================================
--- main/plugin-web/plugin.xml	(revision 34122)
+++ main/plugin-web/plugin.xml	(working copy)
@@ -2701,8 +2701,8 @@
 			<!-- Supprimer une page -->
     		<extension id="org.ametys.web.userinterface.DeletePage"
 					   point="org.ametys.cms.workspace.ribbon.RibbonControlsManager" 
-					   class="org.ametys.runtime.ui.impl.StaticContextualClientSideElement">
-				<action class="org.ametys.ribbon.control.button.ModifiablePageActionButton">
+					   class="org.ametys.web.clientsideelement.DeletePageClientSideElement">
+				<action class="org.ametys.ribbon.control.button.DeletePageButton">
 					<param name="action">org.ametys.web.tool.page.Delete.act</param>
 
 					<param name="label" i18n="true">PLUGINS_WEB_UITOOL_DELETE_LABEL</param>
@@ -2720,6 +2720,7 @@
 				<scripts>
 					<file>js/org/ametys/web/tool/page/Actions.i18n.js</file>
 					<file>js/org/ametys/ribbon/control/button/ModifiablePageActionButton.js</file>
+					<file>js/org/ametys/ribbon/control/button/DeletePageButton.js</file>
 				</scripts>
 				<right>Web_Rights_Page_Delete</right>
 			</extension>
Index: main/plugin-web/resources/js/org/ametys/ribbon/control/button/DeletePageButton.js
===================================================================
--- main/plugin-web/resources/js/org/ametys/ribbon/control/button/DeletePageButton.js	(revision 0)
+++ main/plugin-web/resources/js/org/ametys/ribbon/control/button/DeletePageButton.js	(revision 0)
@@ -0,0 +1,84 @@
+/*
+ *  Copyright 2015 Anyware Services
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+
+Ext.namespace('org.ametys.ribbon.control.button');
+
+org.ametys.ribbon.control.button.DeletePageButton = function(id, configuration, pluginName)
+{
+	org.ametys.ribbon.control.button.DeletePageButton.superclass.constructor.call(this, id, configuration, pluginName);
+};
+
+Ext.extend(org.ametys.ribbon.control.button.DeletePageButton, org.ametys.ribbon.control.button.ModifiablePageActionButton, {});
+
+
+org.ametys.ribbon.control.button.DeletePageButton.prototype.onMessage = function(messages)
+{
+	for (var i=0; i < messages.length; i++)
+	{
+		if (messages[i].getType().getName() == org.ametys.ribbon.RibbonManager.EVENTTYPE_SELECTIONCHANGED)
+		{
+			var targets = messages[i].getTargets();
+			var target = org.ametys.messagebus.message.MessageTargetHelper.findFirst(targets, this._testTarget.createDelegate(this));
+			
+			if (target != null)
+			{
+				if (target.getParameters().isModifiable != 'true')
+				{
+					var text = this._getTooltip(this.getConfiguration()["no-modifiable-description"]);
+					this.updateTooltip(text, null, null);
+					
+					this.getElements().each(function(element) {element.disable();});
+				}
+				else 
+				{
+					this.getElements().each(function(element) { element.refreshing(); element.setDisabled(true); });
+					this.updateTooltip(this.getConfiguration()["default-description"]);
+					
+					org.ametys.ribbon.RibbonManager.getInstance().refreshElement('control', this, {targets: [target.getParameters().id]});
+				}
+			}
+			else
+			{
+				var text = this._getTooltip(this.getConfiguration()["no-selection-description"]);
+				this.updateTooltip(text, null, null);
+				this.getElements().each(function(element) {element.disable();});
+			}
+		}
+	}
+}
+
+org.ametys.ribbon.control.button.DeletePageButton.prototype.configurationError = function(response)
+{
+    this.getElements().each(function(element) { element.stopRefreshing(); element.setDisabled(true); });
+    this.updateTooltip(this.getConfiguration()['default-description']);
+}
+
+org.ametys.ribbon.control.button.DeletePageButton.prototype.configurationChanged = function(params)
+{
+    this.getElements().each(function(element) { element.stopRefreshing(); });
+    
+    if (params['has-right'] == 'false')
+    {
+        this.getElements().each(function(element) {element.disable();});
+        var text = this._getTooltip(this.getConfiguration()["no-right-description"]);
+		this.updateTooltip(text, null, null);
+    }
+    else
+    {
+        this.getElements().each(function(element) {element.enable();});
+        this.updateTooltip(this.getConfiguration()['default-description'], null, null);
+    }
+}
Index: main/plugin-web/src/org/ametys/web/clientsideelement/DeletePageClientSideElement.java
===================================================================
--- main/plugin-web/src/org/ametys/web/clientsideelement/DeletePageClientSideElement.java	(revision 0)
+++ main/plugin-web/src/org/ametys/web/clientsideelement/DeletePageClientSideElement.java	(revision 0)
@@ -0,0 +1,82 @@
+/*
+ *  Copyright 2014 Anyware Services
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.ametys.web.clientsideelement;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+
+import org.ametys.plugins.repository.AmetysObjectResolver;
+import org.ametys.runtime.right.RightsManager.RightResult;
+import org.ametys.runtime.ui.impl.StaticContextualClientSideElement;
+import org.ametys.runtime.user.CurrentUserProvider;
+import org.ametys.runtime.util.I18nizableText;
+import org.ametys.web.repository.page.PagesContainer;
+import org.ametys.web.repository.sitemap.Sitemap;
+
+/**
+ * This controller check user's rights for page deletion
+ */
+public class DeletePageClientSideElement extends StaticContextualClientSideElement
+{
+    /** The ametys object resolver */
+    protected AmetysObjectResolver _resolver;
+    
+    /** The user provider */
+    protected CurrentUserProvider _userProvider; 
+    
+    @Override
+    public void service(ServiceManager smanager) throws ServiceException
+    {
+        super.service(smanager);
+        _resolver = (AmetysObjectResolver) smanager.lookup(AmetysObjectResolver.ROLE);
+        _userProvider = (CurrentUserProvider) smanager.lookup(CurrentUserProvider.ROLE);
+    }
+    
+    @Override
+    public Map<String, I18nizableText> getCurrentParameters(Map<String, Object> parameters)
+    {
+        Map<String, I18nizableText> results = new HashMap<String, I18nizableText>();
+        
+        boolean hasRight = false;
+        String login = _userProvider.getUser();
+        
+        List<String> pagesId = (List<String>) parameters.get("targets");
+        for (String pageId : pagesId)
+        {
+            PagesContainer page = _resolver.resolveById(pageId);
+            
+            if (page instanceof Sitemap)
+            {
+                if (_rightsManager.hasRight(login, "Web_Rights_Page_Delete", "/pages/" + page.getSitemapName()) == RightResult.RIGHT_OK)
+                {
+                    hasRight = true;
+                }
+            }
+            else if (_rightsManager.hasRight(login, "Web_Rights_Page_Delete", "/pages/" + page.getSitemapName() + "/" + ((PagesContainer) page.getParent()).getPathInSitemap()) == RightResult.RIGHT_OK)
+            {
+                hasRight = true;
+            }
+        }
+        
+        results.put("has-right", new I18nizableText(String.valueOf(hasRight)));
+        return results;
+    }
+    
+}
Index: main/plugin-web/src/org/ametys/web/repository/page/actions/DeletePageAction.java
===================================================================
--- main/plugin-web/src/org/ametys/web/repository/page/actions/DeletePageAction.java	(revision 34122)
+++ main/plugin-web/src/org/ametys/web/repository/page/actions/DeletePageAction.java	(working copy)
@@ -34,6 +34,7 @@
 import org.ametys.web.ObservationConstants;
 import org.ametys.web.repository.page.ModifiablePage;
 import org.ametys.web.repository.page.Page;
+import org.ametys.web.repository.page.PagesContainer;
 import org.ametys.web.repository.sitemap.Sitemap;
 
 /**
@@ -51,7 +52,7 @@
         ModifiablePage page = _resolver.resolveById(id);
         
         Sitemap sitemap = page.getSitemap();
-        String pagePathInSitemap = page.getPathInSitemap();
+        String pagePathInSitemap = ((PagesContainer) page.getParent()).getPathInSitemap();
         String pageId = page.getId();
         
         // Check rights
@@ -72,7 +73,7 @@
 
         // Notify observers that the page has been deleted
         _observationManager.notify(new Event(_getCurrentUser(), ObservationConstants.PAGE_DELETED, sitemap,
-                                             new Object[] {pagePathInSitemap, pageId, parent}));
+                                             new Object[] {page.getPathInSitemap(), pageId, parent}));
         
         Map<String, String> result = new HashMap<String, String>();
         result.put("id", id);
