OSDN Git Service

fix editor
authoryasushiito <yas@pen-chan.jp>
Tue, 4 Nov 2014 07:34:58 +0000 (16:34 +0900)
committeryasushiito <yas@pen-chan.jp>
Tue, 4 Nov 2014 07:34:58 +0000 (16:34 +0900)
24 files changed:
app/assets/javascripts/ap.js
app/assets/javascripts/controllers/panels.js.coffee
app/assets/javascripts/editor.js.coffee [new file with mode: 0644]
app/assets/javascripts/editor/panel_editor.js.coffee [new file with mode: 0644]
app/assets/javascripts/editor/panel_editor/dock.js.coffee [new file with mode: 0644]
app/assets/javascripts/locmare/bucket.js.coffee
app/assets/javascripts/models/ground_color.js.coffee
app/assets/javascripts/models/ground_picture.js.coffee
app/assets/javascripts/models/panel.js.coffee
app/assets/javascripts/models/panel_picture.js.coffee
app/assets/javascripts/models/speech_balloon.js.coffee
app/assets/javascripts/peta/element_nestable_content.js.coffee
app/assets/javascripts/tags.js.coffee
app/assets/javascripts/views/ground_colors/element_face.js.coffee [new file with mode: 0644]
app/assets/javascripts/views/ground_colors/symbol.js.coffee
app/assets/javascripts/views/ground_pictures/element_face.js.coffee [new file with mode: 0644]
app/assets/javascripts/views/panel_pictures/element_face.js.coffee [new file with mode: 0644]
app/assets/javascripts/views/panel_pictures/icon.js.coffee [new file with mode: 0644]
app/assets/javascripts/views/speech_balloons/element.js.coffee
app/assets/javascripts/views/speech_balloons/element_face.js.coffee [new file with mode: 0644]
app/assets/javascripts/views/top/index.js.coffee
app/assets/stylesheets/test.css.scss
app/views/layouts/ap.html.erb
lib/editor/dock.rb

index d45e31e..d768012 100644 (file)
 //= require ./pettanr
 //= require ./routes
 //= require ./views
+//= require ./editor
+//= require ./editor/panel_editor
+//= require ./editor/panel_editor/dock
 //= require ./i18n/translations
 //= require_directory ./controllers
 //= require_directory ./models
index e352755..9bb5d2c 100644 (file)
@@ -46,11 +46,18 @@ class Pettanr.PanelsController extends Pettanr.AppController
   \r
   new: () ->\r
     @redraw_title(@params)\r
-    @form_new()\r
+    @set_new()\r
+    editor = new Editor.PanelEditor({root_item: @item, operators: @operators})\r
+    $("#pettanr").html(editor.render().el)\r
   \r
   edit: () ->\r
     @redraw_title(@params)\r
-    @form_edit()\r
+    _this = this\r
+    @set_model()\r
+    @item = new Pettanr.Panel({id: @params['id']}, {with_elements: true})\r
+    @item.fetch({cache: false}).done ->\r
+      editor = new Editor.PanelEditor({root_item: _this.item, operators: _this.operators})\r
+      $("#pettanr").html(editor.render().el)\r
   \r
   create: () ->\r
   \r
