[%- 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 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>
+ [%- UNLESS SELF.requirement_spec.is_template %]
+ <li><a href="controller.pl?action=RequirementSpec/ajax_show_time_and_cost_estimate&id=[% HTML.url(SELF.requirement_spec.id) %]">[%- LxERP.t8("Time and cost estimate") %]</a></li>
+ <li><a href="controller.pl?action=RequirementSpecVersion/list&requirement_spec_id=[% HTML.url(SELF.requirement_spec.id) %]">[%- LxERP.t8("Versions") %]</a></li>
+ [%- END %]
+ </ul>
+
+ <div id="function-blocks-tab">
+ [%- 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>
<script type="text/javascript">
<!--
$(function() {
- var tree_data = [
- { data: [% JSON.json(LxERP.t8("Text blocks front")) %],
- 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 %]
-[% END %]
- ]},
+ var initially_open = ['sections'
+[%- FOREACH section = SELF.requirement_spec.sections -%]
+ , "fb-[% section.id %]"
+ [%- FOREACH function_block = section.children -%]
+ , "fb-[% function_block.id -%]"
+ [%- END -%]
+[%- END -%]
+ ];
- { data: [% JSON.json(LxERP.t8("Sections")) %],
+ var tree_data = [{
+ data: [% JSON.json(LxERP.t8("Sections")) %],
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 %]
[% END %]
- ]},
+ ]}];
- { data: [% JSON.json(LxERP.t8("Text blocks back")) %],
+[% UNLESS SELF.requirement_spec.is_template %]
+ tree_data.unshift({
+ data: [% JSON.json(LxERP.t8("Text blocks front")) %],
+ metadata: { type: "text-blocks-front" },
+ attr: { id: "tb-front", class: "text-block-context-menu" },
+ children: [
+[% FOREACH tb = SELF.requirement_spec.text_blocks_sorted(output_position=0) %]
+ [% P.requirement_spec_text_block_jstree_data(tb).json %][% IF !loop.last %],[% END %]
+[% END %]
+ ]});
+
+ tree_data.push({
+ data: [% JSON.json(LxERP.t8("Text blocks back")) %],
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) %]
+[% FOREACH tb = SELF.requirement_spec.text_blocks_sorted(output_position=1) %]
[% P.requirement_spec_text_block_jstree_data(tb).json %][% IF !loop.last %],[% END %]
[% END %]
- ]}];
+ ]});
+
+ initially_open = initially_open.concat(['tb-front', 'tb-back']);
+[% END %]
$('#tree').jstree({
core: {
animation: 0,
- initially_open: [ "tb-front", "tb-back", "sections"
-[%- FOREACH section = SELF.requirement_spec.sections -%]
- , "fb-[% section.id %]"
- [%- FOREACH function_block = section.children -%]
- , "fb-[% function_block.id -%]"
- [%- END -%]
-[%- END -%]
- ]},
+ initially_open: initially_open,
+ },
json_data: {
data: tree_data
},
crrm: {
move: {
- check_move: requirement_spec_tree_check_move,
+ check_move: kivi.requirement_spec.tree_check_move,
open_move: true
}
},
},
plugins: [ "themes", "json_data", "ui", "crrm", "dnd" ]
})
- .bind("move_node.jstree", requirement_spec_tree_node_moved)
- .bind("click.jstree", requirement_spec_tree_node_clicked);
+ .bind("move_node.jstree", kivi.requirement_spec.tree_node_moved)
+ .bind("click.jstree", kivi.requirement_spec.tree_node_clicked);
[% IF SELF.requirement_spec_item %]
$.jstree._reference("#tree").select_node('#fb-[% SELF.requirement_spec_item.id %]', true);
[% 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_add_function_block_command },
- 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 }
- }
- });
+ kivi.requirement_spec.create_context_menus([% SELF.requirement_spec.is_template ? 'true' : 'false' %]);
});
-->