OSDN Git Service

t#:
authoryasushiito <yas@pen-chan.jp>
Mon, 28 Oct 2013 09:52:41 +0000 (18:52 +0900)
committeryasushiito <yas@pen-chan.jp>
Mon, 28 Oct 2013 09:52:41 +0000 (18:52 +0900)
Gemfile
app/assets/javascripts/application.js
app/assets/javascripts/element.js.coffee [new file with mode: 0644]
app/views/panels/_element_form.html.erb
app/views/panels/_form.html.erb
app/views/stories/show.html.erb

diff --git a/Gemfile b/Gemfile
index 80208ee..baf7f92 100644 (file)
--- a/Gemfile
+++ b/Gemfile
@@ -3,6 +3,8 @@ source 'https://rubygems.org'
 gem 'rails', '3.1.1'
 gem 'devise', '=1.5.2'
 gem 'rest-client'
+gem 'underscore-rails'
+gem 'backbone-rails'
 gem 'kaminari'
 gem 'sanitize'
 gem 'aws-s3'
index 912b599..9a783ad 100644 (file)
@@ -11,6 +11,7 @@
 //= require jquery.validate.additional-methods
 //= require jquery.validate.localization/messages_ja
 //= require textchange
+//= require underscore
 //= require configurations
 //= require pettanr_editor
 //= require pettanr_sheeter
