-[%- 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' %]
[%- INCLUDE 'requirement_spec/_header.html' %]
-[%- L.hidden_tag('requirement_spec_id', SELF.requirement_spec.id) -%]
+[%- L.hidden_tag('requirement_spec_id', SELF.requirement_spec.id, 'data-is-template'=(SELF.requirement_spec.is_template ? 1 : 0)) -%]
-<div class="tabwidget">
+<div id="requirement_spec_tabs" class="tabwidget">
<ul>
- <li><a href="#function-blocks-tab">[%- LxERP.t8("Content") %]</a></li>
- <li><a href="controller.pl?action=RequirementSpec/ajax_edit&id=[% HTML.url(SELF.requirement_spec.id) %]">[%- LxERP.t8("Basic settings") %]</a></li>
+ <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">
- <div id="requirement_spec_version">
+ <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>
+ </div>
+ [%- END %]
<div id="column-container" class="clearfix">
<div id="tree-column">
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 %]
]},
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 %]
]},
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 %]
-
- create_requirement_spec_context_menus();
+ , time_based_units: {
+ [% FOREACH unit = SELF.time_based_units %]
+ [% UNLESS loop.first %], [% END %] "[% JavaScript.escape(unit.name) %]": true
+ [% END %]
+ }
+ });
});
-->