Index: main/plugin-odf-web/i18n/messages_en.xml
===================================================================
--- main/plugin-odf-web/i18n/messages_en.xml	(revision 38305)
+++ main/plugin-odf-web/i18n/messages_en.xml	(working copy)
@@ -316,7 +316,10 @@
     <message key="PLUGINS_ODFWEB_CART_PROGRAMS">1 programs</message>
     <message key="PLUGINS_ODFWEB_CART_COURSE">1 course</message>
     <message key="PLUGINS_ODFWEB_CART_COURSES">courses</message>
-            
+    <message key="PLUGINS_ODFWEB_CART_BO_UNAVAILABLE_TITLE">Unavailable in the CMS</message>
+    <message key="PLUGINS_ODFWEB_CART_BO_UNAVAILABLE_DESC">This feature is not available inside the CMS.&lt;br&gt;You can test it in preview mode or live mode.</message>
+    
+                
     <message key="PLUGINS_ODFWEB_SERVICE_SEARCH_SCHEMA_BO_UNAVAILABLE_TITLE">Unavailable inside CMS</message>
     <message key="PLUGINS_ODFWEB_SERVICE_SEARCH_SCHEMA_BO_UNAVAILABLE_DESC">This feature is not available inside the CMS.&lt;br&gt;You could test it in preview mode or live mode.</message>
 
Index: main/plugin-odf-web/i18n/messages_fr.xml
===================================================================
--- main/plugin-odf-web/i18n/messages_fr.xml	(revision 38305)
+++ main/plugin-odf-web/i18n/messages_fr.xml	(working copy)
@@ -316,6 +316,8 @@
     <message key="PLUGINS_ODFWEB_CART_PROGRAMS">formations</message>
     <message key="PLUGINS_ODFWEB_CART_COURSE">1 élement pédagogique</message>
     <message key="PLUGINS_ODFWEB_CART_COURSES">élements pédagogiques</message>
+    <message key="PLUGINS_ODFWEB_CART_BO_UNAVAILABLE_TITLE">Indisponible dans le CMS</message>
+    <message key="PLUGINS_ODFWEB_CART_BO_UNAVAILABLE_DESC">Cette fonctionnalité n'est pas disponible dans le CMS.&lt;br&gt;Vous pouvez la tester en mode prévisualisation ou mode version en ligne.</message>
     
     <message key="PLUGINS_ODFWEB_SERVICE_SEARCH_SCHEMA_BO_UNAVAILABLE_TITLE">Indisponible dans le CMS</message>
     <message key="PLUGINS_ODFWEB_SERVICE_SEARCH_SCHEMA_BO_UNAVAILABLE_DESC">Cette fonctionnalité n'est pas disponible dans le CMS.&lt;br&gt;Vous pouvez la tester en mode prévisualisation ou mode version en ligne.</message>
Index: main/plugin-odf-web/pages/services/cart/cart.xsl
===================================================================
--- main/plugin-odf-web/pages/services/cart/cart.xsl	(revision 38479)
+++ main/plugin-odf-web/pages/services/cart/cart.xsl	(working copy)
@@ -22,6 +22,7 @@
                 extension-element-prefixes="ametys math">
     
     <xsl:import href="service:web://pages/services/common.xsl"/>
+    <xsl:import href="plugin:odf-web://stylesheets/helper/cart.xsl"/>
 
     <xsl:param name="header" select="ametys:serviceParameter('header')"/>
     
@@ -74,7 +75,14 @@
                 {
                     var elmt = elmts[i];
                     html += '&lt;li&gt;';
-                    html += '&lt;a class="remove-from-cart" href="#" onclick=removeFromCart_<xsl:value-of select="$uniqueId"/>("' + i + '"); return false"&gt;'
+                    <xsl:choose>
+	                    <xsl:when test="$rendering-context = 'back'">
+                            html += '&lt;a class="remove-from-cart" href="javascript:alertBack_<xsl:value-of select="$uniqueId"/>();"&gt;';
+	                    </xsl:when>
+	                    <xsl:otherwise>
+		                    html += '&lt;a class="remove-from-cart" href="#" onclick=removeFromCart_<xsl:value-of select="$uniqueId"/>("' + i + '"); return false"&gt;';
+	                    </xsl:otherwise>
+                    </xsl:choose>
                     html += "<xsl:call-template name="remove-item-icon"/>";
                     html += "<xsl:call-template name="remove-item-text"/>";
                     html += '&lt;/a&gt;';
@@ -87,7 +95,10 @@
                 $j("#" + targetId).append(html);
             }
         </script>
