From 85974948e778f5261cc24a2911bd652a91e950da Mon Sep 17 00:00:00 2001 From: Valery Sizov Date: Sun, 19 Feb 2012 21:52:05 +0200 Subject: [PATCH] Wiki: history --- app/controllers/wikis_controller.rb | 11 ++++++++++- app/models/wiki.rb | 3 ++- app/views/wikis/history.html.haml | 14 ++++++++++++++ app/views/wikis/show.html.haml | 2 ++ config/routes.rb | 6 +++++- db/migrate/20120219193300_add_user_to_wiki.rb | 6 ++++++ db/schema.rb | 3 ++- 7 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 app/views/wikis/history.html.haml create mode 100644 db/migrate/20120219193300_add_user_to_wiki.rb diff --git a/app/controllers/wikis_controller.rb b/app/controllers/wikis_controller.rb index 5d3f72a16..9a1638f2e 100644 --- a/app/controllers/wikis_controller.rb +++ b/app/controllers/wikis_controller.rb @@ -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]) diff --git a/app/models/wiki.rb b/app/models/wiki.rb index b1ecc06e1..62ac4cb8a 100644 --- a/app/models/wiki.rb +++ b/app/models/wiki.rb @@ -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 index 000000000..513f3777b --- /dev/null +++ b/app/views/wikis/history.html.haml @@ -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 + diff --git a/app/views/wikis/show.html.haml b/app/views/wikis/show.html.haml index 59c1778d0..97e1231cb 100644 --- a/app/views/wikis/show.html.haml +++ b/app/views/wikis/show.html.haml @@ -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 diff --git a/config/routes.rb b/config/routes.rb index ef2ff709c..eae5b7ea1 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -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 index 000000000..8a6c0a06e --- /dev/null +++ b/db/migrate/20120219193300_add_user_to_wiki.rb @@ -0,0 +1,6 @@ +class AddUserToWiki < ActiveRecord::Migration + def change + add_column :wikis, :user_id, :integer + + end +end diff --git a/db/schema.rb b/db/schema.rb index 752da4b54..c32df7ea1 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -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 -- 2.11.0