mini-DMS: Filesystem-Backend: undef-Warnung vermeiden
[kivitendo-erp.git] / templates / webpages / requirement_spec / show.html
index 31c93bb..3cd23ef 100644 (file)
@@ -1,33 +1,48 @@
-[%- USE JSON -%][%- USE HTML %][%- USE L %][%- USE LxERP %][%- USE P -%]
+[%- USE JSON -%][%- USE HTML %][%- USE L %][%- USE LxERP %][%- USE P -%][%- USE JavaScript -%]
+[% SET sections = SELF.requirement_spec.sections_sorted || [] %]
 
 [%- INCLUDE 'common/flash.html' %]
 
-<h1>[%- HTML.escape(SELF.requirement_spec.displayable_name('format', 'with_customer')) %]
-  [% LxERP.t8("for") %]
-  [% HTML.escape(SELF.requirement_spec.customer.displayable_name) -%]
-</h1>
-
-[%- L.hidden_tag('requirement_spec_id', SELF.requirement_spec.id) -%]
-
-<div id="requirement_spec_version">
-  [%- INCLUDE 'requirement_spec/_version.html' requirement_spec=SELF.requirement_spec -%]
-</div>
-
-<div id="column-container">
- <div id="tree-column">
-  <div id="tree"></div>
- </div>
-
- <div id="content-column" class="clearfix">
-  [% L.hidden_tag('current_content_type', SELF.requirement_spec_item.id ? 'section' : '') %]
-  [% L.hidden_tag('current_content_id',   SELF.requirement_spec_item.id) %]
-
-  <div id="column-content">
-   [%- IF SELF.requirement_spec_item -%]
-    [%- INCLUDE 'requirement_spec_item/_section.html' requirement_spec_item=SELF.requirement_spec_item -%]
-   [%- ELSE -%]
-    [%- INCLUDE 'requirement_spec_item/_no_section.html' -%]
-   [%- END -%]
+[%- INCLUDE 'requirement_spec/_header.html' %]
+
+[%- L.hidden_tag('requirement_spec_id', SELF.requirement_spec.id, 'data-is-template'=(SELF.requirement_spec.is_template ? 1 : 0)) -%]
+
+<div id="requirement_spec_tabs" class="tabwidget">
+ <ul>
+  <li id="tab-header-function-block"><a href="#function-blocks-tab">[%- LxERP.t8("Content") %]</a></li>
+  <li id="tab-header-basic-settings"><a href="controller.pl?action=RequirementSpec/ajax_show_basic_settings&id=[% HTML.url(SELF.requirement_spec.id) %]">[%- LxERP.t8("Basic settings") %]</a></li>
+  <li id="tab-header-time-cost-estimate"><a href="controller.pl?action=RequirementSpec/ajax_show_time_and_cost_estimate&id=[% HTML.url(SELF.requirement_spec.id) %]">[%- LxERP.t8("Time and price estimate") %]</a></li>
+  <li id="tab-header-additional-parts"><a href="controller.pl?action=RequirementSpecPart/show&requirement_spec_id=[% HTML.url(SELF.requirement_spec.id) %]">[%- LxERP.t8("Additional articles") %]</a></li>
+  [%- UNLESS SELF.requirement_spec.is_template %]
+   <li id="tab-header-versions"><a href="controller.pl?action=RequirementSpecVersion/list&requirement_spec_id=[% HTML.url(SELF.requirement_spec.id) %]">[%- LxERP.t8("Versions") %]</a></li>
+   <li id="tab-header-quotations-orders"><a href="[% SELF.url_for(controller='RequirementSpecOrder', action='list', requirement_spec_id=SELF.requirement_spec.id) %]">[%- LxERP.t8("Quotations and orders") %]</a></li>
+  [%- END %]
+ </ul>
+
+ <div id="function-blocks-tab" class="section-context-menu">
+  [%- UNLESS SELF.requirement_spec.is_template %]
+   <div id="requirement_spec_version">
+    [%- INCLUDE 'requirement_spec/_version.html' requirement_spec=SELF.requirement_spec -%]
+   </div>
+  [%- END %]
+
+  <div id="column-container" class="clearfix">
+   <div id="tree-column">
+    <div id="tree"></div>
+   </div>
+
+   <div id="content-column" class="clearfix">
+    [% L.hidden_tag('current_content_type', SELF.requirement_spec_item.id ? 'section' : '') %]
+    [% L.hidden_tag('current_content_id',   SELF.requirement_spec_item.id) %]
+
+    <div id="column-content">
+     [%- IF SELF.requirement_spec_item -%]
+      [%- INCLUDE 'requirement_spec_item/_section.html' requirement_spec_item=SELF.requirement_spec_item -%]
+     [%- ELSE -%]
+      [%- INCLUDE 'requirement_spec_item/_no_section.html' -%]
+     [%- END -%]
+    </div>
+   </div>
   </div>
  </div>
 </div>