-        
+                    
+        <xsl:if test="$rendering-context = 'back'">
+            <xsl:call-template name="alert-bo-script"/>            
+        </xsl:if>
     </xsl:template>
     
     <!-- Used in common.xsl --> 
@@ -127,7 +138,16 @@
     
     <xsl:template name="clear-cart">
         <div class="clear-cart">
-            <a href="#" onclick="clearCart_{$uniqueId}(); return false;">
+            <a>
+                <xsl:choose>
+                    <xsl:when test="$rendering-context = 'back'">
+                       <xsl:attribute name="href">javascript:alertBack_<xsl:value-of select="$uniqueId"/>();</xsl:attribute>
+                    </xsl:when>
+                    <xsl:otherwise>
+                        <xsl:attribute name="href">#</xsl:attribute>
+                        <xsl:attribute name="onclick">clearCart_<xsl:value-of select="$uniqueId"/>(); return false;</xsl:attribute>
+                    </xsl:otherwise>
+                </xsl:choose>
                 <xsl:call-template name="clear-cart-icon"/>
                 <i18n:text i18n:key="PLUGINS_ODFWEB_SERVICE_CART_REMOVE_ALL"/>
             </a>
Index: main/plugin-odf-web/stylesheets/helper/cart.xsl
===================================================================
--- main/plugin-odf-web/stylesheets/helper/cart.xsl	(revision 38305)
+++ main/plugin-odf-web/stylesheets/helper/cart.xsl	(working copy)
@@ -33,9 +33,8 @@
          + -->
     <xsl:template name="goto-cart">
         <xsl:param name="link-content"><i18n:text i18n:key="PLUGINS_ODFWEB_CART_SEE" i18n:catalogue="plugin.odf-web"/></xsl:param>
-        
-        <xsl:variable name="cartPagesIds" select="ametys:findPagesIdsByTag('ODF_CART')"/>
-        
+
+	    <xsl:variable name="cartPagesIds" select="ametys:findPagesIdsByTag('ODF_CART')"/>
         <xsl:if test="$cartPagesIds">
             <div class="gotocart">
                 <a id="gotocart-{$uniqueId}" href="{resolver:resolve('page', $cartPagesIds/@id)}">
@@ -79,26 +78,36 @@
          + -->
     <xsl:template name="add-course-to-cart">
         <xsl:param name="link-content"><i18n:text i18n:key="PLUGINS_ODFWEB_CART_ADD" i18n:catalogue="plugin.odf-web"/></xsl:param>
-        
+                
         <div class="add-to-cart" id="add-course-to-cart-{$uniqueId}" style="display:none">
-            <a href="#" onclick="javascript:addCourseToCart_{$uniqueId}('{$rendering-context}'); return false"><xsl:copy-of select="$link-content"/></a>
+            <a>
+	            <xsl:choose>
+	                <xsl:when test="$rendering-context = 'back'">
+	                   <xsl:attribute name="href">javascript:alertBack_<xsl:value-of select="$uniqueId"/>();</xsl:attribute>
+	                </xsl:when>
+	                <xsl:otherwise>
+	                    <xsl:attribute name="href">#</xsl:attribute>
+	                    <xsl:attribute name="onclick">javascript:addCourseToCart_<xsl:value-of select="$uniqueId"/>(); return false;</xsl:attribute>
+	                </xsl:otherwise>
+	            </xsl:choose>
+	            <xsl:copy-of select="$link-content"/>
+            </a>
         </div>
         
         <script type="text/javascript">
             $j("#add-course-to-cart-<xsl:value-of select="$uniqueId"/>")[0].style.display = '';
             
