From d7da0420d71c19ce5327ccf5cc16b9409e7b30eb Mon Sep 17 00:00:00 2001 From: Daniela Soares Feitosa Date: Thu, 2 Jan 2014 02:58:39 +0000 Subject: [PATCH] Added methods to return data from specific version --- app/controllers/public/content_viewer_controller.rb | 6 +++--- app/helpers/application_helper.rb | 4 ++++ app/models/article.rb | 26 +++++++++++++++++++------- app/views/content_viewer/_article_versions.rhtml | 5 +++++ app/views/content_viewer/versioned_article.rhtml | 44 ++++++++++++++++++++++---------------------- test/unit/article_test.rb | 32 ++++++++++++++++++++++++++++++++ 6 files changed, 85 insertions(+), 32 deletions(-) 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 0317963..e6ea205 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[:rev] + @version = params[:rev] if path.blank? @page = profile.home_page @@ -44,8 +44,8 @@ class ContentViewerController < ApplicationController return end - if version - @versioned_article = @page.versions.find_by_version(version) + if @version + @versioned_article = @page.versions.find_by_version(@version) render :template => 'content_viewer/versioned_article.rhtml' return end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 998e319..0608091 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -1402,4 +1402,8 @@ module ApplicationHelper content.nil? ? '' : content.id.to_s end + def display_article_versions(article, version = nil) + content_tag('ul', article.versions.map {|v| link_to("r#{v.version}", @page.url.merge(:rev => v.version))}) + end + end diff --git a/app/models/article.rb b/app/models/article.rb index 99cc99f..908bfb1 100644 --- a/app/models/article.rb +++ b/app/models/article.rb @@ -604,17 +604,24 @@ class Article < ActiveRecord::Base false end - def author - if versions.empty? - last_changed_by - else - author_id = versions.first.last_changed_by_id + def author(version_number = nil) + if version_number + version = versions.find_by_version(version_number) + author_id = version.last_changed_by_id Person.exists?(author_id) ? Person.find(author_id) : nil + else + if versions.empty? + last_changed_by + else + author_id = versions.first.last_changed_by_id + Person.exists?(author_id) ? Person.find(author_id) : nil + end end end - def author_name - author ? author.name : (setting[:author_name] || _('Unknown')) + def author_name(version_number = nil) + person = version_number ? author(version_number) : author + person ? person.name : (setting[:author_name] || _('Unknown')) end def author_url @@ -625,6 +632,11 @@ class Article < ActiveRecord::Base author ? author.id : nil end + def version_license(version_number = nil) + return license if version_number.nil? + profile.environment.licenses.find_by_id(versions.find_by_version(version_number).license_id) + end + alias :active_record_cache_key :cache_key def cache_key(params = {}, the_profile = nil, language = 'en') active_record_cache_key+'-'+language + diff --git a/app/views/content_viewer/_article_versions.rhtml b/app/views/content_viewer/_article_versions.rhtml new file mode 100644 index 0000000..d4339e4 --- /dev/null +++ b/app/views/content_viewer/_article_versions.rhtml @@ -0,0 +1,5 @@ +