diff --git a/app/assets/javascripts/element.js.coffee b/app/assets/javascripts/element.js.coffee
new file mode 100644 (file)
index 0000000..9d28ad3
--- /dev/null
@@ -0,0 +1,224 @@
+class Element\r
+  colum_structures = () ->\r
+    raise\r
+  \r
+  list_opt_for_panel = () ->\r
+    {}\r
+  \r
+  show_opt_for_panel = () ->\r
+    {}\r
+  \r
+  json_opt_for_panel = () ->\r
+    {}\r
+  \r
+  path_name = (with_engine = false) ->\r
+    self.to_s.tableize\r
+  \r
+  \r
+  \r
+  has_picture? = () ->\r
+    false\r
+  \r
+  has_part? = () ->\r
+    false\r
+  \r
+  parts = () ->\r
+    @parts ||= []\r
+  \r
+  has_helper? = (column_name) ->\r
+    self.class.colum_structures[column_name] and self.class.colum_structures[column_name][:helper]\r
+  \r
+  element_name = () ->\r
+    self.class.to_s.underscore\r
+  \r
+  extend_column = () ->\r
+    nil\r
+  \r
+  extend_element_name = () ->\r
+    self.extend_column ? self.attributes[extend_column] : self.element_name\r
+  \r
+  find_configurations hash, key = () ->\r
+     if hash[key].is_a? String\r
+       self.find_configurations hash, hash[key]\r
+     else\r
+       return hash[key]\r
+  \r
+  new_index = () ->\r
+    @new_index\r
+  \r
+  new_index= v = () ->\r
+    @new_index = v\r
+  \r
+  new_panel = () ->\r
+    @new_panel\r
+  \r
+  new_panel= v = () ->\r
+    @new_panel = v\r
+  \r
+  get_panel = () ->\r
+    self.panel || @new_panel\r
+  \r
+  tag_id = (c = nil) ->\r
+    'panel' + self.tag_panel_id + self.tag_element_type + self.tag_element_id + c.to_s\r
+  \r
+  field_tag_id = (f) ->\r
+    self.tag_id + f.to_s\r
+  \r
+  tag_panel_id = () ->\r
+    self.get_panel.new_record? ? '0' : self.get_panel.id.to_s\r
+  \r
+  tag_element_id = () ->\r
+    self.new_record? ? '0' : self.id.to_s\r
+  \r
+  tag_element_type = () ->\r
+    raise\r
+  \r
+  tag_new_index = () ->\r
+    self.new_index.to_s\r
+  \r
+  path_name = (with_engine = false) ->\r
+    self.class.path_name(with_engine)\r
+  \r
+  form_template = (with_engine = false) ->\r
+    self.path_name(with_engine) + '/form'\r
+  \r
+  scenario_template = (with_engine = false) ->\r
+    self.path_name(with_engine) + '/scenario'\r
+  \r
+  element_face_template = (with_engine = false) ->\r
+    self.path_name(with_engine) + '/element_face'\r
+  \r
+  form_helper_template(colum_name) = () ->\r
+    self.class.colum_structures[colum_name][:helper]\r
+  \r
+  tag_attributes = (column = nil, opt = {}) ->\r
+    {\r
+      :id => self.field_tag_id(column), :panel_id => self.tag_panel_id, \r
+      :element_id => self.tag_element_id, :element_type => self.tag_element_type\r
+    }.merge(opt)\r
+  \r
+  field_tag_attributes = (column, no_attr, opt = {}) ->\r
+    self.tag_attributes(column).merge(\r
+      {:column => column, :new_index => self.tag_new_index, :no_attr => no_attr}\r
+    ).merge(opt)\r
+  \r
+  #render element by body\r
+  any_tag_attributes = (name = nil, opt = {}) ->\r
+    r = self.tag_attributes(name)\r
+    _.extend(r, \r
+      {:new_index => self.tag_new_index}\r
+    ) if self.new_index\r
+    r.merge(opt)\r
+  \r
+  select_tag_attributes = (selected, column, no_attr) ->\r
+    [\r
+      :last, :first, \r
+      {:html => {:selected => selected}}, \r
+      self.field_tag_attributes(column, no_attr)\r
+    ]\r
+  \r
+  tag_attr = (column = nil, opt = {}) ->\r
+    self.tag_attributes(column, opt).to_attr\r
+  \r
+  field_tag_attr = (column, no_attr, opt = {}) ->\r
+    self.field_tag_attributes(column, no_attr, opt).to_attr\r
+  \r
+  any_tag_attr = (name = nil, opt = {}) ->\r
+    self.any_tag_attributes(name, opt).to_attr\r
+\r
+  @pettanr_current_panel_id = 0\r
+  \r
+  @new_element_index = {}\r
+  @new_element_index[PettanrEditor.pettanr_current_panel_id] = 0\r
+  \r
+  @current_panel = () ->\r
+    $('#panel' + PettanrEditor.pettanr_current_panel_id.toString())\r
+  \r
+  @set_tree_value = (keys, last_attr, value) ->\r
+    key = keys.shift()\r
+    if keys.length <= 0\r
+      last_attr[key] = value\r
+    else\r
+      last_attr[key] = last_attr[key] || {}\r
+      PettanrEditor.set_tree_value(keys, last_attr[key], value)\r
+\r
+  @repeat_texts = ['repeat', 'repeat-x', 'repeat-y', 'no-repeat']\r
+  \r
+  @is_editting = () ->\r
+    trace = '#panel' + PettanrEditor.pettanr_current_panel_id.toString() + 'wrapper'\r
+    if $(trace) and $(trace).attr('editable')\r
+      return true\r
+    else\r
+      return false\r
+  @is_editable = (p) ->\r
+    if p.parent().attr('editable')\r
+      return true\r
+    else\r
+      return false\r
+  @is_var = (o) ->\r
+    if parseInt(o.attr('no_attr')) > 0\r
+      return false\r
+    else\r
+      if o.attr('column') \r
+        if o.attr('column') == '_destroy' and o.val().length < 1\r
+          return false\r
+        else\r
+          return true\r
+      else\r
+        return false\r
+  @is_panel = (o) ->\r
+    if PettanrEditor.is_element(o)\r
+      return false\r
+    else\r
+      return true\r
+  @is_element = (o) ->\r
+    if o.attr('element_type')\r
+      return true\r
+    else\r
+      return false\r
+  @is_element_part = (o) ->\r
+    if o.attr('element_part_type')\r
+      return true\r
+    else\r
+      return false\r
+  @element_is = (element_type, o) ->\r
+    if PettanrEditor.is_element(o) and o.attr('element_type') == element_type\r
+      return true\r
+    else\r
+      return false\r
+  @element_types  = {'panel_picture': 'panel_pictures', 'speech_balloon': 'speech_balloons', 'ground_picture': 'ground_pictures', 'ground_color': 'ground_colors'}\r
+  @element_type_to_table = (element_type) ->\r
+    PettanrEditor.element_types[element_type]\r
+  @text_align_texts = ['left', 'left', 'right', 'center']\r
+\r
+  @make_tree = (attr, o) ->\r
+    if PettanrEditor.is_var(o)\r
+      tree = 'panels-' + o.attr('panel_id') + '-'\r
+      if PettanrEditor.is_element(o)\r
+        tree = tree + PettanrEditor.element_type_to_table(o.attr('element_type')) + '_attributes-' + o.attr('element_id') + '-'\r
+        if PettanrEditor.is_element_part(o)\r
+          tree = tree + o.attr('element_part_type') + '_attributes-'\r
+      tree = tree + o.attr('column')\r
+      keys = tree.split('-')\r
+      PettanrEditor.set_tree_value(keys, attr, o.val())\r
+  \r
+  @panel_tag_id = (element) ->\r
+    '#panel' + element.attr('panel_id')\r
+  \r
+  @element_tag_id = (element) ->\r
+    '#panel' + element.attr('panel_id') + element.attr('element_type') + element.attr('element_id')\r
+  \r
+  @element_part_tag_id = (element_part) ->\r
+    '#panel' + element_part.attr('panel_id') + element_part.attr('element_type') + element_part.attr('element_id') + element_part.attr('element_part_type') + element_part.attr('element_part_id')\r
+  \r
+  @refresh_attribute = (field) ->\r
+    attr = {}\r
+    $('input').map ->\r
+      PettanrEditor.make_tree(attr, $(@))\r
+    $('textarea').map  ->\r
+      PettanrEditor.make_tree(attr, $(@))\r
+    $('select').map ->\r
+      PettanrEditor.make_tree(attr, $(@))\r
+    field.val(JSON.stringify(attr['panels'][PettanrEditor.pettanr_current_panel_id.toString() ]))\r
+  \r
+@PettanrEditor = PettanrEditor\r
index 24d4966..70eda64 100644 (file)
         <%= select_tag name, options_for_select(items, field_element.attributes[column]), field_element.field_tag_attributes(column, no_attr, opt) %>
       <% end %>
       <% if field_configurations['helpers'] %>
