Code

Prepared statistics to print password changes over time
[gosa.git] / gosa-core / include / class_core.inc
index e49c7d30da2cce53dd040276c6f679dc154d0668..6f9df0b45fcf17070a033a4d538a7f4ec65cf0b5 100644 (file)
 <?php
 
+/*
+ *   How to use plugin::plInfo()
+ *   ===================
+ *   
+ *   The function returns a descriptive array of the plugin,
+ *    which will then be used by GOsa to populate the plugin, its ACLs, 
+ *    its properties, its schema requirements aso.
+ *
+ *
+ *   The following values can be set:
+ *   ================================
+ *
+ *   plShortName    |-> The name of the plugin in short (e.g. Posix)
+ *                  |   This short-name will be shown for example in the ACL definitions.
+ *                  | 
+ *                  | 
+ *   plDescription  |-> A descriptive text for the plugin (e.g. User posix account extension)
+ *                  |   This will be shown in the ACL definitions.   
+ *                  | 
+ *                  | 
+ *   plSelfModify   |-> If set to true this plugin allows to set 'self' ACLs.
+ *                  |   For exampe to allow to change the users own password, but not the others.
+ *                  | 
+ *                  | 
+ *   plDepends      |-> The plugins dependencies to other classes (e.g. sambaAccount requires posixAccount)
+ *                  |  
+ *                  | 
+ *   plPriority     |-> The priority of the plugin, this influences the ACL listings only.
+ *                  | 
+ *                  | 
+ *   plSection      |-> The section of this plugin 'administration', 'personal', 'addons'
+ *                  | 
+ *                  | 
+ *   plCategory     |-> The plugin category this plugins belongs to (e.g. users, groups, departments) 
+ *                  | 
+ *                  | 
+ *   plRequirements |-> Plugin requirements. 
+ *                  | |
+ *                  | |-> [activePlugin]           The schame checks will only be performed if the given plugin is enabled
+ *                  | |                             in the gosa.conf definitions.
+ *                  | |                            Defaults to the current class name if empty.
+ *                  | |
+ *                  | |-> [ldapSchema]             An array of objectClass requirements.
+ *                  | |                            Syntax [[objectClass => 'version'], ... ]
+ *                  | |                            Version can be emtpy which just checks for the existence of the class.
+ *                  | |
+ *                  | |-> [onFailureDisablePlugin] A list of plugins that which will be disabled if the 
+ *                  |                               requirements couldn't be fillfulled.
+ *                  |
+ *                  |      ---------------------------------------------
+ *                  |      EXAMPLE:
+ *                  |      ---------------------------------------------
+ *                  |      "plRequirements"=> array(
+ *                  |         'activePlugin' => 'applicationManagement', 
+ *                  |         'ldapSchema' => array(
+ *                  |             'gosaObject' => '',
+ *                  |             'gosaAccount' => '>=2.7',
+ *                  |             'gosaLockEntry' => '>=2.7',
+ *                  |             'gosaDepartment' => '>=2.7',
+ *                  |             'gosaCacheEntry' => '>=2.7',
+ *                  |             'gosaProperties' => '>=2.7',
+ *                  |             'gosaConfig' => '>=2.7'
+ *                  |             ),
+ *                  |         'onFailureDisablePlugin' => array(get_class(), 'someClassName')
+ *                  |         ),
+ *                  |      ---------------------------------------------
+ *                  |
+ *                  |
+ *                  |         
+ *   plProvidedAcls |-> The ACLs provided by this plugin
+ *                  |
+ *                  |      ---------------------------------------------
+ *                  |      EXAMPLE:
+ *                  |      ---------------------------------------------
+ *                  |      "plProvidedAcls"=> array(
+ *                  |          'cn'             => _('Name'),
+ *                  |          'uid'            => _('Uid'),
+ *                  |          'phoneNumber'    => _('Phone number')
+ *                  |          ),
+ *                  |      ---------------------------------------------
+ *                  |
+ *                  |
+ *                  | 
+ *   plProperties   |-> Properties used by the plugin.
+ *                  |   Properties which are defined here will be modifyable using the property editor.
+ *                  |   To read properties you can use $config->get_cfg_value(className, propertyName)
+ *                  | 
+ *                  |      ---------------------------------------------
+ *                  |      EXAMPLE:
+ *                  |      ---------------------------------------------
+ *                  |      "plProperties"=> array(
+ *                  |         array(
+ *                  |             "name"          => "htaccessAuthentication",
+ *                  |             "type"          => "bool",
+ *                  |             "default"       => "false",
+ *                  |             "description"   => _("A description..."),
+ *                  |             "check"         => "gosaProperty::isBool",
+ *                  |             "migrate"       => "",
+ *                  |             "group"         => "authentification",
+ *                  |             "mandatory"     => TRUE
+ *                  |             ),
+ *                  |         ),
+ *                  |   See class_core.inc for a huge amount of examples.
+ */
+
 
 class all extends plugin {
     static function plInfo()
     {
         return (array(
                     "plShortName"   => _("All"),
-                    "plDescription" => _("All objects in this category"),
+                    "plDescription" => _("All objects"),
                     "plSelfModify"  => TRUE,
                     "plDepends"     => array(),
                     "plPriority"    => 0,
                     "plSection"     => array("administration"),
-                    "plCategory"    => array("all" => array("objectClass" => "none", "description" => '*&nbsp;'._("All"))),
+                    "plCategory"    => array("all" => array("description" => '*&nbsp;'._("All"))),
                     "plProvidedAcls"    => array())
                );
     }
@@ -33,6 +138,16 @@ class core extends plugin {
                     $list[$method] = $desc;
                 }
                 break;
+            case 'theme':
+                $cmd = "cd ../ihtml/themes; find . -name 'img.styles' | sed s/'^[^\/]*\/\([^\/]*\).*'/'\\1'/g";
+                $res = `$cmd`  ; 
+                $list = array();
+                foreach(preg_split("/\n/",$res) as $entry){
+                    if(!empty($entry)){
+                        $list[$entry] = $entry;
+                    }
+                }
+                break;
             case 'accountPrimaryAttribute':
                 $list = array('uid' => 'uid', 'cn' => 'cn');
                 break;
@@ -57,7 +172,12 @@ class core extends plugin {
                 $list = array('mail' => 'mail','uid' => 'uid');
                 break;
             case 'mailMethod': 
-                $list = mailMethod::get_methods();
+                $tmp = mailMethod::get_methods();
+                $list =array();
+                foreach($tmp as $name => $value){
+                    $name = preg_replace('/^mailMethod/','', $name);
+                    $list[$name] = $value;
+                }
                 $list[''] = _("None");
                 break;
             case 'language':
@@ -89,6 +209,22 @@ class core extends plugin {
                     "plDepends"     => array(),
                     "plPriority"    => 0,
                     "plSection"     => array("administration"),
+
+                    "plRequirements"=> array(
+                        'ldapSchema' => array(
+                            'gosaObject' => '>=2.7',
+                            'gosaAccount' => '>=2.7',
+                            'gosaLockEntry' => '>=2.7',
+                            'gosaDepartment' => '>=2.7',
+                            'gosaCacheEntry' => '>=2.7',
+                            'gosaProperties' => '>=2.7',
+                            'gosaConfig' => '>=2.7'
+                            ),
+                        'onFailureDisablePlugin' => array(get_class())
+                        ),
+
+
+
                     "plCategory"    => array("all"),
                     "plProperties"  => array(
 
@@ -96,12 +232,32 @@ class core extends plugin {
                             "name"          => "htaccessAuthentication",
                             "type"          => "bool",
                             "default"       => "false",
-                            "description"   => _("The 'htaccessAuthentication' variable tells GOsa to use either htaccess authentication or LDAP authentication. This can be used if you want to use i.e. kerberos to authenticate the users."),
+                            "description"   => _("The 'htaccessAuthentication' variable tells GOsa to use either htaccess authentication or LDAP authentication. This can be used if you want to use i.e. Kerberos to authenticate the users."),
                             "check"         => "gosaProperty::isBool",
                             "migrate"       => "",
                             "group"         => "authentification",
                             "mandatory"     => TRUE),
 
+                        array(
+                            "name"          => "statsDatabaseEnabled",
+                            "type"          => "bool",
+                            "default"       => "false",
+                            "description"   => _("Enables/Disables GOSa usage statistics moduls."),
+                            "check"         => "gosaProperty::isBool",
+                            "migrate"       => "",
+                            "group"         => "core",
+                            "mandatory"     => TRUE),
+
+                        array(
+                                "name"          => "statsDatabaseDirectory",
+                                "type"          => "path",
+                                "default"       => "/var/spool/gosa/stats",
+                                "description"   => _("The database file for GOSa usage statistics."),
+                                "check"         => "gosaProperty::isWriteablePath",
+                                "migrate"       => "",
+                                "group"         => "core",
+                                "mandatory"     => TRUE),
+
                         array(
                             "name"          => "logging",
                             "type"          => "bool",
@@ -154,21 +310,42 @@ class core extends plugin {
                                 "group"         => "password",
                                 "mandatory"     => FALSE),
 
+                        array(
+                                "name"          => "passwordProposalHook",
+                                "type"          => "command",
+                                "default"       => "",
+                                "description"   => _("The 'passwordProposalHook' can be used to let GOsa generate password proposals for you. Whenever you change a password, you can then decide whether to use the proposal or to manually specify a password.")." "._("Here is an example command:")." /usr/bin/apg -n1",
+                                "check"         => "gosaProperty::isCommand",
+                                "migrate"       => "",
+                                "group"         => "password",
+                                "mandatory"     => FALSE),
+
                         array(
                                 "name"          => "displayErrors",
                                 "type"          => "bool",
                                 "default"       => "false",
-                                "description"   => "The 'displayErrors' statement tells GOsa to show PHP errors in the upper part of the screen. This should be disabled in productive deployments, because there might be some important passwords arround.",
+                                "description"   => _("The 'displayErrors' statement tells GOsa to show PHP errors in the upper part of the screen. This should be disabled in productive deployments, because there might be some important passwords arround.")." ".sprintf(_("The property '%s' may be interesting too."),'developmentMode'),
+                                "check"         => "gosaProperty::isBool",
+                                "migrate"       => "",
+                                "group"         => "debug",
+                                "mandatory"     => TRUE),
+
+                        array(
+                                "name"          => "developmentMode",
+                                "type"          => "bool",
+                                "default"       => "false",
+                                "description"   => _("The 'developmentMode' statement tells GOsa to show development related error messages, for example messages about missing ACL configuration or classes. Due to the fact that enabling this flag will result in a lot of false error messages it should only be enabled while developing or debugging plugins!"),
                                 "check"         => "gosaProperty::isBool",
                                 "migrate"       => "",
                                 "group"         => "debug",
                                 "mandatory"     => TRUE),
 
+
                         array(
                                 "name"          => "schemaCheck",
                                 "type"          => "bool",
                                 "default"       => "true",
-                                "description"   => "The 'schemaCheck' statement enables or disables schema checking during login. It is recommended to switch this on in order to let GOsa handle object creation more efficient.",
+                                "description"   => _("The 'schemaCheck' statement enables or disables schema checking during login. It is recommended to switch this on in order to let GOsa handle object creation more efficient."),
                                 "check"         => "gosaProperty::isBool",
                                 "migrate"       => "",
                                 "group"         => "debug",
@@ -178,7 +355,7 @@ class core extends plugin {
                                 "name"          => "copyPaste",
                                 "type"          => "bool",
                                 "default"       => "false",
-                                "description"   => "The 'copyPaste' statement enables copy and paste for LDAP entries managed with GOsa.",
+                                "description"   => _("The 'copyPaste' statement enables copy and paste for LDAP entries managed with GOsa."),
                                 "check"         => "gosaProperty::isBool",
                                 "migrate"       => "",
                                 "group"         => "copyPaste",
@@ -186,9 +363,9 @@ class core extends plugin {
 
                         array(
                                 "name"          => "forceGlobals",
-                                "type"          => "bool",
+                                "type"          => "noLdap",
                                 "default"       => "false",
-                                "description"   => "The 'forceGlobals' statement enables PHP security checks to force register_global settings to be switched off.",
+                                "description"   => _("The 'forceGlobals' statement enables PHP security checks to force register_global settings to be switched off."),
                                 "check"         => "gosaProperty::isBool",
                                 "migrate"       => "",
                                 "group"         => "security",
@@ -196,9 +373,9 @@ class core extends plugin {
 
                         array(
                                 "name"          => "forceSSL",
-                                "type"          => "bool",
+                                "type"          => "noLdap",
                                 "default"       => "false",
-                                "description"   => "The 'forceSSL' statement enables PHP security checks to force encrypted access to the web interface. GOsa will try to redirect to the same URL - just with https://",
+                                "description"   => _("The 'forceSSL' statement enables PHP security checks to force encrypted access to the web interface. GOsa will try to redirect to the same URL - just with https://"),
                                 "check"         => "gosaProperty::isBool",
                                 "migrate"       => "",
                                 "group"         => "security",
@@ -224,6 +401,16 @@ class core extends plugin {
                                 "group"         => "ldap",
                                 "mandatory"     => TRUE),
 
+                        array(
+                                "name"          => "ldapFilterNestingLimit",
+                                "type"          => "integer",
+                                "default"       => 200,
+                                "description"   => _("The 'ldapFilterNestingLimit' statement can be used to speed up group handling for groups with several hundreds of members. The default behaviour is, that GOsa will resolv the memberUid values in a group to real names. To achieve this, it writes a single filter to minimize searches. Some LDAP servers (namely Sun DS) simply crash when the filter gets too big. You can set a member limit, where GOsa will stop to do these lookups."),
+                                "check"         => "gosaProperty::isInteger",
+                                "migrate"       => "",
+                                "group"         => "ldap",
+                                "mandatory"     => TRUE),
+
                         array(
                                 "name"          => "ldapSizelimit",
                                 "type"          => "integer",
@@ -246,9 +433,9 @@ class core extends plugin {
 
                         array(
                                 "name"          => "warnSSL",
-                                "type"          => "bool",
+                                "type"          => "noLdap",
                                 "default"       => "true",
-                                "description"   => "The 'warnSSL' statement enables PHP security checks to detect non encrypted access to the web interface. GOsa will display a warning in this case.",
+                                "description"   => _("The 'warnSSL' statement enables PHP security checks to detect non encrypted access to the web interface. GOsa will display a warning in this case."),
                                 "check"         => "gosaProperty::isBool",
                                 "migrate"       => "",
                                 "group"         => "security",
@@ -258,7 +445,7 @@ class core extends plugin {
                                 "name"          => "ppdGzip",
                                 "type"          => "bool",
                                 "default"       => "true",
-                                "description"   => "The 'ppdGzip' variable enables PPD file compression.",
+                                "description"   => _("The 'ppdGzip' variable enables PPD file compression."),
                                 "check"         => "gosaProperty::isBool",
                                 "migrate"       => "",
                                 "group"         => "ppd",
@@ -269,7 +456,7 @@ class core extends plugin {
                                 "name"          => "ignoreAcl",
                                 "type"          => "dn",
                                 "default"       => "",
-                                "description"   => "The 'ignoreAcl' value tells GOsa to ignore complete ACL sets for the given DN. Add your DN here and you'll be able to restore accidently dropped ACLs.",
+                                "description"   => _("The 'ignoreAcl' value tells GOsa to ignore complete ACL sets for the given DN. Add your DN here and you'll be able to restore accidently dropped ACLs."),
                                 "check"         => "gosaProperty::isDN",
                                 "migrate"       => "",
                                 "group"         => "debug",
@@ -280,7 +467,7 @@ class core extends plugin {
                                 "name"          => "ppdPath",
                                 "type"          => "path",
                                 "default"       => "/var/spool/ppd",
-                                "description"   => "The 'ppdPath' variable defines where to store PPD files for the GOto environment plugins.",
+                                "description"   => _("The 'ppdPath' variable defines where to store PPD files for the GOto environment plugins."),
                                 "check"         => "gosaProperty::isPath",
                                 "migrate"       => "",
                                 "group"         => "ppd",
@@ -290,7 +477,7 @@ class core extends plugin {
                                 "name"          => "ldapMaxQueryTime",
                                 "type"          => "integer",
                                 "default"       => "",
-                                "description"   => "The 'ldapMaxQueryTime' statement tells GOsa to stop LDAP actions if there is no answer within the specified number of seconds.",
+                                "description"   => _("The 'ldapMaxQueryTime' statement tells GOsa to stop LDAP actions if there is no answer within the specified number of seconds."),
                                 "check"         => "gosaProperty::isInteger",
                                 "migrate"       => "",
                                 "group"         => "debug",
@@ -300,7 +487,7 @@ class core extends plugin {
                                 "name"          => "storeFilterSettings",
                                 "type"          => "bool",
                                 "default"       => "true",
-                                "description"   => "The 'storeFilterSettings' statement determines whether GOsa should store filter and plugin settings inside of a cookie.",
+                                "description"   => _("The 'storeFilterSettings' statement determines whether GOsa should store filter and plugin settings inside of a cookie."),
                                 "check"         => "gosaProperty::isBool",
                                 "migrate"       => "",
                                 "group"         => "core",
@@ -310,7 +497,7 @@ class core extends plugin {
                                 "name"          => "sendCompressedOutput",
                                 "type"          => "bool",
                                 "default"       => "true",
-                                "description"   => "The 'sendCompressedOutput' statement determines whether PHP should send compressed HTML pages to browsers or not. This may increase or decrease the performance, depending on your network.",
+                                "description"   => _("The 'sendCompressedOutput' statement determines whether PHP should send compressed HTML pages to browsers or not. This may increase or decrease the performance, depending on your network."),
                                 "check"         => "gosaProperty::isBool",
                                 "migrate"       => "",
                                 "group"         => "core",
@@ -321,7 +508,7 @@ class core extends plugin {
                                 "type"          => "switch",
                                 "default"       => "entryCSN",
                                 "defaults"      => "core::getPropertyValues",
-                                "description"   => "The 'modificationDetectionAttribute' statement enables GOsa to check if a entry currently being edited has been modified from someone else outside GOsa in the meantime. It will display an informative dialog then. It can be set to 'entryCSN' for OpenLDAP based systems or 'contextCSN' for Sun DS based systems.",
+                                "description"   => _("The 'modificationDetectionAttribute' statement enables GOsa to check if a entry currently being edited has been modified from someone else outside GOsa in the meantime. It will display an informative dialog then. It can be set to 'entryCSN' for OpenLDAP based systems or 'contextCSN' for Sun DS based systems."),
                                 "check"         => "",
                                 "migrate"       => "",
                                 "group"         => "core",
@@ -332,7 +519,7 @@ class core extends plugin {
                                 "type"          => "switch",
                                 "default"       => "",
                                 "defaults"      => "core::getPropertyValues",
-                                "description"       => "The 'language' statement defines the default language used by GOsa. Normally GOsa autodetects the language from the browser settings. If this is not working or you want to force the language, just add the language code (i.e. de for german) here.",
+                                "description"   => _("The 'language' statement defines the default language used by GOsa. Normally GOsa autodetects the language from the browser settings. If this is not working or you want to force the language, just add the language code (i.e. de for german) here."),
                                 "check"         => "",
                                 "migrate"       => "",
                                 "group"         => "core",
@@ -340,20 +527,20 @@ class core extends plugin {
 
                         array(
                                 "name"          => "theme",
-                                "type"          => "string",
+                                "type"          => "switch",
                                 "default"       => "default",
                                 "defaults"      => "core::getPropertyValues",
-                                "description"   => "The 'theme' statement defines what theme is used to display GOsa pages. You can install some corporate identity like theme and/or modify certain templates to fit your needs within themes. Take a look at the GOsa FAQ for more information.",
+                                "description"   => _("The 'theme' statement defines what theme is used to display GOsa pages. You can install some corporate identity like theme and/or modify certain templates to fit your needs within themes. Take a look at the GOsa FAQ for more information."),
                                 "check"         => "",
                                 "migrate"       => "",
                                 "group"         => "visual",
-                                "mandatory"     => FALSE),
+                                "mandatory"     => TRUE),
 
                         array(
                                 "name"          => "sessionLifetime",
                                 "type"          => "integer",
-                                "default"       => 7200,
-                                "description"   => "The 'sessionLifetime' value defines when a session will expire in seconds. For Debian systems, this will not work because the sessions will be removed by a cron job instead. Please modify the value inside of your php.ini instead.",
+                                "default"       => 600,
+                                "description"   => _("The 'sessionLifetime' value defines when a session will expire in seconds. For Debian systems, this will not work because the sessions will be removed by a cron job instead. Please modify the value inside of your php.ini instead."),
                                 "check"         => "gosaProperty::isInteger",
                                 "migrate"       => "",
                                 "group"         => "security",
@@ -363,7 +550,7 @@ class core extends plugin {
                                 "name"          => "templateCompileDirectory",
                                 "type"          => "path",
                                 "default"       => "/var/spool/gosa",
-                                "description"   => "The 'templateCompileDirectory' statements defines the path, where the PHP templating engins 'smarty' should store its compiled GOsa templates for improved speed. This path needs to be writeable by the user your webserver is running with.",
+                                "description"   => _("The 'templateCompileDirectory' statements defines the path, where the PHP templating engins 'smarty' should store its compiled GOsa templates for improved speed. This path needs to be writeable by the user your webserver is running with."),
                                 "check"         => "gosaProperty::isWriteablePath",
                                 "migrate"       => "",
                                 "group"         => "core",
@@ -404,7 +591,7 @@ DEBUG_SI      = 256"),
                                 "type"          => "switch",
                                 "default"       => "crypt/md5",
                                 "defaults"      => "core::getPropertyValues",
-                                "description"   => "The 'passwordDefaultHash' statement defines the default password hash to choose for new accounts.",
+                                "description"   => _("The 'passwordDefaultHash' statement defines the default password hash to choose for new accounts."),
                                 "check"         => "",
                                 "migrate"       => "",
                                 "group"         => "password",
@@ -424,7 +611,7 @@ DEBUG_SI      = 256"),
                                 "type"          => "switch",
                                 "default"       => "cn",
                                 "defaults"      => "core::getPropertyValues",
-                                "description"   => "The 'accountPrimaryAttribute' option tells GOsa how to create new accounts. Possible values are 'uid' and 'cn'. In the first case GOsa creates uid style DN entries: 'uid=superuser,ou=staff,dc=example,dc=net'. In the second case, GOsa creates cn style DN entries: 'cn=Foo Bar,ou=staff,dc=example,dc=net'. If you choose \"cn\" to be your 'accountPrimaryAttribute' you can decide whether to include the personal title in your dn by selecting 'personalTitleInDN'.",
+                                "description"   => _("The 'accountPrimaryAttribute' option tells GOsa how to create new accounts. Possible values are 'uid' and 'cn'. In the first case GOsa creates uid style DN entries: 'uid=superuser,ou=staff,dc=example,dc=net'. In the second case, GOsa creates cn style DN entries: 'cn=Foo Bar,ou=staff,dc=example,dc=net'. If you choose \"cn\" to be your 'accountPrimaryAttribute' you can decide whether to include the personal title in your dn by selecting 'personalTitleInDN'."),
                                 "check"         => "",
                                 "migrate"       => "",
                                 "group"         => "security",
@@ -433,20 +620,20 @@ DEBUG_SI      = 256"),
                         array(
                                 "name"          => "userRDN",
                                 "type"          => "rdn",
-                                "default"       => "ou=people",
-                                "description"   => "The 'userRDN' statement defines the location where new accounts will be created inside of defined departments. The default is 'ou=people'.",
+                                "default"       => "ou=people,",
+                                "description"   => _("The 'userRDN' statement defines the location where new accounts will be created inside of defined departments. The default is 'ou=people'."),
                                 "check"         => "gosaProperty::isRdn",
-                                "migrate"       => "",
+                                "migrate"       => "migrate_userRDN", 
                                 "group"         => "user",
                                 "mandatory"     => FALSE),
 
                         array(
                                 "name"          => "groupRDN",
                                 "type"          => "rdn",
-                                "default"       => "ou=groups",
-                                "description"   => "The 'groupsRDN' statement defines the location where new groups will be created inside of defined departments. The default is 'ou=groups'.",
+                                "default"       => "ou=groups,",
+                                "description"   => _("The 'groupsRDN' statement defines the location where new groups will be created inside of defined departments. The default is 'ou=groups'."),
                                 "check"         => "gosaProperty::isRdn",
-                                "migrate"       => "",
+                                "migrate"       => "migrate_groupRDN",
                                 "group"         => "group",
                                 "mandatory"     => FALSE),
 
@@ -454,7 +641,7 @@ DEBUG_SI      = 256"),
                                 "name"          => "gidNumberBase",
                                 "type"          => "integer",
                                 "default"       => "1000",
-                                "description"   => "The 'gidNumberBase' statement defines where to start looking for a new free group id. This should be synced with your 'adduser.conf' to avoid overlapping gidNumber values between local and LDAP based lookups. The gidNumberBase can even be dynamic. Take a look at the 'nextIdHook' definition.",
+                                "description"   => _("The 'gidNumberBase' statement defines where to start looking for a new free group id. This should be synced with your 'adduser.conf' to avoid overlapping gidNumber values between local and LDAP based lookups. The gidNumberBase can even be dynamic. Take a look at the 'nextIdHook' definition."),
                                 "check"         => "gosaProperty::isInteger",
                                 "migrate"       => "",
                                 "group"         => "id",
@@ -462,69 +649,99 @@ DEBUG_SI      = 256"),
 
                        array(
                                 "name"          => "baseIdHook",
-                                "type"          => "cmd",
+                                "type"          => "command",
                                 "default"       => "",
                                 "description"   => _("The 'baseIdHook' statement allows to hook into the id generation method (traditional mode), to define the starting range for new generated ids"), 
                                 "check"         => "gosaProperty::isCommand",
                                 "migrate"       => "",
                                 "group"         => "id",
-                                "mandatory"     => TRUE),
+                                "mandatory"     => FALSE),
 
                         array(
                                 "name"          => "gidNumberPoolMin",
                                 "type"          => "integer",
                                 "default"       => 10000,
-                                "description"   => "The 'uidNumberPoolMin/gidNumberPoolMin' statement defines the lowest assignable user/group id for use with the 'idAllocationMethod = pool'.",
+                                "description"   => _("The 'uidNumberPoolMin/gidNumberPoolMin' statement defines the lowest assignable user/group id for use with the 'idAllocationMethod = pool'."),
                                 "check"         => "gosaProperty::isInteger",
                                 "migrate"       => "",
                                 "group"         => "id",
-                                "mandatory"     => TRUE),
+                                "mandatory"     => FALSE),
 
                         array(
                                 "name"          => "gidNumberPoolMax",
                                 "type"          => "integer",
                                 "default"       => 40000,
-                                "description"   => "The 'uidNumberPoolMax/gidNumberPoolMax' statement defines the highest assignable user/group id for use with the 'idAllocationMethod = pool'.",
+                                "description"   => _("The 'uidNumberPoolMax/gidNumberPoolMax' statement defines the highest assignable user/group id for use with the 'idAllocationMethod = pool'."),
                                 "check"         => "gosaProperty::isInteger",
                                 "migrate"       => "",
                                 "group"         => "id",
-                                "mandatory"     => TRUE),
+                                "mandatory"     => FALSE),
 
                         array(
                                 "name"          => "uidNumberPoolMin",
                                 "type"          => "integer",
                                 "default"       => 10000,
-                                "description"   => "The 'uidNumberPoolMin/gidNumberPoolMin' statement defines the lowest assignable user/group id for use with the 'idAllocationMethod = pool'.",
+                                "description"   => _("The 'uidNumberPoolMin/gidNumberPoolMin' statement defines the lowest assignable user/group id for use with the 'idAllocationMethod = pool'."),
                                 "check"         => "gosaProperty::isInteger",
                                 "migrate"       => "",
                                 "group"         => "id",
-                                "mandatory"     => TRUE),
+                                "mandatory"     => FALSE),
 
                         array(
                                 "name"          => "uidNumberPoolMax",
                                 "type"          => "integer",
                                 "default"       => 40000,
-                                "description"   => "The 'uidNumberPoolMax/gidNumberPoolMax' statement defines the highest assignable user/group id for use with the 'idAllocationMethod = pool'.",
+                                "description"   => _("The 'uidNumberPoolMax/gidNumberPoolMax' statement defines the highest assignable user/group id for use with the 'idAllocationMethod = pool'."),
                                 "check"         => "gosaProperty::isInteger",
                                 "migrate"       => "",
                                 "group"         => "id",
-                                "mandatory"     => TRUE),
+                                "mandatory"     => FALSE),
 
                         array(
                                 "name"          => "uidNumberBase",
                                 "type"          => "integer",
                                 "default"       => "1000",
-                                "description"   => "The 'uidNumberBase' statement defines where to start looking for a new free user id. This should be synced with your 'adduser.conf' to avoid overlapping uidNumber values between local and LDAP based lookups. The uidNumberBase can even be dynamic. Take a look at the 'baseIdHook' definition.",
+                                "description"   => _("The 'uidNumberBase' statement defines where to start looking for a new free user id. This should be synced with your 'adduser.conf' to avoid overlapping uidNumber values between local and LDAP based lookups. The uidNumberBase can even be dynamic. Take a look at the 'baseIdHook' definition."),
                                 "check"         => "gosaProperty::isInteger",
                                 "migrate"       => "",
                                 "group"         => "id",
-                                "mandatory"     => TRUE),
+                                "mandatory"     => FALSE),
+
+                        array(
+                                "name"          => "gosaRpcServer",
+                                "type"          => "string",
+                                "default"       => "",
+                                "description"   => "The server to use for RPC connections! (http://localhost:8080/rpc), Future GOsa-ng service! If this value is set and not empty GOsa will try to establish a connection!",
+                                "check"         => "",
+                                "migrate"       => "",
+                                "group"         => "rpc",
+                                "mandatory"     => FALSE),
+
+                        array(
+                                "name"          => "gosaRpcUser",
+                                "type"          => "string",
+                                "default"       => "admin",
+                                "description"   => "Ther username to use for RPC connections! Future GOsa-ng service!",
+                                "check"         => "",
+                                "migrate"       => "",
+                                "group"         => "rpc",
+                                "mandatory"     => FALSE),
+
+                        array(
+                                "name"          => "gosaRpcPassword",
+                                "type"          => "string",
+                                "default"       => "tester",
+                                "description"   => "Ther password to use for RPC connections! Future GOsa-ng service!",
+                                "check"         => "",
+                                "migrate"       => "",
+                                "group"         => "rpc",
+                                "mandatory"     => FALSE),
 
                         array(
                                 "name"          => "gosaSupportURI",
                                 "type"          => "string",
                                 "default"       => "",
-                                "description"   => "The 'gosaSupportURI' defines the major gosa-si server host and the password for GOsa to connect to it. It can be used if you want to use i.e. kerberos to authenticate the users. The format is: credentials@host:port",
+                                "description"   => _("The 'gosaSupportURI' defines the major gosa-si server host and the password for GOsa to connect to it. It can be used if you want to use i.e. kerberos to authenticate the users. The format is: credentials@host:port"),
                                 "check"         => "",
                                 "migrate"       => "",
                                 "group"         => "gosa-si",
@@ -534,7 +751,7 @@ DEBUG_SI      = 256"),
                                 "name"          => "gosaSupportTimeout",
                                 "type"          => "integer",
                                 "default"       => 15,
-                                "description"   => "The 'gosaSupportTimeout' sets a connection timeout for all gosa-si actions. See 'gosaSupportURI' for details.",
+                                "description"   => _("The 'gosaSupportTimeout' sets a connection timeout for all gosa-si actions. See 'gosaSupportURI' for details."),
                                 "check"         => "gosaProperty::isInteger",
                                 "migrate"       => "",
                                 "group"         => "gosa-si",
@@ -545,7 +762,7 @@ DEBUG_SI      = 256"),
                                 "type"          => "switch",
                                 "default"       => "uid",
                                 "defaults"      => "core::getPropertyValues",
-                                "description"   => "The 'loginAttribute' statement tells GOsa which LDAP attribute is used as the login name during login. It can be set to 'uid', 'mail' or 'both'",
+                                "description"   => _("The 'loginAttribute' statement tells GOsa which LDAP attribute is used as the login name during login. It can be set to 'uid', 'mail' or 'both'"),
                                 "check"         => "",
                                 "migrate"       => "",
                                 "group"         => "security",
@@ -556,19 +773,19 @@ DEBUG_SI      = 256"),
                                 "type"          => "switch",
                                 "default"       => "",
                                 "defaults"      => "core::getPropertyValues",
-                                "description"   => "The 'timezone' statements defines the timezone used inside of GOsa to handle date related tasks, such as password expiery, vacation messages, etc. The 'timezone' value should be a unix conform timezone value like in /etc/timezone.",
+                                "description"   => _("The 'timezone' statements defines the timezone used inside of GOsa to handle date related tasks, such as password expiery, vacation messages, etc. The 'timezone' value should be a unix conform timezone value like in /etc/timezone."),
                                 "check"         => "",
                                 "migrate"       => "",
                                 "group"         => "core",
-                                "mandatory"     => TRUE),
+                                "mandatory"     => FALSE),
 
                         array(
                                 "name"          => "honourUnitTags",
                                 "type"          => "bool",
                                 "default"       => "false",
-                                "description"   => "The 'honourUnitTags' statement enables checking of 'unitTag' attributes when using administrative units. If this is set to 'true' GOsa can only see objects inside the administrative unit a user is logged into.",
+                                "description"   => _("The 'honourUnitTags' statement enables checking of 'unitTag' attributes when using administrative units. If this is set to 'true' GOsa can only see objects inside the administrative unit a user is logged into."),
                                 "check"         => "",
-                                "migrate"       => "gosaProperty::isBool",
+                                "migrate"       => "",
                                 "group"         => "core",
                                 "mandatory"     => FALSE),
 
@@ -576,7 +793,7 @@ DEBUG_SI      = 256"),
                                 "name"          => "useSaslForKerberos",
                                 "type"          => "bool",
                                 "default"       => "false",
-                                "description"   => "The 'useSaslForKerberos' statement defines the way the kerberos realm is stored in the #userPassword' attribute. Set it to 'true' in order to get {sasl}user@REALM.NET, or to 'false' to get {kerberos}user@REALM.NET. The latter is outdated, but may be needed from time to time.",
+                                "description"   => _("The 'useSaslForKerberos' statement defines the way the kerberos realm is stored in the #userPassword' attribute. Set it to 'true' in order to get {sasl}user@REALM.NET, or to 'false' to get {kerberos}user@REALM.NET. The latter is outdated, but may be needed from time to time."),
                                 "check"         => "gosaProperty::isBool",
                                 "migrate"       => "",
                                 "group"         => "password",
@@ -586,7 +803,7 @@ DEBUG_SI      = 256"),
                                 "name"          => "rfc2307bis",
                                 "type"          => "bool",
                                 "default"       => "false",
-                                "description"   => "The 'rfc2307bis' statement enables rfc2307bis style groups in GOsa. You can use 'member' attributes instead of memberUid in this case. To make it work on unix systems, you've to adjust your NSS configuration to use rfc2307bis style groups, too",
+                                "description"   => _("The 'rfc2307bis' statement enables rfc2307bis style groups in GOsa. You can use 'member' attributes instead of memberUid in this case. To make it work on unix systems, you've to adjust your NSS configuration to use rfc2307bis style groups, too"),
                                 "check"         => "gosaProperty::isBool",
                                 "migrate"       => "",
                                 "group"         => "core",
@@ -596,7 +813,7 @@ DEBUG_SI      = 256"),
                                 "name"          => "personalTitleInDN",
                                 "type"          => "bool",
                                 "default"       => "false",
-                                "description"   => "The 'personalTitleInDN' option tells GOsa to include the personal title in user DNs when #accountPrimaryAttribute' is set to \"cn\".",
+                                "description"   => _("The 'personalTitleInDN' option tells GOsa to include the personal title in user DNs when #accountPrimaryAttribute' is set to \"cn\"."),
                                 "check"         => "gosaProperty::isBool",
                                 "migrate"       => "",
                                 "group"         => "storage location",
@@ -606,27 +823,17 @@ DEBUG_SI      = 256"),
                                 "name"          => "nextIdHook",
                                 "type"          => "command",
                                 "default"       => "",
-                                "description"   => "The 'nextIdHook' statement defines a script to be called for finding the next free id for users or groups externaly. It gets called with the current entry \"dn\" and the attribute to be ID'd. It should return an integer value.",
+                                "description"   => _("The 'nextIdHook' statement defines a script to be called for finding the next free id for users or groups externaly. It gets called with the current entry \"dn\" and the attribute to be ID'd. It should return an integer value."),
                                 "check"         => "gosaProperty::isCommand",
                                 "migrate"       => "",
                                 "group"         => "id",
                                 "mandatory"     => FALSE),
 
-                        array(
-                                "name"          => "sambaMachineAccountRDN",
-                                "type"          => "rdn",
-                                "default"       => "ou=winstations",
-                                "description"   => "This statement defines the location where GOsa looks for new samba workstations.",
-                                "check"         => "gosaProperty::isRdn",
-                                "migrate"       => "",
-                                "group"         => "samba",
-                                "mandatory"     => FALSE),
-
                         array(
                                 "name"          => "idGenerator",
                                 "type"          => "string",
                                 "default"       => "{%sn}-{%givenName[2-4]}",
-                                "description"   => "The 'idGenerator' statement describes an automatic way to generate new user ids. There are two basic functions supported - which can be combined: 
+                                "description"   => _("The 'idGenerator' statement describes an automatic way to generate new user ids. There are two basic functions supported - which can be combined: 
 
  a) using attributes
 
@@ -656,7 +863,7 @@ DEBUG_SI      = 256"),
       idGenerator=\"ext{id#3}\"
 
     will generate a three digits random number appended to \"ext\".
-",
+"),
                                 "check"         => "",
                                 "migrate"       => "",
                                 "group"         => "core",
@@ -666,9 +873,9 @@ DEBUG_SI      = 256"),
                                 "name"          => "strictNamingRules",
                                 "type"          => "bool",
                                 "default"       => "true",
-                                "description"   => "",
+                                "description"   => _("The 'strictNamingRules' statement enables strict checking of uids and group names. If you need   characters like . or - inside of your accounts, set this to 'false'."),
                                 "check"         => "gosaProperty::isBool",
-                                "migrate"       => "The 'strictNamingRules' statement enables strict checking of uids and group names. If you need characters like . or - inside of your accounts, set this to 'false'",
+                                "migrate"       => "",
                                 "group"         => "core",
                                 "mandatory"     => FALSE),
 
@@ -676,7 +883,7 @@ DEBUG_SI      = 256"),
                                 "name"          => "minId",
                                 "type"          => "integer",
                                 "default"       => 40,
-                                "description"   => "The 'minId' statement defines the minimum assignable user or group id to avoid security leaks with uid 0 accounts. This is used for the 'traditional' method.",
+                                "description"   => _("The 'minId' statement defines the minimum assignable user or group id to avoid security leaks with uid 0 accounts. This is used for the 'traditional' method."),
                                 "check"         => "gosaProperty::isInteger",
                                 "migrate"       => "",
                                 "group"         => "id",
@@ -687,7 +894,7 @@ DEBUG_SI      = 256"),
                                 "type"          => "switch",
                                 "default"       => "mail",
                                 "defaults"      => "core::getPropertyValues",
-                                "description"   => "The 'mailAttribute' statement determines which attribute GOsa will use to create accounts. Valid values are 'mail' and 'uid'.",
+                                "description"   => _("The 'mailAttribute' statement determines which attribute GOsa will use to create accounts. Valid values are 'mail' and 'uid'."),
                                 "check"         => "",
                                 "migrate"       => "",
                                 "group"         => "mail",
@@ -697,7 +904,7 @@ DEBUG_SI      = 256"),
                                 "name"          => "gosaSharedPrefix",
                                 "type"          => "string",
                                 "default"       => "",
-                                "description"   => "This attribute allows to override the prefix used to create shared folders.",
+                                "description"   => _("This attribute allows to override the prefix used to create shared folders."),
                                 "check"         => "",
                                 "migrate"       => "",
                                 "group"         => "mail",
@@ -707,12 +914,12 @@ DEBUG_SI      = 256"),
                                 "name"          => "mailUserCreation",
                                 "type"          => "string",
                                 "default"       => "",
-                                "description"   => "This attribute allows to override the user account creation syntax, see the 'mailFolderCreation' description for more details.
+                                "description"   => _("This attribute allows to override the user account creation syntax, see the 'mailFolderCreation' description for more details.
 
 Examples
  mailUserCreation=\"%prefix%%uid%\"           => \"user.foobar\"
  mailUserCreation=\"my-prefix.%uid%%domain%\"  => \"my-prefix.foobar@example.com\"
-",
+"),
                                 "check"         => "",
                                 "migrate"       => "",
                                 "group"         => "mail",
@@ -722,7 +929,7 @@ Examples
                                 "name"          => "mailFolderCreation",
                                 "type"          => "string",
                                 "default"       => "",
-                                "description"   => "Every mail method has its own way to create mail accounts like 'share/development' or 'shared.development@example.com' which is used to identify the accounts, set quotas or add acls.
+                                "description"   => _("Every mail method has its own way to create mail accounts like 'share/development' or 'shared.development@example.com' which is used to identify the accounts, set quotas or add acls.
 
 To override the methods default account creation syntax, you can set the 'mailFolderCreation' option.
 
@@ -738,7 +945,7 @@ Examples
  %domain%    The domain part of the objects mail attribute.
  %mailpart%  The user address part of the mail address.
  %uattrib%   Depends on mailAttribute=\"uid/mail\".
-",
+"),
                                 "check"         => "",
                                 "migrate"       => "",
                                 "group"         => "mail",
@@ -748,7 +955,7 @@ Examples
                                 "name"          => "imapTimeout",
                                 "type"          => "integer",
                                 "default"       => 10,
-                                "description"   => "The 'imapTimeout' statement sets the connection timeout for imap actions.",
+                                "description"   => _("The 'imapTimeout' statement sets the connection timeout for imap actions."),
                                 "check"         => "gosaProperty::isInteger",
                                 "migrate"       => "",
                                 "group"         => "mail",
@@ -759,7 +966,7 @@ Examples
                                 "type"          => "switch",
                                 "default"       => "",
                                 "defaults"      => "core::getPropertyValues",
-                                "description"   => "The 'mailMethod' statement tells GOsa which mail method the setup should use to communicate with a possible mail server. Leave this undefined if your mail method does not match the predefined ones.",
+                                "description"   => _("The 'mailMethod' statement tells GOsa which mail method the setup should use to communicate with a possible mail server. Leave this undefined if your mail method does not match the predefined ones."),
                                 "check"         => "",
                                 "migrate"       => "",
                                 "group"         => "mail",
@@ -769,7 +976,7 @@ Examples
                                 "name"          => "cyrusUseSlashes",
                                 "type"          => "bool",
                                 "default"       => "true",
-                                "description"   => "The 'cyrusUseSlashes' statement determines if GOsa should use \"foo/bar\" or \"foo.bar\" namespaces in IMAP. Unix style is with slashes.",
+                                "description"   => _("The 'cyrusUseSlashes' statement determines if GOsa should use \"foo/bar\" or \"foo.bar\" namespaces in IMAP. Unix style is with slashes."),
                                 "check"         => "gosaProperty::isBool",
                                 "migrate"       => "",
                                 "group"         => "mail",
@@ -779,7 +986,7 @@ Examples
                                 "name"          => "vacationTemplateDirectory",
                                 "type"          => "path",
                                 "default"       => "/etc/gosa/vacation",
-                                "description"   => "The 'vacationTemplateDirectory' statement sets the path where GOsa will look for vacation message templates. Default is /etc/gosa/vacation. 
+                                "description"   => _("The 'vacationTemplateDirectory' statement sets the path where GOsa will look for vacation message templates. Default is /etc/gosa/vacation. 
 
 Example template /etc/gosa/vacation/business.txt:
 
@@ -790,7 +997,7 @@ Example template /etc/gosa/vacation/business.txt:
    Greetings,
    %givenName %sn
 
-",
+"),
                                 "check"         => "gosaProperty::isWriteablePath",
                                 "migrate"       => "",
                                 "group"         => "mail",
@@ -800,7 +1007,7 @@ Example template /etc/gosa/vacation/business.txt:
                                 "name"          => "ldapTLS",
                                 "type"          => "bool",
                                 "default"       => "false",
-                                "description"   => "The 'ldapTLS' statement enables or disables TLS operating on LDAP connections.",
+                                "description"   => _("The 'ldapTLS' statement enables or disables TLS operating on LDAP connections."),
                                 "check"         => "gosaProperty::isBool",
                                 "migrate"       => "",
                                 "group"         => "security",
@@ -810,7 +1017,7 @@ Example template /etc/gosa/vacation/business.txt:
                                 "name"          => "honourIvbbAttributes",
                                 "type"          => "bool",
                                 "default"       => "false",
-                                "description"   => "The 'honourIvbbAttributes' statement enables the IVBB mode inside of GOsa. You need the ivbb.schema file from used by german authorities.",
+                                "description"   => _("The 'honourIvbbAttributes' statement enables the IVBB mode inside of GOsa. You need the ivbb.schema file from used by german authorities."),
                                 "check"         => "gosaProperty::isBool",
                                 "migrate"       => "",
                                 "group"         => "core",
@@ -820,7 +1027,7 @@ Example template /etc/gosa/vacation/business.txt:
                                 "name"          => "sambaIdMapping",
                                 "type"          => "bool",
                                 "default"       => "false",
-                                "description"   => "The 'sambaIdMapping' statement tells GOsa to maintain sambaIdmapEntry objects. Depending on your setup this can drastically improve the windows login performance.",
+                                "description"   => _("The 'sambaIdMapping' statement tells GOsa to maintain sambaIdmapEntry objects. Depending on your setup this can drastically improve the windows login performance."),
                                 "check"         => "gosaProperty::isBool",
                                 "migrate"       => "",
                                 "group"         => "samba",
@@ -830,7 +1037,7 @@ Example template /etc/gosa/vacation/business.txt:
                                 "name"          => "handleExpiredAccounts",
                                 "type"          => "bool",
                                 "default"       => "true",
-                                "description"   => "The 'handleExpiredAccounts' statement enables shadow attribute tests during the login to the GOsa web interface and forces password renewal or account lockout.",
+                                "description"   => _("The 'handleExpiredAccounts' statement enables shadow attribute tests during the login to the GOsa web interface and forces password renewal or account lockout."),
                                 "check"         => "gosaProperty::isBool",
                                 "migrate"       => "",
                                 "group"         => "core",
@@ -840,7 +1047,7 @@ Example template /etc/gosa/vacation/business.txt:
                                 "name"          => "sambaSID",
                                 "type"          => "string",
                                 "default"       => "",
-                                "description"   => "The 'sambaSID' statement defines a samba SID if not available inside of the LDAP. You can retrieve the current sid by net getlocalsid.",
+                                "description"   => _("The 'sambaSID' statement defines a samba SID if not available inside of the LDAP. You can retrieve the current sid by net getlocalsid."),
                                 "check"         => "",
                                 "migrate"       => "",
                                 "group"         => "samba",
@@ -850,7 +1057,7 @@ Example template /etc/gosa/vacation/business.txt:
                                 "name"          => "sambaRidBase",
                                 "type"          => "integer",
                                 "default"       => "",
-                                "description"   => "The 'sambaRidBase' statement defines the base id to add to ordinary sid calculations - if not available inside of the LDAP.",
+                                "description"   => _("The 'sambaRidBase' statement defines the base id to add to ordinary sid calculations - if not available inside of the LDAP."),
                                 "check"         => "gosaProperty::isInteger",
                                 "migrate"       => "",
                                 "group"         => "samba",
@@ -860,7 +1067,7 @@ Example template /etc/gosa/vacation/business.txt:
                                 "name"          => "enableSnapshots",
                                 "type"          => "bool",
                                 "default"       => "false",
-                                "description"   => "The 'enableSnapshots' statement enables a snapshot mechaism in GOsa. This enables you to save certain states of entries and restore them later on.",
+                                "description"   => _("The 'enableSnapshots' statement enables a snapshot mechaism in GOsa. This enables you to save certain states of entries and restore them later on."),
                                 "check"         => "gosaProperty::isBool",
                                 "migrate"       => "",
                                 "group"         => "snapshot",
@@ -870,7 +1077,7 @@ Example template /etc/gosa/vacation/business.txt:
                                 "name"          => "snapshotBase",
                                 "type"          => "dn",
                                 "default"       => "ou=snapshots,dc=localhost,dc=de",
-                                "description"   => "The 'snapshotBase' statement defines the base where snapshots should be stored inside of the LDAP.",
+                                "description"   => _("The 'snapshotBase' statement defines the base where snapshots should be stored inside of the LDAP."),
                                 "check"         => "gosaProperty::isDn",
                                 "migrate"       => "",
                                 "group"         => "snapshot",
@@ -880,7 +1087,7 @@ Example template /etc/gosa/vacation/business.txt:
                                 "name"          => "snapshotAdminDn",
                                 "type"          => "dn",
                                 "default"       => "cn=admin,dc=localhost,dc=de",
-                                "description"   => "The 'snapshotAdminDn' variable defines the user which is used to authenticate when connecting to 'snapshotURI'.",
+                                "description"   => _("The 'snapshotAdminDn' variable defines the user which is used to authenticate when connecting to 'snapshotURI'."),
                                 "check"         => "gosaProperty::isDn",
                                 "migrate"       => "",
                                 "group"         => "snapshot",
@@ -890,7 +1097,7 @@ Example template /etc/gosa/vacation/business.txt:
                                 "name"          => "snapshotAdminPassword",
                                 "type"          => "string",
                                 "default"       => "secret",
-                                "description"   => "The 'snapshotAdminPassword' variable defines the credentials which are used in combination with 'snapshotAdminDn' and 'snapshotURI' in order to authenticate.",
+                                "description"   => _("The 'snapshotAdminPassword' variable defines the credentials which are used in combination with 'snapshotAdminDn' and 'snapshotURI' in order to authenticate."),
                                 "check"         => "",
                                 "migrate"       => "",
                                 "group"         => "snapshot",
@@ -901,7 +1108,7 @@ Example template /etc/gosa/vacation/business.txt:
                                 "type"          => "switch",
                                 "default"       => "traditional",
                                 "defaults"      => "core::getPropertyValues",
-                                "description"   => "The 'idAllocationMethod' statement defines how GOsa generates numeric user and group id values. If it is set to 'traditional' GOsa will do create a lock and perform a search for the next free ID. The lock will be removed after the procedure completes. 'pool' will use the sambaUnixIdPool objectclass settings inside your LDAP. This one is unsafe, because it does not check for concurrent LDAP access and already used IDs in this range. On the other hand it is much faster.",
+                                "description"   => _("The 'idAllocationMethod' statement defines how GOsa generates numeric user and group id values. If it is set to 'traditional' GOsa will do create a lock and perform a search for the next free ID. The lock will be removed after the procedure completes. 'pool' will use the sambaUnixIdPool objectclass settings inside your LDAP. This one is unsafe, because it does not check for concurrent LDAP access and already used IDs in this range. On the other hand it is much faster."),
                                 "check"         => "",
                                 "migrate"       => "",
                                 "group"         => "id",
@@ -910,24 +1117,12 @@ Example template /etc/gosa/vacation/business.txt:
                                 "name"          => "snapshotURI",
                                 "type"          => "uri",
                                 "default"       => "ldap://localhost:389",
-                                "description"   => "The 'snapshotURI' variable defines the LDAP URI for the server which is used to do object snapshots.",
+                                "description"   => _("The 'snapshotURI' variable defines the LDAP URI for the server which is used to do object snapshots."),
                                 "check"         => "",
                                 "migrate"       => "",
                                 "group"         => "snapshot",
                                 "mandatory"     => FALSE)
-                            ),
-
-                        "plProvidedAcls"    => array(
-                                "accessTo"          => _("System trust"),
-                                "cn"                => _("Name"),
-                                "description"       => _("Description"),
-                                "sudoUser"          => _("Users"),
-                                "sudoHost"          => _("Host"),
-                                "sudoCommand"       => _("Command"),
-                                "sudoRunAs"         => _("Run as user"),
-                                "trustModel"        => _("Access control list"))
-                            )
-                            );
+                            )));
     }
 }
 ?>