OSDN Git Service

t#31144:add writing_format
authoryasushiito <yas@pen-chan.jp>
Wed, 7 Aug 2013 02:01:13 +0000 (11:01 +0900)
committeryasushiito <yas@pen-chan.jp>
Wed, 7 Aug 2013 02:01:13 +0000 (11:01 +0900)
app/assets/javascripts/panels.js.coffee
app/assets/javascripts/textchange.js [new file with mode: 0644]
app/helpers/application_helper.rb
app/views/layouts/test.html.erb
app/views/panels/_form.html.erb
spec/factories.rb

index b52fde9..0d44960 100644 (file)
@@ -289,6 +289,20 @@ $ ->
             speech_trace = '#panel' + $(@).attr('panel_id') + 'speech_balloon' + $(@).attr('element_id') + 'speech' + $(@).attr('element_part_id')\r
             v = escapeHTML($(@).val())\r
             $(speech_trace).html(v)\r
+  $('textarea').map  ->\r
+    if $(@).attr('element_type') and $(@).attr('element_type') == 'speech_balloon'\r
+      switch $(@).attr('column')\r
+        when 'content'\r
+          $(@).bind('textchange', (event, previousText) ->\r
+            trace = element_tag_id($(@))\r
+            wf_sel = $(trace + 'writing_format_id')\r
+            wf_id = parseInt(wf_sel.val())\r
+            speech_trace = '#panel' + $(@).attr('panel_id') + 'speech_balloon' + $(@).attr('element_id') + 'speech' + $(@).attr('element_part_id')\r
+            confirm( writing_formats[wf_id].toString() + '_render')\r
+            v = escapeHTML($(@).val())\r
+            $(speech_trace).html(v)\r
+          )\r
+\r
   \r
   # ground-picture\r
   # sync view \r
diff --git a/app/assets/javascripts/textchange.js b/app/assets/javascripts/textchange.js
new file mode 100644 (file)
index 0000000..53698ec
--- /dev/null
@@ -0,0 +1,10 @@
+/*!\r
+ * jQuery TextChange Plugin\r
+ * http://www.zurb.com/playground/jquery-text-change-custom-event\r
+ *\r
+ * Copyright 2010, ZURB\r
+ * Released under the MIT License\r
+ */\r
+ (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)},\r
+ 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",\r
+ 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
index 190debd..e3ca640 100644 (file)
@@ -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
index ddffbd7..0f5cfcd 100644 (file)
@@ -11,6 +11,7 @@
   </title>\r
   <%= stylesheet_link_tag "application" %>\r
   <%= javascript_include_tag "application" %>\r
+  <%= raw panel_editor_javascript_include_tags %>\r
   <%= csrf_meta_tags %>\r
 </head>\r
 <body>\r
index 5b552f3..e60f337 100644 (file)
 <script>
 <!--
 var pettanr_current_panel_id = <%= @panel.tag_panel_id -%>;
+var writing_formats = {};
+<% WritingFormat.list().each do |wf| %>
+  writing_formats[<%= wf.id -%>] = '<%= wf.engine_name -%>';
+<% end %>
 // -->
 </script>
index 8500814..99843c1 100644 (file)
@@ -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