-            function addCourseToCart_<xsl:value-of select="$uniqueId"/> (renderingContext)
+            function addCourseToCart_<xsl:value-of select="$uniqueId"/> ()
             {
-                var pageUrl = '';
-                if (renderingContext != 'back')
-                {
-                    pageUrl = "<xsl:value-of select="resolver:resolve('page', ametys:pageId(), false)"/>";
-                }
+                var pageUrl = "<xsl:value-of select="resolver:resolve('page', ametys:pageId(), false)"/>";
                 odfcart_addCourse ('<xsl:value-of select="@id"/>', '<xsl:value-of select="ametys:pageId()"/>', pageUrl, '<xsl:value-of select="@title"/>');
                 document.location.reload(false);
             }
         </script>
         
+        <xsl:if test="$rendering-context = 'back'">
+            <xsl:call-template name="alert-bo-script" />
+        </xsl:if>
     </xsl:template>
     
     <!-- +
@@ -107,25 +116,52 @@
          + -->
     <xsl:template name="add-program-to-cart">
         <xsl:param name="link-content"><i18n:text i18n:key="PLUGINS_ODFWEB_CART_ADD" i18n:catalogue="plugin.odf-web"/></xsl:param>
+    
         <div class="add-to-cart" id="add-program-to-cart-{$uniqueId}" style="display:none">
-            <a href="#" onclick="javascript:addProgramToCart_{$uniqueId}('{$rendering-context}'); return false"><xsl:copy-of select="$link-content"/></a>
+            <a>
+	            <xsl:choose>
+	                <xsl:when test="$rendering-context = 'back'">
+	                   <xsl:attribute name="href">javascript:alertBack_<xsl:value-of select="$uniqueId"/>();</xsl:attribute>
+	                </xsl:when>
+	                <xsl:otherwise>
+	                    <xsl:attribute name="href">#</xsl:attribute>
+	                    <xsl:attribute name="onclick">javascript:addProgramToCart_<xsl:value-of select="$uniqueId"/>(); return false;</xsl:attribute>
+	                </xsl:otherwise>
+	            </xsl:choose>
+	            <xsl:copy-of select="$link-content"/>
+            </a>
         </div>
-        
+       
         <script type="text/javascript">
             $j("#add-program-to-cart-<xsl:value-of select="$uniqueId"/>")[0].style.display = '';
             
-            function addProgramToCart_<xsl:value-of select="$uniqueId"/> (renderingContext)
+            function addProgramToCart_<xsl:value-of select="$uniqueId"/> ()
             {
-                var pageUrl = '';
-                if (renderingContext != 'back')
-                {
-                    pageUrl = "<xsl:value-of select="resolver:resolve('page', ametys:pageId(), false)"/>";
-                }
+                var pageUrl = "<xsl:value-of select="resolver:resolve('page', ametys:pageId(), false)"/>";
                 odfcart_addProgram ('<xsl:value-of select="@id"/>', '<xsl:value-of select="ametys:pageId()"/>', pageUrl, '<xsl:value-of select="@title"/>');
                 document.location.reload(false);
             }
         </script>
         
+        <xsl:if test="$rendering-context = 'back'">
+            <xsl:call-template name="alert-bo-script" />
+        </xsl:if>
+    </xsl:template>
+    
+    <!-- +
+         | Template containing the javascript code displaying an alert when trying to add/remove a course/program while in back-office
+         + -->
+    <xsl:template name="alert-bo-script">
+        <script type="text/javascript">
+            function alertBack_<xsl:value-of select="$uniqueId"/>() 
+            {
+                var Ext = window.parent.Ext;
+                Ext.MessageBox.alert(
+                   "<i18n:text i18n:catalogue="plugin.odf-web" i18n:key="PLUGINS_ODFWEB_CART_BO_UNAVAILABLE_TITLE"/>",
+                   "<i18n:text i18n:catalogue="plugin.odf-web" i18n:key="PLUGINS_ODFWEB_CART_BO_UNAVAILABLE_DESC"/>"
+                );
+            }
+        </script>
     </xsl:template>
     
 </xsl:stylesheet>
\ No newline at end of file