diff --git a/app/assets/javascripts/editor.js.coffee b/app/assets/javascripts/editor.js.coffee
new file mode 100644 (file)
index 0000000..e2e48cd
--- /dev/null
@@ -0,0 +1,277 @@
+class Editor\r
+@Editor = Editor\r
+class Editor.EditorModule\r
+class Editor.EditorModule.DockBase extends Backbone.View\r
+  \r
+  initialize: (options) ->\r
+    @parent = options.parent\r
+    @tabs = []\r
+  \r
+  add_tab: (tab, label, body) ->\r
+    @tabs.push tab\r
+    tab.label = label\r
+    tab.body = body\r
+    tab\r
+  \r
+  root_item: () ->\r
+    @parent.root_item()\r
+  \r
+class Editor.EditorModule.DockModule\r
+  \r
+class Editor.EditorModule.DockModule.Tab extends Editor.EditorModule.DockBase\r
+  initialize: (options) ->\r
+    super(options)\r
+    @index = options.index\r
+    @name = options.name\r
+    @label = null\r
+    @body = null\r
+  \r
+  dom_id: () ->\r
+    console.log "no dom_id"\r
+  \r
+  dom_class: () ->\r
+    console.log "no dom_class"\r
+  \r
+class Editor.EditorModule.DockModule.Bay extends Editor.EditorModule.DockModule.Tab\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
+  dock: () ->\r
+    @parent\r
+  \r
+  root_item: () ->\r
+    @parent.root_item()\r
+  \r
+  dom_id: () ->\r
+    @parent.dom_id() + '-bay-' + @name\r
+  \r
+  dom_class: () ->\r
+    @parent.dom_class() + '-bay'\r
+  \r
+  dom_labels_class: () ->\r
+    @dom_class() + '-labels'\r
+  \r
+class Editor.EditorModule.DockModule.SimpleBay extends Editor.EditorModule.DockModule.Bay\r
+  tagName: 'div'\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
+class Editor.EditorModule.DockModule.BoardBay extends Editor.EditorModule.DockModule.Bay\r
+  tagName: 'div'\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+    @boards = null\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    @el.className = @body.dom_class()\r
+    rb = new Tag.RowBreak()\r
+    this.$el.append(rb.render().el)\r
+    this\r
+  \r
+  dom_labels_class: () ->\r
+    @dom_class() + "-labels"\r
+  \r
+  dom_bodys_class: () ->\r
+    @dom_class() + "-bodys"\r
+  \r
+class Editor.EditorModule.DockModule.Board extends Editor.EditorModule.DockModule.Tab\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
+  root_item: () ->\r
+    @parent.root_item()\r
+  \r
+  bay: () ->\r
+    @parent\r
+  \r
+  dock: () ->\r
+    @bay().dock()\r
+  \r
+  bay_index: () ->\r
+    @bay().index\r
+  \r
+  dom_id: () ->\r
+    @bay().dom_id() + '-board-' + @name\r
+  \r
+  dom_class: () ->\r
+    @bay().dom_class() + '-board'\r
+  \r
+  header_class: () ->\r
+    ""\r
+  \r
+class Editor.EditorModule.DockModule.Bucket extends Backbone.View\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+    @parent = options.parent\r
+  \r
+class Editor.EditorModule.DockModule.FormBucket extends Editor.EditorModule.DockModule.Bucket\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+    @form = options.form\r
+  \r
+  render: () ->\r
+    @form.render()\r
+  \r
+class Editor.EditorModule.DockModule.PriorityBucket extends Editor.EditorModule.DockModule.Bucket\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
+  board: () ->\r
+    @parent.board()\r
+  \r
+  bay: () ->\r
+    @board().bay()\r
+  \r
+class Editor.EditorModule.DockModule.ScenarioBucket extends Editor.EditorModule.DockModule.Bucket\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+    @element = options.element\r
+  \r
+  board: () ->\r
+    @parent.board()\r
+  \r
+  bay: () ->\r
+    @board().bay()\r
+  \r
+class Editor.EditorModule.DockModule.TabModule\r
+  \r
+class Editor.EditorModule.DockModule.TabModule.Label extends Backbone.View\r
+  \r
+  initialize: (options) ->\r
+    @parent = options.parent\r
+    @caption = options.caption\r
+  \r
+  root_item: () ->\r
+    @parent.root_item()\r
+  \r
+  index: () ->\r
+    @parent.index\r
+  \r
+  name: () ->\r
+    @parent.name\r
+  \r
+  dom_id: () ->\r
+    console.log "no dom_id"\r
+  \r
+  dom_class: () ->\r
+    console.log "no dom_class"\r
+  \r
+  body: () ->\r
+    @parent.body\r
+  \r
+class Editor.EditorModule.DockModule.TabModule.Body extends Backbone.View\r
+  \r
+  initialize: (options) ->\r
+    @parent = options.parent\r
+  \r
+  root_item: () ->\r
+    @parent.root_item()\r
+  \r
+  index: () ->\r
+    @parent.index\r
+  \r
+  name: () ->\r
+    @parent.name\r
+  \r
+  label: () ->\r
+    @parent.label\r
+  \r
+  dom_id: () ->\r
+    console.log "no dom_id"\r
+  \r
+  dom_class: () ->\r
+    console.log "no dom_class"\r
+  \r
+class Editor.EditorModule.DockModule.TabModule.BayLabel extends Editor.EditorModule.DockModule.TabModule.Label\r
+  tagName: 'li'\r
+  \r
+  bay: () ->\r
+    @parent\r
+  \r
+  dock: () ->\r
+    @bay().dock()\r
+  \r
+  dom_id: () ->\r
+    @bay().dom_id() + '-label'\r
+  \r
+  dom_class: () ->\r
+    @bay().dom_class() + '-label'\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    @el.className = @dom_class()\r
+    a = new Tag.A({attr: {href: '/#' + @body().dom_id()}, content: @caption})\r
+    this.$el.html(a.render().el)\r
+    this\r
+  \r
+class Editor.EditorModule.DockModule.TabModule.BayBody extends Editor.EditorModule.DockModule.TabModule.Body\r
+  bay: () ->\r
+    @parent\r
+  \r
+  dock: () ->\r
+    @bay().dock()\r
+  \r
+  dom_id: () ->\r
+    @bay().dom_id() + '-body'\r
+  \r
+  dom_class: () ->\r
+    @bay().dom_class() + '-body'\r
+  \r
+class Editor.EditorModule.DockModule.TabModule.BoardLabel extends Editor.EditorModule.DockModule.TabModule.Label\r
+  tagName: 'li'\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
+  board: () ->\r
+    @parent\r
+  \r
+  bay: () ->\r
+    @board().bay()\r
+  \r
+  dock: () ->\r
+    @bay().dock()\r
+  \r
+  element: () ->\r
+    @parent.element\r
+  \r
+  bay_name: () ->\r
+    bay().name\r
+  \r
+  dom_id: () ->\r
+    @board().dom_id() + '-label'\r
+  \r
+  dom_class: () ->\r
+    @board().dom_class() + '-label'\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    @el.className = @dom_class()\r
+    this.$el.html(@element().element_face().render().el)\r
+    this\r
+  \r
+class Editor.EditorModule.DockModule.TabModule.BoardBody extends Editor.EditorModule.DockModule.TabModule.Body\r
+  board: () ->\r
+    @parent\r
+  \r
+  bay: () ->\r
+    @board().bay()\r
+  \r
+  dock: () ->\r
+    @bay().dock()\r
+  \r
+  dom_id: () ->\r
+    @board().dom_id() + '-body'\r
+  \r
+  dom_class: () ->\r
+    @board().dom_class() + '-body'\r
+  \r
diff --git a/app/assets/javascripts/editor/panel_editor.js.coffee b/app/assets/javascripts/editor/panel_editor.js.coffee
new file mode 100644 (file)
index 0000000..0808bad
--- /dev/null
@@ -0,0 +1,33 @@
+class Editor.PanelEditor extends Backbone.View\r
+  tagName: 'div'\r
+  className: 'panel-editor'\r
+  \r
+  initialize: (options) ->\r
+    @panel = options.root_item\r
+    @operators = options.operators\r
+    @body = new Pettanr.Views.Panel.Body({\r
+      panel: @root_item(),\r
+      operators: @operators,\r
+      spot: null\r
+    })\r
+    @dock = new Editor.PanelEditor.Dock({parent: this})\r
+    @credits = new Pettanr.Views.Panel.Show.Credits({panel: @root_item()})\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    this.$el.append(@body.render().el)\r
+    this.$el.append(@dock.render().el)\r
+    this.$el.append(@credits.render().el)\r
+    rb = new Tag.RowBreak()\r
+    this.$el.append(rb.render().el)\r
+    this\r
+  \r
+  root_item: () ->\r
+    @panel\r
+  \r
+  dom_id: () ->\r
+    'editor-' + Pettanr.to_s(@root_item().get('id'))\r
+  \r
+  dom_class: () ->\r
+    'editor'\r
+\r
diff --git a/app/assets/javascripts/editor/panel_editor/dock.js.coffee b/app/assets/javascripts/editor/panel_editor/dock.js.coffee
new file mode 100644 (file)
index 0000000..4fe7308
--- /dev/null
@@ -0,0 +1,302 @@
+class Editor.PanelEditor.Dock extends Editor.EditorModule.DockBase\r
+  tagName: 'div'\r
+  className: 'dock'\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+    tab = new Editor.EditorModule.DockModule.RootBay({\r
+      parent: this, index: 0, name: 'panel'\r
+    })\r
+    @add_tab(\r
+      tab, \r
+      new Editor.EditorModule.DockModule.TabModule.RootBayLabel({\r
+        parent: tab, caption: 'panel'\r
+      }), \r
+      new Editor.EditorModule.DockModule.TabModule.RootBayBody({\r
+        parent: tab\r
+      })\r
+    )\r
+    tab = new Editor.EditorModule.DockModule.ElementBay({\r
+      parent: this, index: 1, name: 'elements'\r
+    })\r
+    @add_tab(\r
+      tab, \r
+      new Editor.EditorModule.DockModule.TabModule.ElementBayLabel({\r
+        parent: tab, caption: 'elements'\r
+      }), \r
+      new Editor.EditorModule.DockModule.TabModule.ElementBayBody({\r
+        parent: tab\r
+      })\r
+    )\r
+    tab = new Editor.EditorModule.DockModule.ScenarioBay({\r
+      parent: this, index: 2, name: 'scenario'\r
+    })\r
+    @add_tab(\r
+      tab, \r
+      new Editor.EditorModule.DockModule.TabModule.ScenarioBayLabel({\r
+        parent: tab, caption: 'scenario'\r
+      }), \r
+      new Editor.EditorModule.DockModule.TabModule.ScenarioBayBody({\r
+        parent: tab\r
+      })\r
+    )\r
+    tab = new Editor.EditorModule.DockModule.PriorityBay({\r
+      parent: this, index: 3, name: 'priority'\r
+    })\r
+    @add_tab(\r
+      tab, \r
+      new Editor.EditorModule.DockModule.TabModule.PriorityBayLabel({\r
+        parent: tab, caption: 'priority'\r
+      }), \r
+      new Editor.EditorModule.DockModule.TabModule.PriorityBayBody({\r
+        parent: tab\r
+      })\r
+    )\r
+    tab = new Editor.EditorModule.DockModule.NewBay({\r
+      parent: this, index: 4, name: 'new'\r
+    })\r
+    @add_tab(\r
+      tab, \r
+      new Editor.EditorModule.DockModule.TabModule.NewBayLabel({\r
+        parent: tab, caption: 'new'\r
+      }), \r
+      new Editor.EditorModule.DockModule.TabModule.NewBayBody({\r
+        parent: tab\r
+      })\r
+    )\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    l = _.map @tabs, (tab) ->\r
+      tab.label\r
+    labels = new Tag.Ul({contents: l, class_name: @dom_labels_class()})\r
+    this.$el.append(labels.render().el)\r
+    _this = this\r
+    _.each @tabs, (tab) ->\r
+      _this.$el.append(tab.render().el)\r
+    this\r
+  \r
+  editor: () ->\r
+    @parent\r
+  \r
+  dom_id: () ->\r
+    @editor().dom_id() + '-dock'\r
+  \r
+  dom_class: () ->\r
+    @editor().dom_class() + '-dock'\r
+  \r
+  dom_labels_class: () ->\r
+    @dom_class() + '-labels'\r
+  \r
+class Editor.EditorModule.DockModule.RootBay extends Editor.EditorModule.DockModule.SimpleBay\r
+  \r
+  render: () ->\r
+    @body.render()\r
+  \r
+class Editor.EditorModule.DockModule.TabModule.RootBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
+  \r
+class Editor.EditorModule.DockModule.TabModule.RootBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+    @form = new Locmare.Form({\r
+      form_name: @root_item().item_name(), \r
+      item: @root_item(), \r
+      mounted: @mounted(), \r
+      submit: 'default', \r
+      operators: @operators\r
+    })\r
+    @bucket = new Editor.EditorModule.DockModule.FormBucket({\r
+      parent: this, form: @form\r
+    })\r
+  \r
+  render: () ->\r
+    @el.className = @bay().body.dom_class()\r
+    this.$el.html(@bucket.render().el)\r
+    this\r
+  \r
+  mounted: () ->\r
+    true\r
+  \r
+  dock: () ->\r
+    @parent.dock()\r
+  \r
+  root_item: () ->\r
+    @dock().root_item()\r
+  \r
+class Editor.EditorModule.DockModule.ElementBay extends Editor.EditorModule.DockModule.BoardBay\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+    _this = this\r
+    i = 0\r
+    _.each @elements(), (element) ->\r
+      tab = new Editor.EditorModule.DockModule.ElementBoard({\r
+        parent: _this, index: i, name: element.item_name(), element: element\r
+      })\r
+      _this.add_tab(\r
+        tab, \r
+        new Editor.EditorModule.DockModule.TabModule.ElementBoardLabel({parent: tab, name: element.item_name()}), \r
+        new Editor.EditorModule.DockModule.TabModule.ElementBoardBody({parent: tab})\r
+      )\r
+      i++\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    _this = this\r
+    _.each @tabs, (tab) ->\r
+      _this.$el.append(tab.label.render().el)\r
+    this.$el.append('bdy')\r
+    rb = new Tag.RowBreak()\r
+    this.$el.append(rb.render().el)\r
+    this\r
+  \r
+  elements: () ->\r
+    @root_item().scenario_elements()\r
+  \r
+class Editor.EditorModule.DockModule.TabModule.ElementBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
+  \r
+class Editor.EditorModule.DockModule.TabModule.ElementBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
+  \r
+class Editor.EditorModule.DockModule.ElementBoard extends Editor.EditorModule.DockModule.Board\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+    @element = options.element\r
+  \r
+class Editor.EditorModule.DockModule.TabModule.ElementBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
+  \r
+class Editor.EditorModule.DockModule.TabModule.ElementBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+    @form = new Locmare.Bucket({\r
+      bucket_name: @element().item_name(), \r
+      item: @element(), \r
+      mounted: @mounted(), \r
+      submit: null, \r
+      operators: @operators\r
+    })\r
+    @bucket = new Editor.EditorModule.DockModule.FormBucket({\r
+      parent: this, form: @form\r
+    })\r
+  \r
+  mounted: () ->\r
+    true\r
+  \r
+  element: () ->\r
+    @parent.element\r
+  \r
+class Editor.EditorModule.DockModule.PriorityBay extends Editor.EditorModule.DockModule.BoardBay\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+    _this = this\r
+    i = 0\r
+    _.each @elements(), (element) ->\r
+      tab = new Editor.EditorModule.DockModule.PriorityBoard({\r
+        parent: this, index: i, name: element.item_name(), element: element\r
+      })\r
+      _this.add_tab(\r
+        tab, \r
+        new Editor.EditorModule.DockModule.TabModule.PriorityBoardLabel({parent: tab, name: element.item_name()}), \r
+        new Editor.EditorModule.DockModule.TabModule.PriorityBoardBody({parent: tab})\r
+      )\r
+      i++\r
+  \r
+  elements: () ->\r
+    @root_item().scenario_elements()\r
+  \r
+  class_name: () ->\r
+    "zsort-box"\r
+  \r
+class Editor.EditorModule.DockModule.TabModule.PriorityBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
+  \r
+class Editor.EditorModule.DockModule.TabModule.PriorityBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
+  \r
+class Editor.EditorModule.DockModule.PriorityBoard extends Editor.EditorModule.DockModule.Board\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+    @element = options.element\r
+  \r
+  mounted: () ->\r
+    false\r
+  \r
+class Editor.EditorModule.DockModule.TabModule.PriorityBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
+  \r
+class Editor.EditorModule.DockModule.TabModule.PriorityBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+    @bucket = new Editor.EditorModule.DockModule.PriorityBucket({\r
+      parent: this\r
+    })\r
+    \r
+#    form_manager = Pettanr::Application::manifest.form_managers[self.root_item.form_name]\r
+#    form = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted\r
+#    bucket = Bucket.new self,form\r
+  \r
+class Editor.EditorModule.DockModule.ScenarioBay extends Editor.EditorModule.DockModule.BoardBay\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+    _this = this\r
+    i = 0\r
+    _.each @elements(), (element) ->\r
+      tab = new Editor.EditorModule.DockModule.ScenarioBoard({\r
+        parent: this, index: i, name: element.item_name(), element: element\r
+      })\r
+      _this.add_tab(\r
+        tab, \r
+        new Editor.EditorModule.DockModule.TabModule.ScenarioBoardLabel({parent: tab, caption: element.item_name()}), \r
+        new Editor.EditorModule.DockModule.TabModule.ScenarioBoardBody({parent: tab})\r
+      )\r
+      i++\r
+  \r
+  elements: () ->\r
+    @root_item().scenario_elements()\r
+  \r
+  class_name: () ->\r
+    "tsort-box"\r
+  \r
+class Editor.EditorModule.DockModule.TabModule.ScenarioBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
+  \r
+class Editor.EditorModule.DockModule.TabModule.ScenarioBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
+  \r
+class Editor.EditorModule.DockModule.ScenarioBoard extends Editor.EditorModule.DockModule.Board\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+    @element = options.element\r
+  \r
+class Editor.EditorModule.DockModule.TabModule.ScenarioBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
+  \r
+class Editor.EditorModule.DockModule.TabModule.ScenarioBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+    @bucket = new Editor.EditorModule.DockModule.ScenarioBucket({\r
+      parent: this\r
+    })\r
+  \r
+class Editor.EditorModule.DockModule.NewBay extends Editor.EditorModule.DockModule.BoardBay\r
+  \r
+\r
+class Editor.EditorModule.DockModule.TabModule.NewBayLabel extends Editor.EditorModule.DockModule.TabModule.BayLabel\r
+  \r
+\r
+class Editor.EditorModule.DockModule.TabModule.NewBayBody extends Editor.EditorModule.DockModule.TabModule.BayBody\r
+  \r
+class Editor.EditorModule.DockModule.NewBoard extends Editor.EditorModule.DockModule.Board\r
+  \r
+class Editor.EditorModule.DockModule.TabModule.NewBoardLabel extends Editor.EditorModule.DockModule.TabModule.BoardLabel\r
+  \r
+class Editor.EditorModule.DockModule.TabModule.NewBoardBody extends Editor.EditorModule.DockModule.TabModule.BoardBody\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+#    form_manager = Pettanr::Application::manifest.form_managers[self.root_item.form_name]\r
+#    form = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted\r
+#    bucket = Bucket.new self,form\r
+  \r
index 72993e2..442c71c 100644 (file)
@@ -68,7 +68,7 @@ class Locmare.Bucket extends Backbone.View
     _this = this\r
     _.each man.members, (member_manifest, member_name) ->\r
       form_name = member_name   # write exchange function if you want\r