-        <% field_configurations['helpers'].each do |n, helper| %>
-          <% if helper['wrapper'] %>
-            <div class="<%= helper['wrapper'] -%>">
+        <span id="<%= elm.tag_id 'helpers' -%>">
+          <% field_configurations['helpers'].each do |n, helper| %>
+            <% if helper['wrapper'] %>
+              <div class="<%= helper['wrapper'] -%>">
+            <% end %>
+            <%= render helper['path'], :elm => field_element, :no_attr => no_attr, :opt => helper['options'] %>
+            <% if helper['wrapper'] %>
+              </div>
+            <% end %>
           <% end %>
-          <%= render helper['path'], :elm => field_element, :no_attr => no_attr, :opt => helper['options'] %>
-          <% if helper['wrapper'] %>
-            </div>
-          <% end %>
-        <% end %>
+        </span>
       <% end %>
     </div>
     <% if options['row_break'] %>
index 67217dc..31e9e58 100644 (file)
@@ -1,4 +1,6 @@
 <% @configurations = configurations %>
+<div id="template" >
+</div>
 <div id="tabs" class="panel-editor" panel_id="<%= @panel.tag_panel_id -%>" current="1">
   <ul>
     <li id="tabs-1-tab"><a href="#tabs-1">panel</a></li>
index d525d63..ad03496 100644 (file)
   <b><%= t_m 'Story.updated_at' -%>:</b>
   <%= l @story.updated_at %>
 </p>
+<% @story.story_sheets.each do |story_sheet| %>
+  <% if story_sheet.sheet and story_sheet.sheet.visible?(@author) -%>
+    <div>
+      <%= link_to sheet_icon(:object => story_sheet.sheet, :size => 25), sheet_path(story_sheet.sheet) %>
+      <%= link_to h(truncate(story_sheet.sheet.caption, :length => 40)), play_sheet_path(story_sheet.sheet) %>
+      (<%= story_sheet.sheet.sheet_panels.size -%>)
+    </div>
+  <% end %>
+<% end %>
 <% if @story.own? @author -%>
   <%= link_to t('link.edit'), edit_story_path(@story) %>
   <%= link_to t('link.destroy'), story_path(@story), :method => :delete %>