Commit 41eb41714ca8067d7d6df04d5582fb00a8ebfca3
Committed by
Victor Costa
1 parent
b942e7fe
Exists in
master
and in
29 other branches
Bug correction. The article inside a Step, wasn't showing the step / track in the folder combo.
Showing
6 changed files
with
42 additions
and
10 deletions
Show diff stats
app/models/article.rb
... | ... | @@ -449,8 +449,8 @@ class Article < ActiveRecord::Base |
449 | 449 | end |
450 | 450 | |
451 | 451 | named_scope :published, :conditions => { :published => true } |
452 | - named_scope :folders, :conditions => { :type => folder_types} | |
453 | - named_scope :no_folders, :conditions => ['type NOT IN (?)', folder_types] | |
452 | + named_scope :folders, lambda {|profile|{:conditions => { :type => profile.folder_types} }} | |
453 | + named_scope :no_folders, lambda {|profile|{:conditions => ['type NOT IN (?)', profile.folder_types]}} | |
454 | 454 | named_scope :galleries, :conditions => { :type => 'Gallery' } |
455 | 455 | named_scope :images, :conditions => { :is_image => true } |
456 | 456 | named_scope :text_articles, :conditions => [ 'articles.type IN (?)', text_article_types ] | ... | ... |
app/models/blog.rb
... | ... | @@ -6,7 +6,7 @@ class Blog < Folder |
6 | 6 | #FIXME This should be used until there is a migration to fix all blogs that |
7 | 7 | # already have folders inside them |
8 | 8 | def posts_with_no_folders |
9 | - posts_without_no_folders.no_folders | |
9 | + posts_without_no_folders.no_folders(profile) | |
10 | 10 | end |
11 | 11 | alias_method_chain :posts, :no_folders |
12 | 12 | ... | ... |
app/models/profile.rb
... | ... | @@ -760,8 +760,20 @@ private :generate_url, :url_options |
760 | 760 | !environment.enabled?('disable_contact_' + self.class.name.downcase) |
761 | 761 | end |
762 | 762 | |
763 | + include Noosfero::Plugin::HotSpot | |
764 | + | |
765 | + def folder_types | |
766 | + types = Article.folder_types | |
767 | + plugins.dispatch(:content_types).each {|type| | |
768 | + if type < Folder | |
769 | + types << type.name | |
770 | + end | |
771 | + } | |
772 | + types | |
773 | + end | |
774 | + | |
763 | 775 | def folders |
764 | - articles.folders | |
776 | + articles.folders(self) | |
765 | 777 | end |
766 | 778 | |
767 | 779 | def image_galleries | ... | ... |
test/unit/article_test.rb
... | ... | @@ -1405,30 +1405,32 @@ class ArticleTest < ActiveSupport::TestCase |
1405 | 1405 | should 'return only folders' do |
1406 | 1406 | not_folders = [RssFeed, TinyMceArticle, Event, TextileArticle] |
1407 | 1407 | folders = [Folder, Blog, Gallery, Forum] |
1408 | + profile = fast_create(Profile) | |
1408 | 1409 | |
1409 | 1410 | not_folders.each do |klass| |
1410 | 1411 | item = fast_create(klass) |
1411 | - assert_not_includes Article.folders, item | |
1412 | + assert_not_includes Article.folders(profile), item | |
1412 | 1413 | end |
1413 | 1414 | |
1414 | 1415 | folders.each do |klass| |
1415 | 1416 | item = fast_create(klass) |
1416 | - assert_includes Article.folders, item | |
1417 | + assert_includes Article.folders(profile), item | |
1417 | 1418 | end |
1418 | 1419 | end |
1419 | 1420 | |
1420 | 1421 | should 'return no folders' do |
1421 | 1422 | not_folders = [RssFeed, TinyMceArticle, Event, TextileArticle] |
1422 | 1423 | folders = [Folder, Blog, Gallery, Forum] |
1424 | + profile = fast_create(Profile) | |
1423 | 1425 | |
1424 | 1426 | not_folders.each do |klass| |
1425 | 1427 | item = fast_create(klass) |
1426 | - assert_includes Article.no_folders, item | |
1428 | + assert_includes Article.no_folders(profile), item | |
1427 | 1429 | end |
1428 | 1430 | |
1429 | 1431 | folders.each do |klass| |
1430 | 1432 | item = fast_create(klass) |
1431 | - assert_not_includes Article.no_folders, item | |
1433 | + assert_not_includes Article.no_folders(profile), item | |
1432 | 1434 | end |
1433 | 1435 | end |
1434 | 1436 | ... | ... |
test/unit/blog_test.rb
... | ... | @@ -198,7 +198,8 @@ class BlogTest < ActiveSupport::TestCase |
198 | 198 | #FIXME This should be used until there is a migration to fix all blogs that |
199 | 199 | # already have folders inside them |
200 | 200 | should 'not list folders in posts' do |
201 | - blog = fast_create(Blog) | |
201 | + p = create_user('testuser').person | |
202 | + blog = Blog.create!(:profile => p, :name => 'Blog test') | |
202 | 203 | folder = fast_create(Folder, :parent_id => blog.id) |
203 | 204 | article = fast_create(TextileArticle, :parent_id => blog.id) |
204 | 205 | |
... | ... | @@ -212,7 +213,8 @@ class BlogTest < ActiveSupport::TestCase |
212 | 213 | end |
213 | 214 | |
214 | 215 | should 'know when blog has or when has no posts' do |
215 | - blog = fast_create(Blog) | |
216 | + p = create_user('testuser').person | |
217 | + blog = Blog.create!(:profile => p, :name => 'Blog test') | |
216 | 218 | assert blog.empty? |
217 | 219 | fast_create(TextileArticle, :parent_id => blog.id) |
218 | 220 | assert ! blog.empty? | ... | ... |
test/unit/profile_test.rb
... | ... | @@ -1888,4 +1888,20 @@ class ProfileTest < ActiveSupport::TestCase |
1888 | 1888 | assert !profile.may_display_location_to?(user) |
1889 | 1889 | end |
1890 | 1890 | |
1891 | + should 'folder_types search for folders in the plugins' do | |
1892 | + class Folder1 < Folder | |
1893 | + end | |
1894 | + | |
1895 | + class Plugin1 < Noosfero::Plugin | |
1896 | + def content_types | |
1897 | + [Folder1] | |
1898 | + end | |
1899 | + end | |
1900 | + | |
1901 | + environment = Environment.default | |
1902 | + environment.enable_plugin(Plugin1) | |
1903 | + plugins = Noosfero::Plugin::Manager.new(environment, self) | |
1904 | + p = fast_create(Profile) | |
1905 | + assert p.folder_types.include?('ProfileTest::Folder1') | |
1906 | + end | |
1891 | 1907 | end | ... | ... |