OSDN Git Service

fix has one manifest
authoryasushiito <yas@pen-chan.jp>
Tue, 4 Mar 2014 01:58:29 +0000 (10:58 +0900)
committeryasushiito <yas@pen-chan.jp>
Tue, 4 Mar 2014 01:58:29 +0000 (10:58 +0900)
16 files changed:
app/assets/javascripts/manifest/work/controllers.js.coffee.erb
app/assets/javascripts/manifest/work/list_groups.js.coffee.erb
app/assets/javascripts/manifest/work/magic_numbers.js.coffee.erb [new file with mode: 0644]
app/assets/javascripts/manifest/work/models.js.coffee.erb
app/assets/javascripts/manifest/work/profilers.js.coffee.erb
app/assets/javascripts/manifest/work/system_resources.js.coffee.erb
app/controllers/resource_pictures_controller.rb
app/models/speech_balloon.rb
app/models/speech_balloon_template.rb
lib/manifest/local/view/profiler/association/has_many.rb
lib/manifest/local/view/profiler/association/has_one.rb
lib/manifest/manifest.rb
lib/manifest/profiler/association/has_many.rb
lib/manifest/profiler/association/has_one.rb
lib/peta/item.rb
public/manifest.json

index d2854d0..9316b66 100644 (file)
           \r
         },\r
       },\r
+      by_original_picture: {\r
+        type: 'list',\r
+      },\r
       by_license: {\r
         type: 'list',\r
       },\r
index 485364d..a7f4e7e 100644 (file)
       },\r
       private: {\r
       },\r
+      by_original_picture: {\r
+      },\r
       by_license: {\r
       },\r
       by_artist: {\r
diff --git a/app/assets/javascripts/manifest/work/magic_numbers.js.coffee.erb b/app/assets/javascripts/manifest/work/magic_numbers.js.coffee.erb
new file mode 100644 (file)
index 0000000..917eb99
--- /dev/null
@@ -0,0 +1,26 @@
+#マニフェスト\r
+@magic_numbers = {\r
+  run_mode: 1, \r
+  thumbnail_width: 64, \r
+  thumbnail_height: 64, \r
+  profile: {\r
+    users: {\r
+      caption: "ペンギン王国",\r
+      url: "http://localhost:3001/", \r
+      description: "ペンギン王国はペンギン素材を豊富に用意したペンギンマニアのサイトです。",\r
+    },\r
+    admins: {\r
+      caption: "site name for admin",\r
+      url: "http://your.site.url/admins/", \r
+      description: "admin register",\r
+    },\r
+    demand_users: {\r
+      caption: "provider name",\r
+      url: "http://your.site.url/demanders/", \r
+      description: "provider description",\r
+    },\r
+  },\r
+  provider_sources: [\r
+    'http://sourceforge.jp/projects/pettanr/wiki/ProviderSource/attach/provider_source.json'\r
+  ], \r
+}\r
index 810d15c..e201771 100644 (file)
       private: {\r
         type: 'private',\r
       },\r
+      by_original_picture: {\r
+        type: 'filter',\r
+      },\r
       by_license: {\r
         type: 'filter',\r
       },\r
index cd7168e..19482e2 100644 (file)
         'artist',\r
       ],\r
       has_one: [\r
-        'resource_picture',\r
+        'resource_picture.by_original_picture',\r
       ],\r
     }, \r
   },\r
index a470975..d1e51c9 100644 (file)
     ],\r
   }\r
 }\r
-@magic_numbers = {\r
-  run_mode: 1, \r
-  thumbnail_width: 64, \r
-  thumbnail_height: 64, \r
-  profile: {\r
-    users: {\r
-      caption: "ペンギン王国",\r
-      url: "http://localhost:3001/", \r
-      description: "ペンギン王国はペンギン素材を豊富に用意したペンギンマニアのサイトです。",\r
-    },\r
-    admins: {\r
-      caption: "site name for admin",\r
-      url: "http://your.site.url/admins/", \r
-      description: "admin register",\r
-    },\r
-    demand_users: {\r
-      caption: "provider name",\r
-      url: "http://your.site.url/demanders/", \r
-      description: "provider description",\r
-    },\r
-  },\r
-  provider_sources: [\r
-    'http://sourceforge.jp/projects/pettanr/wiki/ProviderSource/attach/provider_source.json'\r
-  ], \r
-}\r
index 5049b5e..47772db 100644 (file)
@@ -4,7 +4,7 @@ class ResourcePicturesController < ApplicationController
     before_filter :authenticate_artist, :only => [:new, :create, :update, :destroy]
   else
     before_filter :authenticate_resource_reader, :only => [
-      :index, :show, :credit, :by_license, :by_artist, :count, :count_by_license, :count_by_artist
+      :index, :show, :credit, :by_original_picture, :by_license, :by_artist, :count, :count_by_license, :count_by_artist
     ]
     before_filter :authenticate_user, :only => [:new, :create, :update, :destroy]
     before_filter :authenticate_artist, :only => [:new, :create, :update, :destroy]
@@ -18,6 +18,10 @@ class ResourcePicturesController < ApplicationController
     filer_list
   end
   
+  def by_original_picture
+    filer_list
+  end
+  
   def by_license
     filer_list
   end
index dde1ed1..5604235 100644 (file)
@@ -95,7 +95,7 @@ class SpeechBalloon < Peta::Content
   end
   
   def boost
-    self.extend self.speech_balloon_template.engine_speech_balloon_module
+    self.extend self.speech_balloon_template.engine_extend_module
     if self.balloon
     else
       self.new_balloon = self.build_balloon 
index 65d4908..ff799cc 100644 (file)
@@ -89,6 +89,10 @@ class SpeechBalloonTemplate < Peta::Item
     engine.const_get 'SpeechBalloonModule'
   end
   
+  def engine_extend_module
+    engine.extend_module
+  end
+  
   def engine_balloon_model
     engine.const_get 'Balloon'
   end
index 6a9711a..46ea719 100644 (file)
@@ -18,7 +18,6 @@ module Manifest
           end
           
           def filer
-            l = @has_many_manifest.list
             list_result = @has_many_manifest.list.open(self.profiler.operators, {:id => self.item.id, :page => 1, :page_size => 3})
             items = list_result.items 
             ::Manifest::View::Filer.new self.has_many_model.item_name, items, nil, self.profiler.operators
index 6b732cd..3b53201 100644 (file)
@@ -3,58 +3,28 @@ module Manifest
     module ProfilerModule
       module AssociationModule
         class HasOne
-          attr :association, :column_name
-          def initialize association, belongs_to_name
+          attr :association, :has_one_manifest
+          def initialize association, has_one_manifest
             @association = association
-            @belongs_to_name = belongs_to_name
-          end
-          
-          def profiler
-            @association.profiler
+            @has_one_manifest = has_one_manifest
           end
           
           def item
             self.profiler.item
           end
           
-          def parent_model
-            self.model_belongs_to_manifest.model
-          end
-          
-          def parent_id
-            self.item.attributes[self.model_belongs_to_manifest.id_column]
+          def has_one_model
+            @has_one_manifest.model
           end
           
           def filer
-            filer = nil
-            begin
-              r = self.parent_model.show(self.parent_id, self.profiler.operators)
-             if r
-                filer = Manifest::View::Filer.new self.item.item_name, [r], nil, self.profiler.operators
-              end
-           rescue ActiveRecord::RecordNotFound, ActiveRecord::Forbidden
-            end
-            filer
-          end
-          
-          def model_manifest
-            ::Manifest.manifest.models[@profiler.item_name]
+            list_result = @has_one_manifest.list.open(self.profiler.operators, {:id => self.item.id})
+            items = list_result.items 
+            ::Manifest::View::Filer.new self.has_one_model.item_name, items, nil, self.profiler.operators
           end
           
-          def model_belongs_to_manifest
-            self.model_manifest.belongs_to[@belongs_to_name]
-          end
-          
-          def template_dir 
-            @profiler.template_dir
-          end
-          
-          def template_file_name
-            "ssociations"
-          end
-          
-          def template_name
-            self.template_dir + self.template_file_name
+          def profiler
+            @association.profiler
           end
           
         end
index 959f6cc..05800a6 100644 (file)
@@ -2,7 +2,8 @@ module Manifest
   class Manifest
     cattr_accessor :manifest
     attr :system_resources, :magic_numbers,
-      :controllers, :models, :list_groups, :profilers, :filers, :forms, :lists, :views
+      :controllers, :models, 
+      :list_groups, :profilers, :filers, :forms
     # call me before load routes.rb
     # routes.rb needs engine_resources manifest in system_resources
     # ex. it's adding license_groups routes
@@ -15,30 +16,15 @@ module Manifest
     def init
       # managers can't initialize before load  application.rb
       return unless defined? ::Pettanr
-      @controllers = Controller.manager(self, @manifest['controllers'])
-      @models = Model.manager(self, @manifest['models'])
+      @controllers = Controller.manager(self, @manifest['controllers'] || {})
+      @models = Model.manager(self, @manifest['models'] || {})
       @locals = @manifest['locals']
       @list_groups = ListGroup.manager(self, @locals['list_groups'] || {})
-      @filers = Filer.manager(self, @locals['filers'])
-      @profilers = Profiler.manager(self, @locals['profilers'])
-      @forms = Form.base_manager(self, @locals['forms'])
-      @forms.merge(Form.extend_manager(self, @locals['forms']))
+      @filers = Filer.manager(self, @locals['filers'] || {})
+      @profilers = Profiler.manager(self, @locals['profilers'] || {})
+      @forms = Form.base_manager(self, @locals['forms'] || {})
+      @forms.merge(Form.extend_manager(self, @locals['forms'] || {}))
       @system_resources.init
