Commit 949d93fa9886d60298d6345c5d1025011a11d59b
1 parent
9c81f9f2
Exists in
staging
and in
4 other branches
Fix merge with master
Showing
1 changed file
with
36 additions
and
4 deletions
Show diff stats
app/models/article.rb
@@ -77,6 +77,10 @@ class Article < ActiveRecord::Base | @@ -77,6 +77,10 @@ class Article < ActiveRecord::Base | ||
77 | belongs_to :last_changed_by, :class_name => 'Person', :foreign_key => 'last_changed_by_id' | 77 | belongs_to :last_changed_by, :class_name => 'Person', :foreign_key => 'last_changed_by_id' |
78 | belongs_to :created_by, :class_name => 'Person', :foreign_key => 'created_by_id' | 78 | belongs_to :created_by, :class_name => 'Person', :foreign_key => 'created_by_id' |
79 | 79 | ||
80 | + #Article followers relation | ||
81 | + has_many :article_followers, :dependent => :destroy | ||
82 | + has_many :person_followers, :class_name => 'Person', :through => :article_followers, :source => :person | ||
83 | + | ||
80 | has_many :comments, :class_name => 'Comment', :foreign_key => 'source_id', :dependent => :destroy, :order => 'created_at asc' | 84 | has_many :comments, :class_name => 'Comment', :foreign_key => 'source_id', :dependent => :destroy, :order => 'created_at asc' |
81 | 85 | ||
82 | has_many :article_categorizations, -> { where 'articles_categories.virtual = ?', false } | 86 | has_many :article_categorizations, -> { where 'articles_categories.virtual = ?', false } |
@@ -152,6 +156,8 @@ class Article < ActiveRecord::Base | @@ -152,6 +156,8 @@ class Article < ActiveRecord::Base | ||
152 | validate :no_self_reference | 156 | validate :no_self_reference |
153 | validate :no_cyclical_reference, :if => 'parent_id.present?' | 157 | validate :no_cyclical_reference, :if => 'parent_id.present?' |
154 | 158 | ||
159 | + validate :parent_archived? | ||
160 | + | ||
155 | def no_self_reference | 161 | def no_self_reference |
156 | errors.add(:parent_id, _('self-reference is not allowed.')) if id && parent_id == id | 162 | errors.add(:parent_id, _('self-reference is not allowed.')) if id && parent_id == id |
157 | end | 163 | end |
@@ -486,6 +492,10 @@ class Article < ActiveRecord::Base | @@ -486,6 +492,10 @@ class Article < ActiveRecord::Base | ||
486 | end | 492 | end |
487 | end | 493 | end |
488 | 494 | ||
495 | + def archived? | ||
496 | + (self.parent && self.parent.archived) || self.archived | ||
497 | + end | ||
498 | + | ||
489 | def self.folder_types | 499 | def self.folder_types |
490 | ['Folder', 'Blog', 'Forum', 'Gallery'] | 500 | ['Folder', 'Blog', 'Forum', 'Gallery'] |
491 | end | 501 | end |
@@ -632,13 +642,21 @@ class Article < ActiveRecord::Base | @@ -632,13 +642,21 @@ class Article < ActiveRecord::Base | ||
632 | end | 642 | end |
633 | 643 | ||
634 | def hit | 644 | def hit |
635 | - self.class.connection.execute('update articles set hits = hits + 1 where id = %d' % self.id.to_i) | ||
636 | - self.hits += 1 | 645 | + if !archived? |
646 | + self.class.connection.execute('update articles set hits = hits + 1 where id = %d' % self.id.to_i) | ||
647 | + self.hits += 1 | ||
648 | + end | ||
637 | end | 649 | end |
638 | 650 | ||
639 | def self.hit(articles) | 651 | def self.hit(articles) |
640 | - Article.where(:id => articles.map(&:id)).update_all('hits = hits + 1') | ||
641 | - articles.each { |a| a.hits += 1 } | 652 | + ids = [] |
653 | + articles.each do |article| | ||
654 | + if !article.archived? | ||
655 | + ids << article.id | ||
656 | + article.hits += 1 | ||
657 | + end | ||
658 | + end | ||
659 | + Article.where(:id => ids).update_all('hits = hits + 1') if !ids.empty? | ||
642 | end | 660 | end |
643 | 661 | ||
644 | def can_display_hits? | 662 | def can_display_hits? |
@@ -828,6 +846,14 @@ class Article < ActiveRecord::Base | @@ -828,6 +846,14 @@ class Article < ActiveRecord::Base | ||
828 | true | 846 | true |
829 | end | 847 | end |
830 | 848 | ||
849 | + def view_page | ||
850 | + "content_viewer/view_page" | ||
851 | + end | ||
852 | + | ||
853 | + def to_liquid | ||
854 | + HashWithIndifferentAccess.new :name => name, :abstract => abstract, :body => body, :id => id, :parent_id => parent_id, :author => author | ||
855 | + end | ||
856 | + | ||
831 | private | 857 | private |
832 | 858 | ||
833 | def sanitize_tag_list | 859 | def sanitize_tag_list |
@@ -844,4 +870,10 @@ class Article < ActiveRecord::Base | @@ -844,4 +870,10 @@ class Article < ActiveRecord::Base | ||
844 | sanitizer.sanitize(text) | 870 | sanitizer.sanitize(text) |
845 | end | 871 | end |
846 | 872 | ||
873 | + def parent_archived? | ||
874 | + if self.parent_id_changed? && self.parent && self.parent.archived? | ||
875 | + errors.add(:parent_folder, N_('is archived!!')) | ||
876 | + end | ||
877 | + end | ||
878 | + | ||
847 | end | 879 | end |