use strict;
-use parent qw(Exporter);
+use SL::Presenter::EscapedText qw(escape is_escaped);
use Exporter qw(import);
-our @EXPORT = qw(requirement_spec_text_block_jstree_data
- requirement_spec_item_jstree_data);
+our @EXPORT_OK = qw(requirement_spec);
use Carp;
-use SL::JSON;
+sub requirement_spec {
+ my ($requirement_spec, %params) = @_;
-sub requirement_spec_text_block_jstree_data {
- my ($self, $text_block, %params) = @_;
+ $params{display} ||= 'inline';
- return {
- data => $text_block->title || '',
- metadata => { id => $text_block->id, type => 'textblock' },
- attr => { id => "tb-" . $text_block->id, href => $params{href} || '#' },
- };
-}
-
-sub requirement_spec_item_jstree_data {
- my ($self, $item, %params) = @_;
+ croak "Unknown display type '$params{display}'" unless $params{display} =~ m/^(?:inline|table-cell)$/;
- my @children = map { $self->requirement_spec_item_jstree_data($_, %params) } @{ $item->sorted_children };
- my $type = !$item->parent_id ? 'section' : 'functionblock';
+ my $text = join '', (
+ $params{no_link} ? '' : '<a href="controller.pl?action=RequirementSpec/show&id=' . escape($requirement_spec->id) . '">',
+ escape($requirement_spec->id),
+ $params{no_link} ? '' : '</a>',
+ );
- return {
- data => join(' ', map { $_ || '' } ($item->fb_number, $item->title)),
- metadata => { id => $item->id, type => $type },
- attr => { id => "fb-" . $item->id, href => $params{href} || '#' },
- children => \@children,
- };
+ is_escaped($text);
}
1;