Bugfix: CVar Sichtbarkeit in Projekten.
authorSven Schöling <s.schoeling@linet-services.de>
Wed, 1 Sep 2010 15:45:35 +0000 (17:45 +0200)
committerSven Schöling <s.schoeling@linet-services.de>
Wed, 1 Sep 2010 15:57:48 +0000 (17:57 +0200)
Dieser Patch behebt zwei unabhängige Bugs, die dazu geführt haben, dass CVars
für Projekte nicht bearbeitbar waren.

Der erste ist, dass CVars für Projekte nicht vom validiersystem betrofen sind,
und deshalb always_valid geflaggt sein müssen.  Das zweite hat verhindert, dass
bereits bestehende invalid flags gelöscht werden, wenn ein always_valid Objekt
seine CVars speichert. Normalerweise ist das kein Problem, muss hier aber
passieren für die Backwards Kompatibilität.

SL/CVar.pm
SL/Projects.pm

index 19f1e5f..7f82a2d 100644 (file)
@@ -337,11 +337,10 @@ sub save_custom_variables {
 
     do_statement($form, $sth, $query, @values);
 
-    unless ($params{always_valid}) {
-      $self->save_custom_variables_validity(trans_id => $params{trans_id}, config_id => $config->{id},
-        validity => ($params{variables}->{"$params{name_prefix}cvar_$config->{name}$params{name_postfix}_valid"} ? 1 : 0)
-      );
-    };
+    my $valid_index = "$params{name_prefix}cvar_$config->{name}$params{name_postfix}_valid";
+    $self->save_custom_variables_validity(trans_id => $params{trans_id}, config_id => $config->{id},
+      validity => ($params{variables}{$valid_index} || $params{always_valid} ? 1 : 0)
+    );
   }
 
   $sth->finish();
index f5f48e7..c25e75a 100644 (file)
@@ -189,7 +189,8 @@ sub save_project {
   CVar->save_custom_variables('dbh'       => $dbh,
                               'module'    => 'Projects',
                               'trans_id'  => $params{id},
-                              'variables' => $form);
+                              'variables' => $form,
+                              'always_valid' => 1);
 
   $dbh->commit();