Webcit dupe-zapper
authorWilfried Goesgens <dothebart@citadel.org>
Thu, 16 May 2013 22:14:19 +0000 (00:14 +0200)
committerWilfried Goesgens <dothebart@citadel.org>
Thu, 16 May 2013 22:14:19 +0000 (00:14 +0200)
A simple duplicate message finder - criterias are the subject, sender, sent date. If they're the same, its a duplicate. Messages are then moved to the trashcan of the current user.

webcit/static/t/display_main_menu.html
webcit/static/t/menu/advanced_roomcommands.html
webcit/static/zapduplicates.js [new file with mode: 0644]

index 04b15525847e3c4c1236b98c16d5a562c16a506d..c02ea4dc67cf1ab365b67a0127427cc1bb9c2099 100644 (file)
@@ -1,5 +1,7 @@
 <?=("head")>
 <?%("COND:LOGGEDIN", 1, 1, 1, "", ="paging")>
+                <script type="text/javascript" src="static/summaryview.js"></script> 
+                <script type="text/javascript" src="static/zapduplicates.js"></script> 
 <?ROOMBANNER>
 <div id="content">
 <table width="100%" cellspacing="10" cellpadding="0">
index cdb8e21518bb2e29724bb474c13d5fba3836f5ee..5d6d3fd489bcf439b66c3ccbc31a50f1303b1bff 100644 (file)
@@ -6,4 +6,5 @@
 <li><a href="do_template?template=room_create"><?_("Create a new room")></a></li>
 <li><a href="do_template?template=room_zap_this"><?_("Zap (forget) this room")></a></li>
 <li><a href="do_template?template=room_zapped_list"><?_("List all forgotten rooms")></a></li>
+<li><a href="javascript:TriggerLoadDupes()"><?_("Zap duplicate messages")></a> <span><?_("(Messages of similar subject, sender and date are moved to trash)")></span></li>
 </ul>
diff --git a/webcit/static/zapduplicates.js b/webcit/static/zapduplicates.js
new file mode 100644 (file)
index 0000000..d0e7c56
--- /dev/null
@@ -0,0 +1,64 @@
+function loadZapMessages(transport)
+{
+    var dupes = '';
+    var dupcount = 0;
+    try {
+       var data = evalJSON(transport.responseText);
+       if (!!data && transport.responseText.length < 2) {
+           alert("Message loading failed");
+       } 
+       nummsgs = data['nummsgs'];
+       msgs = data['msgs'];
+       var length = msgs.length;
+       rowArray = new Array(length); // store so they can be sorted
+       WCLog("Row array length: "+rowArray.length);
+       for(var x=1; x<length; ++x) {
+           var currentRow = msgs[x];
+           var LastRow = msgs[x-1];
+           if ((currentRow[1] == LastRow[1]) &&
+               (currentRow[2] == LastRow[2]) &&
+               (currentRow[4] == LastRow[4]))
+           {
+               dupcount ++;
+               dupes += currentRow[0] + ',' ;
+               if (dupes.length > 800) {
+                   var mvCommand = "g_cmd=MOVE%20" + dupes + "|"+encodeURIComponent('Trash')+"|0";
+                   new Ajax.Request("ajax_servcmd", {
+                       parameters: mvCommand,
+                       method: 'post',
+                   });
+                   dupes = "";
+               }
+
+           }
+
+       }
+
+    } catch (e) {
+       window.alert(e+"|"+e.description);
+    }
+    var mvCommand = "g_cmd=MOVE%20" + dupes + "|"+encodeURIComponent('Trash')+"|0";
+    new Ajax.Request("ajax_servcmd", {
+       parameters: mvCommand,
+       method: 'post',
+    });
+
+    alert ('deleted: '+dupcount+'messages');
+}
+
+function TriggerLoadDupes ()
+{
+//    alert("bla");
+// http://127.0.0.1:2000/roommsgs?room=test%20rss&startmsg=0&stopmsg=499&SortBy=Subject&SortOrder=1
+       roomName = getTextContent(document.getElementById("rmname"));
+    var parameters = {'room':roomName, 'startmsg': 0, 'stopmsg': -1, 'SortBy' : 'Subject', 'SortOrder' : 1};
+
+       new Ajax.Request("roommsgs", {
+               method: 'get',
+                               onSuccess: loadZapMessages,
+                               parameters: parameters,
+                               sanitize: false,
+                               evalJSON: false,
+                               onFailure: function(e) { alert("Failure: " + e);}
+       });
+}
\ No newline at end of file