Code

Implement a debconf configuration overview (Trac #2025)
authorpsc <psc@594d385d-05f5-0310-b6e9-bd551577e9d8>
Tue, 16 Mar 2010 10:28:57 +0000 (10:28 +0000)
committerpsc <psc@594d385d-05f5-0310-b6e9-bd551577e9d8>
Tue, 16 Mar 2010 10:28:57 +0000 (10:28 +0000)
- When editting a package list enable the user to
click 'Edit configurations' and get an overview of
and edit all debconf configurations in the given package list.
- Add the possibility to add debconf settings for settings
which are not known to gosa-si.
- Add some safety measures to the debconfTemplate class
to avoid breaking values because of quotes etc.

git-svn-id: https://oss.gonicus.de/repositories/gosa/branches/2.6-lhm@16619 594d385d-05f5-0310-b6e9-bd551577e9d8

trunk/gosa-plugins/fai/admin/fai/NewDebconfConfiguration.tpl [new file with mode: 0644]
trunk/gosa-plugins/fai/admin/fai/class_NewDebconfConfiguration.inc [new file with mode: 0644]
trunk/gosa-plugins/fai/admin/fai/class_debconfTemplate.inc
trunk/gosa-plugins/fai/admin/fai/class_faiDebconfConfigurations.inc [new file with mode: 0644]
trunk/gosa-plugins/fai/admin/fai/class_faiPackage.inc
trunk/gosa-plugins/fai/admin/fai/class_faiPackageConfiguration.inc
trunk/gosa-plugins/fai/admin/fai/faiDebconfConfigurations.tpl [new file with mode: 0644]
trunk/gosa-plugins/fai/admin/fai/faiPackage.tpl
trunk/gosa-plugins/fai/locale/de/LC_MESSAGES/messages.po
trunk/gosa-plugins/fai/locale/messages.po

diff --git a/trunk/gosa-plugins/fai/admin/fai/NewDebconfConfiguration.tpl b/trunk/gosa-plugins/fai/admin/fai/NewDebconfConfiguration.tpl
new file mode 100644 (file)
index 0000000..ecf1ae9
--- /dev/null
@@ -0,0 +1,63 @@
+<div style="font-size: 18px;">
+{t}New debconf configuration{/t}
+</div>
+<br>
+<p class="seperator">
+{t}In this dialog you can add a new debconf configuration.{/t}
+<br>
+<br>
+<br>
+<table summary="" style='width:100%'>
+ <tr>
+  <td style='width:49%'>
+   <table summary="">
+    <tr>
+     <td> 
+        <b>{t}Package{/t}</b>
+     </td>
+     <td>
+        <b>{t}Variable{/t}</b>
+     </td>
+     <td>
+        <b>{t}Type{/t}</b>
+     </td>
+     <td>
+        <b>{t}Value{/t}</b>
+     </td>
+   </tr>
+   <tr>
+      <td style="width:180px";>
+        <select name="Package" title="{t}Select package{/t}" style="width:150px;">
+        {html_options options=$packages selected=$package}
+        </select>
+      </td>
+      <td style="width: 300px;">
+        <input type="text" style="width:280px" name="FAIvariable" value="{$variable}">
+      </td>
+      <td style="width: 120px;">
+        <select name="FAIvariableType" title="{t}Select type{/t}" style="width: 100px;">
+        {html_options options=$variable_types selected=$variable_type}
+        </select>
+      </td>
+      <td style="width:300px;">
+        <input type="text" name="FAIvariableContent" title="{t}Value{/t}" value="{$content}" style="width:280px;">
+      </td>
+   </tr>
+   </table>
+   <br>
+   <br>
+  </td>
+ </tr>
+</table>
+</table>
+<br>
+<div align="right">
+    <input type="submit" name="save_AddDebconf" value="{msgPool type=applyButton}">&nbsp;
+    <input type="submit" name="cancel_AddDeconf" value="{msgPool type=cancelButton}">
+</div>
+<!-- Place cursor -->
+<script language="JavaScript" type="text/javascript">
+       <!--
+       focus_field('SelectedPackage');
+       -->
+</script>
diff --git a/trunk/gosa-plugins/fai/admin/fai/class_NewDebconfConfiguration.inc b/trunk/gosa-plugins/fai/admin/fai/class_NewDebconfConfiguration.inc
new file mode 100644 (file)
index 0000000..57c20b8
--- /dev/null
@@ -0,0 +1,149 @@
+<?php
+
+class NewDebconfConfiguration extends plugin
+{
+  /* attribute list for save action */
+  var $ignore_account     = TRUE;
+  var $attributes         = array();
+  var $objectclasses      = array("whatever");
+
+  var $objectClass        = false;
+  var $DebconfConfiguration = array();
+  var $packages = array();
+  var $variable_types = array(
+                            "boolean" => "boolean",
+                            "multiselect" => "multiselect",
+                            "password" => "password",
+                            "select" => "select",
+                            "string" => "string",
+                          );
+  var $parent;
+
+  function NewDebconfConfiguration (&$config, $dn, &$parent)
+  {
+    plugin::plugin ($config, $dn);
+
+    /* Get list of packages */
+    $this->packages = $parent->packages;
+    /* Add d-i as special exception */
+    $this->packages['d-i'] = 'd-i';
+    ksort($this->packages);
+
+    $this->parent = $parent;
+  }
+
+  function execute()
+  {
+    /* Call parent execute */
+    plugin::execute();
+
+    /* Fill templating stuff */
+    $smarty = get_smarty();
+    $display= "";
+
+    $ldap = $this->config->get_ldap_link();
+    /* Get package names */
+
+    /* Pre-Fill input fields (needed for save_object if input fields are missing) */
+    $variable = "";
+    $variable_type = "";
+    $content = "";
+    $package = "";
+    if (isset($this->DebconfConfiguration['Package'])) {
+      $package = $this->DebconfConfiguration['Package'];
+    }
+    if (isset($this->DebconfConfiguration['FAIvariable'])) {
+      $variable = $this->DebconfConfiguration['FAIvariable'];
+    }
+    if (isset($this->DebconfConfiguration['FAIvariableType'])) {
+      $variable_type = $this->DebconfConfiguration['FAIvariableType'];
+    }
+
+    if (isset($this->DebconfConfiguration['FAIvariableContent'])){
+      $content = $this->DebconfConfiguration['FAIvariableContent'];
+    }
+    $smarty->assign("package", $package);
+    $smarty->assign("variable", $variable);
+    $smarty->assign("variable_type", $variable_type);
+    $smarty->assign("content", $content);
+    
+
+    /* Assign packages and variable types */
+    $smarty->assign("variable_types", $this->variable_types);
+    $smarty->assign("packages", $this->packages);
+
+    /* Fetch template and display */
+    $display.= $smarty->fetch(get_template_path('NewDebconfConfiguration.tpl', TRUE));
+    return($display);
+  }
+
+  /* Get posts and set class name 
+   */ 
+  function save_object()
+  {
+    if (isset($_POST['save_AddDebconf'])) {
+      foreach (array("FAIvariableType", "FAIvariableContent", "FAIvariable", "Package") as $attr) 
+      {
+        if (isset($_POST[$attr])) {
+          $this->DebconfConfiguration[$attr] = get_post($attr);
+        }
+      }
+
+      /* Normalize boolean values */
+      if($this->DebconfConfiguration['FAIvariableType'] == 'boolean') {
+        $this->DebconfConfiguration['FAIvariableContent'] = $this->parent->normalize_bool($this->DebconfConfiguration['FAIvariableContent']);
+      }
+    }
+  }
+
+  /* Check given class name 
+   */
+  function check()
+  {
+    /* Call common method to give check the hook */
+    $message= plugin::check();
+
+    $package = $this->DebconfConfiguration['Package'];
+    if (!isset($this->DebconfConfiguration['FAIvariable']) || empty($this->DebconfConfiguration['FAIvariable'])) {
+      $message[] = msgPool::required("Variable");
+    }
+
+    if ($this->DebconfConfiguration['FAIvariableType'] == 'boolean') {
+      if (!empty($this->DebconfConfiguration['FAIvariableContent'])) {
+        $value = strtolower($this->DebconfConfiguration['FAIvariableContent']);
+      }
+      else {
+        $value = "";
+      }
+      if (!$this->parent->normalize_bool($value, TRUE)) {
+        $message[] = sprintf(_("The specified value '%s' for the variable type boolean is invalid.<br><i>Allowed values: true, false, 1, 0.</i>"), $this->DebconfConfiguration['FAIvariableContent']);
+      }
+        
+    }
+    
+    if (isset($this->DebconfConfiguration['FAIvariable'])){
+        $name = $this->DebconfConfiguration['FAIvariable'];
+        if (isset($this->parent->DebconfConfigurations[$package][$name])) {
+            $message[] = msgPool::duplicated('Variable');
+        }
+
+        if (isset($this->parent->DebconfDefaults[$package][$name])) {
+            $message[] = msgPool::duplicated('Variable');
+        }
+    }
+
+
+    return ($message);
+  }
+
+
+  /* Return the class name */
+  function save()
+  {
+    return($this->DebconfConfiguration);
+  }
+
+}
+
+// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
+?>
index 2e9fca6b30ed59dea9958207e5274ef074f77d56..56dadcb21f6d77c96aeba49c5c61ea7e08a8032d 100644 (file)
@@ -137,13 +137,13 @@ class debconf
         /* special handling for arrays */
         if(is_array($_POST[$entry['post_name']])){
           $str = "";
-          foreach($_POST[$entry['post_name']] as $val){
+          foreach(get_post($entry['post_name']) as $val){
             $str.= $val.", ";
           }
           $str = preg_replace("/\,\ $/","",$str);
           $this->template[$post_name]['Default'] = $str;
         }else{
-          $this->template[$post_name]['Default'] = $_POST[$entry['post_name']];
+          $this->template[$post_name]['Default'] = get_post($entry['post_name']);
         }
       }
     }
