X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=app%2Fmodels%2Fground_picture.rb;h=1f303ec91f8a0b40e81433c50dbc9ad9e8379335;hb=63ecce87bad492d32f35eff334989bf2c1b60f64;hp=50428685e120bdfc451ea35622158c8553232830;hpb=3d26243a296405e409d8ae5292efcff436c1d4ab;p=pettanr%2Fpettanr.git diff --git a/app/models/ground_picture.rb b/app/models/ground_picture.rb index 50428685..1f303ec9 100644 --- a/app/models/ground_picture.rb +++ b/app/models/ground_picture.rb @@ -1,6 +1,5 @@ -class GroundPicture < ActiveRecord::Base - include Element - include ElementInspire +class GroundPicture < Peta::Element + load_manifest belongs_to :panel belongs_to :picture @@ -14,37 +13,18 @@ class GroundPicture < ActiveRecord::Base @@repeat_texts = ['repeat', 'repeat-x', 'repeat-y', 'no-repeat'] - before_validation :valid_encode - - def valid_encode - ['caption'].each do |a| - next if attributes[a] == nil - raise Pettanr::BadRequest unless attributes[a].valid_encoding? - end - end - - def self.list_opt_for_panel - { - :ground_pictures => { - :picture => {:artist => {}, :license => {}} - } - } + def _y + self.attributes['y'] end - def self.show_opt_for_panel + def self.by_author_list_includes { - :ground_pictures => { - :picture => {:artist => {}, :license => {}} + :panel => { + :author => {} } } end - def self.json_opt_for_panel - { - :picture => {:artist => {}, :license => {}} - } - end - def self.has_picture? true end @@ -63,19 +43,15 @@ class GroundPicture < ActiveRecord::Base self.panel_id = pid end - def visible? roles - if MagicNumber['run_mode'] == 0 - return false unless guest_role_check(roles) - else - return false unless reader_role_check(roles) - end - return true if self.panel.own?(roles) - self.panel.visible? roles - end - - def opt_div_style full_url, spot = nil, opacity = 20 - o = (spot and spot != self) ? "opacity: #{opacity.to_f/100}; filter:alpha(opacity=#{opacity});" : '' - "position: absolute; width:#{self.panel.width}px; height:#{self.panel.height}px; top: 0px; left: 0px; z-index:#{self.z}; background-image: url(#{full_url}); background-repeat: #{self.repeat_text}; background-position: #{self.x}px #{self.y}px; #{o}" + def style spot = nil, opacity = 20 + r = { + 'position' => 'absolute', 'top' => '0px', 'left' => '0px', 'z-index' => self.z, + 'background-image' => "url(#{self.picture.url})", + 'background-repeat' => self.repeat_text, + 'background-position' => "#{self.x}px #{self._y}px" + } + self.merge_opacity(r, opacity) if spot and spot != self + r end def tmb_opt_img_tag @@ -83,134 +59,22 @@ class GroundPicture < ActiveRecord::Base {:src => self.picture.url, :width => tw, :height => th, :alt => self.caption} end - def tag_id c = nil - 'panel' + tag_panel_id + 'ground_picture' + tag_element_id + c.to_s - end - - def field_tag_id f - self.tag_id + f.to_s - end - - def tag_panel_id - self.panel.new_record? ? '0' : self.panel.id.to_s - end - - def tag_element_id - self.new_record? ? '0' : self.id.to_s - end - - def tag_element_type - 'ground_picture' - end - - def field_tree f - 'panels-' + self.tag_panel_id + '-ground_pictures_attributes-' + self.tag_element_id + '-' + f.to_s + def symbol_option + self.tmb_opt_img_tag end def repeat_text @@repeat_texts[self.repeat] end - def self.default_page_size - 25 - end - - def self.max_page_size - 100 - end - - def self.page prm = nil - page = prm.to_i - page = 1 if page < 1 - page - end - - def self.page_size prm = self.default_page_size - page_size = prm.to_i - page_size = self.max_page_size if page_size > self.max_page_size - page_size = self.default_page_size if page_size < 1 - page_size - end - - def self.list_where + def self.public_list_where 'panels.publish > 0' end - def self.mylist_where au - ['panels.author_id = ?', au.id] - end - - def self.himlist_where au - ['panels.author_id = ? and panels.publish > 0', au.id] - end - - def self.list page = 1, page_size = self.default_page_size - GroundPicture.where(self.list_where()).includes(GroundPicture.list_opt).order('ground_pictures.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.mylist au, page = 1, page_size = Author.default_ground_picture_page_size - GroundPicture.where(self.mylist_where(au)).includes(GroundPicture.list_opt).order('ground_pictures.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.himlist au, page = 1, page_size = Author.default_ground_picture_page_size - GroundPicture.where(self.himlist_where(au)).includes(GroundPicture.list_opt).order('ground_pictures.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.list_paginate page = 1, page_size = self.default_page_size - Kaminari.paginate_array(Array.new(GroundPicture.where(self.list_where()).includes(GroundPicture.list_opt).count, nil)).page(page).per(page_size) - end - - def self.mylist_paginate au, page = 1, page_size = Author.default_ground_picture_page_size - Kaminari.paginate_array(Array.new(GroundPicture.where(self.mylist_where(au)).includes(GroundPicture.list_opt).count, nil)).page(page).per(page_size) - end - - def self.himlist_paginate au, page = 1, page_size = Author.default_ground_picture_page_size - Kaminari.paginate_array(Array.new(GroundPicture.where(self.himlist_where(au)).includes(GroundPicture.list_opt).count, nil)).page(page).per(page_size) - end - - def self.list_opt - {:panel => {:author => {}}, :picture => {:artist => {}, :license => {}} } - end - - def self.list_json_opt - {:include => {:panel => {:include => {:author => {}}}, :picture => {:include => {:artist => {}, :license => {}}} }} - end - - def self.show cid, au - opt = {} - opt.merge!(GroundPicture.show_opt) - res = GroundPicture.find(cid, opt) - raise ActiveRecord::Forbidden unless res.visible?(au) - res - end - def self.show_opt {:include => {:panel => {:author => {}}, :picture => {:artist => {}, :license => {}}}} end - def self.show_json_opt - {:include => {:panel => {:include => {:author => {}}}, :picture => {:include => {:artist => {}, :license => {}}} }} - end - - def store au - if self.new_record? - self.panel.ground_pictures.build(self.attributes) - else - self.panel.ground_pictures.each do |ground_picture| - next unless ground_picture == self - attr = self.attributes - attr.delete 'id' - ground_picture.attributes = attr - break - end - end - self.panel.store({}, au) - end - - def remove au - self.panel.remove_element(self, au) - end - def scenario if caption.blank? ''