mark: A photo of Mark kneeling on top of the Taal Volcano in the Philippines. It was a long hike. (Default)
Mark Smith ([staff profile] mark) wrote in [site community profile] changelog2009-07-13 03:30 am

[dw-free] comment notifs not marked 'read' in inbox when acted upon

[commit: http://hg.dwscoalition.org/dw-free/rev/14d55325e78b]

http://bugs.dwscoalition.org/show_bug.cgi?id=1284

Mark inbox items as read when you interact with them.

Patch by [personal profile] kareila.

Files modified:
  • htdocs/js/esn_inbox.js
--------------------------------------------------------------------------------
diff -r f5182f9f9a31 -r 14d55325e78b htdocs/js/esn_inbox.js
--- a/htdocs/js/esn_inbox.js	Mon Jul 13 02:41:11 2009 +0000
+++ b/htdocs/js/esn_inbox.js	Mon Jul 13 03:30:02 2009 +0000
@@ -10,6 +10,7 @@ DOM.addEventListener(window, "load", fun
       ESN_Inbox.initTableSelection(folder);
       ESN_Inbox.initContentExpandButtons(folder);
       ESN_Inbox.initInboxBtns(folder, cur_folder);
+      ESN_Inbox.initActionLinks(folder);
   }
 });
 
@@ -165,6 +166,26 @@ ESN_Inbox.initInboxBtns = function (fold
     
     DOM.addEventListener($(folder + "_MarkAllRead"), "click", function(e) { ESN_Inbox.markAllRead(e, folder, cur_folder) });
     DOM.addEventListener($(folder + "_DeleteAll"), "click", function(e) { ESN_Inbox.deleteAll(e, folder, cur_folder) });
+};
+
+// set up action links
+ESN_Inbox.initActionLinks = function (folder) {
+    var actions = DOM.getElementsByClassName($(folder), "actions") || [];
+    for (var i=0; i < actions.length; i++) {
+        var links = actions[i].getElementsByTagName("a");
+        for (var j=0; j < links.length; j++) {
+            DOM.addEventListener(links[j], "click", function(e) { ESN_Inbox.markLinkedItemRead(e, folder) });
+        }
+    }
+};
+
+ESN_Inbox.markLinkedItemRead = function (evt, folder) {
+    Event.stop(evt);
+    var row = DOM.getFirstAncestorByClassName(evt.target, "InboxItem_Row");
+    var qid = row.getAttribute("lj_qid");
+    ESN_Inbox.updateItems('mark_read', evt, folder, qid);
+    window.open(evt.target.href);
+    return false;
 };
 
 ESN_Inbox.markRead = function (evt, folder) {
--------------------------------------------------------------------------------