From 51c4338d3acb57f0a4a626c5cb4231c679e57017 Mon Sep 17 00:00:00 2001 From: yasushiito Date: Mon, 16 Jun 2014 11:08:34 +0900 Subject: [PATCH] fix boost template --- app/assets/javascripts/admin.js | 3 + app/assets/javascripts/ap.js | 23 +++++++ app/assets/javascripts/application.js | 20 +----- app/assets/javascripts/main.js.coffee | 18 ++++++ .../javascripts/manifest/work/items.js.coffee.erb | 20 ++++++ .../javascripts/manifest/work/models.js.coffee.erb | 4 ++ app/assets/javascripts/panels.js.coffee | 22 ------- .../original_picture_license_groups_controller.rb | 2 +- app/controllers/top_controller.rb | 7 +- app/helpers/application_helper.rb | 6 +- app/models/speech.rb | 7 +- app/models/writing_format.rb | 8 ++- app/views/layouts/ap.html.erb | 74 ++++++++++++++++++++++ app/views/layouts/application.html.erb | 2 + app/views/speech_balloons/_element.html.erb | 3 +- .../templates/r/panel_editor/panel_editor.html.erb | 2 +- app/views/top/ap.html.erb | 6 ++ app/views/top/metro.html.erb | 3 - lib/locmare/booster.rb | 32 ++++++++-- lib/locmare/form.rb | 8 ++- lib/locmare/profiler/column/extend.rb | 10 +-- lib/manifest/item/base.rb | 6 -- lib/manifest/item/boost.rb | 25 +++----- lib/manifest/manifest.rb | 4 -- lib/peta/item.rb | 10 ++- lib/peta/template.rb | 17 ++--- public/manifest.json | 6 +- 27 files changed, 236 insertions(+), 112 deletions(-) create mode 100644 app/assets/javascripts/ap.js create mode 100644 app/assets/javascripts/main.js.coffee create mode 100644 app/views/layouts/ap.html.erb create mode 100644 app/views/top/ap.html.erb delete mode 100644 app/views/top/metro.html.erb diff --git a/app/assets/javascripts/admin.js b/app/assets/javascripts/admin.js index a5c5d0cc..f9a696c3 100644 --- a/app/assets/javascripts/admin.js +++ b/app/assets/javascripts/admin.js @@ -4,4 +4,7 @@ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the // the compiled file. // +//= require jquery +//= require jquery_ujs //= require_directory ./manifest/work +//= require system diff --git a/app/assets/javascripts/ap.js b/app/assets/javascripts/ap.js new file mode 100644 index 00000000..6c5ef456 --- /dev/null +++ b/app/assets/javascripts/ap.js @@ -0,0 +1,23 @@ +// This is a manifest file that'll be compiled into including all the files listed below. +// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically +// be included in the compiled file accessible from http://example.com/assets/application.js +// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the +// the compiled file. +// +//= require jquery +//= require jquery_ujs +//= require jquery.ui.all +//= require jquery.validate +//= require additional-methods +//= require jquery.validate.localization/messages_ja +//= require textchange +//= require underscore +//= require backbone +//= require_directory ./manifest +//= require_directory ./views +//= require pettanr_editor +//= require writing_formats +//= require_directory ./helpers +//= require speech_balloon_templates +//= require panels +//= require main diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 78a6eade..bce28be7 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -4,22 +4,4 @@ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the // the compiled file. // -//= require jquery -//= require jquery_ujs -//= require jquery.ui.all -//= require jquery.validate -//= require additional-methods -//= require jquery.validate.localization/messages_ja -//= require textchange -//= require underscore -//= require backbone -//= require_directory ./manifest -//= require_directory ./views -//= require pettanr_editor -//= require pettanr_sheeter -//= require writing_formats -//= require_directory ./helpers -//= require speech_balloon_templates -//= require panels -//= require sheets -// require_tree . +// // require_tree . diff --git a/app/assets/javascripts/main.js.coffee b/app/assets/javascripts/main.js.coffee new file mode 100644 index 00000000..51b13b92 --- /dev/null +++ b/app/assets/javascripts/main.js.coffee @@ -0,0 +1,18 @@ +$ -> + _.templateSettings = { + interpolate: /\<\&\=(.+?)\&\>/g, + evaluate: /\<\&(.+?)\&\>/g + } + $.getJSON('/manifest.json', null, (data) => + window.manifest = data ) + $.getJSON('/local_manifest.json', null, (data) => + window.local_manifest = data ) + class Pettanr extends Backbone.View + el: '#pettanr' + initialize: -> + render: () -> + $(@el).append(@template()) + template: () -> + 'asd' + pettanr = new Pettanr() + pettanr.render() diff --git a/app/assets/javascripts/manifest/work/items.js.coffee.erb b/app/assets/javascripts/manifest/work/items.js.coffee.erb index a54b8a6f..52ca45f6 100644 --- a/app/assets/javascripts/manifest/work/items.js.coffee.erb +++ b/app/assets/javascripts/manifest/work/items.js.coffee.erb @@ -90,6 +90,10 @@ parent_model_name: 'speech_balloon', boost: { writing_format: { + level: 'read', + #extend_model_class_name: '', modelless + item_name_for_extend_model: 'renderer', + extend_module_name: 'RendererModule', }, speech_balloon_template: { extend_model_class_name: 'Speech', @@ -163,6 +167,22 @@ }, }, }, + original_picture_license_group: { + args: { + boost: { + # expand license_group_settings + license_group: { + extend_model_class_name: 'Attribute', + item_name_for_extend_model: 'attribute', + }, + credit_picture: { + template_name: 'license_group', + extend_model_class_name: 'CreditPicture', + item_name_for_extend_model: 'credit_picture', + }, + }, + }, + }, speech_balloon_template: { type: 'template', }, diff --git a/app/assets/javascripts/manifest/work/models.js.coffee.erb b/app/assets/javascripts/manifest/work/models.js.coffee.erb index 44b751a0..2dede084 100644 --- a/app/assets/javascripts/manifest/work/models.js.coffee.erb +++ b/app/assets/javascripts/manifest/work/models.js.coffee.erb @@ -1338,6 +1338,10 @@ }, }, }, + original_picture_license_group: { + attributes: { + }, + }, speech_balloon_template: { associations: { belongs_to: { diff --git a/app/assets/javascripts/panels.js.coffee b/app/assets/javascripts/panels.js.coffee index 698bff68..b837ae91 100644 --- a/app/assets/javascripts/panels.js.coffee +++ b/app/assets/javascripts/panels.js.coffee @@ -1,31 +1,9 @@ $ -> - _.templateSettings = { - interpolate: /\<\&\=(.+?)\&\>/g, - evaluate: /\<\&(.+?)\&\>/g - } #filer = new Filer('tt', ['ea','eb','ec']) #view = new FilerView( { filer: filer } ) confirm_confirm_confirm = () -> confirm( ) editor = window.PettanrEditor - manifest = { - items: window.items, - controllers: window.controllers, - models: window.models, - system_resources: window.system_resources, - magic_numbers: window.magic_numbers, - } - local_manifest = { - list_groups: window.list_groups, - profilers: window.profilers, - filers: window.filers, - forms: window.forms, - buckets: window.buckets, - } - j = JSON.stringify(manifest, undefined, 2) - $('#pettanr-manifest').val(j) - j = JSON.stringify(local_manifest, undefined, 2) - $('#pettanr-local_manifest').val(j) WritingFormat = window.PettanrWritingFormat WritingFormat.load($('#writing_formats')) SpeechBalloonTemplate = window.PettanrSpeechBalloonTemplate diff --git a/app/controllers/original_picture_license_groups_controller.rb b/app/controllers/original_picture_license_groups_controller.rb index eebd1994..44ccd1b7 100644 --- a/app/controllers/original_picture_license_groups_controller.rb +++ b/app/controllers/original_picture_license_groups_controller.rb @@ -17,7 +17,7 @@ class OriginalPictureLicenseGroupsController < ApplicationController @original_picture = OriginalPicture.show params[:original_picture_id], @operators @original_picture_license_group = OriginalPictureLicenseGroup.new params[:original_picture_license_group] @license_group = LicenseGroup.show @original_picture_license_group.license_group_id, @operators - @ctl = @license_group.my_engine_name + @ctl = @license_group.template_path_name @attr = @license_group.my_engine.new_attribute {} @attr.supply_default @operators diff --git a/app/controllers/top_controller.rb b/app/controllers/top_controller.rb index eca273ea..554d839a 100644 --- a/app/controllers/top_controller.rb +++ b/app/controllers/top_controller.rb @@ -3,7 +3,7 @@ class TopController < ApplicationController before_filter :authenticate_user, :only => [] before_filter :authenticate_author, :only => [] else - before_filter :authenticate_reader, :only => [:index, :metro] + before_filter :authenticate_reader, :only => [:index, :ap] before_filter :authenticate_user, :only => [] before_filter :authenticate_author, :only => [] end @@ -14,10 +14,9 @@ class TopController < ApplicationController end end - def metro + def ap respond_to do |format| - format.html - #format.html { render layout: 'metro' } + format.html { render layout: 'ap' } end end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index d83d2566..08b0b5d9 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -81,13 +81,13 @@ module ApplicationHelper def panel_editor_javascript_include_tags WritingFormat.enable_list().map {|wf| # javascript_include_tag wf.engine_name - javascript_include_tag wf.my_engine_name + "/application" + javascript_include_tag wf.template_path_name + "/application" }.join("\n") + SpeechBalloonTemplate.enable_list().map {|sbt| - stylesheet_link_tag sbt.my_engine_name + "/application" + stylesheet_link_tag sbt.template_path_name + "/application" }.join("\n") + SpeechBalloonTemplate.enable_list().map {|sbt| - javascript_include_tag sbt.my_engine_name + "/application" + javascript_include_tag sbt.template_path_name + "/application" }.join("\n") end diff --git a/app/models/speech.rb b/app/models/speech.rb index 4c80fd5e..12cd5b0b 100644 --- a/app/models/speech.rb +++ b/app/models/speech.rb @@ -74,12 +74,9 @@ class Speech < Peta::Element {'speech_attributes' => speech_attributes} end - def writing_format_engine_model - self.writing_format.engine_model - end - def scenario - self.writing_format_engine_model.render self.content + self.boosts 'read' + self.render end def plain_scenario diff --git a/app/models/writing_format.rb b/app/models/writing_format.rb index 2d3cd159..a0bbb0b1 100644 --- a/app/models/writing_format.rb +++ b/app/models/writing_format.rb @@ -57,9 +57,11 @@ end @parsed_settings ||= JSON.parse(self.settings) end - def engine_model - my_engine.const_get 'Renderer' - end + # get template model ex) PettanrSimpleFormat::Renderer + # render method written in template model + #def extend_model + # self.template_module.const_get 'Renderer' + #end def self.import filename WritingFormat.import_file(filename) {|name, attr| WritingFormat.store(name, attr)} diff --git a/app/views/layouts/ap.html.erb b/app/views/layouts/ap.html.erb new file mode 100644 index 00000000..0b222c99 --- /dev/null +++ b/app/views/layouts/ap.html.erb @@ -0,0 +1,74 @@ + + + + + ap - <%= h(manifest.magic_numbers['profile']['users']['caption']) %> + + <%= stylesheet_link_tag "application" %> + <%= javascript_include_tag "application" %> + <%= javascript_include_tag "ap" %> + <%= raw panel_editor_javascript_include_tags %> + <%= csrf_meta_tags %> + + + +
+ + + + + + + +
+

