public
Description: The easy to use rails wiki
Homepage: http://signalwiki.com
Clone URL: git://github.com/queso/signal-wiki.git
Added revisions, diffs, and refactored the page rendering code
codafoo (author)
Sun Apr 13 19:36:59 -0700 2008
queso (committer)
Fri Apr 18 10:41:19 -0700 2008
commit  a4bb4c42027ce1cc8bffde040084ee791160f0a0
tree    fa618644a2942d8ecbad5675a25bfe561d4aac0e
parent  2899d21f259e8ad291590271afc47d330e398ed3
...
4
5
6
7
 
8
9
10
...
21
22
23
24
 
25
26
27
...
33
34
35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
37
38
39
 
40
41
42
 
43
44
45
...
4
5
6
 
7
8
9
10
...
21
22
23
 
24
25
26
27
...
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 
57
58
59
 
60
61
62
63
0
@@ -4,7 +4,7 @@ class PagesController < ApplicationController
0
   before_filter :check_private, :only => [:show, :revision]
0
   caches_page :show
0
   cache_sweeper :page_sweeper, :only => [:create, :update]
0
-
0
+ include HTMLDiff
0
   
0
   # GET /pages
0
   # GET /pages.xml
0
@@ -21,7 +21,7 @@ class PagesController < ApplicationController
0
   # GET /pages/1.xml
0
   def show
0
     @page = site.pages.find_by_permalink(params[:id] || "home")
0
-
0
+ @version = @page.versions.find_by_version(@page.version)
0
     
0
     if @page
0
       respond_to do |format|
0
@@ -33,13 +33,31 @@ class PagesController < ApplicationController
0
       redirect_to new_page_url()
0
     end
0
   end
0
+
0
+ def diff
0
+ @page = site.pages.find_by_permalink(params[:id])
0
+ @v1 = @page.versions.find_by_version(params[:v1])
0
+ @v2 = @page.versions.find_by_version(params[:v2])
0
+ @diff = htmldiff(@v2.body,@v1.body)
0
+ respond_to do |format|
0
+ format.html
0
+ end
0
+ end
0
+
0
+ def revisions
0
+ @page = site.pages.find_by_permalink(params[:id])
0
+ @revisions = @page.versions
0
+ respond_to do |format|
0
+ format.html
0
+ end
0
+ end
0
 
0
   def revision
0
     @page = site.pages.find_by_permalink(params[:id])
0
- @page = site.pages.find_version(@page.id, params[:version])
0
+ @version = @page.versions.find_by_version(params[:version])
0
     
0
     respond_to do |format|
0
- format.html
0
+ format.html { render :action => "show"}
0
     end
0
   end
0
 
...
59
60
61
 
 
 
 
 
 
 
 
62
63
64
...
59
60
61
62
63
64
65
66
67
68
69
70
71
72
0
@@ -59,6 +59,14 @@ class Page < ActiveRecord::Base
0
     end
0
   end
0
   
0
+ def next_version
0
+ self.versions.size > self.version ? self.version + 1 : false
0
+ end
0
+
0
+ def previous_version
0
+ self.version > 1 ? self.version - 1 : false
0
+ end
0
+
0
   def set_links
0
     Link.transaction do
0
       # outbound_links.delete_all
...
1
2
3
4
5
6
 
7
8
 
9
10
11
...
14
15
16
 
 
17
18
...
 
 
 
 
 
 
1
2
3
4
5
6
7
...
10
11
12
13
14
15
16
0
@@ -1,11 +1,7 @@
0
-<h2><%= link_to @page.title, wiki_page_url(@page.permalink) %></h2>
0
-
0
-
0
-<p class="wiki_body">
0
- <%= wikified_body(@page.body) %>
0
-</p>
0
+<%= render :partial => "page", :locals => {:page => @version} %>
0
 
0
 <% content_for :right do -%>
0
+
0
 <h5>Author: <%= author(@page.user_id) %></h5>
0
 <ul class="meta_info">
0
   <li><%= link_to('View previous revision', revision_page_url(:id => @page.permalink, :version => (@page.previous.version))) if @page.previous %></li>
0
@@ -14,4 +10,6 @@
0
   <%# FIXME Clean up this revision link logic %>
0
   <li><%= link_to 'Return to current revision', wiki_page_url(@page.permalink) %></li>
0
 </ul>
0
+ <%= render :partial => "right", :locals => {:page => @page, :version => @version} %>
0
+
0
 <% end -%>
0
\ No newline at end of file
...
1
 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
25
26
...
 
1
2
 
 
 
 
 
3
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
6
7
0
@@ -1,25 +1,6 @@
0
-<h2 class="title"><%=h @page.title %></h2>
0
+<%= render :partial => "page", :locals => {:page => @version} %>
0
 
0
-<div id="flag" title="<%= @page.class.name %>_<%= @page.id %>">Login or sign up to flag this page.</div>
0
-
0
-<p class="wiki_body">
0
- <%= wikified_body(auto_link(@page.body)) %>
0
-</p>
0
 
0
 <% content_for :right do -%>
0
-<h5>Author: <%= author(@page.user_id) %></h5>
0
-<ul class="meta_info">
0
- <li><%= link_to 'Edit this page', edit_page_path(@page) unless @page.locked? && logged_in? && !current_user.admin? %></li>
0
- <li><%= link_to((@page.locked? ? "Unlock this page" : "Lock this page"), lock_page_path(@page)) if logged_in? && current_user.admin? %></li>
0
- <li><%= link_to "Delete this page and all revisions", page_path(@page), :method => :delete if logged_in? && current_user.admin? && @page.permalink != 'home' %></li>
0
- <li><%= link_to('View previous revision', revision_page_url(:id => @page.permalink, :version => (@page.version - 1) )) if (@page.versions.size > 1 && @page.version > 1) %></li>
0
- <li><%= link_to 'Return to home', pages_path unless @page.permalink == "home" %></li>
0
- <li>Inbound links:
0
- <ul>
0
- <% @page.inbound_links.each do |link| -%>
0
- <li><%= link_to link.from_page.title, link.from_page %>
0
- <% end %>
0
- </ul>
0
- </li>
0
-</ul>
0
+ <%= render :partial => "right", :locals => {:page => @page, :version => @version}%>
0
 <% end -%>
0
\ No newline at end of file
...
6
7
8
9
 
10
11
12
...
6
7
8
 
9
10
11
12
0
@@ -6,7 +6,7 @@ ActionController::Routing::Routes.draw do |map|
0
   map.resource :session
0
   map.resource :site, :member => {:expire_cache => :get, :mark_all_private => :get}
0
   map.resources :users
0
- map.resources :pages, :member => {:revision => :get, :rollback => :get, :lock => :get}, :collection => {:search => :get}
0
+ map.resources :pages, :member => {:revision => :get, :rollback => :get, :lock => :get, :revisions => :get, :diff => :get}, :collection => {:search => :get}
0
   map.resources :attachments
0
 
0
   map.login '/login', :controller => 'sessions', :action => 'new'
...
225
226
227
 
 
 
 
 
 
 
 
 
 
 
228
...
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
0
@@ -225,3 +225,14 @@ a.attachment_link {
0
   text-decoration: none;
0
   margin: 0 auto;
0
 }
0
+
0
+del {
0
+ color: #999;
0
+ background-color: #ddd;
0
+}
0
+
0
+ins {
0
+ background-color: #cfc;
0
+ text-decoration: none;
0
+ color: #000;
0
+}
0
\ No newline at end of file

Comments

    No one has commented yet.