changeset 27:a42400d52a1e

Changed recent changes heading to two separate 'unpublished changes' and 'published changes' sections.
author Atul Varma <varmaa@toolness.com>
date Thu, 12 Feb 2009 23:00:03 -0800
parents 52f02c6edfa9
children 602baadb535a
files static-files/wiki.css static-files/wiki.html static-files/wiki.js
diffstat 3 files changed, 33 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/static-files/wiki.css	Thu Feb 12 22:23:10 2009 -0800
+++ b/static-files/wiki.css	Thu Feb 12 23:00:03 2009 -0800
@@ -27,11 +27,11 @@
     margin: 0 auto;
 }
 
-#recent-changes {
-    display: none;
+#unpublished-changes div {
+    cursor: pointer;
 }
 
-#recent-changes div {
+#published-changes div {
     cursor: pointer;
 }
 
--- a/static-files/wiki.html	Thu Feb 12 22:23:10 2009 -0800
+++ b/static-files/wiki.html	Thu Feb 12 23:00:03 2009 -0800
@@ -19,8 +19,11 @@
     <img src="http://www.yahoo.com/favicon.ico">
     <img src="http://openid.net/favicon.ico">
   </div>
-  <div id="recent-changes">
-    <h1>Recent Changes</h1>
+  <div id="unpublished-changes">
+    <h1>Unpublished Changes</h1>
+  </div>
+  <div id="published-changes">
+    <h1>Published Changes</h1>
   </div>
 </div>
 <div id="content"></div>
--- a/static-files/wiki.js	Thu Feb 12 22:23:10 2009 -0800
+++ b/static-files/wiki.js	Thu Feb 12 23:00:03 2009 -0800
@@ -38,7 +38,7 @@
   PART_SEPARATOR: "\n\n",
   creole: null,
   editingElement: null,
-  latestRemoteChangeset: null,
+  latestPublishedChangeset: null,
   localChanges: [],
   eventHandlers: {}
 };
@@ -61,11 +61,18 @@
   return partsMarkup.join(App.PART_SEPARATOR);
 };
 
-App.saveChanges = function saveChanges(isUserChange) {
+App.saveChanges = function saveChanges(options) {
+  var isUserChange = options.isUserChange;
+  var date = options.date ? new Date(options.date) : new Date();
+  var container;
+  if (isUserChange)
+    container = $('#unpublished-changes');
+  else
+    container = $('#published-changes');
+
   var markup = App.getMarkup($(window.document));
-  var changeset = {date: new Date(),
-                   content: markup,
-                   parentRemoteChangeset: App.latestRemoteChangeset};
+  var changeset = {date: date,
+                   content: markup};
   App.localChanges.push(changeset);
   var changesetElem = $('<div class="changeset selected"></div>');
   function setText() {
@@ -78,7 +85,7 @@
 
       aEvt.preventDefault();
       if (aEvt.shiftKey) {
-        $('#recent-changes').find('.changeset').removeClass('diffed');
+        $(window.document).find('.changeset').removeClass('diffed');
         var newerVersion = App.getMarkup($("#content"));
         var diff = $('<div class="diff"></div>');
         var markupDiv = $('<div class="creole-markup"></div>');
@@ -89,20 +96,19 @@
         $("#content").append(markupDiv);
         $(this).addClass('diffed');
       } else {
-        $('#recent-changes').find('.changeset').removeClass('selected');
-        $('#recent-changes').find('.changeset').removeClass('diffed');
+        $(window.document).find('.changeset').removeClass('selected')
+                                             .removeClass('diffed');
         $(this).addClass('selected');
         $("#content").empty();
         $("#content").append(App.createParts(changeset.content));
       }
     }
   );
-  $('#recent-changes').find('.changeset').removeClass('selected');
-  $('#recent-changes').find('.changeset').removeClass('diffed');
-  $('#recent-changes').find('h1').after(changesetElem);
+  $(window.document).find('.changeset').removeClass('selected')
+                                       .removeClass('diffed');
+  container.find('h1').after(changesetElem);
   if (isUserChange) {
-    $('#recent-changes').fadeIn();
-    var maybeNewChangeset = App.latestRemoteChangeset + 1;
+    var maybeNewChangeset = App.latestPublishedChangeset + 1;
     var jsonData = JSON.stringify({date: changeset.date.toString(),
                                    content: changeset.content});
     jQuery.ajax({url: '/' + maybeNewChangeset,
@@ -112,7 +118,8 @@
                    // weird things can happen here, e.g. if the user
                    // makes another edit while the XHR is being
                    // processed.
-                   App.latestRemoteChangeset = maybeNewChangeset;
+                   App.latestPublishedChangeset = maybeNewChangeset;
+                   $('#published-changes').find('h1').after(changesetElem);
                  },
                  error: function(xhr, textStatus, errorThrown) {
                    // TODO: Do something here.
@@ -142,7 +149,7 @@
     var markup = $(this).attr("value");
     $(this).replaceWith(App.createParts(markup));
     if (markup != originalMarkup) {
-      App.saveChanges(true);
+      App.saveChanges({isUserChange: true});
     }
   }
 
@@ -214,13 +221,14 @@
     });
 
   function onStatus(status) {
-    App.latestRemoteChangeset = status.max_changeset;
+    App.latestPublishedChangeset = status.max_changeset;
     jQuery.get("/" + status.max_changeset,
                {},
                function(obj) {
                  var text = obj.content;
                  $("#content").append(App.createParts(text));
-                 App.saveChanges(false);
+                 App.saveChanges({isUserChange: false,
+                                  date: obj.date});
                },
                "json");
   }