Commit 7fe31f1a342c2ddcfd73a183816c4702085db85d

Authored by Fabio Teixeira
1 parent d7eeb588
Exists in clone_article

Fixes for merge request 579

Signed-off-by: Fabio Teixeira <fabio1079@gmail.com>
Signed-off-by: Gabriela Navarro <navarro1703@gmail.com>
app/controllers/my_profile/cms_controller.rb
@@ -145,12 +145,12 @@ class CmsController &lt; MyProfileController @@ -145,12 +145,12 @@ class CmsController &lt; MyProfileController
145 article_data.merge!(params[:article]) if params[:article] 145 article_data.merge!(params[:article]) if params[:article]
146 article_data.merge!(:profile => profile) if profile 146 article_data.merge!(:profile => profile) if profile
147 147
148 - if params[:clone]  
149 - current_article = profile.articles.find(params[:id])  
150 - @article = current_article.dup  
151 - else  
152 - @article = klass.new(article_data)  
153 - end 148 + @article = if params[:clone]
  149 + current_article = profile.articles.find(params[:id])
  150 + current_article.copy_without_save
  151 + else
  152 + klass.new(article_data)
  153 + end
154 154
155 parent = check_parent(params[:parent_id]) 155 parent = check_parent(params[:parent_id])
156 if parent 156 if parent
app/helpers/application_helper.rb
@@ -932,23 +932,15 @@ module ApplicationHelper @@ -932,23 +932,15 @@ module ApplicationHelper
932 end 932 end
933 933
934 def label_for_clone_article(article) 934 def label_for_clone_article(article)
935 - klass = class_to_s(article.class)  
936 - _("Clone #{klass}")  
937 - end 935 + valid_type_names = ["Folder", "Blog", "Event", "Forum"]
938 936
939 - def class_to_s(article_type)  
940 - classes = {  
941 - Folder => _("folder"),  
942 - Blog => _("blog"),  
943 - Event => _("event"),  
944 - Forum => _("forum"),  
945 - } 937 + article_type = if valid_type_names.include?(article.class.to_s)
  938 + article.class.to_s
  939 + else
  940 + "Article"
  941 + end
946 942
947 - if classes.has_key?(article_type)  
948 - classes[article_type]  
949 - else  
950 - _("article")  
951 - end 943 + _('Clone %s') % article_type
952 end 944 end
953 945
954 def add_rss_feed_to_head(title, url) 946 def add_rss_feed_to_head(title, url)
app/models/article.rb
@@ -577,25 +577,24 @@ class Article &lt; ActiveRecord::Base @@ -577,25 +577,24 @@ class Article &lt; ActiveRecord::Base
577 profile.visible? && profile.public? && published? 577 profile.visible? && profile.public? && published?
578 end 578 end
579 579
580 -  
581 - def copy(options = {}) 580 + def copy_without_save(options = {})
582 attrs = attributes.reject! { |key, value| ATTRIBUTES_NOT_COPIED.include?(key.to_sym) } 581 attrs = attributes.reject! { |key, value| ATTRIBUTES_NOT_COPIED.include?(key.to_sym) }
583 attrs.merge!(options) 582 attrs.merge!(options)
584 object = self.class.new 583 object = self.class.new
585 attrs.each do |key, value| 584 attrs.each do |key, value|
586 object.send(key.to_s+'=', value) 585 object.send(key.to_s+'=', value)
587 end 586 end
  587 + object
  588 + end
  589 +
  590 + def copy(options = {})
  591 + object = copy_without_save(options)
588 object.save 592 object.save
589 object 593 object
590 end 594 end
591 595
592 def copy!(options = {}) 596 def copy!(options = {})
593 - attrs = attributes.reject! { |key, value| ATTRIBUTES_NOT_COPIED.include?(key.to_sym) }  
594 - attrs.merge!(options)  
595 - object = self.class.new  
596 - attrs.each do |key, value|  
597 - object.send(key.to_s+'=', value)  
598 - end 597 + object = copy_without_save(options)
599 object.save! 598 object.save!
600 object 599 object
601 end 600 end
plugins/tolerance_time/lib/tolerance_time_plugin.rb
@@ -56,9 +56,18 @@ class ToleranceTimePlugin &lt; Noosfero::Plugin @@ -56,9 +56,18 @@ class ToleranceTimePlugin &lt; Noosfero::Plugin
56 end 56 end
57 57
58 def content_expire_edit(content) 58 def content_expire_edit(content)
  59 + content_expire_for(content, "editing")
  60 + end
  61 +
  62 + def content_expire_clone(content)
  63 + content_expire_for(content, "cloning")
  64 + end
  65 +
  66 + private
  67 +
  68 + def content_expire_for(content, action)
59 if ToleranceTimePlugin.expired?(content) 69 if ToleranceTimePlugin.expired?(content)
60 - _('The tolerance time for editing this content is over.') 70 + _('The tolerance time for %s this content is over.') % action
61 end 71 end
62 end 72 end
63 -  
64 end 73 end
test/functional/content_viewer_controller_test.rb
@@ -1252,9 +1252,11 @@ class ContentViewerControllerTest &lt; ActionController::TestCase @@ -1252,9 +1252,11 @@ class ContentViewerControllerTest &lt; ActionController::TestCase
1252 should 'expire article actions button if any plugins says so' do 1252 should 'expire article actions button if any plugins says so' do
1253 class Plugin1 < Noosfero::Plugin 1253 class Plugin1 < Noosfero::Plugin
1254 def content_expire_edit(content); 'This button is expired.'; end 1254 def content_expire_edit(content); 'This button is expired.'; end
  1255 + def content_expire_clone(content); 'This button is expired.'; end
1255 end 1256 end
1256 class Plugin2 < Noosfero::Plugin 1257 class Plugin2 < Noosfero::Plugin
1257 def content_expire_edit(content); nil; end 1258 def content_expire_edit(content); nil; end
  1259 + def content_expire_clone(content); nil; end
1258 end 1260 end
1259 Noosfero::Plugin.stubs(:all).returns([Plugin1.name, Plugin2.name]) 1261 Noosfero::Plugin.stubs(:all).returns([Plugin1.name, Plugin2.name])
1260 1262
test/unit/application_helper_test.rb
@@ -1010,11 +1010,11 @@ class ApplicationHelperTest &lt; ActionView::TestCase @@ -1010,11 +1010,11 @@ class ApplicationHelperTest &lt; ActionView::TestCase
1010 end 1010 end
1011 1011
1012 should "return the related class string" do 1012 should "return the related class string" do
1013 - assert_equal "Clone folder", label_for_clone_article(Folder.new)  
1014 - assert_equal "Clone blog", label_for_clone_article(Blog.new)  
1015 - assert_equal "Clone event", label_for_clone_article(Event.new)  
1016 - assert_equal "Clone forum", label_for_clone_article(Forum.new)  
1017 - assert_equal "Clone article", label_for_clone_article(TinyMceArticle.new) 1013 + assert_equal "Clone Folder", label_for_clone_article(Folder.new)
  1014 + assert_equal "Clone Blog", label_for_clone_article(Blog.new)
  1015 + assert_equal "Clone Event", label_for_clone_article(Event.new)
  1016 + assert_equal "Clone Forum", label_for_clone_article(Forum.new)
  1017 + assert_equal "Clone Article", label_for_clone_article(TinyMceArticle.new)
1018 end 1018 end
1019 1019
1020 protected 1020 protected