Add diff for wiki pages

This commit is contained in:
Patrick Gansterer 2016-03-06 21:05:06 +01:00
parent f5b6fbcf18
commit ad036c948f
6 changed files with 34 additions and 6 deletions

View file

@ -130,6 +130,13 @@ class PagesController < ApplicationController
end end
end end
def diff
@page = Page.find(params[:id])
@old_version = Page::Version.find_by_page_id_and_lock_version params[:id], params[:old]
@new_version = Page::Version.find_by_page_id_and_lock_version params[:id], params[:new]
@diff = Diffy::Diff.new(@old_version.body, @new_version.body).to_s(:html)
end
def version def version
@page = Page.find(params[:id]) @page = Page.find(params[:id])
@version = Page::Version.find_by_page_id_and_lock_version params[:id], params[:version] @version = Page::Version.find_by_page_id_and_lock_version params[:id], params[:version]

View file

@ -0,0 +1,7 @@
- title t('.title', title: @page.title, old: @old_version.lock_version, new: @new_version.lock_version)
%style= Diffy::CSS
= raw @diff
%hr
= link_to t('ui.back'), 'javascript:history.go(-1)', class: 'btn btn-primary'

View file

@ -12,12 +12,16 @@
%li= link_to t('.subpages'), "#subpages", 'data-toggle-this' => '#subpages' %li= link_to t('.subpages'), "#subpages", 'data-toggle-this' => '#subpages'
#versions.well.well-small{:style => "display:none"} #versions.well.well-small{:style => "display:none"}
= form_tag diff_page_path(@page), :method => :get do
%h3= t '.title_versions' %h3= t '.title_versions'
%ul.unstyled %ul.unstyled
- @page.versions.reverse.each do |version| - @page.versions.reverse.each_with_index do |version, index|
%li %li
= radio_button_tag :old, version.lock_version, index == 1
= radio_button_tag :new, version.lock_version, index == 0
= link_to I18n.l(version.updated_at, :format => t('.date_format')), version_page_path(@page, :version => version.lock_version) = link_to I18n.l(version.updated_at, :format => t('.date_format')), version_page_path(@page, :version => version.lock_version)
= "(#{show_user(User.find_by_id(version.updated_by))})" = "(#{show_user(User.find_by_id(version.updated_by))})"
= submit_tag t('.diff'), class: 'btn'
- unless @page.children.empty? - unless @page.children.empty?
#subpages.well.well-small{:style => "display:none"} #subpages.well.well-small{:style => "display:none"}

View file

@ -0,0 +1,6 @@
de:
pages:
diff:
title: "%{title} - Änderung von Version %{old} auf %{new}"
show:
diff: Versionen vergleichen

View file

@ -32,6 +32,8 @@ en:
redirect_notice: Redirected from %{page} ... redirect_notice: Redirected from %{page} ...
destroy: destroy:
notice: The page '%{page}' and all subpages have been deleted successfully. notice: The page '%{page}' and all subpages have been deleted successfully.
diff:
title: "%{title} - changes from version %{old} to %{new}"
edit: edit:
title: Edit page title: Edit page
error_stale_object: Warning, the page has just been edited by someone else. Please try again. error_stale_object: Warning, the page has just been edited by someone else. Please try again.
@ -68,6 +70,7 @@ en:
date_format: ! '%d-%m-%y %H:%M' date_format: ! '%d-%m-%y %H:%M'
delete: Delete page delete: Delete page
delete_confirm: ! 'Warning: all subpages will be deleted as well. Are you sure?' delete_confirm: ! 'Warning: all subpages will be deleted as well. Are you sure?'
diff: Compare versions
edit: Edit page edit: Edit page
last_updated: Last updated by <b>%{user}</b> on %{when} last_updated: Last updated by <b>%{user}</b> on %{when}
subpages: subpages subpages: subpages

View file

@ -6,6 +6,7 @@ Rails.application.routes.draw do
get :all, :on => :collection get :all, :on => :collection
get :version, :on => :member get :version, :on => :member
get :revert, :on => :member get :revert, :on => :member
get :diff, :on => :member
end end
get '/wiki/:permalink' => 'pages#show', :as => 'wiki_page' # , :constraints => {:permalink => /[^\s]+/} get '/wiki/:permalink' => 'pages#show', :as => 'wiki_page' # , :constraints => {:permalink => /[^\s]+/}
get '/wiki' => 'pages#show', :defaults => {:permalink => 'Home'}, :as => 'wiki' get '/wiki' => 'pages#show', :defaults => {:permalink => 'Home'}, :as => 'wiki'