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");