-      add_action
-    end
-    
-    def add_action
-        return
-      @controllers.each do |controller_name, controller|
-        model_name = controller.model_name
-        next if model_name.blank?
-        controller.actions.each do |action_name, conf|
-          next unless conf['type'] == 'list'
-          list_name = conf['list']['list_name']
-          list = Pettanr::Application::manifest.list_managers[model_name]
-          list.add_action action_name, list_name
-        end
-      end
     end
     
   end
@@ -60,6 +46,10 @@ module Manifest
       name.singularize
     end
     
+    def pluralize name
+      name.pluralize
+    end
+    
   end
 
   extend ModuleMethods
index 1bcae2e..a824ddb 100644 (file)
@@ -25,7 +25,7 @@ module Manifest
               @model_name = @table_name.singularize
               @list_name = n[1]
             else
-              raise "undefined list for profilers > #{self.profiler.item_name} > lists > #{@my_name}\n" unless @list_manifest['model_name']
+              raise "undefined list for profilers > #{self.profiler.item_name} > has_many > #{@profiler_list_name}\n"
             end
           end
           @list_group = ::Manifest.manifest.list_groups[@model_name]
index 5e65622..d801048 100644 (file)
@@ -2,10 +2,11 @@ module Manifest
   module ProfilerModule
     module AssociationModule
       class HasOne
-        attr :association, :list_name
-        def initialize association, list_name
+        attr :association, :profiler_list_name, 
+          :model_name, :list_name, :list
+        def initialize association, profiler_list_name
           @association = association
-          @list_name = list_name
+          @profiler_list_name = profiler_list_name
           self.set_default
           self.init
         end
@@ -14,6 +15,22 @@ module Manifest
         end
         
         def init
+          if list_manifest = self.profiler.lists[@profiler_list_name]
+            @model_name = list_manifest.model_name
+            @list_name = list_manifest.list_name
+          else
+            n = @profiler_list_name.split '.'
+            if n.size > 1
+              @model_name = n[0]
+              @list_name = n[1]
+            else
+              raise "undefined list for profilers > #{self.profiler.item_name} > has_one > #{@profiler_list_name}\n"
+            end
+          end
+          @list_group = ::Manifest.manifest.list_groups[@model_name]
+          raise "undefined list_group for profilers > #{self.profiler.item_name} > lists > #{@my_name} ... #{@model_name}\n" unless @list_group
+          @list = @list_group.lists[@list_name]
+          raise "undefined list for profilers > #{self.profiler.item_name} > lists > #{@my_name} ... #{@list_name}\n" unless @list
         end
         
         def model
@@ -24,6 +41,14 @@ module Manifest
           @association.association_name
         end
         
+        def profiler
+          @association.profiler
+        end
+        
+        def profiler_manifest
+          @association.profiler_manifest
+        end
+        
       end
       
     end
index 25acd42..b3db406 100644 (file)
@@ -81,6 +81,28 @@ module Peta
     
     #InstanceMethods
     
+    def self.fold_extend_settings params
+      speech_balloon_settings = params[:speech_balloon][:settings]
+      if speech_balloon_settings.is_a?(Hash)
+        params[:speech_balloon][:settings] = speech_balloon_settings.to_json
+      end
+      balloon_settings = params[:speech_balloon][:balloon_attributes][:settings]
+      if balloon_settings.is_a?(Hash)
+        params[:speech_balloon][:balloon_attributes][:settings] = balloon_settings.to_json
+      end
+      speech_settings = params[:speech_balloon][:speech_attributes][:settings]
+      if speech_settings.is_a?(Hash)
+        params[:speech_balloon][:speech_attributes][:settings] = speech_settings.to_json
+      end
+    end
+    
+    def extend_engine_module
+      self.extend self.speech_balloon_template.engine_speech_balloon_module
+      self.elements.each do |element|
+        element.extend_item
+      end
+    end
+    
     def item_name
       self.class.item_name
     end
index 87e715f..aab85a4 100644 (file)
             "list_name": "public"\r
           }\r
         },\r
+        "by_original_picture": {\r
+          "type": "list"\r
+        },\r
         "by_license": {\r
           "type": "list"\r
         },\r
         "private": {\r
           "type": "private"\r
         },\r
+        "by_original_picture": {\r
+          "type": "filter"\r
+        },\r
         "by_license": {\r
           "type": "filter"\r
         },\r
             "artist"\r
           ],\r
           "has_one": [\r
-            "resource_picture"\r
+            "resource_picture.by_original_picture"\r
           ]\r
         }\r
       },\r
         "lists": {\r
           "public": {},\r
           "private": {},\r
+          "by_original_picture": {},\r
           "by_license": {},\r
           "by_artist": {}\r
         }\r