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 = "";
         /* 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{
             $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(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.", ";
           }
           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){
 
     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{
       }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>";
     }
       }
       $result.="<br>";
     }
@@ -265,9 +268,9 @@ class debconf
       $defs = split(", ",$data['Default']);
       foreach($choices as $value){
         if(in_array($value,$defs)){
       $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{
         }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=  "";
     $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>";
 
     $result.= $data['Description'];
     $result.= "</td>";
 
@@ -324,9 +327,9 @@ class debconf
 
       foreach($choices as $value){
         if($data['Default'] == $value){
 
       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{
         }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'>
                     <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>
               ";
                   </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 $sub64coded       = array();
 
   var $ConfiguredPackages = array();
+  var $ConfigurationsToRemove = array();
 
   /* Specific attributes */
   var $cn               = "";       // The class name for this object
 
   /* 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;
       "pending", "dpkgc" );
 
   var $direct_packages_add = FALSE;
-
+  var $configure_dialog_shown = FALSE;
 
   function faiPackage (&$config, $dn= NULL)
   {
 
   function faiPackage (&$config, $dn= NULL)
   {
@@ -85,6 +86,9 @@ class faiPackage extends plugin
       foreach($this->usedPackages as $name => $value){
         $PackageFilter .= "(FAIpackage=".$name.")";
       }
       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 */ 
       $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;
         }
           }
           $this->ConfiguredPackages[$attr['FAIpackage'][0]][$attr['FAIvariable'][0]]=$tmp;
         }
+        else {
+          $tmp['Value'] = "";
+          $this->ConfiguredPackages[$attr['FAIpackage'][0]][$attr['FAIvariable'][0]]=$tmp;
+        }
       }
 
       $this->FAIdebianSection = array();
       }
 
       $this->FAIdebianSection = array();
@@ -247,7 +255,6 @@ class faiPackage extends plugin
 
 
           foreach ($valid_packages as $value) {
 
 
           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()){
             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") && 
     /* + 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];
           }
           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;
         }
           $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 */
     }
 
     /* 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;
       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 */     
     }
 
     /* cancel configuration */     
