Add artist commentary, fixes #2024

This commit is contained in:
Toks
2013-11-19 10:37:02 -05:00
parent fab4e81669
commit fd4c8c3cd3
16 changed files with 347 additions and 0 deletions

View File

@@ -0,0 +1,41 @@
class ArtistCommentary < ActiveRecord::Base
attr_accessible :post_id, :original_description, :original_title, :translated_description, :translated_title
validates_uniqueness_of :post_id
belongs_to :post
has_many :versions, :class_name => "ArtistCommentaryVersion", :foreign_key => :post_id, :primary_key => :post_id, :order => "artist_commentary_versions.id ASC"
after_save :create_version
def original_present?
original_title.present? || original_description.present?
end
def translated_present?
translated_title.present? || translated_description.present?
end
def any_field_present?
original_present? || translated_present?
end
def create_version
versions.create(
:post_id => post_id,
:original_title => original_title,
:original_description => original_description,
:translated_title => translated_title,
:translated_description => translated_description
)
end
def revert_to(version)
self.original_description = version.original_description
self.original_title = version.original_title
self.translated_description = version.translated_description
self.translated_title = version.translated_title
end
def revert_to!(version)
revert_to(version)
save!
end
end

View File

@@ -0,0 +1,29 @@
class ArtistCommentaryVersion < ActiveRecord::Base
before_validation :initialize_updater
belongs_to :updater, :class_name => "User"
scope :for_user, lambda {|user_id| where("updater_id = ?", user_id)}
def self.search(params)
q = scoped
params = {} if params.blank?
if params[:updater_id]
q = q.where("updater_id = ?", params[:updater_id].to_i)
end
if params[:post_id]
q = q.where("post_id = ?", params[:post_id].to_i)
end
q
end
def initialize_updater
self.updater_id = CurrentUser.id
self.updater_ip_addr = CurrentUser.ip_addr
end
def updater_name
User.id_to_name(updater_id)
end
end

View File

@@ -23,6 +23,7 @@ class Post < ActiveRecord::Base
belongs_to :uploader, :class_name => "User"
belongs_to :parent, :class_name => "Post"
has_one :upload, :dependent => :destroy
has_one :artist_commentary
has_many :flags, :class_name => "PostFlag", :dependent => :destroy
has_many :appeals, :class_name => "PostAppeal", :dependent => :destroy
has_many :versions, :class_name => "PostVersion", :dependent => :destroy, :order => "post_versions.id ASC"