Revision 1467b6f2
Von Hans Peter Schlaepfer vor mehr als 5 Jahren hinzugefügt
templates/webpages/requirement_spec_item/_function_block.html | ||
---|---|---|
1 |
[%- USE HTML -%][%- USE LxERP -%][%- USE P -%][%- USE L -%] |
|
1 |
[%- USE HTML -%] |
|
2 |
[%- USE LxERP -%] |
|
3 |
[%- USE P -%] |
|
4 |
[%- USE L -%] |
|
2 | 5 |
<div id="function-block-[% requirement_spec_item.id %]" class="function-block[%- IF requirement_spec_item.is_flagged -%] flagged[%- END -%]"> |
3 | 6 |
|
4 | 7 |
<div id="function-block-content-[%- requirement_spec_item.id -%]" class="function-block-content function-block-context-menu"> |
5 | 8 |
|
6 | 9 |
[% INCLUDE 'requirement_spec_item/_function_block_content_top.html' id_prefix='' %] |
10 |
[% INCLUDE 'requirement_spec_item/_function_block_content_bottom.html' id_prefix='' %] |
|
11 |
|
|
12 |
|
|
13 |
<div class="sub-function-block-container" id="sub-function-block-container-[%- requirement_spec_item.id -%]"[%- IF !requirement_spec_item.children.size -%] style="display: none"[%- END -%]> |
|
14 |
<div class="sub-function-block-header" id="sub-function-block_header_[%- requirement_spec_item.id -%]"> |
|
15 |
[%- LxERP.t8("Sub function blocks") -%] |
|
16 |
</div> |
|
17 |
[%- FOREACH sub_function_block = requirement_spec_item.children_sorted -%] |
|
18 |
[%- INCLUDE 'requirement_spec_item/_sub_function_block.html' requirement_spec_item=sub_function_block -%] |
|
19 |
[%- END -%] |
|
20 |
</div> |
|
21 |
|
|
22 |
|
|
23 |
|
|
24 |
|
|
25 |
|
|
26 |
|
|
7 | 27 |
|
8 |
<div class="sub-function-block-container" id="sub-function-block-container-[%- requirement_spec_item.id -%]"[%- IF !requirement_spec_item.children.size -%] style="display: none"[%- END -%]> |
|
9 |
<div class="sub-function-block-header" id="sub-function-block_header_[%- requirement_spec_item.id -%]"> |
|
10 |
[%- LxERP.t8("Sub function blocks") -%] |
|
11 |
</div> |
|
12 |
[%- FOREACH sub_function_block = requirement_spec_item.children_sorted -%] |
|
13 |
[%- INCLUDE 'requirement_spec_item/_sub_function_block.html' requirement_spec_item=sub_function_block -%] |
|
14 |
[%- END -%] |
|
15 | 28 |
</div> |
16 | 29 |
|
17 |
[% INCLUDE 'requirement_spec_item/_function_block_content_bottom.html' id_prefix='' %] |
|
30 |
|
|
31 |
|
|
32 |
|
|
33 |
|
|
34 |
|
|
35 |
|
|
36 |
|
|
18 | 37 |
</div> |
19 | 38 |
</div> |
templates/webpages/requirement_spec_item/_function_block_content_bottom.html | ||
---|---|---|
1 |
[%- USE LxERP -%][%- USE P -%]<div id="[% id_prefix %]function-block-content-bottom-[% requirement_spec_item.id %]" class="smaller" style="text-align:right"> |
|
2 |
[%- IF requirement_spec_item.dependencies.size -%] |
|
3 |
<span class="gray"> |
|
4 |
[%- LxERP.t8("Dependencies") -%]: [%- requirement_spec_item.presenter.requirement_spec_item_dependency_list -%] |
|
5 |
</span><br> |
|
6 |
[%- END -%] |
|
7 |
<span class="gray"> |
|
8 |
[%- LxERP.t8("Complexity") -%]: [%- requirement_spec_item.complexity.description -%] |
|
9 |
| |
|
10 |
[%- LxERP.t8("Risk") -%]: [%- requirement_spec_item.risk.description -%] |
|
11 |
| |
|
12 |
[%- LxERP.t8("Time estimate") -%]: [% P.format_man_days(requirement_spec_item.time_estimation, skip_zero=1) %] |
|
13 |
</span> |
|
1 |
[% USE LxERP %] |
|
2 |
[% USE P %] |
|
3 |
<!-- PENDENT: ggf. DIV-Tabelle anwenden --> |
|
4 |
<div id="[% id_prefix %]function-block-content-bottom-[% requirement_spec_item.id %]" class="function-block-properties list"> |
|
14 | 5 |
|
6 |
[% IF requirement_spec_item.dependencies.size %] |
|
7 |
<div> |
|
8 |
<span class="label">[% LxERP.t8("Dependencies") %]:</span> |
|
9 |
<span class="value">[% requirement_spec_item.presenter.requirement_spec_item_dependency_list %]</span> |
|
15 | 10 |
</div> |
11 |
[% END %] |
|
12 |
|
|
13 |
<div> |
|
14 |
<span class="label">[% LxERP.t8("Complexity") %]:</span> |
|
15 |
<span class="value">[% requirement_spec_item.complexity.description %]</span> |
|
16 |
</div> |
|
17 |
|
|
18 |
<div> |
|
19 |
<span class="label">[% LxERP.t8("Risk") %]:</span> |
|
20 |
<span class="value">[% requirement_spec_item.risk.description %]</span> |
|
21 |
</div> |
|
22 |
|
|
23 |
<div> |
|
24 |
<span class="label">[% LxERP.t8("Time estimate") %]:</span> |
|
25 |
<span class="value">[% P.format_man_days(requirement_spec_item.time_estimation, skip_zero=1) %]</span> |
|
26 |
</div> |
|
27 |
|
|
28 |
</div><!-- /.function-block-properties --> |
templates/webpages/requirement_spec_item/_function_block_content_top.html | ||
---|---|---|
1 |
[%- USE HTML -%][%- USE L -%]<div id="[% id_prefix %]function-block-content-top-[% requirement_spec_item.id %]"> |
|
2 |
<div class="function-block-number">[%- HTML.escape(requirement_spec_item.fb_number) -%]</div> |
|
3 |
[%- requirement_spec_item.description_as_restricted_html -%] |
|
1 |
[% USE HTML %] |
|
2 |
[% USE L %] |
|
3 |
<div id="[% id_prefix %]function-block-content-top-[% requirement_spec_item.id %]" class="function-block-header"> |
|
4 |
<div class="function-block-number">[% HTML.escape(requirement_spec_item.fb_number) %]</div> |
|
5 |
<div class="function-block-desc">[% requirement_spec_item.description_as_restricted_html %]</div> |
|
4 | 6 |
</div> |
templates/webpages/requirement_spec_item/_function_block_form.html | ||
---|---|---|
1 |
[%- USE LxERP -%][%- USE L -%][%- USE HTML -%][%- USE JavaScript -%][%- USE P -%][% SET style="width: 500px" %] |
|
1 |
[% USE LxERP %] |
|
2 |
[% USE L %] |
|
3 |
[% USE HTML %] |
|
4 |
[% USE JavaScript %] |
|
5 |
[% USE P %][% SET style="width: 500px" %] |
|
6 |
|
|
2 | 7 |
[% DEFAULT id_base = 'edit_function_block_' _ SELF.item.id %] |
3 |
[%- SET a_options = '' %]
|
|
4 |
[%- IF SELF.item.id %]
|
|
5 |
[%- SET a_options = "to_show: '#" _ SELF.item.item_type _ "-content-top-" _ SELF.item.id _ "'" %]
|
|
6 |
[%- END %]
|
|
7 |
[%- IF SELF.item.item_type == 'sub-function-block' %]
|
|
8 |
[%- SET a_options = a_options ? a_options _ ', ' : a_options %]
|
|
9 |
[%- SET a_options = a_options _ "to_hide_if_empty: '#sub-function-block-container-" _ SELF.item.parent_id _ "'" %]
|
|
10 |
[%- END %]
|
|
8 |
[% SET a_options = '' %] |
|
9 |
[% IF SELF.item.id %] |
|
10 |
[% SET a_options = "to_show: '#" _ SELF.item.item_type _ "-content-top-" _ SELF.item.id _ "'" %]
|
|
11 |
[% END %] |
|
12 |
[% IF SELF.item.item_type == 'sub-function-block' %] |
|
13 |
[% SET a_options = a_options ? a_options _ ', ' : a_options %]
|
|
14 |
[% SET a_options = a_options _ "to_hide_if_empty: '#sub-function-block-container-" _ SELF.item.parent_id _ "'" %]
|
|
15 |
[% END %] |
|
11 | 16 |
<form method="post" id="[% id_base %]_form" class="function-block-form"> |
12 | 17 |
[% L.hidden_tag('form_prefix', id_base, id=id_base _ '_form_prefix') %] |
13 | 18 |
[% L.hidden_tag('id', SELF.item.id, id=id_base _ '_id') %] |
... | ... | |
18 | 23 |
[% L.hidden_tag(id_base _ '.insert_after', insert_after) %] |
19 | 24 |
[% END %] |
20 | 25 |
|
21 |
<div> |
|
22 |
<div style="width: 58%; float: left"> |
|
23 |
<div> |
|
24 |
[%- IF SELF.item.id -%] |
|
25 |
[% LxERP.t8("Description of #1", SELF.item.fb_number) %] |
|
26 |
[%- ELSIF SELF.item.item_type == 'function-block' -%] |
|
27 |
[%- LxERP.t8("Add function block") %] |
|
28 |
[%- ELSE -%] |
|
29 |
[%- LxERP.t8("Add sub function block") %] |
|
30 |
[%- END -%]:<br> |
|
31 |
[% L.textarea_tag(id_base _ '.description_as_restricted_html', SELF.item.description_as_restricted_html, id=id_base _ '_description', rows=8, style="width: 100%", class='texteditor') %] |
|
32 |
</div> |
|
26 |
<div class="rs-form"> |
|
27 |
<table class="tbl-horizontal" class="wi-verywide"> |
|
28 |
<colgroup> <col class="wi-small"><col class="wi-verywide"> </colgroup> |
|
29 |
<caption> |
|
30 |
[% IF SELF.item.id %] |
|
31 |
[% LxERP.t8("Description of #1", SELF.item.fb_number) %] |
|
32 |
[% ELSIF SELF.item.item_type == 'function-block' %] |
|
33 |
[% LxERP.t8("Add function block") %] |
|
34 |
[% ELSE %] |
|
35 |
[% LxERP.t8("Add sub function block") %] |
|
36 |
[% END %] |
|
37 |
</caption> |
|
38 |
<tbody> |
|
39 |
<tr> |
|
40 |
<th class="wi-small-verywide" colspan="2">[% L.textarea_tag(id_base _ '.description_as_restricted_html', SELF.item.description_as_restricted_html, id=id_base _ '_description', rows=8, cols=20, class='wi-wide', class='texteditor') %]</th> |
|
41 |
</tr> |
|
42 |
<tr> |
|
43 |
<th>[% LxERP.t8("Complexity") %]</th> |
|
44 |
<td>[% L.select_tag(id_base _ '.complexity_id', SELF.complexities, title_key='description', default=SELF.item.complexity_id, class='wi-wide') %]</td> |
|
45 |
</tr> |
|
46 |
<tr> |
|
47 |
<th>[% LxERP.t8("Risk") %]</th> |
|
48 |
<td>[% L.select_tag(id_base _ '.risk_id', SELF.risks, title_key='description', default=SELF.item.risk_id, class='wi-wide') %]</td> |
|
49 |
</tr> |
|
50 |
[% IF !SELF.item.children.size %] |
|
51 |
<tr> |
|
52 |
<th>[% LxERP.t8("Time estimate") %]</th> |
|
53 |
<td>[% P.man_days_tag(id_base _ '.time_estimation', SELF.item, class='wi-verysmall') %]</td> |
|
54 |
</tr> |
|
55 |
[% END %] |
|
56 |
<tr> |
|
57 |
<th>[% LxERP.t8("Dependencies") %]</th> |
|
58 |
<td>[% L.select_tag(id_base _ '.dependencies[]', DEPENDENCIES, default=SELECTED_DEPENDENCIES, with_optgroups=1, multiple=1, size=8 class='wi-wide') %]</td> |
|
59 |
</tr> |
|
60 |
</tbody> |
|
61 |
</table> |
|
33 | 62 |
|
34 |
<div style="margin-top: 10px">
|
|
63 |
<div class="buttons">
|
|
35 | 64 |
[% L.ajax_submit_tag('controller.pl?action=RequirementSpecItem/ajax_' _ (SELF.item.id ? 'update' : 'create'), '#' _ id_base _ '_form', LxERP.t8('Save'), id=id_base _ '_submit') %] |
36 |
<a href="#" onclick="kivi.requirement_spec.cancel_edit_item_form('[% id_base %]', { [% a_options %] })">[%- LxERP.t8("Cancel") %]</a> |
|
37 |
</div> |
|
38 |
</div> |
|
39 |
|
|
40 |
<div style="width: 19%; float: left; margin-left: 20px"> |
|
41 |
[%- LxERP.t8("Complexity") %]:<br> |
|
42 |
[%- L.select_tag(id_base _ '.complexity_id', SELF.complexities, title_key='description', default=SELF.item.complexity_id, style="width: 100%") %]<br> |
|
43 |
|
|
44 |
[%- LxERP.t8("Risk") %]:<br> |
|
45 |
[%- L.select_tag(id_base _ '.risk_id', SELF.risks, title_key='description', default=SELF.item.risk_id, style="width: 100%") %]<br> |
|
46 |
|
|
47 |
[%- IF !SELF.item.children.size %] |
|
48 |
[%- LxERP.t8("Time estimate") %]:<br> |
|
49 |
[%- P.man_days_tag(id_base _ '.time_estimation', SELF.item) %] |
|
50 |
[%- END %] |
|
51 |
</div> |
|
52 |
|
|
53 |
<div style="width: 19%; float: left; margin-left: 10px"> |
|
54 |
[%- LxERP.t8("Dependencies") %]:<br> |
|
55 |
[%- L.select_tag(id_base _ '.dependencies[]', DEPENDENCIES, default=SELECTED_DEPENDENCIES, with_optgroups=1, multiple=1, size=8, style="width: 100%") %] |
|
56 |
</div> |
|
57 |
|
|
58 |
<div style="clear: both"></div> |
|
59 |
</div> |
|
65 |
<a href="#" onclick="kivi.requirement_spec.cancel_edit_item_form('[% id_base %]', { [% a_options %] })" class="button neutral">[% LxERP.t8("Cancel") %]</a> |
|
66 |
</div> |
|
67 |
</div><!-- /.wrapper.rs-fb-form --> |
|
60 | 68 |
|
61 |
<p> |
|
62 |
</p> |
|
63 | 69 |
</form> |
templates/webpages/requirement_spec_item/_no_section.html | ||
---|---|---|
1 | 1 |
[%- USE LxERP -%] |
2 | 2 |
<div class="section-context-menu"> |
3 |
<h1>[%- LxERP.t8("No sections created yet") %]</h1>
|
|
3 |
<h2>[%- LxERP.t8("No sections created yet") %]</h2>
|
|
4 | 4 |
|
5 | 5 |
<p> |
6 |
[%- LxERP.t8("No sections have been created so far.") %] |
|
6 |
[%- LxERP.t8("No sections have been created so far.") %]<br>
|
|
7 | 7 |
[% LxERP.t8("Create one from the context menu by right-clicking on this text.") %] |
8 | 8 |
</p> |
9 | 9 |
</div> |
templates/webpages/requirement_spec_item/_section.html | ||
---|---|---|
1 | 1 |
[%- USE HTML -%][%- USE LxERP -%][%- USE L -%] |
2 | 2 |
<div id="section-[% requirement_spec_item.id %]" class="section[%- IF requirement_spec_item.is_flagged -%]flagged[%- END -%]"> |
3 |
<div class="section-context-menu" id="section-header-[% requirement_spec_item.id %]"> |
|
3 |
<div class="section-header section-context-menu" id="section-header-[% requirement_spec_item.id %]">
|
|
4 | 4 |
[%- INCLUDE 'requirement_spec_item/_section_header.html' %] |
5 | 5 |
</div> |
6 | 6 |
|
templates/webpages/requirement_spec_item/_section_form.html | ||
---|---|---|
2 | 2 |
[%- DEFAULT id_base="edit_section" %] |
3 | 3 |
[%- SET style="width: 500px" %] |
4 | 4 |
<form id="[% id_base %]_form"> |
5 |
[%- IF SELF.item.id %] |
|
6 |
[%- SET hidden = '#section-header-' _ SELF.item.id %] |
|
7 |
<h1>[%- LxERP.t8("Edit section #1", SELF.item.fb_number) %]</h1> |
|
8 |
|
|
9 |
[%- ELSE %] |
|
10 |
[%- SET hidden = '#column-content > *' %] |
|
11 |
<h1>[%- LxERP.t8("Add section") %]</h1> |
|
12 | 5 |
|
13 |
[%- END %] |
|
14 | 6 |
|
15 | 7 |
[% L.hidden_tag('form_prefix', id_base id=id_base _ '_form_prefix') %] |
16 | 8 |
[% L.hidden_tag('id', SELF.item.id, id=id_base _ '_id') %] |
... | ... | |
20 | 12 |
[% L.hidden_tag(id_base _ '.insert_after', insert_after) %] |
21 | 13 |
[% END %] |
22 | 14 |
|
23 |
<p> |
|
24 |
[%- LxERP.t8("Title") %]:<br> |
|
25 |
[% L.input_tag(id_base _ '.title', SELF.item.title, style=style) %] |
|
26 |
</p> |
|
15 |
<table class="tbl-horizontal"> |
|
16 |
[%- IF SELF.item.id %] |
|
17 |
[%- SET hidden = '#section-header-' _ SELF.item.id %] |
|
18 |
<caption>[%- LxERP.t8("Edit section #1", SELF.item.fb_number) %]</caption> |
|
19 |
[%- ELSE %] |
|
20 |
[%- SET hidden = '#column-content > *' %] |
|
21 |
<caption>[%- LxERP.t8("Add section") %]</caption> |
|
22 |
[%- END %] |
|
23 |
<tbody> |
|
24 |
<tr> |
|
25 |
<th>[%- LxERP.t8("Title") %]:</th> |
|
26 |
<td>[% L.input_tag(id_base _ '.title', SELF.item.title, style=style) %]</td> |
|
27 |
</tr> |
|
27 | 28 |
|
28 | 29 |
[%- IF SELF.predefined_texts.size %] |
29 |
<p>
|
|
30 |
[%- LxERP.t8("Pre-defined Texts") %]:<br>
|
|
31 |
[%- L.select_tag(id_base _ '_predefined_text_block', SELF.predefined_texts, title_key='description', style=style) %]
|
|
32 |
<a href="#" onclick="insert_selected_predefined_text()">[%- LxERP.t8("Insert") %]</a>
|
|
33 |
</p>
|
|
30 |
<tr>
|
|
31 |
<th>[%- LxERP.t8("Pre-defined Texts") %]:</th>
|
|
32 |
<td>[%- L.select_tag(id_base _ '_predefined_text_block', SELF.predefined_texts, title_key='description', style=style) %] <a href="#" onclick='insert_selected_predefined_text()'>[%- LxERP.t8("Insert") %]</a>
|
|
33 |
</td>
|
|
34 |
</tr>
|
|
34 | 35 |
[%- END %] |
35 | 36 |
|
36 |
<table border="0"> |
|
37 |
<tr valign="top"> |
|
37 |
|
|
38 |
<tr> |
|
39 |
<th>[%- LxERP.t8("Description") %]:</th> |
|
38 | 40 |
<td> |
39 |
[%- LxERP.t8("Description") %]:<br> |
|
40 | 41 |
[% L.textarea_tag(id_base _ '.description_as_restricted_html', SELF.item.description_as_restricted_html, id=id_base _ '_description', rows=8, cols=80, style=style, class='texteditor') %]<br> |
41 |
[% L.ajax_submit_tag('controller.pl?action=RequirementSpecItem/ajax_' _ (SELF.item.id ? 'update' : 'create'), '#' _ id_base _ '_form', LxERP.t8('Save')) %] |
|
42 |
<a href="#" onclick="kivi.requirement_spec.cancel_edit_item_form('[% id_base %]', { to_show: '[% hidden %]' })">[%- LxERP.t8("Cancel") %]</a> |
|
43 | 42 |
</td> |
44 |
|
|
45 |
<td>
|
|
46 |
[% LxERP.t8("Price Factor") %]:<br>
|
|
47 |
[% L.input_tag(id_base _ ".sellprice_factor_as_number", SELF.item.sellprice_factor_as_number, size="6") %]<br>
|
|
43 |
</tr> |
|
44 |
<tr>
|
|
45 |
<td>[% LxERP.t8("Price Factor") %]:</td>
|
|
46 |
<td>[% L.input_tag(id_base _ ".sellprice_factor_as_number", SELF.item.sellprice_factor_as_number, size="6") %]
|
|
48 | 47 |
</td> |
49 | 48 |
</tr> |
49 |
<tr> |
|
50 |
<td> </td> |
|
51 |
<td>[% L.ajax_submit_tag('controller.pl?action=RequirementSpecItem/ajax_' _ (SELF.item.id ? 'update' : 'create'), '#' _ id_base _ '_form', LxERP.t8('Save')) %] |
|
52 |
<a href="#" onclick='kivi.requirement_spec.cancel_edit_item_form("[% id_base %]", { to_show: "[% hidden %]" })' class="button">[%- LxERP.t8("Cancel") %]</a></td> |
|
53 |
</tr> |
|
54 |
|
|
55 |
|
|
56 |
|
|
57 |
</tbody> |
|
50 | 58 |
</table> |
51 | 59 |
|
52 | 60 |
[%- IF SELF.predefined_texts.size %] |
templates/webpages/requirement_spec_item/_section_header.html | ||
---|---|---|
1 | 1 |
[%- USE HTML -%][%- USE L -%][%- USE LxERP -%] |
2 |
<h1>
|
|
3 |
[%- HTML.escape(requirement_spec_item.fb_number) %]:
|
|
2 |
<h3>
|
|
3 |
<span class="label">[%- HTML.escape(requirement_spec_item.fb_number) %]:</span>
|
|
4 | 4 |
[% IF requirement_spec_item.title %] |
5 | 5 |
[% HTML.escape(requirement_spec_item.title) %] |
6 | 6 |
[% ELSE %] |
... | ... | |
8 | 8 |
[%- LxERP.t8("No text has been entered yet.") %] |
9 | 9 |
</div> |
10 | 10 |
[% END %] |
11 |
</h1>
|
|
11 |
</h3>
|
|
12 | 12 |
|
13 | 13 |
<div class="section-description" id="section-description"> |
14 |
<div class="section-description-heading">[%- LxERP.t8("Preamble") %]</div> |
|
15 |
[% IF requirement_spec_item.description %] |
|
16 |
[%- requirement_spec_item.description_as_restricted_html -%] |
|
17 |
[%- ELSE %] |
|
18 |
<span class="dimmed-text">[%- LxERP.t8("No text has been entered yet.") %]</span> |
|
19 |
[%- END %] |
|
20 |
</div> |
|
14 |
<div> |
|
15 |
[% IF requirement_spec_item.description %] |
|
16 |
<span class="label section-description-heading">[%- LxERP.t8("Preamble") %]:</span><br> |
|
17 |
[%- requirement_spec_item.description_as_restricted_html -%] |
|
18 |
[%- ELSE %] |
|
19 |
<span class="dimmed-text">[%- LxERP.t8("No text has been entered yet.") %]</span> |
|
20 |
[%- END %] |
|
21 |
</div> |
|
22 |
|
|
23 |
[% IF requirement_spec_item.sellprice_factor %] |
|
24 |
<div> |
|
25 |
<span class="label">[%- LxERP.t8("Price Factor") -%]:</span> [%- LxERP.format_amount(requirement_spec_item.sellprice_factor, -2) -%] |
|
26 |
</div> |
|
27 |
[% END %] |
|
21 | 28 |
|
22 |
<div class="smaller gray" style="text-align:right"> |
|
23 |
[%- LxERP.t8("Price Factor") -%]: [%- LxERP.format_amount(requirement_spec_item.sellprice_factor, -2) -%] |
|
24 | 29 |
</div> |
templates/webpages/requirement_spec_order/_assignment_form.html | ||
---|---|---|
2 | 2 |
[% SET style="width: 400px" %] |
3 | 3 |
|
4 | 4 |
<form id="quotations_and_orders_form"> |
5 |
<table> |
|
5 |
<table class="tbl-horizontal"> |
|
6 |
<tbody> |
|
6 | 7 |
[% IF for_new %] |
7 | 8 |
<tr> |
8 |
<td>[% LxERP.t8("Record type to create") %]:</td>
|
|
9 |
<th>[% LxERP.t8("Record type to create") %]:</th>
|
|
9 | 10 |
<td>[% L.select_tag('quotation', [ [ 1, LxERP.t8('Sales quotation') ], [ 0, LxERP.t8('Sales Order') ] ], style=style, no_id=1) %]</td> |
10 | 11 |
</tr> |
11 | 12 |
|
12 | 13 |
<tr> |
13 |
<td>[% LxERP.t8("Customer") %]:</td>
|
|
14 |
<th>[% LxERP.t8("Customer") %]:</th>
|
|
14 | 15 |
<td>[% L.select_tag('customer_id', SELF.all_customers, default=SELF.requirement_spec.customer_id, title_key='name', style=style, no_id=1) %]</td> |
15 | 16 |
</tr> |
16 | 17 |
[% END %] |
17 | 18 |
|
18 | 19 |
<tr> |
19 |
<td>[% LxERP.t8("Assign the following article to all sections") %]:</td>
|
|
20 |
<th>[% LxERP.t8("Assign the following article to all sections") %]:</th>
|
|
20 | 21 |
<td data-unit="[% HTML.escape(SELF.section_order_part.unit) %]"> |
21 | 22 |
[% P.part.picker('quotations_and_orders_dummy', SELF.section_order_part.id, id='quotations_and_orders_order_id', style=style) %] |
22 | 23 |
[% L.button_tag('kivi.requirement_spec.assign_order_part_id_to_all()', LxERP.t8('Assign article')) %] |
23 | 24 |
</td> |
24 | 25 |
</tr> |
26 |
</tbody> |
|
25 | 27 |
</table> |
26 | 28 |
|
27 |
<table style="width: 100%">
|
|
29 |
<table class="tbl-list">
|
|
28 | 30 |
<thead> |
29 |
<tr class="listheading">
|
|
30 |
<th>[% LxERP.t8("Number") %]</th> |
|
31 |
<tr> |
|
32 |
<th class="right">[% LxERP.t8("Number") %]</th>
|
|
31 | 33 |
<th>[% LxERP.t8("Title") %]</th> |
32 | 34 |
<th>[% LxERP.t8("Description") %]</th> |
33 | 35 |
<th>[% LxERP.t8("Article") %]</th> |
... | ... | |
38 | 40 |
|
39 | 41 |
<tbody> |
40 | 42 |
[% FOREACH section = SELF.requirement_spec.sections_sorted %] |
41 |
<tr class="listrow">
|
|
43 |
<tr> |
|
42 | 44 |
[% L.hidden_tag("sections[+].id", section.id, no_id=1) %] |
43 |
<td>[% HTML.escape(section.fb_number) %]</td> |
|
45 |
<td class="numeric">[% HTML.escape(section.fb_number) %]</td>
|
|
44 | 46 |
<td>[% HTML.escape(section.title) %]</td> |
45 | 47 |
<td>[% HTML.escape(P.truncate(section.description_as_stripped_html)) %]</td> |
46 | 48 |
<td>[% P.part.picker('sections[].order_part_id', section.order_part_id, id='quotations_and_orders_sections_order_pard_id_' _ loop.count, style=style) %]</td> |
templates/webpages/requirement_spec_order/list.html | ||
---|---|---|
8 | 8 |
[% LxERP.t8("No sections have been created yet.") %] |
9 | 9 |
</div> |
10 | 10 |
[% ELSE %] |
11 |
<table id="quotations_and_orders_sections" style="width: 100%">
|
|
11 |
<table id="quotations_and_orders_sections" class="tbl-list">
|
|
12 | 12 |
<thead> |
13 |
<tr class="listheading">
|
|
13 |
<tr> |
|
14 | 14 |
<th>[% LxERP.t8("Number") %]</th> |
15 | 15 |
<th>[% LxERP.t8("Title") %]</th> |
16 | 16 |
<th>[% LxERP.t8("Description") %]</th> |
... | ... | |
22 | 22 |
|
23 | 23 |
<tbody> |
24 | 24 |
[% FOREACH section = sections %] |
25 |
<tr class="listrow">
|
|
25 |
<tr> |
|
26 | 26 |
<td>[% HTML.escape(section.fb_number) %]</td> |
27 | 27 |
<td>[% HTML.escape(section.title) %]</td> |
28 | 28 |
<td>[% HTML.escape(P.truncate(section.description_as_stripped_html)) %]</td> |
... | ... | |
54 | 54 |
<div>[% LxERP.t8("No quotations or orders have been created yet.") %]</div> |
55 | 55 |
[% ELSE %] |
56 | 56 |
|
57 |
<table style="width:100%">
|
|
57 |
<table class="tbl-list">
|
|
58 | 58 |
<thead> |
59 |
<tr class="listheading">
|
|
59 |
<tr> |
|
60 | 60 |
<th>[% LxERP.t8("Type") %]</th> |
61 | 61 |
<th>[% LxERP.t8("Requirement Spec Version") %]</th> |
62 |
<th>[% LxERP.t8("Record number") %]</th> |
|
62 |
<th class="right">[% LxERP.t8("Record number") %]</th>
|
|
63 | 63 |
<th>[% LxERP.t8("Transaction description") %]</th> |
64 | 64 |
<th>[% LxERP.t8("Quotation/Order Date") %]</th> |
65 | 65 |
<th>[% LxERP.t8("Creation Date") %]</th> |
... | ... | |
68 | 68 |
|
69 | 69 |
<tbody> |
70 | 70 |
[% FOREACH rs_order = orders %] |
71 |
<tr class="listrow quotations-and-orders-order-context-menu">
|
|
71 |
<tr class="quotations-and-orders-order-context-menu"> |
|
72 | 72 |
[% L.hidden_tag('order_id', rs_order.id, no_id=1) %] |
73 | 73 |
<td>[% rs_order.order.type == 'sales_quotation' ? LxERP.t8('Sales quotation') : LxERP.t8('Sales Order') %]</td> |
74 | 74 |
<td> |
... | ... | |
78 | 78 |
[% LxERP.t8("working copy") %] |
79 | 79 |
[% END %] |
80 | 80 |
</td> |
81 |
<td> |
|
81 |
<td class="numeric">
|
|
82 | 82 |
[%- IF INSTANCE_CONF.get_feature_experimental_order -%] |
83 | 83 |
<a href="controller.pl?action=Order/edit&id=[% HTML.url(rs_order.order_id) %]&type=[% HTML.url(rs_order.order.type) %]"> |
84 | 84 |
[%- ELSE -%] |
templates/webpages/requirement_spec_order/update.html | ||
---|---|---|
17 | 17 |
|
18 | 18 |
[% L.hidden_tag("rs_order_id", SELF.rs_order.id, no_id=1) %] |
19 | 19 |
|
20 |
<table style="width: 100%">
|
|
20 |
<table class="tbl-list">
|
|
21 | 21 |
<thead> |
22 |
<tr class="listheading">
|
|
22 |
<tr> |
|
23 | 23 |
<th>[% LxERP.t8("Part Number") %]</th> |
24 | 24 |
<th>[% LxERP.t8("Description") %]</th> |
25 | 25 |
<th align="right">[% LxERP.t8("Qty") %]</th> |
... | ... | |
30 | 30 |
|
31 | 31 |
<tbody> |
32 | 32 |
[% FOREACH item = orderitems %] |
33 |
<tr class="listrow">
|
|
33 |
<tr> |
|
34 | 34 |
[% L.hidden_tag("orderitems[+].id", item.item.id, no_id=1) %] |
35 | 35 |
<td>[% HTML.escape(item.item.part.partnumber) %]</td> |
36 | 36 |
<td>[% HTML.escape(item.item.description_as_stripped_html) %]</td> |
templates/webpages/requirement_spec_part/_edit.html | ||
---|---|---|
16 | 16 |
[% LxERP.t8("No articles have been added yet.") %] |
17 | 17 |
</div> |
18 | 18 |
|
19 |
<table id="edit_additional_parts_list"[% IF !parts.size %] style="display: none;"[% END %]> |
|
19 |
<table id="edit_additional_parts_list" class="tbl-list"[% IF !parts.size %] style="display: none;"[% END %]>
|
|
20 | 20 |
<thead> |
21 |
<tr class="listheading">
|
|
21 |
<tr> |
|
22 | 22 |
<th></th> |
23 | 23 |
<th>[%- LxERP.t8("Part Number") %]</th> |
24 | 24 |
<th>[%- LxERP.t8("Description") %]</th> |
templates/webpages/requirement_spec_part/_part.html | ||
---|---|---|
1 | 1 |
[%- USE HTML -%][%- USE L -%][%- USE LxERP -%] |
2 |
<tr class="listrow edit-additional-parts-row-context-menu">
|
|
3 |
<td align="center">
|
|
2 |
<tr class="edit-additional-parts-row-context-menu"> |
|
3 |
<td class="center">
|
|
4 | 4 |
[% L.hidden_tag("additional_parts[+].part_id", part.part.id) %] |
5 | 5 |
[% L.hidden_tag("additional_parts[].id", part.id) %] |
6 | 6 |
[% L.img_tag(src="image/updown.png", alt=LxERP.t8("reorder item"), class="dragdrop") %] |
templates/webpages/requirement_spec_part/show.html | ||
---|---|---|
9 | 9 |
[% LxERP.t8("No articles have been added yet.") %] |
10 | 10 |
</div> |
11 | 11 |
|
12 |
<table id="additional_parts_list"[% IF !parts.size %] style="display: none;"[% END %]>
|
|
12 |
<table id="additional_parts_list"[% IF !parts.size %] style="display:none;"[% END %] class="tbl-list">
|
|
13 | 13 |
<thead> |
14 |
<tr class="listheading">
|
|
14 |
<tr> |
|
15 | 15 |
<th>[%- LxERP.t8("Part Number") %]</th> |
16 | 16 |
<th>[%- LxERP.t8("Description") %]</th> |
17 | 17 |
<th>[%- LxERP.t8("Qty") %]</th> |
... | ... | |
20 | 20 |
|
21 | 21 |
<tbody> |
22 | 22 |
[% FOREACH part = parts %] |
23 |
<tr class="listrow">
|
|
23 |
<tr> |
|
24 | 24 |
<td>[% HTML.escape(part.part.partnumber) %]</td> |
25 | 25 |
<td>[% HTML.escape(part.description) %]</td> |
26 |
<td valign="right">[% HTML.escape(part.qty_as_number) %] [% HTML.escape(part.unit.name) %]</td>
|
|
26 |
<td class="numeric">[% HTML.escape(part.qty_as_number) %] [% HTML.escape(part.unit.name) %]</td>
|
|
27 | 27 |
</tr> |
28 | 28 |
[% END %] |
29 | 29 |
</tbody> |
templates/webpages/requirement_spec_text_block/_form.html | ||
---|---|---|
1 |
[%- USE LxERP -%][%- USE L -%][%- USE HTML -%][% SET style="width: 500px" %] |
|
1 |
[% USE LxERP %] |
|
2 |
[% USE L %] |
|
3 |
[% USE HTML %] |
|
4 |
[% SET style="width: 500px" %] |
|
2 | 5 |
[% DEFAULT id_base = 'edit_text_block_' _ SELF.text_block.id %] |
6 |
|
|
3 | 7 |
<form method="post" id="[% id_base %]_form"> |
4 |
<h2> |
|
5 |
[%- IF SELF.text_block.id %] |
|
6 |
[%- SET title = SELF.text_block.title || '(' _ LxERP.t8('No title yet') _ ')' %] |
|
7 |
[%- LxERP.t8("Edit text block '#1'", title) %] |
|
8 |
[%- ELSE %] |
|
9 |
[%- LxERP.t8("Add text block") %] |
|
10 |
[%- END %] |
|
11 |
</h2> |
|
8 |
|
|
12 | 9 |
|
13 | 10 |
[% L.hidden_tag('form_prefix', id_base, id=id_base _ '_form_prefix') %] |
14 | 11 |
[% L.hidden_tag('id', SELF.text_block.id, id=id_base _ '_id') %] |
... | ... | |
19 | 16 |
[% END %] |
20 | 17 |
|
21 | 18 |
<table> |
19 |
<caption> |
|
20 |
[% IF SELF.text_block.id %] |
|
21 |
[% SET title = SELF.text_block.title || '(' _ LxERP.t8('No title yet') _ ')' %] |
|
22 |
[% LxERP.t8("Edit text block '#1'", title) %] |
|
23 |
[% ELSE %] |
|
24 |
[% LxERP.t8("Add text block") %] |
|
25 |
[% END %] |
|
26 |
</caption> |
|
27 |
<tbody> |
|
22 | 28 |
<tr> |
23 |
<th align="right">[%- LxERP.t8("Title") %]:</th>
|
|
29 |
<th>[% LxERP.t8("Title") %]:</th>
|
|
24 | 30 |
<td>[% L.input_tag(id_base _ '.title', SELF.text_block.title, style = style) %]</td> |
25 | 31 |
</tr> |
26 | 32 |
|
27 |
[%- IF SELF.predefined_texts.size %]
|
|
33 |
[% IF SELF.predefined_texts.size %] |
|
28 | 34 |
<tr> |
29 |
<th align="right">[%- LxERP.t8("Pre-defined Texts") %]:</th>
|
|
35 |
<th>[% LxERP.t8("Pre-defined Texts") %]:</th>
|
|
30 | 36 |
<td> |
31 |
[%- L.select_tag(id_base _ '_predefined_text_block', SELF.predefined_texts, title_key='description', style=style) %]
|
|
32 |
<a href="#" onclick="insert_selected_predefined_text()">[%- LxERP.t8("Insert") %]</a>
|
|
37 |
[% L.select_tag(id_base _ '_predefined_text_block', SELF.predefined_texts, title_key='description', style=style) %] |
|
38 |
<a href="#" onclick="insert_selected_predefined_text()">[% LxERP.t8("Insert") %]</a> |
|
33 | 39 |
</td> |
34 | 40 |
</tr> |
35 |
[%- END %]
|
|
41 |
[% END %] |
|
36 | 42 |
|
37 | 43 |
<tr> |
38 |
<th align="right" valign="top">[%- LxERP.t8("Description") %]:</th>
|
|
39 |
<td valign="top">[% L.textarea_tag(id_base _ '.text_as_restricted_html', SELF.text_block.text_as_restricted_html, id = id_base _ '_text', style = style _ '; height: 200px', class='texteditor') %]</td>
|
|
44 |
<th>[% LxERP.t8("Description") %]:</th>
|
|
45 |
<td>[% L.textarea_tag(id_base _ '.text_as_restricted_html', SELF.text_block.text_as_restricted_html, id = id_base _ '_text', style = style _ '; height: 200px', class='texteditor') %]</td> |
|
40 | 46 |
</tr> |
47 |
</tbody> |
|
41 | 48 |
</table> |
42 | 49 |
|
43 | 50 |
<p> |
44 |
[%- L.ajax_submit_tag('controller.pl?action=RequirementSpecTextBlock/ajax_' _ (SELF.text_block.id ? 'update' : 'create'), '#' _ id_base _ '_form', LxERP.t8('Save')) %]
|
|
45 |
<a href="#" onclick="kivi.requirement_spec.cancel_edit_text_block_form('[% id_base %]')">[%- LxERP.t8("Cancel") %]</a>
|
|
51 |
[% L.ajax_submit_tag('controller.pl?action=RequirementSpecTextBlock/ajax_' _ (SELF.text_block.id ? 'update' : 'create'), '#' _ id_base _ '_form', LxERP.t8('Save')) %] |
|
52 |
<a href="#" onclick="kivi.requirement_spec.cancel_edit_text_block_form('[% id_base %]')">[% LxERP.t8("Cancel") %]</a> |
|
46 | 53 |
</p> |
47 | 54 |
|
48 |
[%- IF SELF.predefined_texts.size %]
|
|
55 |
[% IF SELF.predefined_texts.size %] |
|
49 | 56 |
<script type="text/javascript"> |
50 | 57 |
<!-- |
51 | 58 |
[% INCLUDE 'requirement_spec_text_block/_predefined_text_inserter.js' title_ctrl_id='_title' text_ctrl_id='_text' %] |
52 | 59 |
--> |
53 | 60 |
</script> |
54 |
[%- END %]
|
|
61 |
[% END %] |
|
55 | 62 |
</form> |
templates/webpages/requirement_spec_text_block/_picture_form.html | ||
---|---|---|
1 |
[%- USE LxERP -%][%- USE L -%][%- USE HTML -%][%- USE JavaScript -%][% USE Base64 %][% SET style="width: 500px" %] |
|
1 |
[% USE LxERP %] |
|
2 |
[% USE L %] |
|
3 |
[% USE HTML %] |
|
4 |
[% USE JavaScript %] |
|
5 |
[% USE Base64 %][% SET style="width: 500px" %] |
|
2 | 6 |
[% SET id_base = 'edit_text_block_picture_' _ (SELF.picture.id ? SELF.picture.id : 'new') %] |
3 | 7 |
<form method="post" id="[% id_base %]_form" method="POST" enctype="multipart/form-data"> |
4 | 8 |
[% L.hidden_tag('form_prefix', id_base, id=id_base _ '_form_prefix') %] |
... | ... | |
7 | 11 |
[% L.hidden_tag(id_base _ '.requirement_spec_id', SELF.text_block.requirement_spec_id) %] |
8 | 12 |
|
9 | 13 |
<h2> |
10 |
[%- IF SELF.picture.id %]
|
|
11 |
[%- LxERP.t8("Edit text block picture #1", SELF.picture.number) %]
|
|
12 |
[%- ELSE %]
|
|
13 |
[%- LxERP.t8("Add picture to text block") %]
|
|
14 |
[%- END %]
|
|
14 |
[% IF SELF.picture.id %] |
|
15 |
[% LxERP.t8("Edit text block picture #1", SELF.picture.number) %] |
|
16 |
[% ELSE %] |
|
17 |
[% LxERP.t8("Add picture to text block") %] |
|
18 |
[% END %] |
|
15 | 19 |
</h2> |
16 | 20 |
|
17 | 21 |
<table> |
18 | 22 |
[% IF SELF.picture.number %] |
19 | 23 |
<tr> |
20 |
<th align="right">[%- LxERP.t8("Number") %]:</th>
|
|
24 |
<th>[% LxERP.t8("Number") %]:</th>
|
|
21 | 25 |
<td>[% HTML.escape(SELF.picture.number) %]</td> |
22 | 26 |
</tr> |
23 | 27 |
[% END %] |
24 | 28 |
|
25 | 29 |
<tr> |
26 |
<th align="right">[%- LxERP.t8("Description") %]:</th>
|
|
30 |
<th>[% LxERP.t8("Description") %]:</th>
|
|
27 | 31 |
<td>[% L.input_tag(id_base _ '.description', SELF.picture.description, style=style) %]</td> |
28 | 32 |
</tr> |
29 | 33 |
|
30 | 34 |
[% IF SELF.picture.picture_content %] |
31 | 35 |
<tr> |
32 |
<th align="right">[%- LxERP.t8("File name") %]:</th>
|
|
36 |
<th>[% LxERP.t8("File name") %]:</th>
|
|
33 | 37 |
<td>[% HTML.escape(SELF.picture.picture_file_name) %]</td> |
34 | 38 |
</tr> |
35 | 39 |
|
36 | 40 |
<tr> |
37 |
<th align="right">[%- LxERP.t8("MIME type") %]:</th>
|
|
41 |
<th>[% LxERP.t8("MIME type") %]:</th>
|
|
38 | 42 |
<td>[% HTML.escape(SELF.picture.picture_content_type) %]</td> |
39 | 43 |
</tr> |
40 | 44 |
|
41 | 45 |
<tr> |
42 |
<th align="right">[%- LxERP.t8("Dimensions") %]:</th>
|
|
46 |
<th>[% LxERP.t8("Dimensions") %]:</th>
|
|
43 | 47 |
<td>[% HTML.escape(SELF.picture.picture_width) %]x[% HTML.escape(SELF.picture.picture_height) %]</td> |
44 | 48 |
</tr> |
45 | 49 |
|
46 | 50 |
<tr> |
47 |
<th align="right">[%- LxERP.t8("Uploaded at") %]:</th>
|
|
51 |
<th>[% LxERP.t8("Uploaded at") %]:</th>
|
|
48 | 52 |
<td>[% HTML.escape(SELF.picture.picture_mtime.to_kivitendo(precision='second')) %]</td> |
49 | 53 |
</tr> |
50 | 54 |
[% END %] |
51 | 55 |
|
52 | 56 |
<tr> |
53 |
<th align="right">[%- LxERP.t8("Select file to upload") %]:</th>
|
|
57 |
<th>[% LxERP.t8("Select file to upload") %]:</th>
|
|
54 | 58 |
<td>[% L.input_tag(id_base _ '.picture_content', '', type='file') %]</td> |
55 | 59 |
</tr> |
56 | 60 |
</table> |
57 | 61 |
|
58 | 62 |
<p> |
59 |
[%- L.ajax_submit_tag('controller.pl?action=RequirementSpecTextBlock/ajax_' _ (SELF.picture.id ? 'update' : 'create') _ '_picture', '#' _ id_base _ '_form', LxERP.t8('Save'), no_id=1) %]
|
|
60 |
<a href="#" onclick="$('#jqueryui_popup_dialog').dialog('close');">[%- LxERP.t8("Cancel") %]</a>
|
|
63 |
[% L.ajax_submit_tag('controller.pl?action=RequirementSpecTextBlock/ajax_' _ (SELF.picture.id ? 'update' : 'create') _ '_picture', '#' _ id_base _ '_form', LxERP.t8('Save'), no_id=1) %] |
|
64 |
<a href="#" onclick="$('#jqueryui_popup_dialog').dialog('close');">[% LxERP.t8("Cancel") %]</a> |
|
61 | 65 |
</p> |
62 | 66 |
|
63 | 67 |
</form> |
templates/webpages/requirement_spec_text_block/_text_block_picture.html | ||
---|---|---|
1 |
[%- USE HTML -%][%- USE LxERP -%][% USE Base64 %] |
|
1 |
[% USE HTML %] |
|
2 |
[% USE LxERP %] |
|
3 |
[% USE Base64 %] |
|
2 | 4 |
[% SET title=LxERP.t8('Picture #1: #2', picture.number, picture.description ? picture.description _ ' (' _ picture.picture_file_name _ ')' : picture.picture_file_name) %] |
3 | 5 |
<div id="text-block-picture-[% HTML.escape(picture.id) %]" class="requirement-spec-text-block-picture-thumbnail text-block-picture-context-menu"> |
4 | 6 |
<div class="requirement-spec-text-block-picture-thumbnail-img-container"> |
templates/webpages/requirement_spec_version/_form.html | ||
---|---|---|
30 | 30 |
<a href="[% SELF.url_for(action='list') %]">[%- LxERP.t8("Cancel") %]</a> |
31 | 31 |
[%- ELSE %] |
32 | 32 |
[% L.ajax_submit_tag("controller.pl?action=RequirementSpecVersion/create", "#" _ id_prefix, LxERP.t8("Save")) %] |
33 |
<a href="#" onclick="$('#jqueryui_popup_dialog').dialog('close');">[% LxERP.t8("Cancel") %]</a> |
|
33 |
<a href="#" onclick="$('#jqueryui_popup_dialog').dialog('close');" class="button neutral">[% LxERP.t8("Cancel") %]</a>
|
|
34 | 34 |
[%- END %] |
35 | 35 |
</p> |
36 | 36 |
</form> |
templates/webpages/requirement_spec_version/list.html | ||
---|---|---|
1 |
[% USE HTML %][% USE L %][% USE LxERP %][%- USE P -%] |
|
1 |
[% USE HTML %] |
|
2 |
[% USE L %] |
|
3 |
[% USE LxERP %] |
|
4 |
[% USE P %] |
|
2 | 5 |
|
3 | 6 |
<table id="versioned_copies_list"> |
4 | 7 |
<thead> |
5 |
<tr class="listheading">
|
|
6 |
<th><div class="thingy" style="width: 10px; height: 100%; background-color: red; position: relative; left: -10px;"></div>[%- LxERP.t8("Version number") %]</th>
|
|
7 |
<th>[%- LxERP.t8("Description") %]</th>
|
|
8 |
<th>[%- LxERP.t8("Internal comment") %]</th>
|
|
9 |
<th>[%- LxERP.t8("Last modification") %]</th>
|
|
8 |
<tr> |
|
9 |
<th><div class="thingy" style="width: 10px; height: 100%; background-color: red; position: relative; left: -10px;"></div>[% LxERP.t8("Version number") %]</th> |
|
10 |
<th>[% LxERP.t8("Description") %]</th> |
|
11 |
<th>[% LxERP.t8("Internal comment") %]</th> |
|
12 |
<th>[% LxERP.t8("Last modification") %]</th> |
|
10 | 13 |
</tr> |
11 | 14 |
</thead> |
12 | 15 |
|
13 | 16 |
<tbody> |
14 | 17 |
<tr class="listrow versioned-copy-context-menu"> |
15 |
[%- IF SELF.requirement_spec.version %]
|
|
18 |
[% IF SELF.requirement_spec.version %] |
|
16 | 19 |
[% L.hidden_tag('versioned_copy_id', SELF.requirement_spec.version.requirement_spec_id, no_id=1) %] |
17 |
<td>[%- LxERP.t8("Working copy identical to version number #1", SELF.requirement_spec.version.version_number) %]</td>
|
|
18 |
[%- ELSE %]
|
|
19 |
<td>[%- LxERP.t8("Working copy without version") %]</td>
|
|
20 |
[%- END -%]
|
|
21 |
<td>[%- LxERP.t8("Working copy; no description yet") %]</td>
|
|
20 |
<td>[% LxERP.t8("Working copy identical to version number #1", SELF.requirement_spec.version.version_number) %]</td> |
|
21 |
[% ELSE %] |
|
22 |
<td>[% LxERP.t8("Working copy without version") %]</td> |
|
23 |
[% END %]
|
|
24 |
<td>[% LxERP.t8("Working copy; no description yet") %]</td> |
|
22 | 25 |
<td> </td> |
23 | 26 |
<td>[% SELF.requirement_spec.mtime.to_kivitendo(precision='minute') %]</td> |
24 | 27 |
</tr> |
25 | 28 |
|
26 |
[%- FOREACH versioned_copy = SELF.requirement_spec.versioned_copies_sorted %]
|
|
27 |
[%- SET version = versioned_copy.version %]
|
|
29 |
[% FOREACH versioned_copy = SELF.requirement_spec.versioned_copies_sorted %] |
|
30 |
[% SET version = versioned_copy.version %] |
|
28 | 31 |
<tr class="listrow versioned-copy-context-menu"> |
29 | 32 |
[% L.hidden_tag('versioned_copy_id', versioned_copy.id, no_id=1) %] |
30 | 33 |
<td>[% HTML.escape(version.version_number) %]</td> |
... | ... | |
32 | 35 |
<td>[% HTML.escape(P.truncate(version.comment)) %]</td> |
33 | 36 |
<td>[% version.itime.to_kivitendo(precision='minute') %]</td> |
34 | 37 |
</tr> |
35 |
[%- END %]
|
|
38 |
[% END %] |
|
36 | 39 |
</tbody> |
37 | 40 |
</table> |
Auch abrufbar als: Unified diff
Neues kivitendo Design restliche Aenderungen in templates/webpages/requirement_spec_*
Dateien requirement_spec_item/* requirement_spec_order/* requirement_spec_part/*
requirement_spec_text_block/* requirement_spec_version/*