Commit 8e5fdb7f264a34f855312083f2f1aa857f9a3016
1 parent
836970b6
Exists in
master
and in
29 other branches
Removing author feature from article
Showing
5 changed files
with
14 additions
and
43 deletions
Show diff stats
app/models/article.rb
@@ -13,9 +13,9 @@ class Article < ActiveRecord::Base | @@ -13,9 +13,9 @@ class Article < ActiveRecord::Base | ||
13 | # xss_terminate plugin can't sanitize array fields | 13 | # xss_terminate plugin can't sanitize array fields |
14 | before_save :sanitize_tag_list | 14 | before_save :sanitize_tag_list |
15 | 15 | ||
16 | - before_save do |article| | ||
17 | - if article.author_id | ||
18 | - article.author_name = Person.find(article.author_id).name | 16 | + before_create do |article| |
17 | + if article.last_changed_by_id | ||
18 | + article.author_name = Person.find(article.last_changed_by_id).name | ||
19 | end | 19 | end |
20 | end | 20 | end |
21 | 21 | ||
@@ -26,7 +26,6 @@ class Article < ActiveRecord::Base | @@ -26,7 +26,6 @@ class Article < ActiveRecord::Base | ||
26 | validates_uniqueness_of :slug, :scope => ['profile_id', 'parent_id'], :message => N_('The title (article name) is already being used by another article, please use another title.'), :if => lambda { |article| !article.slug.blank? } | 26 | validates_uniqueness_of :slug, :scope => ['profile_id', 'parent_id'], :message => N_('The title (article name) is already being used by another article, please use another title.'), :if => lambda { |article| !article.slug.blank? } |
27 | 27 | ||
28 | belongs_to :last_changed_by, :class_name => 'Person', :foreign_key => 'last_changed_by_id' | 28 | belongs_to :last_changed_by, :class_name => 'Person', :foreign_key => 'last_changed_by_id' |
29 | - belongs_to :author, :class_name => 'Person', :foreign_key => 'author_id' | ||
30 | 29 | ||
31 | has_many :comments, :class_name => 'Comment', :foreign_key => 'source_id', :dependent => :destroy, :order => 'created_at asc' | 30 | has_many :comments, :class_name => 'Comment', :foreign_key => 'source_id', :dependent => :destroy, :order => 'created_at asc' |
32 | 31 | ||
@@ -545,6 +544,10 @@ class Article < ActiveRecord::Base | @@ -545,6 +544,10 @@ class Article < ActiveRecord::Base | ||
545 | false | 544 | false |
546 | end | 545 | end |
547 | 546 | ||
547 | + def author | ||
548 | + versions.empty? ? last_changed_by : versions.first.last_changed_by | ||
549 | + end | ||
550 | + | ||
548 | def author_name | 551 | def author_name |
549 | author ? author.name : (setting[:author_name] || _('Unknown')) | 552 | author ? author.name : (setting[:author_name] || _('Unknown')) |
550 | end | 553 | end |
db/migrate/20121024220349_add_author_id_to_article.rb
@@ -1,11 +0,0 @@ | @@ -1,11 +0,0 @@ | ||
1 | -class AddAuthorIdToArticle < ActiveRecord::Migration | ||
2 | - def self.up | ||
3 | - add_column :articles, :author_id, :integer | ||
4 | - add_column :article_versions, :author_id, :integer | ||
5 | - end | ||
6 | - | ||
7 | - def self.down | ||
8 | - remove_column :articles, :author_id | ||
9 | - remove_column :article_versions, :author_id, :integer | ||
10 | - end | ||
11 | -end |
db/migrate/20121024222938_set_authors_based_on_article_versions.rb
@@ -1,9 +0,0 @@ | @@ -1,9 +0,0 @@ | ||
1 | -class SetAuthorsBasedOnArticleVersions < ActiveRecord::Migration | ||
2 | - def self.up | ||
3 | - update('UPDATE articles SET author_id = (SELECT profiles.id FROM articles as a INNER JOIN article_versions ON a.id = article_versions.article_id INNER JOIN profiles ON profiles.id = article_versions.last_changed_by_id WHERE article_versions.version = 1 AND articles.id = a.id)') | ||
4 | - end | ||
5 | - | ||
6 | - def self.down | ||
7 | - say "Can not be revesed!" | ||
8 | - end | ||
9 | -end |
db/schema.rb
@@ -9,7 +9,7 @@ | @@ -9,7 +9,7 @@ | ||
9 | # | 9 | # |
10 | # It's strongly recommended to check this file into your version control system. | 10 | # It's strongly recommended to check this file into your version control system. |
11 | 11 | ||
12 | -ActiveRecord::Schema.define(:version => 20121024222938) do | 12 | +ActiveRecord::Schema.define(:version => 20121022190819) do |
13 | 13 | ||
14 | create_table "abuse_reports", :force => true do |t| | 14 | create_table "abuse_reports", :force => true do |t| |
15 | t.integer "reporter_id" | 15 | t.integer "reporter_id" |
@@ -86,7 +86,6 @@ ActiveRecord::Schema.define(:version => 20121024222938) do | @@ -86,7 +86,6 @@ ActiveRecord::Schema.define(:version => 20121024222938) do | ||
86 | t.string "language" | 86 | t.string "language" |
87 | t.string "source_name" | 87 | t.string "source_name" |
88 | t.integer "license_id" | 88 | t.integer "license_id" |
89 | - t.integer "author_id" | ||
90 | end | 89 | end |
91 | 90 | ||
92 | create_table "articles", :force => true do |t| | 91 | create_table "articles", :force => true do |t| |
@@ -128,7 +127,6 @@ ActiveRecord::Schema.define(:version => 20121024222938) do | @@ -128,7 +127,6 @@ ActiveRecord::Schema.define(:version => 20121024222938) do | ||
128 | t.string "language" | 127 | t.string "language" |
129 | t.string "source_name" | 128 | t.string "source_name" |
130 | t.integer "license_id" | 129 | t.integer "license_id" |
131 | - t.integer "author_id" | ||
132 | end | 130 | end |
133 | 131 | ||
134 | add_index "articles", ["translation_of_id"], :name => "index_articles_on_translation_of_id" | 132 | add_index "articles", ["translation_of_id"], :name => "index_articles_on_translation_of_id" |
test/unit/article_test.rb
@@ -786,7 +786,7 @@ class ArticleTest < ActiveSupport::TestCase | @@ -786,7 +786,7 @@ class ArticleTest < ActiveSupport::TestCase | ||
786 | should 'allow author to edit if is publisher' do | 786 | should 'allow author to edit if is publisher' do |
787 | c = fast_create(Community) | 787 | c = fast_create(Community) |
788 | p = create_user_with_permission('test_user', 'publish_content', c) | 788 | p = create_user_with_permission('test_user', 'publish_content', c) |
789 | - a = c.articles.create!(:name => 'a test article', :author => p) | 789 | + a = c.articles.create!(:name => 'a test article', :last_changed_by => p) |
790 | 790 | ||
791 | assert a.allow_post_content?(p) | 791 | assert a.allow_post_content?(p) |
792 | end | 792 | end |
@@ -1358,16 +1358,16 @@ class ArticleTest < ActiveSupport::TestCase | @@ -1358,16 +1358,16 @@ class ArticleTest < ActiveSupport::TestCase | ||
1358 | 1358 | ||
1359 | should "the author_name returns the name of the article's author" do | 1359 | should "the author_name returns the name of the article's author" do |
1360 | author = fast_create(Person) | 1360 | author = fast_create(Person) |
1361 | - a = Article.new(:author => author) | 1361 | + a = profile.articles.create!(:name => 'a test article', :last_changed_by => author) |
1362 | assert_equal author.name, a.author_name | 1362 | assert_equal author.name, a.author_name |
1363 | - a.author = nil | 1363 | + author.destroy |
1364 | a.author_name = 'some name' | 1364 | a.author_name = 'some name' |
1365 | assert_equal 'some name', a.author_name | 1365 | assert_equal 'some name', a.author_name |
1366 | end | 1366 | end |
1367 | 1367 | ||
1368 | should 'retrieve latest info from topic when has no comments' do | 1368 | should 'retrieve latest info from topic when has no comments' do |
1369 | forum = fast_create(Forum, :name => 'Forum test', :profile_id => profile.id) | 1369 | forum = fast_create(Forum, :name => 'Forum test', :profile_id => profile.id) |
1370 | - post = fast_create(TextileArticle, :name => 'First post', :profile_id => profile.id, :parent_id => forum.id, :updated_at => Time.now, :author_id => profile.id) | 1370 | + post = fast_create(TextileArticle, :name => 'First post', :profile_id => profile.id, :parent_id => forum.id, :updated_at => Time.now, :last_changed_by_id => profile.id) |
1371 | assert_equal post.updated_at, post.info_from_last_update[:date] | 1371 | assert_equal post.updated_at, post.info_from_last_update[:date] |
1372 | assert_equal profile.name, post.info_from_last_update[:author_name] | 1372 | assert_equal profile.name, post.info_from_last_update[:author_name] |
1373 | assert_equal profile.url, post.info_from_last_update[:author_url] | 1373 | assert_equal profile.url, post.info_from_last_update[:author_url] |
@@ -1801,19 +1801,9 @@ class ArticleTest < ActiveSupport::TestCase | @@ -1801,19 +1801,9 @@ class ArticleTest < ActiveSupport::TestCase | ||
1801 | assert a1.errors.invalid?(:parent_id) | 1801 | assert a1.errors.invalid?(:parent_id) |
1802 | end | 1802 | end |
1803 | 1803 | ||
1804 | - should 'be able to have an author' do | ||
1805 | - author = fast_create(Person) | ||
1806 | - article = Article.new | ||
1807 | - assert_nothing_raised do | ||
1808 | - article.author = author | ||
1809 | - end | ||
1810 | - end | ||
1811 | - | ||
1812 | - should 'set author_name before saving article if there is an author' do | 1804 | + should 'set author_name before creating article if there is an author' do |
1813 | author = fast_create(Person) | 1805 | author = fast_create(Person) |
1814 | - article = fast_create(Article, :profile_id => fast_create(Profile).id) | ||
1815 | - article.author = author | ||
1816 | - article.save! | 1806 | + article = Article.create!(:name => 'Test', :profile => profile, :last_changed_by => author) |
1817 | assert_equal author.name, article.author_name | 1807 | assert_equal author.name, article.author_name |
1818 | 1808 | ||
1819 | author_name = author.name | 1809 | author_name = author.name |