Update of 
/var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository
In directory james.mmbase.org:/tmp/cvs-serv6688/src/webapp/editors/repository

Modified Files:
        content.js content.jsp reorder.js reordercontent.jsp 
        search.jsp unlinkcreation.jsp 
Log Message:
CMSC-412, mass move, delete of content elements


See also: 
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository
See also: http://www.mmbase.org/jira/browse/CMSC-412


Index: content.js
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository/content.js,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- content.js  5 Jun 2008 02:32:19 -0000       1.7
+++ content.js  23 Jun 2008 10:18:22 -0000      1.8
@@ -91,13 +91,29 @@
 function deleteContent(objectnumber, confirmmessage) {
     if (confirmmessage) {
         if (confirm(confirmmessage)) {
+           if(objectnumber == 'massdelete'){
+                 var checkboxs = document.getElementsByTagName("input");
+                 var objectnumbers = '';
+                 for(i = 0; i < checkboxs.length; i++) {
+                    if(checkboxs[i].type == 'checkbox' && 
checkboxs[i].name.indexOf('chk_') == 0 && checkboxs[i].checked) {
+                       objectnumbers += checkboxs[i].value+",";
+                    }
+                 }
+                 if(objectnumbers == ''){
+                    return ;
+                 }
+                 objectnumbers = objectnumbers.substr(0,objectnumbers.length - 
1);
+                 document.forms[0].deleteContentRequest.value = 
"massDelete:"+objectnumbers;
+                 document.forms[0].submit();
+           }
+           else {
             document.forms[0].deleteContentRequest.value = "permanentDelete:" 
+ objectnumber;
             document.forms[0].submit();
         }
     }
+    }
     else {
         document.forms[0].deleteContentRequest.value = "moveToRecyclebin:" + 
objectnumber;
         document.forms[0].submit();
     }
-
 }


Index: content.jsp
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository/content.jsp,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -b -r1.26 -r1.27
--- content.jsp 18 Jun 2008 08:04:58 -0000      1.26
+++ content.jsp 23 Jun 2008 10:18:22 -0000      1.27
@@ -7,6 +7,7 @@
 <html:html xhtml="true">
 <cmscedit:head title="content.title">
     <script src="content.js" type="text/javascript"></script>
+    <script src="search.js" type="text/javascript"></script>
 </cmscedit:head>
 <body>
 <script type="text/javascript">
@@ -120,11 +121,14 @@
 <c:set var="orderby" value="${param.orderby}" scope="page" />
 <%@ include file="../pages.jsp" %>
 
-
+<form action="contentMassDelete.do" name="contentForm">
+<input type="hidden" name="offset" value="${param.offset}"/>
+<input type="hidden" name="channelnumber" value="<mm:write 
referid="parentchannel" />"/>
+<input type="submit" class="button" value="<fmt:message 
key="content.delete.massdelete" />"/>
 <table>
 <thead>
     <tr>
-        <th></th>
+        <th><input type="checkbox"  name="selectall"  
onclick="selectAll(this.checked, 'contentForm', 'chk_');" value="on"/></th>
         <th><a href="javascript:sortBy('otype','<mm:write 
referid="parentchannel" />')" class="headerlink">
         <fmt:message key="content.typecolumn"/></a></th>
         <th><a href="javascript:sortBy('title','<mm:write 
referid="parentchannel" />')" class="headerlink">
@@ -145,9 +149,9 @@
     <mm:param name="objectnumber" value="$number"/>
     <mm:param name="returnurl" value="$returnurl"/>
 </mm:url>
-<tr
-        <mm:even inverse="true">class="swap"</mm:even> href="<mm:write 
referid="url"/>">
-<td style="white-space: nowrap;">
+<tr   <mm:even inverse="true">class="swap"</mm:even> href="<mm:write 
referid="url"/>">
+    <td style="white-space: nowrap;">
+    <input type="checkbox"  name="chk_<mm:field name="number" />" 
value="<mm:field name="number" />" 
onClick="document.forms['contentForm'].elements.selectall.checked=false;"/>
     <a href="javascript:info('<mm:field name="number" />')"><img 
