]> code.citadel.org Git - citadel.git/blobdiff - webcit/static/summaryview.js
* Give newer, faster browsers the full at-once listview experience, older versions...
[citadel.git] / webcit / static / summaryview.js
index fd7b4f1abfd6010278a1dabf79209de9563c091f..8ef7799c9c66d1a824bdb8372c89be3d7fa6cd23 100644 (file)
@@ -1,7 +1,10 @@
-/** Webcit Summary View v2
-    All comments, flowers and death threats to Mathew McBride
-    <matt@mcbridematt.dhs.org> / <matt@comalies>
-*/
+/**
+ * Webcit Summary View v2
+ *   All comments, flowers and death threats to Mathew McBride
+ *   <matt@mcbridematt.dhs.org> / <matt@comalies>
+ * Copyright 2009 The Citadel Team
+ * Licensed under the GPL V3
+ */
 document.observe("dom:loaded", createMessageView);
 
 var message_view = null;
@@ -35,7 +38,43 @@ var toggles = {};
 
 var nummsgs = 0;
 var startmsg = 0;
+var is_safe_mode = true;
+/* The following code is VERY evil! Hopefully the need for it will evaporate in the future.
+   We only want newer browsers with Javascript JIT's to use the newer message view, unless the user explicitly chooses new/safe view */
+function determineSafeMode() {
+  if (summary_view_pref == false) {
+    var userAgent = navigator.userAgent;
+    var gecko = userAgent.indexOf("Gecko/");
+    var opera = userAgent.indexOf("Presto/"); // check for rendering engine
+    var chrome = userAgent.indexOf("Chrome/");
+    var safari = userAgent.indexOf("Safari/");
+    var phone = userAgent.indexOf("Mobile");
+    if (phone > 0) {
+      is_safe_mode = true; /* Don't serve to mobiles */
+    } else if (gecko > 0) {
+      var version = userAgent.substring(gecko+6,gecko+15);
+      if (version > 20090600) {
+       is_safe_mode = false;
+      }
+    } else if (opera > 0) {
+      var prestoVersion = userAgent.substring(opera+7,opera+10);
+      if (prestoVersion >= 2.2) {
+       is_safe_mode = false;
+      }
+    } else if (chrome > 0) {
+      is_safe_mode = false;
+    } else if (safari > 0) {
+      var safariVersion = userAgent.substring(safari+7,safari+10);
+      if (safariVersion >= 525) {
+       is_safe_mode = false;
+      }
+    }
+  } else {
+  is_safe_mode = true;
+  }
+}
 function createMessageView() {
+  determineSafeMode();
   message_view = document.getElementById("message_list_body");
   loadingMsg = document.getElementById("loading");
   getMessages();
@@ -263,12 +302,13 @@ function CtdlMessageListClick(evt) {
     unmarkAllRows();
     markedRowId = parent.ctdlRowId;
     document.getElementById("preview_pane").innerHTML = "";
-    new Ajax.Updater('preview_pane', 'msg/'+msgId+'?Mail=1', {method: 'get'});
+    new Ajax.Updater('preview_pane', 'msg/'+msgId, {method: 'get'});
     markRow(parent);
     new Ajax.Request('ajax_servcmd', {
       method: 'post',
          parameters: 'g_cmd=SEEN ' + msgId + '|1',
          onComplete: CtdlMarkRowAsRead(parent)});
+  // If the shift key modifier is used, mark a range...
   } else if (event.button != 2 && event.shiftKey) {
     markRow(parent);
     var rowId = parent.ctdlRowId;
@@ -285,8 +325,14 @@ function CtdlMessageListClick(evt) {
       WCLog("Marking row "+x);
       markRow(rowArray[x]);
     }
+  // If the ctrl key modifier is used, toggle one message
   } else if (event.button != 2 && (event.ctrlKey || event.altKey)) {
-    markRow(parent);
+    if (parent.ctdlMarked == true) {
+      unmarkRow(parent);
+    }
+    else {
+      markRow(parent);
+    }
   }
 }
 function CtdlMarkRowAsRead(rowElement) {
@@ -335,7 +381,7 @@ function removeOldSortClass() {
     currentSorterToggle.className = "";
   }
 }
-function markRow( row) {
+function markRow(row) {
   var msgId = row.ctdlMsgId;
   row.className = row.className += " marked_row";
   row.ctdlMarked = true;