<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>public/images/icons/drag_handle_white.gif</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -31,7 +31,7 @@ class PagesController &lt; ApplicationController
   after_filter  :user_track, :except =&gt; 'public'
   
   caches_page :public
-  cache_sweeper :page_sweeper, :only =&gt; [:update, :destroy, :reorder, :share, :transfer, :tags, :resize]
+  cache_sweeper :page_sweeper, :only =&gt; [:update, :destroy, :reorder, :reorder_sidebar, :share, :transfer, :tags, :resize]
   
   # GET /pages
   # GET /pages.xml
@@ -207,6 +207,23 @@ class PagesController &lt; ApplicationController
     end
   end
   
+  # POST /pages
+  # POST /pages.xml
+  def reorder_sidebar
+      index = 0
+      params[:page_ids].each do |page_id|
+          p = Page.find(page_id)
+          p.sidebar_order = index
+          p.save!
+          index += 1
+      end
+      
+      respond_to do |format|
+          format.html { head :ok }
+          format.xml  { head :ok }
+      end
+  end
+  
   # PUT /pages/1/transfer
   def transfer
     page = Page.find(params[:id])</diff>
      <filename>app/controllers/pages_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -326,7 +326,9 @@ class Page &lt; ActiveRecord::Base
   validates_uniqueness_of :address
   
   def sidebar_order
-    return self.get_setting(&quot;sidebar_order&quot;)
+      value = self.get_setting(&quot;sidebar_order&quot;)
+      return -1 if value == nil
+      return value
   end
   
   def sidebar_order=(value)</diff>
      <filename>app/models/page.rb</filename>
    </modified>
    <modified>
      <diff>@@ -39,7 +39,7 @@ class User &lt; ActiveRecord::Base
   belongs_to :home_page, :class_name =&gt; 'Page', :foreign_key =&gt; 'home_page_id', :dependent =&gt; :destroy
   has_many :pages, :foreign_key =&gt; 'created_by_id', :order =&gt; 'pages.title ASC', :dependent =&gt; :destroy
   has_and_belongs_to_many :shared_pages, :class_name =&gt; 'Page', :join_table =&gt; 'shared_pages', :order =&gt; 'pages.title ASC'
-  has_and_belongs_to_many :favourite_pages, :class_name =&gt; 'Page', :join_table =&gt; 'favourite_pages', :order =&gt; 'pages.title ASC'
+  has_and_belongs_to_many :favourite_pages, :class_name =&gt; 'Page', :join_table =&gt; 'favourite_pages'
   
   has_one :status, :dependent =&gt; :destroy
   has_many :journals, :order =&gt; 'created_at DESC', :dependent =&gt; :destroy</diff>
      <filename>app/models/user.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,15 @@
 - cclass = @pages.nil? ? nil : 'current'
 
