Add artist commentary, fixes #2024
This commit is contained in:
41
app/models/artist_commentary.rb
Normal file
41
app/models/artist_commentary.rb
Normal 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
|
||||
29
app/models/artist_commentary_version.rb
Normal file
29
app/models/artist_commentary_version.rb
Normal 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
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user