-    if(isset($_POST['CancelObjectConfig'])){
+    if(isset($_POST['CancelObjectConfig']) && $this->configure_dialog_shown){
       $this->dialog = false;
       $this->is_dialog=false;
       $this->dialog = false;
       $this->is_dialog=false;
+      $this->configure_dialog_shown=false;
     }
 
     /* Display dialog */ 
     }
 
     /* 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");
     /* 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)){
 
     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){
     /* Save Package configurations */
     foreach($this->ConfiguredPackages as $pkgname => $attrs){
       foreach($attrs as $name => $attr){
-      
         $pkgattrs = array();
 
         foreach($attr as $n=>$v){
         $pkgattrs = array();
 
         foreach($attr as $n=>$v){
@@ -633,6 +667,16 @@ class faiPackage extends plugin
         $pkgattrs['FAIvariableContent']   = $attr['Value'];
         $pkgdn =  "FAIvariable=".$name.",".$this->dn;
 
         $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);
         /* 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.")";
     }
     foreach($this->usedPackages as $name){
       $PackageFilter .= "(FAIpackage=".$name.")";
     }
-    $PackageFilter = "(&(objectClass=FAIdebconfInfo)(|".$PackageFilter."))";
 
     /* Search for configuration objects */ 
     $ldap = $this->config->get_ldap_link();
 
     /* 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){
     $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']);
       }
     }
         $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>
 <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>
                        <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>
 {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}" />
 {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>
             <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>
        </tr>
 {/render}
 </table>
index 3ebe8cdf826ea0258e11e03dc2169e7627c63369..aa070ab393e829c55f6938d7e771742c37ccc7ea 100644 (file)
@@ -13,7 +13,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: messages\n"
 "Report-Msgid-Bugs-To: \n"
 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"
 "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/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/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/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_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"
 
 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/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_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
 #: 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/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/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_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: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/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_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"
 #: 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/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"
 
 msgid "Release"
 msgstr "Release"
 
@@ -168,8 +171,10 @@ msgstr "Regulärer Ausdruck zum Erkennen von Objekt-Namen"
 msgid "Add repository"
 msgstr "Repository hinzufügen"
 
 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"
 
 msgid "Package"
 msgstr "Paket"
 
@@ -194,10 +199,10 @@ msgid "Templates"
 msgstr "Vorlagen"
 
 #: admin/fai/class_faiSummaryTab.inc:48
 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_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"
 
 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_faiSummaryTab.inc:348
 #: admin/fai/class_faiPartitionTableEntry.inc:183
+#: admin/fai/class_faiDebconfConfigurations.inc:117
+#: admin/fai/NewDebconfConfiguration.tpl:22
 msgid "Type"
 msgstr "Typ"
 
 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"
 
 #, 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)"
 
 #, 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"
 
 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"
 
 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_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_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_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"
 #: 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"
 
 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"
 
 msgid "Section"
 msgstr "Section"
 
@@ -368,10 +375,14 @@ msgstr "Bitte wählen Sie die Installations-Methode"
 msgid "Used packages"
 msgstr "Verwendete Pakete"
 
 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"
 
 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"
 #: 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."
 
 "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"
 
 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"
 
 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"
 
 msgid "Download"
 msgstr "Herunterladen"
 
-#: admin/fai/class_faiTemplate.inc:537
+#: admin/fai/class_faiTemplate.inc:529
 msgid "Template"
 msgstr "Vorlage"
 
 msgid "Template"
 msgstr "Vorlage"
 
-#: admin/fai/class_faiTemplate.inc:538
+#: admin/fai/class_faiTemplate.inc:530
 msgid "FAI template"
 msgstr "FAI-Vorlage"
 
 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"
 
 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"
 
 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"
 
 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
 #: 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
 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
 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
 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
 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
 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
 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"
 
 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."
 
 "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"
 #: 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
 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"
 #: 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"
 
 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"
 #: 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"
 
 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"
 
 msgid "Hook"
 msgstr "Hook"
 
@@ -1089,11 +1147,11 @@ msgstr "Localboot-Produkte"
 msgid "List of scripts"
 msgstr "Liste der Skripte"
 
 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."
 
 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 "
 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"
 
 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"
 
 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"
 
 msgid "Priority"
 msgstr "Priorität"
 
-#: admin/fai/class_faiScript.inc:332
+#: admin/fai/class_faiScript.inc:327
 msgid "Action"
 msgstr "Aktion"
 
 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"
 
 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'"
 
 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_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"
 #: 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"
 
 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."
 
 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"
 
 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"
 
 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"
 
 msgid "Up"
 msgstr "Auf"
 
-#: admin/fai/class_faiProfile.inc:301
+#: admin/fai/class_faiProfile.inc:305
 msgid "Down"
 msgstr "Ab"
 
 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!"
 
 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"
 
 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"
 
 msgid "FAI classes"
 msgstr "FAI-Klassen"
 
@@ -1399,7 +1465,7 @@ msgstr "Hook-Eintrag"
 msgid "FAI hook entry"
 msgstr "FAI-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"
 
 msgid "FAI variable"
 msgstr "FAI-Variable"
 
@@ -1415,59 +1481,59 @@ msgstr "Variablen-Eintrag"
 msgid "FAI variable entry "
 msgstr "FAI-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"
 
 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"
 
 #, 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"
 
 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"
 
 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"
 
 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"
 
 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"
 
 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!"
 
 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!"
 
 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"
 
 msgid "FAI Package list"
 msgstr "FAI-Paketliste"
 
-#: admin/fai/class_faiPackage.inc:669
+#: admin/fai/class_faiPackage.inc:709
 msgid "Packages"
 msgstr "Pakete"
 
 msgid "Packages"
 msgstr "Pakete"
 
-#: admin/fai/class_faiPackage.inc:671
+#: admin/fai/class_faiPackage.inc:711
 msgid "Install Method"
 msgstr "Installations-Methode"
 
 msgid "Install Method"
 msgstr "Installations-Methode"
 
-#: admin/fai/class_faiPackage.inc:672
+#: admin/fai/class_faiPackage.inc:712
 msgid "Package configuration"
 msgstr "Paket-Konfiguration"
 
 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"
 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"
 "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/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/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/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_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 ""
 
 msgid "Error"
 msgstr ""
 
@@ -57,12 +59,12 @@ msgstr ""
 
 #: admin/systems/services/repository/class_servRepository.inc:177
 #: admin/fai/class_faiSummaryTab.inc:343
 
 #: 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_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
 #: 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/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/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_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: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/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_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"
 #: 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/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 ""
 
 msgid "Release"
 msgstr ""
 
@@ -160,8 +163,10 @@ msgstr ""
 msgid "Add repository"
 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 ""
 
 msgid "Package"
 msgstr ""
 
@@ -186,10 +191,10 @@ msgid "Templates"
 msgstr ""
 
 #: admin/fai/class_faiSummaryTab.inc:48
 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_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 ""
 
 msgid "Partition table"
 msgstr ""
 
@@ -245,41 +250,43 @@ msgstr ""
 
 #: admin/fai/class_faiSummaryTab.inc:348
 #: admin/fai/class_faiPartitionTableEntry.inc:183
 
 #: 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 ""
 
 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 ""
 
 #, 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 ""
 
 #, php-format
 msgid "%s partition(s)"
 msgstr ""
 
-#: admin/fai/class_faiPartitionTable.inc:544
+#: admin/fai/class_faiPartitionTable.inc:529
 msgid "FAI partition table"
 msgstr ""
 
 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 ""
 
 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_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_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_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"
 #: 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 ""
 
 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 ""
 
 msgid "Section"
 msgstr ""
 
@@ -358,10 +365,14 @@ msgstr ""
 msgid "Used packages"
 msgstr ""
 
 msgid "Used packages"
 msgstr ""
 
-#: admin/fai/faiPackage.tpl:82
+#: admin/fai/faiPackage.tpl:84
 msgid "Add from list"
 msgstr ""
 
 msgid "Add from list"
 msgstr ""
 
+#: admin/fai/faiPackage.tpl:91
+msgid "Edit package configurations"
+msgstr ""
+
 #: admin/fai/class_faiPartitionTableEntry.inc:176
 msgid "primary"
 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 ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 msgid "Download"
 msgstr ""
 
-#: admin/fai/class_faiTemplate.inc:537
+#: admin/fai/class_faiTemplate.inc:529
 msgid "Template"
 msgstr ""
 
 msgid "Template"
 msgstr ""
 
-#: admin/fai/class_faiTemplate.inc:538
+#: admin/fai/class_faiTemplate.inc:530
 msgid "FAI template"
 msgstr ""
 
 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 ""
 
 msgid "Readonly"
 msgstr ""
 
@@ -575,11 +586,46 @@ msgstr ""
 msgid "Choose a variable to delete or edit"
 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 ""
 
 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
 #: 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
 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
 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
 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
 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
 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
 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 ""
 
 msgid "Template bundle"
 msgstr ""
 
@@ -659,6 +705,22 @@ msgid ""
 "currently edited package list."
 msgstr ""
 
 "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 ""
 #: 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
 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 ""
 #: admin/fai/faiHookEntry.tpl:56 admin/fai/class_faiHookEntry.inc:158
 msgid "Script"
 msgstr ""
@@ -883,11 +945,6 @@ msgstr ""
 msgid "Show profiles"
 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 ""
 #: admin/fai/class_divListFai.inc:60
 msgid "Show templates"
 msgstr ""
@@ -896,7 +953,7 @@ msgstr ""
 msgid "Show scripts"
 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 ""
 
 msgid "Hook"
 msgstr ""
 
@@ -1030,11 +1087,11 @@ msgstr ""
 msgid "List of scripts"
 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 ""
 
 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 "
 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 ""
 
 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 ""
 
 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 ""
 
 msgid "Priority"
 msgstr ""
 
-#: admin/fai/class_faiScript.inc:332
+#: admin/fai/class_faiScript.inc:327
 msgid "Action"
 msgstr ""
 
 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 ""
 
 msgid "FAI script"
 msgstr ""
 
@@ -1202,10 +1259,21 @@ msgstr ""
 msgid "Debconf information for package '%s'"
 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_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 ""
 #: admin/fai/faiHookEntry.tpl:33 admin/fai/faiHookEntry.tpl:54
 msgid "Hook attributes"
 msgstr ""
@@ -1289,39 +1357,35 @@ msgstr ""
 msgid "FAI settings"
 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 ""
 
 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 ""
 
 msgid "FAI hook"
 msgstr ""
 
-#: admin/fai/class_faiProfile.inc:297
+#: admin/fai/class_faiProfile.inc:301
 msgid "Remove class from profile"
 msgstr ""
 
 msgid "Remove class from profile"
 msgstr ""
 
-#: admin/fai/class_faiProfile.inc:300
+#: admin/fai/class_faiProfile.inc:304
 msgid "Up"
 msgstr ""
 
 msgid "Up"
 msgstr ""
 
-#: admin/fai/class_faiProfile.inc:301
+#: admin/fai/class_faiProfile.inc:305
 msgid "Down"
 msgstr ""
 
 msgid "Down"
 msgstr ""
 
-#: admin/fai/class_faiProfile.inc:403
+#: admin/fai/class_faiProfile.inc:409
 msgid "No class specified for this profile!"
 msgstr ""
 
 msgid "No class specified for this profile!"
 msgstr ""
 
-#: admin/fai/class_faiProfile.inc:484
+#: admin/fai/class_faiProfile.inc:490
 msgid "FAI profile"
 msgstr ""
 
 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 ""
 
 msgid "FAI classes"
 msgstr ""
 
@@ -1333,7 +1397,7 @@ msgstr ""
 msgid "FAI hook entry"
 msgstr ""
 
 msgid "FAI hook entry"
 msgstr ""
 
-#: admin/fai/class_faiVariable.inc:391
+#: admin/fai/class_faiVariable.inc:390
 msgid "FAI variable"
 msgstr ""
 
 msgid "FAI variable"
 msgstr ""
 
@@ -1349,57 +1413,57 @@ msgstr ""
 msgid "FAI variable entry "
 msgstr ""
 
 msgid "FAI variable entry "
 msgstr ""
 
-#: admin/fai/class_faiPackage.inc:228
+#: admin/fai/class_faiPackage.inc:232
 msgid "Invalid package names"
 msgstr ""
 
 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 ""
 
 #, 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 ""
 
 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 ""
 
 msgid "Package marked for removal"
 msgstr ""
 
-#: admin/fai/class_faiPackage.inc:437
+#: admin/fai/class_faiPackage.inc:468
 msgid "Mark package for removal"
 msgstr ""
 
 msgid "Mark package for removal"
 msgstr ""
 
-#: admin/fai/class_faiPackage.inc:443
+#: admin/fai/class_faiPackage.inc:474
 msgid "Configure this package"
 msgstr ""
 
 msgid "Configure this package"
 msgstr ""
 
-#: admin/fai/class_faiPackage.inc:447
+#: admin/fai/class_faiPackage.inc:478
 msgid "Remove this package"
 msgstr ""
 
 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 ""
 
 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 ""
 
 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 ""
 
 msgid "FAI Package list"
 msgstr ""
 
-#: admin/fai/class_faiPackage.inc:669
+#: admin/fai/class_faiPackage.inc:709
 msgid "Packages"
 msgstr ""
 
 msgid "Packages"
 msgstr ""
 
-#: admin/fai/class_faiPackage.inc:671
+#: admin/fai/class_faiPackage.inc:711
 msgid "Install Method"
 msgstr ""
 
 msgid "Install Method"
 msgstr ""
 
-#: admin/fai/class_faiPackage.inc:672
+#: admin/fai/class_faiPackage.inc:712
 msgid "Package configuration"
 msgstr ""
 
 msgid "Package configuration"
 msgstr ""