From: yasushiito Date: Wed, 7 Aug 2013 02:01:13 +0000 (+0900) Subject: t#31144:add writing_format X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=d856140c7a360a36d606e7b361ca044a88629985;hp=9422adf65e507c3c96ee4892ad61ab8abe8336d8;p=pettanr%2Fpettanr.git t#31144:add writing_format --- diff --git a/app/assets/javascripts/panels.js.coffee b/app/assets/javascripts/panels.js.coffee index b52fde94..0d449606 100644 --- a/app/assets/javascripts/panels.js.coffee +++ b/app/assets/javascripts/panels.js.coffee @@ -289,6 +289,20 @@ $ -> speech_trace = '#panel' + $(@).attr('panel_id') + 'speech_balloon' + $(@).attr('element_id') + 'speech' + $(@).attr('element_part_id') v = escapeHTML($(@).val()) $(speech_trace).html(v) + $('textarea').map -> + if $(@).attr('element_type') and $(@).attr('element_type') == 'speech_balloon' + switch $(@).attr('column') + when 'content' + $(@).bind('textchange', (event, previousText) -> + trace = element_tag_id($(@)) + wf_sel = $(trace + 'writing_format_id') + wf_id = parseInt(wf_sel.val()) + speech_trace = '#panel' + $(@).attr('panel_id') + 'speech_balloon' + $(@).attr('element_id') + 'speech' + $(@).attr('element_part_id') + confirm( writing_formats[wf_id].toString() + '_render') + v = escapeHTML($(@).val()) + $(speech_trace).html(v) + ) + # ground-picture # sync view diff --git a/app/assets/javascripts/textchange.js b/app/assets/javascripts/textchange.js new file mode 100644 index 00000000..53698ecb --- /dev/null +++ b/app/assets/javascripts/textchange.js @@ -0,0 +1,10 @@ +/*! + * jQuery TextChange Plugin + * http://www.zurb.com/playground/jquery-text-change-custom-event + * + * Copyright 2010, ZURB + * Released under the MIT License + */ + (function(a){a.event.special.textchange={setup:function(){a(this).data("lastValue",this.contentEditable==="true"?a(this).html():a(this).val());a(this).bind("keyup.textchange",a.event.special.textchange.handler);a(this).bind("cut.textchange paste.textchange input.textchange",a.event.special.textchange.delayedHandler)},teardown:function(){a(this).unbind(".textchange")},handler:function(){a.event.special.textchange.triggerIfChanged(a(this))},delayedHandler:function(){var c=a(this);setTimeout(function(){a.event.special.textchange.triggerIfChanged(c)}, + 25)},triggerIfChanged:function(a){var b=a[0].contentEditable==="true"?a.html():a.val();b!==a.data("lastValue")&&(a.trigger("textchange",[a.data("lastValue")]),a.data("lastValue",b))}};a.event.special.hastext={setup:function(){a(this).bind("textchange",a.event.special.hastext.handler)},teardown:function(){a(this).unbind("textchange",a.event.special.hastext.handler)},handler:function(c,b){b===""&&b!==a(this).val()&&a(this).trigger("hastext")}};a.event.special.notext={setup:function(){a(this).bind("textchange", + a.event.special.notext.handler)},teardown:function(){a(this).unbind("textchange",a.event.special.notext.handler)},handler:function(c,b){a(this).val()===""&&a(this).val()!==b&&a(this).trigger("notext")}}})(jQuery); \ No newline at end of file diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 190debdf..e3ca6403 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -50,4 +50,10 @@ module ApplicationHelper icon_tag :Panel, opt end + def panel_editor_javascript_include_tags + WritingFormat.list().map {|wf| + javascript_include_tag wf.engine_name + "/application" + }.join("\n") + end + end diff --git a/app/views/layouts/test.html.erb b/app/views/layouts/test.html.erb index ddffbd77..0f5cfcde 100644 --- a/app/views/layouts/test.html.erb +++ b/app/views/layouts/test.html.erb @@ -11,6 +11,7 @@ <%= stylesheet_link_tag "application" %> <%= javascript_include_tag "application" %> + <%= raw panel_editor_javascript_include_tags %> <%= csrf_meta_tags %> diff --git a/app/views/panels/_form.html.erb b/app/views/panels/_form.html.erb index 5b552f34..e60f337b 100644 --- a/app/views/panels/_form.html.erb +++ b/app/views/panels/_form.html.erb @@ -150,5 +150,9 @@ diff --git a/spec/factories.rb b/spec/factories.rb index 85008140..99843c10 100644 --- a/spec/factories.rb +++ b/spec/factories.rb @@ -150,6 +150,7 @@ FactoryGirl.define do factory :speech, :class => Speech do |speech| speech.speech_balloon_id 1 + speech.writing_format_id 1 speech.content 'test' speech.x 10 speech.y 100