@@ -152,6 +152,9 @@ class debconf
       if(isset($_POST["multi-".$entry['post_name']])){ 
         $this->template[$post_name]['Default']= "";
         foreach($_POST as $name => $value){
+          if (get_magic_quotes_gpc()) {
+              $value = stripcslashes($value);
+          }
           if(preg_match("/".$entry['post_name']."-multi-/",$name)){
             $this->template[$post_name]['Default'] .= $value.", ";
           }
@@ -224,9 +227,9 @@ class debconf
 
     foreach(array("true","false") as $value){
       if($data['Default'] == $value){
-        $result.="<input type='radio' name='".$data['post_name']."' value='".$value."' checked>"._($value);
+        $result.="<input type='radio' name='".$data['post_name']."' value=\"".$value."\" checked>"._($value);
       }else{
-        $result.="<input type='radio' name='".$data['post_name']."' value='".$value."' >"._($value);
+        $result.="<input type='radio' name='".$data['post_name']."' value=\"".$value."\" >"._($value);
       }
       $result.="<br>";
     }
@@ -265,9 +268,9 @@ class debconf
       $defs = split(", ",$data['Default']);
       foreach($choices as $value){
         if(in_array($value,$defs)){
-          $result.="\n<input name='".$post_name."-multi-".$value."' type='checkbox' value='".htmlentities($value)."' checked>".$value."<br>";
+          $result.="\n<input name='".$post_name."-multi-".$value."' type='checkbox' value=\"".htmlentities($value)."\" checked>".$value."<br>";
         }else{
-          $result.="\n<input name='".$post_name."-multi-".$value."' type='checkbox' value='".htmlentities($value)."'>".$value."<br>";
+          $result.="\n<input name='".$post_name."-multi-".$value."' type='checkbox' value=\"".htmlentities($value)."\">".$value."<br>";
         }
       }
 
@@ -292,7 +295,7 @@ class debconf
   {
     $result=  "";
     $result.= "<tr><td valign='top'>";
-    $result.= "<h2>".$data['Topic']."</h2>".$data['Description']."</td><td style=\"white-space:nowrap; border-left: 1px solid rgb(160, 160, 160);\">&nbsp;<input type='text' name='".$data['post_name']."' value='".$data['Default']."'></b><br><br>";
+    $result.= "<h2>".$data['Topic']."</h2>".$data['Description']."</td><td style=\"white-space:nowrap; border-left: 1px solid rgb(160, 160, 160);\">&nbsp;<input type='text' name='".$data['post_name']."' value=\"".$data['Default']."\"></b><br><br>";
     $result.= $data['Description'];
     $result.= "</td>";
 
@@ -324,9 +327,9 @@ class debconf
 
       foreach($choices as $value){
         if($data['Default'] == $value){
-          $result.="\n<input type='radio' name='".$post_name."' value='".htmlentities($value)."' checked >".htmlentities($value)."<br>";
+          $result.="\n<input type='radio' name='".$post_name."' value=\"".htmlentities($value)."\" checked >".htmlentities($value)."<br>";
         }else{
-          $result.="\n<input type='radio' name='".$post_name."' value='".htmlentities($value)."'>".htmlentities($value)."<br>";
+          $result.="\n<input type='radio' name='".$post_name."' value=\"".htmlentities($value)."\">".htmlentities($value)."<br>";
         }
       }
 
@@ -349,7 +352,7 @@ class debconf
                     <h2>".$data['Topic']."</h2>".$data['Description']."
                   </td>
                   <td  style=\"white-space:nowrap; border-left: 1px solid rgb(160, 160, 160);\" valign='top'>
-                    <input type='text' name='".$data['post_name']."' value='".$data['Default']."' style='width:300px;'>
+                    <input type='text' name='".$data['post_name']."' value=\"".$data['Default']."\" style='width:300px;'>
                   </td>
                 </tr>
               ";
diff --git a/trunk/gosa-plugins/fai/admin/fai/class_faiDebconfConfigurations.inc b/trunk/gosa-plugins/fai/admin/fai/class_faiDebconfConfigurations.inc
new file mode 100644 (file)
index 0000000..a6a7e8a
--- /dev/null
@@ -0,0 +1,456 @@
+<?php
+
+class faiDebconfConfigurations extends plugin
+{
+    /* attribute list for save action */
+    var $ignore_account = TRUE;
+    var $attributes     = array();
+    var $objectclasses  = array();
+    var $FAIstate = "";
+    var $DebconfConfigurations = array();
+    var $DebconfDefaults = array();
+    var $DebconfAll = array();
+    var $to_remove = array();
+    var $removed = array();
+    var $package_list = FALSE;
+    var $parent = FALSE;
+    var $packages = array();
+
+    /* Some settings */
+    var $query_gosa_si = TRUE;
+    var $merge_defaults_into_view = TRUE;
+    var $bool_mapping = array(
+                            "0" => 'false',
+                            "1" => 'true',
+                            "true" => 'true',
+                            "false" => 'false'
+                          );
+
+    /*! \brief  Configure all debconf configurations of a given package list
+        @param  Object  $config GOsa configuration object;
+        @param  String  The DN of the current package list.
+     */
+    function faiDebconfConfigurations (&$config, $dn= NULL, &$parent)
+    {
+      plugin::plugin ($config, $dn);
+
+      /* Store some information we need from the parent object */
+      $this->FAIstate = $parent->FAIstate;
+      $this->package_list = $parent->cn;
+      $this->parent = $parent;
+
+      /* Get the list of configurations from the parent object */
+      $this->DebconfConfigurations = $this->parent->ConfiguredPackages;
+      
+      /* Load packages */
+      foreach(array_keys($this->parent->usedPackages) as $package) {
+          $this->packages[$package] = $package;
+      }
+      ksort($this->packages);
+
+
+      /* Determine and assemble release name */
+      $release = $this->parent->parent->parent->fai_release;
+      $tmp= preg_replace('/[,]*'.preg_quote(get_ou('faiBaseRDN'), '/').'.*$/', '', $release);
+      $tmp= preg_replace('/ou=/', '', $tmp);
+      $rev= array_reverse(split(',', $tmp));
+      $this->release= "/";
+      foreach ($rev as $part){
+        $this->release.= "/$part";
+      }
+      $this->release= preg_replace('#^[/]*#', '', $this->release);
+   
+      /* Get the list of debconf configuration for the given package list */
+      $ldap = $config->get_ldap_link();
+
+      /* Get the defaults from gosa-si */
+      if ($this->query_gosa_si == TRUE) {
+        $q = new gosaSupportDaemon();
+        $ret = $q->FAI_get_packages($this->release,array("package","template"),$this->packages);
+        if($q->is_error()){
+            msg_dialog::display(_("Service infrastructure"),msgPool::siError($q->get_error()),ERROR_DIALOG);
+        }
+        else {
+          foreach($ret as $res) {
+            $package = $res['PACKAGE'];
+            if (isset($res['TEMPLATE'])) {
+              $template = base64_decode($res['TEMPLATE']);
+              $debconf_handle = new debconf(preg_replace('/_.*$/', '', get_browser_language()));
+              $debconf_handle->load_from_string($template);
+              $templates = $debconf_handle->template;
+              unset($debconf_handle);
+              foreach($templates as $template) {
+                if (!isset($this->DebconfDefaults[$package][$template['Name']])) {
+                  $this->DebconfDefaults[$package][$template['Name']] = $template;
+                }
+              } 
+            }
+          }
+        }
+      }
+    }
+
+
+    /*! \brief  Returns a html interface, that allow to modify 
+                 the package attributes.
+        @return String  HTML content/ui for this plugin
+     */
+    function execute()
+    {
+      /* Call parent execute */
+      plugin::execute();
+
+      ksort($this->DebconfConfigurations);
+
+      if(is_object($this->dialog)) {
+        $this->dialog->save_object();
+      $display = $this->dialog->execute();
+      return($display);
+    }
+
+    $divlist = new divSelectBox("faiDebconfConfigurations");
+    $divlist->setHeight(400);
+
+    /* Define header */
+    $field1 = array ("string" => "<b>" . _("Package") . "</b>");
+    $field2 = array ("string" => "<b>" . _("Variable") . "</b>");
+    $field3 = array ("string" => "<b>" . _("Type"). "</b>");
+    $field4 = array ("string" => "<b>" . _("Value") . "</b>");
+    $field5 = array ("string" => "");
+    $divlist->AddEntry(array($field1,$field2,$field3,$field4,$field5));
+
+    /* Define some vars we will need in the following loop */
+    $str_reset = "<input type='image' title='"._("Reset")."'
+      src='images/lists/reload.png' name='reset_%s'>&nbsp;";
+    $str_delete = "<input type='image' title='"._("Delete")."'
+      src='images/lists/trash.png' name='reset_%s'>&nbsp;";
+    $str_edit = "<input type='image' title='"._("Edit")."'
+      src='images/lists/edit.png' name='edit_%s'>&nbsp;";
+    $str_input = "<input type=text length=100 value=\"%s\" name='val_%s' %s>";
+
+    /* Merge defaults into display */
+    if ($this->merge_defaults_into_view) {
+      $defaults = array();
+      foreach($this->DebconfDefaults as $package => $package_data){
+        foreach($package_data as $debconf_info) {
+            $name = $debconf_info['Name'];
+            $value = $debconf_info['Default'];
+            $type = $debconf_info['Type'];
+            if(!in_array($type,array("boolean","multiselect","password","select","string","text"))){
+              continue;
+            }
+            $defaults[$package][$name] = array( 'Name' => $name, 'Value' => $value, 'Type' => $type);
+        }
+      }
+      $this->DebconfAll = $this->DebconfConfigurations;
+      
+      foreach($this->packages as $package) {
+        if (isset($defaults[$package])) {
+          if (isset($this->DebconfConfigurations[$package])) {
+            $this->DebconfAll[$package] = array_merge($defaults[$package], $this->DebconfConfigurations[$package]);
+          }else {
+            $this->DebconfAll[$package] = $defaults[$package];
+          }
+
+        }
+
+      }
+    } else {
+      $this->DebconfAll = $this->DebconfConfigurations;
+    }
+    ksort($this->DebconfAll);
+
+    /* Build package list */
+    $defaults_count = count($this->DebconfDefaults);
+    foreach($this->DebconfAll as $package => $package_data) {
+      foreach($package_data as $debconf_info) {
+        /* Do not show removed entries */
+        if (isset($debconf_info['Status']) && $debconf_info['Status'] == 'removed') {
+          continue;
+        }
+
+        /* Base64-encoded identifier for every package/debconf_data combination
+         * is in the form of packge/Name e.g. locales/locales/locales_to_generate */
+        $identifier = base64_encode(sprintf("%s/%s",$package, $debconf_info['Name']));
+
+        /* Define actions for this entry */ 
+        $actions = "";
+        if(!preg_match('/^freeze/', $this->FAIstate) && 
+          $this->acl_is_writeable("FAIdebconfInfo")) {
+            /* Don't enable actions if no gosa-si defaults available */
+            $show_reset = FALSE;
+            $show_edit = FALSE;
+            $show_blank = FALSE;
+            if ($defaults_count != 0) {
+                $name = $debconf_info['Name'];
+
+                if (isset($this->DebconfDefaults[$package][$name])) {
+                  $show_edit = TRUE;
+                }
+                else {
+                  $show_delete = TRUE;
+                }
+
+                if (isset($this->DebconfConfigurations[$package][$name]) && isset($this->DebconfDefaults[$package][$name])) {
+                  $val = $this->DebconfConfigurations[$package][$name]['Value'];
+                  $default_val = $this->DebconfDefaults[$package][$name]['Default'];
+                  /* Make values comparable */
+                  if (is_array($val)) {
+                    $val = "";
+                  }
+                  if ($val != $default_val) {
+                    $show_reset = TRUE;
+                  }
+                  else {
+                    $show_blank = TRUE;
+                  }
+                }elseif (!isset($this->DebconfConfigurations[$package][$name]) && isset($this->DebconfDefaults[$package][$name])) {
+                  $show_blank = TRUE;
+                }
+            }
+
+            if ($show_reset) {
+                $actions .= sprintf("$str_reset", $identifier);
+            } elseif ($show_blank) {
+                $actions .= "<img src='images/empty.png' width=18>";
+            } else {
+                $actions .= sprintf("$str_delete", $identifier);
+            }
+            if ($show_edit) {
+              $actions .= sprintf("$str_edit", $identifier);
+            }
+        }
+
+        /* Do not allow editing if FAIstate is freeze */
+        $input_disabled = "";
+        if (preg_match('/^freeze/', $this->FAIstate)) {
+          $input_disabled = "disabled";
+        }
+
+        /* Pre-Fill input field with the defined value */
+        $input_value = "";
+        if (!empty($debconf_info['Value'])) {
+          $input_value = htmlentities($debconf_info['Value']);
+        }
+        $input_field = sprintf("$str_input", $input_value, $identifier, $input_disabled);
+
+
+        $field1 = array( "string" => $package, "attach" => "style='width:120px;'" );
+        $field2 = array( "string" => $debconf_info['Name']);
+        $field3 = array( "string" => $debconf_info['Type'],"attach" => "style='width:100px;'");
+        $field4 = array( "string" => $input_field);
+        $field5 = array( "string" => $actions, "attach" => "style='width:50px; border-right:0px;'");
+        $divlist->AddEntry(array($field1, $field2, $field3, $field4, $field5));
+      }
+    }
+    /* Fill templating stuff */
+    $smarty     = get_smarty();
+    $smarty->assign("divlist", $divlist->DrawList());
+    $smarty->assign("headline", sprintf(_("Debconf information for package list '%s'"), $this->package_list));
+    return($smarty->fetch(get_template_path('faiDebconfConfigurations.tpl', TRUE)));
+  }
+
+
+  function normalize_bool($bool_value, $check_mode=FALSE) {
+    $bool_value = strtolower($bool_value);
+    if(isset($this->bool_mapping[$bool_value])) {
+      return $this->bool_mapping[$bool_value];
+    } else {
+      return ($check_mode) ? FALSE : $bool_value;
+    }
+  }
+
+  /*! \brief Return the components of an identifier as an array of two elements */
+  function getIdentifierComponents($identifier) {
+    $identifier_components = explode('/', $identifier);
+    $package = $identifier_components[0];
+    $name = preg_replace("/^".$package."\//", "", $identifier, 1);
+    return(array($package, $name));
+  }
+
+  function DeleteEntry($identifier) {
+    list($package, $name) = $this->getIdentifierComponents($identifier);
+    if (isset($this->DebconfConfigurations[$package][$name])) {
+      $this->to_remove[$package][$name] = $this->DebconfConfigurations[$package][$name];
+      unset($this->DebconfConfigurations[$package][$name]);
+    }
+  }
+
+  function UpdateEntry($identifier, $newval="") {
+    list($package, $name) = $this->getIdentifierComponents($identifier);
+    if (!isset($this->DebconfConfigurations[$package][$name])) {
+      $this->DebconfConfigurations[$package][$name] = $this->DebconfDefaults[$package][$name];
+    }
+
+    /* Normalize boolean values */
+    if ($this->DebconfConfigurations[$package][$name]['Type'] == 'boolean') {
+      $newval = $this->normalize_bool($newval);
+    }
+
+    $this->DebconfConfigurations[$package][$name]['Value'] = $newval;
+
+    if (isset($this->DebconfDefaults[$package][$name])) {
+      $default_value = $this->DebconfDefaults[$package][$name]['Default'];
+
+      if ($default_value == $newval) {
+        $dn = "FAIvariable=".$name.",".$this->parent->dn;
+        $ldap = $this->config->get_ldap_link();
+        $ldap->cat($dn);
+        if ($ldap->count()) {
+          $attrs = $ldap->fetch();
+          if (isset($attrs['FAIvariableContent']) && $attrs['FAIvariableContent'][0] == $newval) {
+            /* Do not store default values unless its still a change compared to the LDAP */
+            unset($this->DebconfConfigurations[$package][$name]);
+          } else {
+            /* Values different from the default reset removal status */
+            unset($this->to_remove[$package][$name]);
+          }
+        } else {
+          unset($this->DebconfConfigurations[$package][$name]);
+        }
+      }
+      else {
+        /* Values different from the default reset removal status */
+        unset($this->to_remove[$package][$name]);
+      }
+    }
+    else {
+      /* This is no entry with a default value setting, so a new value removes
+       * the removal status */
+      if (isset($this->to_remove[$package][$name])) {
+        unset($this->to_remove[$package][$name]);
+      }
+    }
+
+    if (isset($this->DebconfConfigurations[$package][$name]) && !$this->DebconfConfigurations[$package][$name]['Value']) {
+        $this->DebconfConfigurations[$package][$name]['Value'] = array();
+    }
+  }
+
+  /* Save data to object */
+  function save_object()
+  {
+     /* Process values */
+    if (isset($_POST['update_values'])) {
+      foreach($this->DebconfAll as $package => $package_data) {
+          foreach($package_data as $debconf_info) {
+              $identifier = sprintf("%s/%s",$package, $debconf_info['Name']);
+              $post_key = sprintf("val_%s", base64_encode($identifier));
+              if (isset($_POST[$post_key])) {
+                $this->UpdateEntry($identifier, get_post($post_key));
+              }
+              else {
+                $this->UpdateEntry($identifier);
+              }
+          }
+      }
+    }
+
+    foreach($_POST as $key => $value) {
+      if (preg_match("/^reset_/", $key)) {
+        $identifier = base64_decode(str_replace("reset_", "", $key));
+        $this->DeleteEntry($identifier);
+        break;
+      }
+
+      if (preg_match("/^edit_/", $key)) {
+        $identifier = base64_decode(str_replace("edit_", "", $key));
+        list($package, $name) = $this->getIdentifierComponents($identifier);
+        $this->dialog = new faiPackageConfiguration($this->config, $this->parent->dn, $package, $this->release, $this->DebconfConfigurations[$package]);
+        $this->dialog->used_by_faiDebconfConfigurations = TRUE;
+        break;
+      }
+      if (preg_match("/^NewDebconfEntry$/", $key)) {
+        $this->dialog = new NewDebconfConfiguration($this->config, $this->parent->dn, $this);
+        $this->is_dialog = TRUE;
+        break;
+      }
+    }
+    /* Cancel add debconf dialog */
+    if (isset($_POST['cancel_AddDeconf'])) {
+      $this->dialog = FALSE;
+    }
+
+    /* Save add debconf dialog */
+    if (isset($_POST['save_AddDebconf'])) {
+      $this->dialog->save_object();
+      $msgs = $this->dialog->check();
+      if (count($msgs)>0) {
+        foreach($msgs as $msg){
+          msg_dialog::display(_("Error"), $msg, ERROR_DIALOG);
+        }
+      }else {
+          $new_config = $this->dialog->DebconfConfiguration;
+          $this->dialog = FALSE;
+          $package = $new_config['Package'];
+          $name = $new_config['FAIvariable'];
+          $data = array(
+                        'Name' => $name,
+                        'Value' => $new_config['FAIvariableContent'],
+                        'Type' => $new_config['FAIvariableType'],
+                        'Status' => 'manually_added',
+                       );
+          $this->DebconfConfigurations[$package][$name] = $data;
+      }
+    }
+
+    /* Handle the classical debconf dialog */
+    /* Cancel configuration */
+    if(isset($_POST['CancelObjectConfig'])){
+      $this->dialog = false;
+      $this->is_dialog=false;
+    }
+
+    /* Save Configuration */
+    if(isset($_POST['SaveObjectConfig'])){
+      if(!preg_match("/^freeze/", $this->FAIstate)){
+        $result = $this->dialog->save();
+        foreach($this->packages as $package) {
+          if (isset($result[$package])) {
+            foreach($result[$package] as $attr => $data) {
+                $identifier = sprintf("%s/%s", $package, $attr);
+                $this->UpdateEntry($identifier, $data['Value']);
+            }
+          }
+        }
+      }
+      $this->dialog = false;
+      $this->is_dialog=false;
+    }
+  }
+
+  /* Check supplied data */
+  function check()
+  {
+    /* Call common method to give check the hook */
+    $message= plugin::check();
+    $message = array();
+
+    foreach($this->DebconfConfigurations as $package => $package_data) {
+      foreach($package_data as $debconf_info) {
+        if ($debconf_info['Type'] == 'boolean') {
+          if (!empty($debconf_info['Value'])) {
+            $value = strtolower($debconf_info['Value']);
+          } else {
+            $value = "";
+          }
+
+          if (!$this->normalize_bool($value, TRUE)) {
+            $message[] = sprintf(_("The specified value '%s' for variable '%s' is not valid with the specified boolean variable type.<br><i>Allowed values: true, false, 1, 0.</i>"), $debconf_info['Value'], $debconf_info['Name']);
+          }
+      }
+     }
+    }
+
+    return ($message);
+  }
+
+  function save()
+  {
+    $this->save_object();
+    return($this->DebconfConfigurations);
+  }
+}
+// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
+?>
index e877dfd1515aa858d6ff25f08f8b8245762da3ec..f801ece82281382189d3ebc78f5e0efd5ef0ce86 100644 (file)
@@ -23,6 +23,7 @@ class faiPackage extends plugin
   var $sub64coded       = array();
 
   var $ConfiguredPackages = array();
+  var $ConfigurationsToRemove = array();
 
   /* Specific attributes */
   var $cn               = "";       // The class name for this object
@@ -53,7 +54,7 @@ class faiPackage extends plugin
       "pending", "dpkgc" );
 
   var $direct_packages_add = FALSE;
-
+  var $configure_dialog_shown = FALSE;
 
   function faiPackage (&$config, $dn= NULL)
   {
@@ -85,6 +86,9 @@ class faiPackage extends plugin
       foreach($this->usedPackages as $name => $value){
         $PackageFilter .= "(FAIpackage=".$name.")";
       }
+      /* Also fetch d-i */
+      $PackageFilter .= "(FAIpackage=d-i)";
+
       $PackageFilter = "(&(objectClass=FAIdebconfInfo)(|".$PackageFilter."))";
 
       /* Search for configuration objects */ 
@@ -120,6 +124,10 @@ class faiPackage extends plugin
           }
           $this->ConfiguredPackages[$attr['FAIpackage'][0]][$attr['FAIvariable'][0]]=$tmp;
         }
+        else {
+          $tmp['Value'] = "";
+          $this->ConfiguredPackages[$attr['FAIpackage'][0]][$attr['FAIvariable'][0]]=$tmp;
+        }
       }
 
       $this->FAIdebianSection = array();
