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 | 13 | # xss_terminate plugin can't sanitize array fields |
| 14 | 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 | 19 | end |
| 20 | 20 | end |
| 21 | 21 | |
| ... | ... | @@ -26,7 +26,6 @@ class Article < ActiveRecord::Base |
| 26 | 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 | 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 | 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 | 544 | false |
| 546 | 545 | end |
| 547 | 546 | |
| 547 | + def author | |
| 548 | + versions.empty? ? last_changed_by : versions.first.last_changed_by | |
| 549 | + end | |
| 550 | + | |
| 548 | 551 | def author_name |
| 549 | 552 | author ? author.name : (setting[:author_name] || _('Unknown')) |
| 550 | 553 | end | ... | ... |
db/migrate/20121024220349_add_author_id_to_article.rb
| ... | ... | @@ -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 | -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 | 9 | # |
| 10 | 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 | 14 | create_table "abuse_reports", :force => true do |t| |
| 15 | 15 | t.integer "reporter_id" |
| ... | ... | @@ -86,7 +86,6 @@ ActiveRecord::Schema.define(:version => 20121024222938) do |
| 86 | 86 | t.string "language" |
| 87 | 87 | t.string "source_name" |
| 88 | 88 | t.integer "license_id" |
| 89 | - t.integer "author_id" | |
| 90 | 89 | end |
| 91 | 90 | |
| 92 | 91 | create_table "articles", :force => true do |t| |
| ... | ... | @@ -128,7 +127,6 @@ ActiveRecord::Schema.define(:version => 20121024222938) do |
| 128 | 127 | t.string "language" |
| 129 | 128 | t.string "source_name" |
| 130 | 129 | t.integer "license_id" |
| 131 | - t.integer "author_id" | |
| 132 | 130 | end |
| 133 | 131 | |
| 134 | 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 | 786 | should 'allow author to edit if is publisher' do |
| 787 | 787 | c = fast_create(Community) |
| 788 | 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 | 791 | assert a.allow_post_content?(p) |
| 792 | 792 | end |
| ... | ... | @@ -1358,16 +1358,16 @@ class ArticleTest < ActiveSupport::TestCase |
| 1358 | 1358 | |
| 1359 | 1359 | should "the author_name returns the name of the article's author" do |
| 1360 | 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 | 1362 | assert_equal author.name, a.author_name |
| 1363 | - a.author = nil | |
| 1363 | + author.destroy | |
| 1364 | 1364 | a.author_name = 'some name' |
| 1365 | 1365 | assert_equal 'some name', a.author_name |
| 1366 | 1366 | end |
| 1367 | 1367 | |
| 1368 | 1368 | should 'retrieve latest info from topic when has no comments' do |
| 1369 | 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 | 1371 | assert_equal post.updated_at, post.info_from_last_update[:date] |
| 1372 | 1372 | assert_equal profile.name, post.info_from_last_update[:author_name] |
| 1373 | 1373 | assert_equal profile.url, post.info_from_last_update[:author_url] |
| ... | ... | @@ -1801,19 +1801,9 @@ class ArticleTest < ActiveSupport::TestCase |
| 1801 | 1801 | assert a1.errors.invalid?(:parent_id) |
| 1802 | 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 | 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 | 1807 | assert_equal author.name, article.author_name |
| 1818 | 1808 | |
| 1819 | 1809 | author_name = author.name | ... | ... |