src="../gfx/icons/info.png" width="16" height="16"
                                                                  
title="<fmt:message key="content.info" />"
                                                                  
alt="<fmt:message key="content.info" />"/></a>
@@ -176,8 +180,7 @@
                 src="../gfx/icons/versioning.png" title="<fmt:message 
key="content.icon.versioning.title" />"
                 alt="<fmt:message key="content.icon.versioning.title" />"/></a>
     </mm:haspage>
-    <% if (role != null && SecurityUtil.isEditor(role)) { %>
-           
+    <% if (role != null && SecurityUtil.isWriter(role)) { %>
     <mm:last inverse="true">
         <a href="javascript:moveDown('<mm:field name="number" />','<mm:write 
referid="parentchannel" />')"><img
                 src="../gfx/icons/down.png" width="16" height="16" 
title="<fmt:message key="content.move.down" />"
@@ -189,8 +192,7 @@
                 src="../gfx/icons/up.png" width="16" height="16" 
title="<fmt:message key="content.move.up" />"
                 alt="<fmt:message key="content.move.up" />"/></a>
     </mm:first>
-          
-    <%}%>
+    <% } %>
     <cmsc:hasfeature name="savedformmodule">
         <c:set var="typeval">
             <mm:nodeinfo type="type"/>
@@ -270,6 +272,8 @@
 </mm:listnodes>
 </tbody>
 </table>
+<input type="submit" class="button" value="<fmt:message 
key="content.delete.massdelete" />"/>
+</form>
 <%@ include file="../pages.jsp" %>
 </div>
 </div>


