From 7fe31f1a342c2ddcfd73a183816c4702085db85d Mon Sep 17 00:00:00 2001 From: Fabio Teixeira Date: Wed, 20 May 2015 11:31:10 -0300 Subject: [PATCH] Fixes for merge request 579 --- app/controllers/my_profile/cms_controller.rb | 12 ++++++------ app/helpers/application_helper.rb | 22 +++++++--------------- app/models/article.rb | 15 +++++++-------- plugins/tolerance_time/lib/tolerance_time_plugin.rb | 13 +++++++++++-- test/functional/content_viewer_controller_test.rb | 2 ++ test/unit/application_helper_test.rb | 10 +++++----- 6 files changed, 38 insertions(+), 36 deletions(-) diff --git a/app/controllers/my_profile/cms_controller.rb b/app/controllers/my_profile/cms_controller.rb index c00dcae..7aab61f 100644 --- a/app/controllers/my_profile/cms_controller.rb +++ b/app/controllers/my_profile/cms_controller.rb @@ -145,12 +145,12 @@ class CmsController < MyProfileController article_data.merge!(params[:article]) if params[:article] article_data.merge!(:profile => profile) if profile - if params[:clone] - current_article = profile.articles.find(params[:id]) - @article = current_article.dup - else - @article = klass.new(article_data) - end + @article = if params[:clone] + current_article = profile.articles.find(params[:id]) + current_article.copy_without_save + else + klass.new(article_data) + end parent = check_parent(params[:parent_id]) if parent diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 8126484..d7c68dd 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -932,23 +932,15 @@ module ApplicationHelper end def label_for_clone_article(article) - klass = class_to_s(article.class) - _("Clone #{klass}") - end + valid_type_names = ["Folder", "Blog", "Event", "Forum"] - def class_to_s(article_type) - classes = { - Folder => _("folder"), - Blog => _("blog"), - Event => _("event"), - Forum => _("forum"), - } + article_type = if valid_type_names.include?(article.class.to_s) + article.class.to_s + else + "Article" + end - if classes.has_key?(article_type) - classes[article_type] - else - _("article") - end + _('Clone %s') % article_type end def add_rss_feed_to_head(title, url) diff --git a/app/models/article.rb b/app/models/article.rb index bc6e5f5..04516a7 100644 --- a/app/models/article.rb +++ b/app/models/article.rb @@ -577,25 +577,24 @@ class Article < ActiveRecord::Base profile.visible? && profile.public? && published? end - - def copy(options = {}) + def copy_without_save(options = {}) attrs = attributes.reject! { |key, value| ATTRIBUTES_NOT_COPIED.include?(key.to_sym) } attrs.merge!(options) object = self.class.new attrs.each do |key, value| object.send(key.to_s+'=', value) end + object + end + + def copy(options = {}) + object = copy_without_save(options) object.save object end def copy!(options = {}) - attrs = attributes.reject! { |key, value| ATTRIBUTES_NOT_COPIED.include?(key.to_sym) } - attrs.merge!(options) - object = self.class.new - attrs.each do |key, value| - object.send(key.to_s+'=', value) - end + object = copy_without_save(options) object.save! object end diff --git a/plugins/tolerance_time/lib/tolerance_time_plugin.rb b/plugins/tolerance_time/lib/tolerance_time_plugin.rb index 4fbeb7f..0ba2eba 100644 --- a/plugins/tolerance_time/lib/tolerance_time_plugin.rb +++ b/plugins/tolerance_time/lib/tolerance_time_plugin.rb @@ -56,9 +56,18 @@ class ToleranceTimePlugin < Noosfero::Plugin end def content_expire_edit(content) + content_expire_for(content, "editing") + end + + def content_expire_clone(content) + content_expire_for(content, "cloning") + end + + private + + def content_expire_for(content, action) if ToleranceTimePlugin.expired?(content) - _('The tolerance time for editing this content is over.') + _('The tolerance time for %s this content is over.') % action end end - end diff --git a/test/functional/content_viewer_controller_test.rb b/test/functional/content_viewer_controller_test.rb index b2bc944..6a449e0 100644 --- a/test/functional/content_viewer_controller_test.rb +++ b/test/functional/content_viewer_controller_test.rb @@ -1252,9 +1252,11 @@ class ContentViewerControllerTest < ActionController::TestCase should 'expire article actions button if any plugins says so' do class Plugin1 < Noosfero::Plugin def content_expire_edit(content); 'This button is expired.'; end + def content_expire_clone(content); 'This button is expired.'; end end class Plugin2 < Noosfero::Plugin def content_expire_edit(content); nil; end + def content_expire_clone(content); nil; end end Noosfero::Plugin.stubs(:all).returns([Plugin1.name, Plugin2.name]) diff --git a/test/unit/application_helper_test.rb b/test/unit/application_helper_test.rb index 8f98731..4c7ae44 100644 --- a/test/unit/application_helper_test.rb +++ b/test/unit/application_helper_test.rb @@ -1010,11 +1010,11 @@ class ApplicationHelperTest < ActionView::TestCase end should "return the related class string" do - assert_equal "Clone folder", label_for_clone_article(Folder.new) - assert_equal "Clone blog", label_for_clone_article(Blog.new) - assert_equal "Clone event", label_for_clone_article(Event.new) - assert_equal "Clone forum", label_for_clone_article(Forum.new) - assert_equal "Clone article", label_for_clone_article(TinyMceArticle.new) + assert_equal "Clone Folder", label_for_clone_article(Folder.new) + assert_equal "Clone Blog", label_for_clone_article(Blog.new) + assert_equal "Clone Event", label_for_clone_article(Event.new) + assert_equal "Clone Forum", label_for_clone_article(Forum.new) + assert_equal "Clone Article", label_for_clone_article(TinyMceArticle.new) end protected -- libgit2 0.21.2