gallery/app/models/album_image.rb

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