<%= link_to manifest.magic_numbers['profile']['users']['caption'], main_app.root_path %>

+
+ <% if user_signed_in? %> + <%# link_to t('top.metro.title'), '/top/metro' %> + <% end %> + +
+ <% if @operators.author %> + <%= link_to h(truncate(@operators.author.name, :length => 12)), main_app.author_path(@operators.author) %> + <% end %> +
+
+ <% if @operators.artist %> + <%= link_to h(truncate(@operators.artist.name, :length => 12)), main_app.artist_path(@operators.artist) %> + <% end %> +
+
+ <% if user_signed_in? %> + <%= link_to t('home.configure.title'), '/home/configure' %> + <%= link_to t('home.sign_out.title'), main_app.destroy_user_session_path, :method => :delete %> + <% else %> + <%= link_to "sign in", main_app.new_user_session_path %> + <% end %> +
+
+<%= yield %> +
+ <%= link_to t('tab.demander.title'), main_app.demanders_path %> + <% if demand_user_signed_in? %> + <%= link_to t_m('Demander'), main_app.demanders_path %> + <%= link_to t('home.sign_out.title'), main_app.destroy_demand_user_session_path, :method => :delete %> + <% else %> + <%= link_to t('home.sign_in.title'), main_app.new_demand_user_session_path %> + <% end %> +
+
+ <%= link_to t('tab.system.title'), '/system' %> + <% if admin_signed_in? %> + <%= link_to t('tab.system.browse'), '/system/browse' %> + <%= link_to t('tab.system.approve'), '/system/waiting_list' %> + <%= link_to t('tab.system.port'), '/system/import' %> + <%= link_to t('tab.system.token'), '/system/auth_token' %> + <%= link_to t('home.sign_out.title'), main_app.destroy_admin_session_path, :method => :delete %> + <% else %> + <%= link_to t('home.sign_in.title'), main_app.new_admin_session_path %> + <% end %> +
+<%= javascript_tag 'var server_result=' + @server_result.to_json + ';' %> + + + diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 765f3810..6afe8c21 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -46,6 +46,8 @@ <% else %> <%= link_to "sign in", main_app.new_user_session_path %> <% end %> +
+ <%= link_to 'try ap', '/top/ap' %> diff --git a/app/views/speech_balloons/_element.html.erb b/app/views/speech_balloons/_element.html.erb index 41d60911..127cd472 100644 --- a/app/views/speech_balloons/_element.html.erb +++ b/app/views/speech_balloons/_element.html.erb @@ -2,7 +2,8 @@ <%= tag :img, element.balloon.tag_attributes(nil, {'class' => "pettanr-balloon", 'src' => element.balloon.system_picture.url, 'alt' => element.caption}) %> <%= content_tag :div, {'class' => "pettanr-comic-speech", 'style' => raw(element.speech.outer_style.to_style)} do %> <%= content_tag :div, element.speech.tag_attributes(nil, {'class' => "pettanr-comic-speech-inner", 'style' => raw(element.speech.inner_style.to_style)}) do %> - <%= raw element.speech.writing_format.engine_model.render(element.speech.content) -%> + <%# element.speech.boosts 'post' %> + <%= raw element.speech.scenario -%> <% end %> <% end %> <% end %> diff --git a/app/views/templates/r/panel_editor/panel_editor.html.erb b/app/views/templates/r/panel_editor/panel_editor.html.erb index e2bf1b45..6ed85289 100644 --- a/app/views/templates/r/panel_editor/panel_editor.html.erb +++ b/app/views/templates/r/panel_editor/panel_editor.html.erb @@ -4,7 +4,7 @@ <%= render editor.generator.template_name, :generator => editor.generator %>
<% WritingFormat.enable_list().each do |wf| %> -
+
<% end %>
diff --git a/app/views/top/ap.html.erb b/app/views/top/ap.html.erb new file mode 100644 index 00000000..440e23b0 --- /dev/null +++ b/app/views/top/ap.html.erb @@ -0,0 +1,6 @@ +
+
+ + diff --git a/app/views/top/metro.html.erb b/app/views/top/metro.html.erb deleted file mode 100644 index e6076d37..00000000 --- a/app/views/top/metro.html.erb +++ /dev/null @@ -1,3 +0,0 @@ -

