From 387de02ada617308cad50c4bd35e8dbb05c28be4 Mon Sep 17 00:00:00 2001 From: yasushiito Date: Thu, 12 Dec 2013 08:41:30 +0900 Subject: [PATCH] temp --- app/controllers/application_controller.rb | 20 +- app/controllers/artists_controller.rb | 18 +- app/controllers/authors_controller.rb | 21 +- app/controllers/balloons_controller.rb | 12 +- app/controllers/comics_controller.rb | 7 +- app/controllers/ground_colors_controller.rb | 12 +- app/controllers/ground_pictures_controller.rb | 12 +- app/controllers/license_groups_controller.rb | 12 +- app/controllers/original_pictures_controller.rb | 21 +- app/controllers/panel_pictures_controller.rb | 12 +- app/controllers/panels_controller.rb | 21 +- app/controllers/resource_pictures_controller.rb | 21 +- app/controllers/scroll_panels_controller.rb | 12 +- app/controllers/scrolls_controller.rb | 7 +- app/controllers/sheet_panels_controller.rb | 12 +- app/controllers/sheets_controller.rb | 14 +- .../speech_balloon_templates_controller.rb | 12 +- app/controllers/speech_balloons_controller.rb | 12 +- app/controllers/speeches_controller.rb | 12 +- app/controllers/stories_controller.rb | 12 +- app/controllers/story_sheets_controller.rb | 12 +- app/controllers/system_pictures_controller.rb | 12 +- app/controllers/writing_formats_controller.rb | 12 +- app/helpers/application_helper.rb | 8 +- app/models/artist.rb | 17 +- app/models/author.rb | 14 +- app/models/balloon.rb | 72 +------ app/models/comic.rb | 44 +---- app/models/ground_color.rb | 96 +-------- app/models/ground_picture.rb | 96 +-------- app/models/license.rb | 34 +--- app/models/license_group.rb | 33 +--- app/models/original_picture.rb | 75 +------- app/models/panel.rb | 131 +------------ app/models/panel_picture.rb | 96 +-------- app/models/picture.rb | 30 +-- app/models/resource_picture.rb | 122 +----------- app/models/scroll.rb | 39 +--- app/models/scroll_panel.rb | 144 +------------- app/models/sheet.rb | 129 +------------ app/models/sheet_panel.rb | 121 +----------- app/models/speech.rb | 80 +------- app/models/speech_balloon.rb | 104 +--------- app/models/speech_balloon_template.rb | 26 +-- app/models/story.rb | 133 +------------ app/models/story_sheet.rb | 137 +------------ app/models/system_picture.rb | 60 +----- app/models/writing_format.rb | 33 +--- lib/content.rb | 60 ++---- lib/item.rb | 14 +- lib/manifest/list.rb | 214 ++++----------------- 51 files changed, 308 insertions(+), 2172 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 3d6d1af1..6d495b1c 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -135,27 +135,11 @@ class ApplicationController < ActionController::Base } end - def set_filer_by_anybody - @page = @@model.page_number params[:page] - @page_size = @@model.page_size params[:page_size] - list_method = 'himlist' || configurations['models'][@@model.to_s.underscore]['select']['method'] - @items = @@model.__send__(list_method, @operators, @page, @page_size) - end - - def format_filer_by_anybody format - format.html { - @paginate = @@model.himlist_paginate(@operators, @page, @page_size) - render :template => 'system/filer', :locals => { - :items => @items, :model => @@model, - :operators => @operators, :pager => @paginate - } - } - end - def format_prof format format.prof { + @profiler = self.class.profiler_manager.open(@item, @operators) render :template => 'system/prof', :locals => { - :item => @item, :operators => @operators + :profiler => @profiler } } end diff --git a/app/controllers/artists_controller.rb b/app/controllers/artists_controller.rb index 173ec173..60cf49ed 100644 --- a/app/controllers/artists_controller.rb +++ b/app/controllers/artists_controller.rb @@ -10,20 +10,12 @@ class ArtistsController < ApplicationController end before_filter :authenticate_admin!, :only => [:list, :browse] - @@model = Artist + def self.model + Artist + end + def index - set_page params @@model, params - @items = @@model.list(@page, @page_size) - - respond_to do |format| - format.html { - @paginate = @@model.list_paginate(@page, @page_size) - render :template => 'system/filer', :locals => { - :filer => @filer.window(@items, @operators, @paginate) - } - } - format.json { render json: @items.to_json(@@model.list_json_opt) } - end + public_list end def show diff --git a/app/controllers/authors_controller.rb b/app/controllers/authors_controller.rb index c9587061..886b714f 100644 --- a/app/controllers/authors_controller.rb +++ b/app/controllers/authors_controller.rb @@ -10,25 +10,12 @@ class AuthorsController < ApplicationController end before_filter :authenticate_admin!, :only => [:list, :browse] - @@model = Author - @@controller = Pettanr::Application::manifest.controller_managers[@@model.item_name] - @@profiler_manager = Pettanr::Application::manifest.profiler_managers[@@model.item_name] + def self.model + Author + end def index - action_name = params[:action] - @action = @@controller.open(action_name, params, @operators) - @items = @action.items - respond_to do |format| - format.html { - @filer = @action.filer - render :template => 'system/filer', :locals => { - :filer => @filer - } - } - format.json { render json: @items.to_json(@@model.list_json_opt) } - format.atom - format.rss - end + public_list end def show diff --git a/app/controllers/balloons_controller.rb b/app/controllers/balloons_controller.rb index 745db475..a688bcf1 100644 --- a/app/controllers/balloons_controller.rb +++ b/app/controllers/balloons_controller.rb @@ -10,14 +10,12 @@ class BalloonsController < ApplicationController end before_filter :authenticate_admin!, :only => [:list, :browse] - @@model = Balloon + def self.model + Balloon + end + def index - set_filer - - respond_to do |format| - format_filer format - format.json { render json: @items.to_json(@@model.list_json_opt) } - end + public_list end def show diff --git a/app/controllers/comics_controller.rb b/app/controllers/comics_controller.rb index f1f2909a..c3ce66ab 100644 --- a/app/controllers/comics_controller.rb +++ b/app/controllers/comics_controller.rb @@ -24,12 +24,7 @@ class ComicsController < ApplicationController format.html { @comic = @item } - format.prof { - @profiler = @@profiler_manager.open(@item, @operators) - render :template => 'system/prof', :locals => { - :profiler => @profiler - } - } + format_prof format format.json { render json: @item.to_json(Comic.show_json_opt) } format.atom format.rss diff --git a/app/controllers/ground_colors_controller.rb b/app/controllers/ground_colors_controller.rb index 53bc819b..da4a45f5 100644 --- a/app/controllers/ground_colors_controller.rb +++ b/app/controllers/ground_colors_controller.rb @@ -9,14 +9,12 @@ class GroundColorsController < ApplicationController before_filter :authenticate_author, :only => [:new, :edit, :create, :update, :destroy] end - @@model = GroundColor + def self.model + GroundColor + end + def index - set_filer - - respond_to do |format| - format_filer format - format.json { render json: @items.to_json(@@model.list_json_opt) } - end + public_list end def show diff --git a/app/controllers/ground_pictures_controller.rb b/app/controllers/ground_pictures_controller.rb index 9de21071..a4faa835 100644 --- a/app/controllers/ground_pictures_controller.rb +++ b/app/controllers/ground_pictures_controller.rb @@ -9,14 +9,12 @@ class GroundPicturesController < ApplicationController before_filter :authenticate_author, :only => [:new, :edit, :create, :update, :destroy] end - @@model = GroundPicture + def self.model + GroundPicture + end + def index - set_filer - - respond_to do |format| - format_filer format - format.json { render json: @items.to_json(@@model.list_json_opt) } - end + public_list end def show diff --git a/app/controllers/license_groups_controller.rb b/app/controllers/license_groups_controller.rb index 3c908078..18f351d2 100644 --- a/app/controllers/license_groups_controller.rb +++ b/app/controllers/license_groups_controller.rb @@ -2,14 +2,12 @@ class LicenseGroupsController < ApplicationController layout 'test' if MagicNumber['test_layout'] before_filter :authenticate_admin!, :only => [:list, :browse] - @@model = LicenseGroup + def self.model + LicenseGroup + end + def index - set_filer - - respond_to do |format| - format_filer format - format.json { render json: @items.to_json(@@model.list_json_opt) } - end + public_list end def show diff --git a/app/controllers/original_pictures_controller.rb b/app/controllers/original_pictures_controller.rb index 2154f18a..51987a44 100644 --- a/app/controllers/original_pictures_controller.rb +++ b/app/controllers/original_pictures_controller.rb @@ -9,28 +9,9 @@ class OriginalPicturesController < ApplicationController def self.model OriginalPicture end - def self.controller - Pettanr::Application::manifest.controller_managers[self.model.item_name] - end - def self.profiler_manager - Pettanr::Application::manifest.profiler_managers[self.model.item_name] - end def index - action_name = params[:action] - @action = self.class.controller.open(action_name, params, @operators) - @items = @action.items - respond_to do |format| - format.html { - @filer = @action.filer - render :template => 'system/filer', :locals => { - :filer => @filer - } - } - format.json { render json: @items.to_json(self.class.model.list_json_opt) } - format.atom - format.rss - end + public_list end def show diff --git a/app/controllers/panel_pictures_controller.rb b/app/controllers/panel_pictures_controller.rb index 9dd3ac05..1a23777e 100644 --- a/app/controllers/panel_pictures_controller.rb +++ b/app/controllers/panel_pictures_controller.rb @@ -10,14 +10,12 @@ class PanelPicturesController < ApplicationController end before_filter :authenticate_admin!, :only => [:list, :browse] - @@model = PanelPicture + def self.model + PanelPicture + end + def index - set_filer - - respond_to do |format| - format_filer format - format.json { render :json => @items.to_json(@@model.list_json_opt) } - end + public_list end def show diff --git a/app/controllers/panels_controller.rb b/app/controllers/panels_controller.rb index 06dfc033..fb76c25d 100644 --- a/app/controllers/panels_controller.rb +++ b/app/controllers/panels_controller.rb @@ -13,28 +13,9 @@ class PanelsController < ApplicationController def self.model Panel end - def self.controller - Pettanr::Application::manifest.controller_managers[self.model.item_name] - end - def self.profiler_manager - Pettanr::Application::manifest.profiler_managers[self.model.item_name] - end def index - action_name = params[:action] - @action = self.class.controller.open(action_name, params, @operators) - @items = @action.items - respond_to do |format| - format.html { - @filer = @action.filer - render :template => 'system/filer', :locals => { - :filer => @filer - } - } - format.json { render json: @items.to_json(self.class.model.list_json_opt) } - format.atom - format.rss - end + public_list end def show diff --git a/app/controllers/resource_pictures_controller.rb b/app/controllers/resource_pictures_controller.rb index 61014204..bd6d1c68 100644 --- a/app/controllers/resource_pictures_controller.rb +++ b/app/controllers/resource_pictures_controller.rb @@ -13,28 +13,9 @@ class ResourcePicturesController < ApplicationController def self.model ResourcePicture end - def self.controller - Pettanr::Application::manifest.controller_managers[self.model.item_name] - end - def self.profiler_manager - Pettanr::Application::manifest.profiler_managers[self.model.item_name] - end def index - action_name = params[:action] - @action = self.class.controller.open(action_name, params, @operators) - @items = @action.items - respond_to do |format| - format.html { - @filer = @action.filer - render :template => 'system/filer', :locals => { - :filer => @filer - } - } - format.json { render json: @items.to_json(self.class.model.list_json_opt) } - format.atom - format.rss - end + public_list end def show diff --git a/app/controllers/scroll_panels_controller.rb b/app/controllers/scroll_panels_controller.rb index dfdb3a83..982e9ff9 100644 --- a/app/controllers/scroll_panels_controller.rb +++ b/app/controllers/scroll_panels_controller.rb @@ -10,14 +10,12 @@ class ScrollPanelsController < ApplicationController end before_filter :authenticate_admin!, :only => [:list, :browse] - @@model = ScrollPanel + def self.model + ScrollPanel + end + def index - set_filer - - respond_to do |format| - format_filer format - format.json { render :json => @items.to_json(@@model.list_json_opt) } - end + public_list end def show diff --git a/app/controllers/scrolls_controller.rb b/app/controllers/scrolls_controller.rb index 863243e6..6d96c1d3 100644 --- a/app/controllers/scrolls_controller.rb +++ b/app/controllers/scrolls_controller.rb @@ -29,12 +29,7 @@ class ScrollsController < ApplicationController end } format.json { render json: @item.to_json(Scroll.show_json_opt) } - format.prof { - @profiler = @@profiler_manager.open(@item, @operators) - render :template => 'system/prof', :locals => { - :profiler => @profiler - } - } + format_prof format format.atom format.rss end diff --git a/app/controllers/sheet_panels_controller.rb b/app/controllers/sheet_panels_controller.rb index 95cfab5c..c0d5565a 100644 --- a/app/controllers/sheet_panels_controller.rb +++ b/app/controllers/sheet_panels_controller.rb @@ -10,14 +10,12 @@ class SheetPanelsController < ApplicationController end before_filter :authenticate_admin!, :only => [:list, :browse] - @@model = SheetPanel + def self.model + SheetPanel + end + def index - set_filer - - respond_to do |format| - format_filer format - format.json { render json: @items.to_json(@@model.list_json_opt) } - end + public_list end def show diff --git a/app/controllers/sheets_controller.rb b/app/controllers/sheets_controller.rb index ab093eb5..db4777e5 100644 --- a/app/controllers/sheets_controller.rb +++ b/app/controllers/sheets_controller.rb @@ -10,16 +10,12 @@ class SheetsController < ApplicationController end before_filter :authenticate_admin!, :only => [:list, :browse] - @@model = Sheet + def self.model + Sheet + end + def index - set_filer - - respond_to do |format| - format_filer format - format.json { render json: @items.to_json(@@model.list_json_opt) } - format.atom - format.rss - end + public_list end def show diff --git a/app/controllers/speech_balloon_templates_controller.rb b/app/controllers/speech_balloon_templates_controller.rb index c89db4b4..01f4f246 100644 --- a/app/controllers/speech_balloon_templates_controller.rb +++ b/app/controllers/speech_balloon_templates_controller.rb @@ -8,14 +8,12 @@ class SpeechBalloonTemplatesController < ApplicationController end before_filter :authenticate_admin!, :only => [:list, :browse, :destroy] - @@model = SpeechBalloonTemplate + def self.model + SpeechBalloonTemplate + end + def index - set_filer - - respond_to do |format| - format_filer format - format.json { render json: @items.to_json(@@model.list_json_opt) } - end + public_list end def show diff --git a/app/controllers/speech_balloons_controller.rb b/app/controllers/speech_balloons_controller.rb index 92475340..e55e1760 100644 --- a/app/controllers/speech_balloons_controller.rb +++ b/app/controllers/speech_balloons_controller.rb @@ -10,14 +10,12 @@ class SpeechBalloonsController < ApplicationController end before_filter :authenticate_admin!, :only => [:list, :browse] - @@model = SpeechBalloon + def self.model + SpeechBalloon + end + def index - set_filer - - respond_to do |format| - format_filer format - format.json { render json: @items.to_json(@@model.list_json_opt) } - end + public_list end def show diff --git a/app/controllers/speeches_controller.rb b/app/controllers/speeches_controller.rb index a7bdd400..e7069bf5 100644 --- a/app/controllers/speeches_controller.rb +++ b/app/controllers/speeches_controller.rb @@ -10,14 +10,12 @@ class SpeechesController < ApplicationController end before_filter :authenticate_admin!, :only => [:list, :browse] - @@model = Speech + def self.model + Speech + end + def index - set_filer - - respond_to do |format| - format_filer format - format.json { render json: @items.to_json(@@model.list_json_opt) } - end + public_list end def show diff --git a/app/controllers/stories_controller.rb b/app/controllers/stories_controller.rb index c8282872..85c47d64 100644 --- a/app/controllers/stories_controller.rb +++ b/app/controllers/stories_controller.rb @@ -10,14 +10,12 @@ class StoriesController < ApplicationController end before_filter :authenticate_admin!, :only => [:list, :browse] - @@model = Story + def self.model + Story + end + def index - set_filer - - respond_to do |format| - format_filer format - format.json { render json: @items.to_json(@@model.list_json_opt) } - end + public_list end def show diff --git a/app/controllers/story_sheets_controller.rb b/app/controllers/story_sheets_controller.rb index 9748aa73..d4f6cf5e 100644 --- a/app/controllers/story_sheets_controller.rb +++ b/app/controllers/story_sheets_controller.rb @@ -10,14 +10,12 @@ class StorySheetsController < ApplicationController end before_filter :authenticate_admin!, :only => [:list, :browse] - @@model = StorySheet + def self.model + StorySheet + end + def index - set_filer - - respond_to do |format| - format_filer format - format.json { render json: @items.to_json(@@model.list_json_opt) } - end + public_list end def show diff --git a/app/controllers/system_pictures_controller.rb b/app/controllers/system_pictures_controller.rb index 374788c3..7b5bcf6b 100644 --- a/app/controllers/system_pictures_controller.rb +++ b/app/controllers/system_pictures_controller.rb @@ -10,14 +10,12 @@ class SystemPicturesController < ApplicationController end before_filter :authenticate_admin!, :only => [:list, :browse, :new, :create] - @@model = SystemPicture + def self.model + SystemPicture + end + def index - set_filer - - respond_to do |format| - format_filer format - format.json { render json: @items.to_json(@@model.list_json_opt) } - end + public_list end def show diff --git a/app/controllers/writing_formats_controller.rb b/app/controllers/writing_formats_controller.rb index a6bed1af..caacfe0e 100644 --- a/app/controllers/writing_formats_controller.rb +++ b/app/controllers/writing_formats_controller.rb @@ -8,14 +8,12 @@ class WritingFormatsController < ApplicationController end before_filter :authenticate_admin!, :only => [:list, :browse, :destroy] - @@model = WritingFormat + def self.model + WritingFormat + end + def index - set_filer - - respond_to do |format| - format_filer format - format.json { render json: @items.to_json(@@model.list_json_opt) } - end + public_list end def show diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 15e6292c..926c1be8 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -79,14 +79,16 @@ module ApplicationHelper end def panel_editor_javascript_include_tags - WritingFormat.enable_list().map {|wf| + list = Pettanr::Application::manifest.list_managers[WritingFormat.item_name].open('public_list', nil, nil, @operators) + list.items.map {|wf| # javascript_include_tag wf.engine_name javascript_include_tag wf.engine_name + "/application" }.join("\n") + - SpeechBalloonTemplate.enable_list().map {|sbt| + list = Pettanr::Application::manifest.list_managers[SpeechBalloonTemplate.item_name].open('public_list', nil, nil, @operators) + list.items.map {|sbt| stylesheet_link_tag sbt.engine_name + "/application" }.join("\n") + - SpeechBalloonTemplate.enable_list().map {|sbt| + list.items.map {|sbt| javascript_include_tag sbt.engine_name + "/application" }.join("\n") end diff --git a/app/models/artist.rb b/app/models/artist.rb index 9f702a4c..87b70828 100644 --- a/app/models/artist.rb +++ b/app/models/artist.rb @@ -8,21 +8,12 @@ class Artist < Pettanr::Owner validates :user_id, :numericality => true, :existence => {:both => false} validates :provider_id, :numericality => {:allow_nil => true} - @@visible_count_options = {:conditions => ['artists.author_id is not null']} - def self.singular - 'Artist' - end - - def self.plural - 'Artists' - end - - def self.owner_type - :author + def self.valid_encode_columns + super + ['name'] end - def self.valid_encode_columns - super.merge ['name'] + def self.visible_count_options + {:conditions => ['artists.author_id is not null']} end def supply_default diff --git a/app/models/author.rb b/app/models/author.rb index fda9f342..2ea53681 100644 --- a/app/models/author.rb +++ b/app/models/author.rb @@ -10,20 +10,8 @@ class Author < Pettanr::Owner validates :working_panel_id, :numericality => {:allow_nil => true} validates :user_id, :numericality => true, :existence => {:both => false} - def self.singular - 'Author' - end - - def self.plural - 'Authors' - end - - def self.owner_type - :author - end - def self.valid_encode_columns - super.merge ['name'] + super + ['name'] end def supply_default diff --git a/app/models/balloon.rb b/app/models/balloon.rb index 33e2c406..7f50e806 100644 --- a/app/models/balloon.rb +++ b/app/models/balloon.rb @@ -1,4 +1,4 @@ -class Balloon < Pettanr::Item +class Balloon < Pettanr::Content include ElementPart belongs_to :speech_balloon belongs_to :system_picture @@ -13,20 +13,12 @@ class Balloon < Pettanr::Item # validates :caption, :presence => true validates :settings, :extend_balloon => true - def self.singular - 'Balloon' - end - - def self.plural - 'Balloons' - end - - def self.owner_type - :author + def owner_model + self.speech_balloon.panel end def self.valid_encode_columns - super.merge ['settings'] + super + ['settings'] end def self.colum_structures @@ -41,14 +33,9 @@ class Balloon < Pettanr::Item '/system_pictures/' + self.system_picture.filename 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.speech_balloon.panel.own?(roles) - self.speech_balloon.panel.visible? roles + def visible? operators + return false unless super + self.owner_model.visible? operators end def supply_default @@ -72,45 +59,12 @@ self.system_picture_id = 1 'balloon' 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 'panels.publish > 0' end - def self.list page = 1, page_size = self.default_page_size - Balloon.where(self.list_where()).includes(Balloon.list_opt).order('balloons.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(Balloon.where(self.list_where()).includes(Balloon.list_opt).count, nil)).page(page).per(page_size) - end - - def self.list_by_speech_balloon_where speech_balloon_id - ['balloons.speech_balloon_id = ?', speech_balloon_id] - end - - def self.list_by_speech_balloon speech_balloon_id, roles, page = 1, page_size = self.default_page_size - self.where(self.list_by_speech_balloon_where(speech_balloon_id)).includes(self.list_opt).order('balloons.updated_at desc').offset((page -1) * page_size).limit(page_size) + def self.list_order + 'balloons.updated_at desc' end def self.list_opt @@ -121,14 +75,6 @@ self.system_picture_id = 1 {:include => {:speech_balloon => {:include => {:panel => {:include => {:author => {} }}, :speech => {}, :speech_balloon_template => {} }}}} end - def self.show cid, au - opt = {} - opt.merge!(Balloon.show_opt) - res = Balloon.find(cid, opt) - raise ActiveRecord::Forbidden unless res.visible?(au) - res - end - def self.show_opt {:include => {:speech_balloon => {:panel => {:author => {}}, :speech => {}, :speech_balloon_template => {} }}} end diff --git a/app/models/comic.rb b/app/models/comic.rb index 19149d5b..40bfeb80 100644 --- a/app/models/comic.rb +++ b/app/models/comic.rb @@ -7,24 +7,14 @@ class Comic < Pettanr::Content validates :visible, :presence => true, :numericality => true, :inclusion => {:in => 0..1} validates :author_id, :presence => true, :numericality => true, :existence => {:both => false} - @@visible_count_options = {:conditions => 'visible > 0'} - - def self.singular - 'Comic' - end - - def self.plural - 'Comics' - end - - def self.owner_type - :author - end - def self.valid_encode_columns super + ['title', 'description'] end + def self.visible_count_options + {:conditions => 'visible > 0'} + end + def supply_default self.visible = 0 if self.visible.blank? end @@ -35,7 +25,7 @@ class Comic < Pettanr::Content end def visible? operators - super + return false unless super self.visible > 0 end @@ -54,30 +44,6 @@ class Comic < Pettanr::Content 'comics.updated_at desc' end - def self.mylist_where me - ['comics.author_id = ?', me.id] - end - - def self.mylist_order - 'comics.updated_at desc' - end - - def self.himlist_where anybody - ['comics.author_id = ? and comics.visible > 0', anybody.id] - end - - def self.himlist_order - 'comics.updated_at desc' - end - - def self.list_by_author_where author_id - ['comics.author_id = ?', author_id] - end - - def self.list_by_author author_id, roles, page = 1, page_size = self.default_page_size - self.where(self.list_by_author_where(author_id)).includes(self.list_opt).order('comics.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - def self.list_opt {:stories => {}, :author => {} } end diff --git a/app/models/ground_color.rb b/app/models/ground_color.rb index 5e8651f8..1a757fa6 100644 --- a/app/models/ground_color.rb +++ b/app/models/ground_color.rb @@ -1,4 +1,4 @@ -class GroundColor < Pettanr::Item +class GroundColor < Pettanr::Content include Element include ElementInspire belongs_to :panel @@ -12,20 +12,12 @@ class GroundColor < Pettanr::Item validates :z, :presence => true, :numericality => {:greater_than => 0} validates :t, :presence => true, :numericality => {:greater_than_or_equal_to => 0} - def self.singular - 'GroundColor' - end - - def self.plural - 'GroundColors' - end - - def self.owner_type - :author + def owner_model + self.panel end def self.valid_encode_columns - super.merge ['caption'] + super + ['caption'] end def self.colum_structures @@ -71,14 +63,9 @@ class GroundColor < Pettanr::Item 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 + def visible? operators + return false unless super + self.owner_model.visible? operators end def div_offset @@ -133,69 +120,12 @@ class GroundColor < Pettanr::Item 'ground_color' 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 '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 - GroundColor.where(self.list_where()).includes(GroundColor.list_opt).order('ground_colors.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.mylist au, page = 1, page_size = Author.default_ground_color_page_size - GroundColor.where(self.mylist_where(au)).includes(GroundColor.list_opt).order('ground_colors.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.himlist au, page = 1, page_size = Author.default_ground_color_page_size - GroundColor.where(self.himlist_where(au)).includes(GroundColor.list_opt).order('ground_colors.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(GroundColor.where(self.list_where()).includes(GroundColor.list_opt).count, nil)).page(page).per(page_size) - end - - def self.mylist_paginate au, page = 1, page_size = Author.default_ground_color_page_size - Kaminari.paginate_array(Array.new(GroundColor.where(self.mylist_where(au)).includes(GroundColor.list_opt).count, nil)).page(page).per(page_size) - end - - def self.himlist_paginate au, page = 1, page_size = Author.default_ground_color_page_size - Kaminari.paginate_array(Array.new(GroundColor.where(self.himlist_where(au)).includes(GroundColor.list_opt).count, nil)).page(page).per(page_size) - end - - def self.list_by_panel_where panel_id - ['ground_colors.panel_id = ?', panel_id] - end - - def self.list_by_panel panel_id, roles, page = 1, page_size = self.default_page_size - self.where(self.list_by_panel_where(panel_id)).includes(self.list_opt).order('ground_colors.updated_at desc').offset((page -1) * page_size).limit(page_size) + def self.list_order + 'ground_colors.updated_at desc' end def self.list_opt @@ -206,14 +136,6 @@ class GroundColor < Pettanr::Item {:include => {:panel => {:include => {:author => {}}} }} end - def self.show cid, roles - opt = {} - opt.merge!(GroundColor.show_opt) - res = GroundColor.find(cid, opt) - raise ActiveRecord::Forbidden unless res.visible?(roles) - res - end - def self.show_opt {:include => {:panel => {:author => {}} }} end diff --git a/app/models/ground_picture.rb b/app/models/ground_picture.rb index 4b4269ec..98e0abbc 100644 --- a/app/models/ground_picture.rb +++ b/app/models/ground_picture.rb @@ -1,4 +1,4 @@ -class GroundPicture < Pettanr::Item +class GroundPicture < Pettanr::Content include Element include ElementInspire belongs_to :panel @@ -14,20 +14,12 @@ class GroundPicture < Pettanr::Item @@repeat_texts = ['repeat', 'repeat-x', 'repeat-y', 'no-repeat'] - def self.singular - 'GroundPicture' - end - - def self.plural - 'GroundPictures' - end - - def self.owner_type - :author + def owner_model + self.panel end def self.valid_encode_columns - super.merge ['caption'] + super + ['caption'] end def self.list_opt_for_panel @@ -70,14 +62,9 @@ class GroundPicture < Pettanr::Item 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 + def visible? operators + return false unless super + self.owner_model.visible? operators end def opt_div_style full_url, spot = nil, opacity = 20 @@ -105,69 +92,12 @@ class GroundPicture < Pettanr::Item @@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 '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_by_panel_where panel_id - ['ground_pictures.panel_id = ?', panel_id] - end - - def self.list_by_panel panel_id, roles, page = 1, page_size = self.default_page_size - self.where(self.list_by_panel_where(panel_id)).includes(self.list_opt).order('ground_pictures.updated_at desc').offset((page -1) * page_size).limit(page_size) + def self.list_order + 'ground_pictures.updated_at desc' end def self.list_opt @@ -178,14 +108,6 @@ class GroundPicture < Pettanr::Item {: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 diff --git a/app/models/license.rb b/app/models/license.rb index f162b27e..ffb4b3ba 100644 --- a/app/models/license.rb +++ b/app/models/license.rb @@ -10,20 +10,8 @@ class License < Pettanr::Item validates :url, :presence => true, :length => {:maximum => 200}, :uniqueness => true, :url => {:message => I18n.t('errors.messages.url')} #{:allow_blank => true} validates :system_picture_id, :presence => true, :numericality => true, :existence => {:both => false} - def self.singular - 'License' - end - - def self.plural - 'Licenses' - end - - def self.owner_type - :author - end - def self.valid_encode_columns - super.merge ['name', 'caption', 'url', 'settings', 'credit_pictures'] + super + ['name', 'caption', 'url', 'settings', 'credit_pictures'] end def supply_default @@ -40,16 +28,8 @@ class License < Pettanr::Item '' end - def self.list - self.where(self.list_where()).includes(self.list_opt).order('licenses.name') - end - - def self.list_by_license_group_where license_group_id - ['licenses.license_group_id = ?', license_group_id] - end - - def self.list_by_license_group license_group_id, roles, page = 1, page_size = self.default_page_size - self.where(self.list_by_license_group_where(license_group_id)).includes(self.list_opt).order('licenses.updated_at desc').offset((page -1) * page_size).limit(page_size) + def self.list_order + 'licenses.name' end def self.list_opt @@ -60,14 +40,6 @@ class License < Pettanr::Item {:include => {:license_group => {}}} end - def self.show rid, roles = nil - opt = {} - opt.merge!(License.show_opt) - res = License.find(rid, opt) -# raise ActiveRecord::Forbidden unless res.visible?(au) - res - end - def self.show_opt {:include => {:license_group => {}}} end diff --git a/app/models/license_group.rb b/app/models/license_group.rb index dad81570..b628f017 100644 --- a/app/models/license_group.rb +++ b/app/models/license_group.rb @@ -7,20 +7,8 @@ class LicenseGroup < Pettanr::Item validates :caption, :presence => true, :length => {:maximum => 30} validates :url, :presence => true, :length => {:maximum => 200}, :url => {:message => I18n.t('errors.messages.url')} - def self.singular - 'LicenseGroup' - end - - def self.plural - 'LicenseGroups' - end - - def self.owner_type - :author - end - def self.valid_encode_columns - super.merge ['name', 'classname', 'caption', 'url'] + super + ['name', 'classname', 'caption', 'url'] end def supply_default @@ -29,11 +17,12 @@ class LicenseGroup < Pettanr::Item def overwrite end - def self.list - opt = {} - opt.merge!(self.list_opt) - opt.merge!({:order => 'license_groups.name asc'}) - LicenseGroup.find(:all, opt) + def self.list_where + '' + end + + def self.list_order + 'license_groups.name asc' end def self.list_opt @@ -44,14 +33,6 @@ class LicenseGroup < Pettanr::Item {:include => {:licenses => {}}} end - def self.show rid, roles = nil - opt = {} - opt.merge!(self.show_opt) - res = LicenseGroup.find(rid, opt) -# raise ActiveRecord::Forbidden unless res.visible?(au) - res - end - def self.show_opt {:include => {:licenses => {}}} end diff --git a/app/models/original_picture.rb b/app/models/original_picture.rb index c141cc80..5b3b29dd 100644 --- a/app/models/original_picture.rb +++ b/app/models/original_picture.rb @@ -1,4 +1,4 @@ -class OriginalPicture < Pettanr::Item +class OriginalPicture < Pettanr::Content belongs_to :artist belongs_to :original_picture_license_group has_one :resource_picture @@ -11,16 +11,8 @@ class OriginalPicture < Pettanr::Item validates :artist_id, :presence => true, :numericality => true, :existence => {:both => false} validates :md5, :presence => true, :length => {:minimum => 32, :maximum => 32} - def self.singular - 'OriginalPicture' - end - - def self.plural - 'OriginalPictures' - end - def self.owner_type - :author + :artist end def supply_default @@ -31,18 +23,10 @@ class OriginalPicture < Pettanr::Item self.artist_id = ar.id end - def own? roles - roles = [roles] unless roles.respond_to?(:each) - ar = OriginalPicture.get_artist_from_roles roles - return false unless ar - self.artist_id == ar.id + def visible? operators + return false unless super + false end - - def visible? roles - return true if self.admin_role_check roles - self.own?(roles) - end - def filename "#{self.id}.#{self.ext}" end @@ -90,37 +74,8 @@ class OriginalPicture < Pettanr::Item self.published_at != nil 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.mylist_where ar - ['original_pictures.artist_id = ?', ar.id] - end - - def self.mylist ar, page = 1, page_size = self.default_page_size - OriginalPicture.where(self.mylist_where(ar)).includes(OriginalPicture.list_opt).order('original_pictures.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.mylist_paginate ar, page = 1, page_size = self.default_page_size - Kaminari.paginate_array(Array.new(OriginalPicture.where(self.mylist_where(ar)).count, nil)).page(page).per(page_size) + def self.list_order + 'original_pictures.updated_at desc' end def self.list_opt @@ -135,22 +90,6 @@ class OriginalPicture < Pettanr::Item Picture.find(:all, {:conditions => ['pictures.original_picture_id = ?', self.id], :order => 'pictures.revision desc'} ) end - def self.show cid, roles - opt = {} - opt.merge!(self.show_opt) - res = OriginalPicture.find(cid, opt) - raise ActiveRecord::Forbidden unless res.visible?(roles) - res - end - - def self.edit cid, ar - opt = {} - opt.merge!(self.show_opt) - res = OriginalPicture.find(cid, opt) - raise ActiveRecord::Forbidden unless res.own?(ar) - res - end - def self.show_opt {:include => {:resource_picture => {}, :pictures => {}}} end diff --git a/app/models/panel.rb b/app/models/panel.rb index 33a99b61..fe47e368 100644 --- a/app/models/panel.rb +++ b/app/models/panel.rb @@ -1,5 +1,5 @@ #コマ -class Panel < Pettanr::Item +class Panel < Pettanr::Content belongs_to :author has_many :scroll_panels has_many :sheet_panels @@ -18,20 +18,8 @@ class Panel < Pettanr::Item validates :author_id, :presence => true, :numericality => true, :existence => {:both => false} validates :publish, :presence => true, :numericality => true - def self.singular - 'Panel' - end - - def self.plural - 'Panels' - end - - def self.owner_type - :author - end - def self.valid_encode_columns - super.merge ['caption'] + super + ['caption'] end def self.each_element_class_names @@ -64,20 +52,8 @@ class Panel < Pettanr::Item self.author_id = au.id end - def own? roles - roles = [roles] unless roles.respond_to?(:each) - au = Panel.get_author_from_roles roles - return false unless au - self.author_id == au.id - 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.own?(roles) + def visible? operators + return false unless super return true if self.new_record? self.publish? end @@ -138,91 +114,12 @@ class Panel < Pettanr::Item @render_count = render_count + 1 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_order - 'panels.updated_at desc' - end - def self.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 - Panel.where(self.list_where()).includes(Panel.list_opt).order('panels.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.mylist au, page = 1, page_size = Author.default_panel_page_size - Panel.where(self.mylist_where(au)).includes(Panel.list_opt).order('panels.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.himlist au, page = 1, page_size = Author.default_panel_page_size - Panel.where(self.himlist_where(au)).includes(Panel.list_opt).order('panels.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(Panel.where(self.list_where()).count, nil)).page(page).per(page_size) - end - - def self.mylist_paginate au, page = 1, page_size = Author.default_panel_page_size - Kaminari.paginate_array(Array.new(Panel.where(self.mylist_where(au)).count, nil)).page(page).per(page_size) - end - - def self.himlist_paginate au, page = 1, page_size = Author.default_panel_page_size - Kaminari.paginate_array(Array.new(Panel.where(self.himlist_where(au)).count, nil)).page(page).per(page_size) - end - - def self.list_by_scroll scroll_id, roles, page = 1, page_size = self.default_page_size - self.where(ScrollPanel.list_by_scroll_where(scroll_id)).includes( - {:scroll_panels => {}} - ).order('scroll_panels.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.list_by_sheet sheet_id, roles, page = 1, page_size = self.default_page_size - self.where(SheetPanel.list_by_sheet_where(sheet_id)).includes( - {:sheet_panels => {}} - ).order('sheet_panels.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.list_by_speech_balloon_template speech_balloon_template_id, roles, page = 1, page_size = self.default_page_size - self.where(SpeechBalloon.list_by_speech_balloon_template_where(speech_balloon_template_id)).includes( - {:speech_balloons => {}} - ).order('speech_balloons.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.list_by_author_where author_id - ['panels.author_id = ?', author_id] - end - - def self.list_by_author author_id, roles, page = 1, page_size = self.default_page_size - self.where(self.list_by_author_where(author_id)).includes(self.list_opt).order('panels.updated_at desc').offset((page -1) * page_size).limit(page_size) + def self.list_order + 'panels.updated_at desc' end def self.list_opt @@ -235,22 +132,6 @@ class Panel < Pettanr::Item r end - def self.show rid, roles - opt = {} - opt.merge!(Panel.show_opt) - res = Panel.find(rid, opt) - raise ActiveRecord::Forbidden unless res.visible?(roles) - res - end - - def self.edit rid, au - opt = {} - opt.merge!(Panel.show_opt) - res = Panel.find(rid, opt) - raise ActiveRecord::Forbidden unless res.own?(au) - res - end - def self.show_opt r = { :author => {} diff --git a/app/models/panel_picture.rb b/app/models/panel_picture.rb index ccb5cd07..a68af587 100644 --- a/app/models/panel_picture.rb +++ b/app/models/panel_picture.rb @@ -1,4 +1,4 @@ -class PanelPicture < Pettanr::Item +class PanelPicture < Pettanr::Content include Element include ElementInspire belongs_to :panel @@ -14,20 +14,12 @@ class PanelPicture < Pettanr::Item validates :z, :presence => true, :numericality => {:greater_than => 0} validates :t, :presence => true, :numericality => {:greater_than_or_equal_to => 0} - def self.singular - 'PanelPicture' - end - - def self.plural - 'PanelPictures' + def owner_model + self.panel end def self.valid_encode_columns - super.merge ['link', 'caption'] - end - - def self.owner_type - :author + super + ['link', 'caption'] end def self.colum_structures @@ -67,14 +59,9 @@ class PanelPicture < Pettanr::Item true 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 + def visible? operators + return false unless super + self.owner_model.visible? operators end def supply_default @@ -136,69 +123,12 @@ class PanelPicture < Pettanr::Item 'panel_picture' 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 '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 - PanelPicture.where(self.list_where()).includes(PanelPicture.list_opt).order('panel_pictures.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.mylist au, page = 1, page_size = Author.default_panel_picture_page_size - PanelPicture.where(self.mylist_where(au)).includes(PanelPicture.list_opt).order('panel_pictures.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.himlist au, page = 1, page_size = Author.default_panel_picture_page_size - PanelPicture.where(self.himlist_where(au)).includes(PanelPicture.list_opt).order('panel_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(PanelPicture.where(self.list_where()).includes(PanelPicture.list_opt).count, nil)).page(page).per(page_size) - end - - def self.mylist_paginate au, page = 1, page_size = Author.default_panel_picture_page_size - Kaminari.paginate_array(Array.new(PanelPicture.where(self.mylist_where(au)).includes(PanelPicture.list_opt).count, nil)).page(page).per(page_size) - end - - def self.himlist_paginate au, page = 1, page_size = Author.default_panel_picture_page_size - Kaminari.paginate_array(Array.new(PanelPicture.where(self.himlist_where(au)).includes(PanelPicture.list_opt).count, nil)).page(page).per(page_size) - end - - def self.list_by_panel_where panel_id - ['panel_pictures.panel_id = ?', panel_id] - end - - def self.list_by_panel panel_id, roles, page = 1, page_size = self.default_page_size - self.where(self.list_by_panel_where(panel_id)).includes(self.list_opt).order('panel_pictures.updated_at desc').offset((page -1) * page_size).limit(page_size) + def self.list_order + 'panel_pictures.updated_at desc' end def self.list_opt @@ -209,14 +139,6 @@ class PanelPicture < Pettanr::Item {:include => {:panel => {:include => {:author => {}}}, :picture => {:include => {:artist => {}, :license => {}}} }} end - def self.show cid, au - opt = {} - opt.merge!(PanelPicture.show_opt) - res = PanelPicture.find(cid, opt) - raise ActiveRecord::Forbidden unless res.visible?(au) - res - end - def self.show_opt {:include => {:panel => {:author => {}}, :picture => {:artist => {}, :license => {}}}} end diff --git a/app/models/picture.rb b/app/models/picture.rb index 16f654c8..5aeeee30 100644 --- a/app/models/picture.rb +++ b/app/models/picture.rb @@ -1,5 +1,5 @@ #実素材 -class Picture < Pettanr::Item +class Picture < Pettanr::Content belongs_to :original_picture belongs_to :license belongs_to :artist @@ -17,20 +17,12 @@ class Picture < Pettanr::Item validates :artist_name, :presence => true validates :classname, :presence => true, :length => {:maximum => 50} - def self.singular - 'Picture' - end - - def self.plural - 'Pictures' - end - def self.owner_type - :author + :artist end def self.valid_encode_columns - super.merge ['artist_name', 'classname', 'credit', 'settings'] + super + ['artist_name', 'classname', 'credit', 'settings'] end def supply_default @@ -45,14 +37,7 @@ class Picture < Pettanr::Item self.revision = self.new_revision #Do not move to attr. new_revision reffernces self.original_picture_id end - def own? roles - roles = [roles] unless roles.respond_to?(:each) - ar = Picture.get_artist_from_roles roles - return false unless ar - self.artist_id == ar.id - end - - def visible? ar + def visible? operators return true end @@ -162,13 +147,6 @@ class Picture < Pettanr::Item {:include => {:license => {}, :artist => {}} } end - def self.show rid, roles - opt = {} - r = Picture.find(rid, opt) - raise ActiveRecord::Forbidden unless r.visible?(roles) - r - end - def store(imager) res = false if res = self.save diff --git a/app/models/resource_picture.rb b/app/models/resource_picture.rb index 92da32ba..34c3a402 100644 --- a/app/models/resource_picture.rb +++ b/app/models/resource_picture.rb @@ -1,5 +1,5 @@ #素材 -class ResourcePicture < Pettanr::Item +class ResourcePicture < Pettanr::Content belongs_to :artist belongs_to :license belongs_to :picture @@ -17,20 +17,12 @@ class ResourcePicture < Pettanr::Item validates :classname, :presence => true, :length => {:maximum => 50} validates :picture_id, :presence => true, :numericality => true, :existence => {:both => false} - def self.singular - 'ResourcePicture' - end - - def self.plural - 'ResourcePictures' - end - def self.owner_type - :author + :artist end def self.valid_encode_columns - super.merge ['artist_name', 'classname', 'credit', 'settings'] + super + ['artist_name', 'classname', 'credit', 'settings'] end def supply_default @@ -43,19 +35,8 @@ class ResourcePicture < Pettanr::Item self.attributes = attr end - def own? roles - roles = [roles] unless roles.respond_to?(:each) - ar = ResourcePicture.get_artist_from_roles roles - return false unless ar - self.artist_id == ar.id - end - - def visible? roles - if MagicNumber['run_mode'] == 0 - return false unless guest_role_check(roles) - else - return false unless resource_reader_role_check(roles) - end + def visible? operators + return false unless super true end @@ -97,81 +78,12 @@ class ResourcePicture < Pettanr::Item self.tmb_opt_img_tag 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.mylist_where ar - ['resource_pictures.artist_id = ?', ar.id] - end - - def self.himlist_where ar - ['resource_pictures.artist_id = ?', ar.id] - end - - def self.list page = 1, page_size = self.default_page_size - ResourcePicture.includes(ResourcePicture.list_opt).order('resource_pictures.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.mylist ar, page = 1, page_size = Author.default_resource_picture_page_size - ResourcePicture.where(self.mylist_where(ar)).includes(ResourcePicture.list_opt).order('resource_pictures.updated_at desc').offset((page -1) * page_size).limit(page_size) + def self.list_order + 'resource_pictures.updated_at desc' end - def self.himlist ar, page = 1, page_size = Author.default_resource_picture_page_size - ResourcePicture.where(self.himlist_where(ar)).includes(ResourcePicture.list_opt).order('resource_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(ResourcePicture.count, nil)).page(page).per(page_size) - end - - def self.mylist_paginate ar, page = 1, page_size = Author.default_resource_picture_page_size - Kaminari.paginate_array(Array.new(ResourcePicture.where(self.mylist_where(ar)).count, nil)).page(page).per(page_size) - end - - def self.himlist_paginate ar, page = 1, page_size = Author.default_resource_picture_page_size - Kaminari.paginate_array(Array.new(ResourcePicture.where(self.himlist_where(ar)).count, nil)).page(page).per(page_size) - end - - def self.list_by_original_picture_where original_picture_id - ['resource_pictures.original_picture_id = ?', original_picture_id] - end - - def self.list_by_original_picture original_picture_id, roles, page = 1, page_size = self.default_page_size - self.where(self.list_by_original_picture_where(original_picture_id)).includes(self.list_opt).order('resource_pictures.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.list_by_license_where license_id - ['resource_pictures.license_id = ?', license_id] - end - - def self.list_by_license license_id, roles, page = 1, page_size = self.default_page_size - self.where(self.list_by_license_where(license_id)).includes(self.list_opt).order('resource_pictures.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.list_by_artist_where artist_id - ['resource_pictures.artist_id = ?', artist_id] - end - - def self.list_by_artist artist_id, roles, page = 1, page_size = self.default_page_size - self.where(self.list_by_artist_where(artist_id)).includes(self.list_opt).order('resource_pictures.updated_at desc').offset((page -1) * page_size).limit(page_size) + def self.list_where + '' end def self.list_opt @@ -182,14 +94,6 @@ class ResourcePicture < Pettanr::Item {:include => {:license => {}, :artist => {}, :picture => {}} } end - def self.show rid, roles - opt = {} - opt.merge!(self.show_opt) - r = ResourcePicture.find(rid, opt) - raise ActiveRecord::Forbidden unless r.visible?(roles) - r - end - def self.show_opt {:include => {:license => {}, :artist => {}, :picture => {}} } end @@ -198,14 +102,6 @@ class ResourcePicture < Pettanr::Item {:include => {:license => {}, :artist => {}, :picture => {}} } end - def self.edit rid, ar - opt = {} - opt.merge!(self.show_opt) - r = ResourcePicture.find(rid, opt) - raise ActiveRecord::Forbidden unless r.own?(ar) - r - end - def new_picture imager pc = Picture.new pc.supply_default diff --git a/app/models/scroll.rb b/app/models/scroll.rb index 291ff0c8..395a84f4 100644 --- a/app/models/scroll.rb +++ b/app/models/scroll.rb @@ -1,4 +1,4 @@ -class Scroll < Pettanr::Item +class Scroll < Pettanr::Content has_many :scroll_panels belongs_to :author @@ -6,20 +6,8 @@ class Scroll < Pettanr::Item validates :visible, :presence => true, :numericality => true, :inclusion => {:in => 0..1} validates :author_id, :presence => true, :numericality => true, :existence => {:both => false} - def self.singular - 'Scroll' - end - - def self.plural - 'Scrolls' - end - - def self.owner_type - :author - end - def self.valid_encode_columns - super.merge ['title'] + super + ['title'] end def supply_default @@ -31,13 +19,6 @@ class Scroll < Pettanr::Item self.author_id = operators.author.id end - def own? roles - roles = [roles] unless roles.respond_to?(:each) - au = Scroll.get_author_from_roles roles - return false unless au - self.author_id == au.id - end - def visible? operators return false unless super self.visible > 0 @@ -63,22 +44,6 @@ class Scroll < Pettanr::Item {:include => {:scroll_panels => {:include => {:panel => {}}}, :author => {}}} end - def self.show sid, operators - opt = {} - opt.merge!(Scroll.show_opt) - res = Scroll.find(sid, opt) - raise ActiveRecord::Forbidden unless res.visible?(operators) - res - end - - def self.edit sid, au - opt = {} - opt.merge!(Scroll.show_opt) - res = Scroll.find(sid, opt) - raise ActiveRecord::Forbidden unless res.own?(au) - res - end - def self.show_opt {:include => {:scroll_panels => {:panel => {}}, :author => {}}} end diff --git a/app/models/scroll_panel.rb b/app/models/scroll_panel.rb index 048c2898..b628edf1 100644 --- a/app/models/scroll_panel.rb +++ b/app/models/scroll_panel.rb @@ -1,4 +1,4 @@ -class ScrollPanel < Pettanr::Item +class ScrollPanel < Pettanr::Content belongs_to :author belongs_to :panel belongs_to :scroll @@ -8,16 +8,8 @@ class ScrollPanel < Pettanr::Item validates :author_id, :presence => true, :numericality => true, :existence => {:both => false} validates :t, :presence => true, :numericality => {:greater_than_or_equal_to => 0} - def self.singular - 'ScrollPanel' - end - - def self.plural - 'ScrollPanels' - end - - def self.owner_type - :author + def owner_model + self.scroll end def supply_default @@ -31,69 +23,9 @@ class ScrollPanel < Pettanr::Item self.author_id = au.id end - def own? roles - roles = [roles] unless roles.respond_to?(:each) - au = ScrollPanel.get_author_from_roles roles - return false unless au - self.author_id == au.id - 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.scroll.own?(roles) - self.scroll.visible? roles - end - - def self.default_panel_size - 30 - end - - def self.max_panel_size - 200 - end - - def self.offset cnt, prm = nil - offset = prm.to_i - offset = cnt - 1 if offset >= cnt - offset = cnt - offset.abs if offset < 0 - offset = 0 if offset < 0 - offset - end - - def self.panel_count cnt, prm = self.default_panel_size - count = prm.to_i - count = self.max_panel_size if count > self.max_panel_size - count = self.default_panel_size if count < 1 - count - 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.play_list_where cid - ['scroll_panels.scroll_id = ?', cid] + def visible? operators + return false unless super + self.owner_model.visible? operators end def self.list_order @@ -104,58 +36,14 @@ class ScrollPanel < Pettanr::Item 'scrolls.visible > 0' end - def self.mylist_where au - ['scroll_panels.author_id = ?', au.id] - end - - def self.himlist_where au - ['scroll_panels.author_id = ? and scrolls.visible > 0', au.id] + def self.play_list_where cid + ['scroll_panels.scroll_id = ?', cid] end def self.play_list scroll, author, offset = 0, limit = ScrollPanel.default_panel_size ScrollPanel.where(self.play_list_where(scroll.id)).includes(ScrollPanel.list_opt).order('scroll_panels.t').offset(offset).limit(limit) end - def self.list page = 1, page_size = self.default_page_size - ScrollPanel.where(self.list_where()).includes(ScrollPanel.list_opt).order('scroll_panels.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.mylist au, page = 1, page_size = Author.default_scroll_panel_page_size - ScrollPanel.where(self.mylist_where(au)).includes(ScrollPanel.list_opt).order('scroll_panels.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.himlist au, page = 1, page_size = Author.default_scroll_panel_page_size - ScrollPanel.where(self.himlist_where(au)).includes(ScrollPanel.list_opt).order('scroll_panels.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(ScrollPanel.where(self.list_where()).includes(ScrollPanel.list_opt).count, nil)).page(page).per(page_size) - end - - def self.mylist_paginate au, page = 1, page_size = Author.default_scroll_panel_page_size - Kaminari.paginate_array(Array.new(ScrollPanel.where(self.mylist_where(au)).includes(ScrollPanel.list_opt).count, nil)).page(page).per(page_size) - end - - def self.himlist_paginate au, page = 1, page_size = Author.default_scroll_panel_page_size - Kaminari.paginate_array(Array.new(ScrollPanel.where(self.himlist_where(au)).includes(ScrollPanel.list_opt).count, nil)).page(page).per(page_size) - end - - def self.list_by_scroll_where scroll_id - ['scroll_panels.scroll_id = ?', scroll_id] - end - - def self.list_by_scroll scroll_id, roles, page = 1, page_size = self.default_page_size - self.where(self.list_by_scroll_where(scroll_id)).includes(self.list_opt).order('scroll_panels.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.list_by_panel_where panel_id - ['scroll_panels.panel_id = ?', panel_id] - end - - def self.list_by_panel panel_id, roles, page = 1, page_size = self.default_page_size - self.where(self.list_by_panel_where(panel_id)).includes(self.list_opt).order('scroll_panels.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - def self.list_opt { :author => {}, @@ -184,22 +72,6 @@ class ScrollPanel < Pettanr::Item }} end - def self.show spid, roles - opt = {} - opt.merge!(ScrollPanel.show_opt) - res = ScrollPanel.find spid, opt - raise ActiveRecord::Forbidden unless res.visible?(roles) - res - end - - def self.edit spid, au - opt = {} - opt.merge!(ScrollPanel.show_opt) - res = ScrollPanel.find spid, opt - raise ActiveRecord::Forbidden unless res.own?(au) - res - end - def self.show_opt {:include => { :author => {}, diff --git a/app/models/sheet.rb b/app/models/sheet.rb index 0d9def85..b79dd525 100644 --- a/app/models/sheet.rb +++ b/app/models/sheet.rb @@ -1,4 +1,4 @@ -class Sheet < Pettanr::Item +class Sheet < Pettanr::Content has_many :sheet_panels has_many :story_sheets belongs_to :author @@ -9,20 +9,8 @@ class Sheet < Pettanr::Item validates :visible, :presence => true, :numericality => true, :inclusion => {:in => 0..1} accepts_nested_attributes_for :sheet_panels, :allow_destroy => true - def self.singular - 'Sheet' - end - - def self.plural - 'Sheets' - end - - def self.owner_type - :author - end - def self.valid_encode_columns - super.merge ['caption'] + super + ['caption'] end def self.each_element_class_names @@ -55,20 +43,8 @@ class Sheet < Pettanr::Item self.author_id = au.id end - def own? roles - roles = [roles] unless roles.respond_to?(:each) - au = Sheet.get_author_from_roles roles - return false unless au - self.author_id == au.id - 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.own?(roles) + def visible? operators + return false unless super return true if self.new_record? self.visible > 0 end @@ -92,89 +68,12 @@ class Sheet < Pettanr::Item self.tag_id + f.to_s end - def self.default_page_size - 25 - end - - def self.max_page_size - 100 - end - - def self.default_panel_size - 30 - end - - def self.max_panel_size - 200 - 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 'sheets.visible > 0' end - def self.mylist_where au - ['sheets.author_id = ?', au.id] - end - - def self.himlist_where au - ['sheets.author_id = ? and sheets.visible > 0', au.id] - end - - def self.list page = 1, page_size = self.default_page_size - Sheet.where(self.list_where()).includes(Sheet.list_opt).order('sheets.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.mylist au, page = 1, page_size = Author.default_sheet_page_size - Sheet.where(self.mylist_where(au)).includes(Sheet.list_opt).order('sheets.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.himlist au, page = 1, page_size = Author.default_sheet_page_size - Sheet.where(self.himlist_where(au)).includes(Sheet.list_opt).order('sheets.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(Sheet.where(self.list_where()).count, nil)).page(page).per(page_size) - end - - def self.mylist_paginate au, page = 1, page_size = Author.default_sheet_page_size - Kaminari.paginate_array(Array.new(Sheet.where(self.mylist_where(au)).count, nil)).page(page).per(page_size) - end - - def self.himlist_paginate au, page = 1, page_size = Author.default_sheet_page_size - Kaminari.paginate_array(Array.new(Sheet.where(self.himlist_where(au)).count, nil)).page(page).per(page_size) - end - - def self.list_by_story story_id, roles, page = 1, page_size = self.default_page_size - self.where(StorySheet.list_by_story_where(story_id)).includes( - {:story_sheets => {}} - ).order('story_sheets.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.list_by_panel panel_id, roles, page = 1, page_size = self.default_page_size - self.where(SheetPanel.list_by_panel_where(panel_id)).includes( - {:sheet_panels => {}} - ).order('sheet_panels.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.list_by_author_where author_id - ['sheets.author_id = ?', author_id] - end - - def self.list_by_author author_id, roles, page = 1, page_size = self.default_page_size - self.where(self.list_by_author_where(author_id)).includes(self.list_opt).order('sheets.updated_at desc').offset((page -1) * page_size).limit(page_size) + def self.list_order + 'sheets.updated_at desc' end def self.list_opt @@ -185,22 +84,6 @@ class Sheet < Pettanr::Item {:include => {:sheet_panels => {:include => {:panel => {}}}, :author => {}}} end - def self.show sid, roles - opt = {} - opt.merge!(Sheet.show_opt) - res = Sheet.find(sid, opt) - raise ActiveRecord::Forbidden unless res.visible?(roles) - res - end - - def self.edit sid, au - opt = {} - opt.merge!(Sheet.show_opt) - res = Sheet.find(sid, opt) - raise ActiveRecord::Forbidden unless res.own?(au) - res - end - def self.show_opt {:include => {:sheet_panels => {:panel => {}}, :author => {}}} end diff --git a/app/models/sheet_panel.rb b/app/models/sheet_panel.rb index 547d638c..3af52192 100644 --- a/app/models/sheet_panel.rb +++ b/app/models/sheet_panel.rb @@ -1,4 +1,4 @@ -class SheetPanel < Pettanr::Item +class SheetPanel < Pettanr::Content belongs_to :author belongs_to :panel belongs_to :sheet @@ -12,16 +12,8 @@ class SheetPanel < Pettanr::Item validates :z, :presence => true, :numericality => {:greater_than => 0} validates :t, :presence => true, :numericality => {:greater_than_or_equal_to => 0} - def self.singular - 'SheetPanel' - end - - def self.plural - 'SheetPanels' - end - - def self.owner_type - :author + def owner_model + self.sheet end def supply_default @@ -43,104 +35,27 @@ class SheetPanel < Pettanr::Item self.author_id = au.id end - def own? roles - roles = [roles] unless roles.respond_to?(:each) - au = SheetPanel.get_author_from_roles roles - return false unless au - self.author_id == au.id - 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.sheet.own?(roles) - self.sheet.visible? roles - 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.play_list_where cid - ['sheet_panels.sheet_id = ?', cid] + def visible? operators + return false unless super + self.owner_model.visible? operators end def self.list_where 'sheets.visible > 0' end - def self.mylist_where au - ['sheet_panels.author_id = ?', au.id] + def self.list_order + 'sheet_panels.updated_at desc' end - def self.himlist_where au - ['sheet_panels.author_id = ? and sheets.visible > 0', au.id] + def self.play_list_where cid + ['sheet_panels.sheet_id = ?', cid] end def self.play_list sheet, author SheetPanel.where(self.play_list_where(sheet.id)).includes(SheetPanel.list_opt).order('sheet_panels.t') end - def self.list page = 1, page_size = self.default_page_size - SheetPanel.where(self.list_where()).includes(SheetPanel.list_opt).order('sheet_panels.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.mylist au, page = 1, page_size = Author.default_sheet_panel_page_size - SheetPanel.where(self.mylist_where(au)).includes(SheetPanel.list_opt).order('sheet_panels.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.himlist au, page = 1, page_size = Author.default_sheet_panel_page_size - SheetPanel.where(self.himlist_where(au)).includes(SheetPanel.list_opt).order('sheet_panels.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(SheetPanel.where(self.list_where()).includes(SheetPanel.list_opt).count, nil)).page(page).per(page_size) - end - - def self.mylist_paginate au, page = 1, page_size = Author.default_sheet_panel_page_size - Kaminari.paginate_array(Array.new(SheetPanel.where(self.mylist_where(au)).includes(SheetPanel.list_opt).count, nil)).page(page).per(page_size) - end - - def self.himlist_paginate au, page = 1, page_size = Author.default_sheet_panel_page_size - Kaminari.paginate_array(Array.new(SheetPanel.where(self.himlist_where(au)).includes(SheetPanel.list_opt).count, nil)).page(page).per(page_size) - end - - def self.list_by_sheet_where sheet_id - ['sheet_panels.sheet_id = ?', sheet_id] - end - - def self.list_by_sheet sheet_id, roles, page = 1, page_size = self.default_page_size - self.where(self.list_by_sheet_where(sheet_id)).includes(self.list_opt).order('sheet_panels.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.list_by_panel_where panel_id - ['sheet_panels.panel_id = ?', panel_id] - end - - def self.list_by_panel panel_id, roles, page = 1, page_size = self.default_page_size - self.where(self.list_by_panel_where(panel_id)).includes(self.list_opt).order('sheet_panels.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - def self.list_opt { :author => {}, @@ -169,22 +84,6 @@ class SheetPanel < Pettanr::Item }} end - def self.show spid, roles - opt = {} - opt.merge!(SheetPanel.show_opt) - res = SheetPanel.find spid, opt - raise ActiveRecord::Forbidden unless res.visible?(roles) - res - end - - def self.edit spid, au - opt = {} - opt.merge!(SheetPanel.show_opt) - res = SheetPanel.find spid, opt - raise ActiveRecord::Forbidden unless res.own?(au) - res - end - def self.show_opt {:include => { :author => {}, diff --git a/app/models/speech.rb b/app/models/speech.rb index af6f09e8..82e99c4d 100644 --- a/app/models/speech.rb +++ b/app/models/speech.rb @@ -1,4 +1,4 @@ -class Speech < Pettanr::Item +class Speech < Pettanr::Content include ElementPart belongs_to :speech_balloon belongs_to :writing_format @@ -17,20 +17,12 @@ class Speech < Pettanr::Item @@text_align_texts = ['left', 'left', 'right', 'center'] - def self.singular - 'Speech' - end - - def self.plural - 'Speeches' - end - - def self.owner_type - :author + def owner_model + self.speech_balloon.panel end def self.valid_encode_columns - super.merge ['content', 'quotes', 'settings'] + super + ['content', 'quotes', 'settings'] end def self.colum_structures @@ -48,14 +40,9 @@ class Speech < Pettanr::Item self.height = 100 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.speech_balloon.panel.own?(roles) - self.speech_balloon.panel.visible? roles + def visible? operators + return false unless super + self.owner_model.visible? operators end def symbol_option @@ -74,53 +61,12 @@ class Speech < Pettanr::Item @@text_align_texts[self.text_align] 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 'panels.publish > 0' end - def self.list page = 1, page_size = self.default_page_size - Speech.where(self.list_where()).includes(Speech.list_opt).order('speeches.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(Speech.where(self.list_where()).includes(Speech.list_opt).count, nil)).page(page).per(page_size) - end - - def self.list_by_speech_balloon_where speech_balloon_id - ['speeches.speech_balloon_id = ?', speech_balloon_id] - end - - def self.list_by_speech_balloon speech_balloon_id, roles, page = 1, page_size = self.default_page_size - self.where(self.list_by_speech_balloon_where(speech_balloon_id)).includes(self.list_opt).order('speeches.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.list_by_writing_format_where writing_format_id - ['speeches.writing_format_id = ?', writing_format_id] - end - - def self.list_by_writing_format writing_format_id, roles, page = 1, page_size = self.default_page_size - self.where(self.list_by_writing_format_where(writing_format_id)).includes(self.list_opt).order('speeches.updated_at desc').offset((page -1) * page_size).limit(page_size) + def self.list_order + 'speeches.updated_at desc' end def self.list_opt @@ -131,14 +77,6 @@ class Speech < Pettanr::Item {:include => {:speech_balloon => {:include => {:panel => {:include => {:author => {} }}, :balloon => {}, :speech_balloon_template => {} }}}} end - def self.show cid, au - opt = {} - opt.merge!(Speech.show_opt) - res = Speech.find(cid, opt) - raise ActiveRecord::Forbidden unless res.visible?(au) - res - end - def self.show_opt {:include => {:speech_balloon => {:panel => {:author => {}}, :balloon => {}, :speech_balloon_template => {} }}} end diff --git a/app/models/speech_balloon.rb b/app/models/speech_balloon.rb index 10333606..c839a97f 100644 --- a/app/models/speech_balloon.rb +++ b/app/models/speech_balloon.rb @@ -1,4 +1,4 @@ -class SpeechBalloon < Pettanr::Item +class SpeechBalloon < Pettanr::Content include Element include ElementInspire has_one :balloon, :dependent => :destroy @@ -16,20 +16,12 @@ class SpeechBalloon < Pettanr::Item validates :t, :presence => true, :numericality => {:greater_than_or_equal_to => 0} validates :settings, :extend_speech_balloon => true - def self.singular - 'SpeechBalloon' - end - - def self.plural - 'SpeechBalloons' - end - - def self.owner_type - :author + def owner_model + self.panel end def self.valid_encode_columns - super.merge ['caption', 'classname', 'settings'] + super + ['caption', 'classname', 'settings'] end def self.list_opt_for_panel @@ -69,14 +61,9 @@ class SpeechBalloon < Pettanr::Item 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 + def visible? operators + return false unless super + self.owner_model.visible? operators end def symbol_option @@ -154,77 +141,12 @@ class SpeechBalloon < Pettanr::Item 'speech_balloon' 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 '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 - SpeechBalloon.where(self.list_where()).includes(SpeechBalloon.list_opt).order('speech_balloons.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.mylist au, page = 1, page_size = Author.default_speech_balloon_page_size - SpeechBalloon.where(self.mylist_where(au)).includes(SpeechBalloon.list_opt).order('speech_balloons.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.himlist au, page = 1, page_size = Author.default_speech_balloon_page_size - SpeechBalloon.where(self.himlist_where(au)).includes(SpeechBalloon.list_opt).order('speech_balloons.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(SpeechBalloon.where(self.list_where()).includes(SpeechBalloon.list_opt).count, nil)).page(page).per(page_size) - end - - def self.mylist_paginate au, page = 1, page_size = Author.default_speech_balloon_page_size - Kaminari.paginate_array(Array.new(SpeechBalloon.where(self.mylist_where(au)).includes(SpeechBalloon.list_opt).count, nil)).page(page).per(page_size) - end - - def self.himlist_paginate au, page = 1, page_size = Author.default_speech_balloon_page_size - Kaminari.paginate_array(Array.new(SpeechBalloon.where(self.himlist_where(au)).includes(SpeechBalloon.list_opt).count, nil)).page(page).per(page_size) - end - - def self.list_by_panel_where panel_id - ['speech_balloons.panel_id = ?', panel_id] - end - - def self.list_by_panel panel_id, roles, page = 1, page_size = self.default_page_size - self.where(self.list_by_panel_where(panel_id)).includes(self.list_opt).order('speech_balloons.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.list_by_speech_balloon_template_where speech_balloon_template_id - ['speech_balloons.speech_balloon_template_id = ?', speech_balloon_template_id] - end - - def self.list_by_speech_balloon_template speech_balloon_template_id, roles, page = 1, page_size = self.default_page_size - self.where(self.list_by_speech_balloon_template_where(speech_balloon_template_id)).includes(self.list_opt).order('speech_balloons.updated_at desc').offset((page -1) * page_size).limit(page_size) + def self.list_order + 'speech_balloons.updated_at desc' end def self.list_opt @@ -235,14 +157,6 @@ class SpeechBalloon < Pettanr::Item {:include => {:panel => {:include => {:author => {} }}, :balloon => {}, :speech => {}, :speech_balloon_template => {} }} end - def self.show cid, au - opt = {} - opt.merge!(SpeechBalloon.show_opt) - res = SpeechBalloon.find(cid, opt) - raise ActiveRecord::Forbidden unless res.visible?(au) - res - end - def self.show_opt {:include => {:panel => {:author => {}}, :balloon => {}, :speech => {}, :speech_balloon_template => {} }} end diff --git a/app/models/speech_balloon_template.rb b/app/models/speech_balloon_template.rb index edcd2d8b..b2f3d998 100644 --- a/app/models/speech_balloon_template.rb +++ b/app/models/speech_balloon_template.rb @@ -10,20 +10,8 @@ class SpeechBalloonTemplate < Pettanr::Item validates :system_picture_id, :presence => true, :numericality => true, :existence => {:both => false} validates :settings, :presence => true - def self.singular - 'SpeechBalloonTemplate' - end - - def self.plural - 'SpeechBalloonTemplates' - end - - def self.owner_type - :author - end - def self.valid_encode_columns - super.merge ['name', 'classname', 'caption', 'settings'] + super + ['name', 'classname', 'caption', 'settings'] end def supply_default @@ -33,10 +21,6 @@ class SpeechBalloonTemplate < Pettanr::Item self.t = SpeechBalloonTemplate.count.to_i if self.new_record? end - def visible? author - true - end - def symbol_option self.system_picture.tmb_opt_img_tag end @@ -62,14 +46,6 @@ class SpeechBalloonTemplate < Pettanr::Item {} end - def self.show rid, au - opt = {} - opt.merge!(self.show_opt) - res = SpeechBalloonTemplate.find(rid, opt) - raise ActiveRecord::Forbidden unless res.visible?(au) - res - end - def self.show_opt {} end diff --git a/app/models/story.rb b/app/models/story.rb index 88ce1702..7a9b829f 100644 --- a/app/models/story.rb +++ b/app/models/story.rb @@ -1,5 +1,5 @@ #ストーリー -class Story < Pettanr::Item +class Story < Pettanr::Content has_many :story_sheets belongs_to :comic @@ -8,20 +8,12 @@ class Story < Pettanr::Item validates :visible, :presence => true, :numericality => true, :inclusion => {:in => 0..1} validates :t, :presence => true, :numericality => {:greater_than_or_equal_to => 0} - def self.singular - 'Story' - end - - def self.plural - 'Stories' - end - - def self.owner_type - :author + def owner_model + self.comic end def self.valid_encode_columns - super.merge ['title', 'description'] + super + ['title', 'description'] end def supply_default @@ -33,21 +25,9 @@ class Story < Pettanr::Item def overwrite end - def own? roles - roles = [roles] unless roles.respond_to?(:each) - au = Story.get_author_from_roles roles - return false unless au - self.comic.author_id == au.id - 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.own?(roles) - self.visible > 0 + def visible? operators + return false unless super + self.owner_model.visible? operators end def disp_t @@ -66,91 +46,12 @@ class Story < Pettanr::Item StorySheet.where(['story_sheets.story_id = ?', self.id]).count end - def self.default_page_size - 25 - end - - def self.max_page_size - 100 - end - - def self.default_panel_size - 30 - end - - def self.max_panel_size - 200 - 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 'stories.visible > 0' end - def self.mylist_where au - ['comics.author_id = ?', au.id] - end - - def self.himlist_where au - ['comics.author_id = ? and stories.visible > 0', au.id] - end - - def self.list page = 1, page_size = self.default_page_size - Story.where(self.list_where()).includes(Story.list_opt).order('stories.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.mylist au, page = 1, page_size = Author.default_story_page_size - Story.where(self.mylist_where(au)).includes(Story.list_opt).order('stories.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.himlist au, page = 1, page_size = Author.default_story_page_size - Story.where(self.himlist_where(au)).includes(Story.list_opt).order('stories.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(Story.where(self.list_where()).includes(Story.list_opt).count, nil)).page(page).per(page_size) - end - - def self.mylist_paginate au, page = 1, page_size = Author.default_story_page_size - Kaminari.paginate_array(Array.new(Story.where(self.mylist_where(au)).includes(Story.list_opt).count, nil)).page(page).per(page_size) - end - - def self.himlist_paginate au, page = 1, page_size = Author.default_story_page_size - Kaminari.paginate_array(Array.new(Story.where(self.himlist_where(au)).includes(Story.list_opt).count, nil)).page(page).per(page_size) - end - - def self.list_by_comic_where comic_id - ['stories.comic_id = ?', comic_id] - end - - def self.list_by_comic comic_id, roles, page = 1, page_size = self.default_page_size - self.where(self.list_by_comic_where(comic_id)).includes(self.list_opt).order('stories.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.list_by_sheet sheet_id, roles, page = 1, page_size = self.default_page_size - self.where(StorySheet.list_by_sheet_where(sheet_id)).includes( - {:story_sheets => {}} - ).order('story_sheets.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.list_by_author_where author_id - ['stories.author_id = ?', author_id] - end - - def self.list_by_author author_id, roles, page = 1, page_size = self.default_page_size - self.where(self.list_by_author_where(author_id)).includes(self.list_opt).order('stories.updated_at desc').offset((page -1) * page_size).limit(page_size) + def self.list_order + 'stories.updated_at desc' end def self.list_opt @@ -161,22 +62,6 @@ class Story < Pettanr::Item {:include => {:comic => {:include => {:author => {}}} }} end - def self.show sid, roles - opt = {} - opt.merge!(Story.show_opt) - res = Story.find(sid, opt) - raise ActiveRecord::Forbidden unless res.visible?(roles) - res - end - - def self.edit sid, au - opt = {} - opt.merge!(Story.show_opt) - res = Story.find(sid, opt) - raise ActiveRecord::Forbidden unless res.own?(au) - res - end - def self.show_opt {:include => {:comic => {:author => {}} }} end diff --git a/app/models/story_sheet.rb b/app/models/story_sheet.rb index 08eac83a..ef1dda8c 100644 --- a/app/models/story_sheet.rb +++ b/app/models/story_sheet.rb @@ -1,4 +1,4 @@ -class StorySheet < Pettanr::Item +class StorySheet < Pettanr::Content belongs_to :author belongs_to :story belongs_to :sheet @@ -8,16 +8,8 @@ class StorySheet < Pettanr::Item validates :author_id, :presence => true, :numericality => true, :existence => {:both => false} validates :t, :presence => true, :numericality => {:greater_than_or_equal_to => 0} - def self.singular - 'StorySheet' - end - - def self.plural - 'StorySheets' - end - - def self.owner_type - :author + def owner_model + self.story end def supply_default @@ -31,74 +23,21 @@ class StorySheet < Pettanr::Item self.author_id = au.id end - def own? roles - roles = [roles] unless roles.respond_to?(:each) - au = StorySheet.get_author_from_roles roles - return false unless au - self.author_id == au.id - 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.story.own?(roles) - self.story.visible? roles - end - - def self.default_sheet_size - 30 - end - - def self.max_sheet_size - 200 - end - - def self.offset cnt, prm = nil - offset = prm.to_i - offset = cnt - 1 if offset >= cnt - offset = cnt - offset.abs if offset < 0 - offset = 0 if offset < 0 - offset - 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.play_sheet_where sid - ['story_sheets.story_id = ?', sid] + def visible? operators + return false unless super + self.owner_model.visible? operators end def self.list_where 'stories.visible > 0' end - def self.mylist_where au - ['story_sheets.author_id = ?', au.id] + def self.list_order + 'story_sheets.updated_at desc' end - def self.himlist_where au - ['story_sheets.author_id = ? and stories.visible > 0', au.id] + def self.play_sheet_where sid + ['story_sheets.story_id = ?', sid] end def self.play_sheet story, au, page = 1 @@ -114,50 +53,10 @@ class StorySheet < Pettanr::Item end end - def self.list page = 1, page_size = self.default_page_size - StorySheet.where(self.list_where()).includes(StorySheet.list_opt).order('story_sheets.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.mylist au, page = 1, page_size = Author.default_story_sheet_page_size - StorySheet.where(self.mylist_where(au)).includes(StorySheet.list_opt).order('story_sheets.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.himlist au, page = 1, page_size = Author.default_story_sheet_page_size - StorySheet.where(self.himlist_where(au)).includes(StorySheet.list_opt).order('story_sheets.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(StorySheet.where(self.list_where()).includes(StorySheet.list_opt).count, nil)).page(page).per(page_size) - end - - def self.mylist_paginate au, page = 1, page_size = Author.default_story_sheet_page_size - Kaminari.paginate_array(Array.new(StorySheet.where(self.mylist_where(au)).includes(StorySheet.list_opt).count, nil)).page(page).per(page_size) - end - - def self.himlist_paginate au, page = 1, page_size = Author.default_story_sheet_page_size - Kaminari.paginate_array(Array.new(StorySheet.where(self.himlist_where(au)).includes(StorySheet.list_opt).count, nil)).page(page).per(page_size) - end - def self.play_paginate story, page Kaminari.paginate_array(Array.new(StorySheet.where(self.play_sheet_where(story.id)).includes(StorySheet.list_opt).count, nil)).page(page).per(1) end - def self.list_by_story_where story_id - ['story_sheets.story_id = ?', story_id] - end - - def self.list_by_story story_id, roles, page = 1, page_size = self.default_page_size - self.where(self.list_by_story_where(story_id)).includes(self.list_opt).order('story_sheets.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - - def self.list_by_sheet_where sheet_id - ['story_sheets.sheet_id = ?', sheet_id] - end - - def self.list_by_sheet sheet_id, roles, page = 1, page_size = self.default_page_size - self.where(self.list_by_sheet_where(sheet_id)).includes(self.list_opt).order('story_sheets.updated_at desc').offset((page -1) * page_size).limit(page_size) - end - def self.list_opt { :author => {}, @@ -177,22 +76,6 @@ class StorySheet < Pettanr::Item }} end - def self.show spid, roles - opt = {} - opt.merge!(StorySheet.show_opt) - res = StorySheet.find spid, opt - raise ActiveRecord::Forbidden unless res.visible?(roles) - res - end - - def self.edit spid, au - opt = {} - opt.merge!(StorySheet.show_opt) - res = StorySheet.find spid, opt - raise ActiveRecord::Forbidden unless res.own?(au) - res - end - def self.show_opt {:include => { :author => {}, diff --git a/app/models/system_picture.rb b/app/models/system_picture.rb index a9cf03ec..144c152d 100644 --- a/app/models/system_picture.rb +++ b/app/models/system_picture.rb @@ -9,18 +9,6 @@ class SystemPicture < Pettanr::Item validates :filesize, :presence => true, :numericality => {:greater_than => 0, :less_than_or_equal_to => 2000000}, :natural_number => true validates :md5, :presence => true, :length => {:minimum => 32, :maximum => 32} - def self.singular - 'SystemPicture' - end - - def self.plural - 'SystemPictures' - end - - def self.owner_type - :author - end - before_destroy :destroy_with_file def destroy_with_file @@ -33,17 +21,6 @@ class SystemPicture < Pettanr::Item def overwrite end - def own? roles - roles = [roles] unless roles.respond_to?(:each) - ad = SystemPicture.get_admin_from_roles roles - return false unless ad - true - end - - def visible? ad - true - end - def filename "#{self.id}.#{self.ext}" end @@ -69,37 +46,12 @@ class SystemPicture < Pettanr::Item self.tmb_opt_img_tag 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 nil end - def self.list page = 1, page_size = self.default_page_size - SystemPicture.where(self.list_where()).includes(SystemPicture.list_opt).order('system_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(SystemPicture.where(self.list_where()).count, nil)).page(page).per(page_size) + def self.list_order + 'system_pictures.updated_at desc' end def self.list_opt @@ -110,14 +62,6 @@ class SystemPicture < Pettanr::Item {} end - def self.show sid, ad - opt = {} - opt.merge!(self.show_opt) - res = SystemPicture.find(sid, opt) - raise ActiveRecord::Forbidden unless res.visible?(ad) - res - end - def self.show_opt {} end diff --git a/app/models/writing_format.rb b/app/models/writing_format.rb index e7d04a27..330f1ed6 100644 --- a/app/models/writing_format.rb +++ b/app/models/writing_format.rb @@ -9,20 +9,8 @@ class WritingFormat < Pettanr::Item validates :system_picture_id, :presence => true, :numericality => true, :existence => {:both => false} validates :settings, :presence => true - def self.singular - 'WritingFormat' - end - - def self.plural - 'WritingFormats' - end - - def self.owner_type - :author - end - def self.valid_encode_columns - super.merge ['name', 'classname', 'caption', 'settings'] + super + ['name', 'classname', 'caption', 'settings'] end def supply_default @@ -32,15 +20,12 @@ class WritingFormat < Pettanr::Item self.t = WritingFormat.count.to_i if self.new_record? end - def visible? author - true + def self.list_where + nil end - def self.list - opt = {} - opt.merge!(self.list_opt) - opt.merge!({:order => 'writing_formats.t asc'}) - WritingFormat.find(:all, opt) + def self.list_order + 'writing_formats.t asc' end def self.enable_list @@ -57,14 +42,6 @@ class WritingFormat < Pettanr::Item {} end - def self.show rid, au - opt = {} - opt.merge!(self.show_opt) - res = WritingFormat.find(rid, opt) - raise ActiveRecord::Forbidden unless res.visible?(au) - res - end - def self.show_opt {} end diff --git a/lib/content.rb b/lib/content.rb index 6d6b71f1..6c8f0836 100644 --- a/lib/content.rb +++ b/lib/content.rb @@ -6,50 +6,19 @@ class Pettanr::Content < Pettanr::Item :author end - def self.mylist_where me - '' - end - - def self.mylist_order - '' - end - - def self.himlist_where anyone - '' - end - - def self.himlist_order - '' - end - - def self.mylist me, page = 1, page_size = self.default_page_size - self.where(self.mylist_where(me)).includes(self.list_opt).order(self.mylist_order).offset((page -1) * page_size).limit(page_size) - end - - def self.himlist anyone, operators, page = 1, page_size = self.default_page_size - where_str = if operators.admin? - self.list_where + def self.operator operators + case self.owner_type + when :author + operators.author + when :artist + operators.artist else - self.himlist_where(anyone) + nil end - self.where(where_str).includes(self.list_opt).order(self.mylist_order).offset((page -1) * page_size).limit(page_size) - end - - def self.mylist_paginate me, page = 1, page_size = self.default_page_size - Kaminari.paginate_array( - Array.new(self.where(self.mylist_where(me) - ).includes(self.list_opt).count, nil)).page(page).per(page_size) end - def self.himlist_paginate anyone, operators, page = 1, page_size = self.default_page_size - where_str = if operators.admin? - self.list_where - else - self.himlist_where(anyone) - end - Kaminari.paginate_array( - Array.new(self.where(where_str).includes(self.list_opt).count, nil) - ).page(page).per(page_size) + def self.owner_column + self.owner_type.to_s + '_id' end def self.edit content_id, operators @@ -60,15 +29,20 @@ class Pettanr::Content < Pettanr::Item #InstanceMethods + def owner_model + self + end + def visible? operators super - return true if self.own?(operators) + return true if owner_model.own?(operators) true end def own? operators - return false unless operators.author - self.author_id == operators.author.id + operator = self.class.operator operators + return false unless operator + owner_model.attributes[self.class.self.class.owner_column] == operator.id end end diff --git a/lib/item.rb b/lib/item.rb index e021dfd8..3716f0a4 100644 --- a/lib/item.rb +++ b/lib/item.rb @@ -6,12 +6,8 @@ class Pettanr::Item < ActiveRecord::Base before_validation :valid_encode - def self.valid_encode_columns - [] - end - def self.singular - self.class.to_s + self.to_s end def self.plural @@ -26,6 +22,14 @@ class Pettanr::Item < ActiveRecord::Base self.plural.underscore end + def self.valid_encode_columns + [] + end + + def self.visible_count_options + nil + end + def self.list_where '' end diff --git a/lib/manifest/list.rb b/lib/manifest/list.rb index 43d0c43c..95bfc435 100644 --- a/lib/manifest/list.rb +++ b/lib/manifest/list.rb @@ -15,6 +15,7 @@ module Pettanr @model = @item_name.classify.constantize @offset = (@page -1) * @page_size + @table_name = @model.table_name end def page_number prm = nil @@ -34,62 +35,30 @@ module Pettanr @model.list_where end - def items - @model.where(self.where()).includes(@model.list_opt).order(@model.list_order).offset(@offset).limit(@page_size) - end - - def paginate - Kaminari.paginate_array(Array.new(@model.where(self.where()).includes(@model.list_opt).count, nil)).page(@offset).per(@page_size) - end - - end - - class PublicList - def initialize page, page_size, operators, item_name, list_name, conf, manifest - @operators = operators - @item_name = item_name - @list_name = list_name - @conf = conf - @manifest = manifest - @default_page_size = @conf['default_page_size'] || 25 - @max_page_size = @conf['max_page_size'] || 100 - @page = self.page_number(page) - @page_size = self.page_size page_size - - @model = @item_name.classify.constantize - @offset = (@page -1) * @page_size - end - - def page_number prm = nil - page = prm.to_i - page = 1 if page < 1 - page + def includes + @model.list_opt end - def page_size prm - page_size = prm.to_i - page_size = @max_page_size if page_size > @max_page_size - page_size = @default_page_size if page_size < 1 - page_size - end - - def where - @model.list_where + def order + @model.list_order end def items - @model.where(self.where()).includes(@model.list_opt).order(@model.list_order).offset(@offset).limit(@page_size) + @model.where(self.where()).includes(self.includes).order(self.order).offset(@offset).limit(@page_size) end def paginate - Kaminari.paginate_array(Array.new(@model.where(self.where()).includes(@model.list_opt).count, nil)).page(@offset).per(@page_size) + Kaminari.paginate_array(Array.new(@model.where(self.where()).includes(self.includes).count, nil)).page(@offset).per(@page_size) end end - class SystemResourceList + class PublicList < BaseList + end + + class SystemResourceList < BaseList def items - @model.where(self.where()).includes(@model.list_opt).order(@model.list_order).offset(@offset).limit(@page_size).delete_if {|sbt| + @model.where(self.where()).includes(@model.list_opt).order(@model.order).offset(@offset).limit(@page_size).delete_if {|sbt| Pettanr::Application.manifest.system_resources.speech_balloon_templates[sbt.classname] == nil } end @@ -100,34 +69,7 @@ module Pettanr end - class PrivateList - def initialize page, page_size, operators, item_name, list_name, conf, manifest - @operators = operators - @item_name = item_name - @conf = conf - @manifest = manifest - @default_page_size = @conf['default_page_size'] || 25 - @max_page_size = @conf['max_page_size'] || 100 - @page = self.page_number(page) - @page_size = self.page_size page_size - - @model = @item_name.classify.constantize - @offset = (@page -1) * @page_size - end - - def page_number prm = nil - page = prm.to_i - page = 1 if page < 1 - page - end - - def page_size prm - page_size = prm.to_i - page_size = @max_page_size if page_size > @max_page_size - page_size = @default_page_size if page_size < 1 - page_size - end - + class PrivateList < BaseList def where case @model.owner_type when :author @@ -137,31 +79,12 @@ module Pettanr end [@model.plural + '.' + @model.owner_type.to_s + '_id = ?', operator.id] end - - def items - @model.where(self.where()).includes(@model.list_opt).order(@model.list_order).offset(@offset).limit(@page_size) - end - - def paginate - Kaminari.paginate_array(Array.new(@model.where(self.where()).includes(@model.list_opt).count, nil)).page(@offset).per(@page_size) - end - + end - class HasManyList + class HasManyList < BaseList def initialize page, page_size, operators, item_name, list_name, conf, manifest - @operators = operators - @item_name = item_name - @list_name = list_name - @conf = conf - @manifest = manifest - @default_page_size = @conf['default_page_size'] || 25 - @max_page_size = @conf['max_page_size'] || 100 - @page = self.page_number(page) - @page_size = self.page_size page_size - - @model = @item_name.classify.constantize - @offset = (@page -1) * @page_size + super @association_name = @conf['association_name'] @has_many_conf = @manifest.model(@item_name).associations['has_many'] || {} @association_conf = @has_many_conf[@association_name] || {} @@ -170,19 +93,6 @@ module Pettanr @foreign_key = @association_conf['foreign_key'] end - def page_number prm = nil - page = prm.to_i - page = 1 if page < 1 - page - end - - def page_size prm - page_size = prm.to_i - page_size = @max_page_size if page_size > @max_page_size - page_size = @default_page_size if page_size < 1 - page_size - end - def where parent_item w = @model.list_where w += ' and ' unless w.blank? @@ -190,103 +100,50 @@ module Pettanr end def items parent_item - @model.where(self.where(parent_item)).includes(@model.list_opt).order(@model.list_order).offset(@offset).limit(@page_size) + @model.where(self.where(parent_item)).includes(self.includes).order(self.order).offset(@offset).limit(@page_size) end def paginate parent_item - Kaminari.paginate_array(Array.new(@model.where(self.where(parent_item)).includes(@model.list_opt).count, nil)).page(@offset).per(@page_size) + Kaminari.paginate_array(Array.new(@model.where(self.where(parent_item)).includes(self.includes).count, nil)).page(@offset).per(@page_size) end end - class FilterList + class FilterList < BaseList def initialize page, page_size, operators, item_name, list_name, conf, manifest - @operators = operators - @item_name = item_name - @list_name = list_name - @conf = conf - @manifest = manifest - @default_page_size = @conf['default_page_size'] || 25 - @max_page_size = @conf['max_page_size'] || 100 - @page = self.page_number(page) - @page_size = self.page_size page_size - - @model = @item_name.classify.constantize - @table_name = @model.table_name - @offset = (@page -1) * @page_size + super @list_list_conf = @manifest.list(@item_name).lists[list_name] || {} @from = @list_list_conf['from'] @filter_key = @list_list_conf['filter_key'] end - def page_number prm = nil - page = prm.to_i - page = 1 if page < 1 - page - end - - def page_size prm - page_size = prm.to_i - page_size = @max_page_size if page_size > @max_page_size - page_size = @default_page_size if page_size < 1 - page_size - end - - def list_opt - {@from => {} } - end - def where filter_item w = @model.list_where w += ' and ' unless w.blank? [w + @table_name + '.' + @filter_key + ' = ?', filter_item.id] end + def includes + {@from => {} } + end + def items filter_item - @model.where(self.where(filter_item)).includes(self.list_opt).order(@model.list_order).offset(@offset).limit(@page_size) + @model.where(self.where(filter_item)).includes(self.includes).order(self.order).offset(@offset).limit(@page_size) end def paginate filter_item - Kaminari.paginate_array(Array.new(@model.where(self.where(filter_item)).includes(self.list_opt).count, nil)).page(@offset).per(@page_size) + Kaminari.paginate_array(Array.new(@model.where(self.where(filter_item)).includes(self.includes).count, nil)).page(@offset).per(@page_size) end end - class ThroughFilterList + class ThroughFilterList < FilterList def initialize page, page_size, operators, item_name, list_name, conf, manifest - @operators = operators - @item_name = item_name - @list_name = list_name - @conf = conf - @manifest = manifest - @default_page_size = @conf['default_page_size'] || 25 - @max_page_size = @conf['max_page_size'] || 100 - @page = self.page_number(page) - @page_size = self.page_size page_size - - @model = @item_name.classify.constantize - @table_name = @model.table_name - @offset = (@page -1) * @page_size - @list_list_conf = @manifest.list(@item_name).lists[list_name] || {} - @filter_key = @list_list_conf['filter_key'] - @from = @list_list_conf['from'] + super @through = @list_list_conf['through'] end - def page_number prm = nil - page = prm.to_i - page = 1 if page < 1 - page - end - - def page_size prm - page_size = prm.to_i - page_size = @max_page_size if page_size > @max_page_size - page_size = @default_page_size if page_size < 1 - page_size - end - - def list_opt + def includes {@through => {@from => {}} } end @@ -296,17 +153,12 @@ module Pettanr [w + @through + '.' + @filter_key + ' = ?', filter_item.id] end - def items filter_item - @model.where(self.where(filter_item)).includes(self.list_opt).order(@model.list_order).offset(@offset).limit(@page_size) - end - - def paginate filter_item - Kaminari.paginate_array(Array.new(@model.where(self.where(filter_item)).includes(self.list_opt).count, nil)).page(@offset).per(@page_size) - end - end - @@types = {'public' => PublicList, 'system_resource' => SystemResourceList, 'private' => PrivateList, 'has_many' => HasManyList, 'filter' => FilterList, 'through_filter' => ThroughFilterList} + @@types = { + 'public' => PublicList, 'system_resource' => SystemResourceList, 'private' => PrivateList, + 'has_many' => HasManyList, 'filter' => FilterList, 'through_filter' => ThroughFilterList + } def initialize list_manifest @list_manifest = list_manifest @item_name = @list_manifest.item_name -- 2.11.0