//= require textchange
//= require underscore
//= require backbone
+//= require_directory ./manifest
+//= require_directory ./views
//= require_directory ./manifest/work
//= require pettanr_editor
//= require pettanr_sheeter
--- /dev/null
+class Filer\r
+ class Symbol\r
+ constructor: (conf) ->\r
+ @conf = conf\r
+ visible: () ->\r
+ true\r
+ class FileItem\r
+ constructor: (item) ->\r
+ @item = item\r
+ symbol: () ->\r
+ @item\r
+ caption: () ->\r
+ summary: () ->\r
+ icon: () ->\r
+ date: () ->\r
+ edit: () ->\r
+ \r
+ constructor: (item_name, items) ->\r
+ @item_name = item_name\r
+ @items = items\r
+ @symbol = new Symbol({ })\r
+ @caption = new Symbol({ })\r
+ @summary = new Symbol({ })\r
+ @icon = new Symbol({ })\r
+ @date = new Symbol({ })\r
+ @edit = new Symbol({ })\r
+ @file_items = _.map @items, (item) -> \r
+ new FileItem(item)\r
+ \r
+ model_name: () ->\r
+ header: () ->\r
+ paginate: () ->\r
+\r
+@Filer = Filer\r
$ ->\r
+ _.templateSettings = {\r
+ interpolate: /\<\&\=(.+?)\&\>/g,\r
+ evaluate: /\<\&(.+?)\&\>/g\r
+ }\r
+ #filer = new Filer('tt', ['ea','eb','ec'])\r
+ #view = new FilerView( { filer: filer } )\r
confirm_confirm_confirm = () ->\r
confirm( )\r
editor = window.PettanrEditor\r
--- /dev/null
+FilerView = Backbone.View.extend({\r
+ el: "#jfiler"\r
+ ,initialize: () ->\r
+ this.render()\r
+ ,render: () ->\r
+ template = _.template( $("#jfiler_template").html(), { filer: this.options.filer } )\r
+ this.$el.html( template )\r
+ ,events: {\r
+ "click #tabs-label": "eve"\r
+ }\r
+ ,eve: () ->\r
+ confirm( 'hoo' )\r
+ })\r
+\r
+@FilerView = FilerView\r
def new
@panel = Panel.new
@panel.supply_default
-
respond_to do |format|
- format.html
+ format.html {
+ @editor = Editor::Editor.new @panel, @operators
+ render :template => 'templates/r/editor/editor', :locals => {
+ :editor => @editor
+ }
+ }
format.js
format.json { render json: @panel.panel_elements_as_json }
end
def edit
@panel = Panel.edit(params[:id], @operators)
respond_to do |format|
- format.html
+ format.html {
+ }
format.js
end
end
+<%= render 'system/jfiler' %>
+<script type="text/template" id="test_template">
+ <label>test</label>
+ <div id="tabs-label">
+ click me
+ </div>
+ <& _.each(obj.items(), function(item) { &>
+ <& if (item.visible() == 2) { &>
+ true
+ <& } &>
+ <& }); &>
+</script>
<div id="template" >
</div>
+<div id="jfiler" >
+</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>
</div>
<% end %>
</div>
- <div id="tabs-2">
- <div id="elements-tabs">
- <ul>
- <% @panel.panel_elements.each do |elm| %>
- <%= render 'element_tab', :elm => elm %>
- <% end %>
- </ul>
- <% mounted = true %>
- <% @panel.panel_elements.each do |element| %>
- <div <%= raw element.tag_attr(:tab_panel) -%>>
- <div id="elements-tabs-<%= element.t -%>">
- <% form_manager = Pettanr::Application::manifest.form_managers[element.form_name] %>
- <% form = form_manager.open element, @operators, mounted %>
- <%= render 'element_form', :form => form %>
- <%= hidden_field_tag '_destroy', '', element.field_tag_attributes(:_destroy, 0) %>
- </div>
- </div>
- <% end %>
- </div>
- </div>
+ <div id="tabs-2">
+<div id="elements-tabs">
+<ul>
+<% @panel.panel_elements.each do |elm| %>
+<%= render 'element_tab', :elm => elm %>
+<% end %>
+</ul>
+<% mounted = true %>
+<% @panel.panel_elements.each do |element| %>
+<div <%= raw element.tag_attr(:tab_panel) -%>>
+<div id="elements-tabs-<%= element.t -%>">
+<% form_manager = Pettanr::Application::manifest.form_managers[element.form_name] %>
+<% form = form_manager.open element, @operators, mounted %>
+<%= render 'element_form', :form => form %>
+<%= hidden_field_tag '_destroy', '', element.field_tag_attributes(:_destroy, 0) %>
+</div>
+</div>
+<% end %>
+</div>
+</div>
<div id="tabs-3">
<div class="tsort-box">
<ul class="tsort tsort-tabs-nav" <%= raw @panel.tag_attr(:tsort) -%>>
--- /dev/null
+<div id="tabs-2">
+ <div id="elements-tabs">
+ <ul>
+ <% editor.elements.each do |elm| %>
+ <%= render 'element_tab', :elm => elm %>
+ <% end %>
+ </ul>
+ <% editor.element_tabs.each do |element_tab| %>
+ <div <%= raw element_tab.element.tag_attr(:tab_panel) -%>>
+ <div id="elements-tabs-<%= element.t -%>">
+ <%= render 'element_form', :form => element_tab.form(true) %>
+ <%= hidden_field_tag '_destroy', '', element_tab.element.field_tag_attributes(:_destroy, 0) %>
+ </div>
+ </div>
+ <% end %>
+ </div>
+</div>
--- /dev/null
+<script type="text/template" id="jfiler_template">
+<div>
+ <&= filer.header &>
+</div>
+<ul class="filer">
+ <li id="" class="filer-head filer-head-<&= filer.model_name() &>">
+ <div id="" class="filer-head-symbol">
+ symbol
+ </div>
+ <& if (filer.caption.visible()) { &>
+ <div id="" class="filer-head-caption">
+ caption
+ </div>
+ <& } &>
+ <& if (filer.summary.visible()) { &>
+ <div id="" class="filer-head-summary">
+ summary
+ </div>
+ <& } &>
+ <div id="" class="filer-head-icon">
+ icon
+ </div>
+ <div id="" class="filer-head-date">
+ date
+ </div>
+ <& if (filer.edit.visible()) { &>
+ <div id="" class="filer-head-edit">
+ edit
+ </div>
+ <& } &>
+ </li>
+ <& _.each(filer.file_items, function(file_item) { &>
+ <li id="" class="filer-item filer-item-<&= filer.model_name() &>">
+ <div id="" class="filer-item-symbol">
+ <&= file_item.symbol() &>
+ </div>
+ <& if (filer.caption.visible()) { &>
+ <div id="" class="filer-item-caption">
+ <&= file_item.caption() &>
+ </div>
+ <& } &>
+ <& if (filer.summary.visible()) { &>
+ <div id="" class="filer-item-summary">
+ <&= file_item.summary() &>
+ </div>
+ <& } &>
+ <div id="" class="filer-item-icon">
+ <&= file_item.icon() &>
+ </div>
+ <div id="" class="filer-item-date">
+ <&= file_item.date() &>
+ </div>
+ <& if (filer.edit.visible()) { &>
+ <div id="" class="filer-item-edit">
+ <&= file_item.edit() &>
+ </div>
+ <& } &>
+ </li>
+ <& }); &>
+</ul>
+<div class="row_break">
+</div>
+<& if (filer.paginate()) { &>
+ <&= filer.paginate &>
+<& } &>
+</script>
--- /dev/null
+<div id="tabs-3">
+ <div class="tsort-box">
+ <ul class="board-labels tsort tsort-tabs-nav" <%= raw @panel.tag_attr(:tsort) -%>>
+ <% bay.boards.each do |board| %>
+ <%= board.label render elm.path_name + '/element_face', :elm => elm %>
+ <li <%= raw elm.tag_attr(:tsort) -%>>
+ <div class="elements-tab">
+ </div>
+ </li>
+ <% end %>
+ </ul>
+ </div>
+ <div class="scenario" <%= raw @panel.tag_attr(:scenario) -%>>
+ <% @panel.panel_elements.each do |elm| %>
+ <div <%= raw elm.tag_attr() -%>>
+ <%= render elm.scenario_template, :elm => elm, :no_attr => 0 %>
+ </div>
+ <% end %>
+ </div>
+ <div class="tsort-row-break">
+ </div>
+</div>
--- /dev/null
+
+<div id="tabs" class="panel-editor" panel_id="<%= @panel.tag_panel_id -%>" current="1">
+
+ <% dock.bodies.each do |body| %>
+ <%= render 'templates/r/editor/dock_label', :label => body.label %>
+ <% end %>
+ <% dock.bodies.each do |body| %>
+ <%= render body.bay.template_name, :bay => body.bay %>
+ <% end %>
+</div>
--- /dev/null
+<li id="<%= label.label_id %>">
+ <a href="#<%= label.bay_id %>">
+ <%= label.caption %>
+ </a>
+</li>
--- /dev/null
+
+<div class="generator">
+
+ <%= form_for(generator.root_item, :html => {:jqform => 'pettanr-panel-form'}) do |f| %>
+ <%= render 'system/error_explanation', :obj => generator.root_item %>
+
+ <%= text_field_tag "json", '', :id => 'pettanr-panel-json' %>
+ <div>
+ <%= submit_tag t('panels.create_from_json'), :id => 'pettanr-panel-submit' -%>
+ </div>
+ <% end %>
+</div>
--- /dev/null
+<div id="<%= bay.bay_id %>">
+ <%# render bucket_template_name, :bucket => bay.bucket %>
+</div>
--- /dev/null
+<div class="editor">
+ <%= render 'templates/r/editor/dock', :dock => editor.dock %>
+ <%= render 'templates/r/editor/generator', :generator => editor.generator %>
+ <div id="writing_formats">
+ <% WritingFormat.enable_list().each do |wf| %>
+ <div id="writing_format-<%= wf.id -%>" writing_format_id="<%= wf.id -%>" writing_format_engine_name="<%= wf.engine_name -%>">
+ </div>
+ <% end %>
+ </div>
+ <div id="speech_balloon_templates">
+ <% SpeechBalloonTemplate.enable_list().each do |sbt| %>
+ <div id="speech_balloon_template-<%= sbt.id -%>" speech_balloon_template_id="<%= sbt.id -%>" engine_name="<%= sbt.engine_name -%>" settings="<%= sbt.parsed_settings.to_json -%>">
+ </div>
+ <% end %>
+ </div>
+ <div <%= raw @panel.tag_attr('popup') -%> style="display: none;" >
+ </div>
+</div>
# Version of your assets, change this if you want to expire all your assets
config.assets.version = '1.0'
+ #config.autoload_paths += Dir["#{config.root}/lib/validators/*", "#{config.root}/lib/editor/*", "#{config.root}/lib/manifest/*"]
config.autoload_paths += %W(#{config.root}/lib/validators)
def self.manifest=(arg)
require 'content'
require 'element'
require 'element_part'
+require 'editor/editor'
# Initialize the rails application
Pettanr::Application.initialize!
Pettanr::Application.manifest.init
Pettanr::Application.configure do
+
+ ActiveSupport::Dependencies.autoload_paths << File::join( Rails.root, 'lib')
+ ActiveSupport::Dependencies.explicitly_unloadable_constants << 'Editor'
# Settings specified here will take precedence over those in config/application.rb
# In the development environment your application's code is reloaded on
--- /dev/null
+module Editor
+ require "editor/editor"
+ require "editor/elements"
+ require "editor/tsort"
+ require "editor/zsort"
+end
--- /dev/null
+module Editor
+
+ class Editor
+ class Dock
+ attr_accessor :editor, :bodies
+ def initialize editor
+ @editor = editor
+ @root_dock_body = DockBody.new(self, 0, )
+ @root_dock_body.label = DockLabel.new(@root_dock_body, 'panel')
+ @root_dock_body.bay = RootBay.new(@root_dock_body)
+
+ @element_dock_body = DockBody.new(self, 0, )
+ @element_dock_body.label = DockLabel.new(@element_dock_body, 'elements')
+ @element_dock_body.bay = ElementBay.new(@element_dock_body)
+
+ @torder_dock_body = DockBody.new(self, 0, )
+ @torder_dock_body.label = DockLabel.new(@torder_dock_body, 'torder')
+ @torder_dock_body.bay = TorderBay.new(@torder_dock_body)
+
+ @zorder_dock_body = DockBody.new(self, 0, )
+ @zorder_dock_body.label = DockLabel.new(@zorder_dock_body, 'zorder')
+ @zorder_dock_body.bay = ZorderBay.new(@zorder_dock_body)
+
+ @new_dock_body = DockBody.new(self, 0, )
+ @new_dock_body.label = DockLabel.new(@new_dock_body, 'new')
+ @new_dock_body.bay = NewBay.new(@new_dock_body)
+
+ @bodies = [
+ @root_dock_body, @element_dock_body, @torder_dock_body, @zorder_dock_body, @new_dock_body
+ ]
+ end
+
+ def root_item
+ @editor.root_item
+ end
+
+ end
+
+ class DockBody
+ attr_accessor :dock, :index, :label, :bay
+ def initialize dock, index
+ @dock = dock
+ @index = index
+ @label = label
+ @bay = bay
+ end
+
+ def root_item
+ @dock.root_item
+ end
+
+ end
+
+ class DockLabel
+ attr_accessor :dock_body, :caption
+ def initialize dock_body, caption
+ @dock_body = dock_body
+ @caption = caption
+ end
+
+ def root_item
+ @dock_body.root_item
+ end
+
+ def index
+ @dock_body.index
+ end
+
+ def label_id
+ "tabs-1-tab"
+ end
+
+ def bay_id
+ @dock_body.bay.bay_id
+ end
+ end
+
+ class Bay
+ attr_accessor :dock_body, :template_name
+ def initialize dock_body
+ @dock_body = dock_body
+ @template_dir = 'templates/r/editor/'
+ @template_name = @template_dir
+ end
+
+ def root_item
+ @dock_body.root_item
+ end
+
+ def index
+ @dock_body.index
+ end
+
+ def label
+ @dock_body.label
+ end
+
+ def label_id
+ self.label.label_id
+ end
+
+ def bay_id
+ "tabs-2"
+ end
+
+ end
+
+ class Board
+ attr_accessor :bay, :board_index, :label, :bucket
+ def initialize bay, board_index, element
+ @bay = bay
+ @board_index = board_index
+ @element = element
+ end
+
+ def root_item
+ @bay.root_item
+ end
+
+ def bay_index
+ @bay.index
+ end
+
+ def header_class
+ ""
+ end
+
+ end
+
+ class BoardLabel
+ def initialize board, caption
+ end
+
+ def class_name
+ "elements-tabs"
+ end
+
+ end
+
+ class SimpleBay < Bay
+ attr_accessor :bucket, :bucket_template_name
+ def initialize dock_body
+ super
+ @template_name = @template_dir + 'simple_bay'
+ @bucket = nil
+ @bucket_template_name = @template_dir + ''
+ end
+
+ end
+
+ class BoardBay < Bay
+ attr_accessor :boards
+ def initialize dock_body
+ super
+ @template_name = @template_dir + 'board_bay'
+ end
+
+ end
+
+ class Bucket
+ def class_name
+ "elements-tabs"
+ end
+
+ end
+
+ class RootBay < SimpleBay
+ def initialize dock_body
+ super
+ form_manager = Pettanr::Application::manifest.form_managers[self.root_item.form_name]
+ mounted = true
+ @bucket = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted
+ @bucket_template_name = @template_dir + 'element_form'
+ end
+ end
+
+ class ElementBay < BoardBay
+ def initialize dock_body
+ super
+ @boards = self.root_item.panel_elements.map {|element|
+ board = ElementBoard.new self, index, element
+ board_label = BoardLabel.new board
+ bucket = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted
+ bucket_template_name = @template_dir + 'element_form'
+ board_bucket = bucket
+ board.label = board_label
+ board.bucket = board_bucket
+ board
+ }
+ end
+
+ end
+
+ class TorderBay < BoardBay
+ def initialize dock_body
+ super
+ @boards = self.root_item.panel_elements.map {|element|
+ board = TorderBoard.new self, index, element
+ board_label = BoardLabel.new board
+ bucket = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted
+ bucket_template_name = @template_dir + 'element_form'
+ board_bucket = bucket
+ board.label = board_label
+ board.bucket = board_bucket
+ board
+ }
+ end
+
+ end
+
+ class ZorderBay < BoardBay
+ def initialize dock_body
+ super
+ @boards = self.root_item.panel_elements.map {|element|
+ board = ZorderBoard.new self, index, element
+ board_label = BoardLabel.new board
+ bucket = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted
+ bucket_template_name = @template_dir + 'element_form'
+ board_bucket = bucket
+ board.label = board_label
+ board.bucket = board_bucket
+ board
+ }
+ end
+
+ end
+
+ class NewBay < BoardBay
+ def initialize dock_body
+ super
+ @boards = self.root_item.panel_elements.map {|element|
+ board = NewBoard.new self, index, element
+ board_label = BoardLabel.new board
+ bucket = form_manager.open self.root_item, @dock_body.dock.editor.operators, mounted
+ bucket_template_name = @template_dir + 'element_form'
+ board_bucket = bucket
+ board.label = board_label
+ board.bucket = board_bucket
+ board
+ }
+ end
+
+ end
+
+ class ElementBoard < Board
+ def class_name
+ "elements-tabs"
+ end
+
+ end
+
+ class TorderBoard < Board
+ def class_name
+ "tsort-box"
+ end
+
+ end
+
+ class ZorderBoard < Board
+ def class_name
+ "zsort-box"
+ end
+
+ end
+
+ class NewBoard < Board
+ end
+
+ class Generator
+ def initialize editor
+ @editor = editor
+ end
+
+ def root_item
+ @editor.root_item
+ end
+
+ end
+
+ attr_accessor :root_item, :dock, :generator, :operators
+ def initialize root_item, operators
+ @root_item = root_item
+ @operators = operators
+ @dock = Dock.new self
+ @generator = Generator.new self
+ end
+
+ #InstanceMethods
+
+ def render view
+ @docks.map {|element|
+ ElementTab.new self, element
+ }
+ end
+ end
+end
--- /dev/null
+module Editor
+ class ElementTab
+ attr :element
+ # table_name
+ def initialize editor, element
+ @editor = editor
+ @element = element
+ end
+
+ #InstanceMethods
+ def element_tab
+ end
+
+ def form mounted
+ form_manager = Pettanr::Application::manifest.form_managers[@element.form_name]
+ form = form_manager.open element, @editor.operators, mounted
+ end
+
+ end
+end
--- /dev/null
+module Editor
+ class Tsort
+ # table_name
+ def initialize item, operators
+ end
+
+ def self.singular
+ self.to_s
+ end
+
+ #InstanceMethods
+
+ def item_name
+ self.class.item_name
+ end
+
+ end
+end
--- /dev/null
+module Editor
+ class Zsort
+ # table_name
+ def initialize item, operators
+ end
+
+ def self.singular
+ self.to_s
+ end
+
+ #InstanceMethods
+
+ def item_name
+ self.class.item_name
+ end
+
+ end
+end
-require "manifest/manifest"
-require "manifest/controller"
-require "manifest/model"
-require "manifest/list"
-require "manifest/profiler"
-require "manifest/filer"
-require "manifest/form"
+require_dependency "manifest/manifest"
+require_dependency "manifest/controller"
+require_dependency "manifest/model"
+require_dependency "manifest/list"
+require_dependency "manifest/profiler"
+require_dependency "manifest/filer"
+require_dependency "manifest/form"