58 lines
1.8 KiB
Ruby
58 lines
1.8 KiB
Ruby
require 'net/http'
|
|
class AlbumImage
|
|
include Mongoid::Document
|
|
include Mongoid::Timestamps
|
|
include OrbitTag::Taggable
|
|
mount_uploader :file, GalleryUploader
|
|
field :title
|
|
field :title_translations, type: Hash, default: {}
|
|
field :description, type: String, localize: true, default: ""
|
|
field :rss2_id, type: String
|
|
field :order, type: Integer, default: -1
|
|
belongs_to :album
|
|
has_many :album_crops, :autosave => true, :dependent => :destroy
|
|
accepts_nested_attributes_for :album_crops, :allow_destroy => true
|
|
# has_and_belongs_to_many :tags, :class_name => "GalleryTag"
|
|
index({"order" => 1}, { unique: false, background: false })
|
|
before_create do
|
|
tmp_album = self.album
|
|
min_order = nil
|
|
if tmp_album
|
|
min_order = tmp_album.min_order
|
|
min_order = -1 if min_order == 0
|
|
end
|
|
if min_order.nil?
|
|
self.order = -Time.now.to_i
|
|
else
|
|
tmp_order = min_order - 1
|
|
self.order = tmp_order
|
|
Album.where(:id=>tmp_album.id).update_all(:min_order=>tmp_order) #present call save callback twice due to autosave
|
|
end
|
|
true
|
|
end
|
|
after_destroy do
|
|
min_order = Album.where(:id=>self.album_id).pluck(:min_order).first
|
|
puts "min_order: #{min_order} #{self.order}"
|
|
if self.order == min_order
|
|
Album.where(:id=>self.album_id).update_all(:min_order=>min_order + 1)
|
|
end
|
|
end
|
|
before_save do
|
|
if self.file_changed?
|
|
cover = self.album['cover']
|
|
if cover && cover == self.id
|
|
self.album.update_attributes({:cover_path => self.file.thumb.url, :cover=> self.id})
|
|
end
|
|
end
|
|
end
|
|
def title_translations
|
|
tmp = super || {}
|
|
if tmp == {}
|
|
tmp = I18n.available_locales.collect{|locale| [locale,self[:title]]}.to_h
|
|
end
|
|
tmp
|
|
end
|
|
def title
|
|
self.title_translations[I18n.locale]
|
|
end
|
|
end |