Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 6ef53d3f

Von Sven Schöling vor etwa 7 Jahren hinzugefügt

  • ID 6ef53d3f84ed5471a251856b0d4b2ca42e2e3992
  • Vorgänger 5a55ac86
  • Nachfolger 0aa885f4

Presenter: Neue Struktur in RequirementSpecs umgesetzt

Unterschiede anzeigen:

SL/Controller/RequirementSpec.pm
490 490
  if (!$is_template) {
491 491
    %column_defs = (
492 492
      %column_defs,
493
      customer      => { raw_data => sub { $self->presenter->customer($_[0]->customer, display => 'table-cell', callback => $callback) },
493
      customer      => { raw_data => sub { $_[0]->customer->presenter->customer(display => 'table-cell', callback => $callback) },
494 494
                         sub      => sub { $_[0]->customer->name } },
495
      projectnumber => { raw_data => sub { $self->presenter->project($_[0]->project, display => 'table-cell', callback => $callback) },
495
      projectnumber => { raw_data => sub { $_[0]->project ? $_[0]->project->presenter->project(display => 'table-cell', callback => $callback) : '' },
496 496
                         sub      => sub { $_[0]->project_id ? $_[0]->project->projectnumber : '' } },
497 497
      status        => { sub      => sub { $_[0]->status->description } },
498 498
      type          => { sub      => sub { $_[0]->type->description } },
......
555 555
      ->hide('#text-block-list-empty');
556 556
  }
557 557

  
558
  my $node       = $self->presenter->requirement_spec_text_block_jstree_data($text_block);
558
  my $node       = $text_block->presenter->jstree_data;
559 559
  my $front_back = $text_block->output_position == 0 ? 'front' : 'back';
560 560
  $self->js
561 561
    ->jstree->create_node('#tree', "#tb-${front_back}", 'last', $node)
......
577 577
sub render_pasted_section {
578 578
  my ($self, $item, $parent_id) = @_;
579 579

  
580
  my $node = $self->presenter->requirement_spec_item_jstree_data($item);
580
  my $node = $item->presenter->jstree_data;
581 581
  $self->js
582 582
    ->jstree->create_node('#tree', $parent_id ? "#fb-${parent_id}" : '#sections', 'last', $node)
583 583
    ->jstree->open_node(  '#tree', $parent_id ? "#fb-${parent_id}" : '#sections');
SL/Controller/RequirementSpecItem.pm
19 19
use SL::Helper::Flash;
20 20
use SL::JSON;
21 21
use SL::Locale::String;
22
use SL::Presenter::Text qw(truncate);
22 23

  
23 24
use Rose::Object::MakeMethods::Generic
24 25
(
......
192 193
  my $type = $self->item->item_type;
193 194

  
194 195
  if ($type eq 'section') {
195
    my $node = $self->presenter->requirement_spec_item_jstree_data($self->item);
196
    my $node = $self->item->presenter->jstree_data;
196 197
    $self->invalidate_version;
197 198
    $self->render_list($self->item)
198 199
      ->hide('#section-list-empty')
......
205 206

  
206 207
  my $template = 'requirement_spec_item/_' . (apply { s/-/_/g; $_ } $type);
207 208
  my $html     = $self->render($template, { output => 0 }, requirement_spec_item => $self->item, id_prefix => $type eq 'function-block' ? '' : 'sub-');
208
  my $node     = $self->presenter->requirement_spec_item_jstree_data($self->item);
209
  my $node     = $self->item->presenter->jstree_data;
209 210

  
210 211
  $self->js
211 212
    ->replaceWith('#' . $prefix . '_form', $html)
......
298 299
      ->remove('#edit_section_form')
299 300
      ->html('#section-header-' . $self->item->id, $html)
300 301
      ->show('#section-header-' . $self->item->id)
301
      ->jstree->rename_node('#tree', '#fb-' . $self->item->id, $::request->presenter->requirement_spec_item_tree_node_title($self->item))
302
      ->jstree->rename_node('#tree', '#fb-' . $self->item->id, $self->item->presenter->tree_node_title)
302 303
      ->prop('#fb-' . $self->item->id . ' a', 'title', $self->item->content_excerpt)
303 304
      ->addClass('#fb-' . $self->item->id . ' a', 'tooltip')
304 305
      ->reinit_widgets
......
319 320
    ->prop('#fb-' . $self->item->id . ' a', 'title', $self->item->content_excerpt)
320 321
    ->addClass('#fb-' . $self->item->id . ' a', 'tooltip')
321 322
    ->reinit_widgets
322
    ->jstree->rename_node('#tree', '#fb-' . $self->item->id, $::request->presenter->requirement_spec_item_tree_node_title($self->item));
323
    ->jstree->rename_node('#tree', '#fb-' . $self->item->id, $self->item->presenter->tree_node_title);
323 324

  
324 325
  $self->replace_bottom($self->item, id_prefix => $id_prefix);
325 326
  $self->replace_bottom($self->item->parent) if $type eq 'sub-function-block';
......
439 440
sub create_and_insert_node_rec {
440 441
  my ($self, $item, $new_parent_id, $insert_after) = @_;
441 442

  
442
  my $node = $self->presenter->requirement_spec_item_jstree_data($item);
443
  my $node = $item->presenter->jstree_data;
443 444
  $self->js->jstree->create_node('#tree', $insert_after ? ('#fb-' . $insert_after, 'after') : $new_parent_id ? ('#fb-' . $new_parent_id, 'last') : ('#sections', 'last'), $node);
444 445

  
445 446
  $self->create_and_insert_node_rec($_, $item->id) for @{ $item->children || [] };
......
562 563

  
563 564
sub create_dependency_item {
564 565
  my $self = shift;
565
  [ $_[0]->id, $self->presenter->truncate(join(' ', grep { $_ } ($_[1], $_[0]->fb_number, $_[0]->description_as_stripped_html))) ];
566
  [ $_[0]->id, truncate(join(' ', grep { $_ } ($_[1], $_[0]->fb_number, $_[0]->description_as_stripped_html))) ];
566 567
}
567 568

  
568 569
sub create_dependencies {
SL/Controller/RequirementSpecTextBlock.pm
102 102
  $self->text_block->add_to_list(position => 'after', reference => $insert_after) if $insert_after;
103 103

  
104 104
  my $html = $self->render('requirement_spec_text_block/_text_block', { output => 0 }, text_block => $self->text_block);
105
  my $node = $self->presenter->requirement_spec_text_block_jstree_data($self->text_block);
105
  my $node = $self->text_block->presenter->jstree_data;
106 106

  
107 107
  $self->invalidate_version
108 108
    ->hide('#text-block-list-empty')
......
272 272
    $self->js->action($::form->{id} ? 'insertAfter' : 'appendTo', $html, '#text-block-' . ($::form->{id} || 'list'));
273 273
  }
274 274

  
275
  my $node = $self->presenter->requirement_spec_text_block_jstree_data($self->text_block);
275
  my $node = $self->text_block->presenter->jstree_data;
276 276
  $self->invalidate_version
277 277
    ->run(SORTABLE_PICTURE_LIST())
278 278
    ->jstree->create_node('#tree', $::form->{id} ? ('#tb-' . $::form->{id}, 'after') : ("#tb-${front_back}", 'last'), $node)
templates/print/RB/requirement_spec.tex
145 145
\begin{longtable}{p{2.8cm}p{11.7cm}}
146 146
  Funktionsblock & $( KiviLatex.filter(item.fb_number) )$\\
147 147
  Beschreibung & $( KiviLatex.filter_html(item.description_as_restricted_html) )$\\
148
  Abhängigkeiten & $( KiviLatex.filter(P.requirement_spec_item_dependency_list(item)) )$
148
  Abhängigkeiten & $( KiviLatex.filter(item.presenter.requirement_spec_item_dependency_list) )$
149 149
\end{longtable}}
150 150

  
151 151
%    $( FOREACH sub_item = item.children_sorted )$
......
155 155
\begin{longtable}{p{2.8cm}p{11.7cm}}
156 156
  Unterfunktionsblock & $( KiviLatex.filter(sub_item.fb_number) )$\\
157 157
  Beschreibung & $( KiviLatex.filter_html(sub_item.description_as_restricted_html) )$\\
158
  Abhängigkeiten & $( KiviLatex.filter(P.requirement_spec_item_dependency_list(sub_item)) )$
158
  Abhängigkeiten & $( KiviLatex.filter(sub_item.presenter.requirement_spec_item_dependency_list) )$
159 159
\end{longtable}}
160 160

  
161 161
%    $( END )$
templates/webpages/requirement_spec/show.html
56 56
      attr:     { id: "tb-front", class: "text-block-context-menu" },
57 57
      children: [
58 58
[% FOREACH tb = SELF.requirement_spec.text_blocks_sorted(output_position=0) %]
59
 [% P.requirement_spec_text_block_jstree_data(tb).json %][% IF !loop.last %],[% END %]
59
 [% tb.presenter.jstree_data.json %][% IF !loop.last %],[% END %]
60 60
[% END %]
61 61
      ]},
62 62

  
......
65 65
      attr:     { id: "sections", class: "section-context-menu" },
66 66
      children: [
67 67
[% FOREACH section = sections %]
68
 [% P.requirement_spec_item_jstree_data(section).json %][% IF !loop.last %],[% END %]
68
 [% section.presenter.jstree_data.json %][% IF !loop.last %],[% END %]
69 69
[% END %]
70 70
      ]},
71 71

  
......
74 74
      attr:     { id: "tb-back", class: "text-block-context-menu" },
75 75
      children: [
76 76
[% FOREACH tb = SELF.requirement_spec.text_blocks_sorted(output_position=1) %]
77
 [% P.requirement_spec_text_block_jstree_data(tb).json %][% IF !loop.last %],[% END %]
77
 [% tb.presenter.jstree_data.json %][% IF !loop.last %],[% END %]
78 78
[% END %]
79 79
      ]}
80 80
  ];
templates/webpages/requirement_spec_item/_function_block_content_bottom.html
1 1
[%- USE LxERP -%][%- USE P -%]<div id="[% id_prefix %]function-block-content-bottom-[% requirement_spec_item.id %]" class="smaller" style="text-align:right">
2 2
 [%- IF requirement_spec_item.dependencies.size -%]
3 3
 <span class="gray">
4
  [%- LxERP.t8("Dependencies") -%]: [%- P.requirement_spec_item_dependency_list(requirement_spec_item) -%]
4
  [%- LxERP.t8("Dependencies") -%]: [%- requirement_spec_item.presenter.requirement_spec_item_dependency_list -%]
5 5
 </span><br>
6 6
 [%- END -%]
7 7
 <span class="gray">
templates/webpages/requirement_spec_order/_assignment_form.html
18 18
  <tr>
19 19
   <td>[% LxERP.t8("Assign the following article to all sections") %]:</td>
20 20
   <td data-unit="[% HTML.escape(SELF.section_order_part.unit) %]">
21
    [% P.part_picker('quotations_and_orders_dummy', SELF.section_order_part.id, id='quotations_and_orders_order_id', style=style) %]
21
    [% P.part.picker('quotations_and_orders_dummy', SELF.section_order_part.id, id='quotations_and_orders_order_id', style=style) %]
22 22
    [% L.button_tag('kivi.requirement_spec.assign_order_part_id_to_all()', LxERP.t8('Assign article')) %]
23 23
   </td>
24 24
  </tr>
......
43 43
    <td>[% HTML.escape(section.fb_number) %]</td>
44 44
    <td>[% HTML.escape(section.title) %]</td>
45 45
    <td>[% HTML.escape(P.truncate(section.description_as_stripped_html)) %]</td>
46
    <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>
46
    <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>
47 47
    <td data-unit-column=1>[% HTML.escape(section.order_part.unit) %]</td>
48 48
    <td data-position-type-column=1>
49 49
     [% IF section.order_part_id && section.order_part.unit_obj.is_time_based %]
templates/webpages/requirement_spec_part/_edit.html
7 7

  
8 8
 <div>
9 9
  [% LxERP.t8("Add part") %]:
10
  [% P.part_picker('additional_parts_add_part_id', '', style="width: 300px") %]
10
  [% P.part.picker('additional_parts_add_part_id', '', style="width: 300px") %]
11 11
  [% L.button_tag('kivi.requirement_spec.add_additional_part()', LxERP.t8('Add part')) %]
12 12
 </div>
13 13

  

Auch abrufbar als: Unified diff