From 25f34b4db7f7269447bc565926d7a6fe60298218 Mon Sep 17 00:00:00 2001 From: Daniela Soares Feitosa Date: Sun, 19 Jan 2014 16:19:58 +0000 Subject: [PATCH] article_versions: list of versions on a new page --- app/controllers/public/content_viewer_controller.rb | 18 ++++++++++++------ app/helpers/article_helper.rb | 4 ++-- app/models/article.rb | 2 +- app/views/content_viewer/_article_toolbar.rhtml | 4 ++++ app/views/content_viewer/_article_versions.rhtml | 6 ------ app/views/content_viewer/article_versions.rhtml | 16 ++++++++++++++++ app/views/content_viewer/versioned_article.rhtml | 14 +++++--------- app/views/content_viewer/view_page.rhtml | 7 ------- config/routes.rb | 4 +++- features/article_versioning.feature | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------ public/stylesheets/application.css | 13 +------------ test/functional/content_viewer_controller_test.rb | 23 ++++++++++++++++------- test/integration/routing_test.rb | 15 +++++++++++++++ test/unit/article_test.rb | 2 +- 14 files changed, 130 insertions(+), 76 deletions(-) delete mode 100644 app/views/content_viewer/_article_versions.rhtml create mode 100644 app/views/content_viewer/article_versions.rhtml diff --git a/app/controllers/public/content_viewer_controller.rb b/app/controllers/public/content_viewer_controller.rb index 047ce38..0a2987c 100644 --- a/app/controllers/public/content_viewer_controller.rb +++ b/app/controllers/public/content_viewer_controller.rb @@ -7,7 +7,7 @@ class ContentViewerController < ApplicationController def view_page path = params[:page].join('/') - @version = params[:version] + @version = params[:version].to_i if path.blank? @page = profile.home_page @@ -46,7 +46,7 @@ class ContentViewerController < ApplicationController if @version @versioned_article = @page.versions.find_by_version(@version) - unless @versioned_article == @page.versions.latest + if @versioned_article && @page.versions.latest.version != @versioned_article.version render :template => 'content_viewer/versioned_article.rhtml' return end @@ -137,10 +137,16 @@ class ContentViewerController < ApplicationController end end -# def article_versions -# @page = profile.articles.find(params[:page]) -# @versions = @page.versions -# end + def article_versions + path = params[:page].join('/') + @page = profile.articles.find_by_path(path) + unless @page + render_not_found(@page) + return + end + render_access_denied unless @page.display_versions? + @versions = @page.versions.paginate(:per_page => per_page, :page => params[:npage]) + end protected diff --git a/app/helpers/article_helper.rb b/app/helpers/article_helper.rb index 417b41b..ea9046d 100644 --- a/app/helpers/article_helper.rb +++ b/app/helpers/article_helper.rb @@ -28,7 +28,7 @@ module ArticleHelper 'div', check_box(:article, :notify_comments) + content_tag('label', _('I want to receive a notification of each comment written by e-mail'), :for => 'article_notify_comments') + - observe_field(:article_accept_comments, :function => "$('article_notify_comments').disabled = ! $('article_accept_comments').checked;$('article_moderate_comments').disabled = ! $('article_accept_comments').checked") + observe_field(:article_accept_comments, :function => "$('article_notify_comments').disabled = ! $('article_accept_comments').checked;$('article_moderate_comments').disabled = ! $('article_accept_comments').checked") ) + content_tag( @@ -42,7 +42,7 @@ module ArticleHelper 'div', check_box(:article, :display_hits) + content_tag('label', _('I want this article to display the number of hits it received'), :for => 'article_display_hits') - ) : '') + + ) : '') + (article.can_display_versions? ? content_tag( diff --git a/app/models/article.rb b/app/models/article.rb index 2a36a3f..1a615ea 100644 --- a/app/models/article.rb +++ b/app/models/article.rb @@ -618,7 +618,7 @@ class Article < ActiveRecord::Base def author(version_number = nil) if version_number version = versions.find_by_version(version_number) - author_id = version.last_changed_by_id + author_id = version.last_changed_by_id if version Person.exists?(author_id) ? Person.find(author_id) : nil else if versions.empty? diff --git a/app/views/content_viewer/_article_toolbar.rhtml b/app/views/content_viewer/_article_toolbar.rhtml index 3e9723b..bb76ef4 100644 --- a/app/views/content_viewer/_article_toolbar.rhtml +++ b/app/views/content_viewer/_article_toolbar.rhtml @@ -48,6 +48,10 @@ <%= expirable_button @page, :suggest, content, url, options %> <% end %> + <% if @page.display_versions? %> + <%= button(:clock, _('All versions'), {:controller => 'content_viewer', :profile => profile.identifier, :action => 'article_versions'}, :id => 'article-versions-link') %> + <% end %> + <%= report_abuse(profile, :link, @page) %> diff --git a/app/views/content_viewer/_article_versions.rhtml b/app/views/content_viewer/_article_versions.rhtml deleted file mode 100644 index 5e7165a..0000000 --- a/app/views/content_viewer/_article_versions.rhtml +++ /dev/null @@ -1,6 +0,0 @@ -

<%= _('Versions') %>

-