use Rose::DB::Object::Helpers;
use Rose::DB::Object::Util;
+use SL::Common ();
use SL::DB::MetaSetup::RequirementSpecItem;
use SL::DB::Manager::RequirementSpecItem;
use SL::DB::Helper::ActsAsList;
use SL::DB::Helper::AttrDuration;
+use SL::DB::Helper::AttrHTML;
use SL::DB::Default;
use SL::Locale::String;
use SL::PrefixedNumber;
__PACKAGE__->configure_acts_as_list(group_by => [qw(requirement_spec_id parent_id)]);
__PACKAGE__->attr_duration(qw(time_estimation));
+__PACKAGE__->attr_html('description');
__PACKAGE__->before_save(\&_before_save_create_fb_number);
-__PACKAGE__->before_save(\ &_before_save_invalidate_requirement_spec_version);
+__PACKAGE__->before_save(\&_before_save_invalidate_requirement_spec_version);
__PACKAGE__->before_delete(\&_before_delete_invalidate_requirement_spec_version);
sub _before_save_create_fb_number {
$self->requirement_spec->update_attributes($method => $next_number) || return 0;
- $method = 'requirement_spec_' . ($self->parent_id ? 'function_block' : 'section') . '_number_format';
- my $format = SL::DB::Default->get->$method;
+ $method = ($self->parent_id ? 'function_block' : 'section') . '_number_format';
+ my $format = $self->requirement_spec->type->$method;
$self->fb_number(SL::PrefixedNumber->new(number => $format || 0)->set_to($next_number));
sub _before_save_invalidate_requirement_spec_version {
my ($self, %params) = @_;
- return 1 if !$self->requirement_spec_id;
+ return 1 if !$self->requirement_spec_id || $self->requirement_spec->working_copy_id;
my %changed_columns = map { $_ => 1 } (Rose::DB::Object::Helpers::dirty_columns($self));
my $has_changed = !Rose::DB::Object::Util::is_in_db($self);
croak "Not a writer" if @args;
- my @children = sort { $a->position <=> $b->position } $self->children;
- return wantarray ? @children : \@children;
+ return [ sort { $a->position <=> $b->position } $self->children ];
}
sub section {
return $self->item_type eq 'section' ? 'function-block' : 'sub-function-block';
}
+sub content_excerpt {
+ my ($self) = @_;
+
+ return Common::truncate($self->description_as_stripped_html // '', at => 200);
+}
+
+
1;
__END__
=item C<children_sorted>
-Returns an array (or an array reference depending on context) of
-direct children (not of grandchildren) for C<$self> ordered by their
-positional column in ascending order.
+Returns an array reference of direct children (not of grandchildren)
+for C<$self> ordered by their positional column in ascending order.
=item C<section>