1 package SL::Controller::RequirementSpecTextBlock;
5 use parent qw(SL::Controller::Base);
7 use SL::DB::RequirementSpec;
8 use SL::DB::RequirementSpecTextBlock;
10 use SL::Locale::String;
12 use Rose::Object::MakeMethods::Generic
14 scalar => [ qw(requirement_spec text_block) ],
17 # __PACKAGE__->run_before('load_requirement_spec');
18 __PACKAGE__->run_before('load_requirement_spec_text_block', only => [qw(dragged_and_dropped)]);
24 sub action_dragged_and_dropped {
27 $::lxdebug->dump(0, "form", $::form);
29 my $position = $::form->{position} =~ m/^ (?: before | after | last ) $/x ? $::form->{position} : die "Unknown 'position' parameter";
30 my $dropped_text_block = $position =~ m/^ (?: before | after ) $/x ? SL::DB::RequirementSpecTextBlock->new(id => $::form->{dropped_id})->load : undef;
32 my $dropped_type = $position ne 'last' ? undef : $::form->{dropped_type} =~ m/^ textblocks- (?:front|back) $/x ? $::form->{dropped_type} : die "Unknown 'dropped_type' parameter";
34 $self->text_block->db->do_transaction(sub {
36 $self->text_block->remove_from_list;
37 $self->text_block->output_position($position =~ m/before|after/ ? $dropped_text_block->output_position : $::form->{dropped_type} eq 'textblocks-front' ? 0 : 1);
38 $self->text_block->add_to_list(position => $position, reference => $dropped_text_block ? $dropped_text_block->id : undef);
41 $self->render(\'', { type => 'json' });
48 sub load_requirement_spec {
50 $self->requirement_spec(SL::DB::RequirementSpec->new(id => $::form->{requirement_spec_id})->load || die "No such requirement spec");
53 sub load_requirement_spec_text_block {
55 $self->text_block(SL::DB::RequirementSpecTextBlock->new(id => $::form->{id})->load || die "No such requirement spec text block");