@@ -247,7 +255,6 @@ class faiPackage extends plugin
 
 
           foreach ($valid_packages as $value) {
-            
             if( $do_si_query == true ) {
               $res = $daemon->FAI_get_packages($this->FAIdebianRelease,$query_attrs,array($value),0,1);
               if( ! $daemon->is_error()){
@@ -279,6 +286,13 @@ class faiPackage extends plugin
       }
     }
 
+    if(isset($_POST['EditConfigurations']) &&
+      $this->acl_is_writeable("FAIpackage")) {
+        $this->dialog = new faiDebconfConfigurations($this->config, $this->dn, $this);
+        $this->dialog->set_acl_base($this->acl_base);
+        $this->is_dialog = true;
+    }
+
     /* + was pressed to open the package dialog */
     if(isset($_POST['Addpkg']) && 
         $this->acl_is_writeable("FAIpackage") && 
@@ -334,6 +348,7 @@ class faiPackage extends plugin
           if(isset($this->ConfiguredPackages[$pkg])){
             $pkg_config = $this->ConfiguredPackages[$pkg];
           }
+          $this->configure_dialog_shown = TRUE;
           $this->dialog = new faiPackageConfiguration($this->config, $this->dn,$pkg, $this->FAIdebianRelease , $pkg_config);
           $this->is_dialog =true;
         }
@@ -372,18 +387,37 @@ class faiPackage extends plugin
     }
 
     /* Save Configuration */
-    if(isset($_POST['SaveObjectConfig'])){
+    if(isset($_POST['SaveObjectConfig']) && $this->configure_dialog_shown){
       if(!preg_match("/^freeze/", $this->FAIstate)){
         $this->ConfiguredPackages= array_merge($this->ConfiguredPackages,$this->dialog->save());
       }
       $this->dialog = false;
       $this->is_dialog=false;
+      $this->configure_dialog_shown=false;
+    }
+
+    if (isset($_POST['SaveDebconfConfig'])){
+      $this->dialog->save_object();
+      $msgs = $this->dialog->check();
+      if(count($msgs)>0) {
+        foreach($msgs as $msg){
+          msg_dialog::display(_("Error"), $msg, ERROR_DIALOG);
+        }
+      } else {
+        if(!preg_match("/^freeze/", $this->FAIstate)){
+          $this->ConfiguredPackages= $this->dialog->save();
+          $this->ConfigurationsToRemove = $this->dialog->to_remove;
+        }
+        $this->dialog = false;
+        $this->is_dialog = false;
+      }
     }
 
     /* cancel configuration */     
-    if(isset($_POST['CancelObjectConfig'])){
+    if(isset($_POST['CancelObjectConfig']) && $this->configure_dialog_shown){
       $this->dialog = false;
       $this->is_dialog=false;
+      $this->configure_dialog_shown=false;
     }
 
     /* Display dialog */ 
@@ -400,6 +434,7 @@ class faiPackage extends plugin
     /* Create divlist to display a list of all currently used packages
      */
     $divlist = new divSelectBox("faiPackages");
+    $divlist->setHeight(600);
 
     ksort($this->usedPackages);
     if(is_array($this->usedPackages)){
@@ -617,7 +652,6 @@ class faiPackage extends plugin
     /* Save Package configurations */
     foreach($this->ConfiguredPackages as $pkgname => $attrs){
       foreach($attrs as $name => $attr){
-      
         $pkgattrs = array();
 
         foreach($attr as $n=>$v){
@@ -633,6 +667,16 @@ class faiPackage extends plugin
         $pkgattrs['FAIvariableContent']   = $attr['Value'];
         $pkgdn =  "FAIvariable=".$name.",".$this->dn;
 
+        if (is_array($pkgattrs['FAIvariableContent'])) {
+          $ldap = $this->config->get_ldap_link();
+          $ldap->cat($pkgdn);
+          if (!$ldap->count()) {
+            /* Do not try to set FAIvariableContent to empty array if this
+             * debconfInfo object is new */
+            unset($pkgattrs['FAIvariableContent']);
+          }
+        }
+
         /* Tag object */
        $ui= get_userinfo();
         $this->tag_attrs($pkgattrs, $pkgdn, $ui->gosaUnitTag);
@@ -647,6 +691,16 @@ class faiPackage extends plugin
         }
       }
     }
+
+    /* Remove obsolete configurations */
+    foreach($this->ConfigurationsToRemove as $package => $attr) {
+      foreach($attr as $name => $attr) {
+        $dn = "FAIvariable=".$name.",".$this->dn;
+        $ldap = $this->config->get_ldap_link();
+        $ldap->cd($dn);
+        $ldap->rmdir($dn);
+      }
+    }
   }
 
 
@@ -712,7 +766,6 @@ class faiPackage extends plugin
     foreach($this->usedPackages as $name){
       $PackageFilter .= "(FAIpackage=".$name.")";
     }
-    $PackageFilter = "(&(objectClass=FAIdebconfInfo)(|".$PackageFilter."))";
 
     /* Search for configuration objects */ 
     $ldap = $this->config->get_ldap_link();
index ab437c3bc3254caff06dc610194527eb1a9f1a74..d0e0df3c5784811acb347ea53e0e17e16f8db68e 100644 (file)
@@ -48,6 +48,9 @@ class faiPackageConfiguration extends plugin
     $this->Debconf_handle->load_from_string($tpl);
     if($this->Debconf_handle->has_template()){
       foreach($this->pkg_config as $var){
+        if (is_array($var['Value'])) {
+          $var['Value'] = "";
+        }
         $this->Debconf_handle->SetDefault($var['Name'],$var['Value']);
       }
     }
diff --git a/trunk/gosa-plugins/fai/admin/fai/faiDebconfConfigurations.tpl b/trunk/gosa-plugins/fai/admin/fai/faiDebconfConfigurations.tpl
new file mode 100644 (file)
index 0000000..5be3f7d
--- /dev/null
@@ -0,0 +1,13 @@
+<h1><img class="center" alt="" src="images/forward.png" align="middle" title="{t}Package{/t}">&nbsp;{$headline}</h1>
+{$divlist}
+<div align="left" valign="bottom" style="align:left;">
+    <input name="NewDebconfEntry" value="{t}Add{/t}" type="submit">
+</div>
+</table>
+<br>
+<input type="hidden" name="update_values" value="1">
+<div align="right" valign="bottom" style="align:right;">
+    <input name="SaveDebconfConfig" value="{msgPool type=applyButton}" type="submit">
+    <input name="CancelSubObject" value="{msgPool type=cancelButton}" type="submit">
+</div>
+<table style="visibility: hidden;">
index 3afc580c78468877fde48400e051bb3236e4cff6..870ae6ea999e2e753ce128320b341fe322abddaf 100644 (file)
 <p class="seperator">&nbsp;</p>
 <table width="99%" summary="">
        <tr>
-               <td> 
+               <td colspan="2"
                        <h2><img class="center" alt="" src="plugins/fai/images/fai_packages.png" align="middle" title="{t}Used packages{/t}">&nbsp;{t}Used packages{/t}</h2>
                        {$divlist}
                </td>
        </tr>
+</table>
+<table width="99%" summary="">
 {render acl=$FAIpackageACL}
        <tr>
-               <td>
+               <td style="width:600px;">
 {if $direct_packages_add}
                        <input type="text" size="25" name="addPpkgsText" value="" />
                        <input type="submit" name="AddManualpkg" value="{msgPool type=addButton}" />
             <input type="submit" name="Addpkg" value="{msgPool type=addButton}">
 {/if}
                </td>
+        <td style="text-align: right;">
+        <!-- ToDo: ACL? --!>
+        <input type="submit" name="EditConfigurations" value="{t}Edit package configurations{/t}">
+        </td>
        </tr>
 {/render}
 </table>
index 3ebe8cdf826ea0258e11e03dc2169e7627c63369..aa070ab393e829c55f6938d7e771742c37ccc7ea 100644 (file)
@@ -13,7 +13,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: messages\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-02-11 13:22+0100\n"
+"POT-Creation-Date: 2010-03-15 11:14+0100\n"
 "PO-Revision-Date: 2008-12-04 11:27+0100\n"
 "Last-Translator: Cajus Pollmeier <pollmeier@gonicus.de>\n"
 "Language-Team: deutsch <de@li.org>\n"
@@ -40,20 +40,22 @@ msgstr "Sie können diese Erweiterung erst verwenden, wenn FAI aktiviert wurde."
 #: admin/systems/services/repository/class_servRepository.inc:182
 #: admin/systems/services/repository/class_servRepositorySetup.inc:204
 #: admin/fai/class_faiSummaryTab.inc:89
-#: admin/fai/class_faiPartitionTable.inc:180 admin/fai/tabsHook.inc:32
-#: admin/fai/class_faiTemplate.inc:212 admin/fai/tabsProfile.inc:33
-#: admin/fai/class_faiManagement.inc:238 admin/fai/class_faiManagement.inc:614
-#: admin/fai/class_faiManagement.inc:620 admin/fai/class_faiManagement.inc:906
-#: admin/fai/class_faiManagement.inc:950 admin/fai/class_faiManagement.inc:974
+#: admin/fai/class_faiPartitionTable.inc:173 admin/fai/tabsHook.inc:32
+#: admin/fai/class_faiTemplate.inc:208
+#: admin/fai/class_faiDebconfConfigurations.inc:341
+#: admin/fai/tabsProfile.inc:33 admin/fai/class_faiManagement.inc:238
+#: admin/fai/class_faiManagement.inc:614 admin/fai/class_faiManagement.inc:620
+#: admin/fai/class_faiManagement.inc:906 admin/fai/class_faiManagement.inc:950
+#: admin/fai/class_faiManagement.inc:974
 #: admin/fai/class_faiManagement.inc:1238
 #: admin/fai/class_faiScriptEntry.inc:59 admin/fai/class_faiScriptEntry.inc:62
 #: admin/fai/tabsScript.inc:33 admin/fai/tabsPackage.inc:33
-#: admin/fai/tabsPartition.inc:34 admin/fai/class_faiScript.inc:229
+#: admin/fai/tabsPartition.inc:34 admin/fai/class_faiScript.inc:224
 #: admin/fai/tabsTemplate.inc:33 admin/fai/class_FAI.inc:548
-#: admin/fai/class_faiHook.inc:239 admin/fai/class_faiProfile.inc:259
+#: admin/fai/class_faiHook.inc:233 admin/fai/class_faiProfile.inc:263
 #: admin/fai/class_faiHookEntry.inc:62 admin/fai/class_faiHookEntry.inc:65
-#: admin/fai/class_faiVariable.inc:142 admin/fai/class_faiPackage.inc:356
-#: admin/fai/tabsVariable.inc:33
+#: admin/fai/class_faiVariable.inc:142 admin/fai/class_faiPackage.inc:367
+#: admin/fai/class_faiPackage.inc:400 admin/fai/tabsVariable.inc:33
 msgid "Error"
 msgstr "Fehler"
 
@@ -63,12 +65,12 @@ msgstr "FAI Release"
 
 #: admin/systems/services/repository/class_servRepository.inc:177
 #: admin/fai/class_faiSummaryTab.inc:343
-#: admin/fai/class_faiPartitionTable.inc:371
-#: admin/fai/class_faiPartitionTable.inc:551 admin/fai/faiPackage.tpl:9
+#: admin/fai/class_faiPartitionTable.inc:364
+#: admin/fai/class_faiPartitionTable.inc:536 admin/fai/faiPackage.tpl:9
 #: admin/fai/class_faiPartitionTableEntry.inc:375
 #: admin/fai/class_faiPartitionTableEntry.inc:378
 #: admin/fai/class_faiPartitionTableEntry.inc:474
-#: admin/fai/class_faiTemplate.inc:421 admin/fai/class_faiTemplate.inc:545
+#: admin/fai/class_faiTemplate.inc:417 admin/fai/class_faiTemplate.inc:537
 #: admin/fai/faiVariable.tpl:9 admin/fai/class_askClassName.inc:142
 #: admin/fai/class_askClassName.inc:151 admin/fai/class_askClassName.inc:155
 #: admin/fai/class_faiManagement.inc:614 admin/fai/class_faiManagement.inc:620
@@ -76,29 +78,30 @@ msgstr "FAI Release"
 #: admin/fai/class_faiScriptEntry.inc:142
 #: admin/fai/class_faiScriptEntry.inc:145
 #: admin/fai/class_faiScriptEntry.inc:189 admin/fai/faiVariableEntry.tpl:9
-#: admin/fai/faiScript.tpl:9 admin/fai/class_faiScript.inc:327
-#: admin/fai/class_faiScript.inc:483 admin/fai/class_faiScript.inc:646
+#: admin/fai/faiScript.tpl:9 admin/fai/class_faiScript.inc:322
+#: admin/fai/class_faiScript.inc:478 admin/fai/class_faiScript.inc:637
 #: admin/fai/faiScriptEntry.tpl:9 admin/fai/class_faiTemplateEntry.inc:207
 #: admin/fai/class_faiTemplateEntry.inc:273 admin/fai/faiTemplate.tpl:9
 #: admin/fai/faiHookEntry.tpl:9 admin/fai/faiHook.tpl:9
-#: admin/fai/class_faiHook.inc:440 admin/fai/class_faiHook.inc:562
-#: admin/fai/class_faiProfile.inc:407 admin/fai/class_faiProfile.inc:417
-#: admin/fai/class_faiProfile.inc:491 admin/fai/class_faiHookEntry.inc:145
+#: admin/fai/class_faiHook.inc:434 admin/fai/class_faiHook.inc:552
+#: admin/fai/class_faiProfile.inc:413 admin/fai/class_faiProfile.inc:423
+#: admin/fai/class_faiProfile.inc:497 admin/fai/class_faiHookEntry.inc:145
 #: admin/fai/class_faiHookEntry.inc:150 admin/fai/class_faiHookEntry.inc:153
 #: admin/fai/class_faiHookEntry.inc:196 admin/fai/class_faiVariable.inc:296
-#: admin/fai/class_faiVariable.inc:398 admin/fai/class_faiVariableEntry.inc:90
+#: admin/fai/class_faiVariable.inc:397 admin/fai/class_faiVariableEntry.inc:90
 #: admin/fai/class_faiVariableEntry.inc:99
 #: admin/fai/class_faiVariableEntry.inc:102
-#: admin/fai/class_faiVariableEntry.inc:137 admin/fai/class_faiPackage.inc:541
-#: admin/fai/class_faiPackage.inc:667 admin/fai/faiPartitionTable.tpl:9
+#: admin/fai/class_faiVariableEntry.inc:137 admin/fai/class_faiPackage.inc:572
+#: admin/fai/class_faiPackage.inc:707 admin/fai/faiPartitionTable.tpl:9
 #: admin/fai/faiPartitionTableEntry.tpl:6 admin/fai/faiProfile.tpl:9
 msgid "Name"
 msgstr "Name"
 
 #: admin/systems/services/repository/class_servRepository.inc:352
+#: admin/fai/class_faiDebconfConfigurations.inc:71
 #: admin/fai/class_faiManagement.inc:788
 #: admin/fai/class_faiPackageConfiguration.inc:35 admin/fai/class_FAI.inc:566
-#: admin/fai/class_faiPackage.inc:266 admin/fai/class_faiPackage.inc:563
+#: admin/fai/class_faiPackage.inc:269 admin/fai/class_faiPackage.inc:594
 #: admin/fai/class_faiPackageEntry.inc:53
 #: admin/fai/class_faiPackageEntry.inc:193
 msgid "Service infrastructure"
@@ -141,7 +144,7 @@ msgstr "Sektionen"
 #: admin/systems/services/repository/servRepositorySetup.tpl:19
 #: admin/systems/services/repository/class_divListRepositories.inc:23
 #: admin/fai/faiPackage.tpl:37 admin/fai/branch_selector.tpl:25
-#: admin/fai/class_faiPackage.inc:673
+#: admin/fai/class_faiPackage.inc:713
 msgid "Release"
 msgstr "Release"
 
@@ -168,8 +171,10 @@ msgstr "Regulärer Ausdruck zum Erkennen von Objekt-Namen"
 msgid "Add repository"
 msgstr "Repository hinzufügen"
 
-#: admin/fai/faiPackageConfiguration.tpl:1 admin/fai/class_divListFai.inc:68
-#: admin/fai/class_faiPackage.inc:659
+#: admin/fai/faiPackageConfiguration.tpl:1
+#: admin/fai/class_faiDebconfConfigurations.inc:115
+#: admin/fai/NewDebconfConfiguration.tpl:16 admin/fai/class_divListFai.inc:68
+#: admin/fai/faiDebconfConfigurations.tpl:1 admin/fai/class_faiPackage.inc:699
 msgid "Package"
 msgstr "Paket"
 
@@ -194,10 +199,10 @@ msgid "Templates"
 msgstr "Vorlagen"
 
 #: admin/fai/class_faiSummaryTab.inc:48
-#: admin/fai/class_faiPartitionTable.inc:543
+#: admin/fai/class_faiPartitionTable.inc:528
 #: admin/fai/class_askClassName.inc:79 admin/fai/class_divListFai.inc:154
 #: admin/fai/class_divListFai.inc:208 admin/fai/class_faiGroupHandle.inc:100
-#: admin/fai/class_faiProfileEntry.inc:143 admin/fai/class_faiProfile.inc:294
+#: admin/fai/class_faiProfileEntry.inc:143 admin/fai/class_faiProfile.inc:298
 msgid "Partition table"
 msgstr "Partitionstabelle"
 
@@ -253,41 +258,43 @@ msgstr "Mount-Punkt"
 
 #: admin/fai/class_faiSummaryTab.inc:348
 #: admin/fai/class_faiPartitionTableEntry.inc:183
+#: admin/fai/class_faiDebconfConfigurations.inc:117
+#: admin/fai/NewDebconfConfiguration.tpl:22
 msgid "Type"
 msgstr "Typ"
 
-#: admin/fai/class_faiPartitionTable.inc:301
-#: admin/fai/class_faiPartitionTable.inc:307
+#: admin/fai/class_faiPartitionTable.inc:294
+#: admin/fai/class_faiPartitionTable.inc:300
 #, php-format
 msgid "%s partition"
 msgstr "%s Partition"
 
-#: admin/fai/class_faiPartitionTable.inc:303
-#: admin/fai/class_faiPartitionTable.inc:309
+#: admin/fai/class_faiPartitionTable.inc:296
+#: admin/fai/class_faiPartitionTable.inc:302
 #, php-format
 msgid "%s partition(s)"
 msgstr "%s Partition(en)"
 
-#: admin/fai/class_faiPartitionTable.inc:544
+#: admin/fai/class_faiPartitionTable.inc:529
 msgid "FAI partition table"
 msgstr "FAI-Partitionstabelle"
 
-#: admin/fai/class_faiPartitionTable.inc:551 admin/fai/class_faiHook.inc:562
-#: admin/fai/class_faiVariable.inc:398
+#: admin/fai/class_faiPartitionTable.inc:536 admin/fai/class_faiHook.inc:552
+#: admin/fai/class_faiVariable.inc:397
 msgid "Read only"
 msgstr "Nur Lesen"
 
-#: admin/fai/class_faiPartitionTable.inc:552 admin/fai/faiPackage.tpl:21
+#: admin/fai/class_faiPartitionTable.inc:537 admin/fai/faiPackage.tpl:21
 #: admin/fai/class_faiPartitionTableEntry.inc:475
-#: admin/fai/class_faiTemplate.inc:546 admin/fai/faiVariable.tpl:21
+#: admin/fai/class_faiTemplate.inc:538 admin/fai/faiVariable.tpl:21
 #: admin/fai/class_faiScriptEntry.inc:190 admin/fai/faiVariableEntry.tpl:19
 #: admin/fai/faiScript.tpl:21 admin/fai/faiTemplateEntry.tpl:33
-#: admin/fai/class_faiScript.inc:647 admin/fai/faiScriptEntry.tpl:19
+#: admin/fai/class_faiScript.inc:638 admin/fai/faiScriptEntry.tpl:19
 #: admin/fai/class_faiTemplateEntry.inc:274 admin/fai/faiTemplate.tpl:21
 #: admin/fai/faiHookEntry.tpl:19 admin/fai/faiHook.tpl:21
-#: admin/fai/class_faiHook.inc:563 admin/fai/class_faiProfile.inc:492
-#: admin/fai/class_faiHookEntry.inc:197 admin/fai/class_faiVariable.inc:399
-#: admin/fai/class_faiVariableEntry.inc:138 admin/fai/class_faiPackage.inc:668
+#: admin/fai/class_faiHook.inc:553 admin/fai/class_faiProfile.inc:498
+#: admin/fai/class_faiHookEntry.inc:197 admin/fai/class_faiVariable.inc:398
+#: admin/fai/class_faiVariableEntry.inc:138 admin/fai/class_faiPackage.inc:708
 #: admin/fai/faiPartitionTable.tpl:21 admin/fai/faiPartitionTableEntry.tpl:13
 #: admin/fai/faiProfile.tpl:21
 msgid "Description"
@@ -352,7 +359,7 @@ msgstr "Zeige die Objekte, auf die Folgendes passt"
 msgid "Generic"
 msgstr "Allgemein"
 
-#: admin/fai/faiPackage.tpl:45 admin/fai/class_faiPackage.inc:670
+#: admin/fai/faiPackage.tpl:45 admin/fai/class_faiPackage.inc:710
 msgid "Section"
 msgstr "Section"
 
@@ -368,10 +375,14 @@ msgstr "Bitte wählen Sie die Installations-Methode"
 msgid "Used packages"
 msgstr "Verwendete Pakete"
 
-#: admin/fai/faiPackage.tpl:82
+#: admin/fai/faiPackage.tpl:84
 msgid "Add from list"
 msgstr "Aus Liste hinzufügen"
 
+#: admin/fai/faiPackage.tpl:91
+msgid "Edit package configurations"
+msgstr "Bearbeite Paket-Konfigurationen"
+
 #: admin/fai/class_faiPartitionTableEntry.inc:176
 msgid "primary"
 msgstr "primär"
@@ -510,31 +521,31 @@ msgstr ""
 "Verschieben des Baums ist fehlgeschlagen: Der Zielbaum ist ein Teilbaum des "
 "Quellbaumes."
 
-#: admin/fai/class_faiTemplate.inc:286 admin/fai/class_faiTemplate.inc:288
-#: admin/fai/class_faiScript.inc:344 admin/fai/class_faiScript.inc:346
+#: admin/fai/class_faiTemplate.inc:282 admin/fai/class_faiTemplate.inc:284
+#: admin/fai/class_faiScript.inc:339 admin/fai/class_faiScript.inc:341
 msgid "edit"
 msgstr "Bearbeiten"
 
-#: admin/fai/class_faiTemplate.inc:290 admin/fai/class_faiScript.inc:348
+#: admin/fai/class_faiTemplate.inc:286 admin/fai/class_faiScript.inc:343
 msgid "delete"
 msgstr "Entfernen"
 
-#: admin/fai/class_faiTemplate.inc:300 admin/fai/class_faiScriptEntry.inc:88
-#: admin/fai/class_faiScript.inc:330 admin/fai/class_faiScript.inc:358
-#: admin/fai/class_faiHook.inc:326 admin/fai/class_faiHookEntry.inc:80
+#: admin/fai/class_faiTemplate.inc:296 admin/fai/class_faiScriptEntry.inc:88
+#: admin/fai/class_faiScript.inc:325 admin/fai/class_faiScript.inc:353
+#: admin/fai/class_faiHook.inc:320 admin/fai/class_faiHookEntry.inc:80
 msgid "Download"
 msgstr "Herunterladen"
 
-#: admin/fai/class_faiTemplate.inc:537
+#: admin/fai/class_faiTemplate.inc:529
 msgid "Template"
 msgstr "Vorlage"
 
-#: admin/fai/class_faiTemplate.inc:538
+#: admin/fai/class_faiTemplate.inc:530
 msgid "FAI template"
 msgstr "FAI-Vorlage"
 
-#: admin/fai/class_faiTemplate.inc:545 admin/fai/class_faiScript.inc:646
-#: admin/fai/class_faiPackage.inc:670 admin/fai/class_faiPackage.inc:673
+#: admin/fai/class_faiTemplate.inc:537 admin/fai/class_faiScript.inc:637
+#: admin/fai/class_faiPackage.inc:710 admin/fai/class_faiPackage.inc:713
 msgid "Readonly"
 msgstr "Nur Lesen"
 
@@ -613,11 +624,47 @@ msgstr "Liste benutzter Variablen"
 msgid "Choose a variable to delete or edit"
 msgstr "Wählen Sie eine Variable zum Entfernen oder Bearbeiten"
 
-#: admin/fai/faiVariable.tpl:53 admin/fai/class_faiHook.inc:312
-#: admin/fai/class_faiHook.inc:314 admin/fai/faiPartitionTable.tpl:54
+#: admin/fai/faiVariable.tpl:53
+#: admin/fai/class_faiDebconfConfigurations.inc:127
+#: admin/fai/class_faiHook.inc:306 admin/fai/class_faiHook.inc:308
+#: admin/fai/faiPartitionTable.tpl:54
 msgid "Edit"
 msgstr "Bearbeiten"
 
+#: admin/fai/class_faiDebconfConfigurations.inc:116
+#: admin/fai/NewDebconfConfiguration.tpl:19 admin/fai/class_divListFai.inc:60
+#: admin/fai/class_divListFai.inc:66 admin/fai/class_faiVariable.inc:389
+msgid "Variable"
+msgstr "Variable"
+
+#: admin/fai/class_faiDebconfConfigurations.inc:118
+#: admin/fai/NewDebconfConfiguration.tpl:25
+#: admin/fai/NewDebconfConfiguration.tpl:43
+msgid "Value"
+msgstr "Wert"
+
+#: admin/fai/class_faiDebconfConfigurations.inc:123
+msgid "Reset"
+msgstr "Zurücksetzen"
+
+#: admin/fai/class_faiDebconfConfigurations.inc:125
+#: admin/fai/class_faiHook.inc:310
+msgid "Delete"
+msgstr "Entfernen"
+
+#: admin/fai/class_faiDebconfConfigurations.inc:218
+#, php-format
+msgid "Debconf information for package list '%s'"
+msgstr "Debconf-Informationen für Paketliste '%s'"
+
+#: admin/fai/class_faiDebconfConfigurations.inc:400
+#, php-format
+msgid ""
+"The specified value '%s' for variable '%s' is not valid with the specified "
+"boolean variable type.<br><i>Allowed values: true, false, 1, 0.</i>"
+msgstr "Der angegebene Wert '%s' in der Variable '%s' ist mit dem angegebenen "
+"Variablen-Typ boolean nicht zulässig.<br><i>Erlaubte Werte: true, false, 1, 0.</i>"
+
 #: admin/fai/class_askClassName.inc:79 admin/fai/class_askClassName.inc:80
 #: admin/fai/class_askClassName.inc:81 admin/fai/class_askClassName.inc:82
 #: admin/fai/class_askClassName.inc:83 admin/fai/class_askClassName.inc:84
@@ -626,33 +673,33 @@ msgid "Create new FAI object"
 msgstr "Erstelle neues FAI-Objekt"
 
 #: admin/fai/class_askClassName.inc:80 admin/fai/class_faiProfileEntry.inc:142
-#: admin/fai/class_faiProfile.inc:293
+#: admin/fai/class_faiProfile.inc:297
 msgid "Package bundle"
 msgstr "Paket-Gruppe"
 
 #: admin/fai/class_askClassName.inc:81 admin/fai/class_faiProfileEntry.inc:140
-#: admin/fai/class_faiProfile.inc:291
+#: admin/fai/class_faiProfile.inc:295
 msgid "Script bundle"
 msgstr "Skript-Gruppe"
 
 #: admin/fai/class_askClassName.inc:82 admin/fai/class_faiProfileEntry.inc:141
-#: admin/fai/class_faiProfile.inc:292
+#: admin/fai/class_faiProfile.inc:296
 msgid "Variable bundle"
 msgstr "Variablen-Gruppe"
 
 #: admin/fai/class_askClassName.inc:83 admin/fai/class_faiProfileEntry.inc:138
-#: admin/fai/class_faiProfile.inc:289
+#: admin/fai/class_faiProfile.inc:293
 msgid "Hook bundle"
 msgstr "Hook-Gruppe"
 
 #: admin/fai/class_askClassName.inc:84 admin/fai/class_divListFai.inc:58
 #: admin/fai/class_divListFai.inc:149 admin/fai/class_divListFai.inc:218
-#: admin/fai/class_faiGroupHandle.inc:110 admin/fai/class_faiProfile.inc:483
+#: admin/fai/class_faiGroupHandle.inc:110 admin/fai/class_faiProfile.inc:489
 msgid "Profile"
 msgstr "Profil"
 
 #: admin/fai/class_askClassName.inc:85 admin/fai/class_faiProfileEntry.inc:139
-#: admin/fai/class_faiProfile.inc:290
+#: admin/fai/class_faiProfile.inc:294
 msgid "Template bundle"
 msgstr "Vorlagen-Gruppe"
 
@@ -703,6 +750,22 @@ msgstr ""
 "Dieses Menü erlaubt es Ihnen, Pakete auszuwählen und zur gegenwärtig "
 "bearbeiteten Paketliste hinzuzufügen."
 
+#: admin/fai/NewDebconfConfiguration.tpl:2
+msgid "New debconf configuration"
+msgstr "Neue Debconf-Konfiguration"
+
+#: admin/fai/NewDebconfConfiguration.tpl:6
+msgid "In this dialog you can add a new debconf configuration."
+msgstr "In diesem Dialog können Sie eine neue Debconf-Konfiguration festlegen."
+
+#: admin/fai/NewDebconfConfiguration.tpl:30
+msgid "Select package"
+msgstr "Wählen Sie ein Paket"
+
+#: admin/fai/NewDebconfConfiguration.tpl:38
+msgid "Select type"
+msgstr "Wählen Sie einen Typ"
+
 #: admin/fai/faiSummary.tpl:4
 msgid "FAI object tree"
 msgstr "FAI-Objekthierarchie"
@@ -834,7 +897,7 @@ msgid "file is empty"
 msgstr "Datei ist leer"
 
 #: admin/fai/class_faiScriptEntry.inc:150 admin/fai/class_divListFai.inc:62
-#: admin/fai/class_faiScript.inc:638 admin/fai/faiScriptEntry.tpl:56
+#: admin/fai/class_faiScript.inc:629 admin/fai/faiScriptEntry.tpl:56
 #: admin/fai/faiHookEntry.tpl:56 admin/fai/class_faiHookEntry.inc:158
 msgid "Script"
 msgstr "Skript"
@@ -942,11 +1005,6 @@ msgstr "Zeige Objekte des Typs '%s'."
 msgid "Show profiles"
 msgstr "Zeige Profile"
 
-#: admin/fai/class_divListFai.inc:60 admin/fai/class_divListFai.inc:66
-#: admin/fai/class_faiVariable.inc:390
-msgid "Variable"
-msgstr "Variable"
-
 #: admin/fai/class_divListFai.inc:60
 msgid "Show templates"
 msgstr "Zeige Vorlagen"
@@ -955,7 +1013,7 @@ msgstr "Zeige Vorlagen"
 msgid "Show scripts"
 msgstr "Zeige Skripte"
 
-#: admin/fai/class_divListFai.inc:64 admin/fai/class_faiHook.inc:554
+#: admin/fai/class_divListFai.inc:64 admin/fai/class_faiHook.inc:544
 msgid "Hook"
 msgstr "Hook"
 
@@ -1089,11 +1147,11 @@ msgstr "Localboot-Produkte"
 msgid "List of scripts"
 msgstr "Liste der Skripte"
 
-#: admin/fai/class_debconfTemplate.inc:210
+#: admin/fai/class_debconfTemplate.inc:213
 msgid "This package has no debconf options."
 msgstr "Dieses Paket verfügt über keine debconf-Optionen."
 
-#: admin/fai/class_debconfTemplate.inc:247
+#: admin/fai/class_debconfTemplate.inc:250
 msgid ""
 "This debconf question is dynamically generated during package installation "
 "and requires choosing between specific options which cannot be presented "
@@ -1189,19 +1247,19 @@ msgstr "Andere"
 msgid "sticky"
 msgstr "sticky"
 
-#: admin/fai/class_faiScript.inc:314 admin/fai/class_faiScript.inc:316
+#: admin/fai/class_faiScript.inc:309 admin/fai/class_faiScript.inc:311
 msgid "Sort direction"
 msgstr "Sortierrichtung"
 
-#: admin/fai/class_faiScript.inc:328 admin/fai/faiScriptEntry.tpl:38
+#: admin/fai/class_faiScript.inc:323 admin/fai/faiScriptEntry.tpl:38
 msgid "Priority"
 msgstr "Priorität"
 
-#: admin/fai/class_faiScript.inc:332
+#: admin/fai/class_faiScript.inc:327
 msgid "Action"
 msgstr "Aktion"
 
-#: admin/fai/class_faiScript.inc:639 admin/fai/class_faiHookEntry.inc:199
+#: admin/fai/class_faiScript.inc:630 admin/fai/class_faiHookEntry.inc:199
 msgid "FAI script"
 msgstr "FAI-Skript"
 
@@ -1267,10 +1325,22 @@ msgstr "Liste der Vorlagen"
 msgid "Debconf information for package '%s'"
 msgstr "Debconf-Information für Paket '%s'"
 
+#: admin/fai/faiDebconfConfigurations.tpl:4
+msgid "Add"
+msgstr "Hinzufügen"
+
 #: admin/fai/class_faiGroupHandle.inc:116
 msgid "OPSI local product"
 msgstr "OPSI Local-Produkt"
 
+#: admin/fai/class_NewDebconfConfiguration.inc:122
+#, php-format
+msgid ""
+"The specified value '%s' for the variable type boolean is invalid."
+"<br><i>Allowed values: true, false, 1, 0.</i>"
+msgstr "Der angegebene Wert '%s' für den Variablen-Typ Boolean ist unzulässig."
+"<br><i>Erlaubte Werte: true, false, 1, 0.</i>"
+
 #: admin/fai/faiHookEntry.tpl:33 admin/fai/faiHookEntry.tpl:54
 msgid "Hook attributes"
 msgstr "Hook-Attribute"
@@ -1355,39 +1425,35 @@ msgstr "Das Erstellen des Releases ist fehlgeschlagen: '%s'."
 msgid "FAI settings"
 msgstr "FAI-Einstellungen"
 
-#: admin/fai/class_faiProfileEntry.inc:172 admin/fai/class_faiProfile.inc:286
+#: admin/fai/class_faiProfileEntry.inc:172 admin/fai/class_faiProfile.inc:290
 msgid "This list displays all assigned class names for this profile."
 msgstr "Diese Liste zeigt alle diesem Profil zugeordneten Klassen-Namen."
 
-#: admin/fai/class_faiHook.inc:316
-msgid "Delete"
-msgstr "Entfernen"
-
-#: admin/fai/class_faiHook.inc:555
+#: admin/fai/class_faiHook.inc:545
 msgid "FAI hook"
 msgstr "FAI-Hook"
 
-#: admin/fai/class_faiProfile.inc:297
+#: admin/fai/class_faiProfile.inc:301
 msgid "Remove class from profile"
 msgstr "Entferne Klasse von Profil"
 
-#: admin/fai/class_faiProfile.inc:300
+#: admin/fai/class_faiProfile.inc:304
 msgid "Up"
 msgstr "Auf"
 
-#: admin/fai/class_faiProfile.inc:301
+#: admin/fai/class_faiProfile.inc:305
 msgid "Down"
 msgstr "Ab"
 
-#: admin/fai/class_faiProfile.inc:403
+#: admin/fai/class_faiProfile.inc:409
 msgid "No class specified for this profile!"
 msgstr "Es wurde für dieses Profil keine Klasse definiert!"
 
-#: admin/fai/class_faiProfile.inc:484
+#: admin/fai/class_faiProfile.inc:490
 msgid "FAI profile"
 msgstr "FAI-Profil"
 
-#: admin/fai/class_faiProfile.inc:493 admin/fai/faiProfile.tpl:36
+#: admin/fai/class_faiProfile.inc:499 admin/fai/faiProfile.tpl:36
 msgid "FAI classes"
 msgstr "FAI-Klassen"
 
@@ -1399,7 +1465,7 @@ msgstr "Hook-Eintrag"
 msgid "FAI hook entry"
 msgstr "FAI-Hook-Eintrag"
 
-#: admin/fai/class_faiVariable.inc:391
+#: admin/fai/class_faiVariable.inc:390
 msgid "FAI variable"
 msgstr "FAI-Variable"
 
@@ -1415,59 +1481,59 @@ msgstr "Variablen-Eintrag"
 msgid "FAI variable entry "
 msgstr "FAI-Variablen-Eintrag"
 
-#: admin/fai/class_faiPackage.inc:228
+#: admin/fai/class_faiPackage.inc:232
 msgid "Invalid package names"
 msgstr "Ungültige Paketnamen"
 
-#: admin/fai/class_faiPackage.inc:229
+#: admin/fai/class_faiPackage.inc:233
 #, php-format
 msgid "The following package names don't match the Debian policy: %s"
 msgstr "Die folgenden Paketnamen entsprechen nicht der Debian policy: %s"
 
-#: admin/fai/class_faiPackage.inc:413 admin/fai/class_faiPackage.inc:414
+#: admin/fai/class_faiPackage.inc:444 admin/fai/class_faiPackage.inc:445
 msgid "Configured"
 msgstr "Konfiguriert"
 
-#: admin/fai/class_faiPackage.inc:420 admin/fai/class_faiPackage.inc:421
+#: admin/fai/class_faiPackage.inc:451 admin/fai/class_faiPackage.inc:452
 msgid "Package marked for removal"
 msgstr "Paket zum Entfernen vorgemerkt"
 
-#: admin/fai/class_faiPackage.inc:437
+#: admin/fai/class_faiPackage.inc:468
 msgid "Mark package for removal"
 msgstr "Paket zum Entfernen vormerken"
 
-#: admin/fai/class_faiPackage.inc:443
+#: admin/fai/class_faiPackage.inc:474
 msgid "Configure this package"
 msgstr "Dieses Paket konfigurieren"
 
-#: admin/fai/class_faiPackage.inc:447
+#: admin/fai/class_faiPackage.inc:478
 msgid "Remove this package"
 msgstr "Dieses Paket entfernen"
 
-#: admin/fai/class_faiPackage.inc:527
+#: admin/fai/class_faiPackage.inc:558
 msgid "Please select a least one package!"
 msgstr "Bitte wählen Sie mindestens ein Paket!"
 
-#: admin/fai/class_faiPackage.inc:531
+#: admin/fai/class_faiPackage.inc:562
 msgid ""
 "Please choose a valid release/section combination for your repository setup!"
 msgstr ""
 "Bitte wählen Sie eine gültige Kombination aus Release und Sektion für Ihr "
 "gewünschtes Repository!"
 
-#: admin/fai/class_faiPackage.inc:660
+#: admin/fai/class_faiPackage.inc:700
 msgid "FAI Package list"
 msgstr "FAI-Paketliste"
 
-#: admin/fai/class_faiPackage.inc:669
+#: admin/fai/class_faiPackage.inc:709
 msgid "Packages"
 msgstr "Pakete"
 
-#: admin/fai/class_faiPackage.inc:671
+#: admin/fai/class_faiPackage.inc:711
 msgid "Install Method"
 msgstr "Installations-Methode"
 
-#: admin/fai/class_faiPackage.inc:672
+#: admin/fai/class_faiPackage.inc:712
 msgid "Package configuration"
 msgstr "Paket-Konfiguration"
 
index b158485e678be4872a30a6f471e37b9708c870b7..009b5154efd8287c44d327557d141bef36c4114d 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2010-02-11 13:22+0100\n"
+"POT-Creation-Date: 2010-03-15 11:14+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -34,20 +34,22 @@ msgstr ""
 #: admin/systems/services/repository/class_servRepository.inc:182
 #: admin/systems/services/repository/class_servRepositorySetup.inc:204
 #: admin/fai/class_faiSummaryTab.inc:89
-#: admin/fai/class_faiPartitionTable.inc:180 admin/fai/tabsHook.inc:32
-#: admin/fai/class_faiTemplate.inc:212 admin/fai/tabsProfile.inc:33
-#: admin/fai/class_faiManagement.inc:238 admin/fai/class_faiManagement.inc:614
-#: admin/fai/class_faiManagement.inc:620 admin/fai/class_faiManagement.inc:906
-#: admin/fai/class_faiManagement.inc:950 admin/fai/class_faiManagement.inc:974
+#: admin/fai/class_faiPartitionTable.inc:173 admin/fai/tabsHook.inc:32
+#: admin/fai/class_faiTemplate.inc:208
+#: admin/fai/class_faiDebconfConfigurations.inc:341
+#: admin/fai/tabsProfile.inc:33 admin/fai/class_faiManagement.inc:238
+#: admin/fai/class_faiManagement.inc:614 admin/fai/class_faiManagement.inc:620
+#: admin/fai/class_faiManagement.inc:906 admin/fai/class_faiManagement.inc:950
+#: admin/fai/class_faiManagement.inc:974
 #: admin/fai/class_faiManagement.inc:1238
 #: admin/fai/class_faiScriptEntry.inc:59 admin/fai/class_faiScriptEntry.inc:62
 #: admin/fai/tabsScript.inc:33 admin/fai/tabsPackage.inc:33
-#: admin/fai/tabsPartition.inc:34 admin/fai/class_faiScript.inc:229
+#: admin/fai/tabsPartition.inc:34 admin/fai/class_faiScript.inc:224
 #: admin/fai/tabsTemplate.inc:33 admin/fai/class_FAI.inc:548
-#: admin/fai/class_faiHook.inc:239 admin/fai/class_faiProfile.inc:259
+#: admin/fai/class_faiHook.inc:233 admin/fai/class_faiProfile.inc:263
 #: admin/fai/class_faiHookEntry.inc:62 admin/fai/class_faiHookEntry.inc:65
-#: admin/fai/class_faiVariable.inc:142 admin/fai/class_faiPackage.inc:356
-#: admin/fai/tabsVariable.inc:33
+#: admin/fai/class_faiVariable.inc:142 admin/fai/class_faiPackage.inc:367
+#: admin/fai/class_faiPackage.inc:400 admin/fai/tabsVariable.inc:33
 msgid "Error"
 msgstr ""
 
@@ -57,12 +59,12 @@ msgstr ""
 
 #: admin/systems/services/repository/class_servRepository.inc:177
 #: admin/fai/class_faiSummaryTab.inc:343
-#: admin/fai/class_faiPartitionTable.inc:371
-#: admin/fai/class_faiPartitionTable.inc:551 admin/fai/faiPackage.tpl:9
+#: admin/fai/class_faiPartitionTable.inc:364
+#: admin/fai/class_faiPartitionTable.inc:536 admin/fai/faiPackage.tpl:9
 #: admin/fai/class_faiPartitionTableEntry.inc:375
 #: admin/fai/class_faiPartitionTableEntry.inc:378
 #: admin/fai/class_faiPartitionTableEntry.inc:474
-#: admin/fai/class_faiTemplate.inc:421 admin/fai/class_faiTemplate.inc:545
+#: admin/fai/class_faiTemplate.inc:417 admin/fai/class_faiTemplate.inc:537
 #: admin/fai/faiVariable.tpl:9 admin/fai/class_askClassName.inc:142
 #: admin/fai/class_askClassName.inc:151 admin/fai/class_askClassName.inc:155
 #: admin/fai/class_faiManagement.inc:614 admin/fai/class_faiManagement.inc:620
@@ -70,29 +72,30 @@ msgstr ""
 #: admin/fai/class_faiScriptEntry.inc:142
 #: admin/fai/class_faiScriptEntry.inc:145
 #: admin/fai/class_faiScriptEntry.inc:189 admin/fai/faiVariableEntry.tpl:9
-#: admin/fai/faiScript.tpl:9 admin/fai/class_faiScript.inc:327
-#: admin/fai/class_faiScript.inc:483 admin/fai/class_faiScript.inc:646
+#: admin/fai/faiScript.tpl:9 admin/fai/class_faiScript.inc:322
+#: admin/fai/class_faiScript.inc:478 admin/fai/class_faiScript.inc:637
 #: admin/fai/faiScriptEntry.tpl:9 admin/fai/class_faiTemplateEntry.inc:207
 #: admin/fai/class_faiTemplateEntry.inc:273 admin/fai/faiTemplate.tpl:9
 #: admin/fai/faiHookEntry.tpl:9 admin/fai/faiHook.tpl:9
-#: admin/fai/class_faiHook.inc:440 admin/fai/class_faiHook.inc:562
-#: admin/fai/class_faiProfile.inc:407 admin/fai/class_faiProfile.inc:417
-#: admin/fai/class_faiProfile.inc:491 admin/fai/class_faiHookEntry.inc:145
+#: admin/fai/class_faiHook.inc:434 admin/fai/class_faiHook.inc:552
+#: admin/fai/class_faiProfile.inc:413 admin/fai/class_faiProfile.inc:423
+#: admin/fai/class_faiProfile.inc:497 admin/fai/class_faiHookEntry.inc:145
 #: admin/fai/class_faiHookEntry.inc:150 admin/fai/class_faiHookEntry.inc:153
 #: admin/fai/class_faiHookEntry.inc:196 admin/fai/class_faiVariable.inc:296
-#: admin/fai/class_faiVariable.inc:398 admin/fai/class_faiVariableEntry.inc:90
+#: admin/fai/class_faiVariable.inc:397 admin/fai/class_faiVariableEntry.inc:90
 #: admin/fai/class_faiVariableEntry.inc:99
 #: admin/fai/class_faiVariableEntry.inc:102
-#: admin/fai/class_faiVariableEntry.inc:137 admin/fai/class_faiPackage.inc:541
-#: admin/fai/class_faiPackage.inc:667 admin/fai/faiPartitionTable.tpl:9
+#: admin/fai/class_faiVariableEntry.inc:137 admin/fai/class_faiPackage.inc:572
+#: admin/fai/class_faiPackage.inc:707 admin/fai/faiPartitionTable.tpl:9
 #: admin/fai/faiPartitionTableEntry.tpl:6 admin/fai/faiProfile.tpl:9
 msgid "Name"
 msgstr ""
 
 #: admin/systems/services/repository/class_servRepository.inc:352
+#: admin/fai/class_faiDebconfConfigurations.inc:71
 #: admin/fai/class_faiManagement.inc:788
 #: admin/fai/class_faiPackageConfiguration.inc:35 admin/fai/class_FAI.inc:566
-#: admin/fai/class_faiPackage.inc:266 admin/fai/class_faiPackage.inc:563
+#: admin/fai/class_faiPackage.inc:269 admin/fai/class_faiPackage.inc:594
 #: admin/fai/class_faiPackageEntry.inc:53
 #: admin/fai/class_faiPackageEntry.inc:193
 msgid "Service infrastructure"
@@ -135,7 +138,7 @@ msgstr ""
 #: admin/systems/services/repository/servRepositorySetup.tpl:19
 #: admin/systems/services/repository/class_divListRepositories.inc:23
 #: admin/fai/faiPackage.tpl:37 admin/fai/branch_selector.tpl:25
-#: admin/fai/class_faiPackage.inc:673
+#: admin/fai/class_faiPackage.inc:713
 msgid "Release"
 msgstr ""
 
@@ -160,8 +163,10 @@ msgstr ""
 msgid "Add repository"
 msgstr ""
 
-#: admin/fai/faiPackageConfiguration.tpl:1 admin/fai/class_divListFai.inc:68
-#: admin/fai/class_faiPackage.inc:659
+#: admin/fai/faiPackageConfiguration.tpl:1
+#: admin/fai/class_faiDebconfConfigurations.inc:115
+#: admin/fai/NewDebconfConfiguration.tpl:16 admin/fai/class_divListFai.inc:68
+#: admin/fai/faiDebconfConfigurations.tpl:1 admin/fai/class_faiPackage.inc:699
 msgid "Package"
 msgstr ""
 
@@ -186,10 +191,10 @@ msgid "Templates"
 msgstr ""
 
 #: admin/fai/class_faiSummaryTab.inc:48
-#: admin/fai/class_faiPartitionTable.inc:543
+#: admin/fai/class_faiPartitionTable.inc:528
 #: admin/fai/class_askClassName.inc:79 admin/fai/class_divListFai.inc:154
 #: admin/fai/class_divListFai.inc:208 admin/fai/class_faiGroupHandle.inc:100
-#: admin/fai/class_faiProfileEntry.inc:143 admin/fai/class_faiProfile.inc:294
+#: admin/fai/class_faiProfileEntry.inc:143 admin/fai/class_faiProfile.inc:298
 msgid "Partition table"
 msgstr ""
 
@@ -245,41 +250,43 @@ msgstr ""
 
 #: admin/fai/class_faiSummaryTab.inc:348
 #: admin/fai/class_faiPartitionTableEntry.inc:183
+#: admin/fai/class_faiDebconfConfigurations.inc:117
+#: admin/fai/NewDebconfConfiguration.tpl:22
 msgid "Type"
 msgstr ""
 
-#: admin/fai/class_faiPartitionTable.inc:301
-#: admin/fai/class_faiPartitionTable.inc:307
+#: admin/fai/class_faiPartitionTable.inc:294
+#: admin/fai/class_faiPartitionTable.inc:300
 #, php-format
 msgid "%s partition"
 msgstr ""
 
-#: admin/fai/class_faiPartitionTable.inc:303
-#: admin/fai/class_faiPartitionTable.inc:309
+#: admin/fai/class_faiPartitionTable.inc:296
+#: admin/fai/class_faiPartitionTable.inc:302
 #, php-format
 msgid "%s partition(s)"
 msgstr ""
 
-#: admin/fai/class_faiPartitionTable.inc:544
+#: admin/fai/class_faiPartitionTable.inc:529
 msgid "FAI partition table"
 msgstr ""
 
-#: admin/fai/class_faiPartitionTable.inc:551 admin/fai/class_faiHook.inc:562
-#: admin/fai/class_faiVariable.inc:398
+#: admin/fai/class_faiPartitionTable.inc:536 admin/fai/class_faiHook.inc:552
+#: admin/fai/class_faiVariable.inc:397
 msgid "Read only"
 msgstr ""
 
-#: admin/fai/class_faiPartitionTable.inc:552 admin/fai/faiPackage.tpl:21
+#: admin/fai/class_faiPartitionTable.inc:537 admin/fai/faiPackage.tpl:21
 #: admin/fai/class_faiPartitionTableEntry.inc:475
-#: admin/fai/class_faiTemplate.inc:546 admin/fai/faiVariable.tpl:21
+#: admin/fai/class_faiTemplate.inc:538 admin/fai/faiVariable.tpl:21
 #: admin/fai/class_faiScriptEntry.inc:190 admin/fai/faiVariableEntry.tpl:19
 #: admin/fai/faiScript.tpl:21 admin/fai/faiTemplateEntry.tpl:33
-#: admin/fai/class_faiScript.inc:647 admin/fai/faiScriptEntry.tpl:19
+#: admin/fai/class_faiScript.inc:638 admin/fai/faiScriptEntry.tpl:19
 #: admin/fai/class_faiTemplateEntry.inc:274 admin/fai/faiTemplate.tpl:21
 #: admin/fai/faiHookEntry.tpl:19 admin/fai/faiHook.tpl:21
-#: admin/fai/class_faiHook.inc:563 admin/fai/class_faiProfile.inc:492
-#: admin/fai/class_faiHookEntry.inc:197 admin/fai/class_faiVariable.inc:399
-#: admin/fai/class_faiVariableEntry.inc:138 admin/fai/class_faiPackage.inc:668
+#: admin/fai/class_faiHook.inc:553 admin/fai/class_faiProfile.inc:498
+#: admin/fai/class_faiHookEntry.inc:197 admin/fai/class_faiVariable.inc:398
+#: admin/fai/class_faiVariableEntry.inc:138 admin/fai/class_faiPackage.inc:708
 #: admin/fai/faiPartitionTable.tpl:21 admin/fai/faiPartitionTableEntry.tpl:13
 #: admin/fai/faiProfile.tpl:21
 msgid "Description"
@@ -342,7 +349,7 @@ msgstr ""
 msgid "Generic"
 msgstr ""
 
-#: admin/fai/faiPackage.tpl:45 admin/fai/class_faiPackage.inc:670
+#: admin/fai/faiPackage.tpl:45 admin/fai/class_faiPackage.inc:710
 msgid "Section"
 msgstr ""
 
@@ -358,10 +365,14 @@ msgstr ""
 msgid "Used packages"
 msgstr ""
 
-#: admin/fai/faiPackage.tpl:82
+#: admin/fai/faiPackage.tpl:84
 msgid "Add from list"
 msgstr ""
 
+#: admin/fai/faiPackage.tpl:91
+msgid "Edit package configurations"
+msgstr ""
+
 #: admin/fai/class_faiPartitionTableEntry.inc:176
 msgid "primary"
 msgstr ""
@@ -487,31 +498,31 @@ msgstr ""
 msgid "Moving the tree failed. Destination tree is subtree of source tree."
 msgstr ""
 
-#: admin/fai/class_faiTemplate.inc:286 admin/fai/class_faiTemplate.inc:288
-#: admin/fai/class_faiScript.inc:344 admin/fai/class_faiScript.inc:346
+#: admin/fai/class_faiTemplate.inc:282 admin/fai/class_faiTemplate.inc:284
+#: admin/fai/class_faiScript.inc:339 admin/fai/class_faiScript.inc:341
 msgid "edit"
 msgstr ""
 
-#: admin/fai/class_faiTemplate.inc:290 admin/fai/class_faiScript.inc:348
+#: admin/fai/class_faiTemplate.inc:286 admin/fai/class_faiScript.inc:343
 msgid "delete"
 msgstr ""
 
-#: admin/fai/class_faiTemplate.inc:300 admin/fai/class_faiScriptEntry.inc:88
-#: admin/fai/class_faiScript.inc:330 admin/fai/class_faiScript.inc:358
-#: admin/fai/class_faiHook.inc:326 admin/fai/class_faiHookEntry.inc:80
+#: admin/fai/class_faiTemplate.inc:296 admin/fai/class_faiScriptEntry.inc:88
+#: admin/fai/class_faiScript.inc:325 admin/fai/class_faiScript.inc:353
+#: admin/fai/class_faiHook.inc:320 admin/fai/class_faiHookEntry.inc:80
 msgid "Download"
 msgstr ""
 
-#: admin/fai/class_faiTemplate.inc:537
+#: admin/fai/class_faiTemplate.inc:529
 msgid "Template"
 msgstr ""
 
-#: admin/fai/class_faiTemplate.inc:538
+#: admin/fai/class_faiTemplate.inc:530
 msgid "FAI template"
 msgstr ""
 
-#: admin/fai/class_faiTemplate.inc:545 admin/fai/class_faiScript.inc:646
-#: admin/fai/class_faiPackage.inc:670 admin/fai/class_faiPackage.inc:673
+#: admin/fai/class_faiTemplate.inc:537 admin/fai/class_faiScript.inc:637
+#: admin/fai/class_faiPackage.inc:710 admin/fai/class_faiPackage.inc:713
 msgid "Readonly"
 msgstr ""
 
@@ -575,11 +586,46 @@ msgstr ""
 msgid "Choose a variable to delete or edit"
 msgstr ""
 
-#: admin/fai/faiVariable.tpl:53 admin/fai/class_faiHook.inc:312
-#: admin/fai/class_faiHook.inc:314 admin/fai/faiPartitionTable.tpl:54
+#: admin/fai/faiVariable.tpl:53
+#: admin/fai/class_faiDebconfConfigurations.inc:127
+#: admin/fai/class_faiHook.inc:306 admin/fai/class_faiHook.inc:308
+#: admin/fai/faiPartitionTable.tpl:54
 msgid "Edit"
 msgstr ""
 
+#: admin/fai/class_faiDebconfConfigurations.inc:116
+#: admin/fai/NewDebconfConfiguration.tpl:19 admin/fai/class_divListFai.inc:60
+#: admin/fai/class_divListFai.inc:66 admin/fai/class_faiVariable.inc:389
+msgid "Variable"
+msgstr ""
+
+#: admin/fai/class_faiDebconfConfigurations.inc:118
+#: admin/fai/NewDebconfConfiguration.tpl:25
+#: admin/fai/NewDebconfConfiguration.tpl:43
+msgid "Value"
+msgstr ""
+
+#: admin/fai/class_faiDebconfConfigurations.inc:123
+msgid "Reset"
+msgstr ""
+
+#: admin/fai/class_faiDebconfConfigurations.inc:125
+#: admin/fai/class_faiHook.inc:310
+msgid "Delete"
+msgstr ""
+
+#: admin/fai/class_faiDebconfConfigurations.inc:218
+#, php-format
+msgid "Debconf information for package list '%s'"
+msgstr ""
+
+#: admin/fai/class_faiDebconfConfigurations.inc:400
+#, php-format
+msgid ""
+"The specified value '%s' for variable '%s' is not valid with the specified "
+"boolean variable type.<br><i>Allowed values: true, false, 1, 0."
+msgstr ""
+
 #: admin/fai/class_askClassName.inc:79 admin/fai/class_askClassName.inc:80
 #: admin/fai/class_askClassName.inc:81 admin/fai/class_askClassName.inc:82
 #: admin/fai/class_askClassName.inc:83 admin/fai/class_askClassName.inc:84
@@ -588,33 +634,33 @@ msgid "Create new FAI object"
 msgstr ""
 
 #: admin/fai/class_askClassName.inc:80 admin/fai/class_faiProfileEntry.inc:142
-#: admin/fai/class_faiProfile.inc:293
+#: admin/fai/class_faiProfile.inc:297
 msgid "Package bundle"
 msgstr ""
 
 #: admin/fai/class_askClassName.inc:81 admin/fai/class_faiProfileEntry.inc:140
-#: admin/fai/class_faiProfile.inc:291
+#: admin/fai/class_faiProfile.inc:295
 msgid "Script bundle"
 msgstr ""
 
 #: admin/fai/class_askClassName.inc:82 admin/fai/class_faiProfileEntry.inc:141
-#: admin/fai/class_faiProfile.inc:292
+#: admin/fai/class_faiProfile.inc:296
 msgid "Variable bundle"
 msgstr ""
 
 #: admin/fai/class_askClassName.inc:83 admin/fai/class_faiProfileEntry.inc:138
-#: admin/fai/class_faiProfile.inc:289
+#: admin/fai/class_faiProfile.inc:293
 msgid "Hook bundle"
 msgstr ""
 
 #: admin/fai/class_askClassName.inc:84 admin/fai/class_divListFai.inc:58
 #: admin/fai/class_divListFai.inc:149 admin/fai/class_divListFai.inc:218
-#: admin/fai/class_faiGroupHandle.inc:110 admin/fai/class_faiProfile.inc:483
+#: admin/fai/class_faiGroupHandle.inc:110 admin/fai/class_faiProfile.inc:489
 msgid "Profile"
 msgstr ""
 
 #: admin/fai/class_askClassName.inc:85 admin/fai/class_faiProfileEntry.inc:139
-#: admin/fai/class_faiProfile.inc:290
+#: admin/fai/class_faiProfile.inc:294
 msgid "Template bundle"
 msgstr ""
 
@@ -659,6 +705,22 @@ msgid ""
 "currently edited package list."
 msgstr ""
 
+#: admin/fai/NewDebconfConfiguration.tpl:2
+msgid "New debconf configuration"
+msgstr ""
+
+#: admin/fai/NewDebconfConfiguration.tpl:6
+msgid "In this dialog you can add a new debconf configuration."
+msgstr ""
+
+#: admin/fai/NewDebconfConfiguration.tpl:30
+msgid "Select package"
+msgstr ""
+
+#: admin/fai/NewDebconfConfiguration.tpl:38
+msgid "Select type"
+msgstr ""
+
 #: admin/fai/faiSummary.tpl:4
 msgid "FAI object tree"
 msgstr ""
@@ -783,7 +845,7 @@ msgid "file is empty"
 msgstr ""
 
 #: admin/fai/class_faiScriptEntry.inc:150 admin/fai/class_divListFai.inc:62
-#: admin/fai/class_faiScript.inc:638 admin/fai/faiScriptEntry.tpl:56
+#: admin/fai/class_faiScript.inc:629 admin/fai/faiScriptEntry.tpl:56
 #: admin/fai/faiHookEntry.tpl:56 admin/fai/class_faiHookEntry.inc:158
 msgid "Script"
 msgstr ""
@@ -883,11 +945,6 @@ msgstr ""
 msgid "Show profiles"
 msgstr ""
 
-#: admin/fai/class_divListFai.inc:60 admin/fai/class_divListFai.inc:66
-#: admin/fai/class_faiVariable.inc:390
-msgid "Variable"
-msgstr ""
-
 #: admin/fai/class_divListFai.inc:60
 msgid "Show templates"
 msgstr ""
@@ -896,7 +953,7 @@ msgstr ""
 msgid "Show scripts"
 msgstr ""
 
-#: admin/fai/class_divListFai.inc:64 admin/fai/class_faiHook.inc:554
+#: admin/fai/class_divListFai.inc:64 admin/fai/class_faiHook.inc:544
 msgid "Hook"
 msgstr ""
 
@@ -1030,11 +1087,11 @@ msgstr ""
 msgid "List of scripts"
 msgstr ""
 
-#: admin/fai/class_debconfTemplate.inc:210
+#: admin/fai/class_debconfTemplate.inc:213
 msgid "This package has no debconf options."
 msgstr ""
 
-#: admin/fai/class_debconfTemplate.inc:247
+#: admin/fai/class_debconfTemplate.inc:250
 msgid ""
 "This debconf question is dynamically generated during package installation "
 "and requires choosing between specific options which cannot be presented "
@@ -1126,19 +1183,19 @@ msgstr ""
 msgid "sticky"
 msgstr ""
 
-#: admin/fai/class_faiScript.inc:314 admin/fai/class_faiScript.inc:316
+#: admin/fai/class_faiScript.inc:309 admin/fai/class_faiScript.inc:311
 msgid "Sort direction"
 msgstr ""
 
-#: admin/fai/class_faiScript.inc:328 admin/fai/faiScriptEntry.tpl:38
+#: admin/fai/class_faiScript.inc:323 admin/fai/faiScriptEntry.tpl:38
 msgid "Priority"
 msgstr ""
 
-#: admin/fai/class_faiScript.inc:332
+#: admin/fai/class_faiScript.inc:327
 msgid "Action"
 msgstr ""
 
-#: admin/fai/class_faiScript.inc:639 admin/fai/class_faiHookEntry.inc:199
+#: admin/fai/class_faiScript.inc:630 admin/fai/class_faiHookEntry.inc:199
 msgid "FAI script"
 msgstr ""
 
@@ -1202,10 +1259,21 @@ msgstr ""
 msgid "Debconf information for package '%s'"
 msgstr ""
 
+#: admin/fai/faiDebconfConfigurations.tpl:4
+msgid "Add"
+msgstr ""
+
 #: admin/fai/class_faiGroupHandle.inc:116
 msgid "OPSI local product"
 msgstr ""
 
+#: admin/fai/class_NewDebconfConfiguration.inc:122
+#, php-format
+msgid ""
+"The specified value '%s' for the variable type boolean is invalid."
+"<br><i>Allowed values: true, false, 1, 0."
+msgstr ""
+
 #: admin/fai/faiHookEntry.tpl:33 admin/fai/faiHookEntry.tpl:54
 msgid "Hook attributes"
 msgstr ""
@@ -1289,39 +1357,35 @@ msgstr ""
 msgid "FAI settings"
 msgstr ""
 
-#: admin/fai/class_faiProfileEntry.inc:172 admin/fai/class_faiProfile.inc:286
+#: admin/fai/class_faiProfileEntry.inc:172 admin/fai/class_faiProfile.inc:290
 msgid "This list displays all assigned class names for this profile."
 msgstr ""
 
-#: admin/fai/class_faiHook.inc:316
-msgid "Delete"
-msgstr ""
-
-#: admin/fai/class_faiHook.inc:555
+#: admin/fai/class_faiHook.inc:545
 msgid "FAI hook"
 msgstr ""
 
-#: admin/fai/class_faiProfile.inc:297
+#: admin/fai/class_faiProfile.inc:301
 msgid "Remove class from profile"
 msgstr ""
 
-#: admin/fai/class_faiProfile.inc:300
+#: admin/fai/class_faiProfile.inc:304
 msgid "Up"
 msgstr ""
 
-#: admin/fai/class_faiProfile.inc:301
+#: admin/fai/class_faiProfile.inc:305
 msgid "Down"
 msgstr ""
 
-#: admin/fai/class_faiProfile.inc:403
+#: admin/fai/class_faiProfile.inc:409
 msgid "No class specified for this profile!"
 msgstr ""
 
-#: admin/fai/class_faiProfile.inc:484
+#: admin/fai/class_faiProfile.inc:490
 msgid "FAI profile"
 msgstr ""
 
-#: admin/fai/class_faiProfile.inc:493 admin/fai/faiProfile.tpl:36
+#: admin/fai/class_faiProfile.inc:499 admin/fai/faiProfile.tpl:36
 msgid "FAI classes"
 msgstr ""
 
@@ -1333,7 +1397,7 @@ msgstr ""
 msgid "FAI hook entry"
 msgstr ""
 
-#: admin/fai/class_faiVariable.inc:391
+#: admin/fai/class_faiVariable.inc:390
 msgid "FAI variable"
 msgstr ""
 
@@ -1349,57 +1413,57 @@ msgstr ""
 msgid "FAI variable entry "
 msgstr ""
 
-#: admin/fai/class_faiPackage.inc:228
+#: admin/fai/class_faiPackage.inc:232
 msgid "Invalid package names"
 msgstr ""
 
-#: admin/fai/class_faiPackage.inc:229
+#: admin/fai/class_faiPackage.inc:233
 #, php-format
 msgid "The following package names don't match the Debian policy: %s"
 msgstr ""
 
-#: admin/fai/class_faiPackage.inc:413 admin/fai/class_faiPackage.inc:414
+#: admin/fai/class_faiPackage.inc:444 admin/fai/class_faiPackage.inc:445
 msgid "Configured"
 msgstr ""
 
-#: admin/fai/class_faiPackage.inc:420 admin/fai/class_faiPackage.inc:421
+#: admin/fai/class_faiPackage.inc:451 admin/fai/class_faiPackage.inc:452
 msgid "Package marked for removal"
 msgstr ""
 
-#: admin/fai/class_faiPackage.inc:437
+#: admin/fai/class_faiPackage.inc:468
 msgid "Mark package for removal"
 msgstr ""
 
-#: admin/fai/class_faiPackage.inc:443
+#: admin/fai/class_faiPackage.inc:474
 msgid "Configure this package"
 msgstr ""
 
-#: admin/fai/class_faiPackage.inc:447
+#: admin/fai/class_faiPackage.inc:478
 msgid "Remove this package"
 msgstr ""
 
-#: admin/fai/class_faiPackage.inc:527
+#: admin/fai/class_faiPackage.inc:558
 msgid "Please select a least one package!"
 msgstr ""
 
-#: admin/fai/class_faiPackage.inc:531
+#: admin/fai/class_faiPackage.inc:562
 msgid ""
 "Please choose a valid release/section combination for your repository setup!"
 msgstr ""
 
-#: admin/fai/class_faiPackage.inc:660
+#: admin/fai/class_faiPackage.inc:700
 msgid "FAI Package list"
 msgstr ""
 
-#: admin/fai/class_faiPackage.inc:669
+#: admin/fai/class_faiPackage.inc:709
 msgid "Packages"
 msgstr ""
 
-#: admin/fai/class_faiPackage.inc:671
+#: admin/fai/class_faiPackage.inc:711
 msgid "Install Method"
 msgstr ""
 
-#: admin/fai/class_faiPackage.inc:672
+#: admin/fai/class_faiPackage.inc:712
 msgid "Package configuration"
 msgstr ""