-%ul#pageListItems
-  %li{:class =&gt; &quot;#{(@logged_user.home_page == @page ? 'current' : nil)} std-page-link&quot;, :page_id =&gt; @logged_user.home_page_id}
-    %a{:href =&gt; page_path(@logged_user.home_page)}= h @logged_user.home_page.title
-  %li{:class =&gt; &quot;#{cclass} std-page-link&quot;, :page_id =&gt; '0'}
-    %a{:href =&gt; pages_path}= :all_pages.l
-  %li{:class =&gt; &quot;std-page-separator&quot;}
-  - @logged_user.favourite_pages.each do |page|
-    %li{:class =&gt; (page == @page ? 'current' : nil), :page_id =&gt; page.id}
-      %a{:href =&gt; page_path(page)}= h page.title
+%div#pageListItems
+  %ul#stdPageListItems
+    %li{:class =&gt; &quot;#{(@logged_user.home_page == @page ? 'current' : nil)} std-page-link&quot;, :page_id =&gt; @logged_user.home_page_id}
+      %a{:href =&gt; page_path(@logged_user.home_page)}= h @logged_user.home_page.title
+    %li{:class =&gt; &quot;#{cclass} std-page-link&quot;, :page_id =&gt; '0'}
+      %a{:href =&gt; pages_path}= :all_pages.l
+    %li{:class =&gt; &quot;std-page-separator&quot;}
+  %ul#usrPageListItems
+    - (@logged_user.favourite_pages.sort { |x,y| x.sidebar_order &lt;=&gt; y.sidebar_order }).each do |page|
+      %li{:id =&gt; &quot;sidebar_page_#{page.id}&quot;, :class =&gt; &quot;#{(page == @page ? 'current' : nil)} sidebar_page&quot;, :page_id =&gt; page.id}
+        %a.usrPageLink{:href =&gt; page_path(page)}
+          %span= h page.title
+          %span.usr_page_handle</diff>
      <filename>app/views/pages/_listed_pages.html.haml</filename>
    </modified>
    <modified>
      <diff>@@ -75,6 +75,7 @@ ActionController::Routing::Routes.draw do |map|
   end
   
   map.resources :pages, :member =&gt; {:reorder =&gt; :post, 
+                                    :reorder_sidebar =&gt; :post,
                                     :transfer =&gt; :put,
                                     :favourite =&gt; :put,
                                     :duplicate =&gt; :post,</diff>
      <filename>config/routes.rb</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>public/images/icons/drag_handle.gif</filename>
    </modified>
    <modified>
      <diff>@@ -1141,7 +1141,7 @@ var Page = {
     },
     
     makeSortable: function() {
-        if (PAGE_READONLY)
+		if (PAGE_READONLY)
             return;
         
         var lists = $('.pageList .openItems .listItems');
@@ -1156,14 +1156,39 @@ var Page = {
         });
         
         // Add droppables
-       $('#pageListItems li').each(function(i) {
-        var el = $(this);
-        if (!el.hasClass('current')) {
-          el.droppable('destroy');
-          el.droppable({ hoverClass:'hover', accept:'.pageSlot', tolerance: 'pointer', drop:Page.dropSlotFunction});
-        }
-       });
-       
+		$('#stdPageListItems li').each(function(i)
+		{
+			var el = $(this);
+			if (!el.hasClass('current'))
+			{
+				el.droppable('destroy');
+				el.droppable({ hoverClass:'hover', accept:'.pageSlot', tolerance: 'pointer', drop:Page.dropSlotFunction});
+			}
+		});
+		
+		$('#usrPageListItems li').each(function(i)
+		{
+			var el = $(this);
+			if (!el.hasClass('current'))
+			{
+				el.droppable('destroy');
+				el.droppable({ hoverClass:'hover', accept:'.pageSlot', tolerance: 'pointer', drop:Page.dropSlotFunction});
+			}
+		});
+		
+		// Make sidebar sortable
+		$('#usrPageListItems').sortable('destroy');
+		$('#usrPageListItems').sortable({
+			axis: 'y',
+			handle: '.usr_page_handle',
+			items: '&gt; .sidebar_page',
+			opacity: 0.75,
+			update: function(e, ui)
+			{
+				$.post('/pages/reorder_sidebar', $('#usrPageListItems').sortable('serialize', {key: 'page_ids'}));
+			}
+		});
+		
        $('#slots').sortable('destroy');
        $('#slots').sortable({
          axis: 'y',</diff>
      <filename>public/javascripts/application.js</filename>
    </modified>
    <modified>
      <diff>@@ -208,6 +208,8 @@ form div {
 	background-color: black;
 }
 
+#stdPageListItems,
+#usrPageListItems,
 #pageListItems {
     list-style-image: none;
     list-style-position: outside;
@@ -230,6 +232,21 @@ form div {
 #pageListItems li.current { background: gray; }
 #pageListItems li.current a { color: white; text-decoration: none; }
 
+#pageListItems li .usrPageLink { position: relative; }
+#pageListItems li:hover .usr_page_handle { display: block; }
+#pageListItems li .usr_page_handle {
+	cursor: move;
+	display: none;
+	width: 15px;
+	height: 15px;
+	background-image: url('/images/icons/drag_handle_white.gif');
+	background-repeat: no-repeat;
+	background-position: 2px 2px;
+	position: absolute;
+	top: 6px;
+	right: 5px;
+}
+
 .std-page-link {
 	font-weight: bold;
 	font-size: 120%;
@@ -345,7 +362,6 @@ li.albumPicture img {
 
 .pageSlotHandle .slot_handle {
     cursor: move;
-    
 }
 
 /* Page insert bar. Indicates current insertion point */</diff>
      <filename>public/stylesheets/pages.css</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>0684e377e062fc11216448b4b3c25426145c37d0</id>
    </parent>
  </parents>
  <author>
    <name>Qiushi (Billy) He</name>
    <email>qiushihe@me.com</email>
  </author>
  <url>http://github.com/jamesu/rucksack/commit/1e32a8a4a017477332a9de0d01c08a053a028485</url>
  <id>1e32a8a4a017477332a9de0d01c08a053a028485</id>
  <committed-date>2009-05-27T03:25:26-07:00</committed-date>
  <authored-date>2009-05-23T16:26:18-07:00</authored-date>
  <message>Made sidebar pages sortable

Signed-off-by: James Urquhart &lt;jamesu@gmail.com&gt;</message>
  <tree>83b9170e1d7f4829fba20856ecb0710df12b8aad</tree>
  <committer>
    <name>James Urquhart</name>
    <email>jamesu@gmail.com</email>
  </committer>
</commit>