<%= t '.title' -%>

- - <%= link_to t('top.return'), root_path %> diff --git a/lib/locmare/booster.rb b/lib/locmare/booster.rb index 1edcdda9..6dda2abc 100644 --- a/lib/locmare/booster.rb +++ b/lib/locmare/booster.rb @@ -9,7 +9,7 @@ module Locmare # return false unless self.resource.enable? if self.extendable? @item.extend self.extend_module - @item.__send__ @manifest.setter_method_name, self.parsed_settings + @item.__send__ @manifest.setter_method_name, self.parsed_settings if self.has_extend_model? end end @@ -32,7 +32,7 @@ module Locmare end # get template module name - # ex) attributes[hoge__module_name] -> 'Hoge' + # ex) attributes[hoge_module_name] -> 'Hoge' def template_module_name @item.attributes[@manifest.column_name_for_template_module] end @@ -57,24 +57,36 @@ module Locmare self.template_module.const_get @manifest.extend_module_name end + def has_extend_model? + !@manifest.extend_model_class_name.blank? + end + # extend settings data model in engine # ex) CircleSpeechBalloon::SpeechBalloon def extend_model - self.template_module.const_get @manifest.extend_model_class_name + if self.has_extend_model? + self.template_module.const_get @manifest.extend_model_class_name + else + nil + end end def check_template @item.attributes[@manifest.foreign_key].blank? == false end - # get system resource instance - def resource + # get template model + def template_model Manifest.manifest.models[@manifest.template_name].classify end # get extend instance def extend_item - @item.__send__ @manifest.getter_method_name + if self.extend_model + @item.__send__ @manifest.getter_method_name + else + nil + end end def parsed_settings @@ -89,6 +101,14 @@ module Locmare @item.__send__ @manifest.setter_method_name, new_settings end + def supply_default + self.extend_item.supply_default @item + end + + def overwrite + self.extend_item.overwrite @item + end + end end diff --git a/lib/locmare/form.rb b/lib/locmare/form.rb index f7b473ac..9c133271 100644 --- a/lib/locmare/form.rb +++ b/lib/locmare/form.rb @@ -73,7 +73,13 @@ module Locmare def init_fields @manifest.each_field do |field_name, field_manifest| - if boost_name = @item.class.find_boost_name(field_name) + boost_name = @item.class.find_boost_name(field_name) + extend_model = if boost_name + @item.boosters[boost_name].extend_model + else + nil + end + if boost_name and extend_model # field is extend setting AND template has a extend model extend_form_name = @item.boosters[boost_name].model_name extend_item = @item.boosters[boost_name].extend_item @fields[field_name] = ExtendForm.new self, extend_form_name, extend_item, @mounted, @operators, field_name diff --git a/lib/locmare/profiler/column/extend.rb b/lib/locmare/profiler/column/extend.rb index 431fa122..c86927fb 100644 --- a/lib/locmare/profiler/column/extend.rb +++ b/lib/locmare/profiler/column/extend.rb @@ -24,15 +24,15 @@ module Locmare end def extend_settings - self.resource_profiler.extend_settings[self.booster.model_name] + self.template_model_profiler.extend_settings[self.booster.model_name] end - def resource_profiler - LocalManifest.manifest.profilers[self.resource.item_name] + def template_model_profiler + LocalManifest.manifest.profilers[self.template_model.item_name] end - def resource - self.booster.resource + def template_model + self.booster.template_model end def extend_item diff --git a/lib/manifest/item/base.rb b/lib/manifest/item/base.rb index 27e10b3d..d92cfd6a 100644 --- a/lib/manifest/item/base.rb +++ b/lib/manifest/item/base.rb @@ -18,12 +18,6 @@ module Manifest @boost = ManifestBase.load_name_values self, @args, 'boost', Boost end - def init_after_load_manifest - @boost.each do |boost_name, boost_manifest| - boost_manifest.init_after_load_manifest - end - end - def element? @parent_model_name != nil end diff --git a/lib/manifest/item/boost.rb b/lib/manifest/item/boost.rb index d677a1a4..b75adc52 100644 --- a/lib/manifest/item/boost.rb +++ b/lib/manifest/item/boost.rb @@ -23,11 +23,7 @@ module Manifest @column_name_for_template_module = @values['column_name_for_template_module'] @settings_column_name = @values['settings_column_name'] @foreign_key = @values['foreign_key'] - end - - def init_after_load_manifest - # string name can't change before load manifest - @values['extend_model_class_name'] ||= @parent.model.singular + @values['item_name_for_extend_model'] ||= @template_name @values['setter_method_name'] ||= @values['item_name_for_extend_model'] + '_extend=' @values['getter_method_name'] ||= @values['item_name_for_extend_model'] + '_extend' @@ -35,17 +31,14 @@ module Manifest @item_name_for_extend_model = @values['item_name_for_extend_model'] @setter_method_name = @values['setter_method_name'] @getter_method_name = @values['getter_method_name'] - @extend_module_name = @extend_model_class_name + 'Module' - end - - # speech.rb writing_format.rb - def supply_default item - self.engine_model(item).engine_extend_module.supply_default item, self - end - - # speech.rb writing_format.rb - def overwrite item - self.engine_model(item).engine_extend_module.overwrite item, self + @extend_module_name = @values['extend_module_name'] + unless @extend_module_name + if @extend_model_class_name + @extend_module_name = @extend_model_class_name + 'Module' + else + ManifestBase.alert_undefined_message 'extend_module_name', self.module_message + end + end end end diff --git a/lib/manifest/manifest.rb b/lib/manifest/manifest.rb index 035a6e22..1108921b 100644 --- a/lib/manifest/manifest.rb +++ b/lib/manifest/manifest.rb @@ -23,10 +23,6 @@ module Manifest def init_after_load_manifest @system_resources.init - # - @items.each do |name, peta_manifest| - peta_manifest.init_after_load_manifest - end end def load_models_manifest diff --git a/lib/peta/item.rb b/lib/peta/item.rb index 9243922e..829c15bd 100644 --- a/lib/peta/item.rb +++ b/lib/peta/item.rb @@ -183,7 +183,7 @@ module Peta end def boosters - @boosters + @boosters ||= {} end def extend_column? column_name @@ -191,11 +191,15 @@ module Peta end def supply_default - self.class.my_peta.supply_defaults self + self.boosters.each do |boost_name, booster| + booster.supply_default + end end def overwrite - self.class.my_peta.overwrites self + self.boosters.each do |boost_name, booster| + booster.overwrite + end end def user_visible? operators diff --git a/lib/peta/template.rb b/lib/peta/template.rb index c804a53b..097b306c 100644 --- a/lib/peta/template.rb +++ b/lib/peta/template.rb @@ -12,21 +12,22 @@ module Peta } end - def my_template - Manifest.manifest.system_resources.templates[self.table_name] + def self.template_manifest + Manifest.manifest.system_resources.templates[self.item_name] end def enable? - return false unless tpl = self.my_template - tpl.template_items.include? self.classname + return false unless tpl = self.class.template_manifest + tpl.template_items.include? self.module_name end - def my_engine_name - self.my_template.template_items[self.classname] + def template_module + Object.const_get self.module_name end - def my_engine - Object.const_get self.classname + def template_path_name + self.class.template_manifest.template_items[self.module_name] end + end end diff --git a/public/manifest.json b/public/manifest.json index 153be947..d3943fd1 100644 --- a/public/manifest.json +++ b/public/manifest.json @@ -83,7 +83,11 @@ "args": { "parent_model_name": "speech_balloon", "boost": { - "writing_format": {}, + "writing_format": { + "level": "read", + "item_name_for_extend_model": "renderer", + "extend_module_name": "RendererModule" + }, "speech_balloon_template": { "extend_model_class_name": "Speech", "item_name_for_extend_model": "speech" -- 2.11.0