Pflichtenheft: Zugriff auf nicht vorhandenes »visible_item« verhindern
authorMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 18 Aug 2016 08:15:06 +0000 (10:15 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 18 Aug 2016 08:52:13 +0000 (10:52 +0200)
Sind im Baum gerade Textblöcke ausgewählt, so liefert die Funktion
»visible_item« undef zurück, weil aktuell kein Item (= Abschnitt oder
Funktionsblock) sichtbar ist.

Wird in so einem Moment ein Abschnitt oder Funktionsblock per Drag &
Drop verschoben, so darf daher kein Zugriff auf Funktionen von
»visible_item« stattfinden. Die Prüfung, ob aktuell überhaupt Abschnitte
zu sehen sind, muss daher vorher erfolgen.

SL/Controller/RequirementSpecItem.pm
doc/changelog

index b751292..3ba774b 100644 (file)
@@ -94,14 +94,14 @@ sub action_dragged_and_dropped {
     $self->item->add_to_list(position => $position, reference => $::form->{dropped_id} || undef);
   });
 
-  $self->item(SL::DB::RequirementSpecItem->new(id => $self->item->id)->load);
-  my $new_section         = $self->item->section;
-  my $new_visible_section = SL::DB::RequirementSpecItem->new(id => $self->visible_item->id)->load->section;
-
   return $self->invalidate_version->render if !$old_visible_section || ($new_type eq 'section');
 
   # From here on $old_visible_section is definitely set.
 
+  $self->item(SL::DB::RequirementSpecItem->new(id => $self->item->id)->load);
+  my $new_section         = $self->item->section;
+  my $new_visible_section = SL::DB::RequirementSpecItem->new(id => $self->visible_item->id)->load->section;
+
   my $old_parent  = SL::DB::RequirementSpecItem->new(id => $old_parent_id)->load;
   my $old_section = $old_parent->section;
 
index af06fff..e0ab63a 100644 (file)
@@ -24,6 +24,13 @@ Administrative Änderungen
     beschleunigt. Dafür wird die benötigte Minimalversion von Postgres auf 9.1
     angehoben.
 
+Bugfixes:
+
+  - Pflichtenheftmodul: Es wurde eine Fehlermeldung angezeigt, wenn im
+    rechten Teil des Fensters aktuell Textblöcke zu sehen sind,
+    während Abschnitte oder Funktionsblöcke via Drag & Drop verschoben
+    wurden.
+
 2016-07-05 - Release 3.4.1
 
 kleinere neue Features und Detailverbesserungen: