name: '<%= asset_path('item.png') %>',\r
},\r
caption: {\r
-- type: 'method',\r
-- name: 'plain_scenario',\r
++ type: 'column',\r
++ name: 'caption',\r
link: {\r
type: 'none'\r
},\r
public_list
end
- def by_me
- my_li
- end
-
+ def stories
+ has_many_list
+ end
+
+ def by_author
+ filter_list
+ end
+
def show
@item = Comic.show(params[:id], @operators)
respond_to do |format|
end
def create_token
-- if @user.create_token
++ if @operators.user.create_token
respond_to do |format|
flash[:notice] = I18n.t('flash.notice.created', :model => User.human_attribute_name(:authentication_token))
format.html { redirect_to({:action => :configure}) }
end
def delete_token
-- if @user.delete_token
++ if @operators.user.delete_token
respond_to do |format|
flash[:notice] = I18n.t('flash.notice.destroyed', :model => User.human_attribute_name(:authentication_token))
format.html { redirect_to :action => :configure}
before_filter :authenticate_user, :only => [:new, :create, :update, :destroy]
before_filter :authenticate_artist, :only => [:new, :create, :update, :destroy]
else
- before_filter :authenticate_resource_reader, :only => [:index, :show, :credit, :by_license, :artist]
- before_filter :authenticate_resource_reader, :only => [:index, :show, :credit]
++ before_filter :authenticate_resource_reader, :only => [:index, :show, :credit, :by_license, :by_artist]
before_filter :authenticate_user, :only => [:new, :create, :update, :destroy]
before_filter :authenticate_artist, :only => [:new, :create, :update, :destroy]
end
def index
public_list
end
-
+
+ def by_license
+ filter_list
+ end
+
- def artist
- has_one_list
++ def by_artist
++ filter_list
+ end
+
def show
@item = ResourcePicture.show(params[:id], @operators)
</div>
<div class="field">
<%= f.label :visible %><br />
-- <%= f.collection_select :visible, t_select_items(MagicNumber['comic_visible_items']), :last, :first, :html => {:selected => @comic.visible} %>
++ <%= f.collection_select :visible, t_select_items(manifest.select_items['magic_number']['comic_visible_items']), :last, :first, :html => {:selected => @comic.visible} %>
</div>
<div class="row_break">
</div>
</div>
<div class="field">
<%= f.label :visible %><br />
-- <%= f.collection_select :visible, t_select_items(MagicNumber['story_visible_items']), :last, :first, :html => {:selected => @story.visible} %>
++ <%= f.collection_select :visible, t_select_items(manifest.select_items['magic_number']['story_visible_items']), :last, :first, :html => {:selected => @story.visible} %>
</div>
<div class="row_break">
</div>
resource_pictures:
index:
title: 素材一覧
- artist:
- title: 素材の絵師一覧
++ by_artist:
++ title: 絵師の素材一覧
+ by_license:
+ title: ライセンスの素材一覧
show:
title: 素材詳細
new:
member do
get :by_license
get :by_license_group
-- get :artist
++ get :by_artist
delete :destroy
get :credit
end
# Sample of regular route:
# match 'products/:id' => 'catalog#view'
# Keep in mind you can assign values other than :controller and :action
-- match 'resource_pictures/:subdir/:id(.:format)/' => 'resource_pictures#show'
++ match 'resource_pictures/full/:id(.:format)/' => 'resource_pictures#show'
match 'pictures/:subdir/:id(.:format)/' => 'pictures#show'
#match 'scroll_panels/scroll/:id(.:format)' => 'scroll_panels#scroll'
match 'top/(:action)', :controller => 'top'
end
+ class PlayList
+ attr :params_offset, :params_count, :offset, :count, :limit
+ def initialize params_offset, params_count, 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
+ @params_offset = params_offset
+ @params_count = params_count
+ @list_list_conf = @manifest.list(@item_name).lists[list_name] || {}
+ @model_name = @list_list_conf['model']
+ @filter_key = @list_list_conf['filter_key']
+ @model = @model_name.classify.constantize
+ @table_name = @model.table_name
+ if @model.content?
+ @owner_model = @model.owner_model
+ @owner_table_name = @owner_model.table_name if @owner_model
+ end
+ end
+
+ def 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 limit prm
+ prm ||= @default_page_size
+ count = prm.to_i
+ count = @max_page_size if count > @max_page_size
+ count = @default_page_size if count < 1
+ count
+ end
+
+ def count filter_item
+ @count ||= @model.count(:conditions => self.where(filter_item), :include => self.includes).to_i
+ 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
+ {@owner_model.item_name => {}}
+ end
+
+ def order
+ @table_name + '.t'
+ end
+
+ def items filter_item
+ c = @count || self.count(filter_item)
+ o = self.offset c, @offset
+ l = self.limit @count
+ @model.where(self.where(filter_item)).includes(self.includes).order(self.order).offset(o).limit(l)
+ end
+
+ def prev_offset filter_item
+ c = @count || self.count(filter_item)
+ o = self.offset c, @offset
+ l = self.limit @count
+ if o > 0
+ if o - l < 0
+ 0
+ else
+ o - l
+ end
+ else
+ nil
+ end
+ end
+
+ def next_offset filter_item
+ c = @count || self.count(filter_item)
+ o = self.offset c, @offset
+ l = self.limit @count
+ if o + l > c
+ nil
+ else
+ o + l
+ end
+ end
++
++ def self.add_action item_name, action_name, list_name, list_conf
++ return
++ end
+ end
+
@@types = {
'public' => PublicList, 'private' => PrivateList, 'system_resource' => SystemResourceList,
- 'has_many' => HasManyList, 'filter' => FilterList,
+ 'has_many' => HasManyList, 'has_many_through' => HasManyThroughList, 'filter' => FilterList,
- 'through_filter' => ThroughFilterList, 'element_filter' => ElementFilterList
+ 'through_filter' => ThroughFilterList, 'element_filter' => ElementFilterList,
+ 'play' => PlayList
}
def initialize list_manifest
@list_manifest = list_manifest
}\r
},\r
"speech_balloon_template": {\r
-- "lists": {\r
-- "speech_balloons.by_speech_balloon_template": {\r
-- "model_name": "speech_balloon",\r
-- "list_name": "by_speech_balloon_template"\r
-- },\r
-- "panels.by_speech_balloon_template": {\r
-- "model_name": "panel",\r
-- "list_name": "by_speech_balloon_template"\r
-- }\r
-- },\r
++ "lists": {},\r
"columns": [\r
"id",\r
"name",\r
"belongs_to": [\r
"system_picture"\r
],\r
-- "has_many": [\r
-- "speech_balloons.by_speech_balloon_template",\r
-- "panels.by_speech_balloon_template"\r
-- ],\r
++ "has_many": [],\r
"has_one": []\r
}\r
},\r
"name": "/assets/item.png"\r
},\r
"caption": {\r
-- "type": "method",\r
-- "name": "plain_scenario",\r
++ "type": "column",\r
++ "name": "caption",\r
"link": {\r
"type": "none"\r
}\r