OSDN Git Service

Wiki: history
authorValery Sizov <vsv2711@gmail.com>
Sun, 19 Feb 2012 19:52:05 +0000 (21:52 +0200)
committerValery Sizov <vsv2711@gmail.com>
Sun, 19 Feb 2012 19:52:05 +0000 (21:52 +0200)
app/controllers/wikis_controller.rb
app/models/wiki.rb
app/views/wikis/history.html.haml [new file with mode: 0644]
app/views/wikis/show.html.haml
config/routes.rb
db/migrate/20120219193300_add_user_to_wiki.rb [new file with mode: 0644]
db/schema.rb

index 5d3f72a..9a1638f 100644 (file)
@@ -4,7 +4,11 @@ class WikisController < ApplicationController
   layout "project"
   
   def show
-    @wiki = @project.wikis.where(:slug => params[:id]).order("created_at").last
+    if params[:old_page_id]
+      @wiki = @project.wikis.find(params[:old_page_id])
+    else
+      @wiki = @project.wikis.where(:slug => params[:id]).order("created_at").last
+    end
     respond_to do |format|
       if @wiki
         format.html
@@ -22,6 +26,7 @@ class WikisController < ApplicationController
 
   def create
     @wiki = @project.wikis.new(params[:wiki])
+    @wiki.user = current_user
 
     respond_to do |format|
       if @wiki.save
@@ -31,6 +36,10 @@ class WikisController < ApplicationController
       end
     end
   end
+
+  def history
+    @wikis = @project.wikis.where(:slug => params[:id]).order("created_at")
+  end
   
   def destroy
     @wiki = @project.wikis.find(params[:id])
index b1ecc06..62ac4cb 100644 (file)
@@ -1,7 +1,8 @@
 class Wiki < ActiveRecord::Base
   belongs_to :project
+  belongs_to :user
 
-  validates :content, :title, :presence => true
+  validates :content, :title, :user_id, :presence => true
   validates :title, :length => 1..250
 
   before_update :set_slug
diff --git a/app/views/wikis/history.html.haml b/app/views/wikis/history.html.haml
new file mode 100644 (file)
index 0000000..513f377
--- /dev/null
@@ -0,0 +1,14 @@
+%h2 Versions
+%table
+  %thead
+    %tr
+      %th #
+      %th last edit
+      %th created by
+  %tbody
+    - @wikis.each_with_index do |wiki_page, i|
+      %tr
+        %td= i + 1
+        %td= link_to wiki_page.created_at.to_s(:short), project_wiki_path(@project, wiki_page, :old_page_id => wiki_page.id)
+        %td= wiki_page.user.name
+
index 59c1778..97e1231 100644 (file)
@@ -1,6 +1,8 @@
 %h3
   = @wiki.title
   - if can? current_user, :write_wiki, @project
+    = link_to history_project_wiki_path(@project, @wiki), :class => "right btn small" do
+      History
     = link_to edit_project_wiki_path(@project, @wiki), :class => "right btn small" do
       Edit
 
index ef2ff70..eae5b7e 100644 (file)
@@ -56,7 +56,11 @@ Gitlab::Application.routes.draw do
       get "files"
     end
 
-    resources :wikis, :only => [:show, :edit, :destroy, :create]
+    resources :wikis, :only => [:show, :edit, :destroy, :create] do
+      member do
+        get "history"
+      end
+    end
 
     resource :repository do 
       member do 
diff --git a/db/migrate/20120219193300_add_user_to_wiki.rb b/db/migrate/20120219193300_add_user_to_wiki.rb
new file mode 100644 (file)
index 0000000..8a6c0a0
--- /dev/null
@@ -0,0 +1,6 @@
+class AddUserToWiki < ActiveRecord::Migration
+  def change
+    add_column :wikis, :user_id, :integer
+
+  end
+end
index 752da4b..c32df7e 100644 (file)
@@ -11,7 +11,7 @@
 #
 # It's strongly recommended to check this file into your version control system.
 
-ActiveRecord::Schema.define(:version => 20120219140810) do
+ActiveRecord::Schema.define(:version => 20120219193300) do
 
   create_table "issues", :force => true do |t|
     t.string   "title"
@@ -166,6 +166,7 @@ ActiveRecord::Schema.define(:version => 20120219140810) do
     t.datetime "created_at", :null => false
     t.datetime "updated_at", :null => false
     t.string   "slug"
+    t.integer  "user_id"
   end
 
 end