Index: reorder.js
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository/reorder.js,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- reorder.js  12 Jun 2006 13:08:44 -0000      1.1
+++ reorder.js  23 Jun 2008 10:18:22 -0000      1.2
@@ -1,22 +1,43 @@
 function moveUp() {
        var select = document.forms[0].channels;
-       var elementToMove = select.selectedIndex;
-       if (elementToMove>0) {
+   var options = select.options;
+   for (i=0; i<options.length; i++) {
+     if (select.options[i].selected) {
+       var elementToMove = options[i].index;
+              if (elementToMove>0 && !options[elementToMove-1].selected) {
                swap(elementToMove,elementToMove-1);
-               select.selectedIndex--;
-               fillHidden();
+             if(options[elementToMove-1].selected) {
+                options[elementToMove].selected = true;
+             }
+             else {
+                options[elementToMove].selected = false;
+             }
+             options[elementToMove-1].selected = true;
        }
+      }
+   }
+   fillHidden();
 }
+
 function moveDown() {
        var select = document.forms[0].channels;
-       var elementToMove = select.selectedIndex;
-       if (elementToMove!=-1) {
-               if (elementToMove<document.forms[0].channels.options.length-1) {
+   var options = select.options;
+   for (i=options.length-1; i > -1; i--) {
+     if (options[i].selected) { 
+       var elementToMove = options[i].index;
+              if (elementToMove!=-1 && 
elementToMove<document.forms[0].channels.options.length-1 && 
!options[elementToMove+1].selected) {
                        swap(elementToMove+1,elementToMove);
-                       select.selectedIndex++;
-                       fillHidden();
+             if(options[elementToMove+1].selected) {
+                options[elementToMove].selected = true;
+             }
+             else {
+                options[elementToMove].selected = false;
+             }
+             options[elementToMove+1].selected = true;
                }
        }
+   }
+    fillHidden();
 }
 
 function swap(index1, index2) {
@@ -29,6 +50,7 @@
        var t = options[index1].text;
        options[index1].text = options[index2].text;
        options[index2].text = t;
+
 }
 
 function fillHidden() {


Index: reordercontent.jsp
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository/reordercontent.jsp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- reordercontent.jsp  21 May 2007 18:06:14 -0000      1.3
+++ reordercontent.jsp  23 Jun 2008 10:18:22 -0000      1.4
@@ -50,7 +50,7 @@
        <table>
          <tr>
            <td width="300">
-       <select size='20' style="width:100%" name="channels">
+       <select size='20' style="width:100%" name="channels" multiple="true">
   <mm:listnodes>
                <option><mm:field name="title"/></option>
   </mm:listnodes>


Index: search.jsp
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository/search.jsp,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- search.jsp  4 Jun 2008 05:18:09 -0000       1.20
+++ search.jsp  23 Jun 2008 10:18:22 -0000      1.21
@@ -322,12 +322,13 @@
       <mm:first>
          <[EMAIL PROTECTED] file="searchpages.jsp" %>
 
-
-          <mm:compare referid="action" value="link" >
              <form action="LinkToChannelAction.do" name="linkForm">
+         <mm:compare referid="action" value="link" inverse="true">
+             <input type="button" class="button" name="massdelete" 
onclick="javascript:deleteContent('massdelete','<fmt:message 
key="recyclebin.massremoveconfirm"/>' )" value="<fmt:message 
key="content.delete.massdelete" />"/>
+         </mm:compare>
+          <mm:compare referid="action" value="link" >
                 <input type="submit" class="button" value="<fmt:message 
key="searchform.link.submit" />"/>
           </mm:compare>
-
           <table>
             <thead>
                <tr>
@@ -336,8 +337,8 @@
                         <input type="hidden" name="channelnumber" 
value="<mm:write referid="linktochannel"/>" />
                         <input type="hidden" name="channel" value="<mm:write 
referid="linktochannel"/>" />
                         <mm:present referid="returnurl"><input type="hidden" 
name="returnurl" value="<mm:write referid="returnurl"/>"/></mm:present>
-                        <input type="checkbox" 
onclick="selectAll(this.checked, 'linkForm', 'link_');" value="on" 
name="selectall" />
                      </mm:compare>
+                      <input type="checkbox" onclick="selectAll(this.checked, 
'linkForm', 'chk_');" value="on" name="selectall" />
                   </th>
                   <th><a href="javascript:orderBy('otype')" class="headerlink" 
><fmt:message key="locate.typecolumn" /></a></th>
                   <th><a href="javascript:orderBy('title')" class="headerlink" 
><fmt:message key="locate.titlecolumn" /></a></th>
@@ -378,6 +379,16 @@
 
                      <tr <mm:even inverse="true">class="swap"</mm:even>>
                         <td style="white-space: nowrap;">
+               <cmsc:rights nodeNumber="${creationRelNumber}" var="rights"/>
+               <c:if test="${creationRelNumber == trashnumber && rights == 
'webmaster'}">
+                   <input type="checkbox" value="permanentDelete:<mm:field 
name="number" />" name="chk_<mm:field name="number" />" 
onClick="document.forms['linkForm'].elements.selectall.checked=false;"/>
+                                  </c:if>
+                               <c:if test="${creationRelNumber != trashnumber 
&& (rights == 'writer' || rights == 'chiefeditor' || rights == 'editor' || 
rights == 'webmaster')}">
+                 <input type="checkbox" value="moveToRecyclebin:<mm:field 
name="number" />" name="chk_<mm:field name="number" />" 
onClick="document.forms['linkForm'].elements.selectall.checked=false;"/>
+                                  </c:if>
+                                      
+              
+                         
                                <%-- also show the edit icon when we return 
from an edit wizard! --%>
                                <mm:write referid="action" jspvar="action" 
write="false"/>
                                <c:if test="${action == 'search' || action == 
'save' || action == 'cancel'}">
@@ -387,9 +398,7 @@
                                </mm:url>">
                                   <img src="../gfx/icons/page_edit.png" 
alt="<fmt:message key="searchform.icon.edit.title" />" title="<fmt:message 
key="searchform.icon.edit.title" />" /></a>
                                        </c:if>
-                           <mm:compare referid="action" value="link">
-                              <input type="checkbox" value="<mm:field 
name="number" />" name="link_<mm:field name="number" />" 
onClick="document.forms['linkForm'].elements.selectall.checked=false;"/>
-                           </mm:compare>
+                         
                            <mm:compare referid="action" value="select">
                                <script>
                                        function link<mm:field 
