kivitendo/SL/Presenter/RequirementSpecItem.pm @ 40f3befb
c1569bc1 | Moritz Bunkus | package SL::Presenter::RequirementSpecItem;
|
||
use strict;
|
||||
0e5e3501 | Sven Schöling | use SL::Presenter::Text qw(truncate);
|
||
c1569bc1 | Moritz Bunkus | |||
use Exporter qw(import);
|
||||
0e5e3501 | Sven Schöling | our @EXPORT_OK = qw(requirement_spec_item_tree_node_title requirement_spec_item_jstree_data requirement_spec_item_dependency_list);
|
||
c1569bc1 | Moritz Bunkus | |||
use Carp;
|
||||
442b26e2 | Moritz Bunkus | sub requirement_spec_item_tree_node_title {
|
||
0e5e3501 | Sven Schöling | my ($item) = @_;
|
||
442b26e2 | Moritz Bunkus | |||
0e5e3501 | Sven Schöling | return join(' ', map { $_ || '' } ($item->fb_number, truncate($item->parent_id ? $item->description_as_stripped_html : $item->title, at => 30)));
|
||
442b26e2 | Moritz Bunkus | }
|
||
0e5e3501 | Sven Schöling | sub tree_node_title { goto &requirement_spec_item_tree_node_title }
|
||
c1569bc1 | Moritz Bunkus | sub requirement_spec_item_jstree_data {
|
||
0e5e3501 | Sven Schöling | my ($item, %params) = @_;
|
||
c1569bc1 | Moritz Bunkus | |||
0e5e3501 | Sven Schöling | my @children = map { requirement_spec_item_jstree_data($_, %params) } @{ $item->children_sorted };
|
||
1f592a0f | Moritz Bunkus | my $type = !$item->parent_id ? 'section' : 'function-block';
|
||
786437b6 | Moritz Bunkus | my $class = $type . '-context-menu tooltip';
|
||
90f4ba5d | Moritz Bunkus | $class .= ' flagged' if $item->is_flagged;
|
||
c1569bc1 | Moritz Bunkus | |||
return {
|
||||
0e5e3501 | Sven Schöling | data => requirement_spec_item_tree_node_title($item),
|
||
c1569bc1 | Moritz Bunkus | metadata => { id => $item->id, type => $type },
|
||
786437b6 | Moritz Bunkus | attr => { id => "fb-" . $item->id, href => $params{href} || '#', class => $class, title => $item->content_excerpt },
|
||
c1569bc1 | Moritz Bunkus | children => \@children,
|
||
};
|
||||
}
|
||||
0e5e3501 | Sven Schöling | sub jstree_data { goto &requirement_spec_item_jstree_data }
|
||
c1569bc1 | Moritz Bunkus | sub requirement_spec_item_dependency_list {
|
||
0e5e3501 | Sven Schöling | my ($item) = @_;
|
||
c1569bc1 | Moritz Bunkus | |||
$::locale->language_join([ map { $_->fb_number } @{ $item->dependencies } ]);
|
||||
}
|
||||
0e5e3501 | Sven Schöling | sub dependency_list { goto &requirement_spec_item_dependency_list }
|
||
c1569bc1 | Moritz Bunkus | 1;
|