OSDN Git Service

fix
authoryasushiito <yas@pen-chan.jp>
Mon, 30 Dec 2013 10:27:34 +0000 (19:27 +0900)
committeryasushiito <yas@pen-chan.jp>
Mon, 30 Dec 2013 10:27:34 +0000 (19:27 +0900)
15 files changed:
1  2 
app/assets/javascripts/manifest/work/controllers.js.coffee.erb
app/assets/javascripts/manifest/work/filers.js.coffee.erb
app/assets/javascripts/manifest/work/lists.js.coffee.erb
app/controllers/comics_controller.rb
app/controllers/home_controller.rb
app/controllers/resource_pictures_controller.rb
app/controllers/scrolls_controller.rb
app/controllers/sheets_controller.rb
app/controllers/stories_controller.rb
app/views/comics/_form.html.erb
app/views/stories/_form.html.erb
config/locales/pettanr.ja.yml
config/routes.rb
lib/manifest/list.rb
public/manifest.json

        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
@@@ -17,18 -17,6 +17,14 @@@ class ComicsController < ApplicationCon
      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|
@@@ -17,7 -17,7 +17,7 @@@ class HomeController < ApplicationContr
    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}) }
@@@ -29,7 -29,7 +29,7 @@@
    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}
@@@ -4,7 -4,7 +4,7 @@@ class ResourcePicturesController < Appl
      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)
  
Simple merge
Simple merge
Simple merge
@@@ -15,7 -15,7 +15,7 @@@
    </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>
@@@ -21,7 -21,7 +21,7 @@@
    </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>
@@@ -995,10 -903,6 +995,10 @@@ ja
    resource_pictures:
      index:
        title: 素材一覧
-     artist:
-       title: 素材の絵師一覧
++    by_artist:
++      title: 絵師の素材一覧
 +    by_license:
 +      title: ライセンスの素材一覧
      show:
        title: 素材詳細
      new: 
@@@ -303,7 -300,7 +303,7 @@@ Pettanr::Application.routes.draw d
      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'
@@@ -282,10 -195,103 +282,107 @@@ module Pettan
        
      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