name="number"/>() {
@@ -407,7 +416,7 @@
                                   <img src="../gfx/icons/link.png" 
title="<fmt:message key="searchform.icon.select.title" />" /></a>
                            </mm:compare>
 
-                               <cmsc:rights nodeNumber="${creationRelNumber}" 
var="rights"/>
+
                                <c:if test="${creationRelNumber == trashnumber 
&& rights == 'webmaster'}">
                                        <a 
href="javascript:deleteContent('<mm:field name='number'/>','<fmt:message 
key="recyclebin.removeconfirm"/>' )">
                                                <img 
src="../gfx/icons/delete.png" title="<fmt:message 
key="searchform.icon.delete.recyclebin" />" alt="<fmt:message 
key="searchform.icon.delete.recyclebin" />"/>
@@ -493,10 +502,15 @@
       <mm:last>
             </tbody>
          </table>
+          <mm:compare referid="action" value="link" inverse="true">
+             <input type="submit" class="button" name="massdelete" 
onclick="javascript:deleteContent('massdelete','<fmt:message 
key="recyclebin.removeconfirm"/>' )" value="<fmt:message 
key="content.delete.massdelete" />"/>
+         </mm:compare>
             <mm:compare referid="linktochannel" value="" inverse="true">
                      <input type="submit" class="button" value="<fmt:message 
key="searchform.link.submit" />"/>
-               </form>
+
             </mm:compare>
+
+          </form>
          <[EMAIL PROTECTED] file="searchpages.jsp" %>
       </mm:last>
    </mm:list>


Index: unlinkcreation.jsp
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer/cmsc/contentrepository/src/webapp/editors/repository/unlinkcreation.jsp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- unlinkcreation.jsp  21 May 2007 18:06:14 -0000      1.3
+++ unlinkcreation.jsp  23 Jun 2008 10:18:22 -0000      1.4
@@ -23,9 +23,12 @@
 <mm:import externid="creationchannel" vartype="Node"/>
 <mm:import externid="contentchannels" vartype="List"/>
 <mm:import externid="trashchannel" vartype="Node"/>
-
+<c:set value="LinkToChannelAction.do" var="url"/>
+<c:if test="${not empty action && action =='massmove'}">
+   <c:set value="contentMassDelete.do" var="url"/>
+</c:if>
 <mm:import externid="returnurl" />
-
+<mm:import externid="offset" />
 <mm:node referid="creationchannel">
        <mm:import id="creationnumber"><mm:field name="number"/></mm:import>
 </mm:node>
@@ -48,7 +51,7 @@
        <mm:import id="channelnumber"><mm:field name="number"/></mm:import>
        
        <mm:compare referid="channelnumber" referid2="creationnumber" 
inverse="true">
-        <mm:url page="LinkToChannelAction.do" id="url" write="false" >
+        <mm:url page="${url}" id="url" write="false" >
            <mm:param name="action" value="unlink"/>
            <mm:param name="channelnumber" value="$creationnumber"/>
            <mm:param name="objectnumber" value="$contentnumber"/>
@@ -56,6 +59,9 @@
            <mm:present referid="returnurl">
                   <mm:param name="returnurl" value="$returnurl"/>
            </mm:present>
+           <mm:present referid="offset">
+                  <mm:param name="offset" value="$offset"/>
+           </mm:present>
         </mm:url>
         <li>
                <a href="<mm:write referid="url"/>">
@@ -67,11 +73,14 @@
 
 <mm:node referid="trashchannel">
        <mm:import id="trashnumber"><mm:field name="number"/></mm:import>
-       <mm:url page="LinkToChannelAction.do" id="trashurl" write="false" >
+       <mm:url page="${url}" id="trashurl" write="false" >
                <mm:param name="action" value="unlink"/>
                <mm:param name="channelnumber" value="$creationnumber"/>
                <mm:param name="objectnumber" value="$contentnumber"/>
                <mm:param name="destionationchannel" value="$trashnumber"/>
+      <mm:present referid="offset">
+              <mm:param name="offset" value="$offset"/>
+      </mm:present>
        </mm:url>
        <li class="trashbin">
                <a href="<mm:write referid="trashurl"/>"><fmt:message 
key="unlinkcreation.remove" /></a>
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to