@@ -40,8 +55,8 @@ $(function() {
       metadata: { type: "text-blocks-front" },
       attr:     { id: "tb-front", class: "text-block-context-menu" },
       children: [
-[% FOREACH tb = SELF.requirement_spec.text_blocks_for_position(0) %]
- [% P.requirement_spec_text_block_jstree_data(tb).json %][% IF !loop.last %],[% END %]
+[% FOREACH tb = SELF.requirement_spec.text_blocks_sorted(output_position=0) %]
+ [% tb.presenter.jstree_data.json %][% IF !loop.last %],[% END %]
 [% END %]
       ]},
 
@@ -49,8 +64,8 @@ $(function() {
       metadata: { type: "sections" },
       attr:     { id: "sections", class: "section-context-menu" },
       children: [
-[% FOREACH section = SELF.requirement_spec.sections %]
- [% P.requirement_spec_item_jstree_data(section).json %][% IF !loop.last %],[% END %]
+[% FOREACH section = sections %]
+ [% section.presenter.jstree_data.json %][% IF !loop.last %],[% END %]
 [% END %]
       ]},
 
@@ -58,94 +73,33 @@ $(function() {
       metadata: { type: "text-blocks-back" },
       attr:     { id: "tb-back", class: "text-block-context-menu" },
       children: [
-[% FOREACH tb = SELF.requirement_spec.text_blocks_for_position(1) %]
- [% P.requirement_spec_text_block_jstree_data(tb).json %][% IF !loop.last %],[% END %]
+[% FOREACH tb = SELF.requirement_spec.text_blocks_sorted(output_position=1) %]
+ [% tb.presenter.jstree_data.json %][% IF !loop.last %],[% END %]
 [% END %]
-      ]}];
+      ]}
+  ];
 
