1 [%- USE JSON -%][%- USE HTML %][%- USE L %][%- USE LxERP %][%- USE P -%]
3 <h1>[%- HTML.escape(SELF.requirement_spec.displayable_name('format', 'with_customer')) %]
5 [% HTML.escape(SELF.requirement_spec.customer.displayable_name) -%]
8 [%- L.hidden_tag('requirement_spec_id', SELF.requirement_spec.id) -%]
10 <div id="requirement_spec_version">
11 [%- INCLUDE 'requirement_spec/_version.html' requirement_spec=SELF.requirement_spec -%]
14 <div id="column-container">
15 <div id="tree-column">
19 <div id="content-column" class="clearfix">
20 [% L.hidden_tag('current_content_type', SELF.requirement_spec_item.id ? 'section' : '') %]
21 [% L.hidden_tag('current_content_id', SELF.requirement_spec_item.id) %]
23 <div id="column-content">
24 [%- IF SELF.requirement_spec_item -%]
25 [%- INCLUDE 'requirement_spec_item/_single_section.html' requirement_spec_item=SELF.requirement_spec_item -%]
28 [%#- render :partial => 'requirement_spec_items/no_section' -%]
34 <script type="text/javascript">
37 { data: [% JSON.json(LxERP.t8("Text blocks front")) %],
38 metadata: { type: "text-blocks-front" },
39 attr: { id: "tb-front", class: "text-block-context-menu" },
41 [% FOREACH tb = SELF.requirement_spec.text_blocks_for_position(0) %]
42 [% P.requirement_spec_text_block_jstree_data(tb).json %][% IF !loop.last %],[% END %]
47 { data: [% JSON.json(LxERP.t8("Sections")) %],
48 metadata: { type: "sections" },
49 attr: { id: "sections" },
52 [% FOREACH section = SELF.requirement_spec.sections %]
53 [% P.requirement_spec_item_jstree_data(section).json %][% IF !loop.last %],[% END %]
58 { data: [% JSON.json(LxERP.t8("Text blocks back")) %],
59 metadata: { type: "text-blocks-back" },
60 attr: { id: "tb-back", class: "text-block-context-menu" },
62 [% FOREACH tb = SELF.requirement_spec.text_blocks_for_position(1) %]
63 [% P.requirement_spec_text_block_jstree_data(tb).json %][% IF !loop.last %],[% END %]
73 initially_open: [ "tb-front", "tb-back", "sections"
74 [%- FOREACH section = SELF.requirement_spec.sections -%]
75 , "fb-[% section.id %]"
76 [%- FOREACH function_block = section.children -%]
77 , "fb-[% function_block.id -%]"
87 check_move: requirement_spec_tree_check_move,
92 theme: "requirement-spec"
94 plugins: [ "themes", "json_data", "ui", "crrm", "dnd" ]
96 .bind("move_node.jstree", requirement_spec_tree_node_moved)
97 .bind("click.jstree", requirement_spec_tree_node_clicked);
98 [%- IF SELF.requirement_spec_item -%]
99 $.jstree._reference("#tree").select_node('fb-[% SELF.requirement_spec_item.id %]', true);
103 function ask_delete_text_block(key, opt) {
104 if (confirm("[% LxERP.t8("Are you sure?") %]"))
105 standard_text_block_ajax_call(key, opt);
111 selector: '.text-block-context-menu',
113 add: { name: "[% LxERP.t8('Add text block') %]", icon: "add", callback: standard_text_block_ajax_call },
114 edit: { name: "[% LxERP.t8('Edit text block') %]", icon: "edit", callback: standard_text_block_ajax_call, disabled: disable_edit_text_block_commands },
115 delete: { name: "[% LxERP.t8('Delete text block') %]", icon: "delete", callback: ask_delete_text_block, disabled: disable_edit_text_block_commands },
117 copy: { name: "[% LxERP.t8('Copy') %]", icon: "copy", disabled: disable_edit_text_block_commands },
118 paste: { name: "[% LxERP.t8('Paste') %]", icon: "paste", disabled: disable_edit_text_block_commands }