Commit f309c8f791e6ba4c8fabcbce9dd2e89635f81d98

Authored by Junior Silva
Committed by Rodrigo Souto
1 parent 7e6f215a

topic-forum: allow the author to edit and delete your own topic

AI3135
app/models/article.rb
... ... @@ -489,6 +489,7 @@ class Article < ActiveRecord::Base
489 489 end
490 490  
491 491 def allow_post_content?(user = nil)
  492 + return true if allow_edit_topic?(user)
492 493 user && (user.has_permission?('post_content', profile) || allow_publish_content?(user) && (user == author))
493 494 end
494 495  
... ... @@ -508,9 +509,14 @@ class Article < ActiveRecord::Base
508 509 end
509 510  
510 511 def allow_edit?(user)
  512 + return true if allow_edit_topic?(user)
511 513 allow_post_content?(user) || user && allow_members_to_edit && user.is_member_of?(profile)
512 514 end
513 515  
  516 + def allow_edit_topic?(user)
  517 + self.belongs_to_forum? && (user == author) && user.is_member_of?(profile)
  518 + end
  519 +
514 520 def moderate_comments?
515 521 moderate_comments == true
516 522 end
... ...
test/unit/article_test.rb
... ... @@ -1660,6 +1660,16 @@ class ArticleTest < ActiveSupport::TestCase
1660 1660 a.allow_members_to_edit = true
1661 1661 assert !a.allow_edit?(nil)
1662 1662 end
  1663 +
  1664 + should 'allow author to edit topic' do
  1665 + community = fast_create(Community)
  1666 + author = fast_create(Person)
  1667 + community.add_member(author)
  1668 + forum = Forum.create(:profile => community, :name => 'Forum test', :body => 'Forum test')
  1669 + post = fast_create(TextileArticle, :name => 'First post', :profile_id => community.id, :parent_id => forum.id, :last_changed_by_id => author.id)
  1670 +
  1671 + assert post.allow_edit?(author)
  1672 + end
1663 1673  
1664 1674 should 'has a empty list of followers by default' do
1665 1675 a = Article.new
... ...