-      member_item = item[form_name]\r
+      member_item = item.get(form_name)\r
       new_key = key + '.' + form_name\r
       _this.forms[new_key] = new Locmare.Form({\r
         form_name: new_key, \r
index 7839866..46971d8 100644 (file)
@@ -18,6 +18,9 @@ class Pettanr.GroundColor extends Peta.Element
   panel: () ->\r
     new Pettanr.Panel({id: @get('panel_id')})\r
   \r
+  element_face: () ->\r
+    new Pettanr.Views.GroundColor.ElementFace({element: this})\r
+  \r
   initialize: () ->\r
     if @id\r
       @url = @url + @id\r
index 219127a..bc561ee 100644 (file)
@@ -44,6 +44,9 @@ class Pettanr.GroundPicture extends Peta.Element
   repeat_text: () ->\r
     Pettanr.GroundPicture.repeat_texts()[@get('repeat')]\r
   \r
+  element_face: () ->\r
+    new Pettanr.Views.GroundPicture.ElementFace({element: this})\r
+  \r
   initialize: () ->\r
     if @id\r
       @url = @url + @id\r
index 40a99a1..a588f76 100644 (file)
@@ -59,3 +59,4 @@ class Pettanr.Panel extends Peta.Root
 class Pettanr.Panels extends Backbone.Collection\r
   model: Pettanr.Panel\r
   url: '/panels/'\r
+  \r
index 00ab992..1530475 100644 (file)
@@ -55,6 +55,9 @@ class Pettanr.PanelPicture extends Peta.Element
     i.fetch({cache: true}).done ->\r
       cb(_this.tmb_opt_img_tag(i))\r
   \r
+  element_face: () ->\r
+    new Pettanr.Views.PanelPicture.ElementFace({element: this})\r
+  \r
   initialize: () ->\r
     if @id\r
       @url = @url + @id\r
index c10b7b5..ecb19a8 100644 (file)
@@ -32,6 +32,9 @@ class Pettanr.SpeechBalloon extends Peta.Element
   plain_scenario: () ->\r
     @get('caption')\r
   \r
+  element_face: () ->\r
+    new Pettanr.Views.SpeechBalloon.ElementFace({element: this})\r
+  \r
   initialize: () ->\r
     if @id\r
       @url = @url + @id\r
index c90638e..5fb8392 100644 (file)
@@ -1,13 +1,7 @@
 class Peta.ElementNestableContent extends Peta.Content\r
   element_items: (element_model) ->\r
     n = @my_class().my_manifest().associations.child_element_name(element_model)\r
-    attrs = @get(n)\r
-    if attrs\r
-      if @my_class().my_manifest().associations.is_has_one(element_model)\r
-        new element_model(attrs)\r
-      else\r
-        _.map attrs, (attr) ->\r
-          new element_model(attr)\r
+    @get(n)\r
   \r
   elements_items: () ->\r
     _this = this\r
@@ -20,3 +14,20 @@ class Peta.ElementNestableContent extends Peta.Content
     _.each @elements_items(), (item) ->\r
       item.boosts(level)\r
   \r
+  get: (name) ->\r
+    val = super(name)\r
+    return val if !(typeof val == 'object')\r
+    _this = this\r
+    attrs = val\r
+    r = null\r
+    _.each @my_class().child_models(), (element_model) ->\r
+      n = _this.my_class().my_manifest().associations.child_element_name(element_model)\r
+      if n == name\r
+        if _this.my_class().my_manifest().associations.is_has_one(element_model)\r
+          r = new element_model(attrs)\r
+        else\r
+          r = _.map attrs, (attr) ->\r
+            new element_model(attr)\r
+    r\r
+  \r
+  \r
index b875ce5..554c456 100644 (file)
@@ -53,6 +53,23 @@ class Tag.Div extends Backbone.View
 class Tag.Span extends Tag.Div\r
   tagName: 'span'\r
     \r
+class Tag.Ul extends Backbone.View\r
+  tagName: 'ul'\r
+  \r
+  initialize: (options) ->\r
+    @attr = options.attr || {}\r
+    @contents = options.contents\r
+    @class_name = options.class_name\r
+  \r
+  render: () ->\r
+    @el.className = @class_name if @class_name\r
+    _this = this\r
+    this.$el.attr(@attr)\r
+    this.$el.html('')\r
+    _.each @contents, (content) ->\r
+      _this.$el.append(content.render().el)\r
+    this\r
+  \r
 class Tag.RowBreak extends Tag.Div\r
   initialize: (options) ->\r
     @attr = {}\r
diff --git a/app/assets/javascripts/views/ground_colors/element_face.js.coffee b/app/assets/javascripts/views/ground_colors/element_face.js.coffee
new file mode 100644 (file)
index 0000000..4761565
--- /dev/null
@@ -0,0 +1,17 @@
+class Pettanr.Views.GroundColor.ElementFace extends Backbone.View\r
+  tagName: 'div'\r
+  className: 'elements-tab'\r
+  \r
+  initialize: (options) ->\r
+    @element = options.element\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    symbol = new Pettanr.Views.GroundColor.Symbol({item: @element, class_name: 'elements-tab-face-icon'})\r
+    this.$el.append(symbol.render().el)\r
+    name = Pettanr.truncate(@element.get('caption'), 15)\r
+    caption = new Tag.Span({class_name: 'elements-tab-face-caption', content: name})\r
+    this.$el.append(caption.render().el)\r
+    fe = new Tag.Div({class_name: 'elements-tab-face-end'})\r
+    this.$el.append(fe.render().el)\r
+    this\r
index 01cf55a..6aeaa69 100644 (file)
@@ -1,11 +1,12 @@
 class Pettanr.Views.GroundColor.Symbol extends Backbone.View\r
   tagName: 'div'\r
-  className: 'face'\r
   \r
   initialize: (options) ->\r
     @item = options.item\r
+    @class_name = options.class_name || 'face'\r
   \r
   render: () ->\r
+    this.$el.addClass(@class_name)\r
     this.$el.html(@fore_color())\r
     attr = {\r
       style: Pettanr.to_style(@style())\r
diff --git a/app/assets/javascripts/views/ground_pictures/element_face.js.coffee b/app/assets/javascripts/views/ground_pictures/element_face.js.coffee
new file mode 100644 (file)
index 0000000..721c6c8
--- /dev/null
@@ -0,0 +1,33 @@
+class Pettanr.Views.GroundPicture.ElementSymbol extends Backbone.View\r
+  tagName: 'div'\r
+  className: 'elements-tab-face-icon'\r
+  \r
+  initialize: (options) ->\r
+    @element = options.element\r
+  \r
+  render: () ->\r
+    picture = @element.picture()\r
+    _this = this\r
+    picture.fetch({cache: true}).done ->\r
+      img = _this.element.tmb_opt_img_tag(picture)\r
+      _this.$el.html(img.render().el)\r
+    this\r
+  \r
+class Pettanr.Views.GroundPicture.ElementFace extends Backbone.View\r
+  tagName: 'div'\r
+  className: 'elements-tab'\r
+  \r
+  initialize: (options) ->\r
+    @element = options.element\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    symbol = new Pettanr.Views.GroundPicture.ElementSymbol({element: @element})\r
+    this.$el.append(symbol.render().el)\r
+    name = Pettanr.truncate(@element.get('caption'), 15)\r
+    caption = new Tag.Span({class_name: 'elements-tab-face-caption', content: name})\r
+    this.$el.append(caption.render().el)\r
+    fe = new Tag.Div({class_name: 'elements-tab-face-end'})\r
+    this.$el.append(fe.render().el)\r
+    this\r
+  \r
diff --git a/app/assets/javascripts/views/panel_pictures/element_face.js.coffee b/app/assets/javascripts/views/panel_pictures/element_face.js.coffee
new file mode 100644 (file)
index 0000000..f871fb3
--- /dev/null
@@ -0,0 +1,33 @@
+class Pettanr.Views.PanelPicture.ElementSymbol extends Backbone.View\r
+  tagName: 'div'\r
+  className: 'elements-tab-face-icon'\r
+  \r
+  initialize: (options) ->\r
+    @element = options.element\r
+  \r
+  render: () ->\r
+    picture = @element.picture()\r
+    _this = this\r
+    picture.fetch({cache: true}).done ->\r
+      img = _this.element.tmb_opt_img_tag(picture)\r
+      _this.$el.html(img.render().el)\r
+    this\r
+  \r
+class Pettanr.Views.PanelPicture.ElementFace extends Backbone.View\r
+  tagName: 'div'\r
+  className: 'elements-tab'\r
+  \r
+  initialize: (options) ->\r
+    @element = options.element\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    symbol = new Pettanr.Views.PanelPicture.ElementSymbol({element: @element})\r
+    this.$el.append(symbol.render().el)\r
+    name = Pettanr.truncate(@element.get('caption'), 15)\r
+    caption = new Tag.Span({class_name: 'elements-tab-face-caption', content: name})\r
+    this.$el.append(caption.render().el)\r
+    fe = new Tag.Div({class_name: 'elements-tab-face-end'})\r
+    this.$el.append(fe.render().el)\r
+    this\r
+  \r
diff --git a/app/assets/javascripts/views/panel_pictures/icon.js.coffee b/app/assets/javascripts/views/panel_pictures/icon.js.coffee
new file mode 100644 (file)
index 0000000..2b14b44
--- /dev/null
@@ -0,0 +1,5 @@
+class Pettanr.Views.SpeechBalloon.Icon extends Pettanr.Views.Common.Icon\r
+  \r
+  initialize: (options) ->\r
+    super(options)\r
+  \r
index d1a61df..01b9c79 100644 (file)
@@ -6,8 +6,8 @@ class Pettanr.Views.SpeechBalloon.Element extends Backbone.View
     @element = options.element\r
     @root = options.root\r
     @spot = options.spot\r
-    @balloon = new Pettanr.Balloon(@element.get('balloon'))\r
-    @speech = new Pettanr.Speech(@element.get('speech'))\r
+    @balloon = @element.get('balloon')\r
+    @speech = @element.get('speech')\r
   \r
   render: () ->\r
     @attr = {style: Pettanr.to_style(@style())}\r
diff --git a/app/assets/javascripts/views/speech_balloons/element_face.js.coffee b/app/assets/javascripts/views/speech_balloons/element_face.js.coffee
new file mode 100644 (file)
index 0000000..532b0c7
--- /dev/null
@@ -0,0 +1,36 @@
+class Pettanr.Views.SpeechBalloon.ElementSymbol extends Backbone.View\r
+  tagName: 'div'\r
+  className: 'elements-tab-face-icon'\r
+  \r
+  initialize: (options) ->\r
+    @element = options.element\r
+  \r
+  render: () ->\r
+    speech_balloon_template = @element.speech_balloon_template()\r
+    _this = this\r
+    speech_balloon_template.fetch({cache: true}).done ->\r
+      system_picture = speech_balloon_template.system_picture()\r
+      system_picture.fetch({cache: true}).done ->\r
+        img = system_picture.tmb_opt_img_tag()\r
+        _this.$el.html(img.render().el)\r
+    this\r
+  \r
+class Pettanr.Views.SpeechBalloon.ElementFace extends Backbone.View\r
+  tagName: 'div'\r
+  className: 'elements-tab'\r
+  \r
+  initialize: (options) ->\r
+    @element = options.element\r
+  \r
+  render: () ->\r
+    this.$el.html('')\r
+    symbol = new Pettanr.Views.SpeechBalloon.ElementSymbol({element: @element})\r
+    this.$el.append(symbol.render().el)\r
+    speech = @element.get('speech')\r
+    name = Pettanr.truncate(speech.get('content'), 15)\r
+    caption = new Tag.Span({class_name: 'elements-tab-face-caption', content: name})\r
+    this.$el.append(caption.render().el)\r
+    fe = new Tag.Div({class_name: 'elements-tab-face-end'})\r
+    this.$el.append(fe.render().el)\r
+    this\r
+  \r
index 0726994..b588f64 100644 (file)
@@ -4,14 +4,22 @@ class Pettanr.Views.Top.Index extends Backbone.View
   \r
   initialize: (options) ->\r
     @operators = options.operators\r
+    @title = Manifest.manifest().magic_numbers.profile.users.caption\r
   \r
   render: () ->\r
     this.$el.html('')\r
     t = _.template($("#header_template").html())\r
-    this.$el.append(t())\r
-    @delegateEvents({'click .sign_in': 'click_sign_in'})\r
+    this.$el.append(t({title: @title}))\r
+    @delegateEvents({\r
+      'click .logo': 'click_logo', \r
+      'click .sign_in': 'click_sign_in'\r
+    })\r
     this\r
   \r
+  click_logo: () ->\r
+    window.router.navigate('', true)\r
+    return false\r
+  \r
   click_sign_in: () ->\r
     window.router.navigate('users/sign_in', true)\r
     return false\r
index f037eb7..f88250c 100644 (file)
@@ -661,6 +661,10 @@ font-family : monospace;
 .filer-item-speech_balloon_template .filer-item-caption {
 }
 
+.logo{
+  float: left;
+}
+
 ul.pagination {
   list-style-type: none;
 }
index 27984ba..2e46ddb 100644 (file)
 <div id="footer">\r
 </div>\r
 <script type="text/template" id="header_template">\r
-  <div id="account">\r
+  <span id="logo">\r
+    <a class="logo" href="/"><&= title &></a>\r
+  </span>\r
+  <span id="account">\r
     <a class="sign_in" href="/users/sign_in">sign_in</a>\r
-  </div>\r
+  </span>\r
+  <span class="row_break">\r
+  </span>\r
 </script>\r
 <script type="text/template" id="sign_in">\r
   <h3><&= 'title' &></h3>\r
index 188a1e1..2298b06 100644 (file)
@@ -7,10 +7,6 @@ module Editor
         @tabs = []
       end
       
-      def root_item
-        @parent.root_item
-      end
-      
       def add_tab tab, label, body
         @tabs << tab
         tab.label = label