-  $('#tree').jstree({
-    core: {
-      animation: 0,
-      initially_open: [ "tb-front", "tb-back", "sections"
-[%- FOREACH section = SELF.requirement_spec.sections -%]
+  var initially_open = ['tb-front', 'tb-back', 'sections'
+[%- FOREACH section = sections -%]
         , "fb-[% section.id %]"
  [%- FOREACH function_block = section.children -%]
         , "fb-[% function_block.id -%]"
  [%- END -%]
 [%- END -%]
-    ]},
-    json_data: {
-      data: tree_data
-    },
-    crrm: {
-      move: {
-        check_move: requirement_spec_tree_check_move,
-        open_move:  true
-      }
-    },
-    themes: {
-      theme: "requirement-spec"
-    },
-    plugins: [ "themes", "json_data", "ui", "crrm", "dnd" ]
-  })
-  .bind("move_node.jstree", requirement_spec_tree_node_moved)
-  .bind("click.jstree",     requirement_spec_tree_node_clicked);
+  ];
+
+  kivi.requirement_spec.initialize_requirement_spec({
+      initially_open:          initially_open
+    , tree_data:               tree_data
+    , is_template:             [% SELF.requirement_spec.is_template ? 'true' : 'false' %]
+    , html_template_exists:    [% SELF.html_template                ? 'true' : 'false' %]
 [% IF SELF.requirement_spec_item %]
-  $.jstree._reference("#tree").select_node('#fb-[% SELF.requirement_spec_item.id %]', true);
+    , initially_selected_node: '#fb-[% SELF.requirement_spec_item.id %]'
 [% END %]
-});
-
-function ask_delete_text_block(key, opt) {
-  if (confirm("[% LxERP.t8("Are you sure?") %]"))
-    standard_text_block_ajax_call(key, opt);
-  return true;
-}
-
-function ask_delete_item(key, opt) {
-  if (confirm("[% LxERP.t8("Are you sure?") %]"))
-    standard_item_ajax_call(key, opt);
-  return true;
-}
-
-$(function(){
-  $.contextMenu({
-    selector: '.text-block-context-menu',
-    items: {
-      add:    { name: "[% LxERP.t8('Add text block') %]",    icon: "add",    callback: standard_text_block_ajax_call },
-      edit:   { name: "[% LxERP.t8('Edit text block') %]",   icon: "edit",   callback: standard_text_block_ajax_call, disabled: disable_edit_text_block_commands },
-      delete: { name: "[% LxERP.t8('Delete text block') %]", icon: "delete", callback: ask_delete_text_block,         disabled: disable_edit_text_block_commands },
-      sep1:   "---------",
-      copy:   { name: "[% LxERP.t8('Copy') %]",              icon: "copy",  disabled: disable_edit_text_block_commands },
-      paste:  { name: "[% LxERP.t8('Paste') %]",             icon: "paste", disabled: disable_edit_text_block_commands }
-    }
-  });
-
-
-  $.contextMenu({
-    selector: '.section-context-menu',
-    items: {
-      add_section:        { name: "[% LxERP.t8('Add section') %]",        icon: "add",    callback: standard_item_ajax_call },
-      add_function_block: { name: "[% LxERP.t8('Add function block') %]", icon: "add",    callback: standard_item_ajax_call, disabled: disable_edit_item_commands },
-      sep1:               "---------",
-      edit:               { name: "[% LxERP.t8('Edit') %]",               icon: "edit",   callback: standard_item_ajax_call, disabled: disable_edit_item_commands },
-      delete:             { name: "[% LxERP.t8('Delete') %]",             icon: "delete", callback: ask_delete_item,         disabled: disable_edit_item_commands },
-      sep2:               "---------",
-      copy:               { name: "[% LxERP.t8('Copy') %]",               icon: "copy",  disabled: disable_edit_item_commands },
-      paste:              { name: "[% LxERP.t8('Paste') %]",              icon: "paste", disabled: disable_edit_item_commands }
-    }
-  });
-
-  $.contextMenu({
-    selector: '.function-block-context-menu,.sub-function-block-context-menu',
-    items: {
-      add_function_block:     { name: "[% LxERP.t8('Add function block') %]",     icon: "add", callback: standard_item_ajax_call },
-      add_sub_function_block: { name: "[% LxERP.t8('Add sub function block') %]", icon: "add", callback: standard_item_ajax_call },
-      sep1:                   "---------",
-      edit:                   { name: "[% LxERP.t8('Edit') %]",   icon: "edit",   callback: standard_item_ajax_call, disabled: disable_edit_item_commands },
-      delete:                 { name: "[% LxERP.t8('Delete') %]", icon: "delete", callback: ask_delete_item,         disabled: disable_edit_item_commands },
-      sep2:                   "---------",
-      copy:                   { name: "[% LxERP.t8('Copy') %]",  icon: "copy",  disabled: disable_edit_item_commands },
-      paste:                  { name: "[% LxERP.t8('Paste') %]", icon: "paste", disabled: disable_edit_item_commands }
+    , time_based_units: {
+      [% FOREACH unit = SELF.time_based_units %]
+       [% UNLESS loop.first %], [% END %] "[% JavaScript.escape(unit.name) %]": true
+      [% END %]
     }
   });
 });