diff --git a/install/autoupdate.php b/install/autoupdate.php
index de53b241f69be9036df03cfdffd07a84d6970d67..e43cd5198510c4bf9a73f1d1b960d22b16d4ec0d 100644
--- a/install/autoupdate.php
+++ b/install/autoupdate.php
@@ -285,7 +285,7 @@ $inst->configure_dbserver();
 //if(@is_dir('/etc/Bastille')) {
 //* Configure Firewall
 swriteln('Configuring Firewall');
-$inst->configure_bastille_firewall();
+$inst->configure_firewall();
 //}
 
 //** Configure ISPConfig
diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php
index 61130a13622f750231d80907c1eb8c8d58246b53..99fd2af543647419cf628cfcb695350bf08cf058 100644
--- a/install/dist/lib/fedora.lib.php
+++ b/install/dist/lib/fedora.lib.php
@@ -845,6 +845,7 @@ class installer_dist extends installer_base {
 		$content = str_replace('{language}', $conf['language'], $content);
 		$content = str_replace('{timezone}', $conf['timezone'], $content);
 		$content = str_replace('{theme}', $conf['theme'], $content);
+		$content = str_replace('{language_file_import_enabled}', ($conf['language_file_import_enabled'] == true)?'true':'false', $content);
 		
 		wf("$install_dir/interface/lib/$configfile", $content);
 		
@@ -869,6 +870,7 @@ class installer_dist extends installer_base {
 		$content = str_replace('{language}', $conf['language'], $content);
 		$content = str_replace('{timezone}', $conf['timezone'], $content);
 		$content = str_replace('{theme}', $conf['theme'], $content);
+		$content = str_replace('{language_file_import_enabled}', ($conf['language_file_import_enabled'] == true)?'true':'false', $content);
 
 		wf("$install_dir/server/lib/$configfile", $content);
 		
diff --git a/install/dist/lib/gentoo.lib.php b/install/dist/lib/gentoo.lib.php
index 382689cd55cdb1bf9ca08e711fbe7cd4bf62beb6..853208896f2807ac42757990cf5678774af90518 100644
--- a/install/dist/lib/gentoo.lib.php
+++ b/install/dist/lib/gentoo.lib.php
@@ -725,6 +725,7 @@ class installer extends installer_base
 		$content = str_replace('{language}', $conf['language'], $content);
 		$content = str_replace('{timezone}', $conf['timezone'], $content);
 		$content = str_replace('{theme}', $conf['theme'], $content);
+		$content = str_replace('{language_file_import_enabled}', ($conf['language_file_import_enabled'] == true)?'true':'false', $content);
 		
 		$this->write_config_file("$install_dir/interface/lib/$configfile", $content);
 		
diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php
index 7a2fa264db4f012f01eed84255c3f13140b13089..e087772e46990e97ff02439daa57870a42408368 100644
--- a/install/dist/lib/opensuse.lib.php
+++ b/install/dist/lib/opensuse.lib.php
@@ -900,6 +900,7 @@ class installer_dist extends installer_base {
 		$content = str_replace('{language}', $conf['language'], $content);
 		$content = str_replace('{timezone}', $conf['timezone'], $content);
 		$content = str_replace('{theme}', $conf['theme'], $content);
+		$content = str_replace('{language_file_import_enabled}', ($conf['language_file_import_enabled'] == true)?'true':'false', $content);
 		
 		wf("$install_dir/interface/lib/$configfile", $content);
 		
@@ -924,6 +925,7 @@ class installer_dist extends installer_base {
 		$content = str_replace('{language}', $conf['language'], $content);
 		$content = str_replace('{timezone}', $conf['timezone'], $content);
 		$content = str_replace('{theme}', $conf['theme'], $content);
+		$content = str_replace('{language_file_import_enabled}', ($conf['language_file_import_enabled'] == true)?'true':'false', $content);
 		
 		wf("$install_dir/server/lib/$configfile", $content);
 		
diff --git a/install/install.php b/install/install.php
index c6b85a3bebdde2886c0f42e8aa4456067a535a98..adb1db50305f709409cd0be710024a56f2cea6bb 100644
--- a/install/install.php
+++ b/install/install.php
@@ -34,6 +34,8 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 error_reporting(E_ALL|E_STRICT);
 
+define('INSTALLER_RUN', true);
+
 //** The banner on the command line
 echo "\n\n".str_repeat('-',80)."\n";
 echo " _____ ___________   _____              __ _         ____
@@ -106,8 +108,9 @@ $inst->find_installed_apps();
 $conf['language'] = $inst->simple_query('Select language', array('en','de'), 'en');
 $conf['timezone'] = get_system_timezone();
 
-//* Set defaukt theme
+//* Set default theme
 $conf['theme'] = 'default';
+$conf['language_file_import_enabled'] = true;
 
 //** Select installation mode
 $install_mode = $inst->simple_query('Installation mode', array('standard','expert'), 'standard');
@@ -257,17 +260,10 @@ if($install_mode == 'standard') {
 	$inst->configure_apps_vhost();
     
 	//* Configure Firewall
-	if($conf['ufw']['installed'] == true) { 
-		//* Configure Ubuntu Firewall
-		$conf['services']['firewall'] = true;
-		swriteln('Configuring Ubuntu Firewall');
-		$inst->configure_ufw_firewall();
-	} else {
-		//* Configure Bastille Firewall
-		$conf['services']['firewall'] = true;
-		swriteln('Configuring Bastille Firewall');
-		$inst->configure_bastille_firewall();
-	}
+	//* Configure Bastille Firewall
+	$conf['services']['firewall'] = true;
+	swriteln('Configuring Bastille Firewall');
+	$inst->configure_firewall();
 
     //* Configure Fail2ban
     if($conf['fail2ban']['installed'] == true) {
@@ -335,7 +331,7 @@ if($install_mode == 'standard') {
 	if($conf['bind']['installed'] == true && $conf['bind']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['bind']['init_script']))					system($conf['init_scripts'].'/'.$conf['bind']['init_script'].' restart &> /dev/null');
 	//if($conf['squid']['installed'] == true && $conf['squid']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['squid']['init_script']))					system($conf['init_scripts'].'/'.$conf['squid']['init_script'].' restart &> /dev/null');
 	if($conf['nginx']['installed'] == true && $conf['nginx']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['nginx']['init_script']))					system($conf['init_scripts'].'/'.$conf['nginx']['init_script'].' restart &> /dev/null');
-	if($conf['ufw']['installed'] == true && $conf['ufw']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['ufw']['init_script']))					system($conf['init_scripts'].'/'.$conf['ufw']['init_script'].' restart &> /dev/null');
+	//if($conf['ufw']['installed'] == true && $conf['ufw']['init_script'] != '' && is_file($conf['init_scripts'].'/'.$conf['ufw']['init_script']))					system($conf['init_scripts'].'/'.$conf['ufw']['init_script'].' restart &> /dev/null');
 }else{
 	
 	//* In expert mode, we select the services in the following steps, only db is always available
@@ -551,17 +547,18 @@ if($install_mode == 'standard') {
 	
 	//** Configure Firewall
 	if(strtolower($inst->simple_query('Configure Firewall Server',array('y','n'),'y')) == 'y') {	
-		if($conf['ufw']['installed'] == true) {
+		//if($conf['bastille']['installed'] == true) {
+			//* Configure Bastille Firewall
+			$conf['services']['firewall'] = true;
+			swriteln('Configuring Bastille Firewall');
+			$inst->configure_firewall();
+		/*} elseif($conf['ufw']['installed'] == true) {
 			//* Configure Ubuntu Firewall
 			$conf['services']['firewall'] = true;
 			swriteln('Configuring Ubuntu Firewall');
 			$inst->configure_ufw_firewall();
-		} else {
-			//* Configure Bastille Firewall
-			$conf['services']['firewall'] = true;
-			swriteln('Configuring Bastille Firewall');
-			$inst->configure_bastille_firewall();
 		}
+		*/
 	}
 	
 	//** Configure Firewall
@@ -629,4 +626,4 @@ if($install_mode == 'standard') {
 echo "Installation completed.\n";
 
 
-?>
+?>
\ No newline at end of file
diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index 1e8459e2a5a2fcddcd21cabc0e2323f29662ee01..7bf502f1a58de7925a4984d0afd00ee1cbf528d8 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -132,7 +132,7 @@ class installer_base {
 		if(is_installed('named') || is_installed('bind') || is_installed('bind9')) $conf['bind']['installed'] = true;
 		if(is_installed('squid')) $conf['squid']['installed'] = true;
 		if(is_installed('nginx')) $conf['nginx']['installed'] = true;
-		if(is_installed('iptables') && is_installed('ufw')) $conf['ufw']['installed'] = true;
+		// if(is_installed('iptables') && is_installed('ufw')) $conf['ufw']['installed'] = true;
 		if(is_installed('fail2ban-server')) $conf['fail2ban']['installed'] = true;
 		if(is_installed('vzctl')) $conf['openvz']['installed'] = true;
 		if(is_dir("/etc/Bastille")) $conf['bastille']['installed'] = true;
@@ -1365,6 +1365,7 @@ class installer_base {
 		exec('chown root:root '.$conf["squid"]["config_dir"].'/'.$configfile);
 	}
 
+	/*
 	public function configure_ufw_firewall()
 	{
 		$configfile = 'ufw.conf';
@@ -1374,8 +1375,9 @@ class installer_base {
 		exec('chmod 600 /etc/ufw/ufw.conf');
 		exec('chown root:root /etc/ufw/ufw.conf');
 	}
+	*/
 
-	public function configure_bastille_firewall() {
+	public function configure_firewall() {
 		global $conf;
 
 		$dist_init_scripts = $conf['init_scripts'];
@@ -1691,6 +1693,7 @@ class installer_base {
 		$content = str_replace('{language}', $conf['language'], $content);
 		$content = str_replace('{timezone}', $conf['timezone'], $content);
 		$content = str_replace('{theme}', $conf['theme'], $content);
+		$content = str_replace('{language_file_import_enabled}', ($conf['language_file_import_enabled'] == true)?'true':'false', $content);
 
 		wf($install_dir.'/interface/lib/'.$configfile, $content);
 
@@ -1715,6 +1718,7 @@ class installer_base {
 		$content = str_replace('{language}', $conf['language'], $content);
 		$content = str_replace('{timezone}', $conf['timezone'], $content);
 		$content = str_replace('{theme}', $conf['theme'], $content);
+		$content = str_replace('{language_file_import_enabled}', ($conf['language_file_import_enabled'] == true)?'true':'false', $content);
 
 		wf($install_dir.'/server/lib/'.$configfile, $content);
 
diff --git a/install/lib/update.lib.php b/install/lib/update.lib.php
index 5beca810208fe486d995df9675ed704b6a59bec8..b4e73abb1d0694dbec42a6c1fca688836beeb5cc 100644
--- a/install/lib/update.lib.php
+++ b/install/lib/update.lib.php
@@ -27,6 +27,15 @@ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
+//* Installer patch stub class
+class installer_patch_update {
+   protected function onBeforeSQL() {
+   }
+   protected function onAfterSQL() {
+   }
+}
+
+//* DB dump function
 function prepareDBDump() {
 	global $conf;
 
@@ -151,16 +160,43 @@ function updateDbAndIni() {
 		$found = true;
 		while($found == true) {
 			$next_db_version = intval($current_db_version + 1);
-			$patch_filename = realpath(dirname(__FILE__).'/../').'/sql/incremental/upd_'.str_pad($next_db_version, 4, '0', STR_PAD_LEFT).'.sql';
-			if(is_file($patch_filename)) {
+			$sql_patch_filename = realpath(dirname(__FILE__).'/../').'/sql/incremental/upd_'.str_pad($next_db_version, 4, '0', STR_PAD_LEFT).'.sql';
+			$php_patch_filename = realpath(dirname(__FILE__).'/../').'/patches/upd_'.str_pad($next_db_version, 4, '0', STR_PAD_LEFT).'.php';
+			
+			if(is_file($sql_patch_filename)) {
+				
+				//* Load php patch file and instantiate object
+				if(is_file($php_patch_filename)) {
+					$php_patch_class_name = 'upd_'.str_pad($next_db_version, 4, '0', STR_PAD_LEFT);
+					include_once($php_patch_filename);
+					if(class_exists($php_patch_class_name)) {
+						$php_patch = new $php_patch_class_name;
+					} else {
+						swriteln($inst->lng('WARNING: PHP patch file').': '.$php_patch_filename.' '.$inst->lng('contains errors.'));
+					}
+				}
+				
+				//* Exec onBeforeSQL function
+				if(isset($php_patch) && is_object($php_patch)) {
+					$php_patch->onBeforeSQL();
+					swriteln($inst->lng('Executing PHP patch file').': '.$php_patch_filename);
+				}
+				
 				//* Load patch file into database
 				if( !empty($conf["mysql"]["admin_password"]) ) {
-					system("mysql --default-character-set=".escapeshellarg($conf['mysql']['charset'])." --force -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." -p".escapeshellarg($conf['mysql']['admin_password'])." ".escapeshellarg($conf['mysql']['database'])." < ".$patch_filename);
+					system("mysql --default-character-set=".escapeshellarg($conf['mysql']['charset'])." --force -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." -p".escapeshellarg($conf['mysql']['admin_password'])." ".escapeshellarg($conf['mysql']['database'])." < ".$sql_patch_filename);
 				} else {
-					system("mysql --default-character-set=".escapeshellarg($conf['mysql']['charset'])." --force -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." ".escapeshellarg($conf['mysql']['database'])." < ".$patch_filename);
+					system("mysql --default-character-set=".escapeshellarg($conf['mysql']['charset'])." --force -h ".escapeshellarg($conf['mysql']['host'])." -u ".escapeshellarg($conf['mysql']['admin_user'])." ".escapeshellarg($conf['mysql']['database'])." < ".$sql_patch_filename);
+				}
+				swriteln($inst->lng('Loading SQL patch file').': '.$sql_patch_filename);
+				
+				//* Exec onAfterSQL function
+				if(isset($php_patch) && is_object($php_patch)) {
+					$php_patch->onAfterSQL();
 				}
-				swriteln($inst->lng('Loading SQL patch file').': '.$patch_filename);
+				
 				$current_db_version = $next_db_version;
+				if(isset($php_patch)) unset($php_patch);
 			} else {
 				$found = false;
 			}
@@ -332,4 +368,6 @@ function updateDbAndIni() {
 	unset($new_ini);
 }
 
+
+
 ?>
diff --git a/install/patches/upd_0001.php b/install/patches/upd_0001.php
new file mode 100644
index 0000000000000000000000000000000000000000..93d6967b9d2f5d77b69e57466548daf9560df71c
--- /dev/null
+++ b/install/patches/upd_0001.php
@@ -0,0 +1,21 @@
+<?php
+
+if(!defined('INSTALLER_RUN')) die('Patch update file access violation.'); 
+
+/*
+	Example installer patch update class. the classname must match
+	the php and the sql patch update filename. The php patches are
+	only executed when a corresponding sql patch exists.
+*/
+
+class upd_0001 extends installer_patch_update {
+
+   public function onBeforeSQL() {
+     // Do something
+   }
+   public function onAfterSQL() {
+     // Do something
+   }
+}
+
+?>
diff --git a/install/sql/incremental/upd_0049.sql b/install/sql/incremental/upd_0049.sql
index d55f0dafaee46f55810fbfcc6d6010ae458f4d90..55eff842e0e4a278bb3afa02ba131738d395e867 100644
--- a/install/sql/incremental/upd_0049.sql
+++ b/install/sql/incremental/upd_0049.sql
@@ -1,2 +1 @@
-ALTER TABLE `client_template` CHANGE `limit_aps` `limit_aps` INT( 11 ) NOT NULL DEFAULT '-1';
-ALTER TABLE `web_backup` ADD `filesize` VARCHAR(10) NOT NULL AFTER `filename`;
+ALTER TABLE `client_template` CHANGE `limit_aps` `limit_aps` INT( 11 ) NOT NULL DEFAULT '-1';
\ No newline at end of file
diff --git a/install/sql/incremental/upd_0052.sql b/install/sql/incremental/upd_0052.sql
index d92bc3265ebc8c40c5c1195d12c86bbd4d52eb20..7ad62b2d6b760f2bcdb9456af17021f378dbc2ab 100644
--- a/install/sql/incremental/upd_0052.sql
+++ b/install/sql/incremental/upd_0052.sql
@@ -1,5 +1 @@
-ALTER TABLE `client_template` CHANGE `limit_aps` `limit_aps` INT( 11 ) NOT NULL DEFAULT '-1';
-ALTER TABLE `mail_domain` ADD `dkim_public` MEDIUMTEXT NOT NULL AFTER `domain`;
-ALTER TABLE `mail_domain` ADD `dkim_private` MEDIUMTEXT NOT NULL AFTER `domain`;
-ALTER TABLE `mail_domain` ADD `dkim` ENUM( 'n', 'y' ) NOT NULL AFTER `domain`;
-ALTER TABLE `client` ADD `default_slave_dnsserver` INT( 11 ) UNSIGNED NOT NULL DEFAULT '1' AFTER `limit_dns_zone`;
+ALTER TABLE `client` ADD `default_slave_dnsserver` INT( 11 ) UNSIGNED NOT NULL DEFAULT '1' AFTER `limit_dns_zone`;
\ No newline at end of file
diff --git a/install/sql/incremental/upd_0055.sql b/install/sql/incremental/upd_0055.sql
index 3a7c5d58638f1166ea43118a79a9525505161d5d..6f7a2e79ec1e79c1c64f90a540f415eea13ed486 100644
--- a/install/sql/incremental/upd_0055.sql
+++ b/install/sql/incremental/upd_0055.sql
@@ -1,3 +1 @@
-ALTER TABLE `web_backup` CHANGE `backup_type` `backup_type` enum('web','mongodb','mysql') NOT NULL DEFAULT 'web';
-ALTER TABLE `web_database_user` ADD `database_password_mongo` varchar(32) DEFAULT NULL AFTER `database_password`;
-ALTER TABLE `sys_datalog` ADD `error` MEDIUMTEXT NULL DEFAULT NULL;
+ALTER TABLE `sys_datalog` ADD `error` MEDIUMTEXT NULL DEFAULT NULL;
\ No newline at end of file
diff --git a/install/sql/incremental/upd_0057.sql b/install/sql/incremental/upd_0057.sql
new file mode 100644
index 0000000000000000000000000000000000000000..b8452fe6e9fddcbc9df31450f3791cad9367449f
--- /dev/null
+++ b/install/sql/incremental/upd_0057.sql
@@ -0,0 +1,7 @@
+CREATE TABLE IF NOT EXISTS `sys_cron` (
+  `name` varchar(50) NOT NULL,
+  `last_run` datetime NULL DEFAULT NULL,
+  `next_run` datetime NULL DEFAULT NULL,
+  `running` tinyint(1) UNSIGNED NOT NULL DEFAULT '0',
+  PRIMARY KEY (`name`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
diff --git a/install/sql/incremental/upd_0058.sql b/install/sql/incremental/upd_0058.sql
new file mode 100644
index 0000000000000000000000000000000000000000..087b499c4753b6aa69c8c92641b2a704c2db3940
--- /dev/null
+++ b/install/sql/incremental/upd_0058.sql
@@ -0,0 +1,3 @@
+ALTER TABLE `client` ADD COLUMN `can_use_api` enum('n','y') NOT NULL DEFAULT 'n' AFTER `canceled`;
+
+ALTER TABLE `remote_session` ADD COLUMN `client_login` tinyint(1) unsigned NOT NULL default '0' AFTER `remote_functions`;
diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index 8480e764481b16a4b88b2cea4a5c0aa60d4096b9..24a0a98c475c24a9d5b80c1c936cfe1922e2d83b 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -26,24 +26,24 @@ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
--- Includes
---
+-- Includes 
+-- 
 -- iso_country_list.sql
---
+-- 
 -- This will create and then populate a MySQL table with a list of the names and
 -- ISO 3166 codes for countries in existence as of the date below.
---
+-- 
 -- For updates to this file, see http://27.org/isocountrylist/
 -- For more about ISO 3166, see http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html
---
+-- 
 -- Created by getisocountrylist.pl on Sun Nov  2 14:59:20 2003.
 -- Wm. Rhodes <iso_country_list@27.org>
---
+-- 
 
---
+-- 
 -- ISPConfig 3
 -- DB-Version: 3.0.0.9
---
+-- 
 
 SET FOREIGN_KEY_CHECKS = 0;
 
@@ -228,6 +228,7 @@ CREATE TABLE `client` (
   `created_at` bigint(20) DEFAULT NULL,
   `locked` enum('n','y') NOT NULL DEFAULT 'n',
   `canceled` enum('n','y') NOT NULL DEFAULT 'n',
+  `can_use_api` enum('n','y') NOT NULL DEFAULT 'n',
   `tmp_data` mediumblob,
   `id_rsa` varchar(2000) NOT NULL DEFAULT '',
   `ssh_rsa` varchar(600) NOT NULL DEFAULT '',
@@ -256,9 +257,9 @@ CREATE TABLE `client_circle` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `client_template`
---
+-- 
 
 CREATE TABLE `client_template` (
   `template_id` int(11) unsigned NOT NULL auto_increment,
@@ -266,7 +267,7 @@ CREATE TABLE `client_template` (
   `sys_groupid` int(11) unsigned NOT NULL default '0',
   `sys_perm_user` varchar(5) default NULL,
   `sys_perm_group` varchar(5) default NULL,
-  `sys_perm_other` varchar(5) default NULL,
+  `sys_perm_other` varchar(5) default NULL,  
   `template_name` varchar(64) NOT NULL,
   `template_type` varchar(1) NOT NULL default 'm',
   `limit_maildomain` int(11) NOT NULL default '-1',
@@ -347,9 +348,9 @@ CREATE TABLE `country` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `cron`
---
+-- 
 CREATE TABLE `cron` (
   `id` int(11) unsigned NOT NULL auto_increment,
   `sys_userid` int(11) unsigned NOT NULL default '0',
@@ -372,9 +373,9 @@ CREATE TABLE `cron` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `directive_snippets`
---
+-- 
 
 CREATE TABLE IF NOT EXISTS `directive_snippets` (
   `directive_snippets_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
@@ -392,9 +393,9 @@ CREATE TABLE IF NOT EXISTS `directive_snippets` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `dns_rr`
---
+-- 
 
 CREATE TABLE `dns_rr` (
   `id` int(11) unsigned NOT NULL auto_increment,
@@ -442,9 +443,9 @@ CREATE TABLE `dns_slave` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `dns_soa`
---
+-- 
 
 CREATE TABLE `dns_soa` (
   `id` int(10) unsigned NOT NULL auto_increment,
@@ -474,9 +475,9 @@ CREATE TABLE `dns_soa` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `dns_template`
---
+-- 
 
 CREATE TABLE `dns_template` (
   `template_id` int(11) unsigned NOT NULL auto_increment,
@@ -510,9 +511,9 @@ CREATE TABLE `domain` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `firewall`
---
+-- 
 
 CREATE TABLE `firewall` (
   `firewall_id` int(11) unsigned NOT NULL auto_increment,
@@ -530,9 +531,9 @@ CREATE TABLE `firewall` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `ftp_user`
---
+-- 
 
 CREATE TABLE `ftp_user` (
   `ftp_user_id` int(11) unsigned NOT NULL auto_increment,
@@ -624,9 +625,9 @@ CREATE TABLE `iptables` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `mail_access`
---
+-- 
 
 CREATE TABLE `mail_access` (
   `access_id` int(11) unsigned NOT NULL auto_increment,
@@ -646,9 +647,9 @@ CREATE TABLE `mail_access` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `mail_content_filter`
---
+-- 
 
 CREATE TABLE `mail_content_filter` (
   `content_filter_id` int(11) unsigned NOT NULL auto_increment,
@@ -668,9 +669,9 @@ CREATE TABLE `mail_content_filter` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `mail_domain`
---
+-- 
 
 CREATE TABLE `mail_domain` (
   `domain_id` int(11) unsigned NOT NULL auto_increment,
@@ -681,9 +682,6 @@ CREATE TABLE `mail_domain` (
   `sys_perm_other` varchar(5) NOT NULL default '',
   `server_id` int(11) unsigned NOT NULL default '0',
   `domain` varchar(255) NOT NULL default '',
-  `dkim` ENUM( 'n', 'y' ) NOT NULL default 'n',
-  `dkim_private` mediumtext NOT NULL default '',
-  `dkim_public` mediumtext NOT NULL default '',
   `active` enum('n','y') NOT NULL,
   PRIMARY KEY  (`domain_id`),
   KEY `server_id` (`server_id`,`domain`),
@@ -692,9 +690,9 @@ CREATE TABLE `mail_domain` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `mail_forwarding`
---
+-- 
 
 CREATE TABLE `mail_forwarding` (
   `forwarding_id` int(11) unsigned NOT NULL auto_increment,
@@ -715,9 +713,9 @@ CREATE TABLE `mail_forwarding` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `mail_get`
---
+-- 
 
 CREATE TABLE `mail_get` (
   `mailget_id` int(11) unsigned NOT NULL auto_increment,
@@ -781,9 +779,9 @@ CREATE TABLE IF NOT EXISTS `mail_relay_recipient` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `mail_traffic`
---
+-- 
 
 CREATE TABLE `mail_traffic` (
   `traffic_id` int(11) unsigned NOT NULL auto_increment,
@@ -796,9 +794,9 @@ CREATE TABLE `mail_traffic` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `mail_transport`
---
+-- 
 
 CREATE TABLE `mail_transport` (
   `transport_id` int(11) unsigned NOT NULL auto_increment,
@@ -819,9 +817,9 @@ CREATE TABLE `mail_transport` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `mail_user`
---
+-- 
 
 CREATE TABLE `mail_user` (
   `mailuser_id` int(11) unsigned NOT NULL auto_increment,
@@ -865,9 +863,9 @@ CREATE TABLE `mail_user` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `mail_user_filter`
---
+-- 
 
 CREATE TABLE `mail_user_filter` (
   `filter_id` int(11) unsigned NOT NULL auto_increment,
@@ -1078,23 +1076,24 @@ CREATE TABLE IF NOT EXISTS `openvz_vm` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `remote_session`
---
+-- 
 
 CREATE TABLE `remote_session` (
   `remote_session` varchar(64) NOT NULL,
   `remote_userid` int(11) unsigned NOT NULL,
   `remote_functions` text NOT NULL,
+  `client_login` tinyint(1) unsigned NOT NULL default '0',
   `tstamp` int(10) unsigned NOT NULL,
   PRIMARY KEY  (`remote_session`)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `remote_user`
---
+-- 
 
 CREATE TABLE `remote_user` (
   `remote_userid` int(11) unsigned NOT NULL auto_increment,
@@ -1111,9 +1110,9 @@ CREATE TABLE `remote_user` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `server`
---
+-- 
 
 CREATE TABLE `server` (
   `server_id` int(11) unsigned NOT NULL auto_increment,
@@ -1141,9 +1140,9 @@ CREATE TABLE `server` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `server_ip`
---
+-- 
 
 CREATE TABLE `server_ip` (
   `server_ip_id` int(11) unsigned NOT NULL auto_increment,
@@ -1217,9 +1216,9 @@ CREATE TABLE `shell_user` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `software_package`
---
+-- 
 
 CREATE TABLE `software_package` (
   `package_id` int(11) unsigned NOT NULL auto_increment,
@@ -1240,9 +1239,9 @@ CREATE TABLE `software_package` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `software_repo`
---
+-- 
 
 CREATE TABLE `software_repo` (
   `software_repo_id` int(11) unsigned NOT NULL auto_increment,
@@ -1261,9 +1260,9 @@ CREATE TABLE `software_repo` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `software_update`
---
+-- 
 
 CREATE TABLE `software_update` (
   `software_update_id` int(11) unsigned NOT NULL auto_increment,
@@ -1283,9 +1282,9 @@ CREATE TABLE `software_update` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `software_update_inst`
---
+-- 
 
 CREATE TABLE `software_update_inst` (
   `software_update_inst_id` int(11) unsigned NOT NULL auto_increment,
@@ -1299,9 +1298,9 @@ CREATE TABLE `software_update_inst` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `spamfilter_policy`
---
+-- 
 
 CREATE TABLE `spamfilter_policy` (
   `id` int(11) unsigned NOT NULL auto_increment,
@@ -1352,9 +1351,9 @@ CREATE TABLE `spamfilter_policy` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `spamfilter_users`
---
+-- 
 
 CREATE TABLE `spamfilter_users` (
   `id` int(11) unsigned NOT NULL auto_increment,
@@ -1375,9 +1374,9 @@ CREATE TABLE `spamfilter_users` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `spamfilter_wblist`
---
+-- 
 
 CREATE TABLE `spamfilter_wblist` (
   `wblist_id` int(11) unsigned NOT NULL auto_increment,
@@ -1397,9 +1396,9 @@ CREATE TABLE `spamfilter_wblist` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `support_message`
---
+-- 
 
 CREATE TABLE `support_message` (
   `support_message_id` int(11) unsigned NOT NULL auto_increment,
@@ -1432,9 +1431,24 @@ CREATE TABLE `sys_config` (
 -- --------------------------------------------------------
 
 --
--- Table structure for table  `sys_datalog`
+-- Table structure for table `sys_cron`
 --
 
+CREATE TABLE IF NOT EXISTS `sys_cron` (
+  `name` varchar(50) NOT NULL,
+  `last_run` datetime NULL DEFAULT NULL,
+  `next_run` datetime NULL DEFAULT NULL,
+  `running` tinyint(1) UNSIGNED NOT NULL DEFAULT '0',
+  PRIMARY KEY (`name`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+
+-- --------------------------------------------------------
+
+-- 
+-- Table structure for table  `sys_datalog`
+-- 
+
 CREATE TABLE `sys_datalog` (
   `datalog_id` int(11) unsigned NOT NULL auto_increment,
   `server_id` int(11) unsigned NOT NULL,
@@ -1452,9 +1466,9 @@ CREATE TABLE `sys_datalog` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `sys_dbsync`
---
+-- 
 
 CREATE TABLE `sys_dbsync` (
   `id` int(11) unsigned NOT NULL auto_increment,
@@ -1476,9 +1490,9 @@ CREATE TABLE `sys_dbsync` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `sys_filesync`
---
+-- 
 
 CREATE TABLE `sys_filesync` (
   `id` int(11) unsigned NOT NULL auto_increment,
@@ -1496,9 +1510,9 @@ CREATE TABLE `sys_filesync` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `sys_group`
---
+-- 
 
 CREATE TABLE `sys_group` (
   `groupid` int(11) unsigned NOT NULL auto_increment,
@@ -1510,9 +1524,9 @@ CREATE TABLE `sys_group` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `sys_ini`
---
+-- 
 
 CREATE TABLE `sys_ini` (
   `sysini_id` int(11) unsigned NOT NULL auto_increment,
@@ -1522,9 +1536,9 @@ CREATE TABLE `sys_ini` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `sys_log`
---
+-- 
 
 CREATE TABLE `sys_log` (
   `syslog_id` int(11) unsigned NOT NULL auto_increment,
@@ -1590,9 +1604,9 @@ CREATE TABLE IF NOT EXISTS `sys_theme` (
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `sys_user`
---
+-- 
 
 CREATE TABLE `sys_user` (
   `userid` int(11) unsigned NOT NULL auto_increment,
@@ -1613,7 +1627,7 @@ CREATE TABLE `sys_user` (
   `default_group` int(11) unsigned NOT NULL default '0',
   `client_id` int(11) unsigned NOT NULL default '0',
   `id_rsa` VARCHAR( 2000 ) NOT NULL default '',
-  `ssh_rsa` VARCHAR( 600 ) NOT NULL default '',
+  `ssh_rsa` VARCHAR( 600 ) NOT NULL default '', 
   PRIMARY KEY  (`userid`)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
 
@@ -1650,12 +1664,11 @@ CREATE TABLE `web_backup` (
   `backup_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
   `server_id` int(10) unsigned NOT NULL,
   `parent_domain_id` int(10) unsigned NOT NULL,
-  `backup_type` enum('web','mongodb','mysql') NOT NULL DEFAULT 'web',
-  `backup_mode` varchar(64) NOT NULL DEFAULT  '',
-  `tstamp` int(10) unsigned NOT NULL,
-  `filename` varchar(255) NOT NULL,
-  `filesize` VARCHAR(10) NOT NULL,
-  PRIMARY KEY (`backup_id`)
+  `backup_type` enum('web','mysql') NOT NULL DEFAULT 'web',
+  `backup_mode` varchar(64) NOT NULL DEFAULT  '',
+  `tstamp` int(10) unsigned NOT NULL,
+  `filename` varchar(255) NOT NULL,
+  PRIMARY KEY (`backup_id`)
 ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
 
 -- --------------------------------------------------------
@@ -1706,15 +1719,14 @@ CREATE TABLE IF NOT EXISTS `web_database_user` (
   `database_user` varchar(64) DEFAULT NULL,
   `database_user_prefix` varchar(50) NOT NULL default '',
   `database_password` varchar(64) DEFAULT NULL,
-  `database_password_mongo` varchar(32) DEFAULT NULL,
   PRIMARY KEY (`database_user_id`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `web_domain`
---
+-- 
 
 CREATE TABLE `web_domain` (
   `domain_id` int(11) unsigned NOT NULL auto_increment,
@@ -2114,41 +2126,41 @@ INSERT INTO `country` (`iso`, `name`, `printable_name`, `iso3`, `numcode`) VALUE
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Dumping data for table `dns_template`
---
+-- 
 
 INSERT INTO `dns_template` (`template_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `name`, `fields`, `template`, `visible`) VALUES (1, 1, 1, 'riud', 'riud', '', 'Default', 'DOMAIN,IP,NS1,NS2,EMAIL', '[ZONE]\norigin={DOMAIN}.\nns={NS1}.\nmbox={EMAIL}.\nrefresh=7200\nretry=540\nexpire=604800\nminimum=86400\nttl=3600\n\n[DNS_RECORDS]\nA|{DOMAIN}.|{IP}|0|3600\nA|www|{IP}|0|3600\nA|mail|{IP}|0|3600\nNS|{DOMAIN}.|{NS1}.|0|3600\nNS|{DOMAIN}.|{NS2}.|0|3600\nMX|{DOMAIN}.|mail.{DOMAIN}.|10|3600', 'y');
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Dumping data for table `help_faq`
---
+-- 
 
 INSERT INTO `help_faq` VALUES (1,1,0,'I would like to know ...','Yes, of course.',1,1,'riud','riud','r');
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Dumping data for table `help_faq_sections`
---
+-- 
 
 INSERT INTO `help_faq_sections` VALUES (1,'General',0,NULL,NULL,NULL,NULL,NULL);
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Dumping data for table `software_repo`
---
+-- 
 
 INSERT INTO `software_repo` (`software_repo_id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `repo_name`, `repo_url`, `repo_username`, `repo_password`, `active`) VALUES (1, 1, 1, 'riud', 'riud', '', 'ISPConfig Addons', 'http://repo.ispconfig.org/addons/', '', '', 'n');
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Dumping data for table `spamfilter_policy`
---
+-- 
 
 INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(1, 1, 0, 'riud', 'riud', 'r', 'Non-paying', 'N', 'N', 'N', 'N', 'Y', 'Y', 'Y', 'N', 'Y', '', '', '', '', '', '', 3, 7, 10, 0, 0, '', '', '', '', 'N', 'N', 'N', '', '', '', '', '', '', '', 0, '');
 INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `policy_name`, `virus_lover`, `spam_lover`, `banned_files_lover`, `bad_header_lover`, `bypass_virus_checks`, `bypass_spam_checks`, `bypass_banned_checks`, `bypass_header_checks`, `spam_modifies_subj`, `virus_quarantine_to`, `spam_quarantine_to`, `banned_quarantine_to`, `bad_header_quarantine_to`, `clean_quarantine_to`, `other_quarantine_to`, `spam_tag_level`, `spam_tag2_level`, `spam_kill_level`, `spam_dsn_cutoff_level`, `spam_quarantine_cutoff_level`, `addr_extension_virus`, `addr_extension_spam`, `addr_extension_banned`, `addr_extension_bad_header`, `warnvirusrecip`, `warnbannedrecip`, `warnbadhrecip`, `newvirus_admin`, `virus_admin`, `banned_admin`, `bad_header_admin`, `spam_admin`, `spam_subject_tag`, `spam_subject_tag2`, `message_size_limit`, `banned_rulenames`) VALUES(2, 1, 0, 'riud', 'riud', 'r', 'Uncensored', 'Y', 'Y', 'Y', 'Y', 'N', 'N', 'N', 'N', 'N', NULL, NULL, NULL, NULL, NULL, NULL, 3, 999, 999, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
@@ -2160,34 +2172,34 @@ INSERT INTO `spamfilter_policy` (`id`, `sys_userid`, `sys_groupid`, `sys_perm_us
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Dumping data for table `sys_group`
---
+-- 
 
 INSERT INTO `sys_group` (`groupid`, `name`, `description`, `client_id`) VALUES (1, 'admin', 'Administrators group', 0);
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Dumping data for table `sys_ini`
---
+-- 
 
 INSERT INTO `sys_ini` (`sysini_id`, `config`) VALUES (1, '');
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Dumping data for table `sys_user`
---
+-- 
 
 INSERT INTO `sys_theme` (`var_id`, `tpl_name`, `username`, `logo_url`) VALUES (NULL, 'default', 'global', 'themes/default/images/header_logo.png');
 INSERT INTO `sys_theme` (`var_id`, `tpl_name`, `username`, `logo_url`) VALUES (NULL, 'default-v2', 'global', 'themes/default-v2/images/header_logo.png');
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Dumping data for table `sys_user`
---
+-- 
 
 INSERT INTO `sys_user` (`userid`, `sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `username`, `passwort`, `modules`, `startmodule`, `app_theme`, `typ`, `active`, `language`, `groups`, `default_group`, `client_id`) VALUES (1, 1, 0, 'riud', 'riud', '', 'admin', '21232f297a57a5a743894a0e4a801fc3', 'dashboard,admin,client,mail,monitor,sites,dns,vm,tools,help', 'dashboard', 'default', 'admin', 1, 'en', '1,2', 1, 0);
 
@@ -2196,7 +2208,7 @@ INSERT INTO `sys_user` (`userid`, `sys_userid`, `sys_groupid`, `sys_perm_user`,
 --
 -- Dumping data for table `sys_config`
 --
-
+
 INSERT INTO sys_config VALUES ('1','db','db_version','3.0.5.3');
 
-SET FOREIGN_KEY_CHECKS = 1;
+SET FOREIGN_KEY_CHECKS = 1;
\ No newline at end of file
diff --git a/install/tpl/amavisd_user_config.master b/install/tpl/amavisd_user_config.master
index f37795501dcd1559873c03e037ac94bd8b830f08..c89f8758833b7dfeb5f7a3ed1ae4860431291759 100644
--- a/install/tpl/amavisd_user_config.master
+++ b/install/tpl/amavisd_user_config.master
@@ -75,12 +75,6 @@ $LOGFILE = "/var/log/amavis.log";  # (defaults to empty, no log)
 # Set the log_level to 5 for debugging
 $log_level = 0;                # (defaults to 0)
 
-# DKIM
-
-$enable_dkim_verification = 1;
-$enable_dkim_signing = 1; # load DKIM signing code,
-@dkim_signature_options_bysender_maps = (
-{ '.' => { ttl => 21*24*3600, c => 'relaxed/simple' } } );
 
 #------------ Do not modify anything below this line -------------
 1;  # insure a defined return
diff --git a/install/tpl/config.inc.php.master b/install/tpl/config.inc.php.master
index 8c8bedd2b73dde2a4ac8fadbdc12e8f59f7655a2..b217603e69b20cd7323a65de465f322f0a55014e 100644
--- a/install/tpl/config.inc.php.master
+++ b/install/tpl/config.inc.php.master
@@ -148,9 +148,11 @@ $conf['theme'] = '{theme}';
 $conf['html_content_encoding'] = 'utf-8'; // example: utf-8, iso-8859-1, ...
 $conf['logo'] = 'themes/default/images/header_logo.png';
 
+
 //** Default Language and Timezone
 $conf['language'] = '{language}';
 $conf['debug_language'] = false;
+$conf['language_file_import_enabled'] = {language_file_import_enabled}; // Bool value: true / false
 
 //* Complete timezone list: http://php.net/manual/en/timezones.php
 $conf['timezone'] = '{timezone}';
diff --git a/install/tpl/opensuse_amavisd_conf.master b/install/tpl/opensuse_amavisd_conf.master
index 5f9f867dc3363ac81e59895732d2e9e862845742..d0d8a8777314210d030e37b22b639547a2bb2fdf 100644
--- a/install/tpl/opensuse_amavisd_conf.master
+++ b/install/tpl/opensuse_amavisd_conf.master
@@ -778,11 +778,5 @@ $spam_admin = undef;
 $DO_SYSLOG = 1;
 $LOGFILE = "/var/log/amavis.log";  # (defaults to empty, no log)
 
-# DKIM
-
-$enable_dkim_verification = 1;
-$enable_dkim_signing = 1; # load DKIM signing code,
-@dkim_signature_options_bysender_maps = (
-{ '.' => { ttl => 21*24*3600, c => 'relaxed/simple' } } );
 
 1;  # insure a defined return
diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master
index d22a0722f30c4c2d6a68a043a209017d3d1b3432..b822131ceef500fd155af6d76d2d3bfe8db00682 100644
--- a/install/tpl/server.ini.master
+++ b/install/tpl/server.ini.master
@@ -5,13 +5,12 @@ dnsserver=mydns
 
 
 [server]
-auto_network_configuration=n
-ip_address=0.0.0.0
-netmask=255.255.255.0
-v6_prefix=
-gateway=0.0.0.0
-hostname=server1.domain.tld
-nameservers=8.8.8.8,8.8.4.4
+auto_network_configuration=n
+ip_address=0.0.0.0
+netmask=255.255.255.0
+gateway=0.0.0.0
+hostname=server1.domain.tld
+nameservers=8.8.8.8,8.8.4.4
 firewall=bastille
 loglevel=2
 admin_notify_events=1
@@ -28,7 +27,6 @@ munin_password=
 module=postfix_mysql
 maildir_path=/var/vmail/[domain]/[localpart]
 homedir_path=/var/vmail
-dkim_path=/etc/postfix/dkim
 pop3_imap_daemon=courier
 mail_filter_syntax=maildrop
 mailuser_uid=5000
@@ -46,7 +44,6 @@ overquota_notify_admin=y
 overquota_notify_client=y
 overquota_notify_freq=7
 overquota_notify_onok=n
-sendmail_path=/usr/sbin/sendmail
 
 [getmail]
 getmail_config_dir=/etc/getmail
@@ -54,12 +51,12 @@ getmail_config_dir=/etc/getmail
 [web]
 server_type=apache
 website_basedir=/var/www
-website_path=/var/www/clients/client[client_id]/web[website_id]
-website_symlinks=/var/www/[website_domain]/:/var/www/clients/client[client_id]/[website_domain]/
-website_symlinks_rel=n
-vhost_conf_dir=/etc/apache2/sites-available
-vhost_conf_enabled_dir=/etc/apache2/sites-enabled
-nginx_vhost_conf_dir=/etc/nginx/sites-available
+website_path=/var/www/clients/client[client_id]/web[website_id]
+website_symlinks=/var/www/[website_domain]/:/var/www/clients/client[client_id]/[website_domain]/
+website_symlinks_rel=n
+vhost_conf_dir=/etc/apache2/sites-available
+vhost_conf_enabled_dir=/etc/apache2/sites-enabled
+nginx_vhost_conf_dir=/etc/nginx/sites-available
 nginx_vhost_conf_enabled_dir=/etc/nginx/sites-enabled
 security_level=20
 user=www-data
@@ -93,12 +90,11 @@ add_web_users_to_sshusers_group=y
 connect_userid_to_webid=n
 connect_userid_to_webid_start=10000
 web_folder_protection=y
-<<<<<<< .minephp_ini_check_minutes=1
-=======overquota_notify_admin=y
+overquota_notify_admin=y
 overquota_notify_client=y
 overquota_notify_freq=7
 overquota_notify_onok=n
->>>>>>> .theirs
+
 [dns]
 bind_user=root
 bind_group=bind
diff --git a/install/tpl/system.ini.master b/install/tpl/system.ini.master
index abb89311cda7c023659b22e2001974e36ced87e6..14a75e42d2937497c3d15e0f3dac92bf53e5bb5a 100644
--- a/install/tpl/system.ini.master
+++ b/install/tpl/system.ini.master
@@ -23,7 +23,6 @@ dblist_phpmyadmin_link=y
 phpmyadmin_url=/phpmyadmin
 webftp_url=
 client_username_web_check_disabled=n
-reseller_can_use_options=n
 
 [tools]
 
diff --git a/install/update.php b/install/update.php
index b7753dc7e70f61fa8af951df53ff4ba5ae6b4f44..1999bc0c2db9f30c84cff63c42825eac69cb8e8b 100644
--- a/install/update.php
+++ b/install/update.php
@@ -34,6 +34,8 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 error_reporting(E_ALL|E_STRICT);
 
+define('INSTALLER_RUN', true);
+
 //** The banner on the command line
 echo "\n\n".str_repeat('-',80)."\n";
 echo " _____ ___________   _____              __ _         ____
@@ -99,6 +101,7 @@ $conf['theme'] = $conf_old['theme'];
 if($conf['language'] == '{language}') $conf['language'] = 'en';
 $conf['timezone'] = (isset($conf_old['timezone']))?$conf_old['timezone']:'UTC';
 if($conf['timezone'] == '{timezone}' or trim($conf['timezone']) == '') $conf['timezone'] = 'UTC';
+$conf['language_file_import_enabled'] = (isset($conf_old['language_file_import_enabled']))?$conf_old['language_file_import_enabled']:true;
 
 if(isset($conf_old["dbmaster_host"])) $conf["mysql"]["master_host"] = $conf_old["dbmaster_host"];
 if(isset($conf_old["dbmaster_database"])) $conf["mysql"]["master_database"] = $conf_old["dbmaster_database"];
@@ -341,15 +344,10 @@ if($reconfigure_services_answer == 'yes') {
 
 	
 	if($conf['services']['firewall']) {
-		if($conf['ufw']['installed'] == true) {
-			//* Configure Ubuntu Firewall
-			$conf['services']['firewall'] = true;
-			swriteln('Configuring Ubuntu Firewall');
-			$inst->configure_ufw_firewall();
-		} else {
+		if($conf['bastille']['installed'] == true) {
 			//* Configure Bastille Firewall
 			swriteln('Configuring Bastille Firewall');
-			$inst->configure_bastille_firewall();
+			$inst->configure_firewall();
 		}
 	}
 	
@@ -431,7 +429,7 @@ if($reconfigure_services_answer == 'yes') {
 	}
 	
 	if($conf['services']['firewall']) {
-		if($conf['ufw']['installed'] == true && $conf['ufw']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['ufw']['init_script']))					system($conf['init_scripts'].'/'.$conf['ufw']['init_script'].' restart &> /dev/null');
+		//if($conf['ufw']['installed'] == true && $conf['ufw']['init_script'] != '' && is_executable($conf['init_scripts'].'/'.$conf['ufw']['init_script']))					system($conf['init_scripts'].'/'.$conf['ufw']['init_script'].' restart &> /dev/null');
 	}
 }
 
diff --git a/interface/cache/empty.dir b/interface/cache/empty.dir
new file mode 100644
index 0000000000000000000000000000000000000000..95ba9ef37cca69318bcba17e67cd44ae84bd41e1
--- /dev/null
+++ b/interface/cache/empty.dir
@@ -0,0 +1 @@
+This empty directory is needed by ISPConfig.
diff --git a/interface/lib/classes/aps_base.inc.php b/interface/lib/classes/aps_base.inc.php
index 4c1512ba2a018e45f9aee6ef758be1c65e767b70..b8f6ad9232275d3ec5135002307c8e4629f82b13 100644
--- a/interface/lib/classes/aps_base.inc.php
+++ b/interface/lib/classes/aps_base.inc.php
@@ -1,103 +1,103 @@
-<?php
-/*
-Copyright (c) 2012, ISPConfig UG
-Contributors: web wack creations,  http://www.web-wack.at
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of ISPConfig nor the names of its contributors
-      may be used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-// Constants describing instances
-define('INSTANCE_PENDING', 0);
-define('INSTANCE_INSTALL', 1);
-define('INSTANCE_ERROR', 2);
-define('INSTANCE_SUCCESS', 3);
-define('INSTANCE_REMOVE', 4);
-
-// Constants describing packages
-define('PACKAGE_LOCKED', 1);
-define('PACKAGE_ENABLED', 2);
-define('PACKAGE_OUTDATED', 3);
-define('PACKAGE_ERROR_NOMETA', 4);
-
-class ApsBase
-{
-    protected $log_prefix = '';
-    protected $fetch_url = '';
-    protected $aps_version = '';
-    protected $packages_dir = '';
-    protected $temp_pkg_dir = '';
-    protected $interface_pkg_dir = '';
-    protected $interface_mode = false; // server mode by default
-
-    /**
-     * Constructor
-     *
-     * @param $app the application instance (db handle + log method)
-     * @param $interface_mode act in interface (true) or server mode (false)
-     * @param $log_prefix a prefix to set before all log entries
-     */
-    public function __construct($app, $log_prefix = 'APS: ', $interface_mode = false)
-    {
-        $this->log_prefix = $log_prefix;
-        $this->interface_mode = $interface_mode;
-        $this->fetch_url = 'apscatalog.com';
-        $this->aps_version = '1';
-        $this->packages_dir = ISPC_ROOT_PATH.'/aps_packages';
-        $this->interface_pkg_dir = ISPC_ROOT_PATH.'/web/sites/aps_meta_packages';
-    }
-    
-    /**
-     * Converts a given value to it's native representation in 1024 units
-     * 
-     * @param $value the size to convert
-     * @return integer and string 
-     */
-    public function convertSize($value)
-    {
-        $unit = array('Bytes', 'KB', 'MB', 'GB', 'TB');
-        return @round($value/pow(1024, ($i = floor(log($value, 1024)))), 2).' '.$unit[$i];
-    }
-    
-    /**
-     * Determine a specific xpath from a given SimpleXMLElement handle. If the
-     * element is found, it's string representation is returned. If not,
-     * the return value will stay empty
-     *
-     * @param $xml_handle the SimpleXMLElement handle
-     * @param $query the XPath query
-     * @param $array define whether to return an array or a string
-     * @return $ret the return string
-     */
-    protected function getXPathValue($xml_handle, $query, $array = false)
-    {
-        $ret = '';
-        
-        $xp_result = @($xml_handle->xpath($query)) ? $xml_handle->xpath($query) : false;
-        if($xp_result !== false) $ret = (($array === false) ? (string)$xp_result[0] : $xp_result);
-        
-        return $ret;
-    }
-}
+<?php
+/*
+Copyright (c) 2012, ISPConfig UG
+Contributors: web wack creations,  http://www.web-wack.at
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of ISPConfig nor the names of its contributors
+      may be used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+// Constants describing instances
+define('INSTANCE_PENDING', 0);
+define('INSTANCE_INSTALL', 1);
+define('INSTANCE_ERROR', 2);
+define('INSTANCE_SUCCESS', 3);
+define('INSTANCE_REMOVE', 4);
+
+// Constants describing packages
+define('PACKAGE_LOCKED', 1);
+define('PACKAGE_ENABLED', 2);
+define('PACKAGE_OUTDATED', 3);
+define('PACKAGE_ERROR_NOMETA', 4);
+
+class ApsBase
+{
+    protected $log_prefix = '';
+    protected $fetch_url = '';
+    protected $aps_version = '';
+    protected $packages_dir = '';
+    protected $temp_pkg_dir = '';
+    protected $interface_pkg_dir = '';
+    protected $interface_mode = false; // server mode by default
+
+    /**
+     * Constructor
+     *
+     * @param $app the application instance (db handle + log method)
+     * @param $interface_mode act in interface (true) or server mode (false)
+     * @param $log_prefix a prefix to set before all log entries
+     */
+    public function __construct($app, $log_prefix = 'APS: ', $interface_mode = false)
+    {
+        $this->log_prefix = $log_prefix;
+        $this->interface_mode = $interface_mode;
+        $this->fetch_url = 'apscatalog.com';
+        $this->aps_version = '1';
+        $this->packages_dir = ISPC_ROOT_PATH.'/aps_packages';
+        $this->interface_pkg_dir = ISPC_ROOT_PATH.'/web/sites/aps_meta_packages';
+    }
+    
+    /**
+     * Converts a given value to it's native representation in 1024 units
+     * 
+     * @param $value the size to convert
+     * @return integer and string 
+     */
+    public function convertSize($value)
+    {
+        $unit = array('Bytes', 'KB', 'MB', 'GB', 'TB');
+        return @round($value/pow(1024, ($i = floor(log($value, 1024)))), 2).' '.$unit[$i];
+    }
+    
+    /**
+     * Determine a specific xpath from a given SimpleXMLElement handle. If the
+     * element is found, it's string representation is returned. If not,
+     * the return value will stay empty
+     *
+     * @param $xml_handle the SimpleXMLElement handle
+     * @param $query the XPath query
+     * @param $array define whether to return an array or a string
+     * @return $ret the return string
+     */
+    protected function getXPathValue($xml_handle, $query, $array = false)
+    {
+        $ret = '';
+        
+        $xp_result = @($xml_handle->xpath($query)) ? $xml_handle->xpath($query) : false;
+        if($xp_result !== false) $ret = (($array === false) ? (string)$xp_result[0] : $xp_result);
+        
+        return $ret;
+    }
+}
 ?>
\ No newline at end of file
diff --git a/interface/lib/classes/aps_crawler.inc.php b/interface/lib/classes/aps_crawler.inc.php
index 2c6906efda50d4716a66c664dc3ab04ef78cc4d4..00b1d7632729ea57fd7e5771d68f28459fcda874 100644
--- a/interface/lib/classes/aps_crawler.inc.php
+++ b/interface/lib/classes/aps_crawler.inc.php
@@ -1,592 +1,592 @@
-<?php
-/*
-Copyright (c) 2012, ISPConfig UG
-Contributors: web wack creations,  http://www.web-wack.at
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of ISPConfig nor the names of its contributors
-      may be used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-require_once('aps_base.inc.php');
-
-@set_time_limit(0);
-@ignore_user_abort(1);
-
-class ApsCrawler extends ApsBase
-{
-   
-   //public $app_download_url_list = array();
-   
-   /**
-    * Constructor
-    *
-    * @param $app the application instance (db handle + log method)
-    * @param $interface_mode act in interface (true) or server mode (false)
-    */
-    public function __construct($app, $interface_mode = false)
-    {
-        parent::__construct($app, 'APS crawler: ', $interface_mode);
-    }
-    
-    /**
-     * Before the cron is executed, make sure all necessary options are set
-     * and all functions (i.e. cURL) are available
-     */
-    private function checkRequirements()
-    {
-        global $app;
-        
-        try
-        {
-            // Check if allow_url_fopen is enabled
-            if(!@ini_get('allow_url_fopen')) throw new Exception('allow_url_fopen is not enabled');
-            // Check if the cURL module is available
-            if(!function_exists('curl_version')) throw new Exception('cURL is not available');
-            
-            // Check if used folders are writable
-            if($this->interface_mode)
-            {
-                if(!is_writable($this->interface_pkg_dir)) 
-                    throw new Exception('the folder '.basename($this->interface_pkg_dir).' is not writable');  
-            }   
-            else 
-            {
-                if(!is_writable($this->packages_dir)) 
-                    throw new Exception('the folder '.basename($this->packages_dir).' is not writable');
-            }
-            
-            return true;
-        }
-        catch(Exception $e)
-        {
-            $app->log($this->log_prefix.'Aborting execution because '.$e->getMessage(), LOGLEVEL_ERROR);
-            return false;
-        }
-    }
-    
-    /**
-     * Remove a directory recursively
-     * In case of error be silent
-     * 
-     * @param $dir the directory to remove
-     */
-    private function removeDirectory($dir)
-    {
-        if(is_dir($dir))
-        {
-            $files = scandir($dir);
-            foreach($files as $file)
-            {
-                if($file != '.' && $file != '..')
-                    if(filetype($dir.'/'.$file) == 'dir') $this->removeDirectory($dir.'/'.$file); 
-                    else @unlink($dir.'/'.$file);
-            }
-            reset($files);
-            @rmdir($dir);
-        }
-    }
-
-    
-    /**
-     * Fetch HTML data from one or more given URLs
-     * If a string is given, a string is returned, if an array of URLs should
-     * be fetched, the responses of the parallel queries are returned as array
-     *
-     * @param $input the string or array to fetch
-     * @return $ret a query response string or array
-     */
-    private function fetchPage($input)
-    {
-        $ret = array();
-        $url = array();
-        $conn = array();
-
-        // Make sure we are working with an array, further on
-        if(!is_array($input)) $url[] = $input;
-        else $url = $input;
-        
-        // Build the single cURL handles and add them to a multi handle
-        $mh = curl_multi_init();
-        for($i = 0; $i < count($url); $i++)
-        {
-            $conn[$i] = curl_init('http://'.$this->fetch_url.$url[$i]);
-            curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER, true);
-            curl_multi_add_handle($mh, $conn[$i]);
-        }
-        
-        $active = 0;
-        do curl_multi_exec($mh, $active);
-        while($active > 0);
-
-        // Get the response(s)
-        for($i = 0; $i < count($url); $i++)
-        {
-            $ret[$i] = curl_multi_getcontent($conn[$i]);
-            curl_multi_remove_handle($mh, $conn[$i]);
-            curl_close($conn[$i]);
-        }
-        curl_multi_close($mh);
-        
-        if(count($url) == 1) $ret = $ret[0];
-        
-        return $ret;
-    }
-    
-    /**
-     * Fetch binary data from a given array
-     * The data is retrieved in binary mode and 
-     * then directly written to an output file
-     *
-     * @param $input a specially structed array
-     * @see $this->startUpdate()
-     */
-    private function fetchFiles($input)
-    {
-        $fh = array();
-        $url = array();
-        $conn = array();
-
-        // Build the single cURL handles and add them to a multi handle
-        $mh = curl_multi_init();
-        
-        // Process each app 
-        for($i = 0; $i < count($input); $i++)
-        {
-            $conn[$i] = curl_init($input[$i]['url']);
-            $fh[$i] = fopen($input[$i]['localtarget'], 'wb'); 
-            
-            curl_setopt($conn[$i], CURLOPT_BINARYTRANSFER, true);
-            curl_setopt($conn[$i], CURLOPT_FILE, $fh[$i]);
-            curl_setopt($conn[$i], CURLOPT_TIMEOUT, 0);
-            curl_setopt($conn[$i], CURLOPT_FAILONERROR, 1);
-            curl_setopt($conn[$i], CURLOPT_FOLLOWLOCATION, 1); 
-            
-            curl_multi_add_handle($mh, $conn[$i]);
-        }
-        
-        $active = 0;
-        do curl_multi_exec($mh, $active);
-        while($active > 0);
-
-        // Close the handles
-        for($i = 0; $i < count($input); $i++)
-        {
-            fclose($fh[$i]);
-            curl_multi_remove_handle($mh, $conn[$i]);
-            curl_close($conn[$i]);
-        }
-        curl_multi_close($mh);
-    }
-    
-    /**
-     * A method to build query URLs out of a list of vendors
-     *
-    */
-    private function formatVendorCallback($array_item)
-    {
-        $array_item = str_replace(' ', '%20', $array_item);
-        $array_item = str_replace('http://', '', $array_item);
-        $array_item = '/'.$this->aps_version.'.atom?vendor='.$array_item.'&pageSize=100';
-		return($array_item);
-    }
-    
-    /**
-     * The main method which performs the actual crawling
-     */    
-    public function startCrawler() 
-    {
-        global $app;
-
-        try
-        {
-            // Make sure the requirements are given so that this script can execute
-            $req_ret = $this->checkRequirements();
-            if(!$req_ret) return false;
-            
-            // Execute the open task and first fetch all vendors (APS catalog API 1.1, p. 12)
-            $app->log($this->log_prefix.'Fetching data from '.$this->fetch_url);
-
-            $vendor_page = $this->fetchPage('/all-app/'); //$vendor_page = $this->fetchPage('/'.$this->aps_version.'/');
-            preg_match_all("/\<a href=\"(.+)\/\" class=\"vendor\"/i", $vendor_page, $matches);
-            $vendors = array_map('urldecode', $matches[1]);
-            if(!$vendors) throw new Exception('Unable to fetch vendors. Aborting');
-
-            // Format all vendors for further processing (i.e. typo3.org -> /1.atom?vendor=typo3.org&pageSize=100
-            //array_walk($vendors, array($this, 'formatVendorCallback'));
-			if(is_array($vendors)) {
-				foreach($vendors as $key => $array_item) {
-					$vendors[$key] = $this->formatVendorCallback($array_item);
-				}
-			}
-            
-            // Process all vendors in chunks of 50 entries
-            $vendor_chunks = array_chunk($vendors, 50);
-            //var_dump($vendor_chunks); 
-
-            // Get all known apps from the database and the highest known version
-            // Note: A dirty hack is used for numerical sorting of the VARCHAR field Version: +0 -> cast
-            // A longer but typesafe way would be: ORDER BY CAST(REPLACE(Version, '.', '') AS UNSIGNED) DESC
-            $existing_apps = $app->db->queryAllRecords("SELECT * FROM (
-                SELECT name AS Name, CONCAT(version, '-', CAST(`release` AS CHAR)) AS CurrentVersion 
-                FROM aps_packages ORDER BY REPLACE(version, '.', '')+0 DESC, `release` DESC
-                ) as Versions GROUP BY name");
-            //var_dump($existing_apps); 
-            
-            // Used for statistics later
-            $apps_in_repo = 0; 
-            $apps_updated = 0;
-            $apps_downloaded = 0;
-            
-            $apps_to_dl = array();
-            
-            for($i = 0; $i < count($vendor_chunks); $i++)
-            {
-                // Fetch all apps for the current chunk of vendors
-                $apps = $this->fetchPage($vendor_chunks[$i]);
-                
-                for($j = 0; $j < count($apps); $j++)
-                {
-                    // Before parsing, make sure it's worth the work by checking if at least one app exists
-                    $apps_count = substr_count($apps[$j], '<opensearch:totalResults>0</opensearch:totalResults>');
-                    if($apps_count == 0) // obviously this vendor provides one or more apps
-                    {
-                        // Rename namespaces and register them 
-                        $xml = str_replace("xmlns=", "ns=", $apps[$j]);
-                        $sxe = new SimpleXMLElement($xml);
-                        $namespaces = $sxe->getDocNamespaces(true);
-                        foreach($namespaces as $ns => $url) $sxe->registerXPathNamespace($ns, $url);
-                        
-                        // Fetching values of interest
-                        $app_name = parent::getXPathValue($sxe, 'entry[position()=1]/a:name');
-                        $app_version = parent::getXPathValue($sxe, 'entry[position()=1]/a:version');
-                        $app_release = parent::getXPathValue($sxe, 'entry[position()=1]/a:release');
-                        
-                        // Find out a (possibly) existing package version
-                        $ex_ver = '';
-						/*
-                        array_walk($existing_apps, 
-                            create_function('$v, $k, $ex_ver', 'if($v["Name"] == "'.$app_name.'") $ex_ver = $v["CurrentVersion"];'), &$ex_ver);
-                        */
-						if(is_array($existing_apps)) {
-							foreach($existing_apps as $k => $v) {
-								if($v["Name"] == $app_name) $ex_ver = $v["CurrentVersion"];
-							}
-						}
-						
-                        $new_ver = $app_version.'-'.$app_release;
-                        $local_intf_folder = $this->interface_pkg_dir.'/'.$app_name.'-'.$new_ver.'.app.zip/';
-
-                        // Proceed if a newer or at least equal version has been found with server mode or 
-                        // interface mode is activated and there are no valid APP-META.xml and PKG_URL existing yet
-                        if((!$this->interface_mode && version_compare($new_ver, $ex_ver) >= 0) || ($this->interface_mode && (!file_exists($local_intf_folder.'APP-META.xml') || filesize($local_intf_folder.'APP-META.xml') == 0 || !file_exists($local_intf_folder.'PKG_URL') || filesize($local_intf_folder.'PKG_URL') == 0))){
-                            // Check if we already have an old version of this app
-                            if(!empty($ex_ver) && version_compare($new_ver, $ex_ver) == 1) $apps_updated++; 
-
-                            $app_dl = parent::getXPathValue($sxe, "entry[position()=1]/link[@a:type='aps']/@href");
-                            $app_filesize = parent::getXPathValue($sxe, "entry[position()=1]/link[@a:type='aps']/@length");
-                            $app_metafile = parent::getXPathValue($sxe, "entry[position()=1]/link[@a:type='meta']/@href");
-							
-							//$this->app_download_url_list[$app_name.'-'.$new_ver.'.app.zip'] = $app_dl;
-                            // Skip ASP.net packages because they can't be used at all
-                            $asp_handler = parent::getXPathValue($sxe, '//aspnet:handler');
-                            $asp_permissions = parent::getXPathValue($sxe, '//aspnet:permissions');
-                            $asp_version = parent::getXPathValue($sxe, '//aspnet:version');
-                            if(!empty($asp_handler) || !empty($asp_permissions) || !empty($asp_version)) continue;
-
-                            // Interface mode (download only parts)
-                            if($this->interface_mode)
-                            {
-                                // Delete an obviously out-dated version from the system and DB
-                                if(!empty($ex_ver) && version_compare($new_ver, $ex_ver) == 1)
-                                {
-                                    $old_folder = $this->interface_pkg_dir.'/'.$app_name.'-'.$ex_ver.'.app.zip';
-                                    if(file_exists($old_folder)) $this->removeDirectory($old_folder);
-                                    
-									/*
-                                    $app->db->query("UPDATE aps_packages SET package_status = '".PACKAGE_OUTDATED."' WHERE name = '".
-                                        $app->db->quote($app_name)."' AND CONCAT(version, '-', CAST(`release` AS CHAR)) = '".
-                                        $app->db->quote($ex_ver)."';");
-									*/
-									$tmp = $app->db->queryOneRecord("SELECT id FROM aps_packages WHERE name = '".
-                                        $app->db->quote($app_name)."' AND CONCAT(version, '-', CAST(`release` AS CHAR)) = '".
-                                        $app->db->quote($ex_ver)."';");
-									$app->db->datalogUpdate('aps_packages', "package_status = ".PACKAGE_OUTDATED, 'id', $tmp['id']);
-									unset($tmp);
-                                }
-                                
-                                // Create the local folder if not yet existing
-                                if(!file_exists($local_intf_folder)) @mkdir($local_intf_folder, 0777, true);
-								
-								// Save the package URL in an extra file because it's not part of the APP-META.xml file
-								@file_put_contents($local_intf_folder.'PKG_URL', $app_dl);
-                                
-                                // Download the meta file
-                                $local_metafile = $local_intf_folder.'APP-META.xml';
-                                if(!file_exists($local_metafile) || filesize($local_metafile) == 0) 
-                                {
-                                    $apps_to_dl[] = array('name' => 'APP-META.xml', 
-                                                          'url' => $app_metafile, 
-                                                          'filesize' => 0, 
-                                                          'localtarget' => $local_metafile);
-                                    $apps_downloaded++;
-                                }
-                                
-                                // Download package license
-                                $license = parent::getXPathValue($sxe, "entry[position()=1]/link[@a:type='eula']/@href");
-                                if($license != '')
-                                {
-                                    $local_license = $local_intf_folder.'LICENSE';
-                                    if(!file_exists($local_license) || filesize($local_license) == 0)
-                                    {
-                                        $apps_to_dl[] = array('name' => basename($license), 
-                                                              'url' => $license, 
-                                                              'filesize' => 0, 
-                                                              'localtarget' => $local_license);
-                                    }
-                                }
-                                
-                                // Download package icon
-                                $icon = parent::getXPathValue($sxe, "entry[position()=1]/link[@a:type='icon']/@href");
-                                if($icon != '')
-                                {
-                                    $local_icon = $local_intf_folder.basename($icon);
-                                    if(!file_exists($local_icon) || filesize($local_icon) == 0)
-                                    {
-                                        $apps_to_dl[] = array('name' => basename($icon), 
-                                                              'url' => $icon, 
-                                                              'filesize' => 0, 
-                                                              'localtarget' => $local_icon);
-                                    }
-                                }
-                                
-                                // Download available screenshots
-                                $screenshots = parent::getXPathValue($sxe, "entry[position()=1]/link[@a:type='screenshot']", true);
-                                if(!empty($screenshots))
-                                {
-                                    foreach($screenshots as $screen)
-                                    {
-                                        $local_screen = $local_intf_folder.basename($screen['href']);
-                                        if(!file_exists($local_screen) || filesize($local_screen) == 0)
-                                        {
-                                            $apps_to_dl[] = array('name' => basename($screen['href']), 
-                                                                  'url' => $screen['href'], 
-                                                                  'filesize' => 0, 
-                                                                  'localtarget' => $local_screen);
-                                        }
-                                    }
-                                }
-                            }
-                            else // Server mode (download whole ZIP archive)
-                            {
-                                // Delete an obviously out-dated version from the system
-                                if(!empty($ex_ver) && version_compare($new_ver, $ex_ver) == 1)
-                                {
-                                    $old_file = $this->packages_dir.'/'.$app_name.'-'.$ex_ver.'.app.zip';
-                                    if(file_exists($old_file)) $this->removeDirectory($old_file);
-                                }
-                                
-                                // Attention: $new_ver can also be == $ex_ver (according to version_compare >= 0)
-                                $local_zip = $this->packages_dir.'/'.$app_name.'-'.$new_ver.'.app.zip';
-                            
-                                // Before re-downloading a file, make sure it's not yet existing on HDD (due to DB inconsistency)
-                                if((file_exists($local_zip) && (filesize($local_zip) == $app_filesize)) === false)
-                                {
-                                    $apps_to_dl[] = array('name' => $app_name, 
-                                                          'url' => $app_dl, 
-                                                          'filesize' => $app_filesize, 
-                                                          'localtarget' => $local_zip);
-                                    $apps_downloaded++;
-                                }
-                            }
-                        }
-                        
-                        unset($sxe);
-                        $apps_in_repo++;
-                    }
-                }
-                //var_dump($apps);
-                
-                // For memory reasons, unset the current vendor and his apps
-                unset($apps);
-            }
-            
-            // Shuffle the download array (in order to compensate unexpected php aborts)
-            shuffle($apps_to_dl);
-            
-            // After collecting all provisioned apps, download them
-            $apps_to_dl_chunks = array_chunk($apps_to_dl, 10);
-
-            for($i = 0; $i < count($apps_to_dl_chunks); $i++)
-            {
-                $this->fetchFiles($apps_to_dl_chunks[$i]);
-                
-                // Check the integrity of all downloaded files
-                // but exclude cases where no filesize is available (i.e. screenshot or metafile download)
-                for($j = 0; $j < count($apps_to_dl_chunks[$i]); $j++)
-                {
-                    if($apps_to_dl_chunks[$i][$j]['filesize'] != 0 &&
-                       $apps_to_dl_chunks[$i][$j]['filesize'] != filesize($apps_to_dl_chunks[$i][$j]['localtarget']))
-                    {
-                            $app->log($this->log_prefix.' The filesize of the package "'.
-                                $apps_to_dl_chunks[$i][$j]['name'].'" is wrong. Download failure?', LOGLEVEL_WARN);
-                    }
-                }
-            }
-            
-            $app->log($this->log_prefix.'Processed '.$apps_in_repo.
-                ' apps from the repo. Downloaded '.$apps_updated.
-                ' updates, '.$apps_downloaded.' new apps');
-        }
-        catch(Exception $e)
-        {
-            $app->log($this->log_prefix.$e->getMessage(), LOGLEVEL_ERROR);
-            return false;
-        }
-    }
-    
-    /**
-     * Read in all possible packages from the interface packages folder and 
-     * check if they are not ASP.net code (as this can't be processed).
-     * 
-     * Note: There's no need to check if the packages to register are newer
-     * than those in the database because this already happended in startCrawler()
-     */
-    public function parseFolderToDB()
-    {
-        global $app;
-        
-        try
-        {
-            // This method must be used in interface mode
-            if(!$this->interface_mode) return false; 
-            
-            $pkg_list = array();
-        
-            // Read in every package having a correct filename
-            $temp_handle = @dir($this->interface_pkg_dir);
-            if(!$temp_handle) throw new Exception('The temp directory is not accessible');
-            while($folder = $temp_handle->read()) 
-                if(substr($folder, -8) == '.app.zip') $pkg_list[] = $folder;
-            $temp_handle->close();
-            
-            // If no packages are available -> exception (because at this point there should exist packages)
-            if(empty($pkg_list)) throw new Exception('No packages to read in');
-            
-            // Get registered packages and mark non-existant packages with an error code to omit the install
-            $existing_packages = array();
-            $path_query = $app->db->queryAllRecords('SELECT path AS Path FROM aps_packages;');
-            foreach($path_query as $path) $existing_packages[] = $path['Path']; 
-            $diff = array_diff($existing_packages, $pkg_list);
-            foreach($diff as $todelete) {
-                /*$app->db->query("UPDATE aps_packages SET package_status = '".PACKAGE_ERROR_NOMETA."' 
-                    WHERE path = '".$app->db->quote($todelete)."';");*/
-				$tmp = $app->db->queryOneRecord("SELECT id FROM aps_packages WHERE path = '".$app->db->quote($todelete)."';");
-				$app->db->datalogUpdate('aps_packages', "package_status = ".PACKAGE_ERROR_NOMETA, 'id', $tmp['id']);
-				unset($tmp);
-			}
-            
-            // Register all new packages
-            $new_packages = array_diff($pkg_list, $existing_packages);
-            foreach($new_packages as $pkg)
-            {
-                // Load in meta file if existing and register its namespaces
-                $metafile = $this->interface_pkg_dir.'/'.$pkg.'/APP-META.xml';
-                if(!file_exists($metafile)) 
-                {
-                    $app->log($this->log_prefix.'Cannot read metadata from '.$pkg, LOGLEVEL_ERROR);
-                    continue;
-                }
-        
-                $metadata = file_get_contents($metafile);
-                $metadata = str_replace("xmlns=", "ns=", $metadata);
-                $sxe = new SimpleXMLElement($metadata);
-                $namespaces = $sxe->getDocNamespaces(true);
-                foreach($namespaces as $ns => $url) $sxe->registerXPathNamespace($ns, $url);
-                
-                // Insert the new package
-                $pkg_name = parent::getXPathValue($sxe, 'name');
-                $pkg_category = parent::getXPathValue($sxe, '//category');
-                $pkg_version = parent::getXPathValue($sxe, 'version');
-                $pkg_release = parent::getXPathValue($sxe, 'release');
-				//$pkg_url = $this->app_download_url_list[$pkg];
-				$pkg_url = @file_get_contents($this->interface_pkg_dir.'/'.$pkg.'/PKG_URL');
-                
-				/*
-                $app->db->query("INSERT INTO `aps_packages` 
-                    (`path`, `name`, `category`, `version`, `release`, `package_status`) VALUES 
-                    ('".$app->db->quote($pkg)."', '".$app->db->quote($pkg_name)."',
-                    '".$app->db->quote($pkg_category)."', '".$app->db->quote($pkg_version)."',
-                    ".$app->db->quote($pkg_release).", ".PACKAGE_ENABLED.");");
-				*/
-				// Insert only if data is complete
-				if($pkg != '' && $pkg_name != '' && $pkg_category != '' && $pkg_version != '' && $pkg_release != '' && $pkg_url){
-					$insert_data = "(`path`, `name`, `category`, `version`, `release`, `package_url`, `package_status`) VALUES 
-                    ('".$app->db->quote($pkg)."', '".$app->db->quote($pkg_name)."',
-                    '".$app->db->quote($pkg_category)."', '".$app->db->quote($pkg_version)."',
-                    ".$app->db->quote($pkg_release).", '".$app->db->quote($pkg_url)."', ".PACKAGE_ENABLED.");";
-				
-					$app->db->datalogInsert('aps_packages', $insert_data, 'id');
-				} else {
-					if(file_exists($this->interface_pkg_dir.'/'.$pkg)) $this->removeDirectory($this->interface_pkg_dir.'/'.$pkg);
-				}
-            }
-        }
-        catch(Exception $e)
-        {
-            $app->log($this->log_prefix.$e->getMessage(), LOGLEVEL_ERROR);
-			$app->error($e->getMessage());
-            return false;
-        }
-    }
-	
-	/**
-     * Add missing package URLs to database
-     */
-    public function fixURLs()
-    {
-        global $app;
-        
-        try
-        {
-            // This method must be used in interface mode
-            if(!$this->interface_mode) return false; 
-            
-            $incomplete_pkgs = $app->db->queryAllRecords("SELECT * FROM aps_packages WHERE package_url = ''");
-			if(is_array($incomplete_pkgs) && !empty($incomplete_pkgs)){
-				foreach($incomplete_pkgs as $incomplete_pkg){
-					$pkg_url = @file_get_contents($this->interface_pkg_dir.'/'.$incomplete_pkg['path'].'/PKG_URL');
-					if($pkg_url != ''){
-						$app->db->datalogUpdate('aps_packages', "package_url = '".$pkg_url."'", 'id', $incomplete_pkg['id']);
-					}
-				}
-			}
-        }
-        catch(Exception $e)
-        {
-            $app->log($this->log_prefix.$e->getMessage(), LOGLEVEL_ERROR);
-			$app->error($e->getMessage());
-            return false;
-        }
-    }
-}
+<?php
+/*
+Copyright (c) 2012, ISPConfig UG
+Contributors: web wack creations,  http://www.web-wack.at
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of ISPConfig nor the names of its contributors
+      may be used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+require_once('aps_base.inc.php');
+
+@set_time_limit(0);
+@ignore_user_abort(1);
+
+class ApsCrawler extends ApsBase
+{
+   
+   //public $app_download_url_list = array();
+   
+   /**
+    * Constructor
+    *
+    * @param $app the application instance (db handle + log method)
+    * @param $interface_mode act in interface (true) or server mode (false)
+    */
+    public function __construct($app, $interface_mode = false)
+    {
+        parent::__construct($app, 'APS crawler: ', $interface_mode);
+    }
+    
+    /**
+     * Before the cron is executed, make sure all necessary options are set
+     * and all functions (i.e. cURL) are available
+     */
+    private function checkRequirements()
+    {
+        global $app;
+        
+        try
+        {
+            // Check if allow_url_fopen is enabled
+            if(!@ini_get('allow_url_fopen')) throw new Exception('allow_url_fopen is not enabled');
+            // Check if the cURL module is available
+            if(!function_exists('curl_version')) throw new Exception('cURL is not available');
+            
+            // Check if used folders are writable
+            if($this->interface_mode)
+            {
+                if(!is_writable($this->interface_pkg_dir)) 
+                    throw new Exception('the folder '.basename($this->interface_pkg_dir).' is not writable');  
+            }   
+            else 
+            {
+                if(!is_writable($this->packages_dir)) 
+                    throw new Exception('the folder '.basename($this->packages_dir).' is not writable');
+            }
+            
+            return true;
+        }
+        catch(Exception $e)
+        {
+            $app->log($this->log_prefix.'Aborting execution because '.$e->getMessage(), LOGLEVEL_ERROR);
+            return false;
+        }
+    }
+    
+    /**
+     * Remove a directory recursively
+     * In case of error be silent
+     * 
+     * @param $dir the directory to remove
+     */
+    private function removeDirectory($dir)
+    {
+        if(is_dir($dir))
+        {
+            $files = scandir($dir);
+            foreach($files as $file)
+            {
+                if($file != '.' && $file != '..')
+                    if(filetype($dir.'/'.$file) == 'dir') $this->removeDirectory($dir.'/'.$file); 
+                    else @unlink($dir.'/'.$file);
+            }
+            reset($files);
+            @rmdir($dir);
+        }
+    }
+
+    
+    /**
+     * Fetch HTML data from one or more given URLs
+     * If a string is given, a string is returned, if an array of URLs should
+     * be fetched, the responses of the parallel queries are returned as array
+     *
+     * @param $input the string or array to fetch
+     * @return $ret a query response string or array
+     */
+    private function fetchPage($input)
+    {
+        $ret = array();
+        $url = array();
+        $conn = array();
+
+        // Make sure we are working with an array, further on
+        if(!is_array($input)) $url[] = $input;
+        else $url = $input;
+        
+        // Build the single cURL handles and add them to a multi handle
+        $mh = curl_multi_init();
+        for($i = 0; $i < count($url); $i++)
+        {
+            $conn[$i] = curl_init('http://'.$this->fetch_url.$url[$i]);
+            curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER, true);
+            curl_multi_add_handle($mh, $conn[$i]);
+        }
+        
+        $active = 0;
+        do curl_multi_exec($mh, $active);
+        while($active > 0);
+
+        // Get the response(s)
+        for($i = 0; $i < count($url); $i++)
+        {
+            $ret[$i] = curl_multi_getcontent($conn[$i]);
+            curl_multi_remove_handle($mh, $conn[$i]);
+            curl_close($conn[$i]);
+        }
+        curl_multi_close($mh);
+        
+        if(count($url) == 1) $ret = $ret[0];
+        
+        return $ret;
+    }
+    
+    /**
+     * Fetch binary data from a given array
+     * The data is retrieved in binary mode and 
+     * then directly written to an output file
+     *
+     * @param $input a specially structed array
+     * @see $this->startUpdate()
+     */
+    private function fetchFiles($input)
+    {
+        $fh = array();
+        $url = array();
+        $conn = array();
+
+        // Build the single cURL handles and add them to a multi handle
+        $mh = curl_multi_init();
+        
+        // Process each app 
+        for($i = 0; $i < count($input); $i++)
+        {
+            $conn[$i] = curl_init($input[$i]['url']);
+            $fh[$i] = fopen($input[$i]['localtarget'], 'wb'); 
+            
+            curl_setopt($conn[$i], CURLOPT_BINARYTRANSFER, true);
+            curl_setopt($conn[$i], CURLOPT_FILE, $fh[$i]);
+            curl_setopt($conn[$i], CURLOPT_TIMEOUT, 0);
+            curl_setopt($conn[$i], CURLOPT_FAILONERROR, 1);
+            curl_setopt($conn[$i], CURLOPT_FOLLOWLOCATION, 1); 
+            
+            curl_multi_add_handle($mh, $conn[$i]);
+        }
+        
+        $active = 0;
+        do curl_multi_exec($mh, $active);
+        while($active > 0);
+
+        // Close the handles
+        for($i = 0; $i < count($input); $i++)
+        {
+            fclose($fh[$i]);
+            curl_multi_remove_handle($mh, $conn[$i]);
+            curl_close($conn[$i]);
+        }
+        curl_multi_close($mh);
+    }
+    
+    /**
+     * A method to build query URLs out of a list of vendors
+     *
+    */
+    private function formatVendorCallback($array_item)
+    {
+        $array_item = str_replace(' ', '%20', $array_item);
+        $array_item = str_replace('http://', '', $array_item);
+        $array_item = '/'.$this->aps_version.'.atom?vendor='.$array_item.'&pageSize=100';
+		return($array_item);
+    }
+    
+    /**
+     * The main method which performs the actual crawling
+     */    
+    public function startCrawler() 
+    {
+        global $app;
+
+        try
+        {
+            // Make sure the requirements are given so that this script can execute
+            $req_ret = $this->checkRequirements();
+            if(!$req_ret) return false;
+            
+            // Execute the open task and first fetch all vendors (APS catalog API 1.1, p. 12)
+            $app->log($this->log_prefix.'Fetching data from '.$this->fetch_url);
+
+            $vendor_page = $this->fetchPage('/all-app/'); //$vendor_page = $this->fetchPage('/'.$this->aps_version.'/');
+            preg_match_all("/\<a href=\"(.+)\/\" class=\"vendor\"/i", $vendor_page, $matches);
+            $vendors = array_map('urldecode', $matches[1]);
+            if(!$vendors) throw new Exception('Unable to fetch vendors. Aborting');
+
+            // Format all vendors for further processing (i.e. typo3.org -> /1.atom?vendor=typo3.org&pageSize=100
+            //array_walk($vendors, array($this, 'formatVendorCallback'));
+			if(is_array($vendors)) {
+				foreach($vendors as $key => $array_item) {
+					$vendors[$key] = $this->formatVendorCallback($array_item);
+				}
+			}
+            
+            // Process all vendors in chunks of 50 entries
+            $vendor_chunks = array_chunk($vendors, 50);
+            //var_dump($vendor_chunks); 
+
+            // Get all known apps from the database and the highest known version
+            // Note: A dirty hack is used for numerical sorting of the VARCHAR field Version: +0 -> cast
+            // A longer but typesafe way would be: ORDER BY CAST(REPLACE(Version, '.', '') AS UNSIGNED) DESC
+            $existing_apps = $app->db->queryAllRecords("SELECT * FROM (
+                SELECT name AS Name, CONCAT(version, '-', CAST(`release` AS CHAR)) AS CurrentVersion 
+                FROM aps_packages ORDER BY REPLACE(version, '.', '')+0 DESC, `release` DESC
+                ) as Versions GROUP BY name");
+            //var_dump($existing_apps); 
+            
+            // Used for statistics later
+            $apps_in_repo = 0; 
+            $apps_updated = 0;
+            $apps_downloaded = 0;
+            
+            $apps_to_dl = array();
+            
+            for($i = 0; $i < count($vendor_chunks); $i++)
+            {
+                // Fetch all apps for the current chunk of vendors
+                $apps = $this->fetchPage($vendor_chunks[$i]);
+                
+                for($j = 0; $j < count($apps); $j++)
+                {
+                    // Before parsing, make sure it's worth the work by checking if at least one app exists
+                    $apps_count = substr_count($apps[$j], '<opensearch:totalResults>0</opensearch:totalResults>');
+                    if($apps_count == 0) // obviously this vendor provides one or more apps
+                    {
+                        // Rename namespaces and register them 
+                        $xml = str_replace("xmlns=", "ns=", $apps[$j]);
+                        $sxe = new SimpleXMLElement($xml);
+                        $namespaces = $sxe->getDocNamespaces(true);
+                        foreach($namespaces as $ns => $url) $sxe->registerXPathNamespace($ns, $url);
+                        
+                        // Fetching values of interest
+                        $app_name = parent::getXPathValue($sxe, 'entry[position()=1]/a:name');
+                        $app_version = parent::getXPathValue($sxe, 'entry[position()=1]/a:version');
+                        $app_release = parent::getXPathValue($sxe, 'entry[position()=1]/a:release');
+                        
+                        // Find out a (possibly) existing package version
+                        $ex_ver = '';
+						/*
+                        array_walk($existing_apps, 
+                            create_function('$v, $k, $ex_ver', 'if($v["Name"] == "'.$app_name.'") $ex_ver = $v["CurrentVersion"];'), &$ex_ver);
+                        */
+						if(is_array($existing_apps)) {
+							foreach($existing_apps as $k => $v) {
+								if($v["Name"] == $app_name) $ex_ver = $v["CurrentVersion"];
+							}
+						}
+						
+                        $new_ver = $app_version.'-'.$app_release;
+                        $local_intf_folder = $this->interface_pkg_dir.'/'.$app_name.'-'.$new_ver.'.app.zip/';
+
+                        // Proceed if a newer or at least equal version has been found with server mode or 
+                        // interface mode is activated and there are no valid APP-META.xml and PKG_URL existing yet
+                        if((!$this->interface_mode && version_compare($new_ver, $ex_ver) >= 0) || ($this->interface_mode && (!file_exists($local_intf_folder.'APP-META.xml') || filesize($local_intf_folder.'APP-META.xml') == 0 || !file_exists($local_intf_folder.'PKG_URL') || filesize($local_intf_folder.'PKG_URL') == 0))){
+                            // Check if we already have an old version of this app
+                            if(!empty($ex_ver) && version_compare($new_ver, $ex_ver) == 1) $apps_updated++; 
+
+                            $app_dl = parent::getXPathValue($sxe, "entry[position()=1]/link[@a:type='aps']/@href");
+                            $app_filesize = parent::getXPathValue($sxe, "entry[position()=1]/link[@a:type='aps']/@length");
+                            $app_metafile = parent::getXPathValue($sxe, "entry[position()=1]/link[@a:type='meta']/@href");
+							
+							//$this->app_download_url_list[$app_name.'-'.$new_ver.'.app.zip'] = $app_dl;
+                            // Skip ASP.net packages because they can't be used at all
+                            $asp_handler = parent::getXPathValue($sxe, '//aspnet:handler');
+                            $asp_permissions = parent::getXPathValue($sxe, '//aspnet:permissions');
+                            $asp_version = parent::getXPathValue($sxe, '//aspnet:version');
+                            if(!empty($asp_handler) || !empty($asp_permissions) || !empty($asp_version)) continue;
+
+                            // Interface mode (download only parts)
+                            if($this->interface_mode)
+                            {
+                                // Delete an obviously out-dated version from the system and DB
+                                if(!empty($ex_ver) && version_compare($new_ver, $ex_ver) == 1)
+                                {
+                                    $old_folder = $this->interface_pkg_dir.'/'.$app_name.'-'.$ex_ver.'.app.zip';
+                                    if(file_exists($old_folder)) $this->removeDirectory($old_folder);
+                                    
+									/*
+                                    $app->db->query("UPDATE aps_packages SET package_status = '".PACKAGE_OUTDATED."' WHERE name = '".
+                                        $app->db->quote($app_name)."' AND CONCAT(version, '-', CAST(`release` AS CHAR)) = '".
+                                        $app->db->quote($ex_ver)."';");
+									*/
+									$tmp = $app->db->queryOneRecord("SELECT id FROM aps_packages WHERE name = '".
+                                        $app->db->quote($app_name)."' AND CONCAT(version, '-', CAST(`release` AS CHAR)) = '".
+                                        $app->db->quote($ex_ver)."';");
+									$app->db->datalogUpdate('aps_packages', "package_status = ".PACKAGE_OUTDATED, 'id', $tmp['id']);
+									unset($tmp);
+                                }
+                                
+                                // Create the local folder if not yet existing
+                                if(!file_exists($local_intf_folder)) @mkdir($local_intf_folder, 0777, true);
+								
+								// Save the package URL in an extra file because it's not part of the APP-META.xml file
+								@file_put_contents($local_intf_folder.'PKG_URL', $app_dl);
+                                
+                                // Download the meta file
+                                $local_metafile = $local_intf_folder.'APP-META.xml';
+                                if(!file_exists($local_metafile) || filesize($local_metafile) == 0) 
+                                {
+                                    $apps_to_dl[] = array('name' => 'APP-META.xml', 
+                                                          'url' => $app_metafile, 
+                                                          'filesize' => 0, 
+                                                          'localtarget' => $local_metafile);
+                                    $apps_downloaded++;
+                                }
+                                
+                                // Download package license
+                                $license = parent::getXPathValue($sxe, "entry[position()=1]/link[@a:type='eula']/@href");
+                                if($license != '')
+                                {
+                                    $local_license = $local_intf_folder.'LICENSE';
+                                    if(!file_exists($local_license) || filesize($local_license) == 0)
+                                    {
+                                        $apps_to_dl[] = array('name' => basename($license), 
+                                                              'url' => $license, 
+                                                              'filesize' => 0, 
+                                                              'localtarget' => $local_license);
+                                    }
+                                }
+                                
+                                // Download package icon
+                                $icon = parent::getXPathValue($sxe, "entry[position()=1]/link[@a:type='icon']/@href");
+                                if($icon != '')
+                                {
+                                    $local_icon = $local_intf_folder.basename($icon);
+                                    if(!file_exists($local_icon) || filesize($local_icon) == 0)
+                                    {
+                                        $apps_to_dl[] = array('name' => basename($icon), 
+                                                              'url' => $icon, 
+                                                              'filesize' => 0, 
+                                                              'localtarget' => $local_icon);
+                                    }
+                                }
+                                
+                                // Download available screenshots
+                                $screenshots = parent::getXPathValue($sxe, "entry[position()=1]/link[@a:type='screenshot']", true);
+                                if(!empty($screenshots))
+                                {
+                                    foreach($screenshots as $screen)
+                                    {
+                                        $local_screen = $local_intf_folder.basename($screen['href']);
+                                        if(!file_exists($local_screen) || filesize($local_screen) == 0)
+                                        {
+                                            $apps_to_dl[] = array('name' => basename($screen['href']), 
+                                                                  'url' => $screen['href'], 
+                                                                  'filesize' => 0, 
+                                                                  'localtarget' => $local_screen);
+                                        }
+                                    }
+                                }
+                            }
+                            else // Server mode (download whole ZIP archive)
+                            {
+                                // Delete an obviously out-dated version from the system
+                                if(!empty($ex_ver) && version_compare($new_ver, $ex_ver) == 1)
+                                {
+                                    $old_file = $this->packages_dir.'/'.$app_name.'-'.$ex_ver.'.app.zip';
+                                    if(file_exists($old_file)) $this->removeDirectory($old_file);
+                                }
+                                
+                                // Attention: $new_ver can also be == $ex_ver (according to version_compare >= 0)
+                                $local_zip = $this->packages_dir.'/'.$app_name.'-'.$new_ver.'.app.zip';
+                            
+                                // Before re-downloading a file, make sure it's not yet existing on HDD (due to DB inconsistency)
+                                if((file_exists($local_zip) && (filesize($local_zip) == $app_filesize)) === false)
+                                {
+                                    $apps_to_dl[] = array('name' => $app_name, 
+                                                          'url' => $app_dl, 
+                                                          'filesize' => $app_filesize, 
+                                                          'localtarget' => $local_zip);
+                                    $apps_downloaded++;
+                                }
+                            }
+                        }
+                        
+                        unset($sxe);
+                        $apps_in_repo++;
+                    }
+                }
+                //var_dump($apps);
+                
+                // For memory reasons, unset the current vendor and his apps
+                unset($apps);
+            }
+            
+            // Shuffle the download array (in order to compensate unexpected php aborts)
+            shuffle($apps_to_dl);
+            
+            // After collecting all provisioned apps, download them
+            $apps_to_dl_chunks = array_chunk($apps_to_dl, 10);
+
+            for($i = 0; $i < count($apps_to_dl_chunks); $i++)
+            {
+                $this->fetchFiles($apps_to_dl_chunks[$i]);
+                
+                // Check the integrity of all downloaded files
+                // but exclude cases where no filesize is available (i.e. screenshot or metafile download)
+                for($j = 0; $j < count($apps_to_dl_chunks[$i]); $j++)
+                {
+                    if($apps_to_dl_chunks[$i][$j]['filesize'] != 0 &&
+                       $apps_to_dl_chunks[$i][$j]['filesize'] != filesize($apps_to_dl_chunks[$i][$j]['localtarget']))
+                    {
+                            $app->log($this->log_prefix.' The filesize of the package "'.
+                                $apps_to_dl_chunks[$i][$j]['name'].'" is wrong. Download failure?', LOGLEVEL_WARN);
+                    }
+                }
+            }
+            
+            $app->log($this->log_prefix.'Processed '.$apps_in_repo.
+                ' apps from the repo. Downloaded '.$apps_updated.
+                ' updates, '.$apps_downloaded.' new apps');
+        }
+        catch(Exception $e)
+        {
+            $app->log($this->log_prefix.$e->getMessage(), LOGLEVEL_ERROR);
+            return false;
+        }
+    }
+    
+    /**
+     * Read in all possible packages from the interface packages folder and 
+     * check if they are not ASP.net code (as this can't be processed).
+     * 
+     * Note: There's no need to check if the packages to register are newer
+     * than those in the database because this already happended in startCrawler()
+     */
+    public function parseFolderToDB()
+    {
+        global $app;
+        
+        try
+        {
+            // This method must be used in interface mode
+            if(!$this->interface_mode) return false; 
+            
+            $pkg_list = array();
+        
+            // Read in every package having a correct filename
+            $temp_handle = @dir($this->interface_pkg_dir);
+            if(!$temp_handle) throw new Exception('The temp directory is not accessible');
+            while($folder = $temp_handle->read()) 
+                if(substr($folder, -8) == '.app.zip') $pkg_list[] = $folder;
+            $temp_handle->close();
+            
+            // If no packages are available -> exception (because at this point there should exist packages)
+            if(empty($pkg_list)) throw new Exception('No packages to read in');
+            
+            // Get registered packages and mark non-existant packages with an error code to omit the install
+            $existing_packages = array();
+            $path_query = $app->db->queryAllRecords('SELECT path AS Path FROM aps_packages;');
+            foreach($path_query as $path) $existing_packages[] = $path['Path']; 
+            $diff = array_diff($existing_packages, $pkg_list);
+            foreach($diff as $todelete) {
+                /*$app->db->query("UPDATE aps_packages SET package_status = '".PACKAGE_ERROR_NOMETA."' 
+                    WHERE path = '".$app->db->quote($todelete)."';");*/
+				$tmp = $app->db->queryOneRecord("SELECT id FROM aps_packages WHERE path = '".$app->db->quote($todelete)."';");
+				$app->db->datalogUpdate('aps_packages', "package_status = ".PACKAGE_ERROR_NOMETA, 'id', $tmp['id']);
+				unset($tmp);
+			}
+            
+            // Register all new packages
+            $new_packages = array_diff($pkg_list, $existing_packages);
+            foreach($new_packages as $pkg)
+            {
+                // Load in meta file if existing and register its namespaces
+                $metafile = $this->interface_pkg_dir.'/'.$pkg.'/APP-META.xml';
+                if(!file_exists($metafile)) 
+                {
+                    $app->log($this->log_prefix.'Cannot read metadata from '.$pkg, LOGLEVEL_ERROR);
+                    continue;
+                }
+        
+                $metadata = file_get_contents($metafile);
+                $metadata = str_replace("xmlns=", "ns=", $metadata);
+                $sxe = new SimpleXMLElement($metadata);
+                $namespaces = $sxe->getDocNamespaces(true);
+                foreach($namespaces as $ns => $url) $sxe->registerXPathNamespace($ns, $url);
+                
+                // Insert the new package
+                $pkg_name = parent::getXPathValue($sxe, 'name');
+                $pkg_category = parent::getXPathValue($sxe, '//category');
+                $pkg_version = parent::getXPathValue($sxe, 'version');
+                $pkg_release = parent::getXPathValue($sxe, 'release');
+				//$pkg_url = $this->app_download_url_list[$pkg];
+				$pkg_url = @file_get_contents($this->interface_pkg_dir.'/'.$pkg.'/PKG_URL');
+                
+				/*
+                $app->db->query("INSERT INTO `aps_packages` 
+                    (`path`, `name`, `category`, `version`, `release`, `package_status`) VALUES 
+                    ('".$app->db->quote($pkg)."', '".$app->db->quote($pkg_name)."',
+                    '".$app->db->quote($pkg_category)."', '".$app->db->quote($pkg_version)."',
+                    ".$app->db->quote($pkg_release).", ".PACKAGE_ENABLED.");");
+				*/
+				// Insert only if data is complete
+				if($pkg != '' && $pkg_name != '' && $pkg_category != '' && $pkg_version != '' && $pkg_release != '' && $pkg_url){
+					$insert_data = "(`path`, `name`, `category`, `version`, `release`, `package_url`, `package_status`) VALUES 
+                    ('".$app->db->quote($pkg)."', '".$app->db->quote($pkg_name)."',
+                    '".$app->db->quote($pkg_category)."', '".$app->db->quote($pkg_version)."',
+                    ".$app->db->quote($pkg_release).", '".$app->db->quote($pkg_url)."', ".PACKAGE_ENABLED.");";
+				
+					$app->db->datalogInsert('aps_packages', $insert_data, 'id');
+				} else {
+					if(file_exists($this->interface_pkg_dir.'/'.$pkg)) $this->removeDirectory($this->interface_pkg_dir.'/'.$pkg);
+				}
+            }
+        }
+        catch(Exception $e)
+        {
+            $app->log($this->log_prefix.$e->getMessage(), LOGLEVEL_ERROR);
+			$app->error($e->getMessage());
+            return false;
+        }
+    }
+	
+	/**
+     * Add missing package URLs to database
+     */
+    public function fixURLs()
+    {
+        global $app;
+        
+        try
+        {
+            // This method must be used in interface mode
+            if(!$this->interface_mode) return false; 
+            
+            $incomplete_pkgs = $app->db->queryAllRecords("SELECT * FROM aps_packages WHERE package_url = ''");
+			if(is_array($incomplete_pkgs) && !empty($incomplete_pkgs)){
+				foreach($incomplete_pkgs as $incomplete_pkg){
+					$pkg_url = @file_get_contents($this->interface_pkg_dir.'/'.$incomplete_pkg['path'].'/PKG_URL');
+					if($pkg_url != ''){
+						$app->db->datalogUpdate('aps_packages', "package_url = '".$pkg_url."'", 'id', $incomplete_pkg['id']);
+					}
+				}
+			}
+        }
+        catch(Exception $e)
+        {
+            $app->log($this->log_prefix.$e->getMessage(), LOGLEVEL_ERROR);
+			$app->error($e->getMessage());
+            return false;
+        }
+    }
+}
 ?>
\ No newline at end of file
diff --git a/interface/lib/classes/aps_guicontroller.inc.php b/interface/lib/classes/aps_guicontroller.inc.php
index 5a5cbe9a7e13b0d29a7841ee690d8b21380eb209..5d1c79fc493d11cf8298897d447ec06e695a48ae 100644
--- a/interface/lib/classes/aps_guicontroller.inc.php
+++ b/interface/lib/classes/aps_guicontroller.inc.php
@@ -728,9 +728,8 @@ class ApsGUIController extends ApsBase
             // Using parse_url() to filter malformed URLs
             $path = dirname(parse_url($_SERVER['PHP_SELF'], PHP_URL_PATH)).'/'.
                     basename($this->interface_pkg_dir).'/'.$pkg['path'].'/'.basename((string)$icon);
-	    // nginx: if $_SERVER['PHP_SELF'] is doubled, remove /sites/aps_packagedetails_show.php from beginning of path
-	    $path = preg_replace('@^/sites/aps_packagedetails_show.php(.*)@', '$1', $path);
-
+			// nginx: if $_SERVER['PHP_SELF'] is doubled, remove /sites/aps_packagedetails_show.php from beginning of path
+			$path = preg_replace('@^/sites/aps_packagedetails_show.php(.*)@', '$1', $path);
             $pkg['Icon'] = $path;
         }
         else $pkg['Icon'] = '';
@@ -744,8 +743,8 @@ class ApsGUIController extends ApsBase
                 // Using parse_url() to filter malformed URLs
                 $path = dirname(parse_url($_SERVER['PHP_SELF'], PHP_URL_PATH)).'/'.
                         basename($this->interface_pkg_dir).'/'.$pkg['path'].'/'.basename((string)$screen['path']);
-		// nginx: if $_SERVER['PHP_SELF'] is doubled, remove /sites/aps_packagedetails_show.php from beginning of path
-		$path = preg_replace('@^/sites/aps_packagedetails_show.php(.*)@', '$1', $path);
+				// nginx: if $_SERVER['PHP_SELF'] is doubled, remove /sites/aps_packagedetails_show.php from beginning of path		
+				$path = preg_replace('@^/sites/aps_packagedetails_show.php(.*)@', '$1', $path);
 
                 $pkg['Screenshots'][] = array('ScreenPath' => $path,
                                               'ScreenDescription' => htmlspecialchars(trim((string)$screen->description)));
@@ -843,4 +842,4 @@ class ApsGUIController extends ApsBase
         return $pkg;
     }
 }
-?>
+?>
\ No newline at end of file
diff --git a/interface/lib/classes/custom_datasource.inc.php b/interface/lib/classes/custom_datasource.inc.php
index 17aa7a295219b514aa5de01cd9823d94834bc7f6..35bf7d55dc29f63b30cb6cf0f0b3bf40cd1607a1 100644
--- a/interface/lib/classes/custom_datasource.inc.php
+++ b/interface/lib/classes/custom_datasource.inc.php
@@ -105,6 +105,9 @@ class custom_datasource {
 			case 'default_dnsserver':
 				$field = 'dns_server';
 			break;
+			case 'default_slave_dnsserver':
+				$field = 'dns_server';
+			break;
 			case 'default_fileserver':
 				$field = 'file_server';
 			break;
diff --git a/interface/lib/classes/idn/empty.dir b/interface/lib/classes/idn/empty.dir
new file mode 100644
index 0000000000000000000000000000000000000000..95ba9ef37cca69318bcba17e67cd44ae84bd41e1
--- /dev/null
+++ b/interface/lib/classes/idn/empty.dir
@@ -0,0 +1 @@
+This empty directory is needed by ISPConfig.
diff --git a/interface/lib/classes/listform.inc.php b/interface/lib/classes/listform.inc.php
index 197c406483ba9e01423b09a0a70a32062a803d27..ef3a52f868dc2d11c1c4e53df14399d0baba4279 100644
--- a/interface/lib/classes/listform.inc.php
+++ b/interface/lib/classes/listform.inc.php
@@ -199,9 +199,10 @@ class listform {
 			$_SESSION['search']['limit'] = $app->functions->intval($_POST['search_limit']);
 		}
 		
-		if(preg_match('{^[0-9]$}',$_SESSION['search']['limit'])){
-			$_SESSION['search']['limit'] = 15;
-		}
+		//if(preg_match('{^[0-9]$}',$_SESSION['search']['limit'])){
+		//	$_SESSION['search']['limit'] = 15;
+		//}
+		if(intval($_SESSION['search']['limit']) < 1) $_SESSION['search']['limit'] = 15;
 
         //* Get Config variables
         $list_name          = $this->listDef['name'];
diff --git a/interface/lib/classes/plugin_backuplist.inc.php b/interface/lib/classes/plugin_backuplist.inc.php
index 2e0fdc5d3baf78707770406a7d564358bd3efa18..a527f233ee31a8170417e79c079d5f66b0423630 100644
--- a/interface/lib/classes/plugin_backuplist.inc.php
+++ b/interface/lib/classes/plugin_backuplist.inc.php
@@ -57,7 +57,12 @@ class plugin_backuplist extends plugin_base {
 					
 					//* check if the user is  owner of the parent domain
 					$domain_backup = $app->db->queryOneRecord("SELECT parent_domain_id FROM web_backup WHERE backup_id = ".$backup_id);
-					if(!$app->tform->checkOwnerPermisssions($this->dataRecord["parent_domain_id"])){
+					
+                    $check_perm = 'u';
+                    if($_GET['backup_action'] == 'download') $check_perm = 'r'; // only check read permissions on download, not update permissions
+                    
+					$get_domain = $app->db->queryOneRecord("SELECT domain_id FROM web_domain WHERE domain_id = ".$app->functions->intval($domain_backup["parent_domain_id"])." AND ".$app->tform->getAuthSQL($check_perm));
+					if(empty($get_domain) || !$get_domain) {
 						$app->error($app->tform->lng('no_domain_perm'));
 					}
 					
diff --git a/interface/lib/classes/remoting_lib.inc.php b/interface/lib/classes/remoting_lib.inc.php
index 0c40a8626265db2f9f2cec2bdcffa65099d1d6fc..7ecc6633620d7ae851d11cdbbf2ee2cea187d0f3 100644
--- a/interface/lib/classes/remoting_lib.inc.php
+++ b/interface/lib/classes/remoting_lib.inc.php
@@ -785,7 +785,7 @@ class remoting_lib {
                 } else {
                         if($primary_id != 0) {
                                 // update client permissions only if client_id > 0
-								if($this->formDef['auth'] == 'yes' && $this->client_id > 0 && $this->sys_userid > 0 && $this->sys_default_group > 0) {
+								if($this->formDef['auth'] == 'yes' && $this->client_id > 0) {
 									$sql_update .= '`sys_userid` = '.$this->sys_userid.', ';
 									$sql_update .= '`sys_groupid` = '.$this->sys_default_group.', ';
 								}
diff --git a/interface/lib/classes/simplepie.inc.php b/interface/lib/classes/simplepie.inc.php
index d6d2045ec0c4269a2edbdcc0ae2aeabdace02e85..4fcb2c3a7ba92d869d32e940e79408f57c878f20 100644
--- a/interface/lib/classes/simplepie.inc.php
+++ b/interface/lib/classes/simplepie.inc.php
@@ -9200,7 +9200,7 @@ class SimplePie_Misc
 		return $return;
 	}
 
-	function element_implode($element)
+	static function element_implode($element)
 	{
 		$full = "<$element[tag]";
 		foreach ($element['attribs'] as $key => $value)
@@ -10879,7 +10879,7 @@ class SimplePie_Misc
 	 * @param string $data Input data
 	 * @return string Output data
 	 */
-	function entities_decode($data)
+	static function entities_decode($data)
 	{
 		$decoder = new SimplePie_Decode_HTML_Entities($data);
 		return $decoder->parse();
diff --git a/interface/lib/classes/tform.inc.php b/interface/lib/classes/tform.inc.php
index f4ea0d7de138876990e56abd9abf1b572d56160b..7cefb223c355e90a24ab4f30d600966be500bbe4 100644
--- a/interface/lib/classes/tform.inc.php
+++ b/interface/lib/classes/tform.inc.php
@@ -7,14 +7,14 @@ All rights reserved.
 Redistribution and use in source and binary forms, with or without modification,
 are permitted provided that the following conditions are met:
 
-	* Redistributions of source code must retain the above copyright notice,
-	  this list of conditions and the following disclaimer.
-	* Redistributions in binary form must reproduce the above copyright notice,
-	  this list of conditions and the following disclaimer in the documentation
-	  and/or other materials provided with the distribution.
-	* Neither the name of ISPConfig nor the names of its contributors
-	  may be used to endorse or promote products derived from this software without
-	  specific prior written permission.
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of ISPConfig nor the names of its contributors
+      may be used to endorse or promote products derived from this software without
+      specific prior written permission.
 
 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
@@ -60,250 +60,250 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 class tform {
 
-		/**
-		* Definition of the database table (array)
-		* @var tableDef
-		*/
-		var $tableDef;
-
-		/**
-		* Private
-		* @var action
-		*/
-		var $action;
-
-		/**
-		* Table name (String)
-		* @var table_name
-		*/
-		var $table_name;
-
-		/**
-		* Debug Variable
-		* @var debug
-		*/
-		var $debug = 0;
-
-		/**
-		* name of the primary field of the database table (string)
-		* @var table_index
-		*/
-		var $table_index;
-
-		/**
-		* contains the error messages
-		* @var errorMessage
-		*/
-		var $errorMessage = '';
-
-		var $dateformat = "d.m.Y";
-		var $formDef = array();
-		var $wordbook;
-		var $module;
-		var $primary_id;
+        /**
+        * Definition of the database table (array)
+        * @var tableDef
+        */
+        var $tableDef;
+
+        /**
+        * Private
+        * @var action
+        */
+        var $action;
+
+        /**
+        * Table name (String)
+        * @var table_name
+        */
+        var $table_name;
+
+        /**
+        * Debug Variable
+        * @var debug
+        */
+        var $debug = 0;
+
+        /**
+        * name of the primary field of the database table (string)
+        * @var table_index
+        */
+        var $table_index;
+
+        /**
+        * contains the error messages
+        * @var errorMessage
+        */
+        var $errorMessage = '';
+
+        var $dateformat = "d.m.Y";
+    	var $formDef = array();
+        var $wordbook;
+        var $module;
+        var $primary_id;
 		var $diffrec = array();
 
-		/**
-		* Loading of the table definition
-		*
-		* @param file: path to the form definition file
-		* @return true
-		*/
-		/*
-		function loadTableDef($file) {
-				global $app,$conf;
-
-				include_once($file);
-				$this->tableDef = $table;
-				$this->table_name = $table_name;
-				$this->table_index = $table_index;
-				return true;
-		}
-		*/
-
-	function loadFormDef($file,$module = '') {
-				global $app,$conf;
-
-				include($file);
-				$this->formDef = $form;
-
-				$this->module = $module;
+        /**
+        * Loading of the table definition
+        *
+        * @param file: path to the form definition file
+        * @return true
+        */
+        /*
+        function loadTableDef($file) {
+                global $app,$conf;
+
+                include_once($file);
+                $this->tableDef = $table;
+                $this->table_name = $table_name;
+                $this->table_index = $table_index;
+                return true;
+        }
+        */
+
+    function loadFormDef($file,$module = '') {
+                global $app,$conf;
+
+                include($file);
+                $this->formDef = $form;
+
+                $this->module = $module;
 				$wb = array();
-
+				
 				include_once(ISPC_ROOT_PATH.'/lib/lang/'.$_SESSION['s']['language'].'.lng');
-
+				
 				if(is_array($wb)) $wb_global = $wb;
-
-				if($module == '') {
+				
+                if($module == '') {
 					$lng_file = "lib/lang/".$_SESSION["s"]["language"]."_".$this->formDef["name"].".lng";
 					if(!file_exists($lng_file)) $lng_file = "lib/lang/en_".$this->formDef["name"].".lng";
 					include($lng_file);
-				} else {
+                } else {
 					$lng_file = "../$module/lib/lang/".$_SESSION["s"]["language"]."_".$this->formDef["name"].".lng";
 					if(!file_exists($lng_file)) $lng_file = "../$module/lib/lang/en_".$this->formDef["name"].".lng";
 					include($lng_file);
-				}
+                }
 
 				if(is_array($wb_global)) {
 					$wb = $app->functions->array_merge($wb_global,$wb);
 				}
 				if(isset($wb_global)) unset($wb_global);
-
-				$this->wordbook = $wb;
-
+				
+                $this->wordbook = $wb;
+				
 				$this->dateformat = $app->lng('conf_format_dateshort');
 
-				return true;
-		}
+                return true;
+        }
 
 
-		/**
-		* Converts the data in the array to human readable format
-		* Datatype conversion e.g. to show the data in lists
-		*
-		* @param record
-		* @return record
-		*/
-		function decode($record,$tab) {
-				global $conf, $app;
+        /**
+        * Converts the data in the array to human readable format
+        * Datatype conversion e.g. to show the data in lists
+        *
+        * @param record
+        * @return record
+        */
+        function decode($record,$tab) {
+                global $conf, $app;
 				if(!is_array($this->formDef['tabs'][$tab])) $app->error("Tab does not exist or the tab is empty (TAB: $tab).");
-				$new_record = '';
+                $new_record = '';
 				$table_idx = $this->formDef['db_table_idx'];
 				if(isset($record[$table_idx])) $new_record[$table_idx] = $app->functions->intval($record[$table_idx ]);
-
+				
 				if(is_array($record)) {
 						foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) {
-
+                                
 								//* Apply filter to record value.
 								if(isset($field['filters']) && is_array($field['filters'])) {
 									$record[$key] = $this->filterField($key, (isset($record[$key]))?$record[$key]:'', $field['filters'], 'SHOW');
 								}
-
+								
 								switch ($field['datatype']) {
-								case 'VARCHAR':
-										$new_record[$key] = $record[$key];
-								break;
-
-								case 'TEXT':
-										$new_record[$key] = $record[$key];
-								break;
+                                case 'VARCHAR':
+                                        $new_record[$key] = $record[$key];
+                                break;
 
-								case 'DATETSTAMP':
-										if($record[$key] > 0) {
-												$new_record[$key] = date($this->dateformat,$record[$key]);
-										}
-								break;
+                                case 'TEXT':
+                                        $new_record[$key] = $record[$key];
+                                break;
 
+                                case 'DATETSTAMP':
+                                        if($record[$key] > 0) {
+                                                $new_record[$key] = date($this->dateformat,$record[$key]);
+                                        }
+                                break;
+								
 								case 'DATE':
-										if($record[$key] != '' && $record[$key] != '0000-00-00') {
+                                        if($record[$key] != '' && $record[$key] != '0000-00-00') {
 												$tmp = explode('-',$record[$key]);
-												$new_record[$key] = date($this->dateformat,mktime(0, 0, 0, $tmp[1]  , $tmp[2], $tmp[0]));
-										}
-								break;
-
-								case 'INTEGER':
-										$new_record[$key] = $app->functions->intval($record[$key]);
-								break;
-
-								case 'DOUBLE':
-										$new_record[$key] = $record[$key];
-								break;
-
-								case 'CURRENCY':
-										$new_record[$key] = $app->functions->currency_format($record[$key]);
-								break;
-
-								default:
-										$new_record[$key] = $record[$key];
-								}
-						}
-
-				}
-
-		return $new_record;
-		}
-
-		/**
-		* Get the key => value array of a form filled from a datasource definitiom
-		*
-		* @param field = array with field definition
-		* @param record = Dataset as array
-		* @return key => value array for the value field of a form
-		*/
-
-		function getDatasourceData($field, $record) {
-				global $app;
+                                                $new_record[$key] = date($this->dateformat,mktime(0, 0, 0, $tmp[1]  , $tmp[2], $tmp[0]));
+                                        }
+                                break;
 
-				$values = array();
+                                case 'INTEGER':
+                                        $new_record[$key] = $app->functions->intval($record[$key]);
+                                break;
 
-				if($field["datasource"]["type"] == 'SQL') {
+                                case 'DOUBLE':
+                                        $new_record[$key] = $record[$key];
+                                break;
 
-						// Preparing SQL string. We will replace some
-						// common placeholders
-						$querystring = $field["datasource"]["querystring"];
-						$querystring = str_replace("{USERID}",$_SESSION["s"]["user"]["userid"],$querystring);
-						$querystring = str_replace("{GROUPID}",$_SESSION["s"]["user"]["default_group"],$querystring);
-						$querystring = str_replace("{GROUPS}",$_SESSION["s"]["user"]["groups"],$querystring);
-						$table_idx = $this->formDef['db_table_idx'];
+                                case 'CURRENCY':
+                                        $new_record[$key] = $app->functions->currency_format($record[$key]);
+                                break;
 
+                                default:
+                                        $new_record[$key] = $record[$key];
+                                }
+                        }
+
+                }
+				
+        return $new_record;
+        }
+
+        /**
+        * Get the key => value array of a form filled from a datasource definitiom
+        *
+        * @param field = array with field definition
+        * @param record = Dataset as array
+        * @return key => value array for the value field of a form
+        */
+
+        function getDatasourceData($field, $record) {
+                global $app;
+
+                $values = array();
+
+                if($field["datasource"]["type"] == 'SQL') {
+
+                        // Preparing SQL string. We will replace some
+                        // common placeholders
+                        $querystring = $field["datasource"]["querystring"];
+                        $querystring = str_replace("{USERID}",$_SESSION["s"]["user"]["userid"],$querystring);
+                        $querystring = str_replace("{GROUPID}",$_SESSION["s"]["user"]["default_group"],$querystring);
+                        $querystring = str_replace("{GROUPS}",$_SESSION["s"]["user"]["groups"],$querystring);
+                        $table_idx = $this->formDef['db_table_idx'];
+						
 						$tmp_recordid = (isset($record[$table_idx]))?$record[$table_idx]:0;
-						$querystring = str_replace("{RECORDID}",$tmp_recordid,$querystring);
+                        $querystring = str_replace("{RECORDID}",$tmp_recordid,$querystring);
 						unset($tmp_recordid);
-
-						$querystring = str_replace("{AUTHSQL}",$this->getAuthSQL('r'),$querystring);
-
-						// Getting the records
-						$tmp_records = $app->db->queryAllRecords($querystring);
-						if($app->db->errorMessage != '') die($app->db->errorMessage);
-						if(is_array($tmp_records)) {
-								$key_field = $field["datasource"]["keyfield"];
-								$value_field = $field["datasource"]["valuefield"];
-								foreach($tmp_records as $tmp_rec) {
-										$tmp_id = $tmp_rec[$key_field];
-										$values[$tmp_id] = $tmp_rec[$value_field];
-								}
-						}
-				}
-
-				if($field["datasource"]["type"] == 'CUSTOM') {
-						// Calls a custom class to validate this record
-						if($field["datasource"]['class'] != '' and $field["datasource"]['function'] != '') {
-								$datasource_class = $field["datasource"]['class'];
-								$datasource_function = $field["datasource"]['function'];
-								$app->uses($datasource_class);
-								$values = $app->$datasource_class->$datasource_function($field, $record);
-						} else {
-								$this->errorMessage .= "Custom datasource class or function is empty<br />\r\n";
-						}
-				}
-
-				if(isset($field['filters']) && is_array($field['filters'])) {
-					$new_values = array();
-					foreach($values as $index => $value) {
-						$new_index = $this->filterField($index, $index, $field['filters'], 'SHOW');
-						$new_values[$new_index] = $this->filterField($index, (isset($values[$index]))?$values[$index]:'', $field['filters'], 'SHOW');
-					}
-					$values = $new_values;
-					unset($new_values);
-					unset($new_index);
-				}
-
-				return $values;
-
-		}
-
+						
+                        $querystring = str_replace("{AUTHSQL}",$this->getAuthSQL('r'),$querystring);
+						
+                        // Getting the records
+                        $tmp_records = $app->db->queryAllRecords($querystring);
+                        if($app->db->errorMessage != '') die($app->db->errorMessage);
+                        if(is_array($tmp_records)) {
+                                $key_field = $field["datasource"]["keyfield"];
+                                $value_field = $field["datasource"]["valuefield"];
+                                foreach($tmp_records as $tmp_rec) {
+                                        $tmp_id = $tmp_rec[$key_field];
+                                        $values[$tmp_id] = $tmp_rec[$value_field];
+                                }
+                        }
+                }
+
+                if($field["datasource"]["type"] == 'CUSTOM') {
+                        // Calls a custom class to validate this record
+                        if($field["datasource"]['class'] != '' and $field["datasource"]['function'] != '') {
+                                $datasource_class = $field["datasource"]['class'];
+                                $datasource_function = $field["datasource"]['function'];
+                                $app->uses($datasource_class);
+                                $values = $app->$datasource_class->$datasource_function($field, $record);
+                        } else {
+                                $this->errorMessage .= "Custom datasource class or function is empty<br />\r\n";
+                        }
+                }
+                
+                if(isset($field['filters']) && is_array($field['filters'])) {
+                    $new_values = array();
+                    foreach($values as $index => $value) {
+                        $new_index = $this->filterField($index, $index, $field['filters'], 'SHOW');
+                        $new_values[$new_index] = $this->filterField($index, (isset($values[$index]))?$values[$index]:'', $field['filters'], 'SHOW');
+                    }
+                    $values = $new_values;
+                    unset($new_values);
+                    unset($new_index);
+                }
+
+                return $values;
+
+        }
+		
 		//* If the parameter 'valuelimit' is set
 		function applyValueLimit($limit,$values) {
-
+			
 			global $app;
-
+			
 			$limit_parts = explode(':',$limit);
-
+			
 			//* values are limited to a comma separated list
 			if($limit_parts[0] == 'list') {
 				$allowed = explode(',',$limit_parts[1]);
 			}
-
+			
 			//* values are limited to a field in the client settings
 			if($limit_parts[0] == 'client') {
 				if($_SESSION["s"]["user"]["typ"] == 'admin') {
@@ -314,7 +314,7 @@ class tform {
 					$allowed = explode(',',$client['lm']);
 				}
 			}
-
+			
 			//* values are limited to a field in the reseller settings
 			if($limit_parts[0] == 'reseller') {
 				if($_SESSION["s"]["user"]["typ"] == 'admin') {
@@ -326,12 +326,12 @@ class tform {
 					//echo "SELECT parent_client_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id";
 					//* If the client belongs to a reseller, we will check against the reseller Limit too
 					if($client['parent_client_id'] != 0) {
-
+				
 						//* first we need to know the groups of this reseller
 						$tmp = $app->db->queryOneRecord("SELECT userid, groups FROM sys_user WHERE client_id = ".$client['parent_client_id']);
 						$reseller_groups = $tmp["groups"];
 						$reseller_userid = $tmp["userid"];
-
+				
 						// Get the limits of the reseller of the logged in client
 						$client_group_id = $_SESSION["s"]["user"]["default_group"];
 						$reseller = $app->db->queryOneRecord("SELECT ".$limit_parts[1]." as lm FROM client WHERE client_id = ".$client['parent_client_id']);
@@ -341,7 +341,7 @@ class tform {
 					}
 				} // end if admin
 			} // end if reseller
-
+			
 			//* values are limited to a field in the system settings
 			if($limit_parts[0] == 'system') {
 				$app->uses('getconf');
@@ -349,296 +349,296 @@ class tform {
 				$tmp_key = $limit_parts[2];
 				$allowed = $tmp_conf[$tmp_key];
 			}
-
+			
 			$values_new = array();
 			foreach($values as $key => $val) {
 				if(in_array($key,$allowed)) $values_new[$key] = $val;
 			}
-
+			
 			return $values_new;
 		}
 
 
-		/**
-		* Prepare the data record to show the data in a form.
-		*
-		* @param record = Datensatz als Array
-		* @param action = NEW oder EDIT
-		* @return record
-		*/
-		function getHTML($record, $tab, $action = 'NEW') {
-
-				global $app;
+        /**
+        * Prepare the data record to show the data in a form.
+        *
+        * @param record = Datensatz als Array
+        * @param action = NEW oder EDIT
+        * @return record
+        */
+        function getHTML($record, $tab, $action = 'NEW') {
 
-				$this->action = $action;
+                global $app;
 
-				if(!is_array($this->formDef)) $app->error("No form definition found.");
-				if(!is_array($this->formDef['tabs'][$tab])) $app->error("The tab is empty or does not exist (TAB: $tab).");
+                $this->action = $action;
 
-				$new_record = array();
-				if($action == 'EDIT') {
-						$record = $this->decode($record,$tab);
-						if(is_array($record)) {
-								foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) {
+                if(!is_array($this->formDef)) $app->error("No form definition found.");
+                if(!is_array($this->formDef['tabs'][$tab])) $app->error("The tab is empty or does not exist (TAB: $tab).");
 
-										if(isset($record[$key])) {
+                $new_record = array();
+                if($action == 'EDIT') {
+                        $record = $this->decode($record,$tab);
+                        if(is_array($record)) {
+                                foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) {
+								
+                                        if(isset($record[$key])) {
 											$val = $record[$key];
 										} else {
 											$val = '';
 										}
 
-										// If Datasource is set, get the data from there
-										if(isset($field['datasource']) && is_array($field['datasource'])) {
+                                        // If Datasource is set, get the data from there
+                                        if(isset($field['datasource']) && is_array($field['datasource'])) {
 												if(is_array($field["value"])) {
 													//$field["value"] = array_merge($field["value"],$this->getDatasourceData($field, $record));
 													$field["value"] = $app->functions->array_merge($field["value"],$this->getDatasourceData($field, $record));
 												} else {
-													$field["value"] = $this->getDatasourceData($field, $record);
+                                                	$field["value"] = $this->getDatasourceData($field, $record);
 												}
-										}
-
+                                        }
+										
 										// If a limitation for the values is set
 										if(isset($field['valuelimit']) && is_array($field["value"])) {
 											$field["value"] = $this->applyValueLimit($field['valuelimit'],$field["value"]);
 										}
 
-										switch ($field['formtype']) {
-										case 'SELECT':
+                                        switch ($field['formtype']) {
+                                        case 'SELECT':
 												$out = '';
-												if(is_array($field['value'])) {
-														foreach($field['value'] as $k => $v) {
-																$selected = ($k == $val)?' SELECTED':'';
+                                                if(is_array($field['value'])) {
+                                                        foreach($field['value'] as $k => $v) {
+                                                                $selected = ($k == $val)?' SELECTED':'';
 																if(!empty($this->wordbook[$v]))
 																	$v = $this->wordbook[$v];
-																$out .= "<option value='$k'$selected>".$this->lng($v)."</option>\r\n";
-														}
-												}
-												$new_record[$key] = $out;
-										break;
-										case 'MULTIPLE':
-												if(is_array($field['value'])) {
-
-														// Split
-														$vals = explode($field['separator'],$val);
-
-														// write HTML
-														$out = '';
-														foreach($field['value'] as $k => $v) {
-
-																$selected = '';
-																foreach($vals as $tvl) {
-																		if(trim($tvl) == trim($k)) $selected = ' SELECTED';
-																}
-
-																$out .= "<option value='$k'$selected>$v</option>\r\n";
-														}
-												}
-												$new_record[$key] = $out;
-										break;
-
-										case 'PASSWORD':
-												$new_record[$key] = '';
-										break;
-
-										case 'CHECKBOX':
-												$checked = ($val == $field['value'][1])?' CHECKED':'';
-												$new_record[$key] = "<input name=\"".$key."\" id=\"".$key."\" value=\"".$field['value'][1]."\" type=\"checkbox\" $checked />\r\n";
-										break;
-
-										case 'CHECKBOXARRAY':
-												if(is_array($field['value'])) {
-
-														// aufsplitten ergebnisse
-														$vals = explode($field['separator'],$val);
-
-														// HTML schreiben
-														$out = '';
-														$elementNo = 0;
-														foreach($field['value'] as $k => $v) {
-
-																$checked = '';
-																foreach($vals as $tvl) {
-																		if(trim($tvl) == trim($k)) $checked = ' CHECKED';
-																}
-																// $out .= "<label for=\"".$key."[]\" class=\"inlineLabel\"><input name=\"".$key."[]\" id=\"".$key."[]\" value=\"$k\" type=\"checkbox\" $checked /> $v</label>\r\n";
+                                                                $out .= "<option value='$k'$selected>".$this->lng($v)."</option>\r\n";
+                                                        }
+                                                }
+                                                $new_record[$key] = $out;
+                                        break;
+                                        case 'MULTIPLE':
+                                                if(is_array($field['value'])) {
+
+                                                        // Split
+                                                        $vals = explode($field['separator'],$val);
+
+                                                        // write HTML
+                                                        $out = '';
+                                                        foreach($field['value'] as $k => $v) {
+
+                                                                $selected = '';
+                                                                foreach($vals as $tvl) {
+                                                                        if(trim($tvl) == trim($k)) $selected = ' SELECTED';
+                                                                }
+
+                                                                $out .= "<option value='$k'$selected>$v</option>\r\n";
+                                                        }
+                                                }
+                                                $new_record[$key] = $out;
+                                        break;
+
+                                        case 'PASSWORD':
+                                                $new_record[$key] = '';
+                                        break;
+
+                                        case 'CHECKBOX':
+                                                $checked = ($val == $field['value'][1])?' CHECKED':'';
+                                                $new_record[$key] = "<input name=\"".$key."\" id=\"".$key."\" value=\"".$field['value'][1]."\" type=\"checkbox\" $checked />\r\n";
+                                        break;
+
+                                        case 'CHECKBOXARRAY':
+                                                if(is_array($field['value'])) {
+
+                                                        // aufsplitten ergebnisse
+                                                        $vals = explode($field['separator'],$val);
+
+                                                        // HTML schreiben
+                                                        $out = '';
+                                                        $elementNo = 0;
+                                                        foreach($field['value'] as $k => $v) {
+
+                                                                $checked = '';
+                                                                foreach($vals as $tvl) {
+                                                                        if(trim($tvl) == trim($k)) $checked = ' CHECKED';
+                                                                }
+                                                                // $out .= "<label for=\"".$key."[]\" class=\"inlineLabel\"><input name=\"".$key."[]\" id=\"".$key."[]\" value=\"$k\" type=\"checkbox\" $checked /> $v</label>\r\n";
 																$out .= "<label for=\"".$key.$elementNo."\" class=\"inlineLabel\"><input name=\"".$key."[]\" id=\"".$key.$elementNo."\" value=\"$k\" type=\"checkbox\" $checked /> $v</label><br/>\r\n";
-																$elementNo++;
-														}
-												}
-												$new_record[$key] = $out;
-										break;
-
-										case 'RADIO':
-												if(is_array($field['value'])) {
-
-														// HTML schreiben
-														$out = '';
-														$elementNo = 0;
-														foreach($field['value'] as $k => $v) {
-																$checked = ($k == $val)?' CHECKED':'';
-																//$out .= "<label for=\"".$key."[]\" class=\"inlineLabel\"><input name=\"".$key."[]\" id=\"".$key."[]\" value=\"$k\" type=\"radio\" $checked/> $v</label>\r\n";
+                                                                $elementNo++;
+                                                        }
+                                                }
+                                                $new_record[$key] = $out;
+                                        break;
+
+                                        case 'RADIO':
+                                                if(is_array($field['value'])) {
+
+                                                        // HTML schreiben
+                                                        $out = '';
+                                                        $elementNo = 0;
+                                                        foreach($field['value'] as $k => $v) {
+                                                                $checked = ($k == $val)?' CHECKED':'';
+                                                                //$out .= "<label for=\"".$key."[]\" class=\"inlineLabel\"><input name=\"".$key."[]\" id=\"".$key."[]\" value=\"$k\" type=\"radio\" $checked/> $v</label>\r\n";
 																$out .= "<label for=\"".$key.$elementNo."\" class=\"inlineLabel\"><input name=\"".$key."[]\" id=\"".$key.$elementNo."\" value=\"$k\" type=\"radio\" $checked/> $v </label>\r\n";
-																$elementNo++;
-														}
-												}
-												$new_record[$key] = $out;
-										break;
-
-										case 'DATETIME':
-												if (strtotime($val) !== false) {
-													$dt_value = $val;
-												} elseif ( isset($field['default']) && (strtotime($field['default']) !== false) ) {
-													$dt_value = $field['default'];
-												} else {
-													$dt_value = 0;
-												}
-
-												$display_seconds = (isset($field['display_seconds']) && $field['display_seconds'] == true) ? true : false;
-
-												$new_record[$key] = $this->_getDateTimeHTML($key, $dt_value, $display_seconds);
-										break;
-
-										default:
+                                                                $elementNo++;
+                                                        }
+                                                }
+                                                $new_record[$key] = $out;
+                                        break;
+                                        
+                                        case 'DATETIME':
+                                        		if (strtotime($val) !== false) {
+                                        			$dt_value = $val;
+                                        		} elseif ( isset($field['default']) && (strtotime($field['default']) !== false) ) {
+                                        			$dt_value = $field['default'];
+                                        		} else {
+                                        			$dt_value = 0;
+                                        		}
+                                        		
+                                        		$display_seconds = (isset($field['display_seconds']) && $field['display_seconds'] == true) ? true : false;
+		                              
+		                                        $new_record[$key] = $this->_getDateTimeHTML($key, $dt_value, $display_seconds);
+                                        break;
+
+                                        default:
 											if(isset($record[$key])) {
-												$new_record[$key] = htmlspecialchars($record[$key]);
+                                                $new_record[$key] = htmlspecialchars($record[$key]);
 											} else {
 												$new_record[$key] = '';
 											}
-										}
-								}
-						}
-				} else {
-						// Action: NEW
-						foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) {
-
-								// If Datasource is set, get the data from there
-								if(@is_array($field['datasource'])) {
-									if(is_array($field["value"])) {
+                                        }
+                                }
+                        }
+                } else {
+                        // Action: NEW
+                        foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) {
+
+                                // If Datasource is set, get the data from there
+                                if(@is_array($field['datasource'])) {
+                                	if(is_array($field["value"])) {
 										$field["value"] = $app->functions->array_merge($field["value"],$this->getDatasourceData($field, $record));
 									} else {
-										$field["value"] = $this->getDatasourceData($field, $record);
+                                    	$field["value"] = $this->getDatasourceData($field, $record);
 									}
-								}
-
+                                }
+								
 								// If a limitation for the values is set
 								if(isset($field['valuelimit']) && is_array($field["value"])) {
 									$field["value"] = $this->applyValueLimit($field['valuelimit'],$field["value"]);
 								}
 
-								switch ($field['formtype']) {
-								case 'SELECT':
-										if(is_array($field['value'])) {
-												$out = '';
-												foreach($field['value'] as $k => $v) {
-													$selected = ($k == $field["default"])?' SELECTED':'';
-													$out .= "<option value='$k'$selected>".$this->lng($v)."</option>\r\n";
-												}
-										}
-										if(isset($out)) $new_record[$key] = $out;
-								break;
-								case 'MULTIPLE':
-												if(is_array($field['value'])) {
+                                switch ($field['formtype']) {
+                                case 'SELECT':
+                                        if(is_array($field['value'])) {
+                                                $out = '';
+                                                foreach($field['value'] as $k => $v) {
+                                                    $selected = ($k == $field["default"])?' SELECTED':'';
+                                                    $out .= "<option value='$k'$selected>".$this->lng($v)."</option>\r\n";
+                                                }
+                                        }
+                                        if(isset($out)) $new_record[$key] = $out;
+                                break;
+                                case 'MULTIPLE':
+                                                if(is_array($field['value'])) {
 
-														// aufsplitten ergebnisse
-														$vals = explode($field['separator'],$val);
+                                                        // aufsplitten ergebnisse
+                                                        $vals = explode($field['separator'],$val);
 
-														// HTML schreiben
-														$out = '';
-														foreach($field['value'] as $k => $v) {
+                                                        // HTML schreiben
+                                                        $out = '';
+                                                        foreach($field['value'] as $k => $v) {
 
-																$out .= "<option value='$k'>$v</option>\r\n";
-														}
-												}
-												$new_record[$key] = $out;
-										break;
+                                                                $out .= "<option value='$k'>$v</option>\r\n";
+                                                        }
+                                                }
+                                                $new_record[$key] = $out;
+                                        break;
 
                                 case 'PASSWORD':
                                         //$new_record[$key] = '';
 										$new_record[$key] = htmlspecialchars($field['default']);
                                 break;
 
-								case 'CHECKBOX':
-										// $checked = (empty($field["default"]))?'':' CHECKED';
-															$checked = ($field["default"] == $field['value'][1])?' CHECKED':'';
-										$new_record[$key] = "<input name=\"".$key."\" id=\"".$key."\" value=\"".$field['value'][1]."\" type=\"checkbox\" $checked />\r\n";
-								break;
+                                case 'CHECKBOX':
+                                        // $checked = (empty($field["default"]))?'':' CHECKED';
+										                    $checked = ($field["default"] == $field['value'][1])?' CHECKED':'';
+                                        $new_record[$key] = "<input name=\"".$key."\" id=\"".$key."\" value=\"".$field['value'][1]."\" type=\"checkbox\" $checked />\r\n"; 
+                                break;
 
-								case 'CHECKBOXARRAY':
-										if(is_array($field['value'])) {
+                                case 'CHECKBOXARRAY':
+                                        if(is_array($field['value'])) {
 
-												// aufsplitten ergebnisse
-												$vals = explode($field['separator'],$field["default"]);
+                                                // aufsplitten ergebnisse
+                                                $vals = explode($field['separator'],$field["default"]);
 
-												// HTML schreiben
-												$out = '';
-												$elementNo = 0;
-												foreach($field['value'] as $k => $v) {
+                                                // HTML schreiben
+                                                $out = '';
+                                                $elementNo = 0;
+                                                foreach($field['value'] as $k => $v) {
 
-														$checked = '';
-														foreach($vals as $tvl) {
-																if(trim($tvl) == trim($k)) $checked = ' CHECKED';
-														}
-														// $out .= "<label for=\"".$key."[]\" class=\"inlineLabel\"><input name=\"".$key."[]\" id=\"".$key."[]\" value=\"$k\" type=\"checkbox\" $checked /> $v</label>\r\n";
+                                                        $checked = '';
+                                                        foreach($vals as $tvl) {
+                                                                if(trim($tvl) == trim($k)) $checked = ' CHECKED';
+                                                        }
+                                                        // $out .= "<label for=\"".$key."[]\" class=\"inlineLabel\"><input name=\"".$key."[]\" id=\"".$key."[]\" value=\"$k\" type=\"checkbox\" $checked /> $v</label>\r\n";
 														$out .= "<label for=\"".$key.$elementNo."\" class=\"inlineLabel\"><input name=\"".$key."[]\" id=\"".$key.$elementNo."\" value=\"$k\" type=\"checkbox\" $checked /> $v</label> &nbsp;\r\n";
-														$elementNo++;
-												}
-										}
-										$new_record[$key] = $out;
-								break;
+                                                        $elementNo++;
+                                                }
+                                        }
+                                        $new_record[$key] = $out;
+                                break;
 
-								case 'RADIO':
-										if(is_array($field['value'])) {
+                                case 'RADIO':
+                                        if(is_array($field['value'])) {
 
-												// HTML schreiben
-												$out = '';
-												$elementNo = 0;
-												foreach($field['value'] as $k => $v) {
-														$checked = ($k == $field["default"])?' CHECKED':'';
-														//$out .= "<label for=\"".$key."[]\" class=\"inlineLabel\"><input name=\"".$key."[]\" id=\"".$key."[]\" value=\"$k\" type=\"radio\" $checked/> $v</label>\r\n";
+                                                // HTML schreiben
+                                                $out = '';
+                                                $elementNo = 0;
+                                                foreach($field['value'] as $k => $v) {
+                                                        $checked = ($k == $field["default"])?' CHECKED':'';
+                                                        //$out .= "<label for=\"".$key."[]\" class=\"inlineLabel\"><input name=\"".$key."[]\" id=\"".$key."[]\" value=\"$k\" type=\"radio\" $checked/> $v</label>\r\n";
 														$out .= "<label for=\"".$key.$elementNo."\" class=\"inlineLabel\"><input name=\"".$key."[]\" id=\"".$key.$elementNo."\" value=\"$k\" type=\"radio\" $checked/> $v</label>\r\n";
-														$elementNo++;
-												}
-										}
-										$new_record[$key] = $out;
-								break;
-
-								case 'DATETIME':
-										$dt_value = (isset($field['default'])) ? $field['default'] : 0;
-										$display_seconds = (isset($field['display_seconds']) && $field['display_seconds'] == true) ? true : false;
-
-										$new_record[$key] = $this->_getDateTimeHTML($key, $dt_value, $display_seconds);
-								break;
+                                                        $elementNo++;
+                                                }
+                                        }
+                                        $new_record[$key] = $out;
+                                break;
+                                
+                                case 'DATETIME':
+                                        $dt_value = (isset($field['default'])) ? $field['default'] : 0;
+                                        $display_seconds = (isset($field['display_seconds']) && $field['display_seconds'] == true) ? true : false;
+                              
+                                        $new_record[$key] = $this->_getDateTimeHTML($key, $dt_value, $display_seconds);
+                                break;
 
-								default:
-										$new_record[$key] = htmlspecialchars($field['default']);
-								}
-						}
+                                default:
+                                        $new_record[$key] = htmlspecialchars($field['default']);
+                                }
+                        }
 
-				}
+                }
 
-				if($this->debug == 1) $this->dbg($new_record);
+                if($this->debug == 1) $this->dbg($new_record);
 
-				return $new_record;
-		}
+                return $new_record;
+        }
 
-		/**
-		* Rewrite the record data to be stored in the database
-		* and check values with regular expressions.
-		*
-		* @param record = Datensatz als Array
-		* @return record
-		*/
-		function encode($record,$tab,$dbencode = true) {
+        /**
+        * Rewrite the record data to be stored in the database
+        * and check values with regular expressions.
+        *
+        * @param record = Datensatz als Array
+        * @return record
+        */
+        function encode($record,$tab,$dbencode = true) {
 			global $app;
+			
+                if(!is_array($this->formDef['tabs'][$tab])) $app->error("Tab is empty or does not exist (TAB: $tab).");
+                //$this->errorMessage = '';
 
-				if(!is_array($this->formDef['tabs'][$tab])) $app->error("Tab is empty or does not exist (TAB: $tab).");
-				//$this->errorMessage = '';
-
-				if(is_array($record)) {
-						foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) {
-
+                if(is_array($record)) {
+                        foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) {
+								
 								//* Apply filter to record value
-								if(isset($field['filters']) && is_array($field['filters'])) {
+                                if(isset($field['filters']) && is_array($field['filters'])) {
 									$record[$key] = $this->filterField($key, (isset($record[$key]))?$record[$key]:'', $field['filters'], 'SAVE');
 								}
 								//* Validate record value
@@ -646,31 +646,31 @@ class tform {
 									$this->validateField($key, (isset($record[$key]))?$record[$key]:'', $field['validators']);
 								}
 
-								switch ($field['datatype']) {
-								case 'VARCHAR':
-										if(!@is_array($record[$key])) {
+                                switch ($field['datatype']) {
+                                case 'VARCHAR':
+                                        if(!@is_array($record[$key])) {
 												$new_record[$key] = (isset($record[$key]))?$record[$key]:'';
-										} else {
-												$new_record[$key] = implode($field['separator'],$record[$key]);
-										}
-								break;
-								case 'TEXT':
-										if(!is_array($record[$key])) {
-												$new_record[$key] = $record[$key];
-										} else {
-												$new_record[$key] = implode($field['separator'],$record[$key]);
-										}
-								break;
-								case 'DATETSTAMP':
-										if($record[$key] > 0) {
-												list($tag,$monat,$jahr) = explode('.',$record[$key]);
-												$new_record[$key] = mktime(0,0,0,$monat,$tag,$jahr);
-										} else {
+                                        } else {
+                                                $new_record[$key] = implode($field['separator'],$record[$key]);
+                                        }
+                                break;
+                                case 'TEXT':
+                                        if(!is_array($record[$key])) {
+                                                $new_record[$key] = $record[$key];
+                                        } else {
+                                                $new_record[$key] = implode($field['separator'],$record[$key]);
+                                        }
+                                break;
+                                case 'DATETSTAMP':
+                                        if($record[$key] > 0) {
+                                                list($tag,$monat,$jahr) = explode('.',$record[$key]);
+                                                $new_record[$key] = mktime(0,0,0,$monat,$tag,$jahr);
+                                        } else {
 											$new_record[$key] = 0;
 										}
-								break;
+                                break;
 								case 'DATE':
-										if($record[$key] != '' && $record[$key] != '0000-00-00') {
+                                        if($record[$key] != '' && $record[$key] != '0000-00-00') {
 												if(function_exists('date_parse_from_format')) {
 													$date_parts = date_parse_from_format($this->dateformat,$record[$key]);
 													//list($tag,$monat,$jahr) = explode('.',$record[$key]);
@@ -683,67 +683,67 @@ class tform {
 													$tmp = strtotime($record[$key]);
 													$new_record[$key] = date('Y-m-d',$tmp);
 												}
-										} else {
+                                        } else {
 											$new_record[$key] = '0000-00-00';
 										}
-								break;
-								case 'INTEGER':
+                                break;
+                                case 'INTEGER':
 										$new_record[$key] = (isset($record[$key]))?$app->functions->intval($record[$key]):0;
-										//if($new_record[$key] != $record[$key]) $new_record[$key] = $field['default'];
-										//if($key == 'refresh') die($record[$key]);
-								break;
-								case 'DOUBLE':
-										$new_record[$key] = $record[$key];
-								break;
-								case 'CURRENCY':
-										$new_record[$key] = str_replace(",",".",$record[$key]);
-								break;
-
-								case 'DATETIME':
-										if (is_array($record[$key]))
-										{
-											$filtered_values = array_map(create_function('$item','return (int)$item;'), $record[$key]);
-											extract($filtered_values, EXTR_PREFIX_ALL, '_dt');
-
-											if ($_dt_day != 0 && $_dt_month != 0 && $_dt_year != 0) {
-												$new_record[$key] = date( 'Y-m-d H:i:s', mktime($_dt_hour, $_dt_minute, $_dt_second, $_dt_month, $_dt_day, $_dt_year) );
-											}
-										}
-								break;
-								}
-
-								// The use of the field value is deprecated, use validators instead
-								if(isset($field['regex']) && $field['regex'] != '') {
-										// Enable that "." matches also newlines
-										$field['regex'] .= 's';
-										if(!preg_match($field['regex'], $record[$key])) {
-												$errmsg = $field['errmsg'];
-												$this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
-										}
-								}
-
+                                        //if($new_record[$key] != $record[$key]) $new_record[$key] = $field['default'];
+                                        //if($key == 'refresh') die($record[$key]);
+                                break;
+                                case 'DOUBLE':
+                                        $new_record[$key] = $record[$key];
+                                break;
+                                case 'CURRENCY':
+                                        $new_record[$key] = str_replace(",",".",$record[$key]);
+                                break;
+                                
+                                case 'DATETIME':
+                                		if (is_array($record[$key]))
+                                		{
+	                                		$filtered_values = array_map(create_function('$item','return (int)$item;'), $record[$key]);
+                                			extract($filtered_values, EXTR_PREFIX_ALL, '_dt');
+                                			
+                                			if ($_dt_day != 0 && $_dt_month != 0 && $_dt_year != 0) {
+	                                			$new_record[$key] = date( 'Y-m-d H:i:s', mktime($_dt_hour, $_dt_minute, $_dt_second, $_dt_month, $_dt_day, $_dt_year) );
+	                                		}
+                                		}
+                                break;
+                                }
+
+                                // The use of the field value is deprecated, use validators instead
+                                if(isset($field['regex']) && $field['regex'] != '') {
+                                        // Enable that "." matches also newlines
+                                        $field['regex'] .= 's';
+                                        if(!preg_match($field['regex'], $record[$key])) {
+                                                $errmsg = $field['errmsg'];
+                                                $this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
+                                        }
+                                }
+								
 								//* Add slashes to all records, when we encode data which shall be inserted into mysql.
 								if($dbencode == true) $new_record[$key] = $app->db->quote($new_record[$key]);
-						}
-				}
-				return $new_record;
-		}
-
+                        }
+                }
+                return $new_record;
+        }
+		
 		/**
-		* process the filters for a given field.
-		*
-		* @param field_name = Name of the field
-		* @param field_value = value of the field
-		* @param filters = Array of filters
+        * process the filters for a given field.
+        *
+        * @param field_name = Name of the field
+        * @param field_value = value of the field
+        * @param filters = Array of filters
 		* @param filter_event = 'SAVE'or 'SHOW'
-		* @return record
-		*/
+        * @return record
+        */
 
-		function filterField($field_name, $field_value, $filters, $filter_event) {
+        function filterField($field_name, $field_value, $filters, $filter_event) {
 
 			global $app;
 			$returnval = $field_value;
-
+				
 			//* Loop trough all filters
 			foreach($filters as $filter) {
 				if($filter['event'] == $filter_event) {
@@ -766,177 +766,179 @@ class tform {
 					}
 				}
 			}
-			return $returnval;
-		}
-
-		/**
-		* process the validators for a given field.
-		*
-		* @param field_name = Name of the field
-		* @param field_value = value of the field
-		* @param validatoors = Array of validators
-		* @return record
-		*/
-
-		function validateField($field_name, $field_value, $validators) {
-
-				global $app;
-
+            return $returnval;
+        }
+
+        /**
+        * process the validators for a given field.
+        *
+        * @param field_name = Name of the field
+        * @param field_value = value of the field
+        * @param validatoors = Array of validators
+        * @return record
+        */
+
+        function validateField($field_name, $field_value, $validators) {
+
+                global $app;
+				
 				$escape = '`';
-
-				// loop trough the validators
-				foreach($validators as $validator) {
-
-						switch ($validator['type']) {
-								case 'REGEX':
-										$validator['regex'] .= 's';
-										if(!preg_match($validator['regex'], $field_value)) {
-												$errmsg = $validator['errmsg'];
-												if(isset($this->wordbook[$errmsg])) {
-													$this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
+				
+                // loop trough the validators
+                foreach($validators as $validator) {
+
+                        switch ($validator['type']) {
+                                case 'REGEX':
+                                        $validator['regex'] .= 's';
+                                        if(!preg_match($validator['regex'], $field_value)) {
+                                                $errmsg = $validator['errmsg'];
+                                                if(isset($this->wordbook[$errmsg])) {
+                                                	$this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
 												} else {
 													$this->errorMessage .= $errmsg."<br />\r\n";
 												}
-										}
-								break;
-								case 'UNIQUE':
+                                        }
+                                break;
+                                case 'UNIQUE':
 										if($validator['allowempty'] != 'y') $validator['allowempty'] = 'n';
 										if($validator['allowempty'] == 'n' || ($validator['allowempty'] == 'y' && $field_value != '')){
 											if($this->action == 'NEW') {
-												$num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM ".$escape.$this->formDef['db_table'].$escape. " WHERE $field_name = '".$app->db->quote($field_value)."'");
-												if($num_rec["number"] > 0) {
-														$errmsg = $validator['errmsg'];
+                                                $num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM ".$escape.$this->formDef['db_table'].$escape. " WHERE $field_name = '".$app->db->quote($field_value)."'");
+                                                if($num_rec["number"] > 0) {
+                                                        $errmsg = $validator['errmsg'];
 														if(isset($this->wordbook[$errmsg])) {
-															$this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
+                                                        	$this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
 														} else {
 															$this->errorMessage .= $errmsg."<br />\r\n";
 														}
-												}
+                                                }
 											} else {
-												$num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM ".$escape.$this->formDef['db_table'].$escape. " WHERE $field_name = '".$app->db->quote($field_value)."' AND ".$this->formDef['db_table_idx']." != ".$this->primary_id);
-												if($num_rec["number"] > 0) {
-														$errmsg = $validator['errmsg'];
-														if(isset($this->wordbook[$errmsg])) {
-															$this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
+                                                $num_rec = $app->db->queryOneRecord("SELECT count(*) as number FROM ".$escape.$this->formDef['db_table'].$escape. " WHERE $field_name = '".$app->db->quote($field_value)."' AND ".$this->formDef['db_table_idx']." != ".$this->primary_id);
+                                                if($num_rec["number"] > 0) {
+                                                        $errmsg = $validator['errmsg'];
+                                                        if(isset($this->wordbook[$errmsg])) {
+                                                        	$this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
 														} else {
 															$this->errorMessage .= $errmsg."<br />\r\n";
 														}
-												}
+                                                }
 											}
 										}
-								break;
-								case 'NOTEMPTY':
-										if(empty($field_value)) {
-												$errmsg = $validator['errmsg'];
-												if(isset($this->wordbook[$errmsg])) {
-													$this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
+                                break;
+                                case 'NOTEMPTY':
+                                        if(empty($field_value)) {
+                                                $errmsg = $validator['errmsg'];
+                                                if(isset($this->wordbook[$errmsg])) {
+                                                    $this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
 												} else {
 													$this->errorMessage .= $errmsg."<br />\r\n";
 												}
-										}
-								break;
-								case 'ISEMAIL':
-									if(function_exists('filter_var')) {
+                                        }
+                                break;
+                                case 'ISEMAIL':
+                                    if(function_exists('filter_var')) {
 										if(filter_var($field_value, FILTER_VALIDATE_EMAIL) === false) {
 											$errmsg = $validator['errmsg'];
-											if(isset($this->wordbook[$errmsg])) {
-												$this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
+                                            if(isset($this->wordbook[$errmsg])) {
+                                                $this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
 											} else {
 												$this->errorMessage .= $errmsg."<br />\r\n";
 											}
-										}
+                                        }
 									} else {
 										if(!preg_match("/^\w+[\w\.\-\+]*\w{0,}@\w+[\w.-]*\w+\.[a-zA-Z0-9\-]{2,30}$/i", $field_value)) {
-												$errmsg = $validator['errmsg'];
-												if(isset($this->wordbook[$errmsg])) {
-													$this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
+                                                $errmsg = $validator['errmsg'];
+                                                if(isset($this->wordbook[$errmsg])) {
+                                                    $this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
 												} else {
 													$this->errorMessage .= $errmsg."<br />\r\n";
 												}
-										}
+                                        }
 									}
-								break;
-								case 'ISINT':
+                                break;
+                                case 'ISINT':
 									if(function_exists('filter_var') && $field_value < 2147483647) {
 										if($field_value != '' && filter_var($field_value, FILTER_VALIDATE_INT) === false) {
 											$errmsg = $validator['errmsg'];
 											if(isset($this->wordbook[$errmsg])) {
-												$this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
+                                                $this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
 											} else {
 												$this->errorMessage .= $errmsg."<br />\r\n";
 											}
-										}
+                                        }
 									} else {
-										$tmpval = $app->functions->intval($field_value);
-										if($tmpval === 0 and !empty($field_value)) {
-												$errmsg = $validator['errmsg'];
-												if(isset($this->wordbook[$errmsg])) {
-													$this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
+                                        $tmpval = $app->functions->intval($field_value);
+                                        if($tmpval === 0 and !empty($field_value)) {
+                                                $errmsg = $validator['errmsg'];
+                                                if(isset($this->wordbook[$errmsg])) {
+                                                    $this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
 												} else {
 													$this->errorMessage .= $errmsg."<br />\r\n";
 												}
-										}
+                                        }
 									}
-								break;
-								case 'ISPOSITIVE':
-										if(!is_numeric($field_value) || $field_value <= 0){
-										  $errmsg = $validator['errmsg'];
-										  if(isset($this->wordbook[$errmsg])) {
-											 $this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
+                                break;
+                                case 'ISPOSITIVE':
+                                        if(!is_numeric($field_value) || $field_value <= 0){
+                                          $errmsg = $validator['errmsg'];
+                                          if(isset($this->wordbook[$errmsg])) {
+                                             $this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
 										  } else {
 											 $this->errorMessage .= $errmsg."<br />\r\n";
-										  }
-										}
-								break;
-				case 'ISV6PREFIX':
-					$v6_prefix_ok = 0;
-					$explode_field_value = explode(':',$field_value);
-					if ($explode_field_value[count($explode_field_value)-1]=='' && $explode_field_value[count($explode_field_value)-2]=='' ){
-							if ( count($explode_field_value) <= 9 ) {
-									if(filter_var(substr($field_value,0,strlen($field_value)-2),FILTER_VALIDATE_IP,FILTER_FLAG_IPV6) or filter_var(substr($field_value,0,strlen($field_value)-2).'::0',FILTER_VALIDATE_IP,FILTER_FLAG_IPV6) or filter_var(substr($field_value,0,strlen($field_value)-2).':0',FILTER_VALIDATE_IP,FILTER_FLAG_IPV6) ) {
-											$v6_prefix_ok = 1;
-									}
-							}
-					} else {
-						$v6_prefix_ok = 2;
-					}
-					// check subnet against defined server-ipv6
-					$sql_v6 = $app->db->queryOneRecord("SELECT ip_address FROM server_ip WHERE ip_type = 'IPv6' AND virtualhost = 'y' LIMIT 0,1");
-					$sql_v6_explode=explode(':',$sql_v6['ip_address']);
-					if ( count($sql_v6_explode) < count($explode_field_value) && isset($sql_v6['ip_address']) )  {
-						$v6_prefix_ok = 3;
-					}
-					if($v6_prefix_ok == 0) {
-						$errmsg = $validator['errmsg'];
-					}
-					if($v6_prefix_ok == 2) {
-						$errmsg = 'IPv6 Prefix must end with ::';
-					}
-					if($v6_prefix_ok == 3) {
-						$errmsg = 'IPv6 Prefix too long (according to Server IP Addresses)';
-					}
-					if($v6_prefix_ok <> 1){
-						$this->errorMessage .= $errmsg."<br />\r\n";
-					}
+										  }
+                                        }
+                                break;
+				/*
+				case 'ISV6PREFIX':
+					$v6_prefix_ok = 0;
+					$explode_field_value = explode(':',$field_value);
+					if ($explode_field_value[count($explode_field_value)-1]=='' && $explode_field_value[count($explode_field_value)-2]=='' ){
+					        if ( count($explode_field_value) <= 9 ) {
+					                if(filter_var(substr($field_value,0,strlen($field_value)-2),FILTER_VALIDATE_IP,FILTER_FLAG_IPV6) or filter_var(substr($field_value,0,strlen($field_value)-2).'::0',FILTER_VALIDATE_IP,FILTER_FLAG_IPV6) or filter_var(substr($field_value,0,strlen($field_value)-2).':0',FILTER_VALIDATE_IP,FILTER_FLAG_IPV6) ) {
+					                        $v6_prefix_ok = 1;
+                					}
+        					}
+					} else { 
+						$v6_prefix_ok = 2; 
+					}
+					// check subnet against defined server-ipv6
+					$sql_v6 = $app->db->queryOneRecord("SELECT ip_address FROM server_ip WHERE ip_type = 'IPv6' AND virtualhost = 'y' LIMIT 0,1");
+					$sql_v6_explode=explode(':',$sql_v6['ip_address']);
+					if ( count($sql_v6_explode) < count($explode_field_value) && isset($sql_v6['ip_address']) )  { 
+						$v6_prefix_ok = 3; 
+					}
+					if($v6_prefix_ok == 0) { 
+						$errmsg = $validator['errmsg']; 
+					}
+					if($v6_prefix_ok == 2) { 
+						$errmsg = 'IPv6 Prefix must end with ::'; 
+					}
+					if($v6_prefix_ok == 3) { 
+						$errmsg = 'IPv6 Prefix too long (according to Server IP Addresses)'; 
+					}
+					if($v6_prefix_ok <> 1){
+						$this->errorMessage .= $errmsg."<br />\r\n"; 
+					}
 				break;
-								case 'ISIPV4':
-								$vip=1;
-								if(preg_match("/^[0-9]{1,3}(\.)[0-9]{1,3}(\.)[0-9]{1,3}(\.)[0-9]{1,3}$/", $field_value)){
+				*/
+								case 'ISIPV4':
+								$vip=1;
+								if(preg_match("/^[0-9]{1,3}(\.)[0-9]{1,3}(\.)[0-9]{1,3}(\.)[0-9]{1,3}$/", $field_value)){
 								$groups=explode(".",$field_value);
 								foreach($groups as $group){
 									if($group<0 OR $group>255)
 									$vip=0;
 								}
 								}else{$vip=0;}
-										if($vip==0) {
+                                        if($vip==0) {
 										$errmsg = $validator['errmsg'];
-										  if(isset($this->wordbook[$errmsg])) {
-											 $this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
+                                          if(isset($this->wordbook[$errmsg])) {
+                                             $this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n";
 										  } else {
 											 $this->errorMessage .= $errmsg."<br />\r\n";
 										  }
 										}
-								break;
+                                break;
 								case 'ISIP':
 								if($validator['allowempty'] != 'y') $validator['allowempty'] = 'n';
 								if($validator['allowempty'] == 'y' && $field_value == '') {
@@ -980,13 +982,13 @@ class tform {
 										}
 									}
 								}
-								break;
+                                break;
 								case 'RANGE':
-										//* Checks if the value is within the given range or above / below a value
+                                        //* Checks if the value is within the given range or above / below a value
 										//* Range examples: < 10 = ":10", between 2 and 10 = "2:10", above 5 = "5:".
 										$range_parts = explode(':',trim($validator['range']));
 										$ok = true;
-										if($range_parts[0] != '' && $field_value < $range_parts[0]) {
+                                        if($range_parts[0] != '' && $field_value < $range_parts[0]) {
 											$ok = false;
 										}
 										if($range_parts[1] != '' && $field_value > $range_parts[1]) {
@@ -999,76 +1001,76 @@ class tform {
 											} else {
 												$this->errorMessage .= $errmsg."<br />\r\n";
 											}
-										}
+                                        }
 										unset($range_parts);
-								break;
-								case 'CUSTOM':
-										// Calls a custom class to validate this record
-										if($validator['class'] != '' and $validator['function'] != '') {
-												$validator_class = $validator['class'];
-												$validator_function = $validator['function'];
-												$app->uses($validator_class);
-												$this->errorMessage .= $app->$validator_class->$validator_function($field_name, $field_value, $validator);
-										} else {
-												$this->errorMessage .= "Custom validator class or function is empty<br />\r\n";
-										}
-								break;
+                                break;
+                                case 'CUSTOM':
+                                        // Calls a custom class to validate this record
+                                        if($validator['class'] != '' and $validator['function'] != '') {
+                                                $validator_class = $validator['class'];
+                                                $validator_function = $validator['function'];
+                                                $app->uses($validator_class);
+                                                $this->errorMessage .= $app->$validator_class->$validator_function($field_name, $field_value, $validator);
+                                        } else {
+                                                $this->errorMessage .= "Custom validator class or function is empty<br />\r\n";
+                                        }
+                                break;
 								default:
 									$this->errorMessage .= "Unknown Validator: ".$validator['type'];
 								break;
-						}
-
-
-				}
-
-				return true;
-		}
-
-		/**
-		* Create SQL statement
-		*
-		* @param record = Datensatz als Array
-		* @param action = INSERT oder UPDATE
-		* @param primary_id
-		* @return record
-		*/
-		function getSQL($record, $tab, $action = 'INSERT', $primary_id = 0, $sql_ext_where = '') {
-
-				global $app;
-
-				// If there are no data records on the tab, return empty sql string
-				if(count($this->formDef['tabs'][$tab]['fields']) == 0) return '';
-
-				// checking permissions
-				if($this->formDef['auth'] == 'yes' && $_SESSION["s"]["user"]["typ"] != 'admin') {
-						if($action == "INSERT") {
-								if(!$this->checkPerm($primary_id,'i')) $this->errorMessage .= "Insert denied.<br />\r\n";
-						} else {
-								if(!$this->checkPerm($primary_id,'u')) $this->errorMessage .= "Update denied.<br />\r\n";
-						}
-				}
-
-				$this->action = $action;
-				$this->primary_id = $primary_id;
-
-				$record = $this->encode($record,$tab,true);
-				$sql_insert_key = '';
-				$sql_insert_val = '';
-				$sql_update = '';
-
-				if(!is_array($this->formDef)) $app->error("Form definition not found.");
-				if(!is_array($this->formDef['tabs'][$tab])) $app->error("The tab is empty or does not exist (TAB: $tab).");
-
-				// go trough all fields of the tab
-				if(is_array($record)) {
-				foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) {
-								// Wenn es kein leeres Passwortfeld ist
-								if (!($field['formtype'] == 'PASSWORD' and $record[$key] == '')) {
-										// Erzeuge Insert oder Update Quelltext
-										if($action == "INSERT") {
-												if($field['formtype'] == 'PASSWORD') {
-														$sql_insert_key .= "`$key`, ";
-														if($field['encryption'] == 'CRYPT') {
+                        }
+
+
+                }
+
+                return true;
+        }
+
+        /**
+        * Create SQL statement
+        *
+        * @param record = Datensatz als Array
+        * @param action = INSERT oder UPDATE
+        * @param primary_id
+        * @return record
+        */
+        function getSQL($record, $tab, $action = 'INSERT', $primary_id = 0, $sql_ext_where = '') {
+
+                global $app;
+
+                // If there are no data records on the tab, return empty sql string
+                if(count($this->formDef['tabs'][$tab]['fields']) == 0) return '';
+
+                // checking permissions
+                if($this->formDef['auth'] == 'yes' && $_SESSION["s"]["user"]["typ"] != 'admin') {
+                        if($action == "INSERT") {
+                                if(!$this->checkPerm($primary_id,'i')) $this->errorMessage .= "Insert denied.<br />\r\n";
+                        } else {
+                                if(!$this->checkPerm($primary_id,'u')) $this->errorMessage .= "Update denied.<br />\r\n";
+                        }
+                }
+
+                $this->action = $action;
+                $this->primary_id = $primary_id;
+
+                $record = $this->encode($record,$tab,true);
+                $sql_insert_key = '';
+                $sql_insert_val = '';
+                $sql_update = '';
+
+                if(!is_array($this->formDef)) $app->error("Form definition not found.");
+                if(!is_array($this->formDef['tabs'][$tab])) $app->error("The tab is empty or does not exist (TAB: $tab).");
+
+                // go trough all fields of the tab
+                if(is_array($record)) {
+                foreach($this->formDef['tabs'][$tab]['fields'] as $key => $field) {
+                                // Wenn es kein leeres Passwortfeld ist
+                                if (!($field['formtype'] == 'PASSWORD' and $record[$key] == '')) {
+                                        // Erzeuge Insert oder Update Quelltext
+                                        if($action == "INSERT") {
+                                                if($field['formtype'] == 'PASSWORD') {
+                                                        $sql_insert_key .= "`$key`, ";
+                                                        if($field['encryption'] == 'CRYPT') {
 																$record[$key] = $app->auth->crypt_password(stripslashes($record[$key]));
 																$sql_insert_val .= "'".$app->db->quote($record[$key])."', ";
 														} elseif ($field['encryption'] == 'MYSQL') {
@@ -1077,13 +1079,13 @@ class tform {
 																$sql_insert_val .= "'".$app->db->quote($record[$key])."', ";
 														} elseif ($field['encryption'] == 'CLEARTEXT') {
 																$sql_insert_val .= "'".$app->db->quote($record[$key])."', ";
-														} else {
-																$record[$key] = md5(stripslashes($record[$key]));
+                                                        } else {
+                                                                $record[$key] = md5(stripslashes($record[$key]));
 																$sql_insert_val .= "'".$app->db->quote($record[$key])."', ";
-														}
-
-												} elseif ($field['formtype'] == 'CHECKBOX') {
-														$sql_insert_key .= "`$key`, ";
+                                                        }
+														
+                                                } elseif ($field['formtype'] == 'CHECKBOX') {
+                                                        $sql_insert_key .= "`$key`, ";
 														if($record[$key] == '') {
 															// if a checkbox is not set, we set it to the unchecked value
 															$sql_insert_val .= "'".$field['value'][0]."', ";
@@ -1091,14 +1093,14 @@ class tform {
 														} else {
 															$sql_insert_val .= "'".$record[$key]."', ";
 														}
-												} else {
-														$sql_insert_key .= "`$key`, ";
-														$sql_insert_val .= "'".$record[$key]."', ";
-												}
-										} else {
-												if($field['formtype'] == 'PASSWORD') {
+                                                } else {
+                                                        $sql_insert_key .= "`$key`, ";
+                                                        $sql_insert_val .= "'".$record[$key]."', ";
+                                                }
+                                        } else {
+                                                if($field['formtype'] == 'PASSWORD') {
 														if(isset($field['encryption']) && $field['encryption'] == 'CRYPT') {
-																$record[$key] = $app->auth->crypt_password(stripslashes($record[$key]));
+                                                                $record[$key] = $app->auth->crypt_password(stripslashes($record[$key]));
 																$sql_update .= "`$key` = '".$app->db->quote($record[$key])."', ";
 														} elseif (isset($field['encryption']) && $field['encryption'] == 'MYSQL') {
 																$tmp = $app->db->queryOneRecord("SELECT PASSWORD('".$app->db->quote(stripslashes($record[$key]))."') as `crypted`");
@@ -1106,12 +1108,12 @@ class tform {
 																$sql_update .= "`$key` = '".$app->db->quote($record[$key])."', ";
 														} elseif (isset($field['encryption']) && $field['encryption'] == 'CLEARTEXT') {
 																$sql_update .= "`$key` = '".$app->db->quote($record[$key])."', ";
-														} else {
-																$record[$key] = md5(stripslashes($record[$key]));
+                                                        } else {
+                                                                $record[$key] = md5(stripslashes($record[$key]));
 																$sql_update .= "`$key` = '".$app->db->quote($record[$key])."', ";
-														}
-
-												} elseif ($field['formtype'] == 'CHECKBOX') {
+                                                        }
+                                                        
+                                                } elseif ($field['formtype'] == 'CHECKBOX') {
 														if($record[$key] == '') {
 															// if a checkbox is not set, we set it to the unchecked value
 															$sql_update .= "`$key` = '".$field['value'][0]."', ";
@@ -1119,343 +1121,279 @@ class tform {
 														} else {
 															$sql_update .= "`$key` = '".$record[$key]."', ";
 														}
-												} else {
-														$sql_update .= "`$key` = '".$record[$key]."', ";
-												}
-										}
-								} else {
-									// we unset the password filed, if empty to tell the datalog function
+                                                } else {
+                                                        $sql_update .= "`$key` = '".$record[$key]."', ";
+                                                }
+                                        }
+                                } else {
+									// we unset the password filed, if empty to tell the datalog function 
 									// that the password has not been changed
-									unset($record[$key]);
+								    unset($record[$key]);
 								}
-						}
-		}
-
-
-				// Add backticks for incomplete table names
-				if(stristr($this->formDef['db_table'],'.')) {
-						$escape = '';
-				} else {
-						$escape = '`';
-				}
-
-
-				if($action == "INSERT") {
-						if($this->formDef['auth'] == 'yes') {
-								// Set user and group
-								$sql_insert_key .= "`sys_userid`, ";
-								$sql_insert_val .= ($this->formDef["auth_preset"]["userid"] > 0)?"'".$this->formDef["auth_preset"]["userid"]."', ":"'".$_SESSION["s"]["user"]["userid"]."', ";
-								$sql_insert_key .= "`sys_groupid`, ";
-								$sql_insert_val .= ($this->formDef["auth_preset"]["groupid"] > 0)?"'".$this->formDef["auth_preset"]["groupid"]."', ":"'".$_SESSION["s"]["user"]["default_group"]."', ";
-								$sql_insert_key .= "`sys_perm_user`, ";
-								$sql_insert_val .= "'".$this->formDef["auth_preset"]["perm_user"]."', ";
-								$sql_insert_key .= "`sys_perm_group`, ";
-								$sql_insert_val .= "'".$this->formDef["auth_preset"]["perm_group"]."', ";
-								$sql_insert_key .= "`sys_perm_other`, ";
-								$sql_insert_val .= "'".$this->formDef["auth_preset"]["perm_other"]."', ";
-						}
-						$sql_insert_key = substr($sql_insert_key,0,-2);
-						$sql_insert_val = substr($sql_insert_val,0,-2);
-						$sql = "INSERT INTO ".$escape.$this->formDef['db_table'].$escape." ($sql_insert_key) VALUES ($sql_insert_val)";
-				} else {
+                        }
+        }
+
+
+                // Add backticks for incomplete table names
+                if(stristr($this->formDef['db_table'],'.')) {
+                        $escape = '';
+                } else {
+                        $escape = '`';
+                }
+
+
+                if($action == "INSERT") {
+                        if($this->formDef['auth'] == 'yes') {
+                                // Set user and group
+                                $sql_insert_key .= "`sys_userid`, ";
+                                $sql_insert_val .= ($this->formDef["auth_preset"]["userid"] > 0)?"'".$this->formDef["auth_preset"]["userid"]."', ":"'".$_SESSION["s"]["user"]["userid"]."', ";
+                                $sql_insert_key .= "`sys_groupid`, ";
+                                $sql_insert_val .= ($this->formDef["auth_preset"]["groupid"] > 0)?"'".$this->formDef["auth_preset"]["groupid"]."', ":"'".$_SESSION["s"]["user"]["default_group"]."', ";
+                                $sql_insert_key .= "`sys_perm_user`, ";
+                                $sql_insert_val .= "'".$this->formDef["auth_preset"]["perm_user"]."', ";
+                                $sql_insert_key .= "`sys_perm_group`, ";
+                                $sql_insert_val .= "'".$this->formDef["auth_preset"]["perm_group"]."', ";
+                                $sql_insert_key .= "`sys_perm_other`, ";
+                                $sql_insert_val .= "'".$this->formDef["auth_preset"]["perm_other"]."', ";
+                        }
+                        $sql_insert_key = substr($sql_insert_key,0,-2);
+                        $sql_insert_val = substr($sql_insert_val,0,-2);
+                        $sql = "INSERT INTO ".$escape.$this->formDef['db_table'].$escape." ($sql_insert_key) VALUES ($sql_insert_val)";
+                } else {
 					if($this->formDef['auth'] == 'yes') {
-						if($primary_id != 0) {
-								$sql_update = substr($sql_update,0,-2);
-								$sql = "UPDATE ".$escape.$this->formDef['db_table'].$escape." SET ".$sql_update." WHERE ".$this->getAuthSQL('u')." AND ".$this->formDef['db_table_idx']." = ".$primary_id;
-								if($sql_ext_where != '') $sql .= " and ".$sql_ext_where;
-						} else {
-								$app->error("Primary ID fehlt!");
-						}
+                        if($primary_id != 0) {
+                                $sql_update = substr($sql_update,0,-2);
+                                $sql = "UPDATE ".$escape.$this->formDef['db_table'].$escape." SET ".$sql_update." WHERE ".$this->getAuthSQL('u')." AND ".$this->formDef['db_table_idx']." = ".$primary_id;
+                                if($sql_ext_where != '') $sql .= " and ".$sql_ext_where;
+                        } else {
+                                $app->error("Primary ID fehlt!");
+                        }
 					} else {
 						if($primary_id != 0) {
-								$sql_update = substr($sql_update,0,-2);
-								$sql = "UPDATE ".$escape.$this->formDef['db_table'].$escape." SET ".$sql_update." WHERE ".$this->formDef['db_table_idx']." = ".$primary_id;
-								if($sql_ext_where != '') $sql .= " and ".$sql_ext_where;
-						} else {
-								$app->error("Primary ID fehlt!");
-						}
+                                $sql_update = substr($sql_update,0,-2);
+                                $sql = "UPDATE ".$escape.$this->formDef['db_table'].$escape." SET ".$sql_update." WHERE ".$this->formDef['db_table_idx']." = ".$primary_id;
+                                if($sql_ext_where != '') $sql .= " and ".$sql_ext_where;
+                        } else {
+                                $app->error("Primary ID fehlt!");
+                        }
 					}
 					//* return a empty string if there is nothing to update
 					if(trim($sql_update) == '') $sql = '';
-				}
+                }
 
-				return $sql;
-		}
+                return $sql;
+        }
 
-		/**
-		* Debugging arrays.
-		*
-		* @param array_data
-		*/
-		function dbg($array_data) {
+        /**
+        * Debugging arrays.
+        *
+        * @param array_data
+        */
+        function dbg($array_data) {
 
-				echo "<pre>";
-				print_r($array_data);
-				echo "</pre>";
+                echo "<pre>";
+                print_r($array_data);
+                echo "</pre>";
 
-		}
+        }
 
 
-	function showForm() {
-			global $app,$conf;
+    function showForm() {
+            global $app,$conf;
 
-		if(!is_array($this->formDef)) die("Form Definition wurde nicht geladen.");
+        if(!is_array($this->formDef)) die("Form Definition wurde nicht geladen.");
 
-				$active_tab = $this->getNextTab();
+                $active_tab = $this->getNextTab();
 
-		// go trough the tabs
-		foreach( $this->formDef["tabs"] as $key => $tab) {
+        // go trough the tabs
+        foreach( $this->formDef["tabs"] as $key => $tab) {
 
-			$tab['name'] = $key;
+            $tab['name'] = $key;
 			// Translate the title of the tab
 			$tab['title'] = $this->lng($tab['title']);
-
-			if($tab['name'] == $active_tab) {
-
-				// If module is set, then set the template path relative to the module..
-				if($this->module != '') $tab["template"] = "../".$this->module."/".$tab["template"];
-
-				// Generate the template if it does not exist yet.
-
-
-
-				if(!is_file($tab["template"])) {
-					 $app->uses('tform_tpl_generator');
-					 $app->tform_tpl_generator->buildHTML($this->formDef,$tab['name']);
-				}
-				$app->tpl->setVar('readonly_tab', (isset($tab['readonly']) && $tab['readonly'] == true));
-				$app->tpl->setInclude('content_tpl',$tab["template"]);
-				$tab["active"] = 1;
-				$_SESSION["s"]["form"]["tab"] = $tab['name'];
-			} else {
-					$tab["active"] = 0;
-			}
-
-						// Unset unused variables.
-						unset($tab["fields"]);
-						unset($tab["plugins"]);
-
-			$frmTab[] = $tab;
-		}
-
-		// setting form tabs
-		$app->tpl->setLoop("formTab", $frmTab);
-
-				// Set form action
-				$app->tpl->setVar('form_action',$this->formDef["action"]);
-				$app->tpl->setVar('form_active_tab',$active_tab);
-
-				// Set form title
-				$form_hint = $this->lng($this->formDef["title"]);
-				if($this->formDef["description"] != '') $form_hint .= '<div class="pageForm_description">'.$this->lng($this->formDef["description"]).'</div>';
-				$app->tpl->setVar('form_hint',$form_hint);
-
-				// Set Wordbook for this form
-
-				$app->tpl->setVar($this->wordbook);
-		}
+			
+            if($tab['name'] == $active_tab) {
+
+                // If module is set, then set the template path relative to the module..
+                if($this->module != '') $tab["template"] = "../".$this->module."/".$tab["template"];
+
+                // Generate the template if it does not exist yet.
+				
+				
+								
+                if(!is_file($tab["template"])) {
+                     $app->uses('tform_tpl_generator');
+                     $app->tform_tpl_generator->buildHTML($this->formDef,$tab['name']);
+                }
+                $app->tpl->setVar('readonly_tab', (isset($tab['readonly']) && $tab['readonly'] == true));
+                $app->tpl->setInclude('content_tpl',$tab["template"]);
+                $tab["active"] = 1;
+                $_SESSION["s"]["form"]["tab"] = $tab['name'];
+            } else {
+                    $tab["active"] = 0;
+            }
+
+                        // Unset unused variables.
+                        unset($tab["fields"]);
+                        unset($tab["plugins"]);
+
+            $frmTab[] = $tab;
+        }
+
+        // setting form tabs
+        $app->tpl->setLoop("formTab", $frmTab);
+
+                // Set form action
+                $app->tpl->setVar('form_action',$this->formDef["action"]);
+                $app->tpl->setVar('form_active_tab',$active_tab);
+
+                // Set form title
+                $form_hint = $this->lng($this->formDef["title"]);
+                if($this->formDef["description"] != '') $form_hint .= '<div class="pageForm_description">'.$this->lng($this->formDef["description"]).'</div>';
+                $app->tpl->setVar('form_hint',$form_hint);
+
+                // Set Wordbook for this form
+
+                $app->tpl->setVar($this->wordbook);
+    	}
 
 		function getDataRecord($primary_id) {
 			global $app;
 			$escape = '`';
 			$sql = "SELECT * FROM ".$escape.$this->formDef['db_table'].$escape." WHERE ".$this->formDef['db_table_idx']." = ".$primary_id." AND ".$this->getAuthSQL('r',$this->formDef['db_table']);
-			return $app->db->queryOneRecord($sql);
+            return $app->db->queryOneRecord($sql);
 		}
+		
 
-
-		function datalogSave($action,$primary_id, $record_old, $record_new) {
-				global $app,$conf;
-
+        function datalogSave($action,$primary_id, $record_old, $record_new) {
+                global $app,$conf;
+				
 				$app->db->datalogSave($this->formDef['db_table'], $action, $this->formDef['db_table_idx'], $primary_id, $record_old, $record_new);
 				return true;
-<<<<<<< .mine
-				/*
-				// Add backticks for incomplete table names.
-				if(stristr($this->formDef['db_table'],'.')) {
-						$escape = '';
-				} else {
-						$escape = '`';
-				}
-
-				$this->diffrec = array();
-
-				// Full diff records for ISPConfig, they have a different format then the simple diffrec
-				$diffrec_full = array();
-
-				if(is_array($record_old) && count($record_old) > 0) {
-						foreach($record_old as $key => $val) {
-								//if(isset($record_new[$key]) && $record_new[$key] != $val) {
-								if(!isset($record_new[$key]) || $record_new[$key] != $val) {
-									// Record has changed
-									$diffrec_full['old'][$key] = $val;
-									$diffrec_full['new'][$key] = $record_new[$key];
-									$this->diffrec[$key] = array(	'new' => $record_new[$key],
-															   		'old' => $val);
-								} else {
-									$diffrec_full['old'][$key] = $val;
-									$diffrec_full['new'][$key] = $val;
-								}
-						}
-				} elseif(is_array($record_new)) {
-						foreach($record_new as $key => $val) {
-								if(isset($record_new[$key]) && $record_old[$key] != $val) {
-									// Record has changed
-									$diffrec_full['new'][$key] = $val;
-									$diffrec_full['old'][$key] = $record_old[$key];
-									$this->diffrec[$key] = array(	'old' => @$record_old[$key],
-															   		'new' => $val);
-								} else {
-									$diffrec_full['new'][$key] = $val;
-									$diffrec_full['old'][$key] = $val;
-								}
-						}
-				}
-
-				//$this->diffrec = $diffrec;
-				// Insert the server_id, if the record has a server_id
-				$server_id = (isset($record_old["server_id"]) && $record_old["server_id"] > 0)?$record_old["server_id"]:0;
-				if(isset($record_new["server_id"])) $server_id = $record_new["server_id"];
-
-				if(count($this->diffrec) > 0) {
-						$diffstr = addslashes(serialize($diffrec_full));
-						$username = $app->db->quote($_SESSION["s"]["user"]["username"]);
-						$dbidx = $this->formDef['db_table_idx'].":".$primary_id;
-						// $action = ($action == 'INSERT')?'i':'u';
-
-						if($action == 'INSERT') $action = 'i';
-						if($action == 'UPDATE') $action = 'u';
-						if($action == 'DELETE') $action = 'd';
-						$sql = "INSERT INTO sys_datalog (dbtable,dbidx,server_id,action,tstamp,user,data) VALUES ('".$this->formDef['db_table']."','$dbidx','$server_id','$action','".time()."','$username','$diffstr')";
-						$app->db->query($sql);
-				}
-
-				return true;
-				*/
+        }
 
-=======>>>>>>> .theirs		}
-
-		function getAuthSQL($perm, $table = '') {
+        function getAuthSQL($perm, $table = '') {
 				if($_SESSION["s"]["user"]["typ"] == 'admin') {
 					return '1';
 				} else {
 					if ($table != ''){
 						$table = ' ' . $table . '.';
 					}
-					$groups = ( $_SESSION["s"]["user"]["groups"] ) ? $_SESSION["s"]["user"]["groups"] : 0;
+                	$groups = ( $_SESSION["s"]["user"]["groups"] ) ? $_SESSION["s"]["user"]["groups"] : 0;
 					$sql = '(';
-					$sql .= "(" . $table . "sys_userid = ".$_SESSION["s"]["user"]["userid"]." AND " . $table . "sys_perm_user like '%$perm%') OR  ";
-					$sql .= "(" . $table . "sys_groupid IN (".$groups.") AND " . $table ."sys_perm_group like '%$perm%') OR ";
-					$sql .= $table . "sys_perm_other like '%$perm%'";
-					$sql .= ')';
-
-					return $sql;
-				}
-		}
-
-		/*
-		This function checks if a user has the parmissions $perm for the data record with the ID $record_id
-		If record_id = 0, the the permissions are tested against the defaults of the form file.
-		*/
-		function checkPerm($record_id,$perm) {
-				global $app;
-
-				if($record_id > 0) {
-						// Add backticks for incomplete table names.
-						if(stristr($this->formDef['db_table'],'.')) {
-								$escape = '';
-						} else {
-								$escape = '`';
-						}
-
-						$sql = "SELECT ".$this->formDef['db_table_idx']." FROM ".$escape.$this->formDef['db_table'].$escape." WHERE ".$this->formDef['db_table_idx']." = ".$record_id." AND ".$this->getAuthSQL($perm);
-						if($record = $app->db->queryOneRecord($sql)) {
-								return true;
-						} else {
-								return false;
-						}
-				} else {
-						$result = false;
-						if(@$this->formDef["auth_preset"]["userid"] == $_SESSION["s"]["user"]["userid"] && stristr($perm,$this->formDef["auth_preset"]["perm_user"])) $result = true;
-						if(@$this->formDef["auth_preset"]["groupid"] == $_SESSION["s"]["user"]["groupid"] && stristr($perm,$this->formDef["auth_preset"]["perm_group"])) $result = true;
-						if(@stristr($this->formDef["auth_preset"]["perm_other"],$perm)) $result = true;
-
-						// if preset == 0, everyone can insert a record of this type
-						if($this->formDef["auth_preset"]["userid"] == 0 AND $this->formDef["auth_preset"]["groupid"] == 0 AND (@stristr($this->formDef["auth_preset"]["perm_user"],$perm) OR @stristr($this->formDef["auth_preset"]["perm_group"],$perm))) $result = true;
-
-						return $result;
+                	$sql .= "(" . $table . "sys_userid = ".$_SESSION["s"]["user"]["userid"]." AND " . $table . "sys_perm_user like '%$perm%') OR  ";
+                	$sql .= "(" . $table . "sys_groupid IN (".$groups.") AND " . $table ."sys_perm_group like '%$perm%') OR ";
+                	$sql .= $table . "sys_perm_other like '%$perm%'";
+                	$sql .= ')';
 
+                	return $sql;
 				}
-
-		}
-
-		function getNextTab() {
-				// Which tab is shown
-				if($this->errorMessage == '') {
-					// If there is no error
-					if(isset($_REQUEST["next_tab"]) && $_REQUEST["next_tab"] != '') {
-								// If the next tab is known
-								$active_tab = $_REQUEST["next_tab"];
-					} else {
-						// else use the default tab
-						$active_tab = $this->formDef['tab_default'];
-					}
-				} else {
-					// Show the same tab again in case of an error
-					$active_tab = $_SESSION["s"]["form"]["tab"];
-				}
-
-				return $active_tab;
-		}
-
-		function getCurrentTab() {
-				return $_SESSION["s"]["form"]["tab"];
-		}
-
+        }
+
+        /*
+        This function checks if a user has the parmissions $perm for the data record with the ID $record_id
+        If record_id = 0, the the permissions are tested against the defaults of the form file.
+        */
+        function checkPerm($record_id,$perm) {
+                global $app;
+
+                if($record_id > 0) {
+                        // Add backticks for incomplete table names.
+                        if(stristr($this->formDef['db_table'],'.')) {
+                                $escape = '';
+                        } else {
+                                $escape = '`';
+                        }
+
+                        $sql = "SELECT ".$this->formDef['db_table_idx']." FROM ".$escape.$this->formDef['db_table'].$escape." WHERE ".$this->formDef['db_table_idx']." = ".$record_id." AND ".$this->getAuthSQL($perm);
+                        if($record = $app->db->queryOneRecord($sql)) {
+                                return true;
+                        } else {
+                                return false;
+                        }
+                } else {
+                        $result = false;
+                        if(@$this->formDef["auth_preset"]["userid"] == $_SESSION["s"]["user"]["userid"] && stristr($perm,$this->formDef["auth_preset"]["perm_user"])) $result = true;
+                        if(@$this->formDef["auth_preset"]["groupid"] == $_SESSION["s"]["user"]["groupid"] && stristr($perm,$this->formDef["auth_preset"]["perm_group"])) $result = true;
+                        if(@stristr($this->formDef["auth_preset"]["perm_other"],$perm)) $result = true;
+
+                        // if preset == 0, everyone can insert a record of this type
+                        if($this->formDef["auth_preset"]["userid"] == 0 AND $this->formDef["auth_preset"]["groupid"] == 0 AND (@stristr($this->formDef["auth_preset"]["perm_user"],$perm) OR @stristr($this->formDef["auth_preset"]["perm_group"],$perm))) $result = true;
+
+                        return $result;
+
+                }
+
+        }
+
+        function getNextTab() {
+                // Which tab is shown
+                if($this->errorMessage == '') {
+                    // If there is no error
+                    if(isset($_REQUEST["next_tab"]) && $_REQUEST["next_tab"] != '') {
+                                // If the next tab is known
+                                $active_tab = $_REQUEST["next_tab"];
+                    } else {
+                        // else use the default tab
+                        $active_tab = $this->formDef['tab_default'];
+                    }
+                } else {
+                    // Show the same tab again in case of an error
+                    $active_tab = $_SESSION["s"]["form"]["tab"];
+                }
+
+                return $active_tab;
+        }
+
+        function getCurrentTab() {
+                return $_SESSION["s"]["form"]["tab"];
+        }
+		
 		function isReadonlyTab($tab, $primary_id) {
 			global $app, $conf;
-
+			
 			// Add backticks for incomplete table names.
-			if(stristr($this->formDef['db_table'],'.')) {
-				$escape = '';
-			} else {
-				$escape = '`';
-			}
-
+            if(stristr($this->formDef['db_table'],'.')) {
+                $escape = '';
+            } else {
+                $escape = '`';
+            }
+			
 			$sql = "SELECT sys_userid FROM ".$escape.$this->formDef['db_table'].$escape." WHERE ".$this->formDef['db_table_idx']." = ".$primary_id;
-			$record = $app->db->queryOneRecord($sql);
-
+            $record = $app->db->queryOneRecord($sql);
+			
 			// return true if the readonly flag of the form is set and the current loggedin user is not the owner of the record.
 			if(isset($this->formDef['tabs'][$tab]['readonly']) && $this->formDef['tabs'][$tab]['readonly'] == true && $record['sys_userid'] != $_SESSION["s"]["user"]["userid"]) {
 				return true;
 			} else {
 				return false;
 			}
-		}
-
-
+        }
+		
+		
 		// translation function for forms, tries the form wordbook first and if this fails, it tries the global wordbook
 		function lng($msg) {
 			global $app,$conf;
-
+			
 			if(isset($this->wordbook[$msg])) {
 				return $this->wordbook[$msg];
 			} else {
 				return $app->lng($msg);
 			}
-
+			
 		}
-
+		
 		function checkClientLimit($limit_name,$sql_where = '') {
 			global $app;
-
+			
 			$check_passed = true;
 			$limit_name = $app->db->quote($limit_name);
 			if($limit_name == '') $app->error('Limit name missing in function checkClientLimit.');
-
+			
 			// Get the limits of the client that is currently logged in
 			$client_group_id = $_SESSION["s"]["user"]["default_group"];
 			$client = $app->db->queryOneRecord("SELECT $limit_name as number, parent_client_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
-
+			
 			// Check if the user may add another item
 			if($client["number"] >= 0) {
 				$sql = "SELECT count(".$this->formDef['db_table_idx'].") as number FROM ".$this->formDef['db_table']." WHERE ".$this->getAuthSQL('u');
@@ -1463,33 +1401,33 @@ class tform {
 				$tmp = $app->db->queryOneRecord($sql);
 				if($tmp["number"] >= $client["number"]) $check_passed = false;
 			}
-
+			
 			return $check_passed;
 		}
-
+		
 		function checkResellerLimit($limit_name,$sql_where = '') {
 			global $app;
-
+			
 			$check_passed = true;
 			$limit_name = $app->db->quote($limit_name);
 			if($limit_name == '') $app->error('Limit name missing in function checkClientLimit.');
-
+			
 			// Get the limits of the client that is currently logged in
 			$client_group_id = $_SESSION["s"]["user"]["default_group"];
 			$client = $app->db->queryOneRecord("SELECT parent_client_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
-
+			
 			//* If the client belongs to a reseller, we will check against the reseller Limit too
 			if($client['parent_client_id'] != 0) {
-
+				
 				//* first we need to know the groups of this reseller
 				$tmp = $app->db->queryOneRecord("SELECT userid, groups FROM sys_user WHERE client_id = ".$client['parent_client_id']);
 				$reseller_groups = $tmp["groups"];
 				$reseller_userid = $tmp["userid"];
-
+				
 				// Get the limits of the reseller of the logged in client
 				$client_group_id = $_SESSION["s"]["user"]["default_group"];
 				$reseller = $app->db->queryOneRecord("SELECT $limit_name as number FROM client WHERE client_id = ".$client['parent_client_id']);
-
+			
 				// Check if the user may add another item
 				if($reseller["number"] >= 0) {
 					$sql = "SELECT count(".$this->formDef['db_table_idx'].") as number FROM ".$this->formDef['db_table']." WHERE (sys_groupid IN (".$reseller_groups.") or sys_userid = ".$reseller_userid.")";
@@ -1498,13 +1436,13 @@ class tform {
 					if($tmp["number"] >= $reseller["number"]) $check_passed = false;
 				}
 			}
-
+			
 			return $check_passed;
 		}
-
+		
 		//* get the difference record of two arrays
 		function getDiffRecord($record_old,$record_new) {
-
+			
 			if(is_array($record_new) && count($record_new) > 0) {
 			foreach($record_new as $key => $val) {
 				if(@$record_old[$key] != $val) {
@@ -1523,17 +1461,17 @@ class tform {
 					}
 				}
 			return $diffrec;
-
+		
 		}
-
+		
 		/**
 		 * Generate HTML for DATETIME fields.
-		 *
+		 * 
 		 * @access private
 		 * @param string $form_element Name of the form element.
 		 * @param string $default_value Selected value for fields.
 		 * @param bool $display_secons Include seconds selection.
-		 * @return string HTML
+		 * @return string HTML	
 		 */
 		function _getDateTimeHTML($form_element, $default_value, $display_seconds=false)
 		{
@@ -1541,54 +1479,54 @@ class tform {
 			$_showdate = ($_datetime === false) ? false : true;
 
 			$dselect = array('day','month','year','hour','minute');
-			if ($display_seconds === true) {
+            if ($display_seconds === true) {
 			 	$dselect[] = 'second';
 			}
-
+			 
 			$out = '';
-
+			 
 			foreach ($dselect as $dt_element)
 			{
 			 	$dt_options = array();
 			 	$dt_space = 1;
-
+			 	
 			 	switch ($dt_element) {
 			 		case 'day':
 					 	for ($i = 1; $i <= 31; $i++) {
-							$dt_options[] = array('name' =>  sprintf('%02d', $i),
-												  'value' => sprintf('%d', $i));
-						}
-						$selected_value = date('d', $_datetime);
+				            $dt_options[] = array('name' =>  sprintf('%02d', $i),
+				            					  'value' => sprintf('%d', $i));
+				        }
+				        $selected_value = date('d', $_datetime);
 			 			break;
-
+			 			
 			 		case 'month':
 				 		for ($i = 1; $i <= 12; $i++) {
-							$dt_options[] = array('name' => strftime('%b', mktime(0, 0, 0, $i, 1, 2000)),
-												  'value' => strftime('%m', mktime(0, 0, 0, $i, 1, 2000)));
-						}
-						$selected_value = date('n', $_datetime);
+				            $dt_options[] = array('name' => strftime('%b', mktime(0, 0, 0, $i, 1, 2000)),
+				            					  'value' => strftime('%m', mktime(0, 0, 0, $i, 1, 2000)));
+				        }
+				        $selected_value = date('n', $_datetime);
 			 			break;
-
+			 			
 			 		case 'year':
 					 	$start_year = strftime("%Y");
 						$years = range((int)$start_year, (int)($start_year+3));
-
-						foreach ($years as $year) {
-							$dt_options[] = array('name' => $year,
-												 'value' => $year);
-						}
-						$selected_value = date('Y', $_datetime);
-						$dt_space = 2;
+				        
+				        foreach ($years as $year) {
+				        	$dt_options[] = array('name' => $year,
+				            					 'value' => $year);
+				        }
+				        $selected_value = date('Y', $_datetime);
+				        $dt_space = 2;
 			 			break;
-
+			 			
 			 		case 'hour':
 			 			foreach(range(0, 23) as $hour) {
 			 				$dt_options[] = array('name' =>  sprintf('%02d', $hour),
-												  'value' => sprintf('%d', $hour));
+            			    					  'value' => sprintf('%d', $hour));
 			 			}
 			 			$selected_value = date('G', $_datetime);
 			 			break;
-
+			 			
 			 		case 'minute':
 			 			foreach(range(0, 59) as $minute) {
 			 				if (($minute % 5) == 0) {
@@ -1598,23 +1536,23 @@ class tform {
 			 			}
 			 			$selected_value = (int)floor(date('i', $_datetime));
 			 			break;
-
-			 		case 'second':
+			 			
+			 		case 'second':	
 			 			foreach(range(0, 59) as $second) {
 			 				$dt_options[] = array('name' =>  sprintf('%02d', $second),
-								  				  'value' => sprintf('%d', $second));
+							      				  'value' => sprintf('%d', $second));
 			 			}
 			 			$selected_value = (int)floor(date('s', $_datetime));
 			 			break;
 			 	}
-
+					 	
 				$out .= "<select name=\"".$form_element."[$dt_element]\" id=\"".$form_element."_$dt_element\" class=\"selectInput\" style=\"width: auto; float: none;\">";
 				if (!$_showdate) {
 					$out .= "<option value=\"-\" selected=\"selected\">--</option>" . PHP_EOL;
 				} else {
 					$out .= "<option value=\"-\">--</option>" . PHP_EOL;
 				}
-
+				 
 				foreach ($dt_options as $dt_opt) {
 					if ( $_showdate && ($selected_value == $dt_opt['value']) ) {
 						$out .= "<option value=\"{$dt_opt['value']}\" selected=\"selected\">{$dt_opt['name']}</option>" . PHP_EOL;
@@ -1622,10 +1560,10 @@ class tform {
 						$out .= "<option value=\"{$dt_opt['value']}\">{$dt_opt['name']}</option>" . PHP_EOL;
 					}
 				}
-
+												        
 				$out .= '</select>' . str_repeat('&nbsp;', $dt_space);
 			}
-
+			
 			return $out;
 		}
 }
diff --git a/interface/lib/classes/tform_actions.inc.php b/interface/lib/classes/tform_actions.inc.php
index d60ecbf13bd3d64c27abb55092bf036fd847db37..b181be01989cf2a90f3608a329c26cf15b54ccdf 100644
--- a/interface/lib/classes/tform_actions.inc.php
+++ b/interface/lib/classes/tform_actions.inc.php
@@ -77,7 +77,16 @@ class tform_actions {
 
         function onSubmit() {
                 global $app, $conf;
-
+                
+                // check if the client is locked - he may not change anything, then.
+				if(!$app->auth->is_admin()) {
+					$client_group_id = $_SESSION["s"]["user"]["default_group"];
+					$client = $app->db->queryOneRecord("SELECT client.locked FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = ".$app->functions->intval($client_group_id));
+					if(is_array($client) && $client['locked'] == 'y') {
+						$app->tform->errorMessage .= $app->lng("client_you_are_locked")."<br />";
+					}
+				}
+                
                 // Calling the action functions
                 if($this->id > 0) {
 					$app->tform->action == 'EDIT';
diff --git a/interface/lib/classes/tools_monitor.inc.php b/interface/lib/classes/tools_monitor.inc.php
index 42defa07e44409c0197a8be3922d3b4cd70fc3e6..121ab931f4004289d7932e95dde790b9cd50f834 100644
--- a/interface/lib/classes/tools_monitor.inc.php
+++ b/interface/lib/classes/tools_monitor.inc.php
@@ -453,40 +453,6 @@ class tools_monitor {
         return $html;
     }
 
-    function showMongoDB() {
-        global $app;
-
-        /* fetch the Data from the DB */
-        $record = $app->db->queryOneRecord("SELECT data, state FROM monitor_data WHERE type = 'log_mongodb' and server_id = " . $_SESSION['monitor']['server_id'] . " order by created desc");
-
-        if(isset($record['data'])) {
-            $html =
-                    '<div class="systemmonitor-state state-'.$record['state'].'">
-                <div class="systemmonitor-content icons32 ico-'.$record['state'].'">';
-
-            /*
-             * First, we have to detect, if there is any monitoring-data.
-             * If not (because mongodb is not installed) show this.
-            */
-            $data = unserialize($record['data']);
-            if ($data == '') {
-                $html .= '<p>'.
-                        'MongoDB is not installed at this server.<br />' .
-                        'See more (for debian) <a href="http://www.howtoforge.com/fail2ban_debian_etch" target="htf">here...</a>'.
-                        '</p>';
-            }
-            else {
-                $html .= nl2br($data);
-            }
-            $html .= '</div></div>';
-
-        } else {
-            $html = '<p>There is no data available at the moment.</p>';
-        }
-
-        return $html;
-    }
-
     function showIPTables() {
         global $app;
         $record = $app->db->queryOneRecord("SELECT data, state FROM monitor_data WHERE type = 'iptables_rules' and server_id = " . $_SESSION['monitor']['server_id'] . " order by created desc");
diff --git a/interface/lib/classes/validate_dkim.inc.php b/interface/lib/classes/validate_dkim.inc.php
deleted file mode 100644
index 12c094587574fdab8d59d7dd7de9ec82a6fb0d6c..0000000000000000000000000000000000000000
--- a/interface/lib/classes/validate_dkim.inc.php
+++ /dev/null
@@ -1,79 +0,0 @@
-<?php
-
-/*
-Copyright (c) 2007 - 2013, Till Brehm, projektfarm Gmbh
-Copyright (c) 2013, Florian Schaal, info@schaal-24.de
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of ISPConfig nor the names of its contributors
-      may be used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-class validate_dkim {
-	
-	function get_error($errmsg) {
-		global $app;
-        	if(isset($app->tform->wordbook[$errmsg])) {
-			return $app->tform->wordbook[$errmsg]."<br>\r\n";
-		} else {
-			return $errmsg."<br>\r\n";
-		}
-    	}
-    
-    	/* Validator function for private DKIM-Key */
-    	function check_private_key($field_name, $field_value, $validator) {
-		$dkim_enabled=$_POST['dkim'];
-		if ($dkim_enabled == 'y') {
-			if (empty($field_value)) return $this->get_error($validator['errmsg']);
-			exec('echo '.escapeshellarg($field_value).'|openssl rsa -check',$output,$result);
-			if($result != 0) return $this->get_error($validator['errmsg']);
-		}
-	}
-
-	/* Validator function for DKIM Path */
-	function check_dkim_path($field_name, $field_value, $validator) {
-		if(empty($field_value)) return $this->get_error($validator['errmsg']);
-		if (substr(sprintf('%o', fileperms($field_value)),-3) <= 600)
-			return $this->get_error($validator['errmsg']);
-	}
-
-	/* Check function for DNS-Template */
-	function check_template($field_name, $field_value, $validator) {
-		$dkim=false;
-		foreach($field_value as $field ) { if($field == 'DKIM') $dkim=true; }
-		if ($dkim && $field_value[0]!='DOMAIN') return $this->get_error($validator['errmsg']);
-	}
-
-	/* Validator function for $_POST */
-	function validate_post($key,$value) {
-		switch ($key) {
-			case 'public':	
-				if (preg_match("/(^-----BEGIN PUBLIC KEY-----)[a-zA-Z0-9\r\n\/\+=]{1,221}(-----END PUBLIC KEY-----(\n|\r)$)/",$value) === 1) { return true; } else { return false; }
-			break;
-			case 'private':
-				if (preg_match("/(^-----BEGIN RSA PRIVATE KEY-----)[a-zA-Z0-9\r\n\/\+=]{1,850}(-----END RSA PRIVATE KEY-----(\n|\r)$)/",$value) === 1) { return true; } else { return false; }
-			break;
-		}
-	}	
-}
-
diff --git a/interface/lib/lang/cz.lng b/interface/lib/lang/cz.lng
index 0c3071926c61674ce591a2a9c30a5a9da14277fd..1683c6e1125011f0f0cae93e10aa6acfe5f062f6 100644
--- a/interface/lib/lang/cz.lng
+++ b/interface/lib/lang/cz.lng
@@ -71,7 +71,7 @@ $wb['datepicker_prevText'] = 'Předchozí';
 $wb['logout_txt'] = 'Odhlášení';
 $wb['conf_format_dateshort_human_readable'] = 'yyyy-mm-dd';
 $wb['submit_confirmation'] = 'Opravdu chcete provést tuto akci ?';
-$wb['top_menu_mailuser'] = 'E-mailový uživatel';
+$wb['top_menu_mailuser'] = 'E-mail. uživ.';
 $wb['globalsearch_resultslimit_of_txt'] = 'z';
 $wb['globalsearch_resultslimit_results_txt'] = 'výsledky';
 $wb['globalsearch_noresults_text_txt'] = 'Žádné výsledky.';
@@ -130,7 +130,8 @@ $wb['datalog_status_d_web_folder'] = 'Odstranění chráněného adresáře hesl
 $wb['datalog_status_i_web_folder_user'] = 'Vytvoření uživatele pro adresáře chráněné heslem';
 $wb['datalog_status_u_web_folder_user'] = 'Aktualizace nastavení uživatele pro adresáře chráněné heslem';
 $wb['datalog_status_d_web_folder_user'] = 'Odstranění uživatele pro adresáře chráněné heslem';
-$wb['login_as_txt'] = 'Přihlaste se jako';
-$wb['no_domain_perm'] = 'You have no permission for this domain.';
-$wb['no_destination_perm'] = 'You have no permission for this destination.';
+$wb['login_as_txt'] = 'Přihlašte se jako';
+$wb['no_domain_perm'] = 'Nemáte oprávnění pro tuto doménu. ';
+$wb['no_destination_perm'] = 'Nemáte oprávnění pro tuto destinaci.';
 ?>
+
diff --git a/interface/lib/lang/de.lng b/interface/lib/lang/de.lng
index 328b5202d4cda6028dcca965c02b8210194d42ef..a5281767a8b6ab9519b496f39978a3dc1d97498b 100644
--- a/interface/lib/lang/de.lng
+++ b/interface/lib/lang/de.lng
@@ -134,3 +134,4 @@ $wb['login_as_txt'] = 'Anmelden als';
 $wb['no_domain_perm'] = 'Sie haben keine Berechtigung für diese Domain.';
 $wb['no_destination_perm'] = 'Sie haben keine Berechtigung für dieses Ziel.';
 ?>
+
diff --git a/interface/lib/lang/el.lng b/interface/lib/lang/el.lng
index b633c1b86383e5b7ec214e03610471ba163caaf2..580f7370cc954b1fe583752decac832983c89f34 100644
--- a/interface/lib/lang/el.lng
+++ b/interface/lib/lang/el.lng
@@ -69,68 +69,68 @@ $wb['monthnamesshort_oct'] = 'Οκτ';
 $wb['monthnamesshort_nov'] = 'Νοε';
 $wb['monthnamesshort_dec'] = 'Δεκ';
 $wb['conf_format_dateshort_human_readable'] = 'yyyy-mm-dd';
-$wb['logout_txt'] = 'Logout';
-$wb['submit_confirmation'] = 'Do you really want to perform this action?';
+$wb['logout_txt'] = 'Αποσύνδεση';
+$wb['submit_confirmation'] = 'Είστε σίγουροι ότι θέλετε να κάνετε αυτή την ενέργεια?';
 $wb['top_menu_mailuser'] = 'Mailuser';
-$wb['globalsearch_resultslimit_of_txt'] = 'of';
-$wb['globalsearch_resultslimit_results_txt'] = 'results';
-$wb['globalsearch_noresults_text_txt'] = 'No results.';
-$wb['globalsearch_noresults_limit_txt'] = '0 results';
-$wb['globalsearch_searchfield_watermark_txt'] = 'Search';
-$wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
-$wb['global_tabchange_warning_txt'] = 'Changed data in this tab will be changed if you press OK. On cancel they will be discarded.';
-$wb['global_tabchange_discard_txt'] = 'You have unsaved changes in this tab. Changes will be discarded if you continue.';
-$wb['datalog_changes_txt'] = 'The following changes are not yet populated to all servers:';
-$wb['datalog_changes_end_txt'] = 'Storing updates can take up to one minute. Please be patient.';
-$wb['datalog_status_i_web_database'] = 'Create new database';
-$wb['datalog_status_u_web_database'] = 'Update database';
-$wb['datalog_status_d_web_database'] = 'Delete database';
-$wb['datalog_status_i_web_database_user'] = 'Create database user for database';
-$wb['datalog_status_u_web_database_user'] = 'Update database user';
-$wb['datalog_status_d_web_database_user'] = 'Delete database user';
-$wb['datalog_status_i_web_domain'] = 'Create new website';
-$wb['datalog_status_u_web_domain'] = 'Update website settings';
-$wb['datalog_status_d_web_domain'] = 'Delete website';
-$wb['datalog_status_i_ftp_user'] = 'Create FTP user';
-$wb['datalog_status_u_ftp_user'] = 'Update FTP user';
-$wb['datalog_status_d_ftp_user'] = 'Delete FTP user';
-$wb['datalog_status_i_mail_domain'] = 'Create email domain';
-$wb['datalog_status_u_mail_domain'] = 'Update email domain';
-$wb['datalog_status_d_mail_domain'] = 'Delete email domain';
-$wb['datalog_status_i_mail_user'] = 'Create email user';
-$wb['datalog_status_u_mail_user'] = 'Update email user';
-$wb['datalog_status_d_mail_user'] = 'Delete email user';
-$wb['datalog_status_i_mail_forwarding'] = 'Create email address';
-$wb['datalog_status_u_mail_forwarding'] = 'Update email address';
-$wb['datalog_status_d_mail_forwarding'] = 'Delete email address';
-$wb['datalog_status_i_dns_rr'] = 'Create DNS record';
-$wb['datalog_status_u_dns_rr'] = 'Update DNS record';
-$wb['datalog_status_d_dns_rr'] = 'Delete DNS record';
-$wb['datalog_status_i_dns_soa'] = 'Create DNS zone';
-$wb['datalog_status_u_dns_soa'] = 'Update DNS zone';
-$wb['datalog_status_d_dns_soa'] = 'Delete DNS zone';
-$wb['datalog_status_i_cron'] = 'Create cron job';
-$wb['datalog_status_u_cron'] = 'Update cron job';
-$wb['datalog_status_d_cron'] = 'Delete cron job';
-$wb['datalog_status_i_mail_get'] = 'Create mail fetcher account';
-$wb['datalog_status_u_mail_get'] = 'Update mail fetcher account';
-$wb['datalog_status_d_mail_get'] = 'Delete mail fetcher account';
-$wb['datalog_status_i_mail_mailinglist'] = 'Create mailing list';
-$wb['datalog_status_u_mail_mailinglist'] = 'Update mailing list';
-$wb['datalog_status_d_mail_mailinglist'] = 'Delete mailing list';
-$wb['datalog_status_i_shell_user'] = 'Create shell user';
-$wb['datalog_status_u_shell_user'] = 'Update shell user';
-$wb['datalog_status_d_shell_user'] = 'Delete shell user';
-$wb['datalog_status_i_web_folder'] = 'Create folder protection';
-$wb['datalog_status_u_web_folder'] = 'Update folder protection';
-$wb['datalog_status_d_web_folder'] = 'Delete folder protection';
-$wb['datalog_status_i_web_folder_user'] = 'Create folder protection user';
-$wb['datalog_status_u_web_folder_user'] = 'Update folder protection user';
-$wb['datalog_status_d_web_folder_user'] = 'Delete folder protection user';
-$wb['datalog_status_i_spamfilter_users'] = 'Create spam filter settings';
-$wb['datalog_status_u_spamfilter_users'] = 'Update spam filter settings';
-$wb['datalog_status_d_spamfilter_users'] = 'Delete spam filter settings';
-$wb['login_as_txt'] = 'Log in as';
-$wb['no_domain_perm'] = 'You have no permission for this domain.';
-$wb['no_destination_perm'] = 'You have no permission for this destination.';
+$wb['globalsearch_resultslimit_of_txt'] = 'από';
+$wb['globalsearch_resultslimit_results_txt'] = 'αποτελέσματα';
+$wb['globalsearch_noresults_text_txt'] = 'Δεν υπάρχουν αποτελέσματα.';
+$wb['globalsearch_noresults_limit_txt'] = '0 αποτελέσματα';
+$wb['globalsearch_searchfield_watermark_txt'] = 'Αναζήτηση';
+$wb['globalsearch_suggestions_text_txt'] = 'Προτάσεις';
+$wb['global_tabchange_warning_txt'] = 'Τα τροποποιημένα δεδομένα σε αυτή την καρτέλα θα αλλάξουν οριστικά αν πατήσετε ΟΚ. Πατήσετε Άκυρο για να μην συμβεί αυτό..';
+$wb['global_tabchange_discard_txt'] = 'Έχετε μη αποθηκευμένες αλλαγές σε αυτή την καρτέλα. Οι αλλαγές θα χαθούν αν συνεχίσετε.';
+$wb['datalog_changes_txt'] = 'Οι επόμενες αλλαγές δεν έχουν προωθηθεί στους servers:';
+$wb['datalog_changes_end_txt'] = 'Η αποθήκευση των ενημερώσεων μπορεί να διαρκέσει μεχρι και ένα λεπτό. Παρακαλούμε να είστε υπομονετικοί.';
+$wb['datalog_status_i_web_database'] = 'Δημιουργία νέας Βάσης Δεδομένων (ΒΔ)';
+$wb['datalog_status_u_web_database'] = 'Ενημέρωση Βάσης Δεδομένων';
+$wb['datalog_status_d_web_database'] = 'Διαγραφή Βάσης Δεδομένων';
+$wb['datalog_status_i_web_database_user'] = 'Δημιουργία χρήστη για την Βάση Δεδομένων';
+$wb['datalog_status_u_web_database_user'] = 'Ενημέρωση χρήστη Βάσης Δεδομένων';
+$wb['datalog_status_d_web_database_user'] = 'Διαγραφή χρήστη Βάσης Δεδομένων';
+$wb['datalog_status_i_web_domain'] = 'Δημιουργία νέου website';
+$wb['datalog_status_u_web_domain'] = 'Ενημέρωση ρυθμίσεων website';
+$wb['datalog_status_d_web_domain'] = 'Διαγραφή website';
+$wb['datalog_status_i_ftp_user'] = 'Δημιουργία χρήστη FTP';
+$wb['datalog_status_u_ftp_user'] = 'Ενημέρωση FTP user';
+$wb['datalog_status_d_ftp_user'] = 'Διαγραφή FTP user';
+$wb['datalog_status_i_mail_domain'] = 'Δημιουργία email domain';
+$wb['datalog_status_u_mail_domain'] = 'Ενημέρωση email domain';
+$wb['datalog_status_d_mail_domain'] = 'Διαγραφή email domain';
+$wb['datalog_status_i_mail_user'] = 'Δημιουργία χρήστη email';
+$wb['datalog_status_u_mail_user'] = 'Ενημέρωση χρήστη email';
+$wb['datalog_status_d_mail_user'] = 'Διαγραφή χρήστη email';
+$wb['datalog_status_i_mail_forwarding'] = 'Δημιουργία διεύθυνσης email';
+$wb['datalog_status_u_mail_forwarding'] = 'Ενημέρωση διεύθυνσης email';
+$wb['datalog_status_d_mail_forwarding'] = 'Διαγραφή διεύθυνσης email';
+$wb['datalog_status_i_dns_rr'] = 'Δημιουργία εγγραφής DNS';
+$wb['datalog_status_u_dns_rr'] = 'Ενημέρωση εγγραφής DNS';
+$wb['datalog_status_d_dns_rr'] = 'Διαγραφή εγγραφής DNS';
+$wb['datalog_status_i_dns_soa'] = 'Δημιουργία ζώνης DNS';
+$wb['datalog_status_u_dns_soa'] = 'Ενημέρωση ζώνης DNS';
+$wb['datalog_status_d_dns_soa'] = 'Διαγραφή ζώνης DNS';
+$wb['datalog_status_i_cron'] = 'Δημιουργία εργασίας cron';
+$wb['datalog_status_u_cron'] = 'Ενημέρωση εργασίας cron';
+$wb['datalog_status_d_cron'] = 'Διαγραφή εργασίας cron';
+$wb['datalog_status_i_mail_get'] = 'Δημιουργία δημιουργία λογαριασμού mail fetcher';
+$wb['datalog_status_u_mail_get'] = 'Ενημέρωση δημιουργία λογαριασμού mail fetcher';
+$wb['datalog_status_d_mail_get'] = 'Διαγραφή δημιουργία λογαριασμού mail fetcher';
+$wb['datalog_status_i_mail_mailinglist'] = 'Δημιουργία λίστας mail';
+$wb['datalog_status_u_mail_mailinglist'] = 'Ενημέρωση λίστας mail';
+$wb['datalog_status_d_mail_mailinglist'] = 'Διαγραφή λίστας mail';
+$wb['datalog_status_i_shell_user'] = 'Δημιουργία χρήστη shell';
+$wb['datalog_status_u_shell_user'] = 'Ενημέρωση χρήστη shell';
+$wb['datalog_status_d_shell_user'] = 'Διαγραφή χρήστη shell';
+$wb['datalog_status_i_web_folder'] = 'Δημιουργία προστασίας φακέλου';
+$wb['datalog_status_u_web_folder'] = 'Ενημέρωση προστασίας φακέλου';
+$wb['datalog_status_d_web_folder'] = 'Διαγραφή προστασίας φακέλου';
+$wb['datalog_status_i_web_folder_user'] = 'Δημιουργία χρήστη προστασίας φακέλου';
+$wb['datalog_status_u_web_folder_user'] = 'Ενημέρωση χρήστη προστασίας φακέλου';
+$wb['datalog_status_d_web_folder_user'] = 'Διαγραφή χρήστη προστασίας φακέλου';
+$wb['datalog_status_i_spamfilter_users'] = 'Δημιουργία ρυθμίσεων φίλτρου spam';
+$wb['datalog_status_u_spamfilter_users'] = 'Ενημέρωση ρυθμίσεων φίλτρου spam';
+$wb['datalog_status_d_spamfilter_users'] = 'Διαγραφή ρυθμίσεων φίλτρου spam';
+$wb['login_as_txt'] = 'Είσοδος ως';
+$wb['no_domain_perm'] = 'Δεν έχετε δικαιώματα για αυτό το domain.';
+$wb['no_destination_perm'] = 'Δεν έχετε δικαιώματα για αυτόν τον προορισμό.';
 ?>
diff --git a/interface/lib/lang/en.lng b/interface/lib/lang/en.lng
index 47b611586d55a4450e99b3bedeae87a8cebfbbcf..1d689f01040a726f4b5ac3c29e0db1e811712b3c 100644
--- a/interface/lib/lang/en.lng
+++ b/interface/lib/lang/en.lng
@@ -135,4 +135,7 @@ $wb['datalog_status_d_web_folder_user'] = 'Delete folder protection user';
 $wb['login_as_txt'] = 'Log in as';
 $wb["no_domain_perm"] = 'You have no permission for this domain.';
 $wb["no_destination_perm"] = 'You have no permission for this destination.';
+$wb['client_you_are_locked'] = 'You have no permission to change any settings.';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
 ?>
diff --git a/interface/lib/shelluser_blacklist b/interface/lib/shelluser_blacklist
index 4913b64272f61c7b5fbb6e086062397cf296c153..c49d825517c765d210f0ad090c29b3ced7b7c2b6 100644
--- a/interface/lib/shelluser_blacklist
+++ b/interface/lib/shelluser_blacklist
@@ -31,5 +31,4 @@ vmail
 getmail
 ispconfig
 courier
-dovecot
-mongodb
+dovecot
\ No newline at end of file
diff --git a/interface/ssl/empty.dir b/interface/ssl/empty.dir
new file mode 100644
index 0000000000000000000000000000000000000000..95ba9ef37cca69318bcba17e67cd44ae84bd41e1
--- /dev/null
+++ b/interface/ssl/empty.dir
@@ -0,0 +1 @@
+This empty directory is needed by ISPConfig.
diff --git a/interface/tools/empty.dir b/interface/tools/empty.dir
new file mode 100644
index 0000000000000000000000000000000000000000..95ba9ef37cca69318bcba17e67cd44ae84bd41e1
--- /dev/null
+++ b/interface/tools/empty.dir
@@ -0,0 +1 @@
+This empty directory is needed by ISPConfig.
diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php
index 0bc490f765f6120d79acfcea188fca41aed5c326..c2adbdcc955c5ccbb5194f7eb9a5055b5ea9f00b 100644
--- a/interface/web/admin/form/server_config.tform.php
+++ b/interface/web/admin/form/server_config.tform.php
@@ -83,20 +83,22 @@ $form["tabs"]['server'] = array(
 					'errmsg' => 'netmask_error_wrong'),
 			),
 			'value' => '',
-			'width' => '15',
-			'maxlength' => '255'
-		),
-		'v6_prefix' => array(
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-						'validators' => array(0 => array('type' => 'ISV6PREFIX',
-										'errmsg' => 'v6_prefix_wrong'),
-						),
-		'default' => ''
-		),
-		'gateway' => array(
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
+			'width' => '15',
+			'maxlength' => '255'
+		),
+		/*
+		'v6_prefix' => array(
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+                        'validators' => array(0 => array('type' => 'ISV6PREFIX',
+                                        'errmsg' => 'v6_prefix_wrong'),
+                        ),
+		'default' => ''
+		),
+		*/
+		'gateway' => array(
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
 			'default' => '192.168.0.1',
 			'validators' => array(0 => array('type' => 'ISIPV4',
 					'errmsg' => 'gateway_error_wrong'),
@@ -117,13 +119,13 @@ $form["tabs"]['server'] = array(
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => 'server1.domain.tld',
-			'filters'   => array( 0 => array( 'event' => 'SAVE',
-											  'type' => 'IDNTOASCII'),
-								  1 => array( 'event' => 'SHOW',
-											  'type' => 'IDNTOUTF8'),
-								  2 => array( 'event' => 'SAVE',
-											  'type' => 'TOLOWER')
-								),
+            'filters'   => array( 0 => array( 'event' => 'SAVE',
+                                              'type' => 'IDNTOASCII'),
+                                  1 => array( 'event' => 'SHOW',
+                                              'type' => 'IDNTOUTF8'),
+                                  2 => array( 'event' => 'SAVE',
+                                              'type' => 'TOLOWER')
+                                ),
 			'validators' => array(0 => array('type' => 'NOTEMPTY',
 					'errmsg' => 'hostname_error_empty'),
 			),
@@ -182,9 +184,9 @@ $form["tabs"]['server'] = array(
 			'formtype' => 'TEXT',
 			'default' => '',
 			'validators'	=> array ( 0 => array (	'type'	=> 'REGEX',
-																'regex' => '/^[0-9a-zA-Z\:\/\-\.\[\]]{0,255}$/',
-																'errmsg'=> 'monit_url_error_regex'),
-												),
+                                                                'regex' => '/^[0-9a-zA-Z\:\/\-\.\[\]]{0,255}$/',
+                                                                'errmsg'=> 'monit_url_error_regex'),
+                                                ),
 			'value' => '',
 			'width' => '40',
 			'maxlength' => '255'
@@ -210,9 +212,9 @@ $form["tabs"]['server'] = array(
 			'formtype' => 'TEXT',
 			'default' => '',
 			'validators'	=> array ( 0 => array (	'type'	=> 'REGEX',
-																'regex' => '/^[0-9a-zA-Z\:\/\-\.\[\]]{0,255}$/',
-																'errmsg'=> 'munin_url_error_regex'),
-												),
+                                                                'regex' => '/^[0-9a-zA-Z\:\/\-\.\[\]]{0,255}$/',
+                                                                'errmsg'=> 'munin_url_error_regex'),
+                                                ),
 			'value' => '',
 			'width' => '40',
 			'maxlength' => '255'
@@ -275,19 +277,6 @@ $form["tabs"]['mail'] = array(
 			'width' => '40',
 			'maxlength' => '255'
 		),
-				'dkim_path' => array(
-						'datatype' => 'VARCHAR',
-						'formtype' => 'TEXT',
-						'default' => '/var/db/dkim',
-						'validators'    => array (  0 => array ('type'  => 'CUSTOM',
-																'class' => 'validate_dkim',
-																'function' => 'check_dkim_path',
-																'errmsg'=> 'dkim_path_error'),
-												 ),
-						'value' => '',
-						'width' => '40',
-						'maxlength' => '255'
-				),
 		'pop3_imap_daemon' => array(
 			'datatype' => 'VARCHAR',
 			'formtype' => 'SELECT',
@@ -419,8 +408,8 @@ $form["tabs"]['mail'] = array(
 			'formtype' => 'TEXT',
 			'default' => '7',
 			'value' => '',
-			'width' => '20',
-			'maxlength' => '255'
+            'width' => '20',
+            'maxlength' => '255'
 		),
 		'overquota_notify_onok' => array(
 			'datatype' => 'VARCHAR',
@@ -517,20 +506,20 @@ $form["tabs"]['web'] = array(
 			'formtype' => 'TEXT',
 			'default' => '',
 			'value' => '',
-			'width' => '40',
-			'maxlength' => '255'
-		),
-/*
-'vhost_rewrite_v6' => array (
-'datatype' => 'VARCHAR',
-'formtype' => 'CHECKBOX',
-'default' => 'n',
-'value' => array(0 => 'n',1 => 'y')
-),
-*/
-		'vhost_conf_dir' => array(
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
+			'width' => '40',
+			'maxlength' => '255'
+		),
+/*
+'vhost_rewrite_v6' => array (
+'datatype' => 'VARCHAR',
+'formtype' => 'CHECKBOX',
+'default' => 'n',
+'value' => array(0 => 'n',1 => 'y')
+),
+*/
+		'vhost_conf_dir' => array(
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
 			'default' => '',
 			'validators' => array(0 => array('type' => 'NOTEMPTY',
 					'errmsg' => 'vhost_conf_dir_error_empty'),
@@ -659,8 +648,8 @@ $form["tabs"]['web'] = array(
 			'formtype' => 'TEXT',
 			'default' => '7',
 			'value' => '',
-			'width' => '20',
-			'maxlength' => '255'
+            'width' => '20',
+            'maxlength' => '255'
 		),
 		'overquota_notify_onok' => array(
 			'datatype' => 'VARCHAR',
@@ -817,17 +806,6 @@ $form["tabs"]['web'] = array(
 			'width' => '40',
 			'maxlength' => '4000'
 		),
-		'php_ini_check_minutes' => array(
-			'datatype' => 'INTEGER',
-			'formtype' => 'TEXT',
-			'default' => '1',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'php_ini_check_minutes_error_empty'),
-			),
-			'value' => '',
-			'width' => '10',
-			'maxlength' => '255'
-		),
 		'nginx_cgi_socket' => array(
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
@@ -1306,12 +1284,6 @@ $form["tabs"]['rescue'] = array(
 			'default' => 'n',
 			'value' => array(0 => 'n', 1 => 'y')
 		),
-		'do_not_try_rescue_mongodb' => array(
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default' => 'n',
-			'value' => array(0 => 'n', 1 => 'y')
-		),
 		'do_not_try_rescue_mysql' => array(
 			'datatype' => 'VARCHAR',
 			'formtype' => 'CHECKBOX',
diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php
index f09d4db2e1bf8f749c6972aacaae58416fa62c1b..d04923bd3a87f26b3e44740f10f2fef88360cd4d 100644
--- a/interface/web/admin/form/system_config.tform.php
+++ b/interface/web/admin/form/system_config.tform.php
@@ -160,12 +160,6 @@ $form["tabs"]['sites'] = array (
 			'default'	=> 'n',
 			'value'		=> array(0 => 'n',1 => 'y')
 		),
-		'reseller_can_use_options' => array (
-			'datatype'	=> 'VARCHAR',
-			'formtype'	=> 'CHECKBOX',
-			'default'	=> 'n',
-			'value'		=> array(0 => 'n',1 => 'y')
-		),
 	##################################
 	# ENDE Datatable fields
 	##################################
@@ -180,30 +174,12 @@ $form["tabs"]['mail'] = array (
 	##################################
 	# Begin Datatable fields
 	##################################
-		'enable_custom_login' => array(
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default' => 'n',
-			'value' => array(0 => 'n', 1 => 'y')
-		),
-		'mailbox_show_autoresponder_tab' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default'  => 'y',
-			'value'    => array(0 => 'n',1 => 'y')
-		),
-		'mailbox_show_mail_filter_tab' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default'  => 'y',
-			'value'    => array(0 => 'n',1 => 'y')
-		),
-		'mailbox_show_custom_rules_tab' => array (
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default'  => 'y',
-			'value'    => array(0 => 'n',1 => 'y')
-		),
+    'enable_custom_login' => array(
+      'datatype' => 'VARCHAR',
+      'formtype' => 'CHECKBOX',
+      'default' => 'n',
+      'value' => array(0 => 'n', 1 => 'y')
+    ),
 		'mailboxlist_webmail_link' => array (
 			'datatype'	=> 'VARCHAR',
 			'formtype'	=> 'CHECKBOX',
diff --git a/interface/web/admin/language_edit.php b/interface/web/admin/language_edit.php
index 208f1ac94f939609437864b7cb6834884fd7e651..ffba65d61a894ef3ac30f1cfe120a28263f609fa 100644
--- a/interface/web/admin/language_edit.php
+++ b/interface/web/admin/language_edit.php
@@ -85,7 +85,7 @@ $app->tpl->setVar("file_path", $file_path);
 $keyword_list = array();
 if(isset($wb) && is_array($wb)) {
 	foreach($wb as $key => $val) {
-		$keyword_list[] = array('key' => $key, 'val' => htmlentities($val));
+		$keyword_list[] = array('key' => $key, 'val' => htmlentities($val,ENT_COMPAT | ENT_HTML401,'UTF-8'));
 	}
 
 	$app->tpl->setLoop('records', $keyword_list);
diff --git a/interface/web/admin/language_import.php b/interface/web/admin/language_import.php
index 285be11bdfdb3765f814ec361ea7e1d4984ebfeb..c25406ae7ff117857868e4639bf48935c5af913e 100644
--- a/interface/web/admin/language_import.php
+++ b/interface/web/admin/language_import.php
@@ -30,6 +30,86 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 require_once('../../lib/config.inc.php');
 require_once('../../lib/app.inc.php');
 
+function normalize_string($string, $quote, $allow_special = false) {
+    $escaped = false;
+    $in_string = true;
+    $new_string = '';
+    
+    for($c = 0; $c < mb_strlen($string); $c++) {
+        $char = $string{$c};
+        
+        if($in_string === true && $escaped === false && $char === $quote) {
+            // this marks a string end (e.g. for concatenation)
+            $in_string = false;
+            continue;
+        } elseif($in_string === false) {
+            if($escaped === false && $char === $quote) {
+                $in_string = true;
+                continue;
+            } else {
+                continue; // we strip everything from outside the string!
+            }
+        }
+        
+        if($char === '"' && $escaped === true && $quote === '"') {
+            // unescape this
+            $new_string .= $char;
+            $escaped = false;
+            continue;
+        } elseif($char === "'" && $escaped === false && $quote === '"') {
+            // escape this
+            $new_string .= '\\' . $char;
+            continue;
+        }
+        
+        if($escaped === true) {
+            // the next character is the escaped one.
+            if($allow_special === true && ($char === 'n' || $char === 'r' || $char === 't')) {
+                $new_string .= '\' . "\\' . $char . '" . \'';
+            } else {
+                $new_string .= '\\' . $char;
+            }
+            $escaped = false;
+        } else {
+            if($char === '\\') {
+                $escaped = true;
+            } else {
+                $new_string .= $char;
+            }
+        }
+    }
+    return $new_string;
+}
+
+function validate_line($line) {
+    $line = trim($line);
+    if($line === '' || $line === '<?php' || $line === '?>') return $line; // don't treat empty lines as malicious
+    
+    $ok = preg_match('/^\s*\$wb\[(["\'])(.*?)\\1\]\s*=\s*(["\'])(.*?)\\3\s*;\s*$/', $line, $matches);
+    if(!$ok) return false; // this line has invalid form and could lead to malfunction
+    
+    $keyquote = $matches[1]; // ' or "
+    $key = $matches[2];
+    if(strpos($key, '"') !== false || strpos($key, "'") !== false) return false;
+    
+    $textquote = $matches[3]; // ' or "
+    $text = $matches[4];
+
+    $new_line = '$wb[\'';
+    
+    // validate the language key
+    $key = normalize_string($key, $keyquote);
+    
+    $new_line .= $key . '\'] = \'';
+    
+    // validate this text to avoid code injection
+    $text = normalize_string($text, $textquote, true);
+    
+    $new_line .= $text . '\';';
+    
+    return $new_line;
+}
+
 //* Check permissions for module
 $app->auth->check_module_permissions('admin');
 
@@ -37,6 +117,8 @@ $app->auth->check_module_permissions('admin');
 if(!$app->auth->is_admin()) die('only allowed for administrators.');
 if($conf['demo_mode'] == true) $app->error('This function is disabled in demo mode.');
 
+if(!$conf['language_file_import_enabled']) $app->error('Languge import function is disabled in the interface config.inc.php file.');
+
 $app->uses('tpl');
 
 $app->tpl->newTemplate('form.tpl.htm');
@@ -58,7 +140,9 @@ if(isset($_FILES['file']['name']) && is_uploaded_file($_FILES['file']['tmp_name'
 			$buffer = '';
 			$langfile_path = '';
 			// all other lines
+            $ln = 1;
 			foreach($lines as $line) {
+                $ln++;
 				$parts = explode('|',$line);
 				if(is_array($parts) && count($parts) > 0 && $parts[0] == '--') {
 					// Write language file, if its not the first file
@@ -77,14 +161,18 @@ if(isset($_FILES['file']['name']) && is_uploaded_file($_FILES['file']['tmp_name'
 					$file_name = trim($parts[3]);
 					if(!preg_match("/^[a-z]{2}$/i", $selected_language)) die("unallowed characters in selected language name: $selected_language");
 					if(!preg_match("/^[a-z_]+$/i", $module_name)) die('unallowed characters in module name.');
-					if(!preg_match("/^[a-z\._]+$/i", $file_name) || stristr($file_name,'..')) die("unallowed characters in language file name: '$file_name'");
+					if(!preg_match("/^[a-z\._\-]+$/i", $file_name) || stristr($file_name,'..')) die("unallowed characters in language file name: '$file_name'");
 					if($module_name == 'global') {
 						$langfile_path = trim(ISPC_LIB_PATH."/lang/".$selected_language.".lng");
 					} else {
 						$langfile_path = trim(ISPC_WEB_PATH.'/'.$module_name.'/lib/lang/'.$file_name);
 					}
-				} else {
-					$buffer .= trim($line)."\n";
+				} elseif(is_array($parts) && count($parts) > 1 && $parts[0] == '---' && $parts[1] == 'EOF') {
+                    // EOF line, ignore it.
+                } else {
+                    $line = validate_line($line);
+                    if($line === false) $error .= "Language file contains invalid language entry on line $ln.<br />";
+					else $buffer .= $line."\n";
 				}
 			}
 		}
diff --git a/interface/web/admin/lib/lang/ar_language_import.lng b/interface/web/admin/lib/lang/ar_language_import.lng
index 4c31ec3de3606dcb7aebf451f711ff2dd41a8981..a5831fc9540c52e19194d2b128c16ad99b154a8a 100644
--- a/interface/web/admin/lib/lang/ar_language_import.lng
+++ b/interface/web/admin/lib/lang/ar_language_import.lng
@@ -5,4 +5,5 @@ $wb['btn_save_txt'] = 'Import the selected language file';
 $wb['language_overwrite_txt'] = 'Overwrite file, if exists.';
 $wb['btn_cancel_txt'] = 'Back';
 $wb['ignore_version_txt'] = 'Skip ISPConfig version check';
+$wb['list_desc_txt'] = 'WARNING: Do not import language files from untrustworthy sources.';
 ?>
diff --git a/interface/web/admin/lib/lang/ar_remote_action.lng b/interface/web/admin/lib/lang/ar_remote_action.lng
index 3fc3eaf81f5d63a057aa0eecf965bfbdaf6af701..f26852708408df3bfb8307dbd3620e142f92f75e 100644
--- a/interface/web/admin/lib/lang/ar_remote_action.lng
+++ b/interface/web/admin/lib/lang/ar_remote_action.lng
@@ -8,5 +8,5 @@ $wb['do_ispcupdate_desc'] = 'This action does a ISPConfig3 update at your select
 $wb['action_scheduled'] = 'The action is scheduled for execution';
 $wb['select_all_server'] = 'All server';
 $wb['ispconfig_update_title'] = 'ISPConfig update instructions';
-$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructions</a>';
+$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructins</a>';
 ?>
diff --git a/interface/web/admin/lib/lang/ar_software_package.lng b/interface/web/admin/lib/lang/ar_software_package.lng
index 62ef734079c5dd66dfb5b02390e23398a09233a8..faffe38217fb9cac04020e73e473c6c46e3caaa1 100644
--- a/interface/web/admin/lib/lang/ar_software_package.lng
+++ b/interface/web/admin/lib/lang/ar_software_package.lng
@@ -1,6 +1,6 @@
 <?php
-$wb["package_title_txt"] = 'Package Title';
-$wb["package_key_txt"] = 'Package Key';
-$wb["Software Package"] = 'Software Package';
+$wb['package_title_txt'] = 'Package Title';
+$wb['package_key_txt'] = 'Package Key';
+$wb['Software Package'] = 'Software Package';
 $wb['Modify software package details'] = 'Modify software package details';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/admin/lib/lang/ar_system_config.lng b/interface/web/admin/lib/lang/ar_system_config.lng
index 11604d343015457843094003a694a3d57a898229..a534fa742532a7725068e00c0a5c01fd390ae6dd 100644
--- a/interface/web/admin/lib/lang/ar_system_config.lng
+++ b/interface/web/admin/lib/lang/ar_system_config.lng
@@ -52,4 +52,11 @@ $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail a
 $wb['webmail_url_error_regex'] = 'Invalid webmail URL';
 $wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
 $wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
 ?>
diff --git a/interface/web/admin/lib/lang/bg_language_import.lng b/interface/web/admin/lib/lang/bg_language_import.lng
index 0cd38ee91a21fd47cf9ff1d6d4d6e976faa29374..40e0633adb2d264673424d926486a97faaa77bf8 100644
--- a/interface/web/admin/lib/lang/bg_language_import.lng
+++ b/interface/web/admin/lib/lang/bg_language_import.lng
@@ -5,4 +5,5 @@ $wb['btn_save_txt'] = 'Импортиране';
 $wb['language_overwrite_txt'] = 'Презапиши ако съществува';
 $wb['btn_cancel_txt'] = 'Отказ';
 $wb['ignore_version_txt'] = 'Пропусни ISPConfig проверка на версията';
+$wb['list_desc_txt'] = 'WARNING: Do not import language files from untrustworthy sources.';
 ?>
diff --git a/interface/web/admin/lib/lang/bg_remote_action.lng b/interface/web/admin/lib/lang/bg_remote_action.lng
index 48f35054fc43c2408dd6037e5ebd6fd35a03634e..e9aa121314c701e7eea88036e52d8d085d322eb5 100644
--- a/interface/web/admin/lib/lang/bg_remote_action.lng
+++ b/interface/web/admin/lib/lang/bg_remote_action.lng
@@ -8,5 +8,5 @@ $wb['do_ispcupdate_desc'] = 'Това действие прави ISPConfig 3 о
 $wb['action_scheduled'] = 'Това действие е насрочено за изпълнение';
 $wb['select_all_server'] = 'Целия сървър';
 $wb['ispconfig_update_title'] = 'ISPConfig ъпдейт инструкции';
-$wb['ispconfig_update_text'] = 'Логнете се като root потребител през шелла на вашият сървър използвайте командата<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />за да стартирате ISPConfig обновяване.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructions</a>';
+$wb['ispconfig_update_text'] = 'Логнете се като root потребител през шелла на вашият сървър използвайте командата<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />за да стартирате ISPConfig обновяване.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructins</a>';
 ?>
diff --git a/interface/web/admin/lib/lang/bg_software_package.lng b/interface/web/admin/lib/lang/bg_software_package.lng
index 62ef734079c5dd66dfb5b02390e23398a09233a8..faffe38217fb9cac04020e73e473c6c46e3caaa1 100644
--- a/interface/web/admin/lib/lang/bg_software_package.lng
+++ b/interface/web/admin/lib/lang/bg_software_package.lng
@@ -1,6 +1,6 @@
 <?php
-$wb["package_title_txt"] = 'Package Title';
-$wb["package_key_txt"] = 'Package Key';
-$wb["Software Package"] = 'Software Package';
+$wb['package_title_txt'] = 'Package Title';
+$wb['package_key_txt'] = 'Package Key';
+$wb['Software Package'] = 'Software Package';
 $wb['Modify software package details'] = 'Modify software package details';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/admin/lib/lang/bg_system_config.lng b/interface/web/admin/lib/lang/bg_system_config.lng
index e3c6678b15971400e73d6e388fc3e991e032a941..282ab42c29203016949a961251cfeeb757663658 100644
--- a/interface/web/admin/lib/lang/bg_system_config.lng
+++ b/interface/web/admin/lib/lang/bg_system_config.lng
@@ -52,4 +52,11 @@ $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail a
 $wb['webmail_url_error_regex'] = 'Invalid webmail URL';
 $wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
 $wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
 ?>
diff --git a/interface/web/admin/lib/lang/br_language_import.lng b/interface/web/admin/lib/lang/br_language_import.lng
index 290335b6f0e6519a800064461e3a9f8bd947f452..ba519c5fe6888298a8b6b8738c359097ed3a893d 100644
--- a/interface/web/admin/lib/lang/br_language_import.lng
+++ b/interface/web/admin/lib/lang/br_language_import.lng
@@ -5,4 +5,5 @@ $wb['btn_save_txt'] = 'Importar Arquivo de Idioma Selecionado';
 $wb['language_overwrite_txt'] = 'Sobre escrever o arquivo se existir.';
 $wb['btn_cancel_txt'] = 'Voltar';
 $wb['ignore_version_txt'] = 'Pular checagem de versão do ISPConfig';
+$wb['list_desc_txt'] = 'WARNING: Do not import language files from untrustworthy sources.';
 ?>
diff --git a/interface/web/admin/lib/lang/br_remote_action.lng b/interface/web/admin/lib/lang/br_remote_action.lng
index 420f2cc56c223921c8a958b4fd0b31a6d3c30c9c..d6578c9d6a439ea571019430d535d9388d29607f 100644
--- a/interface/web/admin/lib/lang/br_remote_action.lng
+++ b/interface/web/admin/lib/lang/br_remote_action.lng
@@ -8,5 +8,5 @@ $wb['do_ispcupdate_desc'] = 'Esta ação fará uma atualização do ISPConfig3 n
 $wb['action_scheduled'] = 'Esta ação está agendada para execução';
 $wb['select_all_server'] = 'Todos os servidores';
 $wb['ispconfig_update_title'] = 'ISPConfig update instructions';
-$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructions</a>';
+$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructins</a>';
 ?>
diff --git a/interface/web/admin/lib/lang/br_software_package.lng b/interface/web/admin/lib/lang/br_software_package.lng
index 62ef734079c5dd66dfb5b02390e23398a09233a8..faffe38217fb9cac04020e73e473c6c46e3caaa1 100644
--- a/interface/web/admin/lib/lang/br_software_package.lng
+++ b/interface/web/admin/lib/lang/br_software_package.lng
@@ -1,6 +1,6 @@
 <?php
-$wb["package_title_txt"] = 'Package Title';
-$wb["package_key_txt"] = 'Package Key';
-$wb["Software Package"] = 'Software Package';
+$wb['package_title_txt'] = 'Package Title';
+$wb['package_key_txt'] = 'Package Key';
+$wb['Software Package'] = 'Software Package';
 $wb['Modify software package details'] = 'Modify software package details';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/admin/lib/lang/br_system_config.lng b/interface/web/admin/lib/lang/br_system_config.lng
index 3bc01721545f3775910f1a2d8f9f5527fad1bd4f..544fcc19d2375da477bb00ac674fd20b58a96c1f 100644
--- a/interface/web/admin/lib/lang/br_system_config.lng
+++ b/interface/web/admin/lib/lang/br_system_config.lng
@@ -52,4 +52,11 @@ $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail a
 $wb['webmail_url_error_regex'] = 'Invalid webmail URL';
 $wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
 $wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
 ?>
diff --git a/interface/web/admin/lib/lang/cz.lng b/interface/web/admin/lib/lang/cz.lng
index bc1c9bb83f5b6d25a2eec2a5070dbe154d8b5515..23a64d8ba26d1f3c03cbb31b41ac6703509bd51e 100644
--- a/interface/web/admin/lib/lang/cz.lng
+++ b/interface/web/admin/lib/lang/cz.lng
@@ -48,3 +48,4 @@ $wb['Do OS-Update'] = 'Aktualizovat operační systém';
 $wb['Do ISPConfig-Update'] = 'Aktualizovat ISPConfig';
 $wb['Directive Snippets'] = 'Directive Snippets';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_directive_snippets.lng b/interface/web/admin/lib/lang/cz_directive_snippets.lng
index c6a89099c6bb941d2d31ba4d5bf5e6c8c33909ea..085aec4d40d6de89f9eedf1b09b4fb95eb92de95 100644
--- a/interface/web/admin/lib/lang/cz_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/cz_directive_snippets.lng
@@ -7,3 +7,4 @@ $wb['active_txt'] = 'Aktivní';
 $wb['directive_snippets_name_empty'] = 'Please specify a name for the snippet.';
 $wb['directive_snippets_name_error_unique'] = 'There is already a directive snippet with this name.';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_directive_snippets_list.lng b/interface/web/admin/lib/lang/cz_directive_snippets_list.lng
index c6f444b660ee68e3c5254f9ff2ad2f71fe74efdf..c8cedfe36d4dbd6b642e52f59afef7210336a23a 100644
--- a/interface/web/admin/lib/lang/cz_directive_snippets_list.lng
+++ b/interface/web/admin/lib/lang/cz_directive_snippets_list.lng
@@ -5,3 +5,4 @@ $wb['name_txt'] = 'Name of Snippet';
 $wb['type_txt'] = 'Verze';
 $wb['add_new_record_txt'] = 'Add Directive Snippet';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_firewall.lng b/interface/web/admin/lib/lang/cz_firewall.lng
index c6146ae93d5abd8dcd55c348c570a6490aa146fd..abe744f065e18def6aa6d3d5720d1913365f5943 100644
--- a/interface/web/admin/lib/lang/cz_firewall.lng
+++ b/interface/web/admin/lib/lang/cz_firewall.lng
@@ -9,3 +9,4 @@ $wb['firewall_error_unique'] = 'Pro tento server již existuje záznam firewallu
 $wb['tcp_ports_error_regex'] = 'Znak není povole v definici TCP portu. Povolené symboly jsou čísla, : a ,.';
 $wb['udp_ports_error_regex'] = 'Znak není povole v definici UDP portu. Povolené symboly jsou čísla, : a ,.';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_firewall_list.lng b/interface/web/admin/lib/lang/cz_firewall_list.lng
index aecc4cf06a656efc1e8ca9f3cfc1b22499d56f2c..76ee5c0f76e6bf855067464871ec42a42dbd1401 100644
--- a/interface/web/admin/lib/lang/cz_firewall_list.lng
+++ b/interface/web/admin/lib/lang/cz_firewall_list.lng
@@ -6,3 +6,4 @@ $wb['tcp_port_txt'] = 'Otevřené TCP porty';
 $wb['udp_port_txt'] = 'Otevřené UDP porty';
 $wb['add_new_record_txt'] = 'Přidat záznam';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_groups.lng b/interface/web/admin/lib/lang/cz_groups.lng
index a6281be247dd655b73a2c79aeb4b5a2d78ac5f47..b7bb634f5eaabfb3f2e3190777fbce6684282313 100644
--- a/interface/web/admin/lib/lang/cz_groups.lng
+++ b/interface/web/admin/lib/lang/cz_groups.lng
@@ -3,3 +3,4 @@ $wb['description_txt'] = 'Popis';
 $wb['name_txt'] = 'Skupina';
 $wb['name_err'] = 'Skupina musí mít min. 1, max. 30 znaků.';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_groups_list.lng b/interface/web/admin/lib/lang/cz_groups_list.lng
index c1d7ef9a8bcb830f5986dcc164f7a189dcd75f81..9bc2c9eb720bdd292f108967049a9ed63f6c3e08 100644
--- a/interface/web/admin/lib/lang/cz_groups_list.lng
+++ b/interface/web/admin/lib/lang/cz_groups_list.lng
@@ -5,3 +5,4 @@ $wb['name_txt'] = 'Skupina';
 $wb['add_new_record_txt'] = 'Přidat skupinu';
 $wb['warning_txt'] = '<b>VAROVÁNÍ:</b> Zde neupravujte uživatelská nastavení. Užijte klientská a distributorská nastavení v klientském modulu. Úprava uživatelý nebo skupin zde může způsobit ztrátu dat!';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_iptables.lng b/interface/web/admin/lib/lang/cz_iptables.lng
index a40fc0490f86c20e3c38f874633659306ae192e4..b7d736e15dd4d3fb02bffc6df466652d63439b93 100644
--- a/interface/web/admin/lib/lang/cz_iptables.lng
+++ b/interface/web/admin/lib/lang/cz_iptables.lng
@@ -11,3 +11,4 @@ $wb['source_ip_txt'] = 'Zdrojové adresy';
 $wb['active_txt'] = 'Aktivní';
 $wb['iptables_error_unique'] = 'Stejný záznam pro firewall je již na tomto serveru použit.';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_iptables_list.lng b/interface/web/admin/lib/lang/cz_iptables_list.lng
index 65cef7507eeda94dd43925ee61cfb70c455a3690..02177f6d996733c56ad3970b3ad2dc698b869b88 100644
--- a/interface/web/admin/lib/lang/cz_iptables_list.lng
+++ b/interface/web/admin/lib/lang/cz_iptables_list.lng
@@ -13,3 +13,4 @@ $wb['source_ip_txt'] = 'Zdrojové adresy';
 $wb['active_txt'] = 'Aktivní';
 $wb['iptables_error_unique'] = 'Stejný záznam pro firewall je již na tomto serveru použit.';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_language_add.lng b/interface/web/admin/lib/lang/cz_language_add.lng
index 285dff276113076fa949e4e91a4346a1320ea61f..3af00bf303e5f15abc449cdb5e25fd8e45fc5ca8 100644
--- a/interface/web/admin/lib/lang/cz_language_add.lng
+++ b/interface/web/admin/lib/lang/cz_language_add.lng
@@ -6,3 +6,4 @@ $wb['language_new_hint_txt'] = '2 znakové ISO 639-1 jazykové kódy (Viz: http:
 $wb['btn_save_txt'] = 'Vytvořit novou jazykovou sadu souborů';
 $wb['btn_cancel_txt'] = 'Zpět';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_language_complete.lng b/interface/web/admin/lib/lang/cz_language_complete.lng
index f1e6f4924e2a1f870032bef6265dc41576465384..5f1b2f75b11fcdc3bb910cb2c0c7fc018086045e 100644
--- a/interface/web/admin/lib/lang/cz_language_complete.lng
+++ b/interface/web/admin/lib/lang/cz_language_complete.lng
@@ -5,3 +5,4 @@ $wb['language_select_txt'] = 'Vybrat jazyk k doplnění';
 $wb['btn_save_txt'] = 'Sloučit / doplnit jazykový soubor';
 $wb['btn_cancel_txt'] = 'Zpět';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_language_edit.lng b/interface/web/admin/lib/lang/cz_language_edit.lng
index 2a71ed0a771290f10827769859574f0c5450aaad..086e166bbac2477df48a58d4b797241260005bc9 100644
--- a/interface/web/admin/lib/lang/cz_language_edit.lng
+++ b/interface/web/admin/lib/lang/cz_language_edit.lng
@@ -6,3 +6,4 @@ $wb['lang_file_txt'] = 'Jazykový soubor';
 $wb['btn_save_txt'] = 'Uložit';
 $wb['btn_cancel_txt'] = 'Zpět';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_language_export.lng b/interface/web/admin/lib/lang/cz_language_export.lng
index 7998eea0178696692a810f5e899713bd750358e6..54f138a2ea16aa69199ce70d023e2a584dd8e1d2 100644
--- a/interface/web/admin/lib/lang/cz_language_export.lng
+++ b/interface/web/admin/lib/lang/cz_language_export.lng
@@ -4,3 +4,4 @@ $wb['language_select_txt'] = 'Vybrat jazykovou sadu';
 $wb['btn_save_txt'] = 'Uložit vybranou jazykovou sadu do souboru';
 $wb['btn_cancel_txt'] = 'Zpět';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_language_import.lng b/interface/web/admin/lib/lang/cz_language_import.lng
index 838c325f7f5e01a41af5a411529531f5be20db80..11e42f8041eef086acce587ebd60fa8c75ac58ec 100644
--- a/interface/web/admin/lib/lang/cz_language_import.lng
+++ b/interface/web/admin/lib/lang/cz_language_import.lng
@@ -6,3 +6,4 @@ $wb['language_overwrite_txt'] = 'Přepsat soubor, pokud existuje.';
 $wb['btn_cancel_txt'] = 'Zpět';
 $wb['ignore_version_txt'] = 'Přeskočit kontrolu verze ISPConfigu.';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_language_list.lng b/interface/web/admin/lib/lang/cz_language_list.lng
index b2a78637155d78161423ec338a12165f86010f68..49614e0529a3c16e4ee75bf6811a0e8d1450c842 100644
--- a/interface/web/admin/lib/lang/cz_language_list.lng
+++ b/interface/web/admin/lib/lang/cz_language_list.lng
@@ -5,3 +5,4 @@ $wb['module_txt'] = 'Modul';
 $wb['lang_file_txt'] = 'Jazykový soubor';
 $wb['lang_file_date_txt'] = 'Poslední úprava';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_login_as.lng b/interface/web/admin/lib/lang/cz_login_as.lng
index 3f8e8491fc0aa2ebcb3336d30b96a37d633639d2..0f09d105baa393ffca1a090c1c9e36c1d1eddbbc 100644
--- a/interface/web/admin/lib/lang/cz_login_as.lng
+++ b/interface/web/admin/lib/lang/cz_login_as.lng
@@ -9,3 +9,4 @@ $wb['firewall_error_unique'] = 'There is already a firewall record for this serv
 $wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
 $wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_package_install.lng b/interface/web/admin/lib/lang/cz_package_install.lng
index 64a190d9a1dddf174078dcdfcecb2f3f9c1cd34c..843bab668722c0404eef990059bca584a9abb9f4 100644
--- a/interface/web/admin/lib/lang/cz_package_install.lng
+++ b/interface/web/admin/lib/lang/cz_package_install.lng
@@ -5,3 +5,4 @@ $wb['repo_username_txt'] = 'Uživatel (volitelné)';
 $wb['repo_password_txt'] = 'Heslo (volitelné)';
 $wb['active_txt'] = 'Aktivní';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_remote_action.lng b/interface/web/admin/lib/lang/cz_remote_action.lng
index e1908e2d04fe0259ee7258ae0be1506dc6a7982c..536ccfb357635150d618d05f6b991b613abf2640 100644
--- a/interface/web/admin/lib/lang/cz_remote_action.lng
+++ b/interface/web/admin/lib/lang/cz_remote_action.lng
@@ -10,3 +10,4 @@ $wb['select_all_server'] = 'VÅ¡echny servery';
 $wb['ispconfig_update_title'] = 'ISPConfig pokyny k aktualizaci';
 $wb['ispconfig_update_text'] = 'Přihlaste se jako uživatel root na terminal (shell) serveru a proveďte příkaz<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />spustí se ISPConfig aktualizace.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Klikněte zde pro podrobnější informace o provedení aktualizace</a>';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_remote_user.lng b/interface/web/admin/lib/lang/cz_remote_user.lng
index 17c4f05b5627f710aae5d2d114ce88149c2906d4..c75c165270a0b78b6063f7cc3f923582e80dc993 100644
--- a/interface/web/admin/lib/lang/cz_remote_user.lng
+++ b/interface/web/admin/lib/lang/cz_remote_user.lng
@@ -45,3 +45,4 @@ $wb['repeat_password_txt'] = 'Opakujte heslo';
 $wb['password_mismatch_txt'] = 'Hesla se neshodují.';
 $wb['password_match_txt'] = 'Hesla se shodují.';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_remote_user_list.lng b/interface/web/admin/lib/lang/cz_remote_user_list.lng
index 66b64946e457be5ad87b6b267f31d4c972389e79..c466a2a8b5c6ee6d135a528be50ac5287123becc 100644
--- a/interface/web/admin/lib/lang/cz_remote_user_list.lng
+++ b/interface/web/admin/lib/lang/cz_remote_user_list.lng
@@ -5,3 +5,4 @@ $wb['add_new_record_txt'] = 'Přidat uživatele';
 $wb['parent_remote_userid_txt'] = 'ID';
 $wb['username_txt'] = 'Uživatel';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_server.lng b/interface/web/admin/lib/lang/cz_server.lng
index a087656a1c391d0f1c0b6b1d191c1e4723d26392..ced7e5fb338875042032596af66a009161dcdc04 100644
--- a/interface/web/admin/lib/lang/cz_server.lng
+++ b/interface/web/admin/lib/lang/cz_server.lng
@@ -13,3 +13,4 @@ $wb['- None -'] = '- Žádný -';
 $wb['proxy_server_txt'] = 'Proxy-Server';
 $wb['firewall_server_txt'] = 'Firewall-Server';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng
index 049da2272ee40996805314547d579a4e2faa92df..18e833e31a76bd6b3ef5b387ebcbd8ec4dc4fdbc 100644
--- a/interface/web/admin/lib/lang/cz_server_config.lng
+++ b/interface/web/admin/lib/lang/cz_server_config.lng
@@ -171,11 +171,11 @@ $wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attribu
 $wb['overtraffic_notify_admin_txt'] = 'Při překročení limitu přenesených dat, poslat oznámení adminovi';
 $wb['overtraffic_notify_client_txt'] = 'Při překročení limitu přenesených dat, poslat oznámení klientovi';
 $wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.';
-$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin';
-$wb['overquota_notify_client_txt'] = 'Send quota warnings to client';
+$wb['overquota_notify_admin_txt'] = 'Poslat varování o překročení nebo vyčerpání kvót adminovi';
+$wb['overquota_notify_client_txt'] = 'Poslat varování o překročení nebo vyčerpání kvót uživateli';
 $wb['overquota_notify_onok_txt'] = 'Send quota ok message to client';
-$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days';
-$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages';
+$wb['overquota_notify_freq_txt'] = 'Poslat varování o kvótách každý X dní';
+$wb['overquota_notify_freq_note_txt'] = '0 = poslat zprávu pouze jednou, žádné opakované zprávy';
 $wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level';
 $wb['no_notifications_txt'] = 'No Notifications';
 $wb['monit_url_txt'] = 'Monit URL';
@@ -189,3 +189,4 @@ $wb['munin_password_txt'] = 'Munin Password';
 $wb['munin_url_error_regex'] = 'Invalid Munin URL';
 $wb['munin_url_note_txt'] = 'Placeholder:';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_server_config_list.lng b/interface/web/admin/lib/lang/cz_server_config_list.lng
index 2118c35357cc0b40228eb0153adfda86f36cfdae..9a56c34e2add4a15751ed65e019e80b7b2469858 100644
--- a/interface/web/admin/lib/lang/cz_server_config_list.lng
+++ b/interface/web/admin/lib/lang/cz_server_config_list.lng
@@ -2,3 +2,4 @@
 $wb['list_head_txt'] = 'Konfigurace serveru';
 $wb['server_name_txt'] = 'Server';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_server_ip.lng b/interface/web/admin/lib/lang/cz_server_ip.lng
index 43a382a64609539c266810b73f30a2ce4a3c6878..4f013b5d9b7ef2166346b277c1729044af410d9f 100644
--- a/interface/web/admin/lib/lang/cz_server_ip.lng
+++ b/interface/web/admin/lib/lang/cz_server_ip.lng
@@ -9,3 +9,4 @@ $wb['ip_type_txt'] = 'Verze';
 $wb['virtualhost_port_txt'] = 'HTTP Porty';
 $wb['error_port_syntax'] = 'Neplatné znaky ve volbě HTTP Portů. Prosím, zadejte pouze číselné hodnoty oddělené čárkami. Příklad: 80,443';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_server_ip_list.lng b/interface/web/admin/lib/lang/cz_server_ip_list.lng
index 93b0b77c9b07006918807364085af28604b05ce7..3aaa3abb098f39017b144d985827a1fd95e7ce89 100644
--- a/interface/web/admin/lib/lang/cz_server_ip_list.lng
+++ b/interface/web/admin/lib/lang/cz_server_ip_list.lng
@@ -8,3 +8,4 @@ $wb['virtualhost_txt'] = 'HTTP Vhost';
 $wb['virtualhost_port_txt'] = 'HTTP Ports';
 $wb['ip_type_txt'] = 'Verze';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_server_list.lng b/interface/web/admin/lib/lang/cz_server_list.lng
index ecddbf28e8433d15def51368252ca6d74e976e50..437f376284d03b7c03ddccfbf69bac0e989cbc50 100644
--- a/interface/web/admin/lib/lang/cz_server_list.lng
+++ b/interface/web/admin/lib/lang/cz_server_list.lng
@@ -11,3 +11,4 @@ $wb['add_new_record_txt'] = 'Přidat server';
 $wb['proxy_server_txt'] = 'Proxy';
 $wb['firewall_server_txt'] = 'Firewall';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_server_php.lng b/interface/web/admin/lib/lang/cz_server_php.lng
index 10aba05dd76089c892ff4ee5fe88a7f4bce5e210..fc8f7ad4afb3c4a4c855ab7d5ea7d6b4d9f61399 100644
--- a/interface/web/admin/lib/lang/cz_server_php.lng
+++ b/interface/web/admin/lib/lang/cz_server_php.lng
@@ -14,3 +14,4 @@ $wb['php_fpm_init_script_txt'] = 'Cesta k PHP-FPM init script';
 $wb['php_fpm_ini_dir_txt'] = 'Cesta k php.ini adresáři';
 $wb['php_fpm_pool_dir_txt'] = 'Cesta k PHP-FPM pool adresáři';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_server_php_list.lng b/interface/web/admin/lib/lang/cz_server_php_list.lng
index 36b28fe4118f509767f2153601de8e9085ad86ed..25b95f9c4d7ec65e4b1abae68f3dcd06df5d33df 100644
--- a/interface/web/admin/lib/lang/cz_server_php_list.lng
+++ b/interface/web/admin/lib/lang/cz_server_php_list.lng
@@ -5,3 +5,4 @@ $wb['add_new_record_txt'] = 'Přidat novou verzi PHP';
 $wb['client_id_txt'] = 'Klient';
 $wb['name_txt'] = 'Verze PHP';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_software_package.lng b/interface/web/admin/lib/lang/cz_software_package.lng
index 62ef734079c5dd66dfb5b02390e23398a09233a8..b6421baf170138c8d9acc054fb4944659148da1b 100644
--- a/interface/web/admin/lib/lang/cz_software_package.lng
+++ b/interface/web/admin/lib/lang/cz_software_package.lng
@@ -1,6 +1,7 @@
 <?php
-$wb["package_title_txt"] = 'Package Title';
-$wb["package_key_txt"] = 'Package Key';
-$wb["Software Package"] = 'Software Package';
+$wb['package_title_txt'] = 'Package Title';
+$wb['package_key_txt'] = 'Package Key';
+$wb['Software Package'] = 'Software Package';
 $wb['Modify software package details'] = 'Modify software package details';
-?>
\ No newline at end of file
+?>
+
diff --git a/interface/web/admin/lib/lang/cz_software_package_install.lng b/interface/web/admin/lib/lang/cz_software_package_install.lng
index 0d079ef6d38552240273b77c39b91bc86fd541fd..77941a0ded71fbe939f40581e070fd7790e3da94 100644
--- a/interface/web/admin/lib/lang/cz_software_package_install.lng
+++ b/interface/web/admin/lib/lang/cz_software_package_install.lng
@@ -4,3 +4,4 @@ $wb['install_key_txt'] = 'Enter install key';
 $wb['btn_save_txt'] = 'Spustit instalaci';
 $wb['btn_cancel_txt'] = 'Zrušit';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_software_package_list.lng b/interface/web/admin/lib/lang/cz_software_package_list.lng
index 9d227acb2df30b0bd8f8021918c8d040e832a035..ec1b967fa95d113dce95f2850df8abcaed6231c4 100644
--- a/interface/web/admin/lib/lang/cz_software_package_list.lng
+++ b/interface/web/admin/lib/lang/cz_software_package_list.lng
@@ -8,6 +8,7 @@ $wb['toolsarea_head_txt'] = 'Balíčky';
 $wb['repoupdate_txt'] = 'Aktualizace seznamu balíků';
 $wb['package_id_txt'] = 'místní App-ID';
 $wb['no_packages_txt'] = 'Žádné balíčky nejsou k dispozici';
-$wb['edit_txt'] = 'Edit';
-$wb['delete_txt'] = 'Delete';
+$wb['edit_txt'] = 'Upravit';
+$wb['delete_txt'] = 'Smazat';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_software_repo.lng b/interface/web/admin/lib/lang/cz_software_repo.lng
index 6e200d8d12f9a123559cdb80011746bc094feac7..572d3319c4de323add7f7eeeb8b21d362e8c4cd3 100644
--- a/interface/web/admin/lib/lang/cz_software_repo.lng
+++ b/interface/web/admin/lib/lang/cz_software_repo.lng
@@ -6,3 +6,4 @@ $wb['repo_password_txt'] = 'Heslo (volitelné)';
 $wb['active_txt'] = 'Aktivní';
 $wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_software_repo_list.lng b/interface/web/admin/lib/lang/cz_software_repo_list.lng
index 5c82d4c41f718370b4587752fa636a692fcb7e9f..d45b792fbcc0c14541b9df281aae1e38a101a791 100644
--- a/interface/web/admin/lib/lang/cz_software_repo_list.lng
+++ b/interface/web/admin/lib/lang/cz_software_repo_list.lng
@@ -4,3 +4,4 @@ $wb['active_txt'] = 'Aktivní';
 $wb['repo_name_txt'] = 'Repozitář';
 $wb['repo_url_txt'] = 'URL';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_software_update_list.lng b/interface/web/admin/lib/lang/cz_software_update_list.lng
index c48ad8ce30ec1b6fd8a643204e52cfa503501edd..467fd5f0de27cdb39fd475243082b02f747ae496 100644
--- a/interface/web/admin/lib/lang/cz_software_update_list.lng
+++ b/interface/web/admin/lib/lang/cz_software_update_list.lng
@@ -7,3 +7,4 @@ $wb['version_txt'] = 'Verze';
 $wb['action_txt'] = 'Akce';
 $wb['no_updates_txt'] = 'Žádné aktualizace nejsou k dispozici';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_system_config.lng b/interface/web/admin/lib/lang/cz_system_config.lng
index 167b933328150fb5c0ba61d1eb18069d10091b1d..40804371ec133add1ce6893cb0d6eb63b5805c85 100644
--- a/interface/web/admin/lib/lang/cz_system_config.lng
+++ b/interface/web/admin/lib/lang/cz_system_config.lng
@@ -53,3 +53,4 @@ $wb['webmail_url_error_regex'] = 'Invalid webmail URL';
 $wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
 $wb['webmail_url_note_txt'] = 'Placeholder:';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_tpl_default_admin.lng b/interface/web/admin/lib/lang/cz_tpl_default_admin.lng
index 480d5044215ccee6020d840bf403e3cc11a616bf..efecb6d979a0996d011b8f50768f5d8a344a1bb6 100644
--- a/interface/web/admin/lib/lang/cz_tpl_default_admin.lng
+++ b/interface/web/admin/lib/lang/cz_tpl_default_admin.lng
@@ -16,3 +16,4 @@ $wb['php_fpm_init_script_txt'] = 'Cesta k PHP-FPM init script';
 $wb['php_fpm_ini_dir_txt'] = 'Cesta k php.ini adresáři';
 $wb['php_fpm_pool_dir_txt'] = 'Cesta k PHP-FPM pool adresáři';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_users.lng b/interface/web/admin/lib/lang/cz_users.lng
index 16f4812d68397788cadac99a3a838ad54a9805b4..0324f16a8ddafe265a26a433554d97a029b66fb6 100644
--- a/interface/web/admin/lib/lang/cz_users.lng
+++ b/interface/web/admin/lib/lang/cz_users.lng
@@ -31,3 +31,4 @@ $wb['password_mismatch_txt'] = 'Hesla se neshodují.';
 $wb['password_match_txt'] = 'Hesla se shodují.';
 $wb['username_error_collision'] = 'Uživatelské jméno nesmí být web nebo web a číslo.\\"';
 ?>
+
diff --git a/interface/web/admin/lib/lang/cz_users_list.lng b/interface/web/admin/lib/lang/cz_users_list.lng
index e5a7d1e4de20f603d4393e733c92a6ff8b060c2b..37b0e7e29b5c1e96a104e1393b8bca74a44319dc 100644
--- a/interface/web/admin/lib/lang/cz_users_list.lng
+++ b/interface/web/admin/lib/lang/cz_users_list.lng
@@ -7,3 +7,4 @@ $wb['add_new_record_txt'] = 'Přidat uživatele';
 $wb['warning_txt'] = '<b>VAROVÁNÍ:</b> Zde neupravujte uživatelská nastavení. Užijte klientská a distributorská nastavení v klientském modulu. Úprava uživatelů nebo skupin zde může způsobit ztrátu dat!';
 $wb['groups_txt'] = 'Skupiny';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de.lng b/interface/web/admin/lib/lang/de.lng
index 0a7af751310476b12278bfaa7efabdd5ef5edb6e..152c829df6db06204c9ff938ec66aa2570729cca 100644
--- a/interface/web/admin/lib/lang/de.lng
+++ b/interface/web/admin/lib/lang/de.lng
@@ -48,3 +48,4 @@ $wb['Remote Actions'] = 'Wartung';
 $wb['Do OS-Update'] = 'Betriebssystem Update';
 $wb['Do ISPConfig-Update'] = 'ISPConfig Update';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_directive_snippets.lng b/interface/web/admin/lib/lang/de_directive_snippets.lng
index 7a9b7563be9aa8bf4c70c5bfa72d01f857b82304..9c93c4c8bb7ecb6913a82ca6e357d080e56b3e10 100644
--- a/interface/web/admin/lib/lang/de_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/de_directive_snippets.lng
@@ -5,5 +5,6 @@ $wb['type_txt'] = 'Typ';
 $wb['snippet_txt'] = 'Schnipsel';
 $wb['active_txt'] = 'Aktiv';
 $wb['directive_snippets_name_empty'] = 'Bitte geben Sie einen Namen für den Schnipsel an.';
-$wb['directive_snippets_name_error_unique'] = 'Es existiert schon ein Direktiven-Schnipsel mit diesem Namen.';
+$wb['directive_snippets_name_error_unique'] = 'Es existiert schon ein Direktiven Schnipsel mit diesem Namen.';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_directive_snippets_list.lng b/interface/web/admin/lib/lang/de_directive_snippets_list.lng
index a19d5e8da49033c984604fb8b4875d5d8313a045..d3109a19fa676b05e842e12cd4ce9e405f973808 100644
--- a/interface/web/admin/lib/lang/de_directive_snippets_list.lng
+++ b/interface/web/admin/lib/lang/de_directive_snippets_list.lng
@@ -5,3 +5,4 @@ $wb['name_txt'] = 'Name des Schnipsels';
 $wb['type_txt'] = 'Typ';
 $wb['add_new_record_txt'] = 'Direktiven Schnipsel hinzufügen';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_firewall.lng b/interface/web/admin/lib/lang/de_firewall.lng
index 92b73270f51142f9078eafdeaaf12f00c8f995c1..a475290e1cebbde15ededb184da5ced671ec4e67 100644
--- a/interface/web/admin/lib/lang/de_firewall.lng
+++ b/interface/web/admin/lib/lang/de_firewall.lng
@@ -9,3 +9,4 @@ $wb['firewall_error_unique'] = 'Es gibt bereits einen Firewalldatensatz für die
 $wb['tcp_ports_error_regex'] = 'Zeichen nicht erlaubt in TCP Port Definition. Erlaubte Zeichen sind Nummern, : und ,.';
 $wb['udp_ports_error_regex'] = 'Zeichen nicht erlaubt in UDP Port Definition. Erlaubte Zeichen sind Nummern, : und ,.';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_firewall_list.lng b/interface/web/admin/lib/lang/de_firewall_list.lng
index aefad619ba3d876f33be29d81ee8560732477270..77172d054c08410393e04e3b6f4e47edd7f7fa33 100644
--- a/interface/web/admin/lib/lang/de_firewall_list.lng
+++ b/interface/web/admin/lib/lang/de_firewall_list.lng
@@ -6,3 +6,4 @@ $wb['tcp_port_txt'] = 'Offene TCP Ports';
 $wb['udp_port_txt'] = 'Offene UDP Ports';
 $wb['add_new_record_txt'] = 'Firewalleintrag hinzufügen';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_groups.lng b/interface/web/admin/lib/lang/de_groups.lng
index 80abd65f76b04eabc0f945e8c017314ba979f341..b29c0996f4cf5aba08b91fa526f1f991ec639d9f 100644
--- a/interface/web/admin/lib/lang/de_groups.lng
+++ b/interface/web/admin/lib/lang/de_groups.lng
@@ -3,3 +3,4 @@ $wb['description_txt'] = 'Beschreibung';
 $wb['name_txt'] = 'Gruppe';
 $wb['name_err'] = 'Der Gruppenname muss min. 1, max. 30 Zeichen lang sein.';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_groups_list.lng b/interface/web/admin/lib/lang/de_groups_list.lng
index 244743177184de087808fba36d5f5bfc7c5f8080..23492f19f1a3a217a847babc37c01fdc85760de4 100644
--- a/interface/web/admin/lib/lang/de_groups_list.lng
+++ b/interface/web/admin/lib/lang/de_groups_list.lng
@@ -5,3 +5,4 @@ $wb['name_txt'] = 'Gruppe';
 $wb['add_new_record_txt'] = 'Neue Gruppe hinzufügen';
 $wb['warning_txt'] = '<b>WARNUNG:</b> Bitte hier keine Benutzereinstellungen verändern. Benutzen Sie die Kunden- und Resellereinstellungen im Kundenmodul. Modifizieren der Benutzer oder Gruppen hier könnte zum Datenverlust führen!';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_iptables.lng b/interface/web/admin/lib/lang/de_iptables.lng
index 3e5553234dcf7a8024bfe73f83236ac53b4238b6..9d0a395665c63282238fd61cbb7b3682bced5fbd 100644
--- a/interface/web/admin/lib/lang/de_iptables.lng
+++ b/interface/web/admin/lib/lang/de_iptables.lng
@@ -6,8 +6,9 @@ $wb['protocol_txt'] = 'Protokoll';
 $wb['table_txt'] = 'Table';
 $wb['target_txt'] = 'Ziel';
 $wb['state_txt'] = 'Status';
-$wb['destination_ip_txt'] = 'Ziel Address';
+$wb['destination_ip_txt'] = 'Ziel Adresse';
 $wb['source_ip_txt'] = 'Ausgangs Adresse';
 $wb['active_txt'] = 'Aktiv';
 $wb['iptables_error_unique'] = 'Es besteht bereits eine Firewall Regel für diesen Server.';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_iptables_list.lng b/interface/web/admin/lib/lang/de_iptables_list.lng
index 378db7955500f7eff499f40f9dac95d10a864b76..467368fdee01a1ee365929c6a9149aa69719aeea 100644
--- a/interface/web/admin/lib/lang/de_iptables_list.lng
+++ b/interface/web/admin/lib/lang/de_iptables_list.lng
@@ -13,3 +13,4 @@ $wb['source_ip_txt'] = 'Ausgangs Adresse';
 $wb['active_txt'] = 'Aktiv';
 $wb['iptables_error_unique'] = 'Es besteht bereits eine Firewall Regel für diesen Server.';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_language_add.lng b/interface/web/admin/lib/lang/de_language_add.lng
index 118bdee049d3c854e0088debf806c00216d9e075..7d7234a4b12d49f5f85457bdead5117d6e706440 100644
--- a/interface/web/admin/lib/lang/de_language_add.lng
+++ b/interface/web/admin/lib/lang/de_language_add.lng
@@ -4,5 +4,6 @@ $wb['language_select_txt'] = 'Sprachbasis auswählen';
 $wb['language_new_txt'] = 'Neue Sprache';
 $wb['language_new_hint_txt'] = '2 Buchstaben ISO 639-1 Sprachcode (siehe http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)';
 $wb['btn_save_txt'] = 'Neues Sprachdateiset erstellen';
-$wb['btn_cancel_txt'] = 'Zurück';
+$wb['btn_cancel_txt'] = 'Abbrechen';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_language_complete.lng b/interface/web/admin/lib/lang/de_language_complete.lng
index 1376e0c8a258863d13d077abb8aa6f3389563755..015bd172eec1a5136e048a3cfb1a85af69351d18 100644
--- a/interface/web/admin/lib/lang/de_language_complete.lng
+++ b/interface/web/admin/lib/lang/de_language_complete.lng
@@ -3,5 +3,6 @@ $wb['list_head_txt'] = 'Sprachdatei zusammenführen';
 $wb['list_desc_txt'] = 'Die ausgewählte Sprache mit der englischen Master Sprachdatei zusammenführen. <br />Dies fügt fehlende Sätze aus der englischen Master Sprachdatei in der gewählten Sprache ein.';
 $wb['language_select_txt'] = 'Sprache auswählen';
 $wb['btn_save_txt'] = 'Dateien jetzt zusammenführen';
-$wb['btn_cancel_txt'] = 'Zurück';
+$wb['btn_cancel_txt'] = 'Abbrechen';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_language_edit.lng b/interface/web/admin/lib/lang/de_language_edit.lng
index 30ab21b28d0e65110f0f46e9401642bbadf7a2d7..139b67939007966a8cf134c6f876d89d3bd60c27 100644
--- a/interface/web/admin/lib/lang/de_language_edit.lng
+++ b/interface/web/admin/lib/lang/de_language_edit.lng
@@ -4,5 +4,6 @@ $wb['language_select_txt'] = 'Sprache auswählen';
 $wb['module_txt'] = 'Modul';
 $wb['lang_file_txt'] = 'Sprachdatei';
 $wb['btn_save_txt'] = 'Speichern';
-$wb['btn_cancel_txt'] = 'Zurück';
+$wb['btn_cancel_txt'] = 'Abbrechen';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_language_export.lng b/interface/web/admin/lib/lang/de_language_export.lng
index 70eb466d4ce79c8039ccf4afadd84959199d05ad..2674634ba1e826254c29df3b76a37c524261710d 100644
--- a/interface/web/admin/lib/lang/de_language_export.lng
+++ b/interface/web/admin/lib/lang/de_language_export.lng
@@ -2,5 +2,6 @@
 $wb['list_head_txt'] = 'Sprachdatei exportieren';
 $wb['language_select_txt'] = 'Sprache auswählen';
 $wb['btn_save_txt'] = 'Ausgewähltes Sprachdateiset exportieren';
-$wb['btn_cancel_txt'] = 'Zurück';
+$wb['btn_cancel_txt'] = 'Abbrechen';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_language_import.lng b/interface/web/admin/lib/lang/de_language_import.lng
index 29ee0307874ff7098785a8edd49f1348754972df..bd79ce671017dc4623a5475baaed776aa340edec 100644
--- a/interface/web/admin/lib/lang/de_language_import.lng
+++ b/interface/web/admin/lib/lang/de_language_import.lng
@@ -3,6 +3,7 @@ $wb['list_head_txt'] = 'Sprachdatei importieren';
 $wb['language_import_txt'] = 'Sprache auswählen';
 $wb['btn_save_txt'] = 'Ausgewählte Sprache importieren';
 $wb['language_overwrite_txt'] = 'Datei überschreiben, falls diese schon existiert.';
-$wb['btn_cancel_txt'] = 'Zurück';
+$wb['btn_cancel_txt'] = 'Abbrechen';
 $wb['ignore_version_txt'] = 'ISPConfig Versionsüberprüfung überspringen';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_language_list.lng b/interface/web/admin/lib/lang/de_language_list.lng
index bf75420cfcd2414145d9be72f1ae25e0dde67a8e..6d4a7ae77df2fc419b4db913414f4e03b13490a5 100644
--- a/interface/web/admin/lib/lang/de_language_list.lng
+++ b/interface/web/admin/lib/lang/de_language_list.lng
@@ -5,3 +5,4 @@ $wb['module_txt'] = 'Modul';
 $wb['lang_file_txt'] = 'Sprachdatei';
 $wb['lang_file_date_txt'] = 'Letzte Änderung';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_login_as.lng b/interface/web/admin/lib/lang/de_login_as.lng
index 1edec36c325e464a1d5c1944db9e781e4ef3101d..2388e2e3bf768199b6cc09043d5985e21b388850 100644
--- a/interface/web/admin/lib/lang/de_login_as.lng
+++ b/interface/web/admin/lib/lang/de_login_as.lng
@@ -9,3 +9,4 @@ $wb['firewall_error_unique'] = 'Es gibt bereits einen Firewalleintrag für diese
 $wb['tcp_ports_error_regex'] = 'Es sind nur Zahlen in der TCP Port Definition erlaubt. ';
 $wb['udp_ports_error_regex'] = 'Es sind nur Zahlen in der UDP Port Definition erlaubt., ';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_package_install.lng b/interface/web/admin/lib/lang/de_package_install.lng
index bbacc85d419638c7a2df4ad25906d055226c3bb3..f54fbfefb196e064c8f644b4799dda5d1153e496 100644
--- a/interface/web/admin/lib/lang/de_package_install.lng
+++ b/interface/web/admin/lib/lang/de_package_install.lng
@@ -5,3 +5,4 @@ $wb['repo_username_txt'] = 'Benutzername (optional)';
 $wb['repo_password_txt'] = 'Passwort (optional)';
 $wb['active_txt'] = 'Aktiv';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_remote_action.lng b/interface/web/admin/lib/lang/de_remote_action.lng
index 786f03e0ad2c08353348499b054113c1a44ed923..3fdfbb811b18f0c9829ea9893e49efe6e2cd4755 100644
--- a/interface/web/admin/lib/lang/de_remote_action.lng
+++ b/interface/web/admin/lib/lang/de_remote_action.lng
@@ -10,3 +10,4 @@ $wb['select_all_server'] = 'Alle Server';
 $wb['ispconfig_update_title'] = 'ISPConfig 3 Update Anweisungen';
 $wb['ispconfig_update_text'] = 'Melden Sie sich auf Ihrem Server als root an und führen Sie folgendes Kommando auf der Shell aus<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />um das ISPConfig Update zu starten.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Klicken Sie hier um eine detailierte Beschreibung zu erhalten</a>';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_remote_user.lng b/interface/web/admin/lib/lang/de_remote_user.lng
index 9e7d2a0c7998b076b899fee157ffbaf489ce108f..9f2bdf5eaaa8cc6f6782115c3956dc23b9c8a636 100644
--- a/interface/web/admin/lib/lang/de_remote_user.lng
+++ b/interface/web/admin/lib/lang/de_remote_user.lng
@@ -6,19 +6,19 @@ $wb['username_error_unique'] = 'Benutzername muss einzigartig sein';
 $wb['username_error_empty'] = 'Benutzername darf nicht leer sein';
 $wb['password_error_empty'] = 'Passwort darf nicht leer sein';
 $wb['password_strength_txt'] = 'Passwortstärke:';
-$wb['Mail domain functions'] = 'Mail Domain Funktionen';
-$wb['Mail user functions'] = 'Mail Benutzer Funktionen';
-$wb['Mail alias functions'] = 'Mail Alias Funktionen';
-$wb['Mail forward functions'] = 'Mail Weiterleitung Funktionen';
-$wb['Mail catchall functions'] = 'Mail Catchall Funktionen';
-$wb['Mail transport functions'] = 'Mail Transport Funktionen';
-$wb['Mail whitelist functions'] = 'Mail Whitelist Funktionen';
-$wb['Mail blacklist functions'] = 'Mail Blacklist Funktionen';
-$wb['Mail spamfilter user functions'] = 'Mail Spamfilter Benutzer Funktionen';
-$wb['Mail spamfilter policy functions'] = 'Mail Spamfilter Richtlinien Funktionen';
-$wb['Mail fetchmail functions'] = 'Mail Fetchmail Funktionen';
-$wb['Mail user filter functions'] = 'Mail Benutzer Filter Funktionen';
-$wb['Mail filter functions'] = 'Mail Filter Funktionen';
+$wb['Mail domain functions'] = 'E-Mail Domain Funktionen';
+$wb['Mail user functions'] = 'E-Mail Benutzer Funktionen';
+$wb['Mail alias functions'] = 'E-Mail Alias Funktionen';
+$wb['Mail forward functions'] = 'E-Mail Weiterleitung Funktionen';
+$wb['Mail catchall functions'] = 'E-Mail Catchall Funktionen';
+$wb['Mail transport functions'] = 'E-Mail Transport Funktionen';
+$wb['Mail whitelist functions'] = 'E-Mail Whitelist Funktionen';
+$wb['Mail blacklist functions'] = 'E-Mail Blacklist Funktionen';
+$wb['Mail spamfilter user functions'] = 'E-Mail Spamfilter Benutzer Funktionen';
+$wb['Mail spamfilter policy functions'] = 'E-Mail Spamfilter Richtlinien Funktionen';
+$wb['Mail fetchmail functions'] = 'E-Mail Fetchmail Funktionen';
+$wb['Mail user filter functions'] = 'E-Mail Benutzer Filter Funktionen';
+$wb['Mail filter functions'] = 'E-Mail Filter Funktionen';
 $wb['Client functions'] = 'Kunden  Funktionen';
 $wb['Sites cron functions'] = 'Webseiten Cron Funktionen';
 $wb['Sites database functions'] = 'Webseiten Datenbanken Funktionen';
@@ -39,9 +39,10 @@ $wb['DNS ptr functions'] = 'DNS ptr Funktionen';
 $wb['DNS rp functions'] = 'DNS rp Funktionen';
 $wb['DNS srv functions'] = 'DNS srv Funktionen';
 $wb['DNS txt functions'] = 'DNS txt Funktionen';
-$wb['Mail mailing list functions'] = 'Mail Mailinglisten Funktionen';
+$wb['Mail mailing list functions'] = 'Mailinglisten Funktionen';
 $wb['generate_password_txt'] = 'Passwort erzeugen';
 $wb['repeat_password_txt'] = 'Passwort wiederholen';
 $wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
 $wb['password_match_txt'] = 'Die Passwörter stimmen überein.';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_remote_user_list.lng b/interface/web/admin/lib/lang/de_remote_user_list.lng
index 4a3c6fe1d5778feca50935bad6c02c804a7616ba..a0485a9077469cbcae64ad11d561b130d680a86e 100644
--- a/interface/web/admin/lib/lang/de_remote_user_list.lng
+++ b/interface/web/admin/lib/lang/de_remote_user_list.lng
@@ -5,3 +5,4 @@ $wb['add_new_record_txt'] = 'Neuen Benutzer hinzufügen';
 $wb['parent_remote_userid_txt'] = 'Benutzer ID';
 $wb['username_txt'] = 'Benutzername';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_server.lng b/interface/web/admin/lib/lang/de_server.lng
index 50f809048859ba68451d7f2593a3475100127f7f..12d2ba7527dc8553272332862b58b67a27311d5b 100644
--- a/interface/web/admin/lib/lang/de_server.lng
+++ b/interface/web/admin/lib/lang/de_server.lng
@@ -13,3 +13,4 @@ $wb['- None -'] = '- Nichts ausgewählt -';
 $wb['proxy_server_txt'] = 'Proxy Server';
 $wb['firewall_server_txt'] = 'Firewall Server';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng
index acb6b3dd8a261bcd8d24eff4adce51e84a0936f0..612efe72d41d0d04295168252ea9aad490121ae2 100644
--- a/interface/web/admin/lib/lang/de_server_config.lng
+++ b/interface/web/admin/lib/lang/de_server_config.lng
@@ -146,7 +146,6 @@ $wb['php_fpm_socket_dir_error_empty'] = 'PHP-FPM Socket Verzeichnis ist leer.';
 $wb['fastcgi_config_syntax_txt'] = 'FastCGI Konfigurations Syntax';
 $wb['try_rescue_txt'] = 'Aktiviere Service Monitoring und Neustart bei Unerreichbarkeit';
 $wb['do_not_try_rescue_httpd_txt'] = 'Deaktiviere HTTPD Monitoring';
-$wb['do_not_try_rescue_mongodb_txt'] = 'Deaktiviere MongoDB Monitoring';
 $wb['do_not_try_rescue_mysql_txt'] = 'Deaktiviere MySQL Monitoring';
 $wb['do_not_try_rescue_mail_txt'] = 'Deaktiviere E-Mail Monitoring';
 $wb['rescue_description_txt'] = '<b>Information:</b> Falls Sie MySQL stoppen möchten, wählen Sie die Funktion \'Deaktiviere MySQL Monitoring\' und warten Sie 2 bis 3 Minuten. Wenn Sie nicht 2 bis 3 Miunten warten wird ISPConfig versuchen MySQL wieder zu starten.';
@@ -169,24 +168,25 @@ $wb['firewall_txt'] = 'Firewall';
 $wb['mailbox_quota_stats_txt'] = 'E-Mailkonto Beschränkung Statistiken';
 $wb['enable_ip_wildcard_txt'] = 'IP Adressen Wildcard (*) aktivieren';
 $wb['web_folder_protection_txt'] = 'Webverzeichnis unveränderlich machen (erweiterte Attribute)';
-$wb['overtraffic_notify_admin_txt'] = 'Ãœberschreiten des Transfer Limits an den Administrator senden';
-$wb['overtraffic_notify_client_txt'] = 'Ãœberschreiten des Transfer Limits an den Kunden senden';
+$wb['overtraffic_notify_admin_txt'] = 'Ãœberschreiten des Datentransfer Limits an den Administrator senden';
+$wb['overtraffic_notify_client_txt'] = 'Ãœberschreiten des Datentransfer Limits an den Kunden senden';
 $wb['rbl_error_regex'] = 'Bitte geben Sie gültige RBL-Hostnamen an.';
-$wb['overquota_notify_admin_txt'] = 'Quota-Warnungen an den Administrator senden';
-$wb['overquota_notify_client_txt'] = 'Quota-Warnungen an den Kunden senden';
-$wb['overquota_notify_onok_txt'] = 'Meldung an den Kunden senden, wenn Belegung wieder ok';
-$wb['overquota_notify_freq_txt'] = 'Quota-Warnung alle X Tage versenden';
+$wb['overquota_notify_admin_txt'] = 'Warung bei Erreichen einer Beschränkung per E-Mail an den Administrator senden';
+$wb['overquota_notify_client_txt'] = 'Warnung bei Erreichen einer Beschränkung per E-Mail an den Kunden senden';
+$wb['overquota_notify_onok_txt'] = 'Meldung an den Kunden senden, wenn Beschränkung wieder OK ist';
+$wb['overquota_notify_freq_txt'] = 'Warnung der Beschränkung alle X Tage versenden';
 $wb['overquota_notify_freq_note_txt'] = '0 = Meldung nur einmalig versenden, keine Wiederholung';
 $wb['admin_notify_events_txt'] = 'Sende E-Mail an Administrator ab folgendem Level';
 $wb['no_notifications_txt'] = 'Keine Benachrichtigungen';
-$wb['monit_url_txt'] = 'Monit-URL';
-$wb['monit_user_txt'] = 'Monit-Benutzer';
-$wb['monit_password_txt'] = 'Monit-Passwort';
-$wb['monit_url_error_regex'] = 'Ungültige Monit-URL';
+$wb['monit_url_txt'] = 'Monit URL';
+$wb['monit_user_txt'] = 'Monit Benutzer';
+$wb['monit_password_txt'] = 'Monit Passwort';
+$wb['monit_url_error_regex'] = 'Ungültige Monit URL';
 $wb['monit_url_note_txt'] = 'Platzhalter:';
-$wb['munin_url_txt'] = 'Munin-URL';
-$wb['munin_user_txt'] = 'Munin-Benutzer';
-$wb['munin_password_txt'] = 'Munin-Passwort';
-$wb['munin_url_error_regex'] = 'Ungültige Munin-URL';
+$wb['munin_url_txt'] = 'Munin URL';
+$wb['munin_user_txt'] = 'Munin Benutzer';
+$wb['munin_password_txt'] = 'Munin Passwort';
+$wb['munin_url_error_regex'] = 'Ungültige Munin URL';
 $wb['munin_url_note_txt'] = 'Platzhalter:';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_server_config_list.lng b/interface/web/admin/lib/lang/de_server_config_list.lng
index 191b2c8d32f65ec714a135fef04f123f0e4b9c3a..9ff7f9b640f54d8a0314158873ce08df5e3c6a77 100644
--- a/interface/web/admin/lib/lang/de_server_config_list.lng
+++ b/interface/web/admin/lib/lang/de_server_config_list.lng
@@ -2,3 +2,4 @@
 $wb['list_head_txt'] = 'Serverkonfiguration';
 $wb['server_name_txt'] = 'Server';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_server_ip.lng b/interface/web/admin/lib/lang/de_server_ip.lng
index 5757b165cbf47391c513ed10567d3a58208bcfa6..26aff5daad963229b1c0a4a7ed0b9552af65e83d 100644
--- a/interface/web/admin/lib/lang/de_server_ip.lng
+++ b/interface/web/admin/lib/lang/de_server_ip.lng
@@ -1,11 +1,12 @@
 <?php
 $wb['server_id_txt'] = 'Server';
 $wb['ip_address_txt'] = 'IP Adresse';
-$wb['virtualhost_txt'] = 'HTTP NameVirtualHost';
+$wb['virtualhost_txt'] = 'NameVirtualHost';
 $wb['ip_error_wrong'] = 'Die IP Adresse ist ungültig';
 $wb['ip_error_unique'] = 'Die IP Adresse muss einzigartig sein';
 $wb['client_id_txt'] = 'Kunde';
 $wb['ip_type_txt'] = 'Typ';
-$wb['virtualhost_port_txt'] = 'HTTP Ports';
-$wb['error_port_syntax'] = 'Ungültige Zeichen im Ports Feld. Bitte geben Sie nur komma-separierte Nummern an. Beispiel: 80,443';
+$wb['virtualhost_port_txt'] = 'Ports';
+$wb['error_port_syntax'] = 'Ungültige Zeichen im Ports Feld. Bitte geben Sie nur Komma separierte Nummern an. Beispiel: 80,443';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_server_ip_list.lng b/interface/web/admin/lib/lang/de_server_ip_list.lng
index 37f237c9e2232ba2cb96447e524bc03730b6d31c..9b36a5adf2370eb29264ede32553f54c124b61a5 100644
--- a/interface/web/admin/lib/lang/de_server_ip_list.lng
+++ b/interface/web/admin/lib/lang/de_server_ip_list.lng
@@ -8,3 +8,4 @@ $wb['virtualhost_txt'] = 'HTTP vHost';
 $wb['virtualhost_port_txt'] = 'HTTP Ports';
 $wb['ip_type_txt'] = 'Typ';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_server_list.lng b/interface/web/admin/lib/lang/de_server_list.lng
index e38a5db4133c2c2fa86f892cfe36f2a73ebb7738..193dbc9edef7c73ea7668747ddaed99471fffff4 100644
--- a/interface/web/admin/lib/lang/de_server_list.lng
+++ b/interface/web/admin/lib/lang/de_server_list.lng
@@ -11,3 +11,4 @@ $wb['add_new_record_txt'] = 'Neuen Server hinzufügen';
 $wb['proxy_server_txt'] = 'Proxyserver';
 $wb['firewall_server_txt'] = 'Firewallserver';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_server_php.lng b/interface/web/admin/lib/lang/de_server_php.lng
index 9b26ea3c6d4feb878dc80518474e488524352ba6..30f527a56bedc6a62cd4725c19d42900167e7d23 100644
--- a/interface/web/admin/lib/lang/de_server_php.lng
+++ b/interface/web/admin/lib/lang/de_server_php.lng
@@ -14,3 +14,4 @@ $wb['php_fpm_init_script_txt'] = 'Pfad zum PHP-FPM Init Script';
 $wb['php_fpm_ini_dir_txt'] = 'Pfad zum php.ini Verzeichnis';
 $wb['php_fpm_pool_dir_txt'] = 'Pfad zum PHP-FPM Pool Verzeichnis';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_server_php_list.lng b/interface/web/admin/lib/lang/de_server_php_list.lng
index d775fc6c00b535376441399a9c4d6f3b016b3e43..712beda2e72ddae194059c263de91640c58505e7 100644
--- a/interface/web/admin/lib/lang/de_server_php_list.lng
+++ b/interface/web/admin/lib/lang/de_server_php_list.lng
@@ -5,3 +5,4 @@ $wb['add_new_record_txt'] = 'Neue PHP Version hinzufügen';
 $wb['client_id_txt'] = 'Kunde';
 $wb['name_txt'] = 'PHP Name';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_software_package.lng b/interface/web/admin/lib/lang/de_software_package.lng
index 4c3431b7643f0c09db684fb4a97025f7f7cb8a0f..7f1504572b4c2639dd21a0b4d84c342e325b0e71 100644
--- a/interface/web/admin/lib/lang/de_software_package.lng
+++ b/interface/web/admin/lib/lang/de_software_package.lng
@@ -1,6 +1,7 @@
 <?php
-$wb['package_title_txt'] = 'Paket-Titel';
-$wb['package_key_txt'] = 'Paket-Key';
-$wb['Software Package'] = 'Software-Paket';
-$wb['Modify software package details'] = 'Software-Paket-Einstellungen bearbeiten';
+$wb['package_title_txt'] = 'Softwarepaket Titel';
+$wb['package_key_txt'] = 'Softwarepaket Schlüssel';
+$wb['Software Package'] = 'Softwarepaket';
+$wb['Modify software package details'] = 'Softwarepaket Einstellungen bearbeiten';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_software_package_install.lng b/interface/web/admin/lib/lang/de_software_package_install.lng
index 1ef69d13d32b0fd9cebc50cefc2e3b7b61623513..842846df744e551d6c52d74e5fa2b04a7659ae3a 100644
--- a/interface/web/admin/lib/lang/de_software_package_install.lng
+++ b/interface/web/admin/lib/lang/de_software_package_install.lng
@@ -1,6 +1,7 @@
 <?php
 $wb['head_txt'] = 'Softwarepaket installieren';
-$wb['install_key_txt'] = 'Installationskey eingeben';
+$wb['install_key_txt'] = 'Installationsschlüssel eingeben';
 $wb['btn_save_txt'] = 'Installation starten';
 $wb['btn_cancel_txt'] = 'Abbrechen';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_software_package_list.lng b/interface/web/admin/lib/lang/de_software_package_list.lng
index 75b7504390489492a4d84de033807463aaef0540..3d0555365f5377a891d9e78c1183e30e6d326caa 100644
--- a/interface/web/admin/lib/lang/de_software_package_list.lng
+++ b/interface/web/admin/lib/lang/de_software_package_list.lng
@@ -1,13 +1,14 @@
 <?php
 $wb['list_head_txt'] = 'Softwarepakete';
 $wb['installed_txt'] = 'Status';
-$wb['package_title_txt'] = 'Paket';
+$wb['package_title_txt'] = 'Softwarepaket';
 $wb['package_description_txt'] = 'Beschreibung';
 $wb['action_txt'] = 'Aktion';
-$wb['toolsarea_head_txt'] = 'Pakete';
+$wb['toolsarea_head_txt'] = 'Softwarepakete';
 $wb['repoupdate_txt'] = 'Softwarepakete Liste updaten';
-$wb['package_id_txt'] = 'Lokale App ID';
-$wb['no_packages_txt'] = 'Keine Pakete verfügbar';
+$wb['package_id_txt'] = 'Lokale Softwarepaket ID';
+$wb['no_packages_txt'] = 'Keine Softwarepakete verfügbar';
 $wb['edit_txt'] = 'Bearbeiten';
 $wb['delete_txt'] = 'Löschen';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_software_repo.lng b/interface/web/admin/lib/lang/de_software_repo.lng
index 2a8cf150b06d38190ea6a90f811444610c453c8d..50e501903832ba6dcaf7ec6095f213a3c542ba8b 100644
--- a/interface/web/admin/lib/lang/de_software_repo.lng
+++ b/interface/web/admin/lib/lang/de_software_repo.lng
@@ -1,8 +1,9 @@
 <?php
-$wb['repo_name_txt'] = 'Repository';
+$wb['repo_name_txt'] = 'Archiv Name';
 $wb['repo_url_txt'] = 'URL';
 $wb['repo_username_txt'] = 'Benutzername (optional)';
 $wb['repo_password_txt'] = 'Passwort (optional)';
 $wb['active_txt'] = 'Aktiv';
-$wb['Software Repository which may contain addons or updates'] = 'Software-Repository, das Add-Ons oder Updates enthalten kann';
+$wb['Software Repository which may contain addons or updates'] = 'Software Archiv, das Add-Ons oder Updates enthalten kann';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_software_repo_list.lng b/interface/web/admin/lib/lang/de_software_repo_list.lng
index db6f49fd4edd70c55ebc84f05dc84fc704e861ce..133ef3ab42a1db8224c7f780e2660a3154a4193c 100644
--- a/interface/web/admin/lib/lang/de_software_repo_list.lng
+++ b/interface/web/admin/lib/lang/de_software_repo_list.lng
@@ -1,6 +1,7 @@
 <?php
-$wb['list_head_txt'] = 'Repository';
+$wb['list_head_txt'] = 'Archiv';
 $wb['active_txt'] = 'Aktiv';
-$wb['repo_name_txt'] = 'Repository';
+$wb['repo_name_txt'] = 'Archiv Name';
 $wb['repo_url_txt'] = 'URL';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_software_update_list.lng b/interface/web/admin/lib/lang/de_software_update_list.lng
index cf31e88154c60bfcdc82fb9b9f778dbbf737eb9b..e5a3ca729ae8d4f449ec7304ce7c6753780dac92 100644
--- a/interface/web/admin/lib/lang/de_software_update_list.lng
+++ b/interface/web/admin/lib/lang/de_software_update_list.lng
@@ -7,3 +7,4 @@ $wb['version_txt'] = 'Version';
 $wb['action_txt'] = 'Aktion';
 $wb['no_updates_txt'] = 'Keine Updates verfügbar';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_system_config.lng b/interface/web/admin/lib/lang/de_system_config.lng
index 217b95de8bf3b545de5793d082ad95765bc411db..2490768e20894443ef297996ff01d7d629de386b 100644
--- a/interface/web/admin/lib/lang/de_system_config.lng
+++ b/interface/web/admin/lib/lang/de_system_config.lng
@@ -48,15 +48,9 @@ $wb['phpmyadmin_url_error_regex'] = 'Falsche phpMyAdmin URL';
 $wb['client_username_web_check_disabled_txt'] = 'Deaktiviere die Kunden Benutzernamen Überprüfung für den Begriff <b>web<b>.';
 $wb['mailbox_show_autoresponder_tab_txt'] = 'Zeige Autoresponder Reiter in E-Mail Kontodetails';
 $wb['mailbox_show_mail_filter_tab_txt'] = 'Zeige E-Mail Filter Reiter in E-Mail Kontodetails';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Zeige Benutzerregel Reiter in E-Mail Kontodetails';$wb['webmail_url_error_regex'] = 'Falsche Webmail URL';
-$wb['reseller_can_use_options_txt'] = 'Reseller können den Optionen Reiter bei Webseiten verwenden';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Zeige Benutzerregel Reiter in E-Mail Kontodetails';
+$wb['webmail_url_error_regex'] = 'Falsche Webmail URL';
 $wb['phpmyadmin_url_note_txt'] = 'Platzhalter:';
 $wb['webmail_url_note_txt'] = 'Platzhalter:';
-$wb['available_dashlets_note_txt'] = 'Verfügbare Dashlets:';
-$wb['admin_dashlets_left_txt'] = 'Admin-Dashlets links';
-$wb['admin_dashlets_right_txt'] = 'Admin-Dashlets rechts';
-$wb['reseller_dashlets_left_txt'] = 'Reseller-Dashlets links';
-$wb['reseller_dashlets_right_txt'] = 'Reseller-Dashlets rechts';
-$wb['client_dashlets_left_txt'] = 'Kunden-Dashlets links';
-$wb['client_dashlets_right_txt'] = 'Kunden-Dashlets rechts';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_tpl_default_admin.lng b/interface/web/admin/lib/lang/de_tpl_default_admin.lng
index 97674003eefdcc101b96a35e1fc98dbdbc5988ac..fda3af0f0cdfde780d42b9911a58b5a4a1226081 100644
--- a/interface/web/admin/lib/lang/de_tpl_default_admin.lng
+++ b/interface/web/admin/lib/lang/de_tpl_default_admin.lng
@@ -16,3 +16,4 @@ $wb['php_fpm_init_script_txt'] = 'Pfad zum PHP-FPM Init Script';
 $wb['php_fpm_ini_dir_txt'] = 'Pfad zum php.ini Verzeichnis';
 $wb['php_fpm_pool_dir_txt'] = 'Pfad zum PHP-FPM Pool Verzeichnis';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_users.lng b/interface/web/admin/lib/lang/de_users.lng
index 413a402814cca3a67bb137770d8b9877567e8c8f..fd09475b6d2530c76107e60c8f5723a025e9ed9d 100644
--- a/interface/web/admin/lib/lang/de_users.lng
+++ b/interface/web/admin/lib/lang/de_users.lng
@@ -31,3 +31,4 @@ $wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
 $wb['password_match_txt'] = 'Die Passwörter stimmen überein.';
 $wb['username_error_collision'] = 'Der Benutzername darf nicht <b>web<b> oder <b>web<b> gefolgt von einer Zahl sein.';
 ?>
+
diff --git a/interface/web/admin/lib/lang/de_users_list.lng b/interface/web/admin/lib/lang/de_users_list.lng
index c635ba72844dcf9724d5a5df06d89c6202c6b012..8cb2a46a83ddeb92a11c2105b6a1c830c5b02305 100644
--- a/interface/web/admin/lib/lang/de_users_list.lng
+++ b/interface/web/admin/lib/lang/de_users_list.lng
@@ -7,3 +7,4 @@ $wb['groups_txt'] = 'Gruppen';
 $wb['add_new_record_txt'] = 'Neuen Benutzer hinzufügen';
 $wb['warning_txt'] = '<b>WARNUNG:</b> Bitte hier keine Benutzereinstellungen verändern. Benutzen Sie die Kunden- und Resellereinstellungen im Kundenmodul. Modifizieren der Benutzer oder Gruppen hier könnte zum Datenverlust führen!';
 ?>
+
diff --git a/interface/web/admin/lib/lang/el.lng b/interface/web/admin/lib/lang/el.lng
index 010a5506df6d3ab750ad751a7365b97c1e2693a0..4926ef2ad0894463e85e13f39a9029b7e6a7ea4f 100644
--- a/interface/web/admin/lib/lang/el.lng
+++ b/interface/web/admin/lib/lang/el.lng
@@ -26,13 +26,14 @@ $wb['Web'] = 'Web';
 $wb['FastCGI'] = 'FastCGI';
 $wb['Jailkit'] = 'Jailkit';
 $wb['Rescue'] = 'Rescue';
-$wb['Server IP addresses'] = 'Server IP addresses';
-$wb['Additional PHP Versions'] = 'Additional PHP Versions';
+$wb['Server IP addresses'] = 'Διευθύνσεις IP Server';
+$wb['Additional PHP Versions'] = 'Πρόσθετες εκδόσεις PHP';
+$wb['Directive Snippets'] = 'Directive Snippets';
 $wb['Firewall'] = 'Firewall';
-$wb['Interface'] = 'Interface';
-$wb['Interface Config'] = 'Main Config';
+$wb['Interface'] = 'Διεπαφή';
+$wb['Interface Config'] = 'Βασική Διαμόρφωση';
 $wb['Domains'] = 'Domains';
-$wb['Misc'] = 'Misc';
+$wb['Misc'] = 'Διάφορα';
 $wb['Software'] = 'Εφαρμογές & Πρόσθετα';
 $wb['Repositories'] = 'Αποθετήρια';
 $wb['Packages'] = 'Πακέτα';
@@ -46,5 +47,4 @@ $wb['Import'] = 'Εισαγωγή';
 $wb['Remote Actions'] = 'Απομακρυσμένες Ενέργειες';
 $wb['Do OS-Update'] = 'Αναβάθμιση λειτουργικού συστήματος';
 $wb['Do ISPConfig-Update'] = 'Αναβάθμιση ISPConfig';
-$wb['Directive Snippets'] = 'Directive Snippets';
 ?>
diff --git a/interface/web/admin/lib/lang/el_directive_snippets.lng b/interface/web/admin/lib/lang/el_directive_snippets.lng
index d836ab0da0d88fc0a5c4aa9e78eaa5b7d3fd557d..3bdc1e2df174aa760077cf33acd2e02eed7bfb45 100644
--- a/interface/web/admin/lib/lang/el_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/el_directive_snippets.lng
@@ -1,9 +1,9 @@
 <?php
 $wb['Directive Snippets'] = 'Directive Snippets';
-$wb['name_txt'] = 'Name of Snippet';
-$wb['type_txt'] = 'Type';
+$wb['name_txt'] = 'Όνομα Snippet';
+$wb['type_txt'] = 'Τύπος';
 $wb['snippet_txt'] = 'Snippet';
-$wb['active_txt'] = 'Active';
-$wb['directive_snippets_name_empty'] = 'Please specify a name for the snippet.';
-$wb['directive_snippets_name_error_unique'] = 'There is already a directive snippet with this name.';
+$wb['active_txt'] = 'Ενεργό';
+$wb['directive_snippets_name_empty'] = 'Παρακαλούμε ορίστε όνομα snippet.';
+$wb['directive_snippets_name_error_unique'] = 'Υπάρχει ήδη ένα directive snippet με αυτό το όνομα.';
 ?>
diff --git a/interface/web/admin/lib/lang/el_directive_snippets_list.lng b/interface/web/admin/lib/lang/el_directive_snippets_list.lng
index 4124ea34641c48c25db6319110a5f119264242e6..1461c4e4bad90c4844bced29d27518900e6b2279 100644
--- a/interface/web/admin/lib/lang/el_directive_snippets_list.lng
+++ b/interface/web/admin/lib/lang/el_directive_snippets_list.lng
@@ -1,7 +1,7 @@
 <?php
 $wb['list_head_txt'] = 'Directive Snippets';
-$wb['active_txt'] = 'Active';
-$wb['name_txt'] = 'Name of Snippet';
-$wb['type_txt'] = 'Type';
-$wb['add_new_record_txt'] = 'Add Directive Snippet';
+$wb['active_txt'] = 'Ενεργό';
+$wb['name_txt'] = 'Όνομα Snippet';
+$wb['type_txt'] = 'Τύπος';
+$wb['add_new_record_txt'] = 'Προσθήκη Directive Snippet';
 ?>
diff --git a/interface/web/admin/lib/lang/el_firewall.lng b/interface/web/admin/lib/lang/el_firewall.lng
index ff31bab28b9c2b375a1c242ef1173bc284b92a22..a0003f4fa63135103db2fe4487365fb0b423b205 100644
--- a/interface/web/admin/lib/lang/el_firewall.lng
+++ b/interface/web/admin/lib/lang/el_firewall.lng
@@ -5,7 +5,7 @@ $wb['udp_port_txt'] = 'Ανοιχτές θύρες UDP';
 $wb['tcp_port_help_txt'] = 'Χωρισμένες με κόμα';
 $wb['udp_port_help_txt'] = 'Χωρισμένες με κόμα';
 $wb['active_txt'] = 'Ενεργό';
-$wb['firewall_error_unique'] = 'Υπάρχει ήδη μια εγγραφή firewall για αυτό τον σερωερ server.';
+$wb['firewall_error_unique'] = 'Υπάρχει ήδη μια εγγραφή firewall για αυτό τον server.';
 $wb['tcp_ports_error_regex'] = 'Οι χαρακτήρες δεν επιτρέπονται στον ορισμό θυρών tcp. Επιτρέπονται μόνο αριθμοί, : και ,.';
 $wb['udp_ports_error_regex'] = 'Οι χαρακτήρες δεν επιτρέπονται στον ορισμό θυρών udp. Επιτρέπονται μόνο αριθμοί, : και ,.';
 ?>
diff --git a/interface/web/admin/lib/lang/el_language_import.lng b/interface/web/admin/lib/lang/el_language_import.lng
index 4bb61c4ef5e5a6cf7e6308c6e01e6c618eac217c..83504694b5bc2fc44b7960dbc42e294cc5fde920 100644
--- a/interface/web/admin/lib/lang/el_language_import.lng
+++ b/interface/web/admin/lib/lang/el_language_import.lng
@@ -5,4 +5,5 @@ $wb['btn_save_txt'] = 'Εισαγωγή του επιλεγμένου αρχεί
 $wb['language_overwrite_txt'] = 'Αντικατάσταση αρχείου, αν υπάρχει.';
 $wb['btn_cancel_txt'] = 'Επιστροφή';
 $wb['ignore_version_txt'] = 'Παράλειψη ελέγχου έκδοσης ISPConfig';
+$wb['list_desc_txt'] = 'WARNING: Do not import language files from untrustworthy sources.';
 ?>
diff --git a/interface/web/admin/lib/lang/el_login_as.lng b/interface/web/admin/lib/lang/el_login_as.lng
index c660ff1a4ba578c8c6201b3a0f0b01d4e3793db5..b93f01bbb5c54facfe1ad3b5f646f1d895199d0b 100644
--- a/interface/web/admin/lib/lang/el_login_as.lng
+++ b/interface/web/admin/lib/lang/el_login_as.lng
@@ -1,11 +1,11 @@
 <?php
-$wb['login_1_txt'] = 'Do you want to login as user';
-$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.';
-$wb['btn_yes_txt'] = 'Yes, login as Client';
-$wb['btn_back_txt'] = 'No, back to list';
-$wb['udp_port_help_txt'] = 'Separated by comma';
-$wb['active_txt'] = 'Active';
-$wb['firewall_error_unique'] = 'There is already a firewall record for this server.';
-$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
-$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
+$wb['login_1_txt'] = 'Θέλετε να εισέλθετε ως χρήστης;';
+$wb['login_2_txt'] = 'Αν το κάνετε, μπορείτε να  \\"επιστρέψετε\\" κάνοντας αποσύνδεση.';
+$wb['btn_yes_txt'] = 'Ναι, είσοδος ως Πελάτης';
+$wb['btn_back_txt'] = 'Όχι, επιστροφή στην λίστα';
+$wb['udp_port_help_txt'] = 'διαχωρισμός με κόμα';
+$wb['active_txt'] = 'Εν Ενεργεία';
+$wb['firewall_error_unique'] = 'Υπάρχει ήδη μια εγγραφή Firewall για αυτόν τον server.';
+$wb['tcp_ports_error_regex'] = 'Μη έγκυρος χαρακτήρας για τον ορισμός θύρας tcp. Επιτρεπόμενοι χαρακτήρες είναι οι αριθμοί, η \\":\\" και οι \\",\\".';
+$wb['udp_ports_error_regex'] = 'Μη έγκυρος χαρακτήρας για τον ορισμός θύρας udp. Επιτρεπόμενοι χαρακτήρες είναι οι αριθμοί, η \\":\\" και οι \\",\\".';
 ?>
diff --git a/interface/web/admin/lib/lang/el_remote_action.lng b/interface/web/admin/lib/lang/el_remote_action.lng
index fc0e448550bf121093879163c1985ec01f192595..4d9487844626c01a9cd1c53671bc99c500f035a5 100644
--- a/interface/web/admin/lib/lang/el_remote_action.lng
+++ b/interface/web/admin/lib/lang/el_remote_action.lng
@@ -7,6 +7,6 @@ $wb['do_ispcupdate_caption'] = 'Εκκίνηση αναβάθμισης ISPConfi
 $wb['do_ispcupdate_desc'] = 'Αυτή η ενέργεια κάνει αναβάθμιση στο ISPConfig3 στον επιλεγμένο σας server.<br><br><strong>ΧΡΗΣΙΜΟΠΟΙΗΣΤΕ ΤΟ ΜΕ ΔΙΚΗ ΣΑΣ ΕΥΘΥΝΗ!</strong>';
 $wb['action_scheduled'] = 'Η ενέργεια προγραμματίστηκε για εκτέλεση';
 $wb['select_all_server'] = 'Σε όλους τους servers';
-$wb['ispconfig_update_title'] = 'ISPConfig update instructions';
-$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=\'http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/\' target=\'_blank\'>Click here for detailed update instructions</a>';
+$wb['ispconfig_update_title'] = 'Οδηγίες ενημέρωσης ISPConfig';
+$wb['ispconfig_update_text'] = 'Εισέλθετε ως χρήστης root σε κάποιο κέλυφος στον server σας και εκτελέστε την εντολή<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />για να εκκινήστε την ενημέρωση του ISPConfig.<br /><br /><a href=\'http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/\' target=\'_blank\'>Πατήστε εδώ για λεπτομερείς οδηγίες</a>';
 ?>
diff --git a/interface/web/admin/lib/lang/el_remote_user.lng b/interface/web/admin/lib/lang/el_remote_user.lng
index ddffd7072da6b080d51310e9f64bc86f48d74ea5..8b79d6178640503451d54c58edde50ca586f37b7 100644
--- a/interface/web/admin/lib/lang/el_remote_user.lng
+++ b/interface/web/admin/lib/lang/el_remote_user.lng
@@ -5,7 +5,7 @@ $wb['function_txt'] = 'Ενέργειες:';
 $wb['username_error_unique'] = 'Το όνομα χρήστη πρέπει να είναι μοναδικό';
 $wb['username_error_empty'] = 'Το όνομα χρήστη δεν μπορεί να είναι κενό';
 $wb['password_error_empty'] = 'Το συνθηματικό δεν μπορεί να είναι κενό';
-$wb['password_strength_txt'] = 'Δύναμη συνθηματικού';
+$wb['password_strength_txt'] = 'Ισχύς Συνθηματικού';
 $wb['Mail domain functions'] = 'Ενέργειες Mail domain';
 $wb['Mail user functions'] = 'Ενέργειες Χρήστη Mail';
 $wb['Mail alias functions'] = 'Ενέργειες Ψευδωνύμου Mail';
@@ -40,8 +40,8 @@ $wb['DNS rp functions'] = 'Ενέργειες εγγραφών rp του DNS';
 $wb['DNS srv functions'] = 'Ενέργειες εγγραφών srv του DNS';
 $wb['DNS txt functions'] = 'Ενέργειες εγγραφών txt του DNS';
 $wb['Mail mailing list functions'] = 'Ενέργειες Mail mailinglist';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
+$wb['generate_password_txt'] = 'Δημιουργία Συνθηματικού';
+$wb['repeat_password_txt'] = 'Επανάληψη Συνθηματικού';
+$wb['password_mismatch_txt'] = 'Τα Συνθηματικά δεν ταιριάζουν.';
+$wb['password_match_txt'] = 'Τα Συνθηματικά ταιριάζουν.';
 ?>
diff --git a/interface/web/admin/lib/lang/el_server_config.lng b/interface/web/admin/lib/lang/el_server_config.lng
index 99bdf6f2d265b324ed3a9862261d5c3173c2f9bf..169a5608d8eed4358157201094a7e8805410a91a 100644
--- a/interface/web/admin/lib/lang/el_server_config.lng
+++ b/interface/web/admin/lib/lang/el_server_config.lng
@@ -148,44 +148,44 @@ $wb['do_not_try_rescue_mail_txt'] = 'Απενεργοποίηση εποπτεί
 $wb['rescue_description_txt'] = '<b>Πληροφορία:</b> Αν θέλετε να τερματίσετε την MySQL πρέπει να επιλέξετε την επιλογή Απενεργοποίηση εποπτείας MySQL και μετά να περιμένετε 2-3 λεπτά.<br>Αν δεν περιμένετε 2-3 λεπτά, η εποπτεία και αποκατάσταση θα προσπαθήσει να επανεκκινήσει την MySQL!';
 $wb['enable_sni_txt'] = 'Ενεργοποίηση SNI';
 $wb['do_not_try_rescue_httpd_txt'] = 'Απενεργοποίηση εποπτείας HTTPD';
-$wb['set_folder_permissions_on_update_txt'] = 'Set folder permissions on update';
-$wb['add_web_users_to_sshusers_group_txt'] = 'Add web users to -sshusers- group';
-$wb['connect_userid_to_webid_txt'] = 'Connect Linux userid to webid';
-$wb['connect_userid_to_webid_start_txt'] = 'Start ID for userid/webid connect';
-$wb['website_autoalias_txt'] = 'Website auto alias';
+$wb['set_folder_permissions_on_update_txt'] = 'Ορισμός δικαιωμάτων φακέλων κατά την ενημέρωση';
+$wb['add_web_users_to_sshusers_group_txt'] = 'Προσθήκη των χρηστών web στην ομάδα -sshusers-';
+$wb['connect_userid_to_webid_txt'] = 'Σύνδεση Linux userid στο webid';
+$wb['connect_userid_to_webid_start_txt'] = 'ID εκκίνησης για την σύνδεση userid/webid';
+$wb['website_autoalias_txt'] = 'Αυτόματο ψευδώνυμο Website';
 $wb['website_autoalias_note_txt'] = 'Placeholders:';
-$wb['backup_mode_txt'] = 'Backup mode';
-$wb['backup_mode_userzip'] = 'Backup web files owned by web user as zip';
-$wb['backup_mode_rootgz'] = 'Backup all files in web directory as root user';
-$wb['realtime_blackhole_list_txt'] = 'Real-time Blackhole List';
-$wb['realtime_blackhole_list_note_txt'] = '(Separate RBL\'s with commas)';
-$wb['ssl_settings_txt'] = 'SSL Settings';
-$wb['permissions_txt'] = 'Permissions';
-$wb['php_settings_txt'] = 'PHP Settings';
-$wb['apps_vhost_settings_txt'] = 'Apps Vhost Settings';
-$wb['awstats_settings_txt'] = 'AWStats Settings';
+$wb['backup_mode_txt'] = 'Κατάσταση Backup';
+$wb['backup_mode_userzip'] = 'Να γίνει αντίγραφο ασφαλείας των αρχείων web που ανήκουν στον χρήστη web με τον μορφότυπο zip';
+$wb['backup_mode_rootgz'] = 'Να γίνει αντίγραφο ασφαλείας όλων των αρχείων στον φάκελο web ως χρήστης root';
+$wb['realtime_blackhole_list_txt'] = 'Λίστα Blackhole παρόχων πραγματικού χρόνου (RBL)';
+$wb['realtime_blackhole_list_note_txt'] = '(Διαχωρισμός RBL\'s με κόμματα)';
+$wb['ssl_settings_txt'] = 'Ρυθμίσεις SSL';
+$wb['permissions_txt'] = 'Δικαιώματα';
+$wb['php_settings_txt'] = 'Ρυθμίσεις PHP';
+$wb['apps_vhost_settings_txt'] = 'Ρυθμίσεις Apps Vhost';
+$wb['awstats_settings_txt'] = 'Ρυθμίσεις AWStats';
 $wb['firewall_txt'] = 'Firewall';
-$wb['mailbox_quota_stats_txt'] = 'Mailbox quota statistics';
-$wb['enable_ip_wildcard_txt'] = 'Enable IP wildcard (*)';
-$wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attributes)';
-$wb['overtraffic_notify_admin_txt'] = 'Send overtraffic notification to admin';
-$wb['overtraffic_notify_client_txt'] = 'Send overtraffic notification to client';
-$wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.';
-$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin';
-$wb['overquota_notify_client_txt'] = 'Send quota warnings to client';
-$wb['overquota_notify_onok_txt'] = 'Send quota ok message to client';
-$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days';
-$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages';
-$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level';
-$wb['no_notifications_txt'] = 'No Notifications';
-$wb['monit_url_txt'] = 'Monit URL';
-$wb['monit_user_txt'] = 'Monit User';
-$wb['monit_password_txt'] = 'Monit Password';
-$wb['monit_url_error_regex'] = 'Invalid Monit URL';
+$wb['mailbox_quota_stats_txt'] = 'Στατιστικά χρήσης χώρου θυρίδας Mail';
+$wb['enable_ip_wildcard_txt'] = 'Ενεργοποίηση IP wildcard (*)';
+$wb['web_folder_protection_txt'] = 'Να γίνουν οι φάκελοι web αμετάβλητοι (εκτεταμένες ιδιότητες)';
+$wb['overtraffic_notify_admin_txt'] = 'Αποστολή ειδοποιήσεων υπέρβασης ορίου μεταφοράς δεδομένων στον διαχειριστή';
+$wb['overtraffic_notify_client_txt'] = 'Αποστολή ειδοποιήσεων υπέρβασης ορίου μεταφοράς δεδομένων στον πελάτη';
+$wb['rbl_error_regex'] = 'Παρακαλούμε ορίστε έγκυρα RBL hostnames.';
+$wb['overquota_notify_admin_txt'] = 'Αποστολή προειδοποιήσεων ορίων στον διαχειριστή';
+$wb['overquota_notify_client_txt'] = 'Αποστολή προειδοποιήσεων ορίων στον πελάτη';
+$wb['overquota_notify_onok_txt'] = 'Αποστολή ΟΚ μηνυμάτων ορίων στον πελάτη';
+$wb['overquota_notify_freq_txt'] = 'Αποστολή προειδοποιήσεων κάθε Χ ημέρες';
+$wb['overquota_notify_freq_note_txt'] = '0 = αποστολή μηνύματος μόνο μία φορά, (οχι επαναληπτικά μηνύματα)';
+$wb['admin_notify_events_txt'] = 'Αποστολή email στον διαχειριστή, ξεκινώντας από το ακόλουθο επίπεδο';
+$wb['no_notifications_txt'] = 'Χωρίς Ειδοποιήσεις';
+$wb['monit_url_txt'] = 'URL Monit';
+$wb['monit_user_txt'] = 'Χρήστης Monit';
+$wb['monit_password_txt'] = 'Συνθηματικό Monit';
+$wb['monit_url_error_regex'] = 'Μη έγκυρο URL Monit';
 $wb['monit_url_note_txt'] = 'Placeholder:';
-$wb['munin_url_txt'] = 'Munin URL';
-$wb['munin_user_txt'] = 'Munin User';
-$wb['munin_password_txt'] = 'Munin Password';
-$wb['munin_url_error_regex'] = 'Invalid Munin URL';
+$wb['munin_url_txt'] = 'URL Munin';
+$wb['munin_user_txt'] = 'Χρήστης Munin';
+$wb['munin_password_txt'] = 'Συνθηματικό Munin';
+$wb['munin_url_error_regex'] = 'Μη έγκυρο URL Munin';
 $wb['munin_url_note_txt'] = 'Placeholder:';
 ?>
diff --git a/interface/web/admin/lib/lang/el_server_ip.lng b/interface/web/admin/lib/lang/el_server_ip.lng
index 212f432793c0ef23131d64fa34939bb3dd6e7681..c858124141d9f94161a0e5db7a41e71dbead382f 100644
--- a/interface/web/admin/lib/lang/el_server_ip.lng
+++ b/interface/web/admin/lib/lang/el_server_ip.lng
@@ -7,5 +7,5 @@ $wb['ip_error_unique'] = 'Η Διεύθυνση IP πρέπει να είναι
 $wb['client_id_txt'] = 'Πελάτης';
 $wb['ip_type_txt'] = 'Τύπος';
 $wb['virtualhost_port_txt'] = 'Θύρες HTTP';
-$wb['error_port_syntax'] = 'Invalid chars in port field, please enter only comma separated numbers. Example: 80,443';
+$wb['error_port_syntax'] = 'Μη έγκυροι χαρακτήρες στο πεδίο θύρας, παρακαλούμε εισάγετε μόνο αριθμούς χωρισμένους με κόμματα. Παράδειγμα: 80,443';
 ?>
diff --git a/interface/web/admin/lib/lang/el_server_php.lng b/interface/web/admin/lib/lang/el_server_php.lng
index addbfa49357aa4e45f3c0ef1700065df9cf541f7..be99452b22b21b546db66aa622292755baceb785 100644
--- a/interface/web/admin/lib/lang/el_server_php.lng
+++ b/interface/web/admin/lib/lang/el_server_php.lng
@@ -1,16 +1,16 @@
 <?php
 $wb['server_id_txt'] = 'Server';
-$wb['client_id_txt'] = 'Client';
-$wb['name_txt'] = 'PHP Name';
-$wb['Name'] = 'Name';
+$wb['client_id_txt'] = 'Πελάτης';
+$wb['name_txt'] = 'Όνομα PHP';
+$wb['Name'] = 'Όνομα';
 $wb['FastCGI Settings'] = 'FastCGI Settings';
 $wb['PHP-FPM Settings'] = 'PHP-FPM Settings';
-$wb['Additional PHP Versions'] = 'Additional PHP Versions';
-$wb['Form to edit additional PHP versions'] = 'Form to edit additional PHP versions';
-$wb['server_php_name_error_empty'] = 'The Name field must not be empty.';
-$wb['php_fastcgi_binary_txt'] = 'Path to the PHP FastCGI binary';
-$wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory';
-$wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script';
-$wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory';
-$wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory';
+$wb['Additional PHP Versions'] = 'Πρόσθετες εκδόσεις PHP';
+$wb['Form to edit additional PHP versions'] = 'Φόρμα για την επεξεργασία επιπλέον εκδόσεων PHP';
+$wb['server_php_name_error_empty'] = 'Πρέπει να ορίσετε το πειο Όνομα.';
+$wb['php_fastcgi_binary_txt'] = 'Διαδρομή για το εκτελέσιμο PHP FastCGI';
+$wb['php_fastcgi_ini_dir_txt'] = 'Διαδρομή για τον φάκελο php.ini';
+$wb['php_fpm_init_script_txt'] = 'Διαδρομή για το init script PHP-FPM';
+$wb['php_fpm_ini_dir_txt'] = 'Διαδρομή για τον φάκελο php.ini';
+$wb['php_fpm_pool_dir_txt'] = 'Διαδρομή για τον φάκελο PHP-FPM';
 ?>
diff --git a/interface/web/admin/lib/lang/el_server_php_list.lng b/interface/web/admin/lib/lang/el_server_php_list.lng
index b402fd1ed19978b32027a9ed16e7b44f241db93e..06c17a30047cf67e6a9202afcbdfcdb1014788bc 100644
--- a/interface/web/admin/lib/lang/el_server_php_list.lng
+++ b/interface/web/admin/lib/lang/el_server_php_list.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['list_head_txt'] = 'Additional PHP Versions';
+$wb['list_head_txt'] = 'Πρόσθετες εκδόσεις PHP';
 $wb['server_id_txt'] = 'Server';
-$wb['add_new_record_txt'] = 'Add new PHP version';
-$wb['client_id_txt'] = 'Client';
-$wb['name_txt'] = 'PHP Name';
+$wb['add_new_record_txt'] = 'Προσθήκη νέας έκδοσης PHP';
+$wb['client_id_txt'] = 'Πελάτης';
+$wb['name_txt'] = 'Όνομα PHP';
 ?>
diff --git a/interface/web/admin/lib/lang/el_software_package.lng b/interface/web/admin/lib/lang/el_software_package.lng
index 62ef734079c5dd66dfb5b02390e23398a09233a8..16be47e587eebca01fee74e3b81053fb18a36b74 100644
--- a/interface/web/admin/lib/lang/el_software_package.lng
+++ b/interface/web/admin/lib/lang/el_software_package.lng
@@ -1,6 +1,6 @@
 <?php
-$wb["package_title_txt"] = 'Package Title';
-$wb["package_key_txt"] = 'Package Key';
-$wb["Software Package"] = 'Software Package';
-$wb['Modify software package details'] = 'Modify software package details';
-?>
\ No newline at end of file
+$wb['package_title_txt'] = 'Τίτλος Πακέτου';
+$wb['package_key_txt'] = 'Κλειδί Πακέτου';
+$wb['Software Package'] = 'Πακέτο Λογισμικού';
+$wb['Modify software package details'] = 'Επεξεργασία λεπτομερειών Πακέτου';
+?>
diff --git a/interface/web/admin/lib/lang/el_software_package_list.lng b/interface/web/admin/lib/lang/el_software_package_list.lng
index 1553ea1ceafeca4b43be5bd163c9b3fc47ae9864..515dbb792b86aaf6a412d0aa3dde37b1dda03607 100644
--- a/interface/web/admin/lib/lang/el_software_package_list.lng
+++ b/interface/web/admin/lib/lang/el_software_package_list.lng
@@ -5,9 +5,9 @@ $wb['package_title_txt'] = 'Πακέτο';
 $wb['package_description_txt'] = 'Περιγραφή';
 $wb['action_txt'] = 'Ενέργεια';
 $wb['toolsarea_head_txt'] = 'Πακέτα';
-$wb['repoupdate_txt'] = 'Ενημέρωση λίστας πακκέτων';
+$wb['repoupdate_txt'] = 'Ενημέρωση λίστας πακέτων';
 $wb['package_id_txt'] = 'τοπικό App-ID';
-$wb['no_packages_txt'] = 'No packages available';
+$wb['no_packages_txt'] = 'Δεν υπάρχουν διαθέσιμα πακέτα';
 $wb['edit_txt'] = 'Edit';
 $wb['delete_txt'] = 'Delete';
 ?>
diff --git a/interface/web/admin/lib/lang/el_software_update_list.lng b/interface/web/admin/lib/lang/el_software_update_list.lng
index 42100d0c8903ad84f65f8f5137feee995b83d3d5..69c7026ab83fcacc3f4f75cda316d21e8178dac3 100644
--- a/interface/web/admin/lib/lang/el_software_update_list.lng
+++ b/interface/web/admin/lib/lang/el_software_update_list.lng
@@ -5,5 +5,5 @@ $wb['installed_txt'] = 'Ενέργεια';
 $wb['update_title_txt'] = 'Ενημέρωση';
 $wb['version_txt'] = 'Έκδοση';
 $wb['action_txt'] = 'Ενέργεια';
-$wb['no_updates_txt'] = 'No updates available';
+$wb['no_updates_txt'] = 'Δεν υπάρχουν διαθέσιμες ενημερώσεις';
 ?>
diff --git a/interface/web/admin/lib/lang/el_system_config.lng b/interface/web/admin/lib/lang/el_system_config.lng
index f69e58a83dcb36a0ddd19b895989dadb48465c45..1660f18c603c0717b3116bab8628883d528b08ee 100644
--- a/interface/web/admin/lib/lang/el_system_config.lng
+++ b/interface/web/admin/lib/lang/el_system_config.lng
@@ -1,8 +1,8 @@
 <?php
 $wb['system_config_desc_txt'] = '';
-$wb['dashboard_atom_url_admin_txt'] = 'Dashboard atom feed URL (admin)';
-$wb['dashboard_atom_url_reseller_txt'] = 'Dashboard atom feed URL (reseller)';
-$wb['dashboard_atom_url_client_txt'] = 'Dashboard atom feed URL (client)';
+$wb['dashboard_atom_url_admin_txt'] = 'URL ροής atom του Dashboard (διαχειριστής)';
+$wb['dashboard_atom_url_reseller_txt'] = 'URL ροής atom του Dashboard (μεταπωλητής)';
+$wb['dashboard_atom_url_client_txt'] = 'URL ροής atom του Dashboard (πελάτης)';
 $wb['warning'] = 'Επεξεργαστείτε τις τιμές με προσοχή! ΜΗΝ αφαιρείτε τα προθέματα σε συστήματα με περισσότερους από έναν πελάτες.';
 $wb['dbname_prefix_txt'] = 'Πρόθεμα Ονόματος Βάσης Δεδομένων';
 $wb['dbuser_prefix_txt'] = 'Πρόθεμα Χρήστη Βάσης Δεδομένων';
@@ -14,42 +14,49 @@ $wb['dbuser_prefix_error_regex'] = 'Δεν επιτρέπονται χαρακτ
 $wb['ftpuser_prefix_error_regex'] = 'Δεν επιτρέπονται χαρακτήρες στο πρόθεμα του Χρήστη ftp.';
 $wb['shelluser_prefix_error_regex'] = 'Δεν επιτρέπονται χαρακτήρες στο πρόθεμα του Χρήστη Shell.';
 $wb['webdavuser_prefix_error_regex'] = 'Δεν επιτρέπονται χαρακτήρες στο πρόθεμα του Χρήστη Webdav.';
-$wb['dblist_phpmyadmin_link_txt'] = 'Link για το phpmyadmin στη λίστα των βάσεων δεδομένων';
-$wb['mailboxlist_webmail_link_txt'] = 'Link για το webmail στην λίστα των θυρίδων mail';
+$wb['dblist_phpmyadmin_link_txt'] = 'Σύνδεσμος για το phpmyadmin στη λίστα των βάσεων δεδομένων';
+$wb['mailboxlist_webmail_link_txt'] = 'Σύνδεσμος για το webmail στην λίστα των θυρίδων mail';
 $wb['webmail_url_txt'] = 'URL του Webmail';
 $wb['phpmyadmin_url_txt'] = 'URL του PHPMyAdmin';
 $wb['use_domain_module_txt'] = 'Χρήση του αρθρώματος-domain για την προσθήκη νέων domains';
 $wb['use_domain_module_hint'] = 'Αν χρησιμοποιήσετε αυτό το άρθρωμα, οι πελάτες σας μπορούν μόνο να διαλέξουν ένα από τα domains που δημιούργησε για αυτούς ο διαχειριστής. Δεν μπορούν να επεξεργαστούν ελεύθερα τα πεδία του domain.Πρέπει να επανασυνδεθείτε αν αλλάξετε αυτή την τιμή, για να γίνουν οι αλλαγές σας, ορατές.';
 $wb['new_domain_txt'] = 'HTML για την δημιουργία domain';
 $wb['webftp_url_txt'] = 'URL του WebFTP';
-$wb['enable_custom_login_txt'] = 'Αποδοχή  προσαρμοσμένου ονόματος login';
-$wb['mailmailinglist_link_txt'] = 'Link to mailing list in Mailing list list';
+$wb['enable_custom_login_txt'] = 'Αποδοχή  προσαρμοσμένου ονόματος εισόδου';
+$wb['mailmailinglist_link_txt'] = 'Σύνδεσμος της λίστας mail στις λίστες mail';
 $wb['mailmailinglist_url_txt'] = 'URL της Mailing list ';
 $wb['admin_mail_txt'] = 'e-mail Διαχειριστών';
-$wb['monitor_key_txt'] = 'Monitor keyword';
+$wb['monitor_key_txt'] = 'keyword εποπτείας';
 $wb['admin_name_txt'] = 'Όνομα Administrator';
-$wb['maintenance_mode_txt'] = 'Maintenance Mode';
-$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
+$wb['maintenance_mode_txt'] = 'Κατάσταση συντήρησης';
+$wb['smtp_enabled_txt'] = 'Χρήση SMTP για την αποστολή mail συστήματος';
 $wb['smtp_host_txt'] = 'SMTP host';
-$wb['smtp_port_txt'] = 'SMTP port';
-$wb['smtp_user_txt'] = 'SMTP user';
-$wb['smtp_pass_txt'] = 'SMTP password';
-$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
-$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
-$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
-$wb['tab_change_warning_txt'] = 'Tab change warning';
-$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
-$wb['vhost_subdomains_txt'] = 'Create Subdomains as web site';
-$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
-$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
-$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
-$wb['use_loadindicator_txt'] = 'Use Load Indicator';
-$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
-$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
+$wb['smtp_port_txt'] = 'SMTP θύρα';
+$wb['smtp_user_txt'] = 'SMTP χρήστης';
+$wb['smtp_pass_txt'] = 'SMTP συνθηματικό';
+$wb['smtp_crypt_txt'] = 'Χρήση κρυπτογραφημένης σύνδεσης SSL/TLS για SMTP';
+$wb['smtp_missing_admin_mail_txt'] = 'ΠΑρακαλούμε εισάγετε το όνομα διαχειριστή και την διεύθυνση mail αν θέλετε να χρησιμοποιήσετε απόστολή mail με smtp.';
+$wb['tab_change_discard_txt'] = 'Ακύρωση αλλαγών με την αλλαγή καρτέλας';
+$wb['tab_change_warning_txt'] = 'Προειδοποίηση αλλαγής καρτέλας';
+$wb['tab_change_warning_note_txt'] = 'Εμφάνιση μιας προειδοποίησης κατα την αλλαγή καρτέλας σε φόρμες επεξεργασίας που έχουν τροποποιηθεί από τον χρήστη.';
+$wb['vhost_subdomains_txt'] = 'Δημιουργία Subdomains ως web site';
+$wb['vhost_subdomains_note_txt'] = 'Δεν μπορεί να γίνει απενεργοποίηση όσο υπάρχουν vhost subdomains στο σύστημα!';
+$wb['phpmyadmin_url_error_regex'] = 'Μη έγκυρο URL phpmyadmin';
+$wb['use_combobox_txt'] = 'Χρήση jQuery UI Combobox';
+$wb['use_loadindicator_txt'] = 'Χρήση Load Indicator (ενδεικτή φόρτωσης)';
+$wb['f5_to_reload_js_txt'] = 'Αν το αλλάξετε, ίσως πρέπει να πατήσετε το F5 για να κάνετε τον φυλλομετρητη να ξαναφορτώσει τις βιβλιοθήκες JavaScript ή να αδείασετε την cache του φυλλομετρητή.';
+$wb['client_username_web_check_disabled_txt'] = 'Απενεργοποίηση ελέγχου στο όνομα χρήστη για την λέξη \'web\'.';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Εμφάνιση της καρτέλας Αυτόματης Απάντησης στις λεπτομέρειες του λογαριασμού mail';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Εμφάνιση της καρτέλας Φίλτρα mail στις λεπτομέρειες του λογαριασμού mail';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Εμφάνιση της καρτέλας Προσαρμοσμένοι Κανόνες στις λεπτομέρειες του λογαριασμού mail';
 $wb['webmail_url_error_regex'] = 'Invalid webmail URL';
 $wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
 $wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
 ?>
diff --git a/interface/web/admin/lib/lang/el_tpl_default_admin.lng b/interface/web/admin/lib/lang/el_tpl_default_admin.lng
index eee3af5fe4e30c2f22bfa5742d902ce678cfa830..88053dbca5065c2d255f137dae104161a06fd075 100644
--- a/interface/web/admin/lib/lang/el_tpl_default_admin.lng
+++ b/interface/web/admin/lib/lang/el_tpl_default_admin.lng
@@ -2,17 +2,17 @@
 $wb['tpl_default_admin_head_txt'] = 'Global Default-Theme Settings';
 $wb['tpl_default_admin_desc_txt'] = '';
 $wb['server_id_txt'] = 'Server';
-$wb['client_id_txt'] = 'Client';
-$wb['name_txt'] = 'PHP Name';
-$wb['Name'] = 'Name';
-$wb['FastCGI Settings'] = 'FastCGI Settings';
-$wb['PHP-FPM Settings'] = 'PHP-FPM Settings';
-$wb['Additional PHP Versions'] = 'Additional PHP Versions';
-$wb['Form to edit additional PHP versions'] = 'Form to edit additional PHP versions';
-$wb['server_php_name_error_empty'] = 'The Name field must not be empty.';
-$wb['php_fastcgi_binary_txt'] = 'Path to the PHP FastCGI binary';
-$wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory';
-$wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script';
-$wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory';
-$wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory';
+$wb['client_id_txt'] = 'Πελάτης';
+$wb['name_txt'] = 'Όνομα PHP';
+$wb['Name'] = 'Όνομα';
+$wb['FastCGI Settings'] = 'Ρυθμίσεις FastCGI';
+$wb['PHP-FPM Settings'] = 'Ρυθμίσεις PHP-FPM';
+$wb['Additional PHP Versions'] = 'Πρόσθετες εκδόσεις PHP';
+$wb['Form to edit additional PHP versions'] = 'Φόρμα για την επεξεργασία επιπλέον εκδόσεων PHP';
+$wb['server_php_name_error_empty'] = 'Πρέπει να ορίσετε το πειο Όνομα.';
+$wb['php_fastcgi_binary_txt'] = 'Διαδρομή για το εκτελέσιμο PHP FastCGI';
+$wb['php_fastcgi_ini_dir_txt'] = 'Διαδρομή για τον φάκελο php.ini';
+$wb['php_fpm_init_script_txt'] = 'Διαδρομή για το init script PHP-FPM';
+$wb['php_fpm_ini_dir_txt'] = 'Διαδρομή για τον φάκελο του php.ini';
+$wb['php_fpm_pool_dir_txt'] = 'Διαδρομή για τον φάκελο PHP-FPM';
 ?>
diff --git a/interface/web/admin/lib/lang/el_users.lng b/interface/web/admin/lib/lang/el_users.lng
index 3323424f102fd37e0803c79f6a26da2faa77fbb4..201d831c6425d57aa9553464e90f064bc1f65402 100644
--- a/interface/web/admin/lib/lang/el_users.lng
+++ b/interface/web/admin/lib/lang/el_users.lng
@@ -4,7 +4,7 @@ $wb['username_err'] = 'Το όνομα χρήστη είναι πολύ μεγά
 $wb['username_empty'] = 'Το όνομα χρήστη δεν έχει οριστεί.';
 $wb['username_unique'] = 'Υπάρχει ήδη ένας χρήστης με αυτό το όνομα χρήστη.';
 $wb['passwort_txt'] = 'Συνθηματικό';
-$wb['password_strength_txt'] = 'Δύναμη Συνθηματικού';
+$wb['password_strength_txt'] = 'Ισχύς Συνθηματικού';
 $wb['modules_txt'] = 'Άρθρωμα';
 $wb['startmodule_txt'] = 'Άρθρωμα Εκκίνησης';
 $wb['app_theme_txt'] = 'Θεματική Παραλλαγή';
@@ -25,9 +25,9 @@ $wb['fax_txt'] = 'Fax';
 $wb['groups_txt'] = 'Ομάδες';
 $wb['default_group_txt'] = 'Προκαθορισμένη Ομάδα';
 $wb['startmodule_err'] = 'Το άρθρωμα εκκίνησης δεν υπάρχει στα διαθέσιμα αρθρώματα.';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
-$wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"';
+$wb['generate_password_txt'] = 'Δημιουργία Συνθηματικού';
+$wb['repeat_password_txt'] = 'Επανάληψη Συνθηματικού';
+$wb['password_mismatch_txt'] = 'Τα Συνθηματικά δεν ταιριάζουν.';
+$wb['password_match_txt'] = 'Τα Συνθηματικά ταιριάζουν.';
+$wb['username_error_collision'] = 'Το όνομα χρήστη δεν μπορεί να αρχίζει από την λέξη -web- ή την λέξη -web- ακολουθούμενη από αριθμό.';
 ?>
diff --git a/interface/web/admin/lib/lang/el_users_list.lng b/interface/web/admin/lib/lang/el_users_list.lng
index b61af2591929957c5f745fb3c555482291195af1..a1b33ca0ef159fa34b1128f77e28353621591084 100644
--- a/interface/web/admin/lib/lang/el_users_list.lng
+++ b/interface/web/admin/lib/lang/el_users_list.lng
@@ -5,5 +5,5 @@ $wb['client_id_txt'] = 'Client ID';
 $wb['active_txt'] = 'Active';
 $wb['add_new_record_txt'] = 'Νέος Χρήστης';
 $wb['warning_txt'] = '<b>ΠΡΟΕΙΔΟΠΟΙΗΣΗ:</b>Μην επεξεργάζεστε καμία ρύθμιση χρήστη εδώ. Χρησιμοποιήστε τις ρυθμίσεις Πελάτη - και Μεταπωλητή στο άρθρωμα Πελάτης. Η επεξεργασία ομάδων και χρηστών εδώ, μπορεί να προκαλέσει απώλεια δεδομένων!';
-$wb['groups_txt'] = 'Groups';
+$wb['groups_txt'] = 'Ομάδες';
 ?>
diff --git a/interface/web/admin/lib/lang/en_language_import.lng b/interface/web/admin/lib/lang/en_language_import.lng
index a554c6c2200b493f8fc0ef60f744a01a1116c6c6..0314af1d7714e98ae3b07c2949d65fd289c56f63 100644
--- a/interface/web/admin/lib/lang/en_language_import.lng
+++ b/interface/web/admin/lib/lang/en_language_import.lng
@@ -1,5 +1,6 @@
 <?php
 $wb["list_head_txt"] = 'Import language file';
+$wb["list_desc_txt"] = 'WARNING: Do not import language files from untrustworthy sources.';
 $wb["language_import_txt"] = 'Select language file';
 $wb['btn_save_txt'] = 'Import the selected language file';
 $wb["language_overwrite_txt"] = 'Overwrite file, if exists.';
diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng
index 1f1ad0db78307ae468edc3d97b50bb5412c97cbb..36a6791ad7d380f4a4715d2af7a443879d8f67fb 100644
--- a/interface/web/admin/lib/lang/en_server_config.lng
+++ b/interface/web/admin/lib/lang/en_server_config.lng
@@ -30,8 +30,6 @@ $wb["fastcgi_bin_txt"] = 'FastCGI Bin';
 $wb["module_txt"] = 'Module';
 $wb["maildir_path_txt"] = 'Maildir Path';
 $wb["homedir_path_txt"] = 'Homedir Path';
-$wb["dkim_path_txt"] = 'DKIM Path';
-$wb["dkim_path_error"] = 'DKIM Path not found or not writeable.';
 $wb["mailuser_uid_txt"] = 'Mailuser UID';
 $wb["mailuser_gid_txt"] = 'Mailuser GID';
 $wb["mailuser_name_txt"] = 'Mailuser Name';
@@ -151,7 +149,6 @@ $wb["php_fpm_socket_dir_txt"] = 'PHP-FPM socket directory';
 $wb["php_fpm_socket_dir_error_empty"] = 'PHP-FPM socket directory is empty.';
 $wb["try_rescue_txt"] = 'Enable service monitoring and restart on failure';
 $wb["do_not_try_rescue_httpd_txt"] = 'Disable HTTPD monitoring';
-$wb["do_not_try_rescue_mongodb_txt"] = 'Disable MongoDB monitoring';
 $wb["do_not_try_rescue_mysql_txt"] = 'Disable MySQL monitoring';
 $wb["do_not_try_rescue_mail_txt"] = 'Disable Email monitoring';
 $wb["rescue_description_txt"] = '<b>Information:</b> If you want to shut down mysql you have to select the "Disable MySQL monitor" checkbox and then wait 2-3 minutes.<br>If you do not wait 2-3 minutes, rescue will try to restart mysql!';
@@ -170,8 +167,8 @@ $wb["awstats_settings_txt"] = 'AWStats Settings';
 $wb["firewall_txt"] = 'Firewall';
 $wb["mailbox_quota_stats_txt"] = 'Mailbox quota statistics';
 $wb["enable_ip_wildcard_txt"] = 'Enable IP wildcard (*)';
-$wb["web_folder_protection_txt"] = 'Make web folders immutable (extended attributes)';
-$wb["overtraffic_notify_admin_txt"] = 'Send overtraffic notification to admin';
+$wb["web_folder_protection_txt"] = 'Make web folders immutable (extended attributes)';
+$wb["overtraffic_notify_admin_txt"] = 'Send overtraffic notification to admin';
 $wb["overtraffic_notify_client_txt"] = 'Send overtraffic notification to client';
 $wb["rbl_error_regex"] = 'Please specify valid RBL hostnames.';
 $wb["overquota_notify_admin_txt"] = 'Send quota warnings to admin';
@@ -191,4 +188,4 @@ $wb['munin_user_txt'] = 'Munin User';
 $wb['munin_password_txt'] = 'Munin Password';
 $wb['munin_url_error_regex'] = 'Invalid Munin URL';
 $wb['munin_url_note_txt'] = 'Placeholder:';
-?>
+?>
diff --git a/interface/web/admin/lib/lang/en_system_config.lng b/interface/web/admin/lib/lang/en_system_config.lng
index 7c5fe6eaf7231fa8656b66a69a8a082cf4b5f13c..1b370b469f0cddca80aaa58ea9c01918c328c86b 100644
--- a/interface/web/admin/lib/lang/en_system_config.lng
+++ b/interface/web/admin/lib/lang/en_system_config.lng
@@ -23,9 +23,6 @@ $wb["webdavuser_prefix_error_regex"] = 'Char not allowed in webdav user prefix.'
 $wb["dblist_phpmyadmin_link_txt"] = 'Link to phpmyadmin in DB list';
 $wb['enable_custom_login_txt'] = 'Allow custom login name';
 $wb["mailboxlist_webmail_link_txt"] = 'Link to webmail in Mailbox list';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Show Autoresponder tab in Mailbox detail';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Show Mail Filter tab in Mailbox detail';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Show Custom Rules tab in Mailbox detail';
 $wb["webmail_url_txt"] = 'Webmail URL';
 $wb["mailmailinglist_link_txt"] = 'Link to mailing list in Mailing list list';
 $wb["mailmailinglist_url_txt"] = 'Mailing list URL';
diff --git a/interface/web/admin/lib/lang/es_language_import.lng b/interface/web/admin/lib/lang/es_language_import.lng
index 7f2b25bc7bd7e367af04200470e5875c5bfc9344..dd1034659dc6abe4cd82345a570d1821953d4f60 100644
--- a/interface/web/admin/lib/lang/es_language_import.lng
+++ b/interface/web/admin/lib/lang/es_language_import.lng
@@ -5,4 +5,5 @@ $wb['btn_save_txt'] = 'Importar el fichero de idioma';
 $wb['language_overwrite_txt'] = 'Sobreescribir los ficheros, si existen';
 $wb['btn_cancel_txt'] = 'Atrás';
 $wb['ignore_version_txt'] = 'Saltar comprobación de la versión ISPConfig';
+$wb['list_desc_txt'] = 'WARNING: Do not import language files from untrustworthy sources.';
 ?>
diff --git a/interface/web/admin/lib/lang/es_software_package.lng b/interface/web/admin/lib/lang/es_software_package.lng
index 62ef734079c5dd66dfb5b02390e23398a09233a8..faffe38217fb9cac04020e73e473c6c46e3caaa1 100644
--- a/interface/web/admin/lib/lang/es_software_package.lng
+++ b/interface/web/admin/lib/lang/es_software_package.lng
@@ -1,6 +1,6 @@
 <?php
-$wb["package_title_txt"] = 'Package Title';
-$wb["package_key_txt"] = 'Package Key';
-$wb["Software Package"] = 'Software Package';
+$wb['package_title_txt'] = 'Package Title';
+$wb['package_key_txt'] = 'Package Key';
+$wb['Software Package'] = 'Software Package';
 $wb['Modify software package details'] = 'Modify software package details';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/admin/lib/lang/es_system_config.lng b/interface/web/admin/lib/lang/es_system_config.lng
index 118a0dfae82608926a6988378cb46671deee5716..a4d878cadd700e551412d7d9096088b847293bea 100644
--- a/interface/web/admin/lib/lang/es_system_config.lng
+++ b/interface/web/admin/lib/lang/es_system_config.lng
@@ -52,4 +52,11 @@ $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail a
 $wb['webmail_url_error_regex'] = 'Invalid webmail URL';
 $wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
 $wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
 ?>
diff --git a/interface/web/admin/lib/lang/fi_language_import.lng b/interface/web/admin/lib/lang/fi_language_import.lng
index d8e5eac01b5dc16c8dcac58fbff6a12859cdbf8a..b7da40ebe34501408112777bc9f00b1651dfa85e 100755
--- a/interface/web/admin/lib/lang/fi_language_import.lng
+++ b/interface/web/admin/lib/lang/fi_language_import.lng
@@ -5,4 +5,5 @@ $wb['btn_save_txt'] = 'Asenna valittu kielitiedosto';
 $wb['language_overwrite_txt'] = 'Ylikirjoitetaan tiedostot, jos ne on jo olemassa.';
 $wb['btn_cancel_txt'] = 'Takaisin';
 $wb['ignore_version_txt'] = 'Ohita ISPConfigin version tarkistus';
+$wb['list_desc_txt'] = 'WARNING: Do not import language files from untrustworthy sources.';
 ?>
diff --git a/interface/web/admin/lib/lang/fi_remote_action.lng b/interface/web/admin/lib/lang/fi_remote_action.lng
index 3fc3eaf81f5d63a057aa0eecf965bfbdaf6af701..f26852708408df3bfb8307dbd3620e142f92f75e 100644
--- a/interface/web/admin/lib/lang/fi_remote_action.lng
+++ b/interface/web/admin/lib/lang/fi_remote_action.lng
@@ -8,5 +8,5 @@ $wb['do_ispcupdate_desc'] = 'This action does a ISPConfig3 update at your select
 $wb['action_scheduled'] = 'The action is scheduled for execution';
 $wb['select_all_server'] = 'All server';
 $wb['ispconfig_update_title'] = 'ISPConfig update instructions';
-$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructions</a>';
+$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructins</a>';
 ?>
diff --git a/interface/web/admin/lib/lang/fi_software_package.lng b/interface/web/admin/lib/lang/fi_software_package.lng
index 62ef734079c5dd66dfb5b02390e23398a09233a8..faffe38217fb9cac04020e73e473c6c46e3caaa1 100644
--- a/interface/web/admin/lib/lang/fi_software_package.lng
+++ b/interface/web/admin/lib/lang/fi_software_package.lng
@@ -1,6 +1,6 @@
 <?php
-$wb["package_title_txt"] = 'Package Title';
-$wb["package_key_txt"] = 'Package Key';
-$wb["Software Package"] = 'Software Package';
+$wb['package_title_txt'] = 'Package Title';
+$wb['package_key_txt'] = 'Package Key';
+$wb['Software Package'] = 'Software Package';
 $wb['Modify software package details'] = 'Modify software package details';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/admin/lib/lang/fi_system_config.lng b/interface/web/admin/lib/lang/fi_system_config.lng
index c2c1dab75beda91dfb16bc72646f073cabf3096a..75658ee44ebbd27bab593843f64eedf4419be043 100755
--- a/interface/web/admin/lib/lang/fi_system_config.lng
+++ b/interface/web/admin/lib/lang/fi_system_config.lng
@@ -52,4 +52,11 @@ $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail a
 $wb['webmail_url_error_regex'] = 'Invalid webmail URL';
 $wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
 $wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
 ?>
diff --git a/interface/web/admin/lib/lang/fr_language_import.lng b/interface/web/admin/lib/lang/fr_language_import.lng
index 710847cc52fabe7cc7784b87c81240a4d671affd..a7298a4696150a4d18dac46996cc073267049fec 100644
--- a/interface/web/admin/lib/lang/fr_language_import.lng
+++ b/interface/web/admin/lib/lang/fr_language_import.lng
@@ -5,4 +5,5 @@ $wb['btn_save_txt'] = 'Importer le fichier de langue sélectionné';
 $wb['language_overwrite_txt'] = 'Ecraser le fichier sil existe déja.';
 $wb['btn_cancel_txt'] = 'Précédent';
 $wb['ignore_version_txt'] = 'Ignorer le test de version ISPConfig';
+$wb['list_desc_txt'] = 'WARNING: Do not import language files from untrustworthy sources.';
 ?>
diff --git a/interface/web/admin/lib/lang/fr_remote_action.lng b/interface/web/admin/lib/lang/fr_remote_action.lng
index 58fb49998a5e075bb0138e9e8165c63d3301c3df..3df14f355481c45e7d450fee9ae9d63b690d69ed 100644
--- a/interface/web/admin/lib/lang/fr_remote_action.lng
+++ b/interface/web/admin/lib/lang/fr_remote_action.lng
@@ -8,5 +8,5 @@ $wb['do_ispcupdate_desc'] = 'Cette action met à jour ISPConfig3 sur le serveur
 $wb['action_scheduled'] = 'Laction est marquée pour exécution';
 $wb['select_all_server'] = 'Tout serveur';
 $wb['ispconfig_update_title'] = 'ISPConfig update instructions';
-$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=\'http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/\' target=\'_blank\'>Click here for detailed update instructions</a>';
+$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=\'http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/\' target=\'_blank\'>Click here for detailed update instructins</a>';
 ?>
diff --git a/interface/web/admin/lib/lang/fr_software_package.lng b/interface/web/admin/lib/lang/fr_software_package.lng
index 62ef734079c5dd66dfb5b02390e23398a09233a8..faffe38217fb9cac04020e73e473c6c46e3caaa1 100644
--- a/interface/web/admin/lib/lang/fr_software_package.lng
+++ b/interface/web/admin/lib/lang/fr_software_package.lng
@@ -1,6 +1,6 @@
 <?php
-$wb["package_title_txt"] = 'Package Title';
-$wb["package_key_txt"] = 'Package Key';
-$wb["Software Package"] = 'Software Package';
+$wb['package_title_txt'] = 'Package Title';
+$wb['package_key_txt'] = 'Package Key';
+$wb['Software Package'] = 'Software Package';
 $wb['Modify software package details'] = 'Modify software package details';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/admin/lib/lang/fr_system_config.lng b/interface/web/admin/lib/lang/fr_system_config.lng
index 561a5d7274cbd521807b0b934d47c7962de1d007..262bbe329e8f4160018b7c1ce4475f2ed2e8fc08 100644
--- a/interface/web/admin/lib/lang/fr_system_config.lng
+++ b/interface/web/admin/lib/lang/fr_system_config.lng
@@ -52,4 +52,11 @@ $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail a
 $wb['webmail_url_error_regex'] = 'Invalid webmail URL';
 $wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
 $wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
 ?>
diff --git a/interface/web/admin/lib/lang/hr_language_import.lng b/interface/web/admin/lib/lang/hr_language_import.lng
index 6a31f395ad8f60ec3466e131e5d8b7c6af1c542a..3f20305349eccc0599fa86dcad9b76f99b67eb64 100644
--- a/interface/web/admin/lib/lang/hr_language_import.lng
+++ b/interface/web/admin/lib/lang/hr_language_import.lng
@@ -5,4 +5,5 @@ $wb['btn_save_txt'] = 'Importiraj selektiranu jezičnu datoteku';
 $wb['language_overwrite_txt'] = 'Prebriši datoteku, ukoliko već postoji.';
 $wb['btn_cancel_txt'] = 'Natrag';
 $wb['ignore_version_txt'] = 'Preskoči provjeru ISPConfig verzije';
+$wb['list_desc_txt'] = 'WARNING: Do not import language files from untrustworthy sources.';
 ?>
diff --git a/interface/web/admin/lib/lang/hr_software_package.lng b/interface/web/admin/lib/lang/hr_software_package.lng
index 62ef734079c5dd66dfb5b02390e23398a09233a8..faffe38217fb9cac04020e73e473c6c46e3caaa1 100644
--- a/interface/web/admin/lib/lang/hr_software_package.lng
+++ b/interface/web/admin/lib/lang/hr_software_package.lng
@@ -1,6 +1,6 @@
 <?php
-$wb["package_title_txt"] = 'Package Title';
-$wb["package_key_txt"] = 'Package Key';
-$wb["Software Package"] = 'Software Package';
+$wb['package_title_txt'] = 'Package Title';
+$wb['package_key_txt'] = 'Package Key';
+$wb['Software Package'] = 'Software Package';
 $wb['Modify software package details'] = 'Modify software package details';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/admin/lib/lang/hr_system_config.lng b/interface/web/admin/lib/lang/hr_system_config.lng
index 2ff0cbc9fd479ccc436293a7e6380c9d4864f24d..63f816b79ed19f96fb19088bbda21ab18c5a4840 100644
--- a/interface/web/admin/lib/lang/hr_system_config.lng
+++ b/interface/web/admin/lib/lang/hr_system_config.lng
@@ -52,4 +52,11 @@ $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail a
 $wb['webmail_url_error_regex'] = 'Invalid webmail URL';
 $wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
 $wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
 ?>
diff --git a/interface/web/admin/lib/lang/hu_language_import.lng b/interface/web/admin/lib/lang/hu_language_import.lng
index fe8334409df09e9e54243be561ed7b3385448ec8..a90f3eefc048c176ab350021276cbb7e11f5d713 100644
--- a/interface/web/admin/lib/lang/hu_language_import.lng
+++ b/interface/web/admin/lib/lang/hu_language_import.lng
@@ -5,4 +5,5 @@ $wb['btn_save_txt'] = 'A kiválasztott nyelvi fájl importálása';
 $wb['language_overwrite_txt'] = 'Létző fájlokat felülírja.';
 $wb['btn_cancel_txt'] = 'Vissza';
 $wb['ignore_version_txt'] = 'Ne ellenőrizze az ISPConfig verziószámát';
+$wb['list_desc_txt'] = 'WARNING: Do not import language files from untrustworthy sources.';
 ?>
diff --git a/interface/web/admin/lib/lang/hu_remote_action.lng b/interface/web/admin/lib/lang/hu_remote_action.lng
index 6ef0ebe02e70b59cca765dd4537ff336f5813e22..8fe6314d3cc488a380dbd2f42743cf99ad91f59e 100644
--- a/interface/web/admin/lib/lang/hu_remote_action.lng
+++ b/interface/web/admin/lib/lang/hu_remote_action.lng
@@ -8,5 +8,5 @@ $wb['do_ispcupdate_desc'] = 'This action does a ISPConfig3 update at your select
 $wb['action_scheduled'] = 'The action is scheduled for execution';
 $wb['select_all_server'] = 'Összes szerver';
 $wb['ispconfig_update_title'] = 'ISPConfig update instructions';
-$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructions</a>';
+$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructins</a>';
 ?>
diff --git a/interface/web/admin/lib/lang/hu_software_package.lng b/interface/web/admin/lib/lang/hu_software_package.lng
index 62ef734079c5dd66dfb5b02390e23398a09233a8..faffe38217fb9cac04020e73e473c6c46e3caaa1 100644
--- a/interface/web/admin/lib/lang/hu_software_package.lng
+++ b/interface/web/admin/lib/lang/hu_software_package.lng
@@ -1,6 +1,6 @@
 <?php
-$wb["package_title_txt"] = 'Package Title';
-$wb["package_key_txt"] = 'Package Key';
-$wb["Software Package"] = 'Software Package';
+$wb['package_title_txt'] = 'Package Title';
+$wb['package_key_txt'] = 'Package Key';
+$wb['Software Package'] = 'Software Package';
 $wb['Modify software package details'] = 'Modify software package details';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/admin/lib/lang/hu_system_config.lng b/interface/web/admin/lib/lang/hu_system_config.lng
index ee5f429e2f92937aae345d437a04814a63975fc8..500828481c6d6449ec9a727bd8b15dba55ca6c32 100644
--- a/interface/web/admin/lib/lang/hu_system_config.lng
+++ b/interface/web/admin/lib/lang/hu_system_config.lng
@@ -52,4 +52,11 @@ $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail a
 $wb['webmail_url_error_regex'] = 'Invalid webmail URL';
 $wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
 $wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
 ?>
diff --git a/interface/web/admin/lib/lang/id_language_import.lng b/interface/web/admin/lib/lang/id_language_import.lng
index 5a1b30294b1afad29e7eecbe99df4b7d396493f3..e5e2b0643062b6a880e14e3f340c231a9a159112 100644
--- a/interface/web/admin/lib/lang/id_language_import.lng
+++ b/interface/web/admin/lib/lang/id_language_import.lng
@@ -5,4 +5,5 @@ $wb['btn_save_txt'] = 'Impor berkas bahasa yang telah dipilih';
 $wb['language_overwrite_txt'] = 'Timpa berkas, jika sudah ada.';
 $wb['btn_cancel_txt'] = 'Kembali';
 $wb['ignore_version_txt'] = 'Lewati pemeriksaan versi ISPConfig';
+$wb['list_desc_txt'] = 'WARNING: Do not import language files from untrustworthy sources.';
 ?>
diff --git a/interface/web/admin/lib/lang/id_remote_action.lng b/interface/web/admin/lib/lang/id_remote_action.lng
index bfe758aeaf88bde6e64c75b93f4d345488a2d8c6..3a1b8518ecd9bd8f4c1e54304929ce7b0bd3967d 100644
--- a/interface/web/admin/lib/lang/id_remote_action.lng
+++ b/interface/web/admin/lib/lang/id_remote_action.lng
@@ -8,5 +8,5 @@ $wb['do_ispcupdate_desc'] = 'Tindakan ini melakukan pemutakhiran ISPConfig3 di s
 $wb['action_scheduled'] = 'Tindakan dijadwalkan untuk dijalankan';
 $wb['select_all_server'] = 'Semua server';
 $wb['ispconfig_update_title'] = 'ISPConfig update instructions';
-$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructions</a>';
+$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructins</a>';
 ?>
diff --git a/interface/web/admin/lib/lang/id_software_package.lng b/interface/web/admin/lib/lang/id_software_package.lng
index 62ef734079c5dd66dfb5b02390e23398a09233a8..faffe38217fb9cac04020e73e473c6c46e3caaa1 100644
--- a/interface/web/admin/lib/lang/id_software_package.lng
+++ b/interface/web/admin/lib/lang/id_software_package.lng
@@ -1,6 +1,6 @@
 <?php
-$wb["package_title_txt"] = 'Package Title';
-$wb["package_key_txt"] = 'Package Key';
-$wb["Software Package"] = 'Software Package';
+$wb['package_title_txt'] = 'Package Title';
+$wb['package_key_txt'] = 'Package Key';
+$wb['Software Package'] = 'Software Package';
 $wb['Modify software package details'] = 'Modify software package details';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/admin/lib/lang/id_system_config.lng b/interface/web/admin/lib/lang/id_system_config.lng
index ecbf3c72c22684cca870dc50ba46a8fa46bf148e..81997b708f08820f7f63ff078bdd2c509bb76124 100644
--- a/interface/web/admin/lib/lang/id_system_config.lng
+++ b/interface/web/admin/lib/lang/id_system_config.lng
@@ -52,4 +52,11 @@ $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail a
 $wb['webmail_url_error_regex'] = 'Invalid webmail URL';
 $wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
 $wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
 ?>
diff --git a/interface/web/admin/lib/lang/it_language_import.lng b/interface/web/admin/lib/lang/it_language_import.lng
index 97625572386d8b9b6135a1cbe28842ea19c3c7dc..a6ce43814c9e088b5493c64601ce02b7d236a152 100644
--- a/interface/web/admin/lib/lang/it_language_import.lng
+++ b/interface/web/admin/lib/lang/it_language_import.lng
@@ -5,4 +5,5 @@ $wb['btn_save_txt'] = 'Importa il file di lingua selezionato';
 $wb['language_overwrite_txt'] = 'Sovrascrivi file, se esiste';
 $wb['btn_cancel_txt'] = 'Annulla';
 $wb['ignore_version_txt'] = 'Tralascia controllo versione ISPconfig';
+$wb['list_desc_txt'] = 'WARNING: Do not import language files from untrustworthy sources.';
 ?>
diff --git a/interface/web/admin/lib/lang/it_remote_action.lng b/interface/web/admin/lib/lang/it_remote_action.lng
index 3fc3eaf81f5d63a057aa0eecf965bfbdaf6af701..f26852708408df3bfb8307dbd3620e142f92f75e 100644
--- a/interface/web/admin/lib/lang/it_remote_action.lng
+++ b/interface/web/admin/lib/lang/it_remote_action.lng
@@ -8,5 +8,5 @@ $wb['do_ispcupdate_desc'] = 'This action does a ISPConfig3 update at your select
 $wb['action_scheduled'] = 'The action is scheduled for execution';
 $wb['select_all_server'] = 'All server';
 $wb['ispconfig_update_title'] = 'ISPConfig update instructions';
-$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructions</a>';
+$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructins</a>';
 ?>
diff --git a/interface/web/admin/lib/lang/it_software_package.lng b/interface/web/admin/lib/lang/it_software_package.lng
index 62ef734079c5dd66dfb5b02390e23398a09233a8..faffe38217fb9cac04020e73e473c6c46e3caaa1 100644
--- a/interface/web/admin/lib/lang/it_software_package.lng
+++ b/interface/web/admin/lib/lang/it_software_package.lng
@@ -1,6 +1,6 @@
 <?php
-$wb["package_title_txt"] = 'Package Title';
-$wb["package_key_txt"] = 'Package Key';
-$wb["Software Package"] = 'Software Package';
+$wb['package_title_txt'] = 'Package Title';
+$wb['package_key_txt'] = 'Package Key';
+$wb['Software Package'] = 'Software Package';
 $wb['Modify software package details'] = 'Modify software package details';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/admin/lib/lang/it_system_config.lng b/interface/web/admin/lib/lang/it_system_config.lng
index 8ba0b9fcb7bc0284cdd8d83849905168ff43cc48..bc26da23ea2b47f06b521a63a7d2460eb3eb6b7d 100644
--- a/interface/web/admin/lib/lang/it_system_config.lng
+++ b/interface/web/admin/lib/lang/it_system_config.lng
@@ -52,4 +52,11 @@ $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail a
 $wb['webmail_url_error_regex'] = 'Invalid webmail URL';
 $wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
 $wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
 ?>
diff --git a/interface/web/admin/lib/lang/ja_language_import.lng b/interface/web/admin/lib/lang/ja_language_import.lng
index 4c55514953169243010e8dd4ab55519d3ed1d453..eab12299c65758dc8248afc8a55e1f16b1900264 100644
--- a/interface/web/admin/lib/lang/ja_language_import.lng
+++ b/interface/web/admin/lib/lang/ja_language_import.lng
@@ -5,4 +5,5 @@ $wb['btn_save_txt'] = '選んだ言語へインポートする';
 $wb['language_overwrite_txt'] = '同名のファイルが存在する場合に上書きする';
 $wb['btn_cancel_txt'] = '戻る';
 $wb['ignore_version_txt'] = 'Skip ISPConfig version check';
+$wb['list_desc_txt'] = 'WARNING: Do not import language files from untrustworthy sources.';
 ?>
diff --git a/interface/web/admin/lib/lang/ja_remote_action.lng b/interface/web/admin/lib/lang/ja_remote_action.lng
index 3fc3eaf81f5d63a057aa0eecf965bfbdaf6af701..f26852708408df3bfb8307dbd3620e142f92f75e 100644
--- a/interface/web/admin/lib/lang/ja_remote_action.lng
+++ b/interface/web/admin/lib/lang/ja_remote_action.lng
@@ -8,5 +8,5 @@ $wb['do_ispcupdate_desc'] = 'This action does a ISPConfig3 update at your select
 $wb['action_scheduled'] = 'The action is scheduled for execution';
 $wb['select_all_server'] = 'All server';
 $wb['ispconfig_update_title'] = 'ISPConfig update instructions';
-$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructions</a>';
+$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructins</a>';
 ?>
diff --git a/interface/web/admin/lib/lang/ja_software_package.lng b/interface/web/admin/lib/lang/ja_software_package.lng
index 62ef734079c5dd66dfb5b02390e23398a09233a8..faffe38217fb9cac04020e73e473c6c46e3caaa1 100644
--- a/interface/web/admin/lib/lang/ja_software_package.lng
+++ b/interface/web/admin/lib/lang/ja_software_package.lng
@@ -1,6 +1,6 @@
 <?php
-$wb["package_title_txt"] = 'Package Title';
-$wb["package_key_txt"] = 'Package Key';
-$wb["Software Package"] = 'Software Package';
+$wb['package_title_txt'] = 'Package Title';
+$wb['package_key_txt'] = 'Package Key';
+$wb['Software Package'] = 'Software Package';
 $wb['Modify software package details'] = 'Modify software package details';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/admin/lib/lang/ja_system_config.lng b/interface/web/admin/lib/lang/ja_system_config.lng
index 842b65f3e76e1a14b3a27abd58f3137a7f4674ea..df99e6e62773f71710c05ca8e0030e0f0016f7ee 100644
--- a/interface/web/admin/lib/lang/ja_system_config.lng
+++ b/interface/web/admin/lib/lang/ja_system_config.lng
@@ -52,4 +52,11 @@ $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail a
 $wb['webmail_url_error_regex'] = 'Invalid webmail URL';
 $wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
 $wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
 ?>
diff --git a/interface/web/admin/lib/lang/nl_language_import.lng b/interface/web/admin/lib/lang/nl_language_import.lng
index cee58cb4a2f970878044f3674bd75b6958a72caa..ae407efecbe3bbaf413e644ba0408c4b0c958187 100644
--- a/interface/web/admin/lib/lang/nl_language_import.lng
+++ b/interface/web/admin/lib/lang/nl_language_import.lng
@@ -5,4 +5,5 @@ $wb['btn_save_txt'] = 'Importeer het geselecteerde taalbestand';
 $wb['language_overwrite_txt'] = 'Overschrijf bestand, als dit bestaat.';
 $wb['btn_cancel_txt'] = 'Terug';
 $wb['ignore_version_txt'] = 'Sla ISPConfig versie controle over';
+$wb['list_desc_txt'] = 'WARNING: Do not import language files from untrustworthy sources.';
 ?>
diff --git a/interface/web/admin/lib/lang/nl_remote_action.lng b/interface/web/admin/lib/lang/nl_remote_action.lng
index ae286d9ea401105080acada056852d64ed816458..c0046ff019ff98f6223bb2d7e964c8213e97cc80 100644
--- a/interface/web/admin/lib/lang/nl_remote_action.lng
+++ b/interface/web/admin/lib/lang/nl_remote_action.lng
@@ -8,5 +8,5 @@ $wb['do_ispcupdate_desc'] = 'Deze actie voert een ISPConfig3 update uit op de so
 $wb['action_scheduled'] = 'Deze actie is ingepland om uitgevoerd te worden';
 $wb['select_all_server'] = 'Alle servers';
 $wb['ispconfig_update_title'] = 'ISPConfig update instructions';
-$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructions</a>';
+$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructins</a>';
 ?>
diff --git a/interface/web/admin/lib/lang/nl_software_package.lng b/interface/web/admin/lib/lang/nl_software_package.lng
index 62ef734079c5dd66dfb5b02390e23398a09233a8..faffe38217fb9cac04020e73e473c6c46e3caaa1 100644
--- a/interface/web/admin/lib/lang/nl_software_package.lng
+++ b/interface/web/admin/lib/lang/nl_software_package.lng
@@ -1,6 +1,6 @@
 <?php
-$wb["package_title_txt"] = 'Package Title';
-$wb["package_key_txt"] = 'Package Key';
-$wb["Software Package"] = 'Software Package';
+$wb['package_title_txt'] = 'Package Title';
+$wb['package_key_txt'] = 'Package Key';
+$wb['Software Package'] = 'Software Package';
 $wb['Modify software package details'] = 'Modify software package details';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/admin/lib/lang/nl_system_config.lng b/interface/web/admin/lib/lang/nl_system_config.lng
index fe3b85e5e93e156b6224c29982600d57a7e8b7f7..b49eb07afc1a12ccedd522bd253641d0b8a2ef45 100644
--- a/interface/web/admin/lib/lang/nl_system_config.lng
+++ b/interface/web/admin/lib/lang/nl_system_config.lng
@@ -16,9 +16,6 @@ $wb['shelluser_prefix_error_regex'] = 'Char niet toegestaan in shell gebruiker v
 $wb['webdavuser_prefix_error_regex'] = 'Char niet toegestaan in webdav gebruiker voorvoegsel.';
 $wb['dblist_phpmyadmin_link_txt'] = 'Link naar phpmyadmin in DB lijst';
 $wb['mailboxlist_webmail_link_txt'] = 'Link naar webmail in Mailbox lijst';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Toon Autoresponder tabblad in Mailbox detail';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Toon Mail Filter tabblad in Mailbox detail';
-$wb['mailbox_show_custom_rules_tab_txt'] 'Toon Custom Rules tabblad in Mailbox detail';
 $wb['webmail_url_txt'] = 'Webmail URL';
 $wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
 $wb['use_domain_module_txt'] = 'Gebruik de domein-module om nieuwe domeinen toe te voegen';
@@ -55,4 +52,11 @@ $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail a
 $wb['webmail_url_error_regex'] = 'Invalid webmail URL';
 $wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
 $wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
 ?>
diff --git a/interface/web/admin/lib/lang/pl_language_import.lng b/interface/web/admin/lib/lang/pl_language_import.lng
index 077d0c00ea68d567ff4324219a28ea2ca7e164b6..5fd3212ed6edff599fb24f9eada2d3e8d38ddaea 100644
--- a/interface/web/admin/lib/lang/pl_language_import.lng
+++ b/interface/web/admin/lib/lang/pl_language_import.lng
@@ -5,4 +5,5 @@ $wb['btn_save_txt'] = 'Importuj wybrane pliki języka';
 $wb['language_overwrite_txt'] = 'Nadpisz plik jeśli istnieje.';
 $wb['btn_cancel_txt'] = 'Wróć';
 $wb['ignore_version_txt'] = 'Pomiń sprawdzanie wersji ISPConfig';
+$wb['list_desc_txt'] = 'WARNING: Do not import language files from untrustworthy sources.';
 ?>
diff --git a/interface/web/admin/lib/lang/pl_remote_action.lng b/interface/web/admin/lib/lang/pl_remote_action.lng
index 83fbc9e282a01a83ca99b4b1d15d6395af0613ed..7d03089933f9af238c469d3d7b58000a8177e38e 100644
--- a/interface/web/admin/lib/lang/pl_remote_action.lng
+++ b/interface/web/admin/lib/lang/pl_remote_action.lng
@@ -8,5 +8,5 @@ $wb['do_ispcupdate_desc'] = 'Ta akcja przeprowadzi aktualizacjÄ™ ISPConfig3 na w
 $wb['action_scheduled'] = 'Akcja zaplanowana do wykonania';
 $wb['select_all_server'] = 'Wszystkie serwery';
 $wb['ispconfig_update_title'] = 'ISPConfig update instructions';
-$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructions</a>';
+$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructins</a>';
 ?>
diff --git a/interface/web/admin/lib/lang/pl_software_package.lng b/interface/web/admin/lib/lang/pl_software_package.lng
index 62ef734079c5dd66dfb5b02390e23398a09233a8..faffe38217fb9cac04020e73e473c6c46e3caaa1 100644
--- a/interface/web/admin/lib/lang/pl_software_package.lng
+++ b/interface/web/admin/lib/lang/pl_software_package.lng
@@ -1,6 +1,6 @@
 <?php
-$wb["package_title_txt"] = 'Package Title';
-$wb["package_key_txt"] = 'Package Key';
-$wb["Software Package"] = 'Software Package';
+$wb['package_title_txt'] = 'Package Title';
+$wb['package_key_txt'] = 'Package Key';
+$wb['Software Package'] = 'Software Package';
 $wb['Modify software package details'] = 'Modify software package details';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/admin/lib/lang/pl_system_config.lng b/interface/web/admin/lib/lang/pl_system_config.lng
index 9d4f6f59ba1b463d2927a10995f655cf215e96cb..a3cd3c6bd9ef7e160446bdde78d31959efa759ad 100644
--- a/interface/web/admin/lib/lang/pl_system_config.lng
+++ b/interface/web/admin/lib/lang/pl_system_config.lng
@@ -52,4 +52,11 @@ $wb['mailbox_show_custom_rules_tab_txt'] = 'Pokaż zakładkę własnych filtrów
 $wb['webmail_url_error_regex'] = 'Invalid webmail URL';
 $wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
 $wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
 ?>
diff --git a/interface/web/admin/lib/lang/pt_language_import.lng b/interface/web/admin/lib/lang/pt_language_import.lng
index 440cee5512e2b3852fd702dc0a3b6e0baa9f9a29..919014da3e66dc88894d7f040df991d6b3bd20b6 100644
--- a/interface/web/admin/lib/lang/pt_language_import.lng
+++ b/interface/web/admin/lib/lang/pt_language_import.lng
@@ -5,4 +5,5 @@ $wb['btn_save_txt'] = 'Importar Ficheiro de Idioma Seleccionado';
 $wb['language_overwrite_txt'] = 'Sobre-escrever o ficheiro se existir.';
 $wb['btn_cancel_txt'] = 'Voltar';
 $wb['ignore_version_txt'] = 'Ignorar verificação da versão do ISPConfig';
+$wb['list_desc_txt'] = 'WARNING: Do not import language files from untrustworthy sources.';
 ?>
diff --git a/interface/web/admin/lib/lang/pt_remote_action.lng b/interface/web/admin/lib/lang/pt_remote_action.lng
index 3fc3eaf81f5d63a057aa0eecf965bfbdaf6af701..f26852708408df3bfb8307dbd3620e142f92f75e 100644
--- a/interface/web/admin/lib/lang/pt_remote_action.lng
+++ b/interface/web/admin/lib/lang/pt_remote_action.lng
@@ -8,5 +8,5 @@ $wb['do_ispcupdate_desc'] = 'This action does a ISPConfig3 update at your select
 $wb['action_scheduled'] = 'The action is scheduled for execution';
 $wb['select_all_server'] = 'All server';
 $wb['ispconfig_update_title'] = 'ISPConfig update instructions';
-$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructions</a>';
+$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructins</a>';
 ?>
diff --git a/interface/web/admin/lib/lang/pt_software_package.lng b/interface/web/admin/lib/lang/pt_software_package.lng
index 62ef734079c5dd66dfb5b02390e23398a09233a8..faffe38217fb9cac04020e73e473c6c46e3caaa1 100644
--- a/interface/web/admin/lib/lang/pt_software_package.lng
+++ b/interface/web/admin/lib/lang/pt_software_package.lng
@@ -1,6 +1,6 @@
 <?php
-$wb["package_title_txt"] = 'Package Title';
-$wb["package_key_txt"] = 'Package Key';
-$wb["Software Package"] = 'Software Package';
+$wb['package_title_txt'] = 'Package Title';
+$wb['package_key_txt'] = 'Package Key';
+$wb['Software Package'] = 'Software Package';
 $wb['Modify software package details'] = 'Modify software package details';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/admin/lib/lang/pt_system_config.lng b/interface/web/admin/lib/lang/pt_system_config.lng
index 32ed93f26099ad84e27c8ea23ffe2396eb0eebed..49bd93e9ccabbac5dc86ee1a2c89e4a055fb3924 100644
--- a/interface/web/admin/lib/lang/pt_system_config.lng
+++ b/interface/web/admin/lib/lang/pt_system_config.lng
@@ -52,4 +52,11 @@ $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail a
 $wb['webmail_url_error_regex'] = 'Invalid webmail URL';
 $wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
 $wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
 ?>
diff --git a/interface/web/admin/lib/lang/ro_language_import.lng b/interface/web/admin/lib/lang/ro_language_import.lng
index fefae80d037cac068fbada7947ee2a70c3eaf704..4b36072eb27d01f703095238b01bef5399ec4976 100644
--- a/interface/web/admin/lib/lang/ro_language_import.lng
+++ b/interface/web/admin/lib/lang/ro_language_import.lng
@@ -5,4 +5,5 @@ $wb['btn_save_txt'] = 'Import  file limba selectata';
 $wb['language_overwrite_txt'] = 'suprascrie  file, daca exista';
 $wb['btn_cancel_txt'] = 'inapoi';
 $wb['ignore_version_txt'] = 'Skip ISPConfig version check';
+$wb['list_desc_txt'] = 'WARNING: Do not import language files from untrustworthy sources.';
 ?>
diff --git a/interface/web/admin/lib/lang/ro_remote_action.lng b/interface/web/admin/lib/lang/ro_remote_action.lng
index 3fc3eaf81f5d63a057aa0eecf965bfbdaf6af701..f26852708408df3bfb8307dbd3620e142f92f75e 100644
--- a/interface/web/admin/lib/lang/ro_remote_action.lng
+++ b/interface/web/admin/lib/lang/ro_remote_action.lng
@@ -8,5 +8,5 @@ $wb['do_ispcupdate_desc'] = 'This action does a ISPConfig3 update at your select
 $wb['action_scheduled'] = 'The action is scheduled for execution';
 $wb['select_all_server'] = 'All server';
 $wb['ispconfig_update_title'] = 'ISPConfig update instructions';
-$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructions</a>';
+$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructins</a>';
 ?>
diff --git a/interface/web/admin/lib/lang/ro_software_package.lng b/interface/web/admin/lib/lang/ro_software_package.lng
index 62ef734079c5dd66dfb5b02390e23398a09233a8..faffe38217fb9cac04020e73e473c6c46e3caaa1 100644
--- a/interface/web/admin/lib/lang/ro_software_package.lng
+++ b/interface/web/admin/lib/lang/ro_software_package.lng
@@ -1,6 +1,6 @@
 <?php
-$wb["package_title_txt"] = 'Package Title';
-$wb["package_key_txt"] = 'Package Key';
-$wb["Software Package"] = 'Software Package';
+$wb['package_title_txt'] = 'Package Title';
+$wb['package_key_txt'] = 'Package Key';
+$wb['Software Package'] = 'Software Package';
 $wb['Modify software package details'] = 'Modify software package details';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/admin/lib/lang/ro_system_config.lng b/interface/web/admin/lib/lang/ro_system_config.lng
index d237d638af2929fd4175065dde2454688e1bb938..e2b701afc3d03570d248d0ce33e647d978f10a0d 100644
--- a/interface/web/admin/lib/lang/ro_system_config.lng
+++ b/interface/web/admin/lib/lang/ro_system_config.lng
@@ -52,4 +52,11 @@ $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail a
 $wb['webmail_url_error_regex'] = 'Invalid webmail URL';
 $wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
 $wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
 ?>
diff --git a/interface/web/admin/lib/lang/ru_language_import.lng b/interface/web/admin/lib/lang/ru_language_import.lng
index c63cc145af054a20e916ecbdb77459a6018d46f5..29b5cbf251b52f04206815e3bfdba66f0e2d8365 100644
--- a/interface/web/admin/lib/lang/ru_language_import.lng
+++ b/interface/web/admin/lib/lang/ru_language_import.lng
@@ -5,4 +5,5 @@ $wb['btn_save_txt'] = 'Импорт выбранного языкового фа
 $wb['language_overwrite_txt'] = 'Перезаписать, если есть.';
 $wb['btn_cancel_txt'] = 'Назад';
 $wb['ignore_version_txt'] = 'Пропустить проверку версий ISPConfig';
+$wb['list_desc_txt'] = 'WARNING: Do not import language files from untrustworthy sources.';
 ?>
diff --git a/interface/web/admin/lib/lang/ru_remote_action.lng b/interface/web/admin/lib/lang/ru_remote_action.lng
index 3fc3eaf81f5d63a057aa0eecf965bfbdaf6af701..f26852708408df3bfb8307dbd3620e142f92f75e 100644
--- a/interface/web/admin/lib/lang/ru_remote_action.lng
+++ b/interface/web/admin/lib/lang/ru_remote_action.lng
@@ -8,5 +8,5 @@ $wb['do_ispcupdate_desc'] = 'This action does a ISPConfig3 update at your select
 $wb['action_scheduled'] = 'The action is scheduled for execution';
 $wb['select_all_server'] = 'All server';
 $wb['ispconfig_update_title'] = 'ISPConfig update instructions';
-$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructions</a>';
+$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructins</a>';
 ?>
diff --git a/interface/web/admin/lib/lang/ru_software_package.lng b/interface/web/admin/lib/lang/ru_software_package.lng
index 62ef734079c5dd66dfb5b02390e23398a09233a8..faffe38217fb9cac04020e73e473c6c46e3caaa1 100644
--- a/interface/web/admin/lib/lang/ru_software_package.lng
+++ b/interface/web/admin/lib/lang/ru_software_package.lng
@@ -1,6 +1,6 @@
 <?php
-$wb["package_title_txt"] = 'Package Title';
-$wb["package_key_txt"] = 'Package Key';
-$wb["Software Package"] = 'Software Package';
+$wb['package_title_txt'] = 'Package Title';
+$wb['package_key_txt'] = 'Package Key';
+$wb['Software Package'] = 'Software Package';
 $wb['Modify software package details'] = 'Modify software package details';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/admin/lib/lang/ru_system_config.lng b/interface/web/admin/lib/lang/ru_system_config.lng
index ee0fc50b077705443b61eba9e42c639537c84538..612fe505396fe3447194505fc815eff941832bcc 100644
--- a/interface/web/admin/lib/lang/ru_system_config.lng
+++ b/interface/web/admin/lib/lang/ru_system_config.lng
@@ -52,4 +52,11 @@ $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail a
 $wb['webmail_url_error_regex'] = 'Invalid webmail URL';
 $wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
 $wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
 ?>
diff --git a/interface/web/admin/lib/lang/se_language_import.lng b/interface/web/admin/lib/lang/se_language_import.lng
index 4c31ec3de3606dcb7aebf451f711ff2dd41a8981..a5831fc9540c52e19194d2b128c16ad99b154a8a 100644
--- a/interface/web/admin/lib/lang/se_language_import.lng
+++ b/interface/web/admin/lib/lang/se_language_import.lng
@@ -5,4 +5,5 @@ $wb['btn_save_txt'] = 'Import the selected language file';
 $wb['language_overwrite_txt'] = 'Overwrite file, if exists.';
 $wb['btn_cancel_txt'] = 'Back';
 $wb['ignore_version_txt'] = 'Skip ISPConfig version check';
+$wb['list_desc_txt'] = 'WARNING: Do not import language files from untrustworthy sources.';
 ?>
diff --git a/interface/web/admin/lib/lang/se_remote_action.lng b/interface/web/admin/lib/lang/se_remote_action.lng
index 3fc3eaf81f5d63a057aa0eecf965bfbdaf6af701..f26852708408df3bfb8307dbd3620e142f92f75e 100644
--- a/interface/web/admin/lib/lang/se_remote_action.lng
+++ b/interface/web/admin/lib/lang/se_remote_action.lng
@@ -8,5 +8,5 @@ $wb['do_ispcupdate_desc'] = 'This action does a ISPConfig3 update at your select
 $wb['action_scheduled'] = 'The action is scheduled for execution';
 $wb['select_all_server'] = 'All server';
 $wb['ispconfig_update_title'] = 'ISPConfig update instructions';
-$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructions</a>';
+$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructins</a>';
 ?>
diff --git a/interface/web/admin/lib/lang/se_software_package.lng b/interface/web/admin/lib/lang/se_software_package.lng
index 62ef734079c5dd66dfb5b02390e23398a09233a8..faffe38217fb9cac04020e73e473c6c46e3caaa1 100644
--- a/interface/web/admin/lib/lang/se_software_package.lng
+++ b/interface/web/admin/lib/lang/se_software_package.lng
@@ -1,6 +1,6 @@
 <?php
-$wb["package_title_txt"] = 'Package Title';
-$wb["package_key_txt"] = 'Package Key';
-$wb["Software Package"] = 'Software Package';
+$wb['package_title_txt'] = 'Package Title';
+$wb['package_key_txt'] = 'Package Key';
+$wb['Software Package'] = 'Software Package';
 $wb['Modify software package details'] = 'Modify software package details';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/admin/lib/lang/se_system_config.lng b/interface/web/admin/lib/lang/se_system_config.lng
index d237d638af2929fd4175065dde2454688e1bb938..e2b701afc3d03570d248d0ce33e647d978f10a0d 100644
--- a/interface/web/admin/lib/lang/se_system_config.lng
+++ b/interface/web/admin/lib/lang/se_system_config.lng
@@ -52,4 +52,11 @@ $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail a
 $wb['webmail_url_error_regex'] = 'Invalid webmail URL';
 $wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
 $wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
 ?>
diff --git a/interface/web/admin/lib/lang/sk_language_import.lng b/interface/web/admin/lib/lang/sk_language_import.lng
index d842fc6cf3d499858f1a55ab523afa3108867be4..5dacacff52907776a2efbb55f2e2141d7b13824b 100644
--- a/interface/web/admin/lib/lang/sk_language_import.lng
+++ b/interface/web/admin/lib/lang/sk_language_import.lng
@@ -5,4 +5,5 @@ $wb['btn_save_txt'] = 'Import zvoleného jazykového súboru';
 $wb['language_overwrite_txt'] = 'Prepisať subor ak existuje';
 $wb['btn_cancel_txt'] = 'Späť';
 $wb['ignore_version_txt'] = 'Skip ISPConfig version check';
+$wb['list_desc_txt'] = 'WARNING: Do not import language files from untrustworthy sources.';
 ?>
diff --git a/interface/web/admin/lib/lang/sk_remote_action.lng b/interface/web/admin/lib/lang/sk_remote_action.lng
index 3fc3eaf81f5d63a057aa0eecf965bfbdaf6af701..f26852708408df3bfb8307dbd3620e142f92f75e 100644
--- a/interface/web/admin/lib/lang/sk_remote_action.lng
+++ b/interface/web/admin/lib/lang/sk_remote_action.lng
@@ -8,5 +8,5 @@ $wb['do_ispcupdate_desc'] = 'This action does a ISPConfig3 update at your select
 $wb['action_scheduled'] = 'The action is scheduled for execution';
 $wb['select_all_server'] = 'All server';
 $wb['ispconfig_update_title'] = 'ISPConfig update instructions';
-$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructions</a>';
+$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructins</a>';
 ?>
diff --git a/interface/web/admin/lib/lang/sk_software_package.lng b/interface/web/admin/lib/lang/sk_software_package.lng
index 62ef734079c5dd66dfb5b02390e23398a09233a8..faffe38217fb9cac04020e73e473c6c46e3caaa1 100644
--- a/interface/web/admin/lib/lang/sk_software_package.lng
+++ b/interface/web/admin/lib/lang/sk_software_package.lng
@@ -1,6 +1,6 @@
 <?php
-$wb["package_title_txt"] = 'Package Title';
-$wb["package_key_txt"] = 'Package Key';
-$wb["Software Package"] = 'Software Package';
+$wb['package_title_txt'] = 'Package Title';
+$wb['package_key_txt'] = 'Package Key';
+$wb['Software Package'] = 'Software Package';
 $wb['Modify software package details'] = 'Modify software package details';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/admin/lib/lang/sk_system_config.lng b/interface/web/admin/lib/lang/sk_system_config.lng
index 3b8b68321e7ef49cd1408b94211236daaac7fb15..1340eee8bb2f91584b9f24e7c78b3bc03f3ad24c 100644
--- a/interface/web/admin/lib/lang/sk_system_config.lng
+++ b/interface/web/admin/lib/lang/sk_system_config.lng
@@ -52,4 +52,11 @@ $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail a
 $wb['webmail_url_error_regex'] = 'Invalid webmail URL';
 $wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
 $wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_language_import.lng b/interface/web/admin/lib/lang/tr_language_import.lng
index 2caaa079860fe95ece2be4d87563e75d5d24e1d2..77173d506b07138b9e026259621ec3bfec92ac95 100644
--- a/interface/web/admin/lib/lang/tr_language_import.lng
+++ b/interface/web/admin/lib/lang/tr_language_import.lng
@@ -5,4 +5,5 @@ $wb['btn_save_txt'] = 'Seçili dil dosyasını içe aktar';
 $wb['language_overwrite_txt'] = 'Eğer mevcutsa, üstüne yaz.';
 $wb['btn_cancel_txt'] = 'Geri';
 $wb['ignore_version_txt'] = 'Skip ISPConfig version check';
+$wb['list_desc_txt'] = 'WARNING: Do not import language files from untrustworthy sources.';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_remote_action.lng b/interface/web/admin/lib/lang/tr_remote_action.lng
index 3fc3eaf81f5d63a057aa0eecf965bfbdaf6af701..f26852708408df3bfb8307dbd3620e142f92f75e 100644
--- a/interface/web/admin/lib/lang/tr_remote_action.lng
+++ b/interface/web/admin/lib/lang/tr_remote_action.lng
@@ -8,5 +8,5 @@ $wb['do_ispcupdate_desc'] = 'This action does a ISPConfig3 update at your select
 $wb['action_scheduled'] = 'The action is scheduled for execution';
 $wb['select_all_server'] = 'All server';
 $wb['ispconfig_update_title'] = 'ISPConfig update instructions';
-$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructions</a>';
+$wb['ispconfig_update_text'] = 'Login as root user on the shell of your server and execute the command<br /><br /> <strong>ispconfig_update.sh</strong><br /><br />to start the ISPConfig update.<br /><br /><a href=http://www.faqforge.com/linux/controlpanels/ispconfig3/how-to-update-ispconfig-3/ target=_blank>Click here for detailed update instructins</a>';
 ?>
diff --git a/interface/web/admin/lib/lang/tr_software_package.lng b/interface/web/admin/lib/lang/tr_software_package.lng
index 62ef734079c5dd66dfb5b02390e23398a09233a8..faffe38217fb9cac04020e73e473c6c46e3caaa1 100644
--- a/interface/web/admin/lib/lang/tr_software_package.lng
+++ b/interface/web/admin/lib/lang/tr_software_package.lng
@@ -1,6 +1,6 @@
 <?php
-$wb["package_title_txt"] = 'Package Title';
-$wb["package_key_txt"] = 'Package Key';
-$wb["Software Package"] = 'Software Package';
+$wb['package_title_txt'] = 'Package Title';
+$wb['package_key_txt'] = 'Package Key';
+$wb['Software Package'] = 'Software Package';
 $wb['Modify software package details'] = 'Modify software package details';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/admin/lib/lang/tr_system_config.lng b/interface/web/admin/lib/lang/tr_system_config.lng
index e538a313f98f30ebe3b960c6c397a2a9165ea40e..8a5fd3a86f5ed1557e7041ed67c992b81e7b4148 100644
--- a/interface/web/admin/lib/lang/tr_system_config.lng
+++ b/interface/web/admin/lib/lang/tr_system_config.lng
@@ -52,4 +52,11 @@ $wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail a
 $wb['webmail_url_error_regex'] = 'Invalid webmail URL';
 $wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
 $wb['webmail_url_note_txt'] = 'Placeholder:';
+$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
+$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
+$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
+$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
+$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
+$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
+$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
 ?>
diff --git a/interface/web/admin/lib/menu.d/tpl_default.menu.php b/interface/web/admin/lib/menu.d/tpl_default.menu.php
index d6d071a701996d45f9445d88a239cd74002d642d..544400246eda49d6560a482bb7871b613ef0d065 100644
--- a/interface/web/admin/lib/menu.d/tpl_default.menu.php
+++ b/interface/web/admin/lib/menu.d/tpl_default.menu.php
@@ -1,15 +1,15 @@
-<?php
-/* Removed because tpl_default.php does not work
-for($m = 0; $m < count($module['nav']); $m++) {
-    if($module['nav'][$m]['title'] == 'Interface') {
-
-        $module['nav'][$m]['items'][] = array(  'title'     => 'Default Theme',
-                                                'target' 	=> 'content',
-                                                'link'	=> 'admin/tpl_default.php',
-                                                'html_id'   => 'tpl_default');
-        break;
-    }
-}
-*/
-
-?>
+<?php
+/* Removed because tpl_default.php does not work
+for($m = 0; $m < count($module['nav']); $m++) {
+    if($module['nav'][$m]['title'] == 'Interface') {
+
+        $module['nav'][$m]['items'][] = array(  'title'     => 'Default Theme',
+                                                'target' 	=> 'content',
+                                                'link'	=> 'admin/tpl_default.php',
+                                                'html_id'   => 'tpl_default');
+        break;
+    }
+}
+*/
+
+?>
diff --git a/interface/web/admin/templates/iptables_edit.htm b/interface/web/admin/templates/iptables_edit.htm
index 23228d4563f9470925a79b123d1e54decf47d02e..283c5e78dbe169f1bca837b47109aa3f1439a127 100644
--- a/interface/web/admin/templates/iptables_edit.htm
+++ b/interface/web/admin/templates/iptables_edit.htm
@@ -1,67 +1,67 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-<div class="panel panel_iptables">
-    
-    <div class="pnl_formsarea">
-        <fieldset class="inlineLabels">
-            <div class="ctrlHolder">
-                <label for="server_id">{tmpl_var name='server_id_txt'}</label>
-                <select name="server_id" id="server_id" class="selectInput">
-                    {tmpl_var name='server_id'}
-                </select>
-            </div>
-            <div class="ctrlHolder">
-                <label for="table">{tmpl_var name='table_txt'}</label>
-                <select name="table" id="table" class="selectInput formLengthLimit">
-                    {tmpl_var name='table'}
-                </select>
-            </div>
-            <div class="ctrlHolder">
-                <label for="protocol">{tmpl_var name='protocol_txt'}</label>
-                <select name="protocol" id="protocol" class="selectInput formLengthLimit">
-                    {tmpl_var name='protocol'}
-                </select>
-            </div>
-            <div class="ctrlHolder">
-                <label for="singleport">{tmpl_var name='singleport_txt'}</label>
-                <input name="singleport" id="singleport" value="{tmpl_var name='singleport'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
-            </div>
-            <div class="ctrlHolder">
-                <label for="multiport">{tmpl_var name='multiport_txt'}</label>
-                <input name="multiport" id="multiport" value="{tmpl_var name='multiport'}" size="20" maxlength="40" type="text" class="textInput" />
-            </div>
-            <div class="ctrlHolder">
-                <label for="destination_ip">{tmpl_var name='destination_ip_txt'}</label>
-                <input name="destination_ip" id="destination_ip" value="{tmpl_var name='destination_ip'}" size="16" maxlength="20" type="text" class="textInput formLengthIPv4" />
-            </div>
-            <div class="ctrlHolder">
-                <label for="source_ip">{tmpl_var name='source_ip_txt'}</label>
-                <input name="source_ip" id="source_ip" value="{tmpl_var name='source_ip'}" size="16" maxlength="20" type="text" class="textInput formLengthIPv4" />
-            </div>
-            <div class="ctrlHolder">
-                <label for="state">{tmpl_var name='state_txt'}</label>
-                <input name="state" id="state" value="{tmpl_var name='state'}" size="16" maxlength="20" type="text" class="textInput" />
-            </div>
-            <div class="ctrlHolder">
-                <label for="target">{tmpl_var name='target_txt'}</label>
-                <select name="target" id="target" class="selectInput formLengthLimit">
-                    {tmpl_var name='target'}
-                </select>
-            </div>
-            <div class="ctrlHolder">
-                <p class="label">{tmpl_var name='active_txt'}</p>
-                <div class="multiField">
-                    {tmpl_var name='active'}
-                </div>
-            </div>
-        </fieldset>
-        <input type="hidden" name="id" value="{tmpl_var name='id'}">
-        <div class="buttonHolder buttons">
-            <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onclick="submitForm('pageForm','admin/iptables_edit.php');">
-                <span>{tmpl_var name='btn_save_txt'}</span></button>
-            <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onclick="loadContent('admin/iptables_list.php');">
-                <span>{tmpl_var name='btn_cancel_txt'}</span></button>
-        </div>
-    </div> 
-    
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+<div class="panel panel_iptables">
+    
+    <div class="pnl_formsarea">
+        <fieldset class="inlineLabels">
+            <div class="ctrlHolder">
+                <label for="server_id">{tmpl_var name='server_id_txt'}</label>
+                <select name="server_id" id="server_id" class="selectInput">
+                    {tmpl_var name='server_id'}
+                </select>
+            </div>
+            <div class="ctrlHolder">
+                <label for="table">{tmpl_var name='table_txt'}</label>
+                <select name="table" id="table" class="selectInput formLengthLimit">
+                    {tmpl_var name='table'}
+                </select>
+            </div>
+            <div class="ctrlHolder">
+                <label for="protocol">{tmpl_var name='protocol_txt'}</label>
+                <select name="protocol" id="protocol" class="selectInput formLengthLimit">
+                    {tmpl_var name='protocol'}
+                </select>
+            </div>
+            <div class="ctrlHolder">
+                <label for="singleport">{tmpl_var name='singleport_txt'}</label>
+                <input name="singleport" id="singleport" value="{tmpl_var name='singleport'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
+            </div>
+            <div class="ctrlHolder">
+                <label for="multiport">{tmpl_var name='multiport_txt'}</label>
+                <input name="multiport" id="multiport" value="{tmpl_var name='multiport'}" size="20" maxlength="40" type="text" class="textInput" />
+            </div>
+            <div class="ctrlHolder">
+                <label for="destination_ip">{tmpl_var name='destination_ip_txt'}</label>
+                <input name="destination_ip" id="destination_ip" value="{tmpl_var name='destination_ip'}" size="16" maxlength="20" type="text" class="textInput formLengthIPv4" />
+            </div>
+            <div class="ctrlHolder">
+                <label for="source_ip">{tmpl_var name='source_ip_txt'}</label>
+                <input name="source_ip" id="source_ip" value="{tmpl_var name='source_ip'}" size="16" maxlength="20" type="text" class="textInput formLengthIPv4" />
+            </div>
+            <div class="ctrlHolder">
+                <label for="state">{tmpl_var name='state_txt'}</label>
+                <input name="state" id="state" value="{tmpl_var name='state'}" size="16" maxlength="20" type="text" class="textInput" />
+            </div>
+            <div class="ctrlHolder">
+                <label for="target">{tmpl_var name='target_txt'}</label>
+                <select name="target" id="target" class="selectInput formLengthLimit">
+                    {tmpl_var name='target'}
+                </select>
+            </div>
+            <div class="ctrlHolder">
+                <p class="label">{tmpl_var name='active_txt'}</p>
+                <div class="multiField">
+                    {tmpl_var name='active'}
+                </div>
+            </div>
+        </fieldset>
+        <input type="hidden" name="id" value="{tmpl_var name='id'}">
+        <div class="buttonHolder buttons">
+            <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onclick="submitForm('pageForm','admin/iptables_edit.php');">
+                <span>{tmpl_var name='btn_save_txt'}</span></button>
+            <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onclick="loadContent('admin/iptables_list.php');">
+                <span>{tmpl_var name='btn_cancel_txt'}</span></button>
+        </div>
+    </div> 
+    
 </div>
\ No newline at end of file
diff --git a/interface/web/admin/templates/iptables_list.htm b/interface/web/admin/templates/iptables_list.htm
index 523ec675de30bf704b31eb771e9d321f289ac328..e3747054e3f5261af38a0ad2e267ef0b063e910e 100644
--- a/interface/web/admin/templates/iptables_list.htm
+++ b/interface/web/admin/templates/iptables_list.htm
@@ -1,74 +1,74 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-
-<div class="panel panel_list_iptables">
-
-    <div class="pnl_toolsarea">
-        <fieldset><legend>Tools</legend>
-            <div class="buttons">
-                <button class="button iconstxt icoAdd" type="button" onclick="loadContent('admin/iptables_edit.php');">
-                    <span>{tmpl_var name="add_new_rule_txt"}</span>
-                </button>
-            </div>
-        </fieldset>
-    </div>
-
-    <div class="pnl_listarea">
-        <fieldset><legend><tmpl_var name="list_head_txt"></legend>
-            <table class="list">
-                <thead>
-                    <tr class="caption">
-                        <th class="tbl_col_active" scope="col"><tmpl_var name="active_txt"></th>
-                        <th class="tbl_col_server_id" scope="col"><tmpl_var name="server_id_txt"></th>
-                        <th class="tbl_col_table" scope="col"><tmpl_var name="table_txt"></th>
-                        <th class="tbl_col_protocol" scope="col"><tmpl_var name="protocol_txt"></th>
-                        <th class="tbl_col_port" scope="col"><tmpl_var name="singleport_txt"></th>
-                        <th class="tbl_col_port" scope="col"><tmpl_var name="multiport_txt"></th>
-                        <th class="tbl_col_state" scope="col"><tmpl_var name="state_txt"></th>
-                        <th class="tbl_col_target" scope="col"><tmpl_var name="target_txt"></th>
-                        <th class="tbl_col_buttons" scope="col">&nbsp;</th>
-                    </tr>
-                    <tr class="filter">
-                        <td class="tbl_col_active"><select name="search_active">{tmpl_var name='search_active'}</select></td>
-                        <td class="tbl_col_server_id"><select name="search_server_id">{tmpl_var name='search_server_id'}</select></td>
-                        <td class="tbl_col_table"></td>
-                        <td class="tbl_col_protocol"><select name="search_protocol">{tmpl_var name='search_protocol'}</select></td>
-                        <td class="tbl_col_singleport"></td>
-                        <td class="tbl_col_multiport"></td>
-                        <td class="tbl_col_state"></td>
-                        <td class="tbl_col_target"><select name="search_target">{tmpl_var name='search_target'}</select></td>
-                        <td class="tbl_col_buttons">
-                            <button type="button" class="button icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" onclick="submitForm('pageForm','admin/iptables_list.php');"><span>{tmpl_var name="filter_txt"}filter_txt</span></button>
-                        </td>
-                    </tr>
-                </thead>
-                <tbody>
-                    <tmpl_loop name="records">
-                        <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
-                            <td class="tbl_col_active"><a href="#" onclick="loadContent('admin/iptables_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="active"}</a></td>
-                            <td class="tbl_col_server_id"><a href="#" onclick="loadContent('admin/iptables_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="server_id"}</a></td>
-                            <td class="tbl_col_table"><a href="#" onclick="loadContent('admin/iptables_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="table"}</a></td>
-                            <td class="tbl_col_protocol"><a href="#" onclick="loadContent('admin/iptables_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="protocol"}</a></td>
-                            <td class="tbl_col_singleport"><a href="#" onclick="loadContent('admin/iptables_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="singleport"}</a></td>
-                            <td class="tbl_col_multiport"><a href="#" onclick="loadContent('admin/iptables_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="multiport"}</a></td>
-                            <td class="tbl_col_state"><a href="#" onclick="loadContent('admin/iptables_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="state"}</a></td>
-                            <td class="tbl_col_target"><a href="#" onclick="loadContent('admin/iptables_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="target"}</a></td>
-                            <td class="tbl_col_buttons">
-                                <a class="button icons16 icoDelete" href="javascript: del_record('admin/iptables_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span>{tmpl_var name='delete_txt'}</span></a>
-                            </td>
-                        </tr>
-                    </tmpl_loop>
-                    <tmpl_unless name="records">
-                        <tr class="tbl_row_noresults tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
-                            <td colspan="9">{tmpl_var name='globalsearch_noresults_text_txt'}</td>
-                        </tr>
-                    </tmpl_unless>
-                </tbody>
-                <tfoot>
-                    <tr>
-                        <td class="tbl_footer tbl_paging" colspan="9"><tmpl_var name="paging"></td>
-                    </tr>
-                </tfoot>
-            </table>
-        </fieldset>
-    </div>
+<h2><tmpl_var name="list_head_txt"></h2>
+
+<div class="panel panel_list_iptables">
+
+    <div class="pnl_toolsarea">
+        <fieldset><legend>Tools</legend>
+            <div class="buttons">
+                <button class="button iconstxt icoAdd" type="button" onclick="loadContent('admin/iptables_edit.php');">
+                    <span>{tmpl_var name="add_new_rule_txt"}</span>
+                </button>
+            </div>
+        </fieldset>
+    </div>
+
+    <div class="pnl_listarea">
+        <fieldset><legend><tmpl_var name="list_head_txt"></legend>
+            <table class="list">
+                <thead>
+                    <tr class="caption">
+                        <th class="tbl_col_active" scope="col"><tmpl_var name="active_txt"></th>
+                        <th class="tbl_col_server_id" scope="col"><tmpl_var name="server_id_txt"></th>
+                        <th class="tbl_col_table" scope="col"><tmpl_var name="table_txt"></th>
+                        <th class="tbl_col_protocol" scope="col"><tmpl_var name="protocol_txt"></th>
+                        <th class="tbl_col_port" scope="col"><tmpl_var name="singleport_txt"></th>
+                        <th class="tbl_col_port" scope="col"><tmpl_var name="multiport_txt"></th>
+                        <th class="tbl_col_state" scope="col"><tmpl_var name="state_txt"></th>
+                        <th class="tbl_col_target" scope="col"><tmpl_var name="target_txt"></th>
+                        <th class="tbl_col_buttons" scope="col">&nbsp;</th>
+                    </tr>
+                    <tr class="filter">
+                        <td class="tbl_col_active"><select name="search_active">{tmpl_var name='search_active'}</select></td>
+                        <td class="tbl_col_server_id"><select name="search_server_id">{tmpl_var name='search_server_id'}</select></td>
+                        <td class="tbl_col_table"></td>
+                        <td class="tbl_col_protocol"><select name="search_protocol">{tmpl_var name='search_protocol'}</select></td>
+                        <td class="tbl_col_singleport"></td>
+                        <td class="tbl_col_multiport"></td>
+                        <td class="tbl_col_state"></td>
+                        <td class="tbl_col_target"><select name="search_target">{tmpl_var name='search_target'}</select></td>
+                        <td class="tbl_col_buttons">
+                            <button type="button" class="button icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" onclick="submitForm('pageForm','admin/iptables_list.php');"><span>{tmpl_var name="filter_txt"}filter_txt</span></button>
+                        </td>
+                    </tr>
+                </thead>
+                <tbody>
+                    <tmpl_loop name="records">
+                        <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
+                            <td class="tbl_col_active"><a href="#" onclick="loadContent('admin/iptables_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="active"}</a></td>
+                            <td class="tbl_col_server_id"><a href="#" onclick="loadContent('admin/iptables_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="server_id"}</a></td>
+                            <td class="tbl_col_table"><a href="#" onclick="loadContent('admin/iptables_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="table"}</a></td>
+                            <td class="tbl_col_protocol"><a href="#" onclick="loadContent('admin/iptables_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="protocol"}</a></td>
+                            <td class="tbl_col_singleport"><a href="#" onclick="loadContent('admin/iptables_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="singleport"}</a></td>
+                            <td class="tbl_col_multiport"><a href="#" onclick="loadContent('admin/iptables_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="multiport"}</a></td>
+                            <td class="tbl_col_state"><a href="#" onclick="loadContent('admin/iptables_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="state"}</a></td>
+                            <td class="tbl_col_target"><a href="#" onclick="loadContent('admin/iptables_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="target"}</a></td>
+                            <td class="tbl_col_buttons">
+                                <a class="button icons16 icoDelete" href="javascript: del_record('admin/iptables_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span>{tmpl_var name='delete_txt'}</span></a>
+                            </td>
+                        </tr>
+                    </tmpl_loop>
+                    <tmpl_unless name="records">
+                        <tr class="tbl_row_noresults tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
+                            <td colspan="9">{tmpl_var name='globalsearch_noresults_text_txt'}</td>
+                        </tr>
+                    </tmpl_unless>
+                </tbody>
+                <tfoot>
+                    <tr>
+                        <td class="tbl_footer tbl_paging" colspan="9"><tmpl_var name="paging"></td>
+                    </tr>
+                </tfoot>
+            </table>
+        </fieldset>
+    </div>
 </div>
\ No newline at end of file
diff --git a/interface/web/admin/templates/language_import.htm b/interface/web/admin/templates/language_import.htm
index 85ea2a97d1f41b487664eb0684fda7a854856c95..d674b200a7f544916bc57c2201d1597e17222a2d 100644
--- a/interface/web/admin/templates/language_import.htm
+++ b/interface/web/admin/templates/language_import.htm
@@ -4,7 +4,7 @@
 <div class="panel panel_language_import">
   
     <div class="pnl_formsarea">
-        <fieldset class="inlineLabels"><legend>Language Import</legend>
+		<fieldset class="inlineLabels"><legend>Language Import</legend>
             <div class="ctrlHolder">
                 <label for="lng_select">{tmpl_var name='language_import_txt'}</label>
                 <input name="file" id="file" size="30" type="file" class="fileUpload" />
diff --git a/interface/web/admin/templates/server_config_mail_edit.htm b/interface/web/admin/templates/server_config_mail_edit.htm
index 6ab03eb9bd630caf06ab6a41a5c8d788cd314afa..752bc22da27e8d819f3fdc52da31c3f58b5c8d2a 100644
--- a/interface/web/admin/templates/server_config_mail_edit.htm
+++ b/interface/web/admin/templates/server_config_mail_edit.htm
@@ -19,10 +19,6 @@
                 <label for="homedir_path">{tmpl_var name='homedir_path_txt'}</label>
                 <input name="homedir_path" id="homedir_path" value="{tmpl_var name='homedir_path'}" size="40" maxlength="255" type="text" class="textInput" />
             </div>
-            <div class="ctrlHolder">
-                <label for="dkim_path">{tmpl_var name='dkim_path_txt'}</label>
-                <input name="dkim_path" id="dkim_path" value="{tmpl_var name='dkim_path'}" size="40" maxlength="255" type="text" class="textInput" />
-            </div>
             <div class="ctrlHolder">
                 <p class="label">{tmpl_var name='pop3_imap_daemon_txt'}</p>
                 <div class="multiField">
@@ -117,4 +113,4 @@
         </div>
     </div>
     
-</div>
+</div>
\ No newline at end of file
diff --git a/interface/web/admin/templates/server_config_rescue_edit.htm b/interface/web/admin/templates/server_config_rescue_edit.htm
index 28b5cb4bd5fdc3e2b963a3fee978ee6dfd402076..778225b3e65087eee44762497db29bd265c9baf8 100644
--- a/interface/web/admin/templates/server_config_rescue_edit.htm
+++ b/interface/web/admin/templates/server_config_rescue_edit.htm
@@ -17,12 +17,6 @@
                     {tmpl_var name='do_not_try_rescue_httpd'}
                 </div>
             </div>
-            <div class="ctrlHolder">
-                <p class="label" style="width:300px">{tmpl_var name='do_not_try_rescue_mongodb_txt'}</p>
-                <div class="multiField" style="width:100px">
-                    {tmpl_var name='do_not_try_rescue_mongodb'}
-                </div>
-            </div>
             <div class="ctrlHolder">
                 <p class="label" style="width:300px">{tmpl_var name='do_not_try_rescue_mysql_txt'}</p>
                 <div class="multiField" style="width:100px">
@@ -36,15 +30,15 @@
                 </div>
             </div>
         </fieldset>
-
+            
         <tmpl_var name="rescue_description_txt">
-
+            
             <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
+                
             <div class="buttonHolder buttons">
                 <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onclick="submitForm('pageForm','admin/server_config_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
                 <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onclick="loadContent('admin/server_config_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
             </div>
     </div>
-
-</div>
+  
+</div>
\ No newline at end of file
diff --git a/interface/web/admin/templates/server_config_server_edit.htm b/interface/web/admin/templates/server_config_server_edit.htm
index 6dab52f3ab8feb2719d34e809f60aff8239dff8e..93158d734b7a813e4347f205f9e9de96ac0b766a 100644
--- a/interface/web/admin/templates/server_config_server_edit.htm
+++ b/interface/web/admin/templates/server_config_server_edit.htm
@@ -16,16 +16,17 @@
                 <input name="ip_address" id="ip_address" value="{tmpl_var name='ip_address'}" size="15" maxlength="255" type="text" class="textInput formLengthIPv4" />
             </div>
             <div class="ctrlHolder">
-                <label for="netmask">{tmpl_var name='netmask_txt'}</label>
-                <input name="netmask" id="netmask" value="{tmpl_var name='netmask'}" size="15" maxlength="255" type="text" class="textInput formLengthIPv4" />
-            </div>
-	    <div class="ctrlHolder">
-		<label for="v6_prefix">{tmpl_var name='v6_prefix_txt'}</label>
-		<input name="v6_prefix" id="v6_prefix" value="{tmpl_var name='v6_prefix'}" size="15" maxlength="255" type="text" class="textInput formLengthIPv4" />
-            </div>
-            <div class="ctrlHolder">
-                <label for="gateway">{tmpl_var name='gateway_txt'}</label>
-                <input name="gateway" id="gateway" value="{tmpl_var name='gateway'}" size="15" maxlength="255" type="text" class="textInput formLengthIPv4" />
+                <label for="netmask">{tmpl_var name='netmask_txt'}</label>
+                <input name="netmask" id="netmask" value="{tmpl_var name='netmask'}" size="15" maxlength="255" type="text" class="textInput formLengthIPv4" />
+            </div>
+	   <!--<div class="ctrlHolder">
+		<label for="v6_prefix">{tmpl_var name='v6_prefix_txt'}</label>
+		<input name="v6_prefix" id="v6_prefix" value="{tmpl_var name='v6_prefix'}" size="15" maxlength="255" type="text" class="textInput formLengthIPv4" />
+           </div>
+		   -->
+            <div class="ctrlHolder">
+                <label for="gateway">{tmpl_var name='gateway_txt'}</label>
+                <input name="gateway" id="gateway" value="{tmpl_var name='gateway'}" size="15" maxlength="255" type="text" class="textInput formLengthIPv4" />
             </div>
             <div class="ctrlHolder">
                 <label for="hostname">{tmpl_var name='hostname_txt'}</label>
@@ -95,7 +96,7 @@
         <div class="buttonHolder buttons">
             <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onclick="submitForm('pageForm','admin/server_config_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
             <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onclick="loadContent('admin/server_config_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
-        </div>
-    </div>
-  
-</div>
+        </div>
+    </div>
+  
+</div>
diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm
index 6656634b16265ac5f148fe22a5a03bc4514f748c..7e75f5053267b5d786fd0c153666093840859b4e 100644
--- a/interface/web/admin/templates/server_config_web_edit.htm
+++ b/interface/web/admin/templates/server_config_web_edit.htm
@@ -32,20 +32,20 @@
                 </div>
             </div>
             <div class="ctrlHolder">
-                <label for="website_autoalias">{tmpl_var name='website_autoalias_txt'}</label>
-                <input name="website_autoalias" id="website_autoalias" value="{tmpl_var name='website_autoalias'}" size="40" maxlength="255" type="text" class="textInput" />&nbsp;{tmpl_var name='website_autoalias_note_txt'} <a href="javascript:void(0);" class="addPlaceholder">[client_id]</a>, <a href="javascript:void(0);" class="addPlaceholder">[client_username]</a>, <a href="javascript:void(0);" class="addPlaceholder">[website_id]</a>, <a href="javascript:void(0);" class="addPlaceholder">[website_domain]</a>
+                <label for="website_autoalias">{tmpl_var name='website_autoalias_txt'}</label>
+                <input name="website_autoalias" id="website_autoalias" value="{tmpl_var name='website_autoalias'}" size="40" maxlength="255" type="text" class="textInput" />&nbsp;{tmpl_var name='website_autoalias_note_txt'} <a href="javascript:void(0);" class="addPlaceholder">[client_id]</a>, <a href="javascript:void(0);" class="addPlaceholder">[client_username]</a>, <a href="javascript:void(0);" class="addPlaceholder">[website_id]</a>, <a href="javascript:void(0);" class="addPlaceholder">[website_domain]</a>
             </div>
-			<!--
-		<div class="ctrlHolder apache">
-			<label for="vhost_rewrite_v6">{tmpl_var name='vhost_rewrite_v6_txt'}</label>
-			<div class="multiField">
-				{tmpl_var name='vhost_rewrite_v6'}
-			</div>
+			<!--
+		<div class="ctrlHolder apache">
+			<label for="vhost_rewrite_v6">{tmpl_var name='vhost_rewrite_v6_txt'}</label>
+			<div class="multiField">
+				{tmpl_var name='vhost_rewrite_v6'}
+			</div>
 		</div>
-			-->
-            <div class="ctrlHolder apache">
-                <label for="vhost_conf_dir">{tmpl_var name='vhost_conf_dir_txt'}</label>
-                <input name="vhost_conf_dir" id="vhost_conf_dir" value="{tmpl_var name='vhost_conf_dir'}" size="40" maxlength="255" type="text" class="textInput" />
+			-->
+            <div class="ctrlHolder apache">
+                <label for="vhost_conf_dir">{tmpl_var name='vhost_conf_dir_txt'}</label>
+                <input name="vhost_conf_dir" id="vhost_conf_dir" value="{tmpl_var name='vhost_conf_dir'}" size="40" maxlength="255" type="text" class="textInput" />
             </div>
             <div class="ctrlHolder apache">
                 <label for="vhost_conf_enabled_dir">{tmpl_var name='vhost_conf_enabled_dir_txt'}</label>
@@ -219,10 +219,6 @@
                     <label for="php_open_basedir">{tmpl_var name='php_open_basedir_txt'}</label>
                     <input name="php_open_basedir" id="php_open_basedir" value="{tmpl_var name='php_open_basedir'}" size="40" type="text" class="textInput" />
                 </div>
-                <div class="ctrlHolder">
-                    <label for="php_ini_check_minutes">{tmpl_var name='php_ini_check_minutes_txt'}</label>
-                    <input name="php_ini_check_minutes" id="php_ini_check_minutes" value="{tmpl_var name='php_ini_check_minutes'}" size="40" type="text" class="textInput" /> {tmpl_var name='php_ini_check_minutes_info_txt'}
-                </div>
             </div>
             <div class="subsectiontoggle"><span></span>{tmpl_var name='apps_vhost_settings_txt'}<em></em></div>
             <div style="display:none;">
@@ -284,7 +280,7 @@
             jQuery('.apache').hide();
         } else {
             jQuery('.nginx').hide();
-            jQuery('.apache').show();
-        }
-    }
-</script>
+            jQuery('.apache').show();
+        }
+    }
+</script>
diff --git a/interface/web/admin/templates/system_config_branding_edit.html b/interface/web/admin/templates/system_config_branding_edit.html
index 2c4c2e1a628555bab74c64a53c78bf26b3edc683..80ab5a5da71dac6b7810034520183efa1eaad76b 100644
--- a/interface/web/admin/templates/system_config_branding_edit.html
+++ b/interface/web/admin/templates/system_config_branding_edit.html
@@ -1,22 +1,22 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_system_config">
-    
-    <div class="pnl_formsarea">
-        <fieldset class="inlineLabels"><legend><tmpl_var name="branding_txt">Branding</legend>
-            <div class="ctrlHolder">
-                <p class="label">{tmpl_var name='allow_themechange_txt'}Allow users to change theme</p>
-                <div class="multiField">
-                    {tmpl_var name='allow_themechange'}
-                </div>
-            </div>  
-        </fieldset>
-        <input type="hidden" name="id" value="{tmpl_var name='id'}">
-        <div class="buttonHolder buttons">
-            <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/system_config_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
-            <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/server_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
-        </div>
-    </div>
-    
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_system_config">
+    
+    <div class="pnl_formsarea">
+        <fieldset class="inlineLabels"><legend><tmpl_var name="branding_txt">Branding</legend>
+            <div class="ctrlHolder">
+                <p class="label">{tmpl_var name='allow_themechange_txt'}Allow users to change theme</p>
+                <div class="multiField">
+                    {tmpl_var name='allow_themechange'}
+                </div>
+            </div>  
+        </fieldset>
+        <input type="hidden" name="id" value="{tmpl_var name='id'}">
+        <div class="buttonHolder buttons">
+            <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onClick="submitForm('pageForm','admin/system_config_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+            <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onClick="loadContent('admin/server_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+        </div>
+    </div>
+    
 </div>
\ No newline at end of file
diff --git a/interface/web/admin/templates/system_config_mail_edit.htm b/interface/web/admin/templates/system_config_mail_edit.htm
index e9c0c0e5b08b54cd5d7d1b77b4c25792f5674b9c..3c8cf2b0bb3b344f69219e560e3e2bf2765f77ac 100644
--- a/interface/web/admin/templates/system_config_mail_edit.htm
+++ b/interface/web/admin/templates/system_config_mail_edit.htm
@@ -11,24 +11,6 @@
                     {tmpl_var name='enable_custom_login'}
                 </div>
             </div>
-            <div class="ctrlHolder">
-                <p class="label">{tmpl_var name='mailbox_show_autoresponder_tab_txt'}</p>
-                <div class="multiField">
-                    {tmpl_var name='mailbox_show_autoresponder_tab'}
-                </div>
-            </div>
-            <div class="ctrlHolder">
-                <p class="label">{tmpl_var name='mailbox_show_mail_filter_tab_txt'}</p>
-                <div class="multiField">
-                    {tmpl_var name='mailbox_show_mail_filter_tab'}
-                </div>
-            </div>
-            <div class="ctrlHolder">
-                <p class="label">{tmpl_var name='mailbox_show_custom_rules_tab_txt'}</p>
-                <div class="multiField">
-                    {tmpl_var name='mailbox_show_custom_rules_tab'}
-                </div>
-            </div>
             <div class="ctrlHolder">
                 <p class="label">{tmpl_var name='mailboxlist_webmail_link_txt'}</p>
                 <div class="multiField">
@@ -95,4 +77,4 @@
         </div>
     </div>
   
-</div>
+</div>
\ No newline at end of file
diff --git a/interface/web/admin/templates/system_config_sites_edit.htm b/interface/web/admin/templates/system_config_sites_edit.htm
index 65f37b7820d9f731c56921f3a18b9b78a1774c98..78c51b0041ea269023f43a9ef1997dd4c484f3cd 100644
--- a/interface/web/admin/templates/system_config_sites_edit.htm
+++ b/interface/web/admin/templates/system_config_sites_edit.htm
@@ -45,18 +45,12 @@
                     {tmpl_var name='vhost_subdomains'}&nbsp;{tmpl_var name='vhost_subdomains_note_txt'}
                 </div>
             </div>
-            <div class="ctrlHolder">
+			<div class="ctrlHolder">
                 <p class="label">{tmpl_var name='client_username_web_check_disabled_txt'}</p>
                 <div class="multiField">
                     {tmpl_var name='client_username_web_check_disabled'}
                 </div>
             </div>
-            <div class="ctrlHolder">
-                <p class="label">{tmpl_var name='reseller_can_use_options_txt'}</p>
-                <div class="multiField">
-                    {tmpl_var name='reseller_can_use_options'}
-                </div>
-            </div>
         </fieldset>
             
         <input type="hidden" name="id" value="{tmpl_var name='id'}">
@@ -67,4 +61,4 @@
         </div>
     </div>
   
-</div>
+</div>
\ No newline at end of file
diff --git a/interface/web/client/client_message.php b/interface/web/client/client_message.php
index fc9de0bc3c6e4e46d03bdf991b9a9bab2ac765cb..73c43bb4c64e81b5393a2111c972b91a852293f9 100644
--- a/interface/web/client/client_message.php
+++ b/interface/web/client/client_message.php
@@ -91,10 +91,15 @@ if(isset($_POST) && count($_POST) > 1) {
 				//* Parse client details into message
 				$message = $_POST['message'];
 				foreach($client as $key => $val) {
-					if($key != 'password'){
-						$message = str_replace('{'.$key.'}', $val, $message);
-					} else {
-						$message = str_replace('{'.$key.'}', '---', $message);
+					switch ($key) {
+						case 'password':
+							$message = str_replace('{'.$key.'}', '---', $message);
+							break;
+						case 'gender':
+							$message = str_replace('{salutation}', $wb['gender_'.$val.'_txt'], $message);
+							break;
+						default:
+							$message = str_replace('{'.$key.'}', $val, $message);
 					}
 				}
 				
@@ -145,7 +150,13 @@ $sql = "SHOW COLUMNS FROM client WHERE Field NOT IN ('client_id', 'sys_userid',
 $field_names = $app->db->queryAllRecords($sql);
 if(!empty($field_names) && is_array($field_names)){
 	foreach($field_names as $field_name){
-		if($field_name['Field'] != '') $message_variables .= '<a href="javascript:void(0);" class="addPlaceholder">{'.$field_name['Field'].'}</a> ';
+		if($field_name['Field'] != ''){
+			if($field_name['Field'] == 'gender'){
+				$message_variables .= '<a href="javascript:void(0);" class="addPlaceholder">{salutation}</a> ';
+			} else {
+				$message_variables .= '<a href="javascript:void(0);" class="addPlaceholder">{'.$field_name['Field'].'}</a> ';
+			}
+		}
 	}
 }
 $app->tpl->setVar('message_variables',trim($message_variables));
diff --git a/interface/web/client/lib/lang/ar_client.lng b/interface/web/client/lib/lang/ar_client.lng
index 0c1d0f636709535cef5842aea25ebb68c009d176..ab6fb9498c7c793d29eae1ecb3aa206ef3c086c5 100644
--- a/interface/web/client/lib/lang/ar_client.lng
+++ b/interface/web/client/lib/lang/ar_client.lng
@@ -144,4 +144,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked (disables all webs etc.)';
+$wb['canceled_txt'] = 'Canceled (disables client login)';
+$wb['gender_txt'] = 'Title';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
 ?>
diff --git a/interface/web/client/lib/lang/ar_reseller.lng b/interface/web/client/lib/lang/ar_reseller.lng
index 32c9bb1c7c96c1b588bcfcec84f3a41702ac9fe8..53c907162a2218b86f386229965839d681f95367 100644
--- a/interface/web/client/lib/lang/ar_reseller.lng
+++ b/interface/web/client/lib/lang/ar_reseller.lng
@@ -143,4 +143,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked';
+$wb['canceled_txt'] = 'Canceled';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
+$wb['gender_txt'] = 'Title';
 ?>
diff --git a/interface/web/client/lib/lang/bg_client.lng b/interface/web/client/lib/lang/bg_client.lng
index 229dace93a9efb048ad76cf2db9b79916c9b99fc..032b0e3669cb9feb8bf868a804bca9c5c21272d4 100644
--- a/interface/web/client/lib/lang/bg_client.lng
+++ b/interface/web/client/lib/lang/bg_client.lng
@@ -144,4 +144,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked (disables all webs etc.)';
+$wb['canceled_txt'] = 'Canceled (disables client login)';
+$wb['gender_txt'] = 'Title';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
 ?>
diff --git a/interface/web/client/lib/lang/bg_reseller.lng b/interface/web/client/lib/lang/bg_reseller.lng
index 857e4a85a504d290f3ba17dc8d56103fdddfb11f..c028748f4c23b4b1222c44f9a420cce69a62aeb1 100644
--- a/interface/web/client/lib/lang/bg_reseller.lng
+++ b/interface/web/client/lib/lang/bg_reseller.lng
@@ -143,4 +143,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked';
+$wb['canceled_txt'] = 'Canceled';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
+$wb['gender_txt'] = 'Title';
 ?>
diff --git a/interface/web/client/lib/lang/br_client.lng b/interface/web/client/lib/lang/br_client.lng
index ae2c12280d627a11dc7340b979b1a1adabe859ec..115595520ef03fb25373b15758361abacc1591e0 100644
--- a/interface/web/client/lib/lang/br_client.lng
+++ b/interface/web/client/lib/lang/br_client.lng
@@ -144,4 +144,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked (disables all webs etc.)';
+$wb['canceled_txt'] = 'Canceled (disables client login)';
+$wb['gender_txt'] = 'Title';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
 ?>
diff --git a/interface/web/client/lib/lang/br_reseller.lng b/interface/web/client/lib/lang/br_reseller.lng
index 2fa5368591ba2b489240152c454b9be9962efc4f..6d248b7defdef076e3562bc5a420098a0c59a9de 100644
--- a/interface/web/client/lib/lang/br_reseller.lng
+++ b/interface/web/client/lib/lang/br_reseller.lng
@@ -143,4 +143,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked';
+$wb['canceled_txt'] = 'Canceled';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
+$wb['gender_txt'] = 'Title';
 ?>
diff --git a/interface/web/client/lib/lang/cz.lng b/interface/web/client/lib/lang/cz.lng
index 8efa987cfac80c8eabe601ffb11adabede36b865..fa1c78df750a6461120bf2a67bd24d66758f86b8 100644
--- a/interface/web/client/lib/lang/cz.lng
+++ b/interface/web/client/lib/lang/cz.lng
@@ -23,3 +23,4 @@ $wb['error_domain_in webuse'] = 'Tato doména nelze odstranit, protože je v pou
 $wb['error_client_can_not_add_domain'] = 'Nemůžete přidat novou doménu';
 $wb['error_client_group_id_empty'] = 'Musíte vybrat zákazníka<br>';
 ?>
+
diff --git a/interface/web/client/lib/lang/cz_client.lng b/interface/web/client/lib/lang/cz_client.lng
index d5980d1bb09c35192d7f4269704031f89289f14f..e0a57d77b4bbabb96d2789ee419b1291574a6535 100644
--- a/interface/web/client/lib/lang/cz_client.lng
+++ b/interface/web/client/lib/lang/cz_client.lng
@@ -8,7 +8,7 @@ $wb['limit_mailcatchall_txt'] = 'Max. počet e-mailových košů';
 $wb['limit_mailrouting_txt'] = 'Max. počet e-mailových směrování';
 $wb['limit_mailfilter_txt'] = 'Max. počet e-mailových filtrů';
 $wb['limit_fetchmail_txt'] = 'Max. počet účtů externího získávání e-mailů';
-$wb['limit_mailquota_txt'] = 'Mailbox kvóta';
+$wb['limit_mailquota_txt'] = 'Kvóta e-mailové schránky';
 $wb['limit_spamfilter_wblist_txt'] = 'Max. počet spamfiltrových bílých / černých listinových filtrů';
 $wb['limit_spamfilter_user_txt'] = 'Max. počet spamflitrových uživatelů';
 $wb['limit_spamfilter_policy_txt'] = 'Max. počet spamfiltrových politik';
@@ -60,26 +60,26 @@ $wb['limit_shell_user_txt'] = 'Max. počet shell uživatelů';
 $wb['limit_client_txt'] = 'Max. počet klientů';
 $wb['username_error_empty'] = 'Uživatelské jméno je prázdné.';
 $wb['username_error_unique'] = 'Uživatelské jméno musí být unikátní.';
-$wb['limit_maildomain_error_notint'] = 'Limit pro email doménu musí být číslo.';
+$wb['limit_maildomain_error_notint'] = 'Limit pro e-mail doménu musí být číslo.';
 $wb['limit_mailbox_error_notint'] = 'Limit pro mailboxy musí být číslo.';
-$wb['limit_mailalias_error_notint'] = 'Limit pro emailové aliasy musí být číslo.';
-$wb['limit_mailaliasdomain_error_notint'] = 'Limit pro emailové doménové aliasy musí být číslo.';
-$wb['limit_mailforward_error_notint'] = 'Limit pro emailové předavače musí být číslo.';
-$wb['limit_mailcatchall_error_notint'] = 'Limit pro emailové koše musí být číslo.';
-$wb['limit_mailrouting_error_notint'] = 'Limit pro emailová směrování musí být číslo.';
-$wb['limit_mailfilter_error_notint'] = 'Limit pro emailové filtry limit musí být číslo.';
-$wb['limit_mailfetchmail_error_notint'] = 'Limit pro externí získávání emailů musí být číslo.';
-$wb['limit_mailquota_error_notint'] = 'Limit pro emailovou kvótu musí být číslo.';
+$wb['limit_mailalias_error_notint'] = 'Limit pro e-mailové aliasy musí být číslo.';
+$wb['limit_mailaliasdomain_error_notint'] = 'Limit pro e-mailové doménové aliasy musí být číslo.';
+$wb['limit_mailforward_error_notint'] = 'Limit pro e-mailové předávání musí být číslo.';
+$wb['limit_mailcatchall_error_notint'] = 'Limit pro e-mailové koše musí být číslo.';
+$wb['limit_mailrouting_error_notint'] = 'Limit pro e-mailová směrování musí být číslo.';
+$wb['limit_mailfilter_error_notint'] = 'Limit pro e-mailové filtry limit musí být číslo.';
+$wb['limit_mailfetchmail_error_notint'] = 'Limit pro externí získávání e-mailů musí být číslo.';
+$wb['limit_mailquota_error_notint'] = 'Limit pro e-mailovou kvótu musí být číslo.';
 $wb['limit_spamfilter_wblist_error_notint'] = 'Limit pro spamfiltrové bílé / černé listiny musí být číslo.';
 $wb['limit_spamfilter_user_error_notint'] = 'Limit spamfiltrových uživatelů musí být číslo.';
 $wb['limit_spamfilter_policy_error_notint'] = 'Limit spamfiltrových politik musí být číslo.';
-$wb['limit_web_domain_error_notint'] = 'Limit webových stránek musí být číslo.';
+$wb['limit_web_domain_error_notint'] = 'Limit webových stránek/domén musí být číslo.';
 $wb['limit_web_aliasdomain_error_notint'] = 'Limit webových alias domén musí být číslo.';
 $wb['limit_web_subdomain_error_notint'] = 'Limit webových subdomén musí být číslo.';
 $wb['limit_ftp_user_error_notint'] = 'Limit FTP uživatelů musí být číslo.';
 $wb['limit_shell_user_error_notint'] = 'Limit shell uživatelů musí být číslo.';
 $wb['limit_dns_zone_error_notint'] = 'Limit DNS zón musí být číslo.';
-$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
+$wb['limit_dns_slave_zone_error_notint'] = 'Limit DNS sekundární zóny musí být číslo.';
 $wb['default_dbserver_txt'] = 'Výchozí databázový server';
 $wb['limit_database_error_notint'] = 'Limit databází musí být číslo.';
 $wb['limit_cron_error_notint'] = 'Limit cronu musí být číslo.';
@@ -94,16 +94,16 @@ $wb['limit_web_quota_txt'] = 'Webová kvóta';
 $wb['limit_traffic_quota_txt'] = 'Přenosová kvóta';
 $wb['limit_trafficquota_error_notint'] = 'Přenosová kvót musí být číslo.';
 $wb['limit_webdav_user_txt'] = 'Max. počet Webdav uživatelů';
-$wb['limit_webdav_user_error_notint'] = 'The webdav user limit must be a number.';
+$wb['limit_webdav_user_error_notint'] = 'Limit WebDAV uživatelů musí být číslo.';
 $wb['customer_no_txt'] = 'Zákaznické číslo';
 $wb['vat_id_txt'] = 'DIČ';
 $wb['required_fields_txt'] = '* Povinná pole';
 $wb['company_id_txt'] = 'IÄŒO';
 $wb['limit_mailmailinglist_txt'] = 'Max. počet e-mailových konferencí';
-$wb['limit_mailmailinglist_error_notint'] = 'The mailing list record limit must be a number.';
+$wb['limit_mailmailinglist_error_notint'] = 'Limit pro e-mailové konference musí být číslo.';
 $wb['limit_openvz_vm_txt'] = 'Max. počet virtuálních serverů';
-$wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
-$wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
+$wb['limit_openvz_vm_template_id_txt'] = 'Povinná šablona pro virtuální server';
+$wb['limit_openvz_vm_error_notint'] = 'Limit pro virtuální servery musí být číslo.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
 $wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
@@ -140,8 +140,9 @@ $wb['customer_no_error_unique'] = 'Zákaznické číslo musí být jedinečné (
 $wb['paypal_email_error_isemail'] = 'Zadejte prosím platnou PayPal e-mail addresu.';
 $wb['paypal_email_txt'] = 'PayPal e-mail';
 $wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
-$wb['aps_limits_txt'] = 'APS Installer Limits';
-$wb['limit_aps_txt'] = 'Max. number of APS instances';
-$wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['aps_limits_txt'] = 'APS limity instalátoru';
+$wb['limit_aps_txt'] = 'Max. počet APS instalací';
+$wb['limit_aps_error_notint'] = 'Limit pro APS instalace musí být číslo.';
+$wb['default_slave_dnsserver_txt'] = 'Výchozí sekundární DNS server';
 ?>
+
diff --git a/interface/web/client/lib/lang/cz_client_circle.lng b/interface/web/client/lib/lang/cz_client_circle.lng
index f26e2d6d4b790622e0ba7809095d7063205bfe03..c47f934f6f86156d57ed89c30aa2b7fbcec17c0d 100644
--- a/interface/web/client/lib/lang/cz_client_circle.lng
+++ b/interface/web/client/lib/lang/cz_client_circle.lng
@@ -7,3 +7,4 @@ $wb['client_ids_txt'] = 'Klienti/Distributoři';
 $wb['description_txt'] = 'Popis';
 $wb['active_txt'] = 'Aktivní';
 ?>
+
diff --git a/interface/web/client/lib/lang/cz_client_circle_list.lng b/interface/web/client/lib/lang/cz_client_circle_list.lng
index e827605400f5165230b2a7fa5d9570ca13475cf3..5895f82defae91090208bd4556bc92458262d846 100644
--- a/interface/web/client/lib/lang/cz_client_circle_list.lng
+++ b/interface/web/client/lib/lang/cz_client_circle_list.lng
@@ -8,3 +8,4 @@ $wb['filter_txt'] = 'Filtr';
 $wb['delete_txt'] = 'Smazat';
 $wb['active_txt'] = 'Aktivní';
 ?>
+
diff --git a/interface/web/client/lib/lang/cz_client_del.lng b/interface/web/client/lib/lang/cz_client_del.lng
index ca1a13f8755cb2233aac2012a08a26324bbb8905..255b54217f91a655e42ac152a2413ecfcdf0951d 100644
--- a/interface/web/client/lib/lang/cz_client_del.lng
+++ b/interface/web/client/lib/lang/cz_client_del.lng
@@ -3,5 +3,6 @@ $wb['confirm_action_txt'] = 'Potvrdit akci';
 $wb['delete_explanation'] = 'Tato akce smaže následující počet záznamů přidružených s tímto klientem';
 $wb['btn_save_txt'] = 'Smazat klienta';
 $wb['btn_cancel_txt'] = 'Zrušit bez smazání klienta';
-$wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?';
+$wb['confirm_client_delete_txt'] = 'Jste si jisti, že chcete smazat tohoto klienta ?';
 ?>
+
diff --git a/interface/web/client/lib/lang/cz_client_message.lng b/interface/web/client/lib/lang/cz_client_message.lng
index d980d55012ca859cd2cfd6ac3fe32d891ce47077..401908daedf9dd902937b3ae44b6faebc856e22c 100644
--- a/interface/web/client/lib/lang/cz_client_message.lng
+++ b/interface/web/client/lib/lang/cz_client_message.lng
@@ -16,3 +16,4 @@ $wb['all_clients_resellers_txt'] = 'Všichni klienti a distributoři (prodejci)'
 $wb['all_clients_txt'] = 'VÅ¡ichni klienti';
 $wb['variables_txt'] = 'Výběr (možnosti):';
 ?>
+
diff --git a/interface/web/client/lib/lang/cz_client_template.lng b/interface/web/client/lib/lang/cz_client_template.lng
index 5c8406915e2bac5d06963b1b66f799b5194881ee..22c530104e52893278507918dd01484a9efec9e7 100644
--- a/interface/web/client/lib/lang/cz_client_template.lng
+++ b/interface/web/client/lib/lang/cz_client_template.lng
@@ -9,7 +9,7 @@ $wb['limit_mailcatchall_txt'] = 'Max. počet e-mailových košů';
 $wb['limit_mailrouting_txt'] = 'Max. počet e-mailových směrování';
 $wb['limit_mailfilter_txt'] = 'Max. počet e-mailových filtrů';
 $wb['limit_fetchmail_txt'] = 'Max. počet účtů externího získávání e-mailů';
-$wb['limit_mailquota_txt'] = 'Mailbox kvóta';
+$wb['limit_mailquota_txt'] = 'Kvóta e-mailové schránky';
 $wb['limit_spamfilter_wblist_txt'] = 'Max. počet spamfiltrových bílých / černých listinových filtrů';
 $wb['limit_spamfilter_user_txt'] = 'Max. počet spamflitrových uživatelů';
 $wb['limit_spamfilter_policy_txt'] = 'Max. počet spamfiltrových politik';
@@ -29,25 +29,25 @@ $wb['limit_dns_slave_zone_txt'] = 'Max. počet sekundárních DNS zón';
 $wb['limit_dns_record_txt'] = 'Max. počet DNS záznamů';
 $wb['limit_shell_user_txt'] = 'Max. počet shell uživatelů';
 $wb['limit_client_txt'] = 'Max. počet klientů';
-$wb['limit_maildomain_error_notint'] = 'Limit pro email doménu musí být číslo.';
+$wb['limit_maildomain_error_notint'] = 'Limit pro e-mail doménu musí být číslo.';
 $wb['limit_mailbox_error_notint'] = 'Limit pro mailboxy musí být číslo.';
-$wb['limit_mailalias_error_notint'] = 'Limit pro emailové aliasy musí být číslo.';
-$wb['limit_mailaliasdomain_error_notint'] = 'Limit pro emailové doménové aliasy musí být číslo.';
-$wb['limit_mailforward_error_notint'] = 'Limit pro emailové předávání musí být číslo.';
-$wb['limit_mailcatchall_error_notint'] = 'Limit pro emailové koše musí být číslo.';
-$wb['limit_mailrouting_error_notint'] = 'Limit pro emailová směrování musí být číslo.';
-$wb['limit_mailfilter_error_notint'] = 'Limit pro emailové filtry limit musí být číslo.';
-$wb['limit_mailfetchmail_error_notint'] = 'Limit pro externí získávání emailů musí být číslo.';
-$wb['limit_mailquota_error_notint'] = 'Limit pro emailovou kvótu musí být číslo.';
+$wb['limit_mailalias_error_notint'] = 'Limit pro e-mailové aliasy musí být číslo.';
+$wb['limit_mailaliasdomain_error_notint'] = 'Limit pro e-mailové doménové aliasy musí být číslo.';
+$wb['limit_mailforward_error_notint'] = 'Limit pro e-mailové předávání musí být číslo.';
+$wb['limit_mailcatchall_error_notint'] = 'Limit pro e-mailové koše musí být číslo.';
+$wb['limit_mailrouting_error_notint'] = 'Limit pro e-mailová směrování musí být číslo.';
+$wb['limit_mailfilter_error_notint'] = 'Limit pro e-mailové filtry limit musí být číslo.';
+$wb['limit_mailfetchmail_error_notint'] = 'Limit pro externí získávání e-mailů musí být číslo.';
+$wb['limit_mailquota_error_notint'] = 'Limit pro e-mailovou kvótu musí být číslo.';
 $wb['limit_spamfilter_wblist_error_notint'] = 'Limit pro spamfiltrové bílé / černé listiny musí být číslo.';
 $wb['limit_spamfilter_user_error_notint'] = 'Limit spamfiltrových uživatelů musí být číslo.';
 $wb['limit_spamfilter_policy_error_notint'] = 'Limit spamfiltrových politik musí být číslo.';
-$wb['limit_web_domain_error_notint'] = 'Limit webových stránek musí být číslo.';
+$wb['limit_web_domain_error_notint'] = 'Limit webových stránek/domén musí být číslo.';
 $wb['limit_web_aliasdomain_error_notint'] = 'Limit webových alias domén musí být číslo.';
 $wb['limit_web_subdomain_error_notint'] = 'Limit webových subdomén musí být číslo.';
-$wb['limit_ftp_user_error_notint'] = 'Limit shell uživatelů musí být číslo.';
+$wb['limit_ftp_user_error_notint'] = 'Limit FTP uživatelů musí být číslo.';
 $wb['limit_dns_zone_error_notint'] = 'Limit DNS zón musí být číslo.';
-$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
+$wb['limit_dns_slave_zone_error_notint'] = 'Limit DNS sekundární zóny musí být číslo.';
 $wb['limit_dns_record_error_notint'] = 'Limit DNS záznamů musí být číslo.';
 $wb['limit_database_error_notint'] = 'Limit databází musí být číslo.';
 $wb['limit_cron_error_notint'] = 'Limit cronu musí být číslo.';
@@ -58,13 +58,13 @@ $wb['limit_traffic_quota_txt'] = 'Přenosová kvóta';
 $wb['limit_trafficquota_error_notint'] = 'Přenosová kvót musí být číslo.';
 $wb['template_del_aborted_txt'] = 'Smazání přerušeno. Stále existuje klient, který používá tuto šablonu.';
 $wb['limit_webdav_user_txt'] = 'Max. počet Webdav uživatelů';
-$wb['limit_shell_user_error_notint'] = 'The shell user limit must be a number.';
-$wb['limit_webdav_user_error_notint'] = 'The webdav user limit must be a number.';
+$wb['limit_shell_user_error_notint'] = 'Limit shell uživatelů musí být číslo.';
+$wb['limit_webdav_user_error_notint'] = 'Limit WebDAV uživatelů musí být číslo.';
 $wb['limit_mailmailinglist_txt'] = 'Max. počet e-mailových konferencí';
-$wb['limit_mailmailinglist_error_notint'] = 'The mailing list record limit must be a number.';
+$wb['limit_mailmailinglist_error_notint'] = 'Limit pro e-mailové konference musí být číslo.';
 $wb['limit_openvz_vm_txt'] = 'Max. počet virtuálních serverů';
-$wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
-$wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
+$wb['limit_openvz_vm_template_id_txt'] = 'Povinná šablona pro virtuální server';
+$wb['limit_openvz_vm_error_notint'] = 'Limit pro virtuální servery musí být číslo.';
 $wb['ssh_chroot_txt'] = 'SSH-Chroot Options';
 $wb['web_php_options_txt'] = 'PHP Options';
 $wb['template_type_txt'] = 'Typ Å¡ablony';
@@ -84,7 +84,8 @@ $wb['database_limits_txt'] = 'Databázové limity';
 $wb['cron_job_limits_txt'] = 'Cron pracovní limity';
 $wb['dns_limits_txt'] = 'DNS limity';
 $wb['virtualization_limits_txt'] = 'Virtualizace limity';
-$wb['aps_limits_txt'] = 'APS Installer Limits';
-$wb['limit_aps_txt'] = 'Max. number of APS instances';
-$wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
+$wb['aps_limits_txt'] = 'APS limity instalátoru';
+$wb['limit_aps_txt'] = 'Max. počet APS instalací';
+$wb['limit_aps_error_notint'] = 'Limit pro APS instalace musí být číslo.';
 ?>
+
diff --git a/interface/web/client/lib/lang/cz_client_template_list.lng b/interface/web/client/lib/lang/cz_client_template_list.lng
index 675da9508362141fa1aba6360b3a8502ca94d402..d560efbe534d694030c625cde447cb2bfa11bb16 100644
--- a/interface/web/client/lib/lang/cz_client_template_list.lng
+++ b/interface/web/client/lib/lang/cz_client_template_list.lng
@@ -2,5 +2,6 @@
 $wb['list_head_txt'] = 'Klientské šablony';
 $wb['template_type_txt'] = 'Typ';
 $wb['template_name_txt'] = 'Název šablony';
-$wb['template_id_txt'] = 'Template ID';
+$wb['template_id_txt'] = 'ID Å¡ablony';
 ?>
+
diff --git a/interface/web/client/lib/lang/cz_clients_list.lng b/interface/web/client/lib/lang/cz_clients_list.lng
index 9657cb71e892610822ea3a9ff9ec797d2c3381db..bceac34bc8cedbed12afded909dc1fabee7abff3 100644
--- a/interface/web/client/lib/lang/cz_clients_list.lng
+++ b/interface/web/client/lib/lang/cz_clients_list.lng
@@ -9,3 +9,4 @@ $wb['add_new_record_txt'] = 'Přidat klienta';
 $wb['username_txt'] = 'Uživatelské jméno';
 $wb['customer_no_txt'] = 'Zákaznické číslo';
 ?>
+
diff --git a/interface/web/client/lib/lang/cz_domain.lng b/interface/web/client/lib/lang/cz_domain.lng
index 34ba70c11edbe7cac85311d43bbe0db6ec921b15..eabdb6df34d2e07d55c3572dadc6de96a82bbf96 100644
--- a/interface/web/client/lib/lang/cz_domain.lng
+++ b/interface/web/client/lib/lang/cz_domain.lng
@@ -1,6 +1,7 @@
 <?php
-$wb['domain_error_empty'] = 'The domain-name is empty';
-$wb['domain_error_unique'] = 'The domain already exists';
-$wb['domain_error_regex'] = 'This domain-name is not allowed';
+$wb['domain_error_empty'] = 'Doménové jméno je prázdné';
+$wb['domain_error_unique'] = 'Doména již existuje';
+$wb['domain_error_regex'] = 'Toto doménové jméno je zakázáno';
 $wb['Domain'] = 'Doména';
 ?>
+
diff --git a/interface/web/client/lib/lang/cz_domain_list.lng b/interface/web/client/lib/lang/cz_domain_list.lng
index 6cf7376bd41d7f67d34e59bdc981663a893eb6be..88df8383cd78044fb5a03d33331b6f38df5325af 100644
--- a/interface/web/client/lib/lang/cz_domain_list.lng
+++ b/interface/web/client/lib/lang/cz_domain_list.lng
@@ -4,3 +4,4 @@ $wb['add_new_record_txt'] = 'Přidat novou doménu';
 $wb['domain_txt'] = 'Doména';
 $wb['user_txt'] = 'Klient';
 ?>
+
diff --git a/interface/web/client/lib/lang/cz_reseller.lng b/interface/web/client/lib/lang/cz_reseller.lng
index 07af2a4a3ea6872aa3271cab5ab9d96083401f56..3ba47ace664b40d60df070f40be50e77d555a8c5 100644
--- a/interface/web/client/lib/lang/cz_reseller.lng
+++ b/interface/web/client/lib/lang/cz_reseller.lng
@@ -7,7 +7,7 @@ $wb['limit_mailcatchall_txt'] = 'Max. počet e-mailových košů';
 $wb['limit_mailrouting_txt'] = 'Max. počet e-mailových směrování';
 $wb['limit_mailfilter_txt'] = 'Max. počet e-mailových filtrů';
 $wb['limit_fetchmail_txt'] = 'Max. počet účtů externího získávání e-mailů';
-$wb['limit_mailquota_txt'] = 'Mailbox kvóta';
+$wb['limit_mailquota_txt'] = 'Kvóta e-mailové schránky';
 $wb['limit_spamfilter_wblist_txt'] = 'Max. počet spamfiltrových bílých / černých listinových filtrů';
 $wb['limit_spamfilter_user_txt'] = 'Max. počet spamflitrových uživatelů';
 $wb['limit_spamfilter_policy_txt'] = 'Max. počet spamfiltrových politik';
@@ -59,25 +59,25 @@ $wb['limit_shell_user_txt'] = 'Max. počet shell uživatelů';
 $wb['limit_client_txt'] = 'Max. počet klientů';
 $wb['username_error_empty'] = 'Uživatelské jméno je prázdné.';
 $wb['username_error_unique'] = 'Uživatelské jméno musí být unikátní.';
-$wb['limit_maildomain_error_notint'] = 'Limit pro email doménu musí být číslo.';
+$wb['limit_maildomain_error_notint'] = 'Limit pro e-mail doménu musí být číslo.';
 $wb['limit_mailbox_error_notint'] = 'Limit pro mailboxy musí být číslo.';
-$wb['limit_mailalias_error_notint'] = 'Limit pro emailové aliasy musí být číslo.';
-$wb['limit_mailforward_error_notint'] = 'Limit pro emailové předavače musí být číslo.';
-$wb['limit_mailcatchall_error_notint'] = 'Limit pro emailové koše musí být číslo.';
-$wb['limit_mailrouting_error_notint'] = 'Limit pro emailová směrování musí být číslo.';
-$wb['limit_mailfilter_error_notint'] = 'Limit pro emailové filtry limit musí být číslo.';
-$wb['limit_mailfetchmail_error_notint'] = 'Limit pro externí získávání emailů musí být číslo.';
-$wb['limit_mailquota_error_notint'] = 'Limit pro emailovou kvótu musí být číslo.';
+$wb['limit_mailalias_error_notint'] = 'Limit pro e-mailové aliasy musí být číslo.';
+$wb['limit_mailforward_error_notint'] = 'Limit pro e-mailové předávání musí být číslo.';
+$wb['limit_mailcatchall_error_notint'] = 'Limit pro e-mailové koše musí být číslo.';
+$wb['limit_mailrouting_error_notint'] = 'Limit pro e-mailová směrování musí být číslo.';
+$wb['limit_mailfilter_error_notint'] = 'Limit pro e-mailové filtry limit musí být číslo.';
+$wb['limit_mailfetchmail_error_notint'] = 'Limit pro externí získávání e-mailů musí být číslo.';
+$wb['limit_mailquota_error_notint'] = 'Limit pro e-mailovou kvótu musí být číslo.';
 $wb['limit_spamfilter_wblist_error_notint'] = 'Limit pro spamfiltrové bílé / černé listiny musí být číslo.';
 $wb['limit_spamfilter_user_error_notint'] = 'Limit spamfiltrových uživatelů musí být číslo.';
 $wb['limit_spamfilter_policy_error_notint'] = 'Limit spamfiltrových politik musí být číslo.';
-$wb['limit_web_domain_error_notint'] = 'Limit webových stránek musí být číslo.';
+$wb['limit_web_domain_error_notint'] = 'Limit webových stránek/domén musí být číslo.';
 $wb['limit_web_aliasdomain_error_notint'] = 'Limit webových alias domén musí být číslo.';
 $wb['limit_web_subdomain_error_notint'] = 'Limit webových subdomén musí být číslo.';
 $wb['limit_ftp_user_error_notint'] = 'Limit FTP uživatelů musí být číslo.';
 $wb['limit_shell_user_error_notint'] = 'Limit shell uživatelů musí být číslo.';
 $wb['limit_dns_zone_error_notint'] = 'Limit DNS zón musí být číslo.';
-$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
+$wb['limit_dns_slave_zone_error_notint'] = 'Limit DNS sekundární zóny musí být číslo.';
 $wb['default_dbserver_txt'] = 'Výchozí databázový server';
 $wb['limit_database_error_notint'] = 'Limit databází musí být číslo.';
 $wb['limit_cron_error_notint'] = 'Limit cronu musí být číslo.';
@@ -92,18 +92,18 @@ $wb['limit_client_error_positive'] = 'Počet klientů musí být > 0';
 $wb['limit_web_quota_txt'] = 'Webová kvóta';
 $wb['limit_traffic_quota_txt'] = 'Přenosová kvóta';
 $wb['limit_trafficquota_error_notint'] = 'Přenosová kvót musí být číslo.';
-$wb['limit_dns_record_error_notint'] = 'The dns record limit must be a number.';
+$wb['limit_dns_record_error_notint'] = 'Limit DNS záznamů musí být číslo.';
 $wb['customer_no_txt'] = 'Zákaznické číslo';
 $wb['vat_id_txt'] = 'DIČ';
 $wb['required_fields_txt'] = '* Povinná pole';
 $wb['limit_webdav_user_txt'] = 'Max. počet Webdav uživatelů';
-$wb['limit_webdav_user_error_notint'] = 'The webdav user limit must be a number.';
+$wb['limit_webdav_user_error_notint'] = 'Limit WebDAV uživatelů musí být číslo.';
 $wb['limit_mailmailinglist_txt'] = 'Max. počet e-mailových konferencí';
-$wb['limit_mailaliasdomain_txt'] = 'Max. number of domain aliases';
-$wb['limit_mailmailinglist_error_notint'] = 'The mailing list record limit must be a number.';
+$wb['limit_mailaliasdomain_txt'] = 'Max. počet doménových aliasů';
+$wb['limit_mailmailinglist_error_notint'] = 'Limit pro e-mailové konference musí být číslo.';
 $wb['limit_openvz_vm_txt'] = 'Max. počet virtuálních serverů';
-$wb['limit_openvz_vm_template_id_txt'] = 'Force virtual server template';
-$wb['limit_openvz_vm_error_notint'] = 'The virtual server limit must be a number.';
+$wb['limit_openvz_vm_template_id_txt'] = 'Povinná šablona pro virtuální server';
+$wb['limit_openvz_vm_error_notint'] = 'Limit pro virtuální servery musí být číslo.';
 $wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
 $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
 $wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
@@ -139,8 +139,9 @@ $wb['bank_code_txt'] = 'Kód banky';
 $wb['bank_name_txt'] = 'Název banky';
 $wb['bank_account_iban_txt'] = 'IBAN';
 $wb['bank_account_swift_txt'] = 'BIC / Swift';
-$wb['aps_limits_txt'] = 'APS Installer Limits';
-$wb['limit_aps_txt'] = 'Max. number of APS instances';
-$wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['aps_limits_txt'] = 'APS limity instalátoru';
+$wb['limit_aps_txt'] = 'Max. počet APS instalací';
+$wb['limit_aps_error_notint'] = 'Limit pro APS instalace musí být číslo.';
+$wb['default_slave_dnsserver_txt'] = 'Výchozí sekundární DNS server';
 ?>
+
diff --git a/interface/web/client/lib/lang/cz_resellers_list.lng b/interface/web/client/lib/lang/cz_resellers_list.lng
index 8e72797b4df843d80f27ea6f7e8e583a24f08319..859c97f1c278162e0c07398229f1549123b2f0e9 100644
--- a/interface/web/client/lib/lang/cz_resellers_list.lng
+++ b/interface/web/client/lib/lang/cz_resellers_list.lng
@@ -9,3 +9,4 @@ $wb['add_new_record_txt'] = 'Přidat distributora';
 $wb['customer_no_txt'] = 'Zákaznické číslo';
 $wb['username_txt'] = 'Uživatelské jméno';
 ?>
+
diff --git a/interface/web/client/lib/lang/de.lng b/interface/web/client/lib/lang/de.lng
index ba66401d9ed70d257fa914a9ff424f1d01dc4de8..9e28df258e9e618833ffb0e65492b5f03df650e1 100644
--- a/interface/web/client/lib/lang/de.lng
+++ b/interface/web/client/lib/lang/de.lng
@@ -1,7 +1,7 @@
 <?php
 $wb['Client'] = 'Kunden';
 $wb['Address'] = 'Adresse';
-$wb['Limits'] = 'Limits';
+$wb['Limits'] = 'Beschränkungen';
 $wb['Add Client'] = 'Kunde hinzufügen';
 $wb['Edit Client'] = 'Kunde bearbeiten';
 $wb['Clients'] = 'Kunden';
@@ -23,3 +23,4 @@ $wb['error_domain_in webuse'] = 'Diese Domain kann nicht gelöscht werden, weil
 $wb['error_client_can_not_add_domain'] = 'Sie können keine neue Domain anlegen';
 $wb['error_client_group_id_empty'] = 'Sie müssen ein Benutzerdefiniertes auswählen<br>';
 ?>
+
diff --git a/interface/web/client/lib/lang/de_client.lng b/interface/web/client/lib/lang/de_client.lng
index 4aa8abdfcb315fee024e1c62ba077c343e63507c..985be6d38b2e07ba9dc56100a62b8cbb2cd50f89 100644
--- a/interface/web/client/lib/lang/de_client.lng
+++ b/interface/web/client/lib/lang/de_client.lng
@@ -37,7 +37,7 @@ $wb['surname_txt'] = 'Nachname';
 $wb['limit_client_txt'] = 'Max. Anzahl an Kunden';
 $wb['limit_domain_txt'] = 'Max. Anzahl an Domains';
 $wb['limit_subdomain_txt'] = 'Max. Anzahl an Subdomains';
-$wb['limit_webquota_txt'] = 'Max. Webbeschränkung';
+$wb['limit_webquota_txt'] = 'Max. Speicherplatz Beschränkung';
 $wb['limit_database_txt'] = 'Max. Anzahl an Datenbanken';
 $wb['limit_cron_txt'] = 'Max. Anzahl an Cronjobs';
 $wb['limit_cron_type_txt'] = 'Erlaubte Cronjob Typen (chrooted und full erlauben auch url)';
@@ -57,28 +57,28 @@ $wb['limit_dns_record_txt'] = 'Max. Anzahl an DNS Einträgen';
 $wb['limit_shell_user_txt'] = 'Max. Anzahl an Shell Benutzer';
 $wb['username_error_empty'] = 'Benutzername ist leer.';
 $wb['username_error_unique'] = 'Der Benutzername muss einzigartig sein.';
-$wb['limit_maildomain_error_notint'] = 'Das E-Mail Domain Limit muss eine Zahl sein.';
-$wb['limit_mailbox_error_notint'] = 'Das E-Mail Konto Limit muss eine Zahl sein.';
-$wb['limit_mailalias_error_notint'] = 'Das E-Mail Alias Limit muss eine Zahl sein.';
-$wb['limit_mailforward_error_notint'] = 'Das E-Mail Weiterleitung Limit muss eine Zahl sein.';
-$wb['limit_mailcatchall_error_notint'] = 'Das E-Mail Catchall Limit muss eine Zahl sein.';
-$wb['limit_mailrouting_error_notint'] = 'Das E-Mail Routing Limit muss eine Zahl sein.';
-$wb['limit_mailfilter_error_notint'] = 'Das E-Mail Filter Limit muss eine Zahl sein.';
-$wb['limit_mailfetchmail_error_notint'] = 'Das Fetchmail Limit muss eine Zahl sein.';
-$wb['limit_mailquota_error_notint'] = 'Das E-Mailbeschränkungs Limit muss eine Zahl sein.';
-$wb['limit_spamfilter_wblist_error_notint'] = 'Das Spamfilter White-/Blacklist Limit muss eine Zahl sein.';
-$wb['limit_spamfilter_user_error_notint'] = 'Das Spamfilter Benutzer Limit muss eine Zahl sein.';
-$wb['limit_spamfilter_policy_error_notint'] = 'Das Spamfilter Richtlinien Limit muss eine Zahl sein.';
-$wb['limit_web_domain_error_notint'] = 'Das Domain Limit muss eine Zahl sein.';
-$wb['limit_web_aliasdomain_error_notint'] = 'Das Aliasdomain Limit muss eine Zahl sein.';
-$wb['limit_web_subdomain_error_notint'] = 'Das Subdomain Limit muss eine Zahl sein.';
-$wb['limit_ftp_user_error_notint'] = 'Das FTP Benutzer Limit muss eine Zahl sein.';
-$wb['limit_shell_user_error_notint'] = 'Das Shell Benutzer Limit muss eine Zahl sein.';
-$wb['limit_dns_zone_error_notint'] = 'Das DNS Einträge Limit muss eine Zahl sein.';
+$wb['limit_maildomain_error_notint'] = 'Die E-Mail Domain Beschränkung muss eine Zahl sein.';
+$wb['limit_mailbox_error_notint'] = 'Die E-Mail Konto Beschränkung muss eine Zahl sein.';
+$wb['limit_mailalias_error_notint'] = 'Die E-Mail Alias Beschränkung muss eine Zahl sein.';
+$wb['limit_mailforward_error_notint'] = 'Die E-Mail Weiterleitung Beschränkung muss eine Zahl sein.';
+$wb['limit_mailcatchall_error_notint'] = 'Die E-Mail Catchall Beschränkung muss eine Zahl sein.';
+$wb['limit_mailrouting_error_notint'] = 'Die E-Mail Routing Beschränkung muss eine Zahl sein.';
+$wb['limit_mailfilter_error_notint'] = 'Die E-Mail Filter Beschränkung muss eine Zahl sein.';
+$wb['limit_mailfetchmail_error_notint'] = 'Die Fetchmail Beschränkung muss eine Zahl sein.';
+$wb['limit_mailquota_error_notint'] = 'Die E-Mailbeschränkungs Beschränkung muss eine Zahl sein.';
+$wb['limit_spamfilter_wblist_error_notint'] = 'Die Spamfilter White-/Blacklist Limit muss eine Zahl sein.';
+$wb['limit_spamfilter_user_error_notint'] = 'Die Spamfilter Benutzer Beschränkung muss eine Zahl sein.';
+$wb['limit_spamfilter_policy_error_notint'] = 'Die Spamfilter Richtlinien Beschränkung muss eine Zahl sein.';
+$wb['limit_web_domain_error_notint'] = 'Die Domain Beschränkung muss eine Zahl sein.';
+$wb['limit_web_aliasdomain_error_notint'] = 'Die Aliasdomain Beschränkung muss eine Zahl sein.';
+$wb['limit_web_subdomain_error_notint'] = 'Die Subdomain Beschränkung muss eine Zahl sein.';
+$wb['limit_ftp_user_error_notint'] = 'Die FTP Benutzer Beschränkung muss eine Zahl sein.';
+$wb['limit_shell_user_error_notint'] = 'Die Shell Benutzer Beschränkung muss eine Zahl sein.';
+$wb['limit_dns_zone_error_notint'] = 'Die DNS Beschränkung muss eine Zahl sein.';
 $wb['default_dbserver_txt'] = 'Standarddatenbankserver';
-$wb['limit_database_error_notint'] = 'Das Datenbank Limit muss eine Zahl sein.';
-$wb['limit_cron_error_notint'] = 'Das Cronjob Limit muss eine Zahl sein.';
-$wb['limit_cron_error_frequency'] = 'Das Cronjob Intervall muss eine Zahl sein.';
+$wb['limit_database_error_notint'] = 'Die Datenbank Beschränkung muss eine Zahl sein.';
+$wb['limit_cron_error_notint'] = 'Die Cronjob Beschränkung muss eine Zahl sein.';
+$wb['limit_cron_error_frequency'] = 'Der Cronjob Intervall muss eine Zahl sein.';
 $wb['username_error_regex'] = 'Der Benutzername enthält ungültige Zeichen.';
 $wb['password_strength_txt'] = 'Passwortkomplexität';
 $wb['template_master_txt'] = 'Mastervorlage';
@@ -97,25 +97,25 @@ $wb['force_suexec_txt'] = 'SuEXEC erzwungen';
 $wb['limit_hterror_txt'] = 'Eigene Fehlerseiten verfügbar';
 $wb['limit_wildcard_txt'] = 'Wildcard Subdomain verfügbar';
 $wb['limit_ssl_txt'] = 'SSL verfügbar';
-$wb['limit_client_error'] = 'Die maximale Anzahl an Kunden wurde erreicht.';
+$wb['limit_client_error'] = 'Die max. Anzahl an Kunden wurde erreicht.';
 $wb['limit_mailaliasdomain_txt'] = 'Max. Anzahl an Domain Aliases';
-$wb['limit_mailaliasdomain_error_notint'] = 'Das E-Mail Domain Alias Limit muss eine Zahl sein.';
-$wb['limit_web_quota_txt'] = 'Webbeschränkung';
-$wb['limit_traffic_quota_txt'] = 'Trafficbeschränkung';
-$wb['limit_trafficquota_error_notint'] = 'Trafficbeschränkung muss eine Zahl sein.';
+$wb['limit_mailaliasdomain_error_notint'] = 'Das E-Mail Domain Alias Beschränkung muss eine Zahl sein.';
+$wb['limit_web_quota_txt'] = 'Speicherplatz Beschränkung';
+$wb['limit_traffic_quota_txt'] = 'Datentransfer Beschränkung';
+$wb['limit_trafficquota_error_notint'] = 'Datentransfer Beschränkung muss eine Zahl sein.';
 $wb['limit_dns_slave_zone_txt'] = 'Max. Anzahl an Secondary DNS Zonen';
 $wb['limit_webdav_user_txt'] = 'Max. Anzahl an WebDAV Benutzern';
-$wb['limit_webdav_user_error_notint'] = 'Das WebDAV Benutzer Limit muss eine Zahl sein.';
-$wb['limit_dns_slave_zone_error_notint'] = 'Das Secondary DNS Zonen Limit muss eine Zahl sein.';
+$wb['limit_webdav_user_error_notint'] = 'Die WebDAV Benutzer Beschränkung muss eine Zahl sein.';
+$wb['limit_dns_slave_zone_error_notint'] = 'Die Secondary DNS Zonen Beschränkung muss eine Zahl sein.';
 $wb['customer_no_txt'] = 'Kundennummer';
 $wb['vat_id_txt'] = 'USt-ID';
 $wb['required_fields_txt'] = '* Benötigte Felder';
 $wb['limit_mailmailinglist_txt'] = 'Max. Anzahl an Mailinglisten';
-$wb['limit_mailmailinglist_error_notint'] = 'Das Mailinglisten Limit muss eine Zahl sein.';
+$wb['limit_mailmailinglist_error_notint'] = 'Die Mailinglisten Beschränkung muss eine Zahl sein.';
 $wb['company_id_txt'] = 'Firmen/Entrepreneur ID';
 $wb['limit_openvz_vm_txt'] = 'Max. Anzahl an virtuellen Servern';
 $wb['limit_openvz_vm_template_id_txt'] = 'Template für virtuelle Server erzwingen';
-$wb['limit_openvz_vm_error_notint'] = 'Das Limit virtueller Server muss eine Zahl sein.';
+$wb['limit_openvz_vm_error_notint'] = 'Die Beschränkung virtueller Server muss eine Zahl sein.';
 $wb['web_php_options_notempty'] = 'Keine PHP Option ausgewählt. Wähle mindestens eine PHP Option.';
 $wb['ssh_chroot_notempty'] = 'Keine SSH Chroot Option ausgewählt. Wähle mindestens eine SSH Option.';
 $wb['username_error_collision'] = 'Der Benutzername sollte nicht mit dem Wort -web- oder -web- gefolgt von einer Nummer anfangen.';
@@ -125,12 +125,12 @@ $wb['bank_code_txt'] = 'BLZ';
 $wb['bank_name_txt'] = 'Bank';
 $wb['bank_account_iban_txt'] = 'IBAN';
 $wb['bank_account_swift_txt'] = 'BIC';
-$wb['web_limits_txt'] = 'Web Limits';
-$wb['email_limits_txt'] = 'E-Mail Limits';
-$wb['database_limits_txt'] = 'Datenbank Limits';
-$wb['cron_job_limits_txt'] = 'Cronjob Limits';
-$wb['dns_limits_txt'] = 'DNS Limits';
-$wb['virtualization_limits_txt'] = 'Virtualisierungs Limits';
+$wb['web_limits_txt'] = 'Web Beschränkungen';
+$wb['email_limits_txt'] = 'E-Mail Beschränkungen';
+$wb['database_limits_txt'] = 'Datenbank Beschränkungen';
+$wb['cron_job_limits_txt'] = 'Cronjob Beschränkungen';
+$wb['dns_limits_txt'] = 'DNS Beschränkungen';
+$wb['virtualization_limits_txt'] = 'Virtuelle Server Beschränkungen';
 $wb['generate_password_txt'] = 'Passwort erzeugen';
 $wb['repeat_password_txt'] = 'Passwort wiederholen';
 $wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
@@ -140,13 +140,9 @@ $wb['email_error_isemail'] = 'Bitte geben Sie eine gültige E-Mail Adresse an.';
 $wb['paypal_email_error_isemail'] = 'Bitte geben Sie eine gültige PayPal E-Mail Adresse an.';
 $wb['paypal_email_txt'] = 'PayPal E-Mail';
 $wb['err_msg_master_tpl_set'] = 'Die hier eingestellten Werte werden ignoriert, wenn als Mastervorlage nicht  -Custom- ausgewählt ist!';
-$wb['aps_limits_txt'] = 'APS Installationsassistent Limits';
-$wb['limit_aps_txt'] = 'Max. Anzahl an APS-Instanzen';
-$wb['limit_aps_error_notint'] = 'Das APS Instanzen Limit muss eine Zahl sein.';
+$wb['aps_limits_txt'] = 'APS Installationsassistent Beschränkungen';
+$wb['limit_aps_txt'] = 'Max. Anzahl an APS Instanzen';
+$wb['limit_aps_error_notint'] = 'Die APS Instanzen Beschränkung muss eine Zahl sein.';
 $wb['default_slave_dnsserver_txt'] = 'Standard Secondary DNS Server';
-$wb['locked_txt'] = 'Gesperrt (deaktiviert alle Webs, etc.)';
-$wb['canceled_txt'] = 'Gek&uuml;ndigt (verhindert Kundenlogin)';
-$wb['gender_txt'] = 'Anrede';
-$wb['gender_m_txt'] = 'Herr';
-$wb['gender_f_txt'] = 'Frau';
 ?>
+
diff --git a/interface/web/client/lib/lang/de_client_circle.lng b/interface/web/client/lib/lang/de_client_circle.lng
index b6aee4638dcce54bcc9267b0728c90476a11f580..c13e9a25bdd3f7c032e2ad3e6c8aa3551c329bde 100644
--- a/interface/web/client/lib/lang/de_client_circle.lng
+++ b/interface/web/client/lib/lang/de_client_circle.lng
@@ -7,3 +7,4 @@ $wb['client_ids_txt'] = 'Kunden/Reseller';
 $wb['description_txt'] = 'Beschreibung';
 $wb['active_txt'] = 'Aktiv';
 ?>
+
diff --git a/interface/web/client/lib/lang/de_client_circle_list.lng b/interface/web/client/lib/lang/de_client_circle_list.lng
index f69b755ddc2e560c7edbdd5951c959672b9f5d16..2e7e25e14df55e4fb6a05d1ecb50825e3629e923 100644
--- a/interface/web/client/lib/lang/de_client_circle_list.lng
+++ b/interface/web/client/lib/lang/de_client_circle_list.lng
@@ -8,3 +8,4 @@ $wb['filter_txt'] = 'Filter';
 $wb['delete_txt'] = 'Löschen';
 $wb['active_txt'] = 'Aktiv';
 ?>
+
diff --git a/interface/web/client/lib/lang/de_client_del.lng b/interface/web/client/lib/lang/de_client_del.lng
index d13fcfa8fc99e9c5d1ab8b01b025bed44208deec..54a96218674cb3deaf5260801ce1d990fdd335ab 100644
--- a/interface/web/client/lib/lang/de_client_del.lng
+++ b/interface/web/client/lib/lang/de_client_del.lng
@@ -5,3 +5,4 @@ $wb['btn_save_txt'] = 'Kunden löschen';
 $wb['btn_cancel_txt'] = 'Abbrechen, ohne den Kunden zu löschen';
 $wb['confirm_client_delete_txt'] = 'Sind Sie sicher, daß Sie den Kunden löschen möchten?';
 ?>
+
diff --git a/interface/web/client/lib/lang/de_client_message.lng b/interface/web/client/lib/lang/de_client_message.lng
index f4def3017d148bbe7751e57db7ebc6ba75aba639..457cf6c17a5bb0e357bf9eabef61f188de5d05f4 100644
--- a/interface/web/client/lib/lang/de_client_message.lng
+++ b/interface/web/client/lib/lang/de_client_message.lng
@@ -16,3 +16,4 @@ $wb['all_clients_resellers_txt'] = 'Alle Kunden und Reseller';
 $wb['all_clients_txt'] = 'Alle Kunden';
 $wb['variables_txt'] = 'Variablen:';
 ?>
+
diff --git a/interface/web/client/lib/lang/de_client_template.lng b/interface/web/client/lib/lang/de_client_template.lng
index 506c61e3f7ef50de3c4e20df6205d4872f9e47d2..c67a4234ccff94ce710322e14dac334ca03d0af3 100644
--- a/interface/web/client/lib/lang/de_client_template.lng
+++ b/interface/web/client/lib/lang/de_client_template.lng
@@ -88,3 +88,4 @@ $wb['aps_limits_txt'] = 'APS Installationsassistent Limits';
 $wb['limit_aps_txt'] = 'Max. Anzahl an APS-Instanzen';
 $wb['limit_aps_error_notint'] = 'Das APS Instanzen Limit muss eine Zahl sein.';
 ?>
+
diff --git a/interface/web/client/lib/lang/de_client_template_list.lng b/interface/web/client/lib/lang/de_client_template_list.lng
index 552035fd702e2a09d76ec7fb147245d6b2324616..5e62e72eba7d0d3da04f4ab8850c1ea48f2b4326 100644
--- a/interface/web/client/lib/lang/de_client_template_list.lng
+++ b/interface/web/client/lib/lang/de_client_template_list.lng
@@ -4,3 +4,4 @@ $wb['template_type_txt'] = 'Typ';
 $wb['template_name_txt'] = 'Vorlagenname';
 $wb['template_id_txt'] = 'Template ID';
 ?>
+
diff --git a/interface/web/client/lib/lang/de_clients_list.lng b/interface/web/client/lib/lang/de_clients_list.lng
index a6bdd6a205d66f8b9c6a4909405f9b11ad593c80..65604d8d79dca82c3d0f01d23d716507df1ffedb 100644
--- a/interface/web/client/lib/lang/de_clients_list.lng
+++ b/interface/web/client/lib/lang/de_clients_list.lng
@@ -9,3 +9,4 @@ $wb['add_new_record_txt'] = 'Kunden hinzufügen';
 $wb['username_txt'] = 'Benutzername';
 $wb['customer_no_txt'] = 'Kundennummer';
 ?>
+
diff --git a/interface/web/client/lib/lang/de_domain.lng b/interface/web/client/lib/lang/de_domain.lng
index eb4276a3f8a9b8f4c54b6e97d5075010bd9167f4..339c6ffd409ded309cadcee6d30bbb7b8351c227 100644
--- a/interface/web/client/lib/lang/de_domain.lng
+++ b/interface/web/client/lib/lang/de_domain.lng
@@ -4,3 +4,4 @@ $wb['domain_error_unique'] = 'Die Domain existiert bereits';
 $wb['domain_error_regex'] = 'Dieser Domain Name ist nicht gültig';
 $wb['Domain'] = 'Domain';
 ?>
+
diff --git a/interface/web/client/lib/lang/de_domain_list.lng b/interface/web/client/lib/lang/de_domain_list.lng
index b066bff5721b62e946d0ce05da4d8e54affedda1..4198e9096285a8e31c520ca5a77846438a677976 100644
--- a/interface/web/client/lib/lang/de_domain_list.lng
+++ b/interface/web/client/lib/lang/de_domain_list.lng
@@ -4,3 +4,4 @@ $wb['add_new_record_txt'] = 'Neue Domain hinzufügen';
 $wb['domain_txt'] = 'Domain';
 $wb['user_txt'] = 'Kunde';
 ?>
+
diff --git a/interface/web/client/lib/lang/de_reseller.lng b/interface/web/client/lib/lang/de_reseller.lng
index 9bc4d53780631645d0c7917a13a8ba92bf4109aa..ee35eda2f6f49af436ae1c503b4ddd637167c1ac 100644
--- a/interface/web/client/lib/lang/de_reseller.lng
+++ b/interface/web/client/lib/lang/de_reseller.lng
@@ -143,9 +143,5 @@ $wb['aps_limits_txt'] = 'APS Installationsassistent Limits';
 $wb['limit_aps_txt'] = 'Max. Anzahl an APS-Instanzen';
 $wb['limit_aps_error_notint'] = 'Das APS Instanzen Limit muss eine Zahl sein.';
 $wb['default_slave_dnsserver_txt'] = 'Standard Secondary DNS Server';
-$wb['locked_txt'] = 'Gesperrt';
-$wb['canceled_txt'] = 'Gek&uuml;ndigt';
-$wb['gender_m_txt'] = 'Herr';
-$wb['gender_f_txt'] = 'Frau';
-$wb['gender_txt'] = 'Anrede';
 ?>
+
diff --git a/interface/web/client/lib/lang/de_resellers_list.lng b/interface/web/client/lib/lang/de_resellers_list.lng
index 0f688c54b56308cd8fa03cc5bd6b10346c76cc07..890b484b1efdb28907ba1a92326d3d160888c946 100644
--- a/interface/web/client/lib/lang/de_resellers_list.lng
+++ b/interface/web/client/lib/lang/de_resellers_list.lng
@@ -9,3 +9,4 @@ $wb['add_new_record_txt'] = 'Neuen Reseller hinzufügen';
 $wb['customer_no_txt'] = 'Kundennummer';
 $wb['username_txt'] = 'Benutzername';
 ?>
+
diff --git a/interface/web/client/lib/lang/el.lng b/interface/web/client/lib/lang/el.lng
index 6fe28b26314525eac39901eb7a292dd2d8cb96aa..7d4f4fa535d8911a96011ed94f4e209e024083d6 100644
--- a/interface/web/client/lib/lang/el.lng
+++ b/interface/web/client/lib/lang/el.lng
@@ -10,16 +10,16 @@ $wb['Add Reseller'] = 'Νέος Μεταπωλητής';
 $wb['Edit Reseller'] = 'Επεξεργασία Μεταπωλητή';
 $wb['Resellers'] = 'Μεταπωλητές';
 $wb['error_has_clients'] = 'Ο Μεταπωλητής έχει πελάτες. Διαγράψτε πρώτα τους πελάτες.';
-$wb['add_additional_template_txt'] = 'Add additional template';
-$wb['delete_additional_template_txt'] = 'Delete additional template';
-$wb['Messaging'] = 'Messaging';
-$wb['Send email'] = 'Send Email';
-$wb['Edit Client Circle'] = 'Edit Client Circle';
+$wb['add_additional_template_txt'] = 'Προσθήκη πρόσθετου προτύπου';
+$wb['delete_additional_template_txt'] = 'Διαγραφή πρόσθετου προτύπου';
+$wb['Messaging'] = 'Μηνύματα';
+$wb['Send email'] = 'Αποστολή Email';
+$wb['Edit Client Circle'] = 'Επεξεργασία Κύκλου Πελάτη';
 $wb['Domains'] = 'Domains';
 $wb['domain_txt'] = 'Domain';
-$wb['client_txt'] = 'Client';
-$wb['error_domain_in mailuse'] = 'This domain cannot be deleted, because it is in use as mail-domain';
-$wb['error_domain_in webuse'] = 'This domain cannot be deleted, because it is in use as web-domain';
-$wb['error_client_can_not_add_domain'] = 'You cannot add a new domain';
-$wb['error_client_group_id_empty'] = 'You have to select a customer<br>';
+$wb['client_txt'] = 'Πελάτης';
+$wb['error_domain_in mailuse'] = 'Το domain δεν μπορεί να διαγραφεί γιατί χρησιμοποιείται ως mail-domain';
+$wb['error_domain_in webuse'] = 'Το domain δεν μπορεί να διαγραφεί γιατί χρησιμοποιείται ως web-domain';
+$wb['error_client_can_not_add_domain'] = 'Δεν μπορείτε να προσθέσετε νέο domain';
+$wb['error_client_group_id_empty'] = 'Πρέπει να επιλέξετε έναν πελάτη<br>';
 ?>
diff --git a/interface/web/client/lib/lang/el_client.lng b/interface/web/client/lib/lang/el_client.lng
index ba5c6820b7a12b7795414b1dd2f483756ff16668..d66de2553d259b25220cc0c9d6f8c7844a10c36a 100644
--- a/interface/web/client/lib/lang/el_client.lng
+++ b/interface/web/client/lib/lang/el_client.lng
@@ -17,7 +17,7 @@ $wb['company_name_txt'] = 'Όνομα εταιρίας';
 $wb['contact_name_txt'] = 'Πρόσωπο Επικοινωνίας';
 $wb['username_txt'] = 'Όνομα Χρήστη';
 $wb['password_txt'] = 'Συνθηματικό';
-$wb['password_strength_txt'] = 'Δύναμη συνθηματικού';
+$wb['password_strength_txt'] = 'Ισχύς Συνθηματικού';
 $wb['language_txt'] = 'Γλώσσα';
 $wb['usertheme_txt'] = 'Θεματική Παραλλαγή';
 $wb['street_txt'] = 'Οδός';
@@ -93,8 +93,8 @@ $wb['ssh_chroot_txt'] = 'Ρυθμίσεις  SSH-Chroot';
 $wb['web_php_options_txt'] = 'Ρυθμίσεις PHP';
 $wb['limit_client_error'] = 'Το μέγιστο πλήθος πελατών εξαντλήθηκε.';
 $wb['limit_web_quota_txt'] = 'Όριο χώρου Web';
-$wb['limit_traffic_quota_txt'] = 'Όριο κίνησης δεδομένων';
-$wb['limit_trafficquota_error_notint'] = 'Το Όριο κίνησης δεδομένων πρέπει να είναι αριθμός.';
+$wb['limit_traffic_quota_txt'] = 'Όριο μεταφοράς δεδομένων';
+$wb['limit_trafficquota_error_notint'] = 'Το Όριο μεταφοράς δεδομένων πρέπει να είναι αριθμός.';
 $wb['customer_no_txt'] = 'Κωδ. Πελάτη';
 $wb['vat_id_txt'] = 'Α.Φ.Μ';
 $wb['required_fields_txt'] = '* Υποχρεωτικά Πεδία';
@@ -104,44 +104,49 @@ $wb['company_id_txt'] = 'ID Εταιρίας/Επιχείρησης';
 $wb['limit_openvz_vm_txt'] = 'Μέγιστο πλήθος εικονικών servers';
 $wb['limit_openvz_vm_template_id_txt'] = 'Εξαναγκασμός προτύπου εικονικού server';
 $wb['limit_openvz_vm_error_notint'] = 'Το όριο εικονικών server πρέπει να είναι αριθμός.';
-$wb['web_php_options_notempty'] = 'No PHP option(s) selected. Select at least one PHP option.';
-$wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one SSH option.';
-$wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
-$wb['add_additional_template_txt'] = 'Add additional template';
-$wb['delete_additional_template_txt'] = 'Delete additional template';
-$wb['limit_cgi_txt'] = 'CGI available';
-$wb['limit_ssi_txt'] = 'SSI available';
-$wb['limit_perl_txt'] = 'Perl available';
+$wb['web_php_options_notempty'] = 'Δεν επιλέχθηκαν επιλογές PHP. Επιλέξτε τουλάχιστον μία επιλογή PHP.';
+$wb['ssh_chroot_notempty'] = 'Δεν επιλέχθηκαν επιλογές SSH chroot. Επιλέξτε τουλάχιστον μία επιλογή SSH.';
+$wb['username_error_collision'] = 'Το όνομα χρήστη δεν μπορεί να αρχίζει από την λέξη -web- ή την λέξη -web- ακολουθούμενη από αριθμό.';
+$wb['add_additional_template_txt'] = 'Προσθήκη πρόσθετου προτύπου';
+$wb['delete_additional_template_txt'] = 'Διαγραφή  πρόσθετου προτύπου';
+$wb['limit_cgi_txt'] = 'Διαθέσιμο CGI';
+$wb['limit_ssi_txt'] = 'Διαθέσιμο SSI';
+$wb['limit_perl_txt'] = 'Διαθέσιμη Perl';
 $wb['limit_ruby_txt'] = 'Ruby available';
-$wb['limit_python_txt'] = 'Python available';
-$wb['force_suexec_txt'] = 'SuEXEC forced';
-$wb['limit_hterror_txt'] = 'Custom error docs available';
+$wb['limit_python_txt'] = 'Διαθέσιμη Python';
+$wb['force_suexec_txt'] = 'Εξαναγκασμός SuEXEC';
+$wb['limit_hterror_txt'] = 'Διαθέσιμα έγγραφα προσαρμοσμένων μηνυμάτων σφάλματος';
 $wb['limit_wildcard_txt'] = 'Wildcard subdomain available';
-$wb['limit_ssl_txt'] = 'SSL available';
-$wb['bank_account_number_txt'] = 'Bank account no.';
-$wb['bank_code_txt'] = 'Bank code';
-$wb['bank_name_txt'] = 'Bank name';
+$wb['limit_ssl_txt'] = 'Διαθέσιμο SSL';
+$wb['bank_account_number_txt'] = 'Αρ. Λογαριασμού Τράπεζας.';
+$wb['bank_code_txt'] = 'Κωδικός Τράπεζας';
+$wb['bank_name_txt'] = 'Όνομα Τράπεζας';
 $wb['bank_account_iban_txt'] = 'IBAN';
-$wb['bank_account_swift_txt'] = 'BIC / Swift';
-$wb['web_limits_txt'] = 'Web Limits';
-$wb['email_limits_txt'] = 'Email Limits';
-$wb['database_limits_txt'] = 'Database Limits';
-$wb['cron_job_limits_txt'] = 'Cron Job Limits';
-$wb['dns_limits_txt'] = 'DNS Limits';
-$wb['virtualization_limits_txt'] = 'Virtualization Limits';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
-$wb['active_template_additional_txt'] = 'Active Addons';
-$wb['bank_account_owner_txt'] = 'Bank account owner';
-$wb['email_error_isemail'] = 'Please enter a valid email address.';
-$wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).';
-$wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.';
+$wb['bank_account_swift_txt'] = 'BIC/Swift';
+$wb['web_limits_txt'] = 'Όρια Web';
+$wb['email_limits_txt'] = 'Όρια Email';
+$wb['database_limits_txt'] = 'Όρια Βάσεων Δεδομένων';
+$wb['cron_job_limits_txt'] = 'Όρια Εργασιών Cron';
+$wb['dns_limits_txt'] = 'Όρια DNS';
+$wb['virtualization_limits_txt'] = 'Όρια Virtualization';
+$wb['generate_password_txt'] = 'Δημιουργία Συνθηματικού';
+$wb['repeat_password_txt'] = 'Επανάληψη Συνθηματικού';
+$wb['password_mismatch_txt'] = 'Τα συνθηματικά δεν ταιριάζουν.';
+$wb['password_match_txt'] = 'Τα συνθηματικά ταιριάζουν.';
+$wb['active_template_additional_txt'] = 'Ενεργά Πρόσθετα';
+$wb['bank_account_owner_txt'] = 'Ιδιοκτήτης Λογαριασμού Τράπεζας';
+$wb['email_error_isemail'] = 'Παρακαλούμε εισάγετε έγκυρη διεύθυνση email.';
+$wb['customer_no_error_unique'] = 'Ο κωδικός πελάτη πρέπει να είναι μοναδικός (ή άδειος).';
+$wb['paypal_email_error_isemail'] = 'Παρακαλούμε εισάγετε έγκυρη διεύθυνση email PayPal.';
 $wb['paypal_email_txt'] = 'PayPal Email';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
-$wb['aps_limits_txt'] = 'APS Installer Limits';
-$wb['limit_aps_txt'] = 'Max. number of APS instances';
-$wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
+$wb['err_msg_master_tpl_set'] = 'Όλες οι ρυθμίσεις προσαρμοσμένων ορίων θα αγνοηθούν αν κάποιο βασικό πρότυπο, εκτός του \\"Custom\\", είναι επιλεγμένο.';
+$wb['aps_limits_txt'] = 'Όρια APS Installer';
+$wb['limit_aps_txt'] = 'Μέγιστο πλήθος ενεργών APS';
+$wb['limit_aps_error_notint'] = 'Το μέγιστο πλήθος ενεργών APS πρέπει να είναι αριθμός.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked (disables all webs etc.)';
+$wb['canceled_txt'] = 'Canceled (disables client login)';
+$wb['gender_txt'] = 'Title';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
 ?>
diff --git a/interface/web/client/lib/lang/el_client_circle.lng b/interface/web/client/lib/lang/el_client_circle.lng
index f98a1447fc75bfe3b4968c02c51b20266d826505..54aa0bc6e8a040d44fb1e98957a1f1d03c2fb66a 100644
--- a/interface/web/client/lib/lang/el_client_circle.lng
+++ b/interface/web/client/lib/lang/el_client_circle.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['Client Circle'] = 'Client Circle';
-$wb['Circle'] = 'Circle';
-$wb['circle_txt'] = 'Circle';
-$wb['circle_name_txt'] = 'Circle Name';
-$wb['client_ids_txt'] = 'Clients/Resellers';
-$wb['description_txt'] = 'Description';
-$wb['active_txt'] = 'Active';
+$wb['Client Circle'] = 'Κύκλος Πελάτη';
+$wb['Circle'] = 'Κύκλος';
+$wb['circle_txt'] = 'Κύκλος';
+$wb['circle_name_txt'] = 'Όνομα Κύκλου';
+$wb['client_ids_txt'] = 'Πελάτες/Μεταπωλητές';
+$wb['description_txt'] = 'Περιγραφή';
+$wb['active_txt'] = 'Ενεργός';
 ?>
diff --git a/interface/web/client/lib/lang/el_client_circle_list.lng b/interface/web/client/lib/lang/el_client_circle_list.lng
index 00fd0b3998912555116db17c2963578096503f45..cb7ef18a6426709edec5f9e5fd38cfb5a99db276 100644
--- a/interface/web/client/lib/lang/el_client_circle_list.lng
+++ b/interface/web/client/lib/lang/el_client_circle_list.lng
@@ -1,10 +1,10 @@
 <?php
-$wb['list_head_txt'] = 'Client Circles';
-$wb['circle_id_txt'] = 'Circle ID';
-$wb['circle_name_txt'] = 'Circle Name';
-$wb['description_txt'] = 'Description';
-$wb['add_new_record_txt'] = 'Add new circle';
-$wb['filter_txt'] = 'Filter';
-$wb['delete_txt'] = 'Delete';
-$wb['active_txt'] = 'Active';
+$wb['list_head_txt'] = 'Κύκλοι πελατών';
+$wb['circle_id_txt'] = 'ID Κύκλου';
+$wb['circle_name_txt'] = 'Όνομα Κύκλου';
+$wb['description_txt'] = 'Περιγραφή';
+$wb['add_new_record_txt'] = 'Προσθήκη νέου Κύκλου';
+$wb['filter_txt'] = 'Φίλτρο';
+$wb['delete_txt'] = 'Διαγραφή';
+$wb['active_txt'] = 'Ενεργός';
 ?>
diff --git a/interface/web/client/lib/lang/el_client_message.lng b/interface/web/client/lib/lang/el_client_message.lng
index 12f491ec1dcda660b7abb35004e8cc22828042e1..ea480064f44864e2a4bb3e653c8674c2b1f9887e 100644
--- a/interface/web/client/lib/lang/el_client_message.lng
+++ b/interface/web/client/lib/lang/el_client_message.lng
@@ -1,18 +1,18 @@
 <?php
-$wb['btn_send_txt'] = 'Send email';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['sender_txt'] = 'Sender email address';
-$wb['subject_txt'] = 'Subject';
-$wb['message_txt'] = 'Message';
-$wb['form_legend_client_txt'] = 'Send email message to all clients.';
-$wb['form_legend_admin_txt'] = 'Send email message to all clients and resellers.';
-$wb['sender_invalid_error'] = 'Sender email invalid.';
-$wb['subject_invalid_error'] = 'Subject is empty.';
-$wb['message_invalid_error'] = 'Message is empty.';
-$wb['email_sent_to_txt'] = 'Email sent to:';
-$wb['page_head_txt'] = 'Send customer information';
-$wb['recipient_txt'] = 'Recipient';
-$wb['all_clients_resellers_txt'] = 'All clients and resellers';
-$wb['all_clients_txt'] = 'All clients';
-$wb['variables_txt'] = 'Variables:';
+$wb['btn_send_txt'] = 'Αποστολή email';
+$wb['btn_cancel_txt'] = 'Άκυρο';
+$wb['sender_txt'] = 'Διεύθυνση email αποστολέα';
+$wb['subject_txt'] = 'Θέμα';
+$wb['message_txt'] = 'Μήνυμα';
+$wb['form_legend_client_txt'] = 'Αποστολή μηνύματος email σε όλους τους πελάτες.';
+$wb['form_legend_admin_txt'] = 'Αποστολή μηνύματος email σε όλους τους πελάτες και τους μεταπωλητές.';
+$wb['sender_invalid_error'] = 'Η Διεύθυνση email αποστολέα δεν είναι έγκυρη.';
+$wb['subject_invalid_error'] = 'Το θέμα είναι άδειο.';
+$wb['message_invalid_error'] = 'Το μήνυμα είναι άδειο.';
+$wb['email_sent_to_txt'] = 'Το Email εστάλει σε:';
+$wb['page_head_txt'] = 'Αποστολή πληροφοριών πελάτη';
+$wb['recipient_txt'] = 'Παραλήπτης';
+$wb['all_clients_resellers_txt'] = 'Όλοι οι πελάτες και οι μεταπωλητές';
+$wb['all_clients_txt'] = 'Όλοι οι πελάτες';
+$wb['variables_txt'] = 'Μεταβλητές:';
 ?>
diff --git a/interface/web/client/lib/lang/el_client_template.lng b/interface/web/client/lib/lang/el_client_template.lng
index 8829657ebc5ead087c21fa1ff1fd88187146e94c..2560fc0a952c4915d2a71a0c1f128243b9a1fb63 100644
--- a/interface/web/client/lib/lang/el_client_template.lng
+++ b/interface/web/client/lib/lang/el_client_template.lng
@@ -57,8 +57,8 @@ $wb['limit_cron_error_notint'] = 'Το όριο εργασιών cron πρέπε
 $wb['limit_cron_error_frequency'] = 'Το όριο συχνότητας των εργασιών cron πρέπει να είναι αριθμός.';
 $wb['error_template_name_empty'] = 'Παρακαλούμε εισάγετε ένα όνομα Προτύπου';
 $wb['limit_web_quota_txt'] = 'Όριο Web';
-$wb['limit_traffic_quota_txt'] = 'Όριο Κίνησης δεδομένων';
-$wb['limit_trafficquota_error_notint'] = 'Το Όριο Κίνησης δεδομένων πρέπει να είναι αριθμός.';
+$wb['limit_traffic_quota_txt'] = 'Όριο μεταφοράς δεδομένων';
+$wb['limit_trafficquota_error_notint'] = 'Το Όριο μεταφοράς δεδομένων πρέπει να είναι αριθμός.';
 $wb['template_del_aborted_txt'] = 'Η διαγραφή ακυρώθηκε. Υπάρχει τουλάχιστον ένας πελάτης που έχει το πρότυπο ενεργοποιημένο.';
 $wb['limit_mailmailinglist_txt'] = 'Μέγιστο πλήθος mailing lists';
 $wb['limit_mailmailinglist_error_notint'] = 'Το πλήθος εγγραφών της mailing list πρέπει να είναι αριθμός.';
@@ -69,22 +69,22 @@ $wb['ssh_chroot_txt'] = 'Επιλογές SSH-Chroot';
 $wb['web_php_options_txt'] = 'Επιλογές PHP';
 $wb['template_type_txt'] = 'Τύπος προτύπου';
 $wb['template_name_txt'] = 'Όνομα προτύπου';
-$wb['limit_cgi_txt'] = 'CGI available';
-$wb['limit_ssi_txt'] = 'SSI available';
-$wb['limit_perl_txt'] = 'Perl available';
-$wb['limit_ruby_txt'] = 'Ruby available';
-$wb['limit_python_txt'] = 'Python available';
-$wb['force_suexec_txt'] = 'SuEXEC forced';
-$wb['limit_hterror_txt'] = 'Custom error docs available';
+$wb['limit_cgi_txt'] = 'Διάθεση CGI';
+$wb['limit_ssi_txt'] = 'Διάθεση SSI';
+$wb['limit_perl_txt'] = 'Διάθεση Perl';
+$wb['limit_ruby_txt'] = 'Διάθεση Ruby';
+$wb['limit_python_txt'] = 'Διάθεση Python';
+$wb['force_suexec_txt'] = 'Εξαναγκασμός SuEXEC';
+$wb['limit_hterror_txt'] = 'Διάθεση προσαρμοσμένων αρχείων σφάλματος';
 $wb['limit_wildcard_txt'] = 'Wildcard subdomain available';
-$wb['limit_ssl_txt'] = 'SSL available';
-$wb['web_limits_txt'] = 'Web Limits';
-$wb['email_limits_txt'] = 'Email Limits';
-$wb['database_limits_txt'] = 'Database Limits';
-$wb['cron_job_limits_txt'] = 'Cron Job Limits';
-$wb['dns_limits_txt'] = 'DNS Limits';
-$wb['virtualization_limits_txt'] = 'Virtualization Limits';
-$wb['aps_limits_txt'] = 'APS Installer Limits';
-$wb['limit_aps_txt'] = 'Max. number of APS instances';
-$wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
+$wb['limit_ssl_txt'] = 'Διαθέσιμο SSL';
+$wb['web_limits_txt'] = 'Όρια Web';
+$wb['email_limits_txt'] = 'Όρια Email';
+$wb['database_limits_txt'] = 'Όρια Βάσεων Δεδομένων';
+$wb['cron_job_limits_txt'] = 'Όρια εργασιών Cron';
+$wb['dns_limits_txt'] = 'Όρια DNS';
+$wb['virtualization_limits_txt'] = 'Όρια Virtualization';
+$wb['aps_limits_txt'] = 'Όρια APS Installer';
+$wb['limit_aps_txt'] = 'Μέγιστο πλήθος ενεργών APS';
+$wb['limit_aps_error_notint'] = 'Το μέγιστο πλήθος ενεργών APS πρέπει να είναι αριθμός.';
 ?>
diff --git a/interface/web/client/lib/lang/el_clients_list.lng b/interface/web/client/lib/lang/el_clients_list.lng
index 56abc6218b0c0f6934fc706e854f4f848e36d4ee..bda08707febd1ac90071ac81bd5602bdab1512e4 100644
--- a/interface/web/client/lib/lang/el_clients_list.lng
+++ b/interface/web/client/lib/lang/el_clients_list.lng
@@ -6,6 +6,6 @@ $wb['contact_name_txt'] = 'Πρόσωπο Επικοινωνίας';
 $wb['city_txt'] = 'Πόλη';
 $wb['country_txt'] = 'Χώρα';
 $wb['add_new_record_txt'] = 'Νέος Πελάτης';
-$wb['username_txt'] = 'Username';
-$wb['customer_no_txt'] = 'Customer No.';
+$wb['username_txt'] = 'Όνομα Χρήστη';
+$wb['customer_no_txt'] = 'Αρ. Πελάτη';
 ?>
diff --git a/interface/web/client/lib/lang/el_domain_list.lng b/interface/web/client/lib/lang/el_domain_list.lng
index 507f895e3ba75f22d90266cda3ae643c188d2ae7..b152f9313edf69e766f2ccc1622e6f9e3f165717 100644
--- a/interface/web/client/lib/lang/el_domain_list.lng
+++ b/interface/web/client/lib/lang/el_domain_list.lng
@@ -2,5 +2,5 @@
 $wb['list_head_txt'] = 'Domains';
 $wb['add_new_record_txt'] = 'Νέο Domain';
 $wb['domain_txt'] = 'Domain';
-$wb['user_txt'] = 'Client';
+$wb['user_txt'] = 'Πελάτης';
 ?>
diff --git a/interface/web/client/lib/lang/el_reseller.lng b/interface/web/client/lib/lang/el_reseller.lng
index c920ab6d2150769e88b69dd9633f0e9728c82512..474671965664fed7306674a04398f3dcf608e80e 100644
--- a/interface/web/client/lib/lang/el_reseller.lng
+++ b/interface/web/client/lib/lang/el_reseller.lng
@@ -16,7 +16,7 @@ $wb['company_name_txt'] = 'Όνομα Εταιρίας';
 $wb['contact_name_txt'] = 'Πρόσωπο Επικοινωνίας';
 $wb['username_txt'] = 'Όνομα Χρήστη';
 $wb['password_txt'] = 'Συνθηματικό';
-$wb['password_strength_txt'] = 'Δύναμη Συνθηματικού';
+$wb['password_strength_txt'] = 'Ισχύς Συνθηματικού';
 $wb['language_txt'] = 'Γλώσσα';
 $wb['usertheme_txt'] = 'Θεματική Παραλλαγή';
 $wb['street_txt'] = 'Οδός';
@@ -91,7 +91,7 @@ $wb['web_php_options_txt'] = 'Επιλογές PHP';
 $wb['limit_client_error'] = 'Έχετε φτάσει το μέγιστο πλήθος πελατών.';
 $wb['limit_client_error_positive'] = 'Το πλήθος πελατών πρέπει να είναι > 0';
 $wb['limit_web_quota_txt'] = 'Όριο χώρου Web';
-$wb['limit_traffic_quota_txt'] = 'Όριο ταχύτητας';
+$wb['limit_traffic_quota_txt'] = 'Όριο μεταφοράς δεδομένων';
 $wb['limit_trafficquota_error_notint'] = 'Το Όριο ταχύτητας πρέπει να είναι αριθμός.';
 $wb['customer_no_txt'] = 'Α/Α Πελάτη';
 $wb['vat_id_txt'] = 'Α.Φ.Μ.';
@@ -109,38 +109,43 @@ $wb['ssh_chroot_notempty'] = 'No SSH chroot option selected. Select at least one
 $wb['username_error_collision'] = 'The username may not start with the word -web- or -web- followed by a number.';
 $wb['add_additional_template_txt'] = 'Add additional template';
 $wb['delete_additional_template_txt'] = 'Delete additional template';
-$wb['limit_cgi_txt'] = 'CGI available';
-$wb['limit_ssi_txt'] = 'SSI available';
-$wb['limit_perl_txt'] = 'Perl available';
-$wb['limit_ruby_txt'] = 'Ruby available';
-$wb['limit_python_txt'] = 'Python available';
-$wb['force_suexec_txt'] = 'SuEXEC forced';
-$wb['limit_hterror_txt'] = 'Custom error docs available';
+$wb['limit_cgi_txt'] = 'Διαθέσιμο CGI';
+$wb['limit_ssi_txt'] = 'Διαθέσιμο SSI';
+$wb['limit_perl_txt'] = 'Διαθέσιμη Perl';
+$wb['limit_ruby_txt'] = 'Διαθέσιμη Ruby';
+$wb['limit_python_txt'] = 'Διαθέσιμη Python';
+$wb['force_suexec_txt'] = 'Εξαναγκασμός SuEXEC';
+$wb['limit_hterror_txt'] = 'Διαθέσιμα έγγραφα προσαρμοσμένων μηνυμάτων σφάλματος';
 $wb['limit_wildcard_txt'] = 'Wildcard subdomain available';
 $wb['limit_ssl_txt'] = 'SSL available';
-$wb['web_limits_txt'] = 'Web Limits';
-$wb['email_limits_txt'] = 'Email Limits';
-$wb['database_limits_txt'] = 'Database Limits';
-$wb['cron_job_limits_txt'] = 'Cron Job Limits';
-$wb['dns_limits_txt'] = 'DNS Limits';
-$wb['virtualization_limits_txt'] = 'Virtualization Limits';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
-$wb['email_error_isemail'] = 'Please enter a valid email address.';
-$wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).';
-$wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.';
+$wb['web_limits_txt'] = 'Όρια Web';
+$wb['email_limits_txt'] = 'Όρια Email';
+$wb['database_limits_txt'] = 'Όρια Βάσεων Δεδομένων';
+$wb['cron_job_limits_txt'] = 'Όρια Εργασιών Cron';
+$wb['dns_limits_txt'] = 'Όρια DNS';
+$wb['virtualization_limits_txt'] = 'Όρια Virtualization';
+$wb['generate_password_txt'] = 'Δημιουργία Συνθηματικού';
+$wb['repeat_password_txt'] = 'Επανάληψη Συνθηματικού';
+$wb['password_mismatch_txt'] = 'Τα συνθηματικά δεν ταιριάζουν.';
+$wb['password_match_txt'] = 'Τα συνθηματικά ταιριάζουν.';
+$wb['email_error_isemail'] = 'Παρακαλούμε εισάγετε έγκυρη διεύθυνση email.';
+$wb['customer_no_error_unique'] = 'Ο κωδικός πελάτη πρέπει να είναι μοναδικός (ή άδειος).';
+$wb['paypal_email_error_isemail'] = 'Παρακαλούμε εισάγετε έγκυρη διεύθυνση email PayPal.';
 $wb['paypal_email_txt'] = 'PayPal Email';
 $wb['company_id_txt'] = 'Company/Entrepreneur ID';
-$wb['bank_account_number_txt'] = 'Bank account no.';
-$wb['bank_account_owner_txt'] = 'Bank account owner';
-$wb['bank_code_txt'] = 'Bank code';
-$wb['bank_name_txt'] = 'Bank name';
+$wb['bank_account_number_txt'] = 'Αριθμός Τραπεζικού Λογαριασμού.';
+$wb['bank_account_owner_txt'] = 'Ιδιοκτήτης Λογαριασμού Τράπεζας';
+$wb['bank_code_txt'] = 'Κωδικός Τράπεζας';
+$wb['bank_name_txt'] = 'Όνομα Τράπεζας';
 $wb['bank_account_iban_txt'] = 'IBAN';
-$wb['bank_account_swift_txt'] = 'BIC / Swift';
-$wb['aps_limits_txt'] = 'APS Installer Limits';
-$wb['limit_aps_txt'] = 'Max. number of APS instances';
-$wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
+$wb['bank_account_swift_txt'] = 'BIC/Swift';
+$wb['aps_limits_txt'] = 'Όρια Εγκαταστάτη APS';
+$wb['limit_aps_txt'] = 'Μέγιστο πλήθος ενεργών APS';
+$wb['limit_aps_error_notint'] = 'Το μέγιστο πλήθος ενεργών APS πρέπει να είναι αριθμός.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked';
+$wb['canceled_txt'] = 'Canceled';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
+$wb['gender_txt'] = 'Title';
 ?>
diff --git a/interface/web/client/lib/lang/el_resellers_list.lng b/interface/web/client/lib/lang/el_resellers_list.lng
index 74edc051a667ae1bbf3ec07a886290fe3a5ae47a..73e35274a5322f242e3fe222b2025c31f3fb0cb9 100644
--- a/interface/web/client/lib/lang/el_resellers_list.lng
+++ b/interface/web/client/lib/lang/el_resellers_list.lng
@@ -6,6 +6,6 @@ $wb['contact_name_txt'] = 'Πρόσωπο Επικοινωνίας';
 $wb['city_txt'] = 'Πόλη';
 $wb['country_txt'] = 'Χώρα';
 $wb['add_new_record_txt'] = 'Νεός Μεταπωλητής';
-$wb['customer_no_txt'] = 'Customer No.';
-$wb['username_txt'] = 'Username';
+$wb['customer_no_txt'] = 'Αρ. Πελάτη';
+$wb['username_txt'] = 'Όνομα χρήστη';
 ?>
diff --git a/interface/web/client/lib/lang/en_client_message.lng b/interface/web/client/lib/lang/en_client_message.lng
index ab37d760878425502c4c85ee7ed8d7f1e4249a4e..c04bd6cda2353e73de5b53f97e21317e1485389e 100644
--- a/interface/web/client/lib/lang/en_client_message.lng
+++ b/interface/web/client/lib/lang/en_client_message.lng
@@ -15,4 +15,6 @@ $wb["recipient_txt"] = 'Recipient';
 $wb["all_clients_resellers_txt"] = 'All clients and resellers';
 $wb["all_clients_txt"] = 'All clients';
 $wb["variables_txt"] = 'Variables:';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
 ?>
diff --git a/interface/web/client/lib/lang/es_client.lng b/interface/web/client/lib/lang/es_client.lng
index d38b0b914872e5347452185122c43551a5b43f44..1df85c6659919afb5c0346d14c696a7900417a14 100644
--- a/interface/web/client/lib/lang/es_client.lng
+++ b/interface/web/client/lib/lang/es_client.lng
@@ -144,4 +144,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked (disables all webs etc.)';
+$wb['canceled_txt'] = 'Canceled (disables client login)';
+$wb['gender_txt'] = 'Title';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
 ?>
diff --git a/interface/web/client/lib/lang/es_reseller.lng b/interface/web/client/lib/lang/es_reseller.lng
index ea07f21395a25b4145fea4d2073133b4e0e89bdd..98a171c675d7d0083e4a7bd98199021fb6425ed3 100644
--- a/interface/web/client/lib/lang/es_reseller.lng
+++ b/interface/web/client/lib/lang/es_reseller.lng
@@ -143,4 +143,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked';
+$wb['canceled_txt'] = 'Canceled';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
+$wb['gender_txt'] = 'Title';
 ?>
diff --git a/interface/web/client/lib/lang/fi_client.lng b/interface/web/client/lib/lang/fi_client.lng
index 317c0244b7caabc1cc67db9f80f3235c8230e106..791f7c0abf548c99092b7a44158456ddc61c23db 100755
--- a/interface/web/client/lib/lang/fi_client.lng
+++ b/interface/web/client/lib/lang/fi_client.lng
@@ -144,4 +144,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked (disables all webs etc.)';
+$wb['canceled_txt'] = 'Canceled (disables client login)';
+$wb['gender_txt'] = 'Title';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
 ?>
diff --git a/interface/web/client/lib/lang/fi_reseller.lng b/interface/web/client/lib/lang/fi_reseller.lng
index ed9ebd1278832e97a4a8addf0161ecdbf43b9a29..49484758570698faeaf8ab490eec90a247eb4033 100644
--- a/interface/web/client/lib/lang/fi_reseller.lng
+++ b/interface/web/client/lib/lang/fi_reseller.lng
@@ -143,4 +143,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked';
+$wb['canceled_txt'] = 'Canceled';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
+$wb['gender_txt'] = 'Title';
 ?>
diff --git a/interface/web/client/lib/lang/fr_client.lng b/interface/web/client/lib/lang/fr_client.lng
index 84400ca1b39ad6f850f55fbec4d6f6666f5e3c2f..b6ecfba5fb3e309979a49211c149efed2515054b 100644
--- a/interface/web/client/lib/lang/fr_client.lng
+++ b/interface/web/client/lib/lang/fr_client.lng
@@ -144,4 +144,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked (disables all webs etc.)';
+$wb['canceled_txt'] = 'Canceled (disables client login)';
+$wb['gender_txt'] = 'Title';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
 ?>
diff --git a/interface/web/client/lib/lang/fr_reseller.lng b/interface/web/client/lib/lang/fr_reseller.lng
index f00be206c6fae6e9efc685dc950b9e4502e47433..6090bffaa769265cc1bb19312461030798e3005a 100644
--- a/interface/web/client/lib/lang/fr_reseller.lng
+++ b/interface/web/client/lib/lang/fr_reseller.lng
@@ -143,4 +143,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked';
+$wb['canceled_txt'] = 'Canceled';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
+$wb['gender_txt'] = 'Title';
 ?>
diff --git a/interface/web/client/lib/lang/hr_client.lng b/interface/web/client/lib/lang/hr_client.lng
index ed38e03ef4ed3ab938c85b49b5077ac6a55a51c0..31c8293d45d4fba9917a2f957d16c94f30accab7 100644
--- a/interface/web/client/lib/lang/hr_client.lng
+++ b/interface/web/client/lib/lang/hr_client.lng
@@ -144,4 +144,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked (disables all webs etc.)';
+$wb['canceled_txt'] = 'Canceled (disables client login)';
+$wb['gender_txt'] = 'Title';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
 ?>
diff --git a/interface/web/client/lib/lang/hr_reseller.lng b/interface/web/client/lib/lang/hr_reseller.lng
index 1de56c7db06e841a315c6ad47ebd9bd7623c2de8..f014052796c8e4171b6f6ba1f021ee5770cba813 100644
--- a/interface/web/client/lib/lang/hr_reseller.lng
+++ b/interface/web/client/lib/lang/hr_reseller.lng
@@ -143,4 +143,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked';
+$wb['canceled_txt'] = 'Canceled';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
+$wb['gender_txt'] = 'Title';
 ?>
diff --git a/interface/web/client/lib/lang/hu_client.lng b/interface/web/client/lib/lang/hu_client.lng
index 7bcaccccb0cd2b76214158bcd2c571804f7d38f8..dca88c99dfba996b4700235c55250b5757086aa3 100644
--- a/interface/web/client/lib/lang/hu_client.lng
+++ b/interface/web/client/lib/lang/hu_client.lng
@@ -144,4 +144,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked (disables all webs etc.)';
+$wb['canceled_txt'] = 'Canceled (disables client login)';
+$wb['gender_txt'] = 'Title';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
 ?>
diff --git a/interface/web/client/lib/lang/hu_reseller.lng b/interface/web/client/lib/lang/hu_reseller.lng
index 019bbc132c04ab29cfd6be6b071ab54f5358c35f..eaeae52ba8e856d5ef712ec0306106be05b8ebf7 100644
--- a/interface/web/client/lib/lang/hu_reseller.lng
+++ b/interface/web/client/lib/lang/hu_reseller.lng
@@ -143,4 +143,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked';
+$wb['canceled_txt'] = 'Canceled';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
+$wb['gender_txt'] = 'Title';
 ?>
diff --git a/interface/web/client/lib/lang/id_client.lng b/interface/web/client/lib/lang/id_client.lng
index 339a310785bfc6a3936a3df741a9e4b2c5e9fbdd..1788f8794b8004cba1cf30e5b8bf90095ef8374d 100644
--- a/interface/web/client/lib/lang/id_client.lng
+++ b/interface/web/client/lib/lang/id_client.lng
@@ -144,4 +144,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked (disables all webs etc.)';
+$wb['canceled_txt'] = 'Canceled (disables client login)';
+$wb['gender_txt'] = 'Title';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
 ?>
diff --git a/interface/web/client/lib/lang/id_reseller.lng b/interface/web/client/lib/lang/id_reseller.lng
index 3c49f0464a14a0d0d53bd527f39967b0b73a5e3e..2d63f50b387cb0f5b13047f3381ec89afc0baeb6 100644
--- a/interface/web/client/lib/lang/id_reseller.lng
+++ b/interface/web/client/lib/lang/id_reseller.lng
@@ -143,4 +143,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked';
+$wb['canceled_txt'] = 'Canceled';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
+$wb['gender_txt'] = 'Title';
 ?>
diff --git a/interface/web/client/lib/lang/it_client.lng b/interface/web/client/lib/lang/it_client.lng
index bb6b4e9f9b41c879c558460e1fe148d2e7236dfe..8042eef60abdb9d978889972320c606ab36cc935 100644
--- a/interface/web/client/lib/lang/it_client.lng
+++ b/interface/web/client/lib/lang/it_client.lng
@@ -144,4 +144,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked (disables all webs etc.)';
+$wb['canceled_txt'] = 'Canceled (disables client login)';
+$wb['gender_txt'] = 'Title';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
 ?>
diff --git a/interface/web/client/lib/lang/it_reseller.lng b/interface/web/client/lib/lang/it_reseller.lng
index 32c9bb1c7c96c1b588bcfcec84f3a41702ac9fe8..53c907162a2218b86f386229965839d681f95367 100644
--- a/interface/web/client/lib/lang/it_reseller.lng
+++ b/interface/web/client/lib/lang/it_reseller.lng
@@ -143,4 +143,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked';
+$wb['canceled_txt'] = 'Canceled';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
+$wb['gender_txt'] = 'Title';
 ?>
diff --git a/interface/web/client/lib/lang/ja_client.lng b/interface/web/client/lib/lang/ja_client.lng
index 85e35b9a50c7910267c558bf806f896e86a539ea..d43672693d05e1f71685c78809c50ca91c2f4826 100644
--- a/interface/web/client/lib/lang/ja_client.lng
+++ b/interface/web/client/lib/lang/ja_client.lng
@@ -144,4 +144,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked (disables all webs etc.)';
+$wb['canceled_txt'] = 'Canceled (disables client login)';
+$wb['gender_txt'] = 'Title';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
 ?>
diff --git a/interface/web/client/lib/lang/ja_reseller.lng b/interface/web/client/lib/lang/ja_reseller.lng
index 9f3251df9a28523654a471068b83cc5fc475de2a..79bd2aa94eed19fea34283f0e1923481d18a0170 100644
--- a/interface/web/client/lib/lang/ja_reseller.lng
+++ b/interface/web/client/lib/lang/ja_reseller.lng
@@ -143,4 +143,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked';
+$wb['canceled_txt'] = 'Canceled';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
+$wb['gender_txt'] = 'Title';
 ?>
diff --git a/interface/web/client/lib/lang/nl_client.lng b/interface/web/client/lib/lang/nl_client.lng
index 42bea6451d06abfc7ca99f86dc25f387f00f2ac9..22d2c11605fba6109eee54440e3bc73646891082 100644
--- a/interface/web/client/lib/lang/nl_client.lng
+++ b/interface/web/client/lib/lang/nl_client.lng
@@ -144,4 +144,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked (disables all webs etc.)';
+$wb['canceled_txt'] = 'Canceled (disables client login)';
+$wb['gender_txt'] = 'Title';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
 ?>
diff --git a/interface/web/client/lib/lang/nl_reseller.lng b/interface/web/client/lib/lang/nl_reseller.lng
index cf871575527255536d2acd9c0afae120c68840e0..9495601c99fd604345ce6e55418648f6ff031d23 100644
--- a/interface/web/client/lib/lang/nl_reseller.lng
+++ b/interface/web/client/lib/lang/nl_reseller.lng
@@ -143,4 +143,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked';
+$wb['canceled_txt'] = 'Canceled';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
+$wb['gender_txt'] = 'Title';
 ?>
diff --git a/interface/web/client/lib/lang/pl_client.lng b/interface/web/client/lib/lang/pl_client.lng
index 3f8ac0c750fdb54597de2eea660bb57f6c20e550..342312aac546a0f5e155d0f40b868d625f4a45e3 100644
--- a/interface/web/client/lib/lang/pl_client.lng
+++ b/interface/web/client/lib/lang/pl_client.lng
@@ -144,4 +144,9 @@ $wb['aps_limits_txt'] = 'Limity Instalatora APS';
 $wb['limit_aps_txt'] = 'Maks. liczba instalacji APS';
 $wb['limit_aps_error_notint'] = 'Limit instalacji APS musi być liczbą';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked (disables all webs etc.)';
+$wb['canceled_txt'] = 'Canceled (disables client login)';
+$wb['gender_txt'] = 'Title';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
 ?>
diff --git a/interface/web/client/lib/lang/pl_reseller.lng b/interface/web/client/lib/lang/pl_reseller.lng
index 63e4c23896042a8177fb86336bdaaed022631d0d..c1bf221c67d1db977408640e8b5c1d95b18b0419 100644
--- a/interface/web/client/lib/lang/pl_reseller.lng
+++ b/interface/web/client/lib/lang/pl_reseller.lng
@@ -143,4 +143,9 @@ $wb['aps_limits_txt'] = 'Limit instalacji APS';
 $wb['limit_aps_txt'] = 'Maks. liczba instancji APS';
 $wb['limit_aps_error_notint'] = 'Limit instancji APS musi być liczbą';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked';
+$wb['canceled_txt'] = 'Canceled';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
+$wb['gender_txt'] = 'Title';
 ?>
diff --git a/interface/web/client/lib/lang/pt_client.lng b/interface/web/client/lib/lang/pt_client.lng
index 9e43b0fb3f8f0f32bbad75a1cc942185ab8a987d..18d2e62155fc85425e201fc761be8442df976f4d 100644
--- a/interface/web/client/lib/lang/pt_client.lng
+++ b/interface/web/client/lib/lang/pt_client.lng
@@ -144,4 +144,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked (disables all webs etc.)';
+$wb['canceled_txt'] = 'Canceled (disables client login)';
+$wb['gender_txt'] = 'Title';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
 ?>
diff --git a/interface/web/client/lib/lang/pt_reseller.lng b/interface/web/client/lib/lang/pt_reseller.lng
index d2f34e9682e43ccba698e15eade050a7bd3db8e7..2e00895573b6038cd82b02233a6d35cfba0f025d 100644
--- a/interface/web/client/lib/lang/pt_reseller.lng
+++ b/interface/web/client/lib/lang/pt_reseller.lng
@@ -143,4 +143,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked';
+$wb['canceled_txt'] = 'Canceled';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
+$wb['gender_txt'] = 'Title';
 ?>
diff --git a/interface/web/client/lib/lang/ro_client.lng b/interface/web/client/lib/lang/ro_client.lng
index 50dd005d66cba593b3925912d4f1da24ec8b2f1b..c2a4f11e4138fa3fad0f4410437fc85e54310582 100644
--- a/interface/web/client/lib/lang/ro_client.lng
+++ b/interface/web/client/lib/lang/ro_client.lng
@@ -144,4 +144,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked (disables all webs etc.)';
+$wb['canceled_txt'] = 'Canceled (disables client login)';
+$wb['gender_txt'] = 'Title';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
 ?>
diff --git a/interface/web/client/lib/lang/ro_reseller.lng b/interface/web/client/lib/lang/ro_reseller.lng
index 32c9bb1c7c96c1b588bcfcec84f3a41702ac9fe8..53c907162a2218b86f386229965839d681f95367 100644
--- a/interface/web/client/lib/lang/ro_reseller.lng
+++ b/interface/web/client/lib/lang/ro_reseller.lng
@@ -143,4 +143,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked';
+$wb['canceled_txt'] = 'Canceled';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
+$wb['gender_txt'] = 'Title';
 ?>
diff --git a/interface/web/client/lib/lang/ru_client.lng b/interface/web/client/lib/lang/ru_client.lng
index 1bd8e590a3a9e8f328b287a2dd16f9f6501688e3..cafaf6b952e1eaea3bf4790f41217975608f9931 100644
--- a/interface/web/client/lib/lang/ru_client.lng
+++ b/interface/web/client/lib/lang/ru_client.lng
@@ -144,4 +144,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked (disables all webs etc.)';
+$wb['canceled_txt'] = 'Canceled (disables client login)';
+$wb['gender_txt'] = 'Title';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
 ?>
diff --git a/interface/web/client/lib/lang/ru_reseller.lng b/interface/web/client/lib/lang/ru_reseller.lng
index 29975f2d1a3430f3e9b95caefacbff85bddcc0b3..f95786f23f3e866e25b57004d9b8b838d5c51853 100644
--- a/interface/web/client/lib/lang/ru_reseller.lng
+++ b/interface/web/client/lib/lang/ru_reseller.lng
@@ -143,4 +143,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked';
+$wb['canceled_txt'] = 'Canceled';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
+$wb['gender_txt'] = 'Title';
 ?>
diff --git a/interface/web/client/lib/lang/se_client.lng b/interface/web/client/lib/lang/se_client.lng
index c2a31de36a21beed0542d419b191ee4f4e3d7a9f..78cecfa702968899ea99dbe440b21797365734da 100644
--- a/interface/web/client/lib/lang/se_client.lng
+++ b/interface/web/client/lib/lang/se_client.lng
@@ -144,4 +144,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked (disables all webs etc.)';
+$wb['canceled_txt'] = 'Canceled (disables client login)';
+$wb['gender_txt'] = 'Title';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
 ?>
diff --git a/interface/web/client/lib/lang/se_reseller.lng b/interface/web/client/lib/lang/se_reseller.lng
index 32c9bb1c7c96c1b588bcfcec84f3a41702ac9fe8..53c907162a2218b86f386229965839d681f95367 100644
--- a/interface/web/client/lib/lang/se_reseller.lng
+++ b/interface/web/client/lib/lang/se_reseller.lng
@@ -143,4 +143,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked';
+$wb['canceled_txt'] = 'Canceled';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
+$wb['gender_txt'] = 'Title';
 ?>
diff --git a/interface/web/client/lib/lang/sk_client.lng b/interface/web/client/lib/lang/sk_client.lng
index 42e0f3ca0a5208f8e9bcf226860f79312411f08f..d033ab8afc5345719abd0a8e3341847377ccdda6 100644
--- a/interface/web/client/lib/lang/sk_client.lng
+++ b/interface/web/client/lib/lang/sk_client.lng
@@ -144,4 +144,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked (disables all webs etc.)';
+$wb['canceled_txt'] = 'Canceled (disables client login)';
+$wb['gender_txt'] = 'Title';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
 ?>
diff --git a/interface/web/client/lib/lang/sk_reseller.lng b/interface/web/client/lib/lang/sk_reseller.lng
index ab954301adf3f51d70e9909cd4dde7021ab1c73d..c5aeabcf241ce491fa80119cf429400711520dd9 100644
--- a/interface/web/client/lib/lang/sk_reseller.lng
+++ b/interface/web/client/lib/lang/sk_reseller.lng
@@ -143,4 +143,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked';
+$wb['canceled_txt'] = 'Canceled';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
+$wb['gender_txt'] = 'Title';
 ?>
diff --git a/interface/web/client/lib/lang/tr_client.lng b/interface/web/client/lib/lang/tr_client.lng
index e3c5c5348bbfc1db8b3b164241046f2457376d48..fda0dc7cf5f66da538531736b8e7a556d558d8aa 100644
--- a/interface/web/client/lib/lang/tr_client.lng
+++ b/interface/web/client/lib/lang/tr_client.lng
@@ -144,4 +144,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked (disables all webs etc.)';
+$wb['canceled_txt'] = 'Canceled (disables client login)';
+$wb['gender_txt'] = 'Title';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
 ?>
diff --git a/interface/web/client/lib/lang/tr_reseller.lng b/interface/web/client/lib/lang/tr_reseller.lng
index f04edbf5c5e05d52734809b542cbbcf4743968fd..83abc609fc4d13c4c9a245a4f0aa4f803d7e2a87 100644
--- a/interface/web/client/lib/lang/tr_reseller.lng
+++ b/interface/web/client/lib/lang/tr_reseller.lng
@@ -143,4 +143,9 @@ $wb['aps_limits_txt'] = 'APS Installer Limits';
 $wb['limit_aps_txt'] = 'Max. number of APS instances';
 $wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
 $wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
+$wb['locked_txt'] = 'Locked';
+$wb['canceled_txt'] = 'Canceled';
+$wb['gender_m_txt'] = 'Mr.';
+$wb['gender_f_txt'] = 'Ms.';
+$wb['gender_txt'] = 'Title';
 ?>
diff --git a/interface/web/dashboard/form/empty.dir b/interface/web/dashboard/form/empty.dir
new file mode 100644
index 0000000000000000000000000000000000000000..95ba9ef37cca69318bcba17e67cd44ae84bd41e1
--- /dev/null
+++ b/interface/web/dashboard/form/empty.dir
@@ -0,0 +1 @@
+This empty directory is needed by ISPConfig.
diff --git a/interface/web/dashboard/lib/lang/ar_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/ar_dashlet_mailquota.lng
index 2c2b6cd7ae1ee489bcc69c5d5716383a9442634a..1ab1e66658fbcab9841ac79a17eb76deb42e40a7 100644
--- a/interface/web/dashboard/lib/lang/ar_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/ar_dashlet_mailquota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["mailquota_txt"] = 'Mailbox Quota';
-$wb["email_txt"] = 'Email Address';
-$wb["name_txt"] = 'Name';
-$wb["used_txt"] = 'Used Space';
-$wb["quota_txt"] = 'Quota';
-$wb["no_email_accounts_txt"] = 'No email accounts found.';
-?>
\ No newline at end of file
+$wb['mailquota_txt'] = 'Mailbox Quota';
+$wb['email_txt'] = 'Email Address';
+$wb['name_txt'] = 'Name';
+$wb['used_txt'] = 'Used Space';
+$wb['quota_txt'] = 'Quota';
+$wb['no_email_accounts_txt'] = 'No email accounts found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/ar_dashlet_quota.lng b/interface/web/dashboard/lib/lang/ar_dashlet_quota.lng
index 8b2e3d43d00117f0bb31345990c2a13fd386721a..de7b5a893612c6c8abb9117bfe933d0eddd782af 100644
--- a/interface/web/dashboard/lib/lang/ar_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/ar_dashlet_quota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["quota_txt"] = 'Website Harddisk Quota';
-$wb["domain_txt"] = 'Domain / Website';
-$wb["used_txt"] = 'Used space';
-$wb["hard_txt"] = 'Hard limit';
-$wb["soft_txt"] = 'Soft limit';
-$wb["no_sites_txt"] = 'No web sites found.';
-?>
\ No newline at end of file
+$wb['quota_txt'] = 'Website Harddisk Quota';
+$wb['domain_txt'] = 'Domain / Website';
+$wb['used_txt'] = 'Used space';
+$wb['hard_txt'] = 'Hard limit';
+$wb['soft_txt'] = 'Soft limit';
+$wb['no_sites_txt'] = 'No web sites found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/bg_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/bg_dashlet_mailquota.lng
index 2c2b6cd7ae1ee489bcc69c5d5716383a9442634a..1ab1e66658fbcab9841ac79a17eb76deb42e40a7 100644
--- a/interface/web/dashboard/lib/lang/bg_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/bg_dashlet_mailquota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["mailquota_txt"] = 'Mailbox Quota';
-$wb["email_txt"] = 'Email Address';
-$wb["name_txt"] = 'Name';
-$wb["used_txt"] = 'Used Space';
-$wb["quota_txt"] = 'Quota';
-$wb["no_email_accounts_txt"] = 'No email accounts found.';
-?>
\ No newline at end of file
+$wb['mailquota_txt'] = 'Mailbox Quota';
+$wb['email_txt'] = 'Email Address';
+$wb['name_txt'] = 'Name';
+$wb['used_txt'] = 'Used Space';
+$wb['quota_txt'] = 'Quota';
+$wb['no_email_accounts_txt'] = 'No email accounts found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/bg_dashlet_quota.lng b/interface/web/dashboard/lib/lang/bg_dashlet_quota.lng
index 8b2e3d43d00117f0bb31345990c2a13fd386721a..de7b5a893612c6c8abb9117bfe933d0eddd782af 100644
--- a/interface/web/dashboard/lib/lang/bg_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/bg_dashlet_quota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["quota_txt"] = 'Website Harddisk Quota';
-$wb["domain_txt"] = 'Domain / Website';
-$wb["used_txt"] = 'Used space';
-$wb["hard_txt"] = 'Hard limit';
-$wb["soft_txt"] = 'Soft limit';
-$wb["no_sites_txt"] = 'No web sites found.';
-?>
\ No newline at end of file
+$wb['quota_txt'] = 'Website Harddisk Quota';
+$wb['domain_txt'] = 'Domain / Website';
+$wb['used_txt'] = 'Used space';
+$wb['hard_txt'] = 'Hard limit';
+$wb['soft_txt'] = 'Soft limit';
+$wb['no_sites_txt'] = 'No web sites found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/br_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/br_dashlet_mailquota.lng
index 2c2b6cd7ae1ee489bcc69c5d5716383a9442634a..1ab1e66658fbcab9841ac79a17eb76deb42e40a7 100644
--- a/interface/web/dashboard/lib/lang/br_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/br_dashlet_mailquota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["mailquota_txt"] = 'Mailbox Quota';
-$wb["email_txt"] = 'Email Address';
-$wb["name_txt"] = 'Name';
-$wb["used_txt"] = 'Used Space';
-$wb["quota_txt"] = 'Quota';
-$wb["no_email_accounts_txt"] = 'No email accounts found.';
-?>
\ No newline at end of file
+$wb['mailquota_txt'] = 'Mailbox Quota';
+$wb['email_txt'] = 'Email Address';
+$wb['name_txt'] = 'Name';
+$wb['used_txt'] = 'Used Space';
+$wb['quota_txt'] = 'Quota';
+$wb['no_email_accounts_txt'] = 'No email accounts found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/br_dashlet_quota.lng b/interface/web/dashboard/lib/lang/br_dashlet_quota.lng
index 8b2e3d43d00117f0bb31345990c2a13fd386721a..de7b5a893612c6c8abb9117bfe933d0eddd782af 100644
--- a/interface/web/dashboard/lib/lang/br_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/br_dashlet_quota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["quota_txt"] = 'Website Harddisk Quota';
-$wb["domain_txt"] = 'Domain / Website';
-$wb["used_txt"] = 'Used space';
-$wb["hard_txt"] = 'Hard limit';
-$wb["soft_txt"] = 'Soft limit';
-$wb["no_sites_txt"] = 'No web sites found.';
-?>
\ No newline at end of file
+$wb['quota_txt'] = 'Website Harddisk Quota';
+$wb['domain_txt'] = 'Domain / Website';
+$wb['used_txt'] = 'Used space';
+$wb['hard_txt'] = 'Hard limit';
+$wb['soft_txt'] = 'Soft limit';
+$wb['no_sites_txt'] = 'No web sites found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/cz.lng b/interface/web/dashboard/lib/lang/cz.lng
index 9d2a3211cb0d4cabaade52c01f42a146df72eafb..15063c03fa38eb867a7317c8ec83a57870b4c44c 100644
--- a/interface/web/dashboard/lib/lang/cz.lng
+++ b/interface/web/dashboard/lib/lang/cz.lng
@@ -2,3 +2,4 @@
 $wb['welcome_user_txt'] = 'Vítejte %s';
 $wb['available_modules_txt'] = 'Dostupné moduly';
 ?>
+
diff --git a/interface/web/dashboard/lib/lang/cz_dashlet_limits.lng b/interface/web/dashboard/lib/lang/cz_dashlet_limits.lng
index bedb98f865187d56e29fee51f20ed1ef3b7561d0..ac3266ec1d10e6aff8df038bacadcdedb86a57ea 100644
--- a/interface/web/dashboard/lib/lang/cz_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/cz_dashlet_limits.lng
@@ -28,3 +28,4 @@ $wb['limit_client_txt'] = 'Počet klientů';
 $wb['limit_database_txt'] = 'Počet databází';
 $wb['limit_mailmailinglist_txt'] = 'Počet e-mailových konferencí';
 ?>
+
diff --git a/interface/web/dashboard/lib/lang/cz_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/cz_dashlet_mailquota.lng
index 2c2b6cd7ae1ee489bcc69c5d5716383a9442634a..db6450afdf8ef1a472322628204bcfd990fcc4a0 100644
--- a/interface/web/dashboard/lib/lang/cz_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/cz_dashlet_mailquota.lng
@@ -1,8 +1,9 @@
 <?php
-$wb["mailquota_txt"] = 'Mailbox Quota';
-$wb["email_txt"] = 'Email Address';
-$wb["name_txt"] = 'Name';
-$wb["used_txt"] = 'Used Space';
-$wb["quota_txt"] = 'Quota';
-$wb["no_email_accounts_txt"] = 'No email accounts found.';
-?>
\ No newline at end of file
+$wb['mailquota_txt'] = 'Kvóta e-mailové schránky';
+$wb['email_txt'] = 'E-mailové adresy';
+$wb['name_txt'] = 'Jméno';
+$wb['used_txt'] = 'Využité místo';
+$wb['quota_txt'] = 'Kvóta';
+$wb['no_email_accounts_txt'] = 'Nenalezeny žádné e-mailové účty.';
+?>
+
diff --git a/interface/web/dashboard/lib/lang/cz_dashlet_modules.lng b/interface/web/dashboard/lib/lang/cz_dashlet_modules.lng
index 66275f1d0573489acd4a185f62b4fbfbecf3f2fd..be21791ff07cd61966e5fa2bc3474d0e435b2c5f 100644
--- a/interface/web/dashboard/lib/lang/cz_dashlet_modules.lng
+++ b/interface/web/dashboard/lib/lang/cz_dashlet_modules.lng
@@ -1,3 +1,4 @@
 <?php
 $wb['available_modules_txt'] = 'Dostupné moduly';
 ?>
+
diff --git a/interface/web/dashboard/lib/lang/cz_dashlet_quota.lng b/interface/web/dashboard/lib/lang/cz_dashlet_quota.lng
index 8b2e3d43d00117f0bb31345990c2a13fd386721a..0e3db11eba8dbe2170f28930fc7e97d0965b79c6 100644
--- a/interface/web/dashboard/lib/lang/cz_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/cz_dashlet_quota.lng
@@ -1,8 +1,9 @@
 <?php
-$wb["quota_txt"] = 'Website Harddisk Quota';
-$wb["domain_txt"] = 'Domain / Website';
-$wb["used_txt"] = 'Used space';
-$wb["hard_txt"] = 'Hard limit';
-$wb["soft_txt"] = 'Soft limit';
-$wb["no_sites_txt"] = 'No web sites found.';
-?>
\ No newline at end of file
+$wb['quota_txt'] = 'Kvóty HDD pro webové stránky';
+$wb['domain_txt'] = 'Doména / Webové stránky';
+$wb['used_txt'] = 'Využité místo';
+$wb['hard_txt'] = 'Kvóta max. obsazení';
+$wb['soft_txt'] = 'Kvóta pro upozornění';
+$wb['no_sites_txt'] = 'Nenalezeny žádné webové stránky.';
+?>
+
diff --git a/interface/web/dashboard/lib/lang/de.lng b/interface/web/dashboard/lib/lang/de.lng
index debf75413ad1ab92565f3ba941964128a54c4bf0..896b1f14743098dd165f9309acb71b762e8bf5d2 100644
--- a/interface/web/dashboard/lib/lang/de.lng
+++ b/interface/web/dashboard/lib/lang/de.lng
@@ -2,3 +2,4 @@
 $wb['welcome_user_txt'] = 'Herzlich Willkommen %s';
 $wb['available_modules_txt'] = 'Verfügbare Module';
 ?>
+
diff --git a/interface/web/dashboard/lib/lang/de_dashlet_limits.lng b/interface/web/dashboard/lib/lang/de_dashlet_limits.lng
index e50ff2759406a86e4c2bd41afebfb8d60b1b45de..746b38b3a87d3c021954c14f92b4f58df63763b0 100644
--- a/interface/web/dashboard/lib/lang/de_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/de_dashlet_limits.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['limits_txt'] = 'Kontolimits';
+$wb['limits_txt'] = 'Kontobeschränkungen';
 $wb['of_txt'] = 'von';
 $wb['unlimited_txt'] = 'unlimitiert';
 $wb['limit_maildomain_txt'] = 'Anzahl der E-Mail Domains';
@@ -28,3 +28,4 @@ $wb['limit_client_txt'] = 'Anzahl der Kunden';
 $wb['limit_database_txt'] = 'Anzahl der Datenbanken';
 $wb['limit_mailmailinglist_txt'] = 'Anzahl der Mailinglisten';
 ?>
+
diff --git a/interface/web/dashboard/lib/lang/de_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/de_dashlet_mailquota.lng
index 92168811936d835f41d660899cfea011015efa1f..02a3fffab421084979ff554f7a6d53fe08854f58 100644
--- a/interface/web/dashboard/lib/lang/de_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/de_dashlet_mailquota.lng
@@ -1,8 +1,9 @@
 <?php
-$wb['mailquota_txt'] = 'Mailbox-Speicherplatz';
-$wb['email_txt'] = 'E-Mail-Adresse';
+$wb['mailquota_txt'] = 'E-Mail Konten Speicherplatz';
+$wb['email_txt'] = 'E-Mail Adresse';
 $wb['name_txt'] = 'Name';
 $wb['used_txt'] = 'Verwendet';
 $wb['quota_txt'] = 'Verfügbar';
-$wb['no_email_accounts_txt'] = 'Kein E-Mail-Konto gefunden.';
+$wb['no_email_accounts_txt'] = 'Kein E-Mail Konto gefunden.';
 ?>
+
diff --git a/interface/web/dashboard/lib/lang/de_dashlet_modules.lng b/interface/web/dashboard/lib/lang/de_dashlet_modules.lng
index 3d2c6c6514980b1a4ba0039763fd7cb94fb9a974..d898ac6ecf20e0021abed94df88abb11859f0ba5 100644
--- a/interface/web/dashboard/lib/lang/de_dashlet_modules.lng
+++ b/interface/web/dashboard/lib/lang/de_dashlet_modules.lng
@@ -1,3 +1,4 @@
 <?php
 $wb['available_modules_txt'] = 'Verfügbare Module';
 ?>
+
diff --git a/interface/web/dashboard/lib/lang/de_dashlet_quota.lng b/interface/web/dashboard/lib/lang/de_dashlet_quota.lng
index c694f1ecf3b0ad590e30b56355fe5100356c92ab..daed0dba93d01ad0fb902feebdc877d93d46e5fc 100644
--- a/interface/web/dashboard/lib/lang/de_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/de_dashlet_quota.lng
@@ -1,8 +1,9 @@
 <?php
-$wb['quota_txt'] = 'Webseiten-Speicherplatz';
-$wb['domain_txt'] = 'Domain / Webseite';
+$wb['quota_txt'] = 'Webseiten Speicherplatz';
+$wb['domain_txt'] = 'Domain';
 $wb['used_txt'] = 'Verwendet';
 $wb['hard_txt'] = 'Hard Limit';
 $wb['soft_txt'] = 'Soft Limit';
 $wb['no_sites_txt'] = 'Keine Webseite gefunden.';
 ?>
+
diff --git a/interface/web/dashboard/lib/lang/el_dashlet_limits.lng b/interface/web/dashboard/lib/lang/el_dashlet_limits.lng
index 13940bd52fbf116253d3c8058138775437aadb87..4fcf6cf150e26047e2961c5d4043790e1eb792c8 100644
--- a/interface/web/dashboard/lib/lang/el_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/el_dashlet_limits.lng
@@ -22,9 +22,9 @@ $wb['limit_ftp_user_txt'] = 'Πλήθος χρηστών FTP';
 $wb['limit_dns_zone_txt'] = 'Πλήθος ζωνών DNS';
 $wb['limit_dns_slave_zone_txt'] = 'Πλήθος δευτερεύουσων ζωνών DNS';
 $wb['limit_dns_record_txt'] = 'Πλήθος εγγραφών DNS';
-$wb['limit_shell_user_txt'] = 'Πλήθος χρηστών Shell';
+$wb['limit_shell_user_txt'] = 'Πλήθος χρηστών Κελύφους';
 $wb['limit_webdav_user_txt'] = 'Πλήθος χρηστών Webdav';
 $wb['limit_client_txt'] = 'Πλήθος Πελατών';
-$wb['limit_database_txt'] = 'Πλήθος Databases';
-$wb['limit_mailmailinglist_txt'] = 'Number of mailing lists';
+$wb['limit_database_txt'] = 'Πλήθος Βάσεων Δεδομένων';
+$wb['limit_mailmailinglist_txt'] = 'Πλήθος λιστών mail';
 ?>
diff --git a/interface/web/dashboard/lib/lang/el_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/el_dashlet_mailquota.lng
index 2c2b6cd7ae1ee489bcc69c5d5716383a9442634a..0bea37b9598e7104d4ef0eb2b65580ee10eb32d5 100644
--- a/interface/web/dashboard/lib/lang/el_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/el_dashlet_mailquota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["mailquota_txt"] = 'Mailbox Quota';
-$wb["email_txt"] = 'Email Address';
-$wb["name_txt"] = 'Name';
-$wb["used_txt"] = 'Used Space';
-$wb["quota_txt"] = 'Quota';
-$wb["no_email_accounts_txt"] = 'No email accounts found.';
-?>
\ No newline at end of file
+$wb['mailquota_txt'] = 'Όρια Mailbox';
+$wb['email_txt'] = 'Διεύθυνση Email';
+$wb['name_txt'] = 'Όνομα';
+$wb['used_txt'] = 'Χώρος σε χρήση';
+$wb['quota_txt'] = 'Όριο';
+$wb['no_email_accounts_txt'] = 'Δεν βρέθηκαν λογαριασμοί email.';
+?>
diff --git a/interface/web/dashboard/lib/lang/el_dashlet_quota.lng b/interface/web/dashboard/lib/lang/el_dashlet_quota.lng
index 8b2e3d43d00117f0bb31345990c2a13fd386721a..d56647b7ed95a3f37331998c4568cc125d6605b5 100644
--- a/interface/web/dashboard/lib/lang/el_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/el_dashlet_quota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["quota_txt"] = 'Website Harddisk Quota';
-$wb["domain_txt"] = 'Domain / Website';
-$wb["used_txt"] = 'Used space';
-$wb["hard_txt"] = 'Hard limit';
-$wb["soft_txt"] = 'Soft limit';
-$wb["no_sites_txt"] = 'No web sites found.';
-?>
\ No newline at end of file
+$wb['quota_txt'] = 'Όρια χρήσης δίσκου για Website';
+$wb['domain_txt'] = 'Domain/Website';
+$wb['used_txt'] = 'Χώρος σε χρήση';
+$wb['hard_txt'] = 'Απόλυτο Όριο';
+$wb['soft_txt'] = 'Διαλακτικό Όριο';
+$wb['no_sites_txt'] = 'Δεν βρέθηκαν websites.';
+?>
diff --git a/interface/web/dashboard/lib/lang/es_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/es_dashlet_mailquota.lng
index 2c2b6cd7ae1ee489bcc69c5d5716383a9442634a..1ab1e66658fbcab9841ac79a17eb76deb42e40a7 100644
--- a/interface/web/dashboard/lib/lang/es_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/es_dashlet_mailquota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["mailquota_txt"] = 'Mailbox Quota';
-$wb["email_txt"] = 'Email Address';
-$wb["name_txt"] = 'Name';
-$wb["used_txt"] = 'Used Space';
-$wb["quota_txt"] = 'Quota';
-$wb["no_email_accounts_txt"] = 'No email accounts found.';
-?>
\ No newline at end of file
+$wb['mailquota_txt'] = 'Mailbox Quota';
+$wb['email_txt'] = 'Email Address';
+$wb['name_txt'] = 'Name';
+$wb['used_txt'] = 'Used Space';
+$wb['quota_txt'] = 'Quota';
+$wb['no_email_accounts_txt'] = 'No email accounts found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/es_dashlet_quota.lng b/interface/web/dashboard/lib/lang/es_dashlet_quota.lng
index 8b2e3d43d00117f0bb31345990c2a13fd386721a..de7b5a893612c6c8abb9117bfe933d0eddd782af 100644
--- a/interface/web/dashboard/lib/lang/es_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/es_dashlet_quota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["quota_txt"] = 'Website Harddisk Quota';
-$wb["domain_txt"] = 'Domain / Website';
-$wb["used_txt"] = 'Used space';
-$wb["hard_txt"] = 'Hard limit';
-$wb["soft_txt"] = 'Soft limit';
-$wb["no_sites_txt"] = 'No web sites found.';
-?>
\ No newline at end of file
+$wb['quota_txt'] = 'Website Harddisk Quota';
+$wb['domain_txt'] = 'Domain / Website';
+$wb['used_txt'] = 'Used space';
+$wb['hard_txt'] = 'Hard limit';
+$wb['soft_txt'] = 'Soft limit';
+$wb['no_sites_txt'] = 'No web sites found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/fi_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/fi_dashlet_mailquota.lng
index 2c2b6cd7ae1ee489bcc69c5d5716383a9442634a..1ab1e66658fbcab9841ac79a17eb76deb42e40a7 100644
--- a/interface/web/dashboard/lib/lang/fi_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/fi_dashlet_mailquota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["mailquota_txt"] = 'Mailbox Quota';
-$wb["email_txt"] = 'Email Address';
-$wb["name_txt"] = 'Name';
-$wb["used_txt"] = 'Used Space';
-$wb["quota_txt"] = 'Quota';
-$wb["no_email_accounts_txt"] = 'No email accounts found.';
-?>
\ No newline at end of file
+$wb['mailquota_txt'] = 'Mailbox Quota';
+$wb['email_txt'] = 'Email Address';
+$wb['name_txt'] = 'Name';
+$wb['used_txt'] = 'Used Space';
+$wb['quota_txt'] = 'Quota';
+$wb['no_email_accounts_txt'] = 'No email accounts found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/fi_dashlet_quota.lng b/interface/web/dashboard/lib/lang/fi_dashlet_quota.lng
index 8b2e3d43d00117f0bb31345990c2a13fd386721a..de7b5a893612c6c8abb9117bfe933d0eddd782af 100644
--- a/interface/web/dashboard/lib/lang/fi_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/fi_dashlet_quota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["quota_txt"] = 'Website Harddisk Quota';
-$wb["domain_txt"] = 'Domain / Website';
-$wb["used_txt"] = 'Used space';
-$wb["hard_txt"] = 'Hard limit';
-$wb["soft_txt"] = 'Soft limit';
-$wb["no_sites_txt"] = 'No web sites found.';
-?>
\ No newline at end of file
+$wb['quota_txt'] = 'Website Harddisk Quota';
+$wb['domain_txt'] = 'Domain / Website';
+$wb['used_txt'] = 'Used space';
+$wb['hard_txt'] = 'Hard limit';
+$wb['soft_txt'] = 'Soft limit';
+$wb['no_sites_txt'] = 'No web sites found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/fr_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/fr_dashlet_mailquota.lng
index 2c2b6cd7ae1ee489bcc69c5d5716383a9442634a..1ab1e66658fbcab9841ac79a17eb76deb42e40a7 100644
--- a/interface/web/dashboard/lib/lang/fr_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/fr_dashlet_mailquota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["mailquota_txt"] = 'Mailbox Quota';
-$wb["email_txt"] = 'Email Address';
-$wb["name_txt"] = 'Name';
-$wb["used_txt"] = 'Used Space';
-$wb["quota_txt"] = 'Quota';
-$wb["no_email_accounts_txt"] = 'No email accounts found.';
-?>
\ No newline at end of file
+$wb['mailquota_txt'] = 'Mailbox Quota';
+$wb['email_txt'] = 'Email Address';
+$wb['name_txt'] = 'Name';
+$wb['used_txt'] = 'Used Space';
+$wb['quota_txt'] = 'Quota';
+$wb['no_email_accounts_txt'] = 'No email accounts found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/fr_dashlet_quota.lng b/interface/web/dashboard/lib/lang/fr_dashlet_quota.lng
index 8b2e3d43d00117f0bb31345990c2a13fd386721a..de7b5a893612c6c8abb9117bfe933d0eddd782af 100644
--- a/interface/web/dashboard/lib/lang/fr_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/fr_dashlet_quota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["quota_txt"] = 'Website Harddisk Quota';
-$wb["domain_txt"] = 'Domain / Website';
-$wb["used_txt"] = 'Used space';
-$wb["hard_txt"] = 'Hard limit';
-$wb["soft_txt"] = 'Soft limit';
-$wb["no_sites_txt"] = 'No web sites found.';
-?>
\ No newline at end of file
+$wb['quota_txt'] = 'Website Harddisk Quota';
+$wb['domain_txt'] = 'Domain / Website';
+$wb['used_txt'] = 'Used space';
+$wb['hard_txt'] = 'Hard limit';
+$wb['soft_txt'] = 'Soft limit';
+$wb['no_sites_txt'] = 'No web sites found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/hr_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/hr_dashlet_mailquota.lng
index 2c2b6cd7ae1ee489bcc69c5d5716383a9442634a..1ab1e66658fbcab9841ac79a17eb76deb42e40a7 100644
--- a/interface/web/dashboard/lib/lang/hr_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/hr_dashlet_mailquota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["mailquota_txt"] = 'Mailbox Quota';
-$wb["email_txt"] = 'Email Address';
-$wb["name_txt"] = 'Name';
-$wb["used_txt"] = 'Used Space';
-$wb["quota_txt"] = 'Quota';
-$wb["no_email_accounts_txt"] = 'No email accounts found.';
-?>
\ No newline at end of file
+$wb['mailquota_txt'] = 'Mailbox Quota';
+$wb['email_txt'] = 'Email Address';
+$wb['name_txt'] = 'Name';
+$wb['used_txt'] = 'Used Space';
+$wb['quota_txt'] = 'Quota';
+$wb['no_email_accounts_txt'] = 'No email accounts found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/hr_dashlet_quota.lng b/interface/web/dashboard/lib/lang/hr_dashlet_quota.lng
index 8b2e3d43d00117f0bb31345990c2a13fd386721a..de7b5a893612c6c8abb9117bfe933d0eddd782af 100644
--- a/interface/web/dashboard/lib/lang/hr_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/hr_dashlet_quota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["quota_txt"] = 'Website Harddisk Quota';
-$wb["domain_txt"] = 'Domain / Website';
-$wb["used_txt"] = 'Used space';
-$wb["hard_txt"] = 'Hard limit';
-$wb["soft_txt"] = 'Soft limit';
-$wb["no_sites_txt"] = 'No web sites found.';
-?>
\ No newline at end of file
+$wb['quota_txt'] = 'Website Harddisk Quota';
+$wb['domain_txt'] = 'Domain / Website';
+$wb['used_txt'] = 'Used space';
+$wb['hard_txt'] = 'Hard limit';
+$wb['soft_txt'] = 'Soft limit';
+$wb['no_sites_txt'] = 'No web sites found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/hu_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/hu_dashlet_mailquota.lng
index 2c2b6cd7ae1ee489bcc69c5d5716383a9442634a..1ab1e66658fbcab9841ac79a17eb76deb42e40a7 100644
--- a/interface/web/dashboard/lib/lang/hu_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/hu_dashlet_mailquota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["mailquota_txt"] = 'Mailbox Quota';
-$wb["email_txt"] = 'Email Address';
-$wb["name_txt"] = 'Name';
-$wb["used_txt"] = 'Used Space';
-$wb["quota_txt"] = 'Quota';
-$wb["no_email_accounts_txt"] = 'No email accounts found.';
-?>
\ No newline at end of file
+$wb['mailquota_txt'] = 'Mailbox Quota';
+$wb['email_txt'] = 'Email Address';
+$wb['name_txt'] = 'Name';
+$wb['used_txt'] = 'Used Space';
+$wb['quota_txt'] = 'Quota';
+$wb['no_email_accounts_txt'] = 'No email accounts found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/hu_dashlet_quota.lng b/interface/web/dashboard/lib/lang/hu_dashlet_quota.lng
index 8b2e3d43d00117f0bb31345990c2a13fd386721a..de7b5a893612c6c8abb9117bfe933d0eddd782af 100644
--- a/interface/web/dashboard/lib/lang/hu_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/hu_dashlet_quota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["quota_txt"] = 'Website Harddisk Quota';
-$wb["domain_txt"] = 'Domain / Website';
-$wb["used_txt"] = 'Used space';
-$wb["hard_txt"] = 'Hard limit';
-$wb["soft_txt"] = 'Soft limit';
-$wb["no_sites_txt"] = 'No web sites found.';
-?>
\ No newline at end of file
+$wb['quota_txt'] = 'Website Harddisk Quota';
+$wb['domain_txt'] = 'Domain / Website';
+$wb['used_txt'] = 'Used space';
+$wb['hard_txt'] = 'Hard limit';
+$wb['soft_txt'] = 'Soft limit';
+$wb['no_sites_txt'] = 'No web sites found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/id_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/id_dashlet_mailquota.lng
index 2c2b6cd7ae1ee489bcc69c5d5716383a9442634a..1ab1e66658fbcab9841ac79a17eb76deb42e40a7 100644
--- a/interface/web/dashboard/lib/lang/id_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/id_dashlet_mailquota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["mailquota_txt"] = 'Mailbox Quota';
-$wb["email_txt"] = 'Email Address';
-$wb["name_txt"] = 'Name';
-$wb["used_txt"] = 'Used Space';
-$wb["quota_txt"] = 'Quota';
-$wb["no_email_accounts_txt"] = 'No email accounts found.';
-?>
\ No newline at end of file
+$wb['mailquota_txt'] = 'Mailbox Quota';
+$wb['email_txt'] = 'Email Address';
+$wb['name_txt'] = 'Name';
+$wb['used_txt'] = 'Used Space';
+$wb['quota_txt'] = 'Quota';
+$wb['no_email_accounts_txt'] = 'No email accounts found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/id_dashlet_quota.lng b/interface/web/dashboard/lib/lang/id_dashlet_quota.lng
index 8b2e3d43d00117f0bb31345990c2a13fd386721a..de7b5a893612c6c8abb9117bfe933d0eddd782af 100644
--- a/interface/web/dashboard/lib/lang/id_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/id_dashlet_quota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["quota_txt"] = 'Website Harddisk Quota';
-$wb["domain_txt"] = 'Domain / Website';
-$wb["used_txt"] = 'Used space';
-$wb["hard_txt"] = 'Hard limit';
-$wb["soft_txt"] = 'Soft limit';
-$wb["no_sites_txt"] = 'No web sites found.';
-?>
\ No newline at end of file
+$wb['quota_txt'] = 'Website Harddisk Quota';
+$wb['domain_txt'] = 'Domain / Website';
+$wb['used_txt'] = 'Used space';
+$wb['hard_txt'] = 'Hard limit';
+$wb['soft_txt'] = 'Soft limit';
+$wb['no_sites_txt'] = 'No web sites found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/it_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/it_dashlet_mailquota.lng
index 2c2b6cd7ae1ee489bcc69c5d5716383a9442634a..1ab1e66658fbcab9841ac79a17eb76deb42e40a7 100644
--- a/interface/web/dashboard/lib/lang/it_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/it_dashlet_mailquota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["mailquota_txt"] = 'Mailbox Quota';
-$wb["email_txt"] = 'Email Address';
-$wb["name_txt"] = 'Name';
-$wb["used_txt"] = 'Used Space';
-$wb["quota_txt"] = 'Quota';
-$wb["no_email_accounts_txt"] = 'No email accounts found.';
-?>
\ No newline at end of file
+$wb['mailquota_txt'] = 'Mailbox Quota';
+$wb['email_txt'] = 'Email Address';
+$wb['name_txt'] = 'Name';
+$wb['used_txt'] = 'Used Space';
+$wb['quota_txt'] = 'Quota';
+$wb['no_email_accounts_txt'] = 'No email accounts found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/it_dashlet_quota.lng b/interface/web/dashboard/lib/lang/it_dashlet_quota.lng
index 8b2e3d43d00117f0bb31345990c2a13fd386721a..de7b5a893612c6c8abb9117bfe933d0eddd782af 100644
--- a/interface/web/dashboard/lib/lang/it_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/it_dashlet_quota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["quota_txt"] = 'Website Harddisk Quota';
-$wb["domain_txt"] = 'Domain / Website';
-$wb["used_txt"] = 'Used space';
-$wb["hard_txt"] = 'Hard limit';
-$wb["soft_txt"] = 'Soft limit';
-$wb["no_sites_txt"] = 'No web sites found.';
-?>
\ No newline at end of file
+$wb['quota_txt'] = 'Website Harddisk Quota';
+$wb['domain_txt'] = 'Domain / Website';
+$wb['used_txt'] = 'Used space';
+$wb['hard_txt'] = 'Hard limit';
+$wb['soft_txt'] = 'Soft limit';
+$wb['no_sites_txt'] = 'No web sites found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/ja_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/ja_dashlet_mailquota.lng
index 2c2b6cd7ae1ee489bcc69c5d5716383a9442634a..1ab1e66658fbcab9841ac79a17eb76deb42e40a7 100644
--- a/interface/web/dashboard/lib/lang/ja_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/ja_dashlet_mailquota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["mailquota_txt"] = 'Mailbox Quota';
-$wb["email_txt"] = 'Email Address';
-$wb["name_txt"] = 'Name';
-$wb["used_txt"] = 'Used Space';
-$wb["quota_txt"] = 'Quota';
-$wb["no_email_accounts_txt"] = 'No email accounts found.';
-?>
\ No newline at end of file
+$wb['mailquota_txt'] = 'Mailbox Quota';
+$wb['email_txt'] = 'Email Address';
+$wb['name_txt'] = 'Name';
+$wb['used_txt'] = 'Used Space';
+$wb['quota_txt'] = 'Quota';
+$wb['no_email_accounts_txt'] = 'No email accounts found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/ja_dashlet_quota.lng b/interface/web/dashboard/lib/lang/ja_dashlet_quota.lng
index 8b2e3d43d00117f0bb31345990c2a13fd386721a..de7b5a893612c6c8abb9117bfe933d0eddd782af 100644
--- a/interface/web/dashboard/lib/lang/ja_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/ja_dashlet_quota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["quota_txt"] = 'Website Harddisk Quota';
-$wb["domain_txt"] = 'Domain / Website';
-$wb["used_txt"] = 'Used space';
-$wb["hard_txt"] = 'Hard limit';
-$wb["soft_txt"] = 'Soft limit';
-$wb["no_sites_txt"] = 'No web sites found.';
-?>
\ No newline at end of file
+$wb['quota_txt'] = 'Website Harddisk Quota';
+$wb['domain_txt'] = 'Domain / Website';
+$wb['used_txt'] = 'Used space';
+$wb['hard_txt'] = 'Hard limit';
+$wb['soft_txt'] = 'Soft limit';
+$wb['no_sites_txt'] = 'No web sites found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/nl_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/nl_dashlet_mailquota.lng
index 2c2b6cd7ae1ee489bcc69c5d5716383a9442634a..1ab1e66658fbcab9841ac79a17eb76deb42e40a7 100644
--- a/interface/web/dashboard/lib/lang/nl_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/nl_dashlet_mailquota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["mailquota_txt"] = 'Mailbox Quota';
-$wb["email_txt"] = 'Email Address';
-$wb["name_txt"] = 'Name';
-$wb["used_txt"] = 'Used Space';
-$wb["quota_txt"] = 'Quota';
-$wb["no_email_accounts_txt"] = 'No email accounts found.';
-?>
\ No newline at end of file
+$wb['mailquota_txt'] = 'Mailbox Quota';
+$wb['email_txt'] = 'Email Address';
+$wb['name_txt'] = 'Name';
+$wb['used_txt'] = 'Used Space';
+$wb['quota_txt'] = 'Quota';
+$wb['no_email_accounts_txt'] = 'No email accounts found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/nl_dashlet_quota.lng b/interface/web/dashboard/lib/lang/nl_dashlet_quota.lng
index 8b2e3d43d00117f0bb31345990c2a13fd386721a..de7b5a893612c6c8abb9117bfe933d0eddd782af 100644
--- a/interface/web/dashboard/lib/lang/nl_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/nl_dashlet_quota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["quota_txt"] = 'Website Harddisk Quota';
-$wb["domain_txt"] = 'Domain / Website';
-$wb["used_txt"] = 'Used space';
-$wb["hard_txt"] = 'Hard limit';
-$wb["soft_txt"] = 'Soft limit';
-$wb["no_sites_txt"] = 'No web sites found.';
-?>
\ No newline at end of file
+$wb['quota_txt'] = 'Website Harddisk Quota';
+$wb['domain_txt'] = 'Domain / Website';
+$wb['used_txt'] = 'Used space';
+$wb['hard_txt'] = 'Hard limit';
+$wb['soft_txt'] = 'Soft limit';
+$wb['no_sites_txt'] = 'No web sites found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/pl_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/pl_dashlet_mailquota.lng
index 2c2b6cd7ae1ee489bcc69c5d5716383a9442634a..1ab1e66658fbcab9841ac79a17eb76deb42e40a7 100644
--- a/interface/web/dashboard/lib/lang/pl_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/pl_dashlet_mailquota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["mailquota_txt"] = 'Mailbox Quota';
-$wb["email_txt"] = 'Email Address';
-$wb["name_txt"] = 'Name';
-$wb["used_txt"] = 'Used Space';
-$wb["quota_txt"] = 'Quota';
-$wb["no_email_accounts_txt"] = 'No email accounts found.';
-?>
\ No newline at end of file
+$wb['mailquota_txt'] = 'Mailbox Quota';
+$wb['email_txt'] = 'Email Address';
+$wb['name_txt'] = 'Name';
+$wb['used_txt'] = 'Used Space';
+$wb['quota_txt'] = 'Quota';
+$wb['no_email_accounts_txt'] = 'No email accounts found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/pl_dashlet_quota.lng b/interface/web/dashboard/lib/lang/pl_dashlet_quota.lng
index 8b2e3d43d00117f0bb31345990c2a13fd386721a..de7b5a893612c6c8abb9117bfe933d0eddd782af 100644
--- a/interface/web/dashboard/lib/lang/pl_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/pl_dashlet_quota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["quota_txt"] = 'Website Harddisk Quota';
-$wb["domain_txt"] = 'Domain / Website';
-$wb["used_txt"] = 'Used space';
-$wb["hard_txt"] = 'Hard limit';
-$wb["soft_txt"] = 'Soft limit';
-$wb["no_sites_txt"] = 'No web sites found.';
-?>
\ No newline at end of file
+$wb['quota_txt'] = 'Website Harddisk Quota';
+$wb['domain_txt'] = 'Domain / Website';
+$wb['used_txt'] = 'Used space';
+$wb['hard_txt'] = 'Hard limit';
+$wb['soft_txt'] = 'Soft limit';
+$wb['no_sites_txt'] = 'No web sites found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/pt_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/pt_dashlet_mailquota.lng
index 2c2b6cd7ae1ee489bcc69c5d5716383a9442634a..1ab1e66658fbcab9841ac79a17eb76deb42e40a7 100644
--- a/interface/web/dashboard/lib/lang/pt_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/pt_dashlet_mailquota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["mailquota_txt"] = 'Mailbox Quota';
-$wb["email_txt"] = 'Email Address';
-$wb["name_txt"] = 'Name';
-$wb["used_txt"] = 'Used Space';
-$wb["quota_txt"] = 'Quota';
-$wb["no_email_accounts_txt"] = 'No email accounts found.';
-?>
\ No newline at end of file
+$wb['mailquota_txt'] = 'Mailbox Quota';
+$wb['email_txt'] = 'Email Address';
+$wb['name_txt'] = 'Name';
+$wb['used_txt'] = 'Used Space';
+$wb['quota_txt'] = 'Quota';
+$wb['no_email_accounts_txt'] = 'No email accounts found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/pt_dashlet_quota.lng b/interface/web/dashboard/lib/lang/pt_dashlet_quota.lng
index 8b2e3d43d00117f0bb31345990c2a13fd386721a..de7b5a893612c6c8abb9117bfe933d0eddd782af 100644
--- a/interface/web/dashboard/lib/lang/pt_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/pt_dashlet_quota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["quota_txt"] = 'Website Harddisk Quota';
-$wb["domain_txt"] = 'Domain / Website';
-$wb["used_txt"] = 'Used space';
-$wb["hard_txt"] = 'Hard limit';
-$wb["soft_txt"] = 'Soft limit';
-$wb["no_sites_txt"] = 'No web sites found.';
-?>
\ No newline at end of file
+$wb['quota_txt'] = 'Website Harddisk Quota';
+$wb['domain_txt'] = 'Domain / Website';
+$wb['used_txt'] = 'Used space';
+$wb['hard_txt'] = 'Hard limit';
+$wb['soft_txt'] = 'Soft limit';
+$wb['no_sites_txt'] = 'No web sites found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/ro_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/ro_dashlet_mailquota.lng
index 2c2b6cd7ae1ee489bcc69c5d5716383a9442634a..1ab1e66658fbcab9841ac79a17eb76deb42e40a7 100644
--- a/interface/web/dashboard/lib/lang/ro_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/ro_dashlet_mailquota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["mailquota_txt"] = 'Mailbox Quota';
-$wb["email_txt"] = 'Email Address';
-$wb["name_txt"] = 'Name';
-$wb["used_txt"] = 'Used Space';
-$wb["quota_txt"] = 'Quota';
-$wb["no_email_accounts_txt"] = 'No email accounts found.';
-?>
\ No newline at end of file
+$wb['mailquota_txt'] = 'Mailbox Quota';
+$wb['email_txt'] = 'Email Address';
+$wb['name_txt'] = 'Name';
+$wb['used_txt'] = 'Used Space';
+$wb['quota_txt'] = 'Quota';
+$wb['no_email_accounts_txt'] = 'No email accounts found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/ro_dashlet_quota.lng b/interface/web/dashboard/lib/lang/ro_dashlet_quota.lng
index 8b2e3d43d00117f0bb31345990c2a13fd386721a..de7b5a893612c6c8abb9117bfe933d0eddd782af 100644
--- a/interface/web/dashboard/lib/lang/ro_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/ro_dashlet_quota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["quota_txt"] = 'Website Harddisk Quota';
-$wb["domain_txt"] = 'Domain / Website';
-$wb["used_txt"] = 'Used space';
-$wb["hard_txt"] = 'Hard limit';
-$wb["soft_txt"] = 'Soft limit';
-$wb["no_sites_txt"] = 'No web sites found.';
-?>
\ No newline at end of file
+$wb['quota_txt'] = 'Website Harddisk Quota';
+$wb['domain_txt'] = 'Domain / Website';
+$wb['used_txt'] = 'Used space';
+$wb['hard_txt'] = 'Hard limit';
+$wb['soft_txt'] = 'Soft limit';
+$wb['no_sites_txt'] = 'No web sites found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/ru_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/ru_dashlet_mailquota.lng
index 2c2b6cd7ae1ee489bcc69c5d5716383a9442634a..1ab1e66658fbcab9841ac79a17eb76deb42e40a7 100644
--- a/interface/web/dashboard/lib/lang/ru_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/ru_dashlet_mailquota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["mailquota_txt"] = 'Mailbox Quota';
-$wb["email_txt"] = 'Email Address';
-$wb["name_txt"] = 'Name';
-$wb["used_txt"] = 'Used Space';
-$wb["quota_txt"] = 'Quota';
-$wb["no_email_accounts_txt"] = 'No email accounts found.';
-?>
\ No newline at end of file
+$wb['mailquota_txt'] = 'Mailbox Quota';
+$wb['email_txt'] = 'Email Address';
+$wb['name_txt'] = 'Name';
+$wb['used_txt'] = 'Used Space';
+$wb['quota_txt'] = 'Quota';
+$wb['no_email_accounts_txt'] = 'No email accounts found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/ru_dashlet_quota.lng b/interface/web/dashboard/lib/lang/ru_dashlet_quota.lng
index 8b2e3d43d00117f0bb31345990c2a13fd386721a..de7b5a893612c6c8abb9117bfe933d0eddd782af 100644
--- a/interface/web/dashboard/lib/lang/ru_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/ru_dashlet_quota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["quota_txt"] = 'Website Harddisk Quota';
-$wb["domain_txt"] = 'Domain / Website';
-$wb["used_txt"] = 'Used space';
-$wb["hard_txt"] = 'Hard limit';
-$wb["soft_txt"] = 'Soft limit';
-$wb["no_sites_txt"] = 'No web sites found.';
-?>
\ No newline at end of file
+$wb['quota_txt'] = 'Website Harddisk Quota';
+$wb['domain_txt'] = 'Domain / Website';
+$wb['used_txt'] = 'Used space';
+$wb['hard_txt'] = 'Hard limit';
+$wb['soft_txt'] = 'Soft limit';
+$wb['no_sites_txt'] = 'No web sites found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/se_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/se_dashlet_mailquota.lng
index 2c2b6cd7ae1ee489bcc69c5d5716383a9442634a..1ab1e66658fbcab9841ac79a17eb76deb42e40a7 100644
--- a/interface/web/dashboard/lib/lang/se_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/se_dashlet_mailquota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["mailquota_txt"] = 'Mailbox Quota';
-$wb["email_txt"] = 'Email Address';
-$wb["name_txt"] = 'Name';
-$wb["used_txt"] = 'Used Space';
-$wb["quota_txt"] = 'Quota';
-$wb["no_email_accounts_txt"] = 'No email accounts found.';
-?>
\ No newline at end of file
+$wb['mailquota_txt'] = 'Mailbox Quota';
+$wb['email_txt'] = 'Email Address';
+$wb['name_txt'] = 'Name';
+$wb['used_txt'] = 'Used Space';
+$wb['quota_txt'] = 'Quota';
+$wb['no_email_accounts_txt'] = 'No email accounts found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/se_dashlet_quota.lng b/interface/web/dashboard/lib/lang/se_dashlet_quota.lng
index 8b2e3d43d00117f0bb31345990c2a13fd386721a..de7b5a893612c6c8abb9117bfe933d0eddd782af 100644
--- a/interface/web/dashboard/lib/lang/se_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/se_dashlet_quota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["quota_txt"] = 'Website Harddisk Quota';
-$wb["domain_txt"] = 'Domain / Website';
-$wb["used_txt"] = 'Used space';
-$wb["hard_txt"] = 'Hard limit';
-$wb["soft_txt"] = 'Soft limit';
-$wb["no_sites_txt"] = 'No web sites found.';
-?>
\ No newline at end of file
+$wb['quota_txt'] = 'Website Harddisk Quota';
+$wb['domain_txt'] = 'Domain / Website';
+$wb['used_txt'] = 'Used space';
+$wb['hard_txt'] = 'Hard limit';
+$wb['soft_txt'] = 'Soft limit';
+$wb['no_sites_txt'] = 'No web sites found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/sk_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/sk_dashlet_mailquota.lng
index 2c2b6cd7ae1ee489bcc69c5d5716383a9442634a..1ab1e66658fbcab9841ac79a17eb76deb42e40a7 100644
--- a/interface/web/dashboard/lib/lang/sk_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/sk_dashlet_mailquota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["mailquota_txt"] = 'Mailbox Quota';
-$wb["email_txt"] = 'Email Address';
-$wb["name_txt"] = 'Name';
-$wb["used_txt"] = 'Used Space';
-$wb["quota_txt"] = 'Quota';
-$wb["no_email_accounts_txt"] = 'No email accounts found.';
-?>
\ No newline at end of file
+$wb['mailquota_txt'] = 'Mailbox Quota';
+$wb['email_txt'] = 'Email Address';
+$wb['name_txt'] = 'Name';
+$wb['used_txt'] = 'Used Space';
+$wb['quota_txt'] = 'Quota';
+$wb['no_email_accounts_txt'] = 'No email accounts found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/sk_dashlet_quota.lng b/interface/web/dashboard/lib/lang/sk_dashlet_quota.lng
index 8b2e3d43d00117f0bb31345990c2a13fd386721a..de7b5a893612c6c8abb9117bfe933d0eddd782af 100644
--- a/interface/web/dashboard/lib/lang/sk_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/sk_dashlet_quota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["quota_txt"] = 'Website Harddisk Quota';
-$wb["domain_txt"] = 'Domain / Website';
-$wb["used_txt"] = 'Used space';
-$wb["hard_txt"] = 'Hard limit';
-$wb["soft_txt"] = 'Soft limit';
-$wb["no_sites_txt"] = 'No web sites found.';
-?>
\ No newline at end of file
+$wb['quota_txt'] = 'Website Harddisk Quota';
+$wb['domain_txt'] = 'Domain / Website';
+$wb['used_txt'] = 'Used space';
+$wb['hard_txt'] = 'Hard limit';
+$wb['soft_txt'] = 'Soft limit';
+$wb['no_sites_txt'] = 'No web sites found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/tr_dashlet_mailquota.lng
index 2c2b6cd7ae1ee489bcc69c5d5716383a9442634a..1ab1e66658fbcab9841ac79a17eb76deb42e40a7 100644
--- a/interface/web/dashboard/lib/lang/tr_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/tr_dashlet_mailquota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["mailquota_txt"] = 'Mailbox Quota';
-$wb["email_txt"] = 'Email Address';
-$wb["name_txt"] = 'Name';
-$wb["used_txt"] = 'Used Space';
-$wb["quota_txt"] = 'Quota';
-$wb["no_email_accounts_txt"] = 'No email accounts found.';
-?>
\ No newline at end of file
+$wb['mailquota_txt'] = 'Mailbox Quota';
+$wb['email_txt'] = 'Email Address';
+$wb['name_txt'] = 'Name';
+$wb['used_txt'] = 'Used Space';
+$wb['quota_txt'] = 'Quota';
+$wb['no_email_accounts_txt'] = 'No email accounts found.';
+?>
diff --git a/interface/web/dashboard/lib/lang/tr_dashlet_quota.lng b/interface/web/dashboard/lib/lang/tr_dashlet_quota.lng
index 8b2e3d43d00117f0bb31345990c2a13fd386721a..de7b5a893612c6c8abb9117bfe933d0eddd782af 100644
--- a/interface/web/dashboard/lib/lang/tr_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/tr_dashlet_quota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb["quota_txt"] = 'Website Harddisk Quota';
-$wb["domain_txt"] = 'Domain / Website';
-$wb["used_txt"] = 'Used space';
-$wb["hard_txt"] = 'Hard limit';
-$wb["soft_txt"] = 'Soft limit';
-$wb["no_sites_txt"] = 'No web sites found.';
-?>
\ No newline at end of file
+$wb['quota_txt'] = 'Website Harddisk Quota';
+$wb['domain_txt'] = 'Domain / Website';
+$wb['used_txt'] = 'Used space';
+$wb['hard_txt'] = 'Hard limit';
+$wb['soft_txt'] = 'Soft limit';
+$wb['no_sites_txt'] = 'No web sites found.';
+?>
diff --git a/interface/web/dashboard/list/empty.dir b/interface/web/dashboard/list/empty.dir
new file mode 100644
index 0000000000000000000000000000000000000000..95ba9ef37cca69318bcba17e67cd44ae84bd41e1
--- /dev/null
+++ b/interface/web/dashboard/list/empty.dir
@@ -0,0 +1 @@
+This empty directory is needed by ISPConfig.
diff --git a/interface/web/designer/form/empty.dir b/interface/web/designer/form/empty.dir
new file mode 100644
index 0000000000000000000000000000000000000000..95ba9ef37cca69318bcba17e67cd44ae84bd41e1
--- /dev/null
+++ b/interface/web/designer/form/empty.dir
@@ -0,0 +1 @@
+This empty directory is needed by ISPConfig.
diff --git a/interface/web/designer/lib/lang/cz.lng b/interface/web/designer/lib/lang/cz.lng
index acb6c3546c6150b4edbafb782d3ed85c499210b5..29f4a51efebb370aeb04c5144a604ca2c04e02be 100644
--- a/interface/web/designer/lib/lang/cz.lng
+++ b/interface/web/designer/lib/lang/cz.lng
@@ -1,2 +1,3 @@
 <?php
 ?>
+
diff --git a/interface/web/designer/lib/lang/cz_form_edit.lng b/interface/web/designer/lib/lang/cz_form_edit.lng
index 75bf5a5606c2337c3297bca3417f7bed093b7fd5..00eeb204d040f9b0a225bb75f294a8d24e08c075 100644
--- a/interface/web/designer/lib/lang/cz_form_edit.lng
+++ b/interface/web/designer/lib/lang/cz_form_edit.lng
@@ -22,3 +22,4 @@ $wb['auth_preset_perm_user_txt'] = 'Opr. Uživatel';
 $wb['auth_preset_perm_group_txt'] = 'Opr. Skupina';
 $wb['auth_preset_perm_other_txt'] = 'Opr. Ostatní';
 ?>
+
diff --git a/interface/web/designer/lib/lang/cz_form_list.lng b/interface/web/designer/lib/lang/cz_form_list.lng
index 1e677f2410789f7f520c5efe3211abd97d8d3c0b..edaa422253cc77327c10327e68541de4f0729d4e 100644
--- a/interface/web/designer/lib/lang/cz_form_list.lng
+++ b/interface/web/designer/lib/lang/cz_form_list.lng
@@ -5,3 +5,4 @@ $wb['module_txt'] = 'Modul';
 $wb['title_txt'] = 'Titulek';
 $wb['description_txt'] = 'Popis';
 ?>
+
diff --git a/interface/web/designer/lib/lang/cz_form_show.lng b/interface/web/designer/lib/lang/cz_form_show.lng
index 381414bdf0848cdc1fd1984a29d308fb0733cd58..678d5eb6966d88f8328744e4ae24ff74ad54c499 100644
--- a/interface/web/designer/lib/lang/cz_form_show.lng
+++ b/interface/web/designer/lib/lang/cz_form_show.lng
@@ -5,7 +5,7 @@ $wb['name_txt'] = 'Formname';
 $wb['delete_txt'] = 'Smazat';
 $wb['properties_txt'] = 'Properties';
 $wb['new_tab_txt'] = 'Tab new';
-$wb['edit_txt'] = 'Edit';
+$wb['edit_txt'] = 'Upravit';
 $wb['new_txt'] = 'Neu';
 $wb['up_txt'] = '^';
 $wb['down_txt'] = 'v';
@@ -16,3 +16,4 @@ $wb['module_del_txt'] = 'Delete the module and all subdirectories?';
 $wb['menu_del_txt'] = 'Delete menu with all menuitems?';
 $wb['item_del_txt'] = 'Delete menuitem?';
 ?>
+
diff --git a/interface/web/designer/lib/lang/cz_module_edit.lng b/interface/web/designer/lib/lang/cz_module_edit.lng
index 847896d302ec25756e1e58c4fad803084b16feb2..cc83c99686902aebfbf60842c67ad14887d9997b 100644
--- a/interface/web/designer/lib/lang/cz_module_edit.lng
+++ b/interface/web/designer/lib/lang/cz_module_edit.lng
@@ -8,15 +8,5 @@ $wb['tab_width_txt'] = 'Šířka záložky';
 $wb['save_txt'] = 'Uložit';
 $wb['cancel_txt'] = 'Zrušit';
 $wb['header_txt'] = 'Vlastnosti modulu';
-$wb['description_txt'] = '
-<b>Popis</b>
-<br><br>
-<b>Název modulu:</b> Název adresáře modulu. Pouze čísla, znaky a podtržitko jsou povoleny.<br>
-<b>Titulek modulu:</b> Bude zobrazen v horní části hlavní navigace.<br>
-<b>Soubor se šablonou:</b> Šablonový soubor modulu. Nyní dostupné: module.tpl.htm a module_tree.tpl.htm.Výchozí je module.tpl.htm.<br>
-<b>NaviFrame:</b> Pokud je vybrán module_tree.tpl.htm jako šablona, zadejte zde cestu ke skriptu pro levý frame.<br>
-<b>Výchozí stránka:</b> Tato stránka bude ukázána, když je modul zobrazen.<br>
-<b>Šířka záložek:</b> Šířka záložek v hlavní navigaci. Pole je ve výchozím stavu prázdné. Můžete zadat absolutní hodnotu v pixelech (např. 20) nebo relativně (např 20%).<br>
-<b>Rada:</b> Všechny cesty jsou relativně k adresáři web web.
-';
 ?>
+
diff --git a/interface/web/designer/lib/lang/cz_module_list.lng b/interface/web/designer/lib/lang/cz_module_list.lng
index b568f69d63b2965e2371648651f39211f17a1de7..6617c8c30007fee8ce9e448cab3585ae3a8ab534 100644
--- a/interface/web/designer/lib/lang/cz_module_list.lng
+++ b/interface/web/designer/lib/lang/cz_module_list.lng
@@ -3,3 +3,4 @@ $wb['list_head_txt'] = 'Backend modul';
 $wb['module_txt'] = 'Modul';
 $wb['title_txt'] = 'Titulek';
 ?>
+
diff --git a/interface/web/designer/lib/lang/cz_module_nav_edit.lng b/interface/web/designer/lib/lang/cz_module_nav_edit.lng
index 01f5df68fb16558fb8b97f277125297884434937..58d57732315961127a10ded53ff482cb33306bd2 100644
--- a/interface/web/designer/lib/lang/cz_module_nav_edit.lng
+++ b/interface/web/designer/lib/lang/cz_module_nav_edit.lng
@@ -4,3 +4,4 @@ $wb['header_txt'] = 'Navi vlastnosti';
 $wb['save_txt'] = 'Uložit';
 $wb['cancel_txt'] = 'Zrušit';
 ?>
+
diff --git a/interface/web/designer/lib/lang/cz_module_nav_item_edit.lng b/interface/web/designer/lib/lang/cz_module_nav_item_edit.lng
index 17e31319d7a7dbd750a52a6d5434bb7a8d3a7aca..39aaae8c41ec18a95a2c7458f4e645b921344f95 100644
--- a/interface/web/designer/lib/lang/cz_module_nav_item_edit.lng
+++ b/interface/web/designer/lib/lang/cz_module_nav_item_edit.lng
@@ -6,3 +6,4 @@ $wb['header_txt'] = 'Navi properties';
 $wb['save_txt'] = 'Uložit';
 $wb['cancel_txt'] = 'Zrušit';
 ?>
+
diff --git a/interface/web/designer/lib/lang/cz_module_show.lng b/interface/web/designer/lib/lang/cz_module_show.lng
index 95c2d85723cec55e4fc46f284511fa79530b9706..78fdd9cb1c4ed559e81fea7a17d1ef41f6218746 100644
--- a/interface/web/designer/lib/lang/cz_module_show.lng
+++ b/interface/web/designer/lib/lang/cz_module_show.lng
@@ -5,7 +5,7 @@ $wb['name_txt'] = 'Module';
 $wb['delete_txt'] = 'Smazat';
 $wb['properties_txt'] = 'Properties';
 $wb['new_menu_txt'] = 'Menu new';
-$wb['edit_txt'] = 'Edit';
+$wb['edit_txt'] = 'Upravit';
 $wb['new_txt'] = 'New';
 $wb['up_txt'] = 'Up';
 $wb['down_txt'] = 'Down';
@@ -14,3 +14,4 @@ $wb['module_del_txt'] = 'Wollen Sie das Modul und alle im Modul angelegten Datei
 $wb['menu_del_txt'] = 'Wollen Sie das Menü mit allen Untereinträgen löschen?';
 $wb['item_del_txt'] = 'Wollen Sie den Menüeintrag löschen?';
 ?>
+
diff --git a/interface/web/designer/lib/lang/de.lng b/interface/web/designer/lib/lang/de.lng
index acb6c3546c6150b4edbafb782d3ed85c499210b5..29f4a51efebb370aeb04c5144a604ca2c04e02be 100644
--- a/interface/web/designer/lib/lang/de.lng
+++ b/interface/web/designer/lib/lang/de.lng
@@ -1,2 +1,3 @@
 <?php
 ?>
+
diff --git a/interface/web/designer/lib/lang/de_form_edit.lng b/interface/web/designer/lib/lang/de_form_edit.lng
index 74bf458d90993f4879d2fe10e8696e1d5d8adf5e..4eb8e930962417e81e701ab28c315d3cbf708e8f 100644
--- a/interface/web/designer/lib/lang/de_form_edit.lng
+++ b/interface/web/designer/lib/lang/de_form_edit.lng
@@ -22,3 +22,4 @@ $wb['auth_preset_perm_user_txt'] = 'Benutzerberechtigungen';
 $wb['auth_preset_perm_group_txt'] = 'Gruppenberechtigungen';
 $wb['auth_preset_perm_other_txt'] = 'andere Berechtigungen';
 ?>
+
diff --git a/interface/web/designer/lib/lang/de_form_list.lng b/interface/web/designer/lib/lang/de_form_list.lng
index 998a64f702453ede0420223dfbd5a47550b8025a..853ce10003c20c4d83f1a4522e70a622b6d30479 100644
--- a/interface/web/designer/lib/lang/de_form_list.lng
+++ b/interface/web/designer/lib/lang/de_form_list.lng
@@ -5,3 +5,4 @@ $wb['module_txt'] = 'Modul';
 $wb['title_txt'] = 'Bezeichnung';
 $wb['description_txt'] = 'Beschreibung';
 ?>
+
diff --git a/interface/web/designer/lib/lang/de_form_show.lng b/interface/web/designer/lib/lang/de_form_show.lng
index b19fd34457ed9ca267e19a01ad9605368536d752..c4b2c1d19570174d24699db67ed6b346e1d52134 100644
--- a/interface/web/designer/lib/lang/de_form_show.lng
+++ b/interface/web/designer/lib/lang/de_form_show.lng
@@ -16,3 +16,4 @@ $wb['module_del_txt'] = 'Modul und alle Unterverzeichnisse löschen?';
 $wb['menu_del_txt'] = 'Menü samt Menüeinträgen löschen?';
 $wb['item_del_txt'] = 'Menüeintrag löschen?';
 ?>
+
diff --git a/interface/web/designer/lib/lang/de_module_edit.lng b/interface/web/designer/lib/lang/de_module_edit.lng
index 6eacd64b1de87cab59ed74c470cc351f9f20e243..09d9f390dbd40cca80998c777301a34c510a707d 100644
--- a/interface/web/designer/lib/lang/de_module_edit.lng
+++ b/interface/web/designer/lib/lang/de_module_edit.lng
@@ -10,3 +10,4 @@ $wb['cancel_txt'] = 'Abbrechen';
 $wb['header_txt'] = 'Moduleigenschaften';
 $wb['description_txt'] = 'Beschreibung';
 ?>
+
diff --git a/interface/web/designer/lib/lang/de_module_list.lng b/interface/web/designer/lib/lang/de_module_list.lng
index 60406302030a4d1572afa43eae185ba4878643b5..a09b5139b5bbe41eb9d8a840579d26af86185130 100644
--- a/interface/web/designer/lib/lang/de_module_list.lng
+++ b/interface/web/designer/lib/lang/de_module_list.lng
@@ -3,3 +3,4 @@ $wb['list_head_txt'] = 'Backend Module';
 $wb['module_txt'] = 'Modul';
 $wb['title_txt'] = 'Bezeichnung';
 ?>
+
diff --git a/interface/web/designer/lib/lang/de_module_nav_edit.lng b/interface/web/designer/lib/lang/de_module_nav_edit.lng
index d5142f03cb3f38a0864004394226834bb7f396c1..25e2085ccf2cead72e5eec706f8728794573f250 100644
--- a/interface/web/designer/lib/lang/de_module_nav_edit.lng
+++ b/interface/web/designer/lib/lang/de_module_nav_edit.lng
@@ -4,3 +4,4 @@ $wb['header_txt'] = 'Navigation Eigenschaften';
 $wb['save_txt'] = 'Speichern';
 $wb['cancel_txt'] = 'Abbrechen';
 ?>
+
diff --git a/interface/web/designer/lib/lang/de_module_nav_item_edit.lng b/interface/web/designer/lib/lang/de_module_nav_item_edit.lng
index 8c0c33c1a6d71681c20266f550f18a4eff17e86d..6353a734709c6d60cd3ba2fc1197ba03af06e102 100644
--- a/interface/web/designer/lib/lang/de_module_nav_item_edit.lng
+++ b/interface/web/designer/lib/lang/de_module_nav_item_edit.lng
@@ -6,3 +6,4 @@ $wb['header_txt'] = 'Navigation Eigenschaften';
 $wb['save_txt'] = 'Speichern';
 $wb['cancel_txt'] = 'Abbrechen';
 ?>
+
diff --git a/interface/web/designer/lib/lang/de_module_show.lng b/interface/web/designer/lib/lang/de_module_show.lng
index f4b2ad11f8a610372f2c5f502abf2d1d41279150..d0c4d4b41357e82264e0aa5bf43388da147b49e2 100644
--- a/interface/web/designer/lib/lang/de_module_show.lng
+++ b/interface/web/designer/lib/lang/de_module_show.lng
@@ -14,3 +14,4 @@ $wb['module_del_txt'] = 'Wollen Sie das Modul und alle im Modul angelegten Datei
 $wb['menu_del_txt'] = 'Wollen Sie das Menü mit allen Untereinträgen löschen?';
 $wb['item_del_txt'] = 'Wollen Sie den Menüeintrag löschen?';
 ?>
+
diff --git a/interface/web/designer/lib/lang/el_form_edit.lng b/interface/web/designer/lib/lang/el_form_edit.lng
index 04ebc02db35408c553afe5003b5b6b5c25e7d218..2c2673a36032a2e4c28c77a51dc3602c235d4614 100644
--- a/interface/web/designer/lib/lang/el_form_edit.lng
+++ b/interface/web/designer/lib/lang/el_form_edit.lng
@@ -16,9 +16,9 @@ $wb['db_history_txt'] = 'Ιστορικό Αναίρεσης';
 $wb['tab_default_txt'] = 'Προεπιλεγμένη Καρτέλα';
 $wb['list_default_txt'] = 'Προεπιλεγμένη Λίστα';
 $wb['auth_txt'] = 'Δικαιώματα';
-$wb['auth_preset_userid_txt'] = 'UserID';
-$wb['auth_preset_groupid_txt'] = 'GroupID';
-$wb['auth_preset_perm_user_txt'] = 'Perm. User';
-$wb['auth_preset_perm_group_txt'] = 'Perm. Group';
-$wb['auth_preset_perm_other_txt'] = 'Perm. Other';
+$wb['auth_preset_userid_txt'] = 'ID Χρήστη';
+$wb['auth_preset_groupid_txt'] = 'ID Ομάδας';
+$wb['auth_preset_perm_user_txt'] = 'Δικαιώμ. Χρήστη';
+$wb['auth_preset_perm_group_txt'] = 'Δικαιώμ. Ομάδας';
+$wb['auth_preset_perm_other_txt'] = 'Δικαιώμ. Άλλων';
 ?>
diff --git a/interface/web/designer/list/empty.dir b/interface/web/designer/list/empty.dir
new file mode 100644
index 0000000000000000000000000000000000000000..95ba9ef37cca69318bcba17e67cd44ae84bd41e1
--- /dev/null
+++ b/interface/web/designer/list/empty.dir
@@ -0,0 +1 @@
+This empty directory is needed by ISPConfig.
diff --git a/interface/web/dns/dns_dkim_edit.php b/interface/web/dns/dns_dkim_edit.php
deleted file mode 100644
index 61b0bd7fb6f290f8c9449b81478ab8fce886422a..0000000000000000000000000000000000000000
--- a/interface/web/dns/dns_dkim_edit.php
+++ /dev/null
@@ -1,142 +0,0 @@
-<?php
-
-/*
-Copyright (c) 2007, Till Brehm, projektfarm Gmbh
-Copyright (c) 2013, Florian Schaal, info@schaal-24.de
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of ISPConfig nor the names of its contributors
-      may be used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/******************************************
-* Begin Form configuration
-******************************************/
-
-$tform_def_file = "form/dns_dkim.tform.php";
-
-/******************************************
-* End Form configuration
-******************************************/
-
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-
-//* Check permissions for module
-$app->auth->check_module_permissions('dns');
-
-// Loading classes
-$app->uses('tpl,tform,tform_actions,validate_dns');
-$app->load('tform_actions');
-
-class page_action extends tform_actions {
-	
-	function onShowNew() {
-		global $app, $conf;
-		// we will check only users, not admins
-		if($_SESSION["s"]["user"]["typ"] == 'user') {
-			
-			// Get the limits of the client
-			$client_group_id = $_SESSION["s"]["user"]["default_group"];
-			$client = $app->db->queryOneRecord("SELECT limit_dns_record FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
-			
-			// Check if the user may add another record.
-			if($client["limit_dns_record"] >= 0) {
-				$tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE sys_groupid = $client_group_id");
-				if($tmp["number"] >= $client["limit_dns_record"]) {
-					$app->error($app->tform->wordbook["limit_dns_record_txt"]);
-				}
-			}
-		}
-
-		parent::onShowNew();
-	}
-
-	function onSubmit() {
-		global $app, $conf;
-		// Get the parent soa record of the domain
-		$soa = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = '".$app->functions->intval($_POST["zone"])."' AND ".$app->tform->getAuthSQL('r'));
-		// Check if Domain belongs to user
-		if($soa["id"] != $_POST["zone"]) $app->tform->errorMessage .= $app->tform->wordbook["no_zone_perm"];
-		
-		// Check the client limits, if user is not the admin
-		if($_SESSION["s"]["user"]["typ"] != 'admin') { // if user is not admin
-			// Get the limits of the client
-			$client_group_id = $_SESSION["s"]["user"]["default_group"];
-			$client = $app->db->queryOneRecord("SELECT limit_dns_record FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
-			// Check if the user may add another record.
-			if($this->id == 0 && $client["limit_dns_record"] >= 0) {
-				$tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_rr WHERE sys_groupid = $client_group_id");
-				if($tmp["number"] >= $client["limit_dns_record"]) {
-					$app->error($app->tform->wordbook["limit_dns_record_txt"]);
-				}
-			}
-		} // end if user is not admin
-		
-		// Set the server ID of the rr record to the same server ID as the parent record.
-		$this->dataRecord["server_id"] = $soa["server_id"];
-		
-		// add dkim-settings to the public-key in the txt-record
-		$this->dataRecord['data']='v=DKIM1; t=s; p='.$this->dataRecord['data'];
-		$this->dataRecord['name']='default._domainkey.'.$this->dataRecord['name'];
-
-		// Update the serial number  and timestamp of the RR record
-		$soa = $app->db->queryOneRecord("SELECT serial FROM dns_rr WHERE id = ".$this->id);
-		$this->dataRecord["serial"] = $app->validate_dns->increase_serial($soa["serial"]);
-		$this->dataRecord["stamp"] = date('Y-m-d H:i:s');
-		
-		// check for duplicate entry
-		$check=$app->db->queryOneRecord("SELECT * FROM dns_rr WHERE zone = ".$this->dataRecord["zone"]." AND type = '".$this->dataRecord["type"]."' AND data ='".$this->dataRecord["data"]."' AND name = '".$this->dataRecord['name']."'");
-		if ($check!='') $app->tform->errorMessage .= $app->tform->wordbook["record_exists_txt"];
-
-		parent::onSubmit();
-	}
-	
-	function onAfterInsert() {
-		global $app, $conf;
-		
-		//* Set the sys_groupid of the rr record to be the same then the sys_groupid of the soa record
-		$soa = $app->db->queryOneRecord("SELECT sys_groupid,serial FROM dns_soa WHERE id = '".$app->functions->intval($this->dataRecord["zone"])."' AND ".$app->tform->getAuthSQL('r'));
-		$app->db->datalogUpdate('dns_rr', "sys_groupid = ".$soa['sys_groupid'], 'id', $this->id);
-
-		//* Update the serial number of the SOA record
-		$soa_id = $app->functions->intval($_POST["zone"]);
-		$serial = $app->validate_dns->increase_serial($soa["serial"]);
-		$app->db->datalogUpdate('dns_soa', "serial = $serial", 'id', $soa_id);
-	}
-	
-	function onAfterUpdate() {
-		global $app, $conf;
-		
-		//* Update the serial number of the SOA record
-		$soa = $app->db->queryOneRecord("SELECT serial FROM dns_soa WHERE id = '".$app->functions->intval($this->dataRecord["zone"])."' AND ".$app->tform->getAuthSQL('r'));
-		$soa_id = $app->functions->intval($_POST["zone"]);
-		$serial = $app->validate_dns->increase_serial($soa["serial"]);
-		$app->db->datalogUpdate('dns_soa', "serial = $serial", 'id', $soa_id);
-	}
-}
-
-$page = new page_action;
-$page->onLoad();
-
-?>
diff --git a/interface/web/dns/dns_dkim_get.php b/interface/web/dns/dns_dkim_get.php
deleted file mode 100644
index 6b8b90b4c2386ee2d3780bd22f34a312693f8a2f..0000000000000000000000000000000000000000
--- a/interface/web/dns/dns_dkim_get.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-/*
-Copyright (c) 2007 - 2013, Till Brehm, projektfarm Gmbh
-Copyright (c) 2013, Florian Schaal, info@schaal-24.de
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of ISPConfig nor the names of its contributors
-      may be used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
-	This script is invoked by interface/web/dns/templates/dns_dkim_edit.htm
-	when generating the DKIM Private-key.
-
-	return DKIM Public-Key for the DNS-record
-*/ 
-
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-
-//* Check permissions for module
-$app->auth->check_module_permissions('dns');
-
-global $app, $conf;
-
-// Loading classes
-$app->uses('tform,tform_actions');
-
-header('Content-Type: text/xml; charset=utf-8');
-header('Cache-Control: must-revalidate, pre-check=0, no-store, no-cache, max-age=0, post-check=0');
-
-/*
-	This function fix PHP's messing up POST input containing characters space, dot, 
-	open square bracket and others to be compatible with with the deprecated register_globals
-*/
-function getRealPOST() {
-    $pairs = explode("&", file_get_contents("php://input"));
-    $vars = array();
-    foreach ($pairs as $pair) {
-        $nv = explode("=", $pair, 2);
-        $name = urldecode($nv[0]);
-        $value = $nv[1];
-        $vars[$name] = $value;
-    }
-    return $vars;
-}
-function pub_key($pubkey) {
-        $public_key='';
-        foreach($pubkey as $values) $public_key=$public_key.$values;
-        return $public_key;
-}
-
-$_POST=getRealPost();
-
-if (ctype_digit($_POST['zone'])) {
-	// Get the parent soa record of the domain
-	$soa = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE id = '".$app->db->quote($_POST['zone'])."' AND ".$app->tform->getAuthSQL('r'));
-
-	$public_key=$app->db->queryOneRecord("SELECT dkim_public FROM mail_domain WHERE domain = '".substr_replace($soa['origin'],'',-1)."' AND ".$app->tform->getAuthSQL('r'));		
-
-	$public_key=pub_key($public_key);
-
-	$public_key=str_replace(array('-----BEGIN PUBLIC KEY-----','-----END PUBLIC KEY-----',"\r","\n"),'',$public_key);
-
-	echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
-	echo "<formatname>\n";
-	echo "<data>".$public_key."</data>\n";
-	echo "<name>".$soa['origin']."</name>\n";
-	echo "</formatname>\n";
-}
-?>
diff --git a/interface/web/dns/dns_wizard.php b/interface/web/dns/dns_wizard.php
index fb73e1a00ef84ace417a6e4bb5bc94cca8d463cd..ad26c431d1eb629debe7bcc413061fde72138669 100644
--- a/interface/web/dns/dns_wizard.php
+++ b/interface/web/dns/dns_wizard.php
@@ -132,6 +132,25 @@ if($_POST['create'] == 1) {
 	
 	$error = '';
 	
+	// apply filters
+	if(isset($_POST['domain']) && $_POST['domain'] != ''){
+		$_POST['domain'] = $app->functions->idn_encode($_POST['domain']);
+		$_POST['domain'] = strtolower($_POST['domain']);
+	}
+	if(isset($_POST['ns1']) && $_POST['ns1'] != ''){
+		$_POST['ns1'] = $app->functions->idn_encode($_POST['ns1']);
+		$_POST['ns1'] = strtolower($_POST['ns1']);
+	}
+	if(isset($_POST['ns2']) && $_POST['ns2'] != ''){
+		$_POST['ns2'] = $app->functions->idn_encode($_POST['ns2']);
+		$_POST['ns2'] = strtolower($_POST['ns2']);
+	}
+	if(isset($_POST['email']) && $_POST['email'] != ''){
+		$_POST['email'] = $app->functions->idn_encode($_POST['email']);
+		$_POST['email'] = strtolower($_POST['email']);
+	}
+	
+	
 	if(isset($_POST['domain']) && $_POST['domain'] == '') $error .= $app->lng('error_domain_empty').'<br />';
 	elseif(isset($_POST['domain']) && !preg_match('/^[\w\.\-]{2,64}\.[a-zA-Z0-9\-]{2,30}$/',$_POST['domain'])) $error .= $app->lng('error_domain_regex').'<br />';
 
@@ -173,20 +192,12 @@ if($_POST['create'] == 1) {
 	$tpl_content = $template_record['template'];
 	if($_POST['domain'] != '') $tpl_content = str_replace('{DOMAIN}',$_POST['domain'],$tpl_content);
 	if($_POST['ip'] != '') $tpl_content = str_replace('{IP}',$_POST['ip'],$tpl_content);
-	if($_POST['ns1'] != '') $tpl_content = str_replace('{NS1}',$_POST['ns1'],$tpl_content);
-	if($_POST['ns2'] != '') $tpl_content = str_replace('{NS2}',$_POST['ns2'],$tpl_content);
-	if($_POST['email'] != '') $tpl_content = str_replace('{EMAIL}',$_POST['email'],$tpl_content);
-	if(isset($_POST['dkim']) && preg_match('/^[\w\.\-\/]{2,255}\.[a-zA-Z0-9\-]{2,30}[\.]{0,1}$/',$_POST['domain'])) {
-		$public_key=$app->db->queryOneRecord("SELECT dkim_public FROM mail_domain WHERE domain = '".$app->db->quote($_POST['domain'])."' AND dkim = 'y' AND ".$app->tform->getAuthSQL('r'));		
-		if ($public_key!='') {
-			$dns_record=str_replace(array("\r\n", "\n", "\r","-----BEGIN PUBLIC KEY-----","-----END PUBLIC KEY-----"),'',$public_key['dkim_public']);
-			$tpl_content = str_replace('{DKIM}','TXT|default._domainkey.'.$_POST['domain'].'.|v=DKIM1; t=s; p='.$dns_record,$tpl_content);
-		} 
-	}
-
-	
-	// Parse the template
-	$tpl_rows = explode("\n",$tpl_content);
+	if($_POST['ns1'] != '') $tpl_content = str_replace('{NS1}',$_POST['ns1'],$tpl_content);
+	if($_POST['ns2'] != '') $tpl_content = str_replace('{NS2}',$_POST['ns2'],$tpl_content);
+	if($_POST['email'] != '') $tpl_content = str_replace('{EMAIL}',$_POST['email'],$tpl_content);
+	
+	// Parse the template
+	$tpl_rows = explode("\n",$tpl_content);
 	$section = '';
 	$vars = array();
 	$dns_rr = array();
@@ -281,7 +292,7 @@ include($lng_file);
 $app->tpl->setVar($wb);
 
 $app->tpl_defaults();
-$app->tpl->pparse();
-
-
-?>
+$app->tpl->pparse();
+
+
+?>
\ No newline at end of file
diff --git a/interface/web/dns/form/dns_dkim.tform.php b/interface/web/dns/form/dns_dkim.tform.php
deleted file mode 100644
index ffeee58bf6366ecff71941414ca45dccb57e9d95..0000000000000000000000000000000000000000
--- a/interface/web/dns/form/dns_dkim.tform.php
+++ /dev/null
@@ -1,154 +0,0 @@
-<?php
-
-/*
-	Form Definition
-
-	Tabledefinition
-
-	Datatypes:
-	- INTEGER (Forces the input to Int)
-	- DOUBLE
-	- CURRENCY (Formats the values to currency notation)
-	- VARCHAR (no format check, maxlength: 255)
-	- TEXT (no format check)
-	- DATE (Dateformat, automatic conversion to timestamps)
-
-	Formtype:
-	- TEXT (Textfield)
-	- TEXTAREA (Textarea)
-	- PASSWORD (Password textfield, input is not shown when edited)
-	- SELECT (Select option field)
-	- RADIO
-	- CHECKBOX
-	- CHECKBOXARRAY
-	- FILE
-
-	VALUE:
-	- Wert oder Array
-
-	Hint:
-	The ID field of the database table is not part of the datafield definition.
-	The ID field must be always auto incement (int or bigint).
-
-
-*/
-global $app;
-
-$form["title"] 			= "DNS DKIM Record";
-$form["description"] 	= "";
-$form["name"] 			= "dns_dkim";
-$form["action"]			= "dns_dkim_edit.php";
-$form["db_table"]		= "dns_rr";
-$form["db_table_idx"]	= "id";
-$form["db_history"]		= "yes";
-$form["tab_default"]	= "dns";
-$form["list_default"]	= "dns_a_list.php";
-$form["auth"]			= 'yes'; // yes / no
-
-$form["auth_preset"]["userid"]  = 0; // 0 = id of the user, > 0 id must match with id of current user
-$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user
-$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete
-$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete
-$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
-
-$form["tabs"]['dns'] = array (
-	'title' 	=> "DNS DKIM",
-	'width' 	=> 100,
-	'template' 	=> "templates/dns_dkim_edit.htm",
-	'fields' 	=> array (
-	##################################
-	# Begin Datatable fields
-	##################################
-		'server_id' => array (
-			'datatype'	=> 'INTEGER',
-			'formtype'	=> 'SELECT',
-			'default'	=> '',
-			'value'		=> '',
-			'width'		=> '30',
-			'maxlength'	=> '255'
-		),
-		'zone' => array (
-			'datatype'	=> 'INTEGER',
-			'formtype'	=> 'TEXT',
-			'default'	=> @$app->functions->intval($_REQUEST["zone"]),
-			'value'		=> '',
-			'width'		=> '30',
-			'maxlength'	=> '255'
-		),
-		'name' => array (
-			'datatype'	=> 'VARCHAR',
-			'formtype'	=> 'TEXT',
-	        'filters'   => array( 0 => array( 'event' => 'SAVE',
-                                              'type' => 'IDNTOASCII'),
-                                  1 => array( 'event' => 'SHOW',
-                                              'type' => 'IDNTOUTF8'),
-                                  2 => array( 'event' => 'SAVE',
-                                              'type' => 'TOLOWER')
-                                ),
-			'validators'	=> array ( 	0 => array (	'type'	=> 'REGEX',
-														'regex' => '/^[\w\.\-]{0,255}$/',
-														'errmsg'=> 'name_error_regex'),
-									),
-			'default'	=> '',
-			'value'		=> '',
-			'width'		=> '30',
-			'maxlength'	=> '255'
-		),
-		'type' => array (
-			'datatype'	=> 'VARCHAR',
-			'formtype'	=> 'TEXT',
-			'default'	=> 'TXT',
-			'value'		=> '',
-			'width'		=> '5',
-			'maxlength'	=> '5'
-		),
-		'data' => array (
-			'datatype'	=> 'VARCHAR',
-			'formtype'	=> 'TEXT',
-			'validators'	=> array ( 	0 => array (	'type'	=> 'NOTEMPTY',
-														'errmsg'=> 'data_error_empty'),
-									),
-			'default'	=> '',
-			'value'		=> '',
-			'width'		=> '30',
-			'maxlength'	=> '255'
-		),
-		'ttl' => array (
-			'datatype'	=> 'INTEGER',
-			'formtype'	=> 'TEXT',
-			'default'	=> '86400',
-			'value'		=> '',
-			'width'		=> '10',
-			'maxlength'	=> '10'
-		),
-		'active' => array (
-			'datatype'	=> 'VARCHAR',
-			'formtype'	=> 'CHECKBOX',
-			'default'	=> 'Y',
-			'value'		=> array(0 => 'N',1 => 'Y')
-		),
-		'stamp' => array (
-			'datatype'	=> 'VARCHAR',
-			'formtype'	=> 'TEXT',
-			'default'	=> '',
-			'value'		=> '',
-			'width'		=> '30',
-			'maxlength'	=> '255'
-		),
-		'serial' => array (
-			'datatype'	=> 'INTEGER',
-			'formtype'	=> 'TEXT',
-			'default'	=> '',
-			'value'		=> '',
-			'width'		=> '10',
-			'maxlength'	=> '10'
-		),
-	##################################
-	# ENDE Datatable fields
-	##################################
-	)
-);
-
-
-
-?>
diff --git a/interface/web/dns/form/dns_rp.tform.php b/interface/web/dns/form/dns_rp.tform.php
index f6a6ef5ee1ab22e736de46e0828e9de437b56377..5a7ff8314a83a3367d5824a9384a7210c3ff8716 100644
--- a/interface/web/dns/form/dns_rp.tform.php
+++ b/interface/web/dns/form/dns_rp.tform.php
@@ -75,16 +75,16 @@ $form["tabs"]['dns'] = array (
 			'width'		=> '30',
 			'maxlength'	=> '255'
 		),
-        'filters'   => array( 0 => array( 'event' => 'SAVE',
+		'name' => array (
+			'datatype'	=> 'VARCHAR',
+			'formtype'	=> 'TEXT',
+			'filters'   => array( 0 => array( 'event' => 'SAVE',
                                           'type' => 'IDNTOASCII'),
                               1 => array( 'event' => 'SHOW',
                                           'type' => 'IDNTOUTF8'),
                               2 => array( 'event' => 'SAVE',
                                           'type' => 'TOLOWER')
                             ),
-		'name' => array (
-			'datatype'	=> 'VARCHAR',
-			'formtype'	=> 'TEXT',
 			'validators'	=> array ( 	0 => array (	'type'	=> 'REGEX',
 														'regex' => '/^[\w\.\-]{0,255}$/',
 														'errmsg'=> 'name_error_regex'),
diff --git a/interface/web/dns/form/dns_template.tform.php b/interface/web/dns/form/dns_template.tform.php
index b676d1a1f169ef515f0f973600c1cd33d9b08239..1f020da04c8e14f106d9a9f22774e9666fcbb0fb 100644
--- a/interface/web/dns/form/dns_template.tform.php
+++ b/interface/web/dns/form/dns_template.tform.php
@@ -71,18 +71,13 @@ $form["tabs"]['template'] = array (
 		),
 		'fields' => array (
 			'datatype'	=> 'VARCHAR',
-			'formtype'	=> 'CHECKBOXARRAY',
-			'default'	=> '',
-			'separator' => ',',
-			'value'		=> array('DOMAIN' => 'Domain','IP' => 'IP Address','NS1' => 'NS 1','NS2' => 'NS 2','EMAIL' => 'Email', 'DKIM' => 'DKIM (use {DKIM}|0|3600 in your Template)'),
-                        'validators'    => array (  0 => array ('type'  => 'CUSTOM',
-                                                                'class' => 'validate_dkim',
-                                                                'function' => 'check_template',
-                                                                'errmsg'=> 'dkim_domain_error'),
-                                                 ),
-		),
-		'template' => array (
-			'datatype'	=> 'TEXT',
+			'formtype'	=> 'CHECKBOXARRAY',
+			'default'	=> '',
+			'separator' => ',',
+			'value'		=> array('DOMAIN' => 'Domain','IP' => 'IP Address','NS1' => 'NS 1','NS2' => 'NS 2','EMAIL' => 'Email')
+		),
+		'template' => array (
+			'datatype'	=> 'TEXT',
 			'formtype'	=> 'TEXTAREA',
 			'default'	=> '',
 			'value'		=> '',
@@ -100,7 +95,7 @@ $form["tabs"]['template'] = array (
 	##################################
 	)
 );
-
-
-
-?>
+
+
+
+?>
\ No newline at end of file
diff --git a/interface/web/dns/lib/lang/cz.lng b/interface/web/dns/lib/lang/cz.lng
index f143b0b92266c5bca8bdd4b931f749cee4012c42..126fb7ab99572360ee459338bb00b0a0ea28536f 100644
--- a/interface/web/dns/lib/lang/cz.lng
+++ b/interface/web/dns/lib/lang/cz.lng
@@ -20,3 +20,4 @@ $wb['Templates'] = 'Å ablony DNS';
 $wb['Secondary Zones'] = 'Sekundární DNS zóny';
 $wb['Import Zone File'] = 'Importovat vybraný DNS zonový soubor';
 ?>
+
diff --git a/interface/web/dns/lib/lang/cz_dns_a.lng b/interface/web/dns/lib/lang/cz_dns_a.lng
index 8b8c206b637752ecbc9b3c0be7107f66107de556..463183620186aa50fcd009563074127a8d17285c 100644
--- a/interface/web/dns/lib/lang/cz_dns_a.lng
+++ b/interface/web/dns/lib/lang/cz_dns_a.lng
@@ -14,3 +14,4 @@ $wb['data_error_empty'] = 'IP adresa je prázdná';
 $wb['data_error_regex'] = 'IP adresa má chybný formát';
 $wb['data_error_duplicate'] = 'Duplikace A záznamu';
 ?>
+
diff --git a/interface/web/dns/lib/lang/cz_dns_a_list.lng b/interface/web/dns/lib/lang/cz_dns_a_list.lng
index a61265a595057b58b5f362f428b572ff99f28b45..2fde7703c8090a356f28dea87fed2d36ca70e266 100644
--- a/interface/web/dns/lib/lang/cz_dns_a_list.lng
+++ b/interface/web/dns/lib/lang/cz_dns_a_list.lng
@@ -13,3 +13,4 @@ $wb['page_txt'] = 'Stránka';
 $wb['page_of_txt'] = 'z';
 $wb['delete_confirmation'] = 'Skutečně chcete smazat tento záznam ?';
 ?>
+
diff --git a/interface/web/dns/lib/lang/cz_dns_aaaa.lng b/interface/web/dns/lib/lang/cz_dns_aaaa.lng
index 26c6ae90640b8ce342ecb74a2107866a700b80da..1936207d70459f8e5b9cb7362eeeb01134ece0f1 100644
--- a/interface/web/dns/lib/lang/cz_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/cz_dns_aaaa.lng
@@ -13,3 +13,4 @@ $wb['name_error_regex'] = 'Hostname má chybný formát.';
 $wb['data_error_empty'] = 'IP adresa je prázdná';
 $wb['data_error_regex'] = 'IP adresa má chybný formát';
 ?>
+
diff --git a/interface/web/dns/lib/lang/cz_dns_alias.lng b/interface/web/dns/lib/lang/cz_dns_alias.lng
index 572478a98b286753a551afcd6f1123516aaa1878..a32def2ae181cf9f8fff0b240be6d05d5f63299a 100644
--- a/interface/web/dns/lib/lang/cz_dns_alias.lng
+++ b/interface/web/dns/lib/lang/cz_dns_alias.lng
@@ -13,3 +13,4 @@ $wb['name_error_regex'] = 'Hostname má chybný formát.';
 $wb['data_error_empty'] = 'Cílový Hostname je prázdný';
 $wb['data_error_regex'] = 'Cílový Hostname má chybný formát';
 ?>
+
diff --git a/interface/web/dns/lib/lang/cz_dns_cname.lng b/interface/web/dns/lib/lang/cz_dns_cname.lng
index 8494b7c293a0c35dff4456020e19a252e53479e1..3a7299a184745434f5e193942178e84c52bab3d1 100644
--- a/interface/web/dns/lib/lang/cz_dns_cname.lng
+++ b/interface/web/dns/lib/lang/cz_dns_cname.lng
@@ -14,3 +14,4 @@ $wb['data_error_empty'] = 'Cílový hostname je prázdný';
 $wb['data_error_regex'] = 'Cílový hostname má chybný formát';
 $wb['data_error_duplicate'] = 'Duplikace A záznamu nebo CNAME-záznamu';
 ?>
+
diff --git a/interface/web/dns/lib/lang/cz_dns_hinfo.lng b/interface/web/dns/lib/lang/cz_dns_hinfo.lng
index 5f67d5e826cc5eef8c92eae607834a856721786f..636600ba225c793dc10fabf84b71ab4a37ca7da8 100644
--- a/interface/web/dns/lib/lang/cz_dns_hinfo.lng
+++ b/interface/web/dns/lib/lang/cz_dns_hinfo.lng
@@ -13,3 +13,4 @@ $wb['name_error_regex'] = 'Hostname má chybný formát.';
 $wb['data_error_empty'] = 'Informace o hostovi je prázdná';
 $wb['data_error_regex'] = 'Informace o hostovi má chybný formát';
 ?>
+
diff --git a/interface/web/dns/lib/lang/cz_dns_import.lng b/interface/web/dns/lib/lang/cz_dns_import.lng
index 8b25ebac2db7ad37089096c62f923bb22042aecc..7c6c887760b64552bd80ab30bcf1653644c8af05 100644
--- a/interface/web/dns/lib/lang/cz_dns_import.lng
+++ b/interface/web/dns/lib/lang/cz_dns_import.lng
@@ -5,10 +5,11 @@ $wb['btn_save_txt'] = 'Importovat vybraný DNS zonový soubor';
 $wb['btn_cancel_txt'] = 'Zrušit';
 $wb['domain_txt'] = 'Doména';
 $wb['zone_file_successfully_imported_txt'] = 'Zónový soubor byl úspěšně importován !';
-$wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
+$wb['error_no_valid_zone_file_txt'] = 'Chyba, neplatný zónový soubor nebo jeho formát !';
 $wb['zonefile_to_import_txt'] = 'Vybrat soubor s DNS zónou ';
 $wb['domain_field_desc_txt'] = 'Může být ponechána nevyplněná, pokud je název domény názvem souboru nebo je v obsahu souboru s DNS zónou.';
 $wb['title'] = 'Importovat soubory zón';
 $wb['no_file_uploaded_error'] = 'Nelze odeslat DNS zonový soubor';
 $wb['zone_file_import_txt'] = 'Importovat vybraný DNS zonový soubor';
 ?>
+
diff --git a/interface/web/dns/lib/lang/cz_dns_mx.lng b/interface/web/dns/lib/lang/cz_dns_mx.lng
index 228d9d6cc6400641711ca38d6f3bde60c64f353e..49c98ead5d4207d5a409a6362c0d5d04309272ee 100644
--- a/interface/web/dns/lib/lang/cz_dns_mx.lng
+++ b/interface/web/dns/lib/lang/cz_dns_mx.lng
@@ -13,5 +13,6 @@ $wb['name_error_empty'] = 'Hostname je prázdný.';
 $wb['name_error_regex'] = 'Hostname má chybný formát.';
 $wb['data_error_empty'] = 'Hostname e-mailového serveru je prázdný';
 $wb['data_error_regex'] = 'Hostname e-mailového serveru má chybný formát';
-$wb['duplicate_mx_record_txt'] = 'Duplicate MX record.';
+$wb['duplicate_mx_record_txt'] = 'Duplicitní MX záznam.';
 ?>
+
diff --git a/interface/web/dns/lib/lang/cz_dns_ns.lng b/interface/web/dns/lib/lang/cz_dns_ns.lng
index ba38e2a65e02170a41d48ac5be7c00381dfeec5b..73f897b683f21b0f7007cb5fd009e14a95d73d80 100644
--- a/interface/web/dns/lib/lang/cz_dns_ns.lng
+++ b/interface/web/dns/lib/lang/cz_dns_ns.lng
@@ -13,3 +13,4 @@ $wb['name_error_regex'] = 'Zóna má chybný formát.';
 $wb['data_error_empty'] = 'Jmenný server je prázdný';
 $wb['data_error_regex'] = 'Jmenný server má chybný formát';
 ?>
+
diff --git a/interface/web/dns/lib/lang/cz_dns_ptr.lng b/interface/web/dns/lib/lang/cz_dns_ptr.lng
index 9617ea58529a1a339700588144c5e6057dfc6471..6124f30d30bf672073e01b8bfc77c0e3b0e9df1b 100644
--- a/interface/web/dns/lib/lang/cz_dns_ptr.lng
+++ b/interface/web/dns/lib/lang/cz_dns_ptr.lng
@@ -13,3 +13,4 @@ $wb['name_error_regex'] = 'Název má chybný formát.';
 $wb['data_error_empty'] = 'Kanonický hostname je prázdný';
 $wb['data_error_regex'] = 'Kanonického hostname má chybný formát';
 ?>
+
diff --git a/interface/web/dns/lib/lang/cz_dns_rp.lng b/interface/web/dns/lib/lang/cz_dns_rp.lng
index 8b1e7e442ebe0e4a71b700f074d043d66dd13b20..10218a77385f96e83d525ccc791d6a9067e2220f 100644
--- a/interface/web/dns/lib/lang/cz_dns_rp.lng
+++ b/interface/web/dns/lib/lang/cz_dns_rp.lng
@@ -13,3 +13,4 @@ $wb['name_error_regex'] = 'Hostname má chybný formát.';
 $wb['data_error_empty'] = 'Odpovědná osoba je prázdná';
 $wb['data_error_regex'] = 'Odpovědná osoba má chybný formát';
 ?>
+
diff --git a/interface/web/dns/lib/lang/cz_dns_slave.lng b/interface/web/dns/lib/lang/cz_dns_slave.lng
index 16617f6c595322dbc5e6479bfd5b47bbe24d6897..2870562a8c4c0cc2f9b1579152bc5aabddfcaf47 100644
--- a/interface/web/dns/lib/lang/cz_dns_slave.lng
+++ b/interface/web/dns/lib/lang/cz_dns_slave.lng
@@ -15,3 +15,4 @@ $wb['eg_domain_tld'] = 'napÅ™. domena.cz';
 $wb['ipv4_form_txt'] = 'IPV4 formát, např. 1.2.3.4';
 $wb['secondary_zone_txt'] = 'Sekundární DNS zóna';
 ?>
+
diff --git a/interface/web/dns/lib/lang/cz_dns_slave_list.lng b/interface/web/dns/lib/lang/cz_dns_slave_list.lng
index 1e0a3d0106fd0c3a654292e116a0a3b120382751..3f801f97b944e3a5ec062d7f9369703247a96503 100644
--- a/interface/web/dns/lib/lang/cz_dns_slave_list.lng
+++ b/interface/web/dns/lib/lang/cz_dns_slave_list.lng
@@ -7,3 +7,4 @@ $wb['ns_txt'] = 'NS';
 $wb['add_new_record_txt'] = 'Přidat sekundární DNS zónu';
 $wb['eg_domain_tld'] = 'napÅ™. domena.cz';
 ?>
+
diff --git a/interface/web/dns/lib/lang/cz_dns_soa.lng b/interface/web/dns/lib/lang/cz_dns_soa.lng
index c98cb6d3bd58a57a5c3e82cc37fbbedd598de164..521ea3cef9f4fbdcc7493f68b1134efea06cc10f 100644
--- a/interface/web/dns/lib/lang/cz_dns_soa.lng
+++ b/interface/web/dns/lib/lang/cz_dns_soa.lng
@@ -36,3 +36,4 @@ $wb['minimum_range_error'] = 'Minimální doba je 60 sekund.';
 $wb['ttl_range_error'] = 'Min. TTL čas je 60 sekund.';
 $wb['xfer_error_regex'] = 'Také oznámí: Prosím, použijte IP adresu.';
 ?>
+
diff --git a/interface/web/dns/lib/lang/cz_dns_soa_list.lng b/interface/web/dns/lib/lang/cz_dns_soa_list.lng
index beba8a22b24da0f51ae36fbfc7d9a98a1e8b63d6..05834d4933bc5544c90935db2091b5a13edc4946 100644
--- a/interface/web/dns/lib/lang/cz_dns_soa_list.lng
+++ b/interface/web/dns/lib/lang/cz_dns_soa_list.lng
@@ -8,3 +8,4 @@ $wb['mbox_txt'] = 'E-mail';
 $wb['add_new_record_txt'] = 'Přidat DNS zónu (SOA záznam)';
 $wb['add_new_record_wizard_txt'] = 'Přidat DNS zónu (dle šablony)';
 ?>
+
diff --git a/interface/web/dns/lib/lang/cz_dns_srv.lng b/interface/web/dns/lib/lang/cz_dns_srv.lng
index 6b6708fc010b637889a28a595d2210b0ba9e3aa9..88b1fc1cbf5dd60cf777a01d8aaa8687affe5973 100644
--- a/interface/web/dns/lib/lang/cz_dns_srv.lng
+++ b/interface/web/dns/lib/lang/cz_dns_srv.lng
@@ -17,3 +17,4 @@ $wb['data_error_regex'] = 'Záznam serveru má chybný formát';
 $wb['srv_error_regex'] = 'Neplatný formát záznamu serveru. Záznam serveru musí­ obsahovat 3 textové řetězce oddělené mezerami.';
 $wb['aux_txt'] = 'Priority';
 ?>
+
diff --git a/interface/web/dns/lib/lang/cz_dns_template.lng b/interface/web/dns/lib/lang/cz_dns_template.lng
index be4ac0e9491d74bd68c6a744791e4efa4bb47c04..82e207a83f6920515d30fe2044662bb3a6519856 100644
--- a/interface/web/dns/lib/lang/cz_dns_template.lng
+++ b/interface/web/dns/lib/lang/cz_dns_template.lng
@@ -4,3 +4,4 @@ $wb['fields_txt'] = 'Pole';
 $wb['template_txt'] = 'Å ablona';
 $wb['visible_txt'] = 'Viditelný';
 ?>
+
diff --git a/interface/web/dns/lib/lang/cz_dns_template_list.lng b/interface/web/dns/lib/lang/cz_dns_template_list.lng
index bdd6e182041668c593f2d0ae5861819babc42a02..10c3fcfabdd0003c855011e37ea1c3b51fb7a5c7 100644
--- a/interface/web/dns/lib/lang/cz_dns_template_list.lng
+++ b/interface/web/dns/lib/lang/cz_dns_template_list.lng
@@ -4,3 +4,4 @@ $wb['visible_txt'] = 'Viditelný';
 $wb['name_txt'] = 'Název';
 $wb['add_new_record_txt'] = 'Přidat záznam';
 ?>
+
diff --git a/interface/web/dns/lib/lang/cz_dns_txt.lng b/interface/web/dns/lib/lang/cz_dns_txt.lng
index 76047b0cebcff637301959197c37e902bf140024..0c07487276eafc9b331101d49309c86bddb2e55a 100644
--- a/interface/web/dns/lib/lang/cz_dns_txt.lng
+++ b/interface/web/dns/lib/lang/cz_dns_txt.lng
@@ -13,3 +13,4 @@ $wb['name_error_regex'] = 'Hostname má chybný formát.';
 $wb['data_error_empty'] = 'Text je prázdný';
 $wb['data_error_regex'] = 'Text má chybný formát';
 ?>
+
diff --git a/interface/web/dns/lib/lang/cz_dns_wizard.lng b/interface/web/dns/lib/lang/cz_dns_wizard.lng
index 1b2e5f76003b4d72883e40f2e9127698a179312b..493d0bc54bcb256faf52456d98b694242d766760 100644
--- a/interface/web/dns/lib/lang/cz_dns_wizard.lng
+++ b/interface/web/dns/lib/lang/cz_dns_wizard.lng
@@ -36,3 +36,4 @@ $wb['globalsearch_suggestions_text_txt'] = 'Návrhy';
 $wb['list_head_txt'] = 'Průvodce vytvořením DNS zóny';
 $wb['list_desc_txt'] = 'Vytvoření DNS zóny pomocí průvodce';
 ?>
+
diff --git a/interface/web/dns/lib/lang/de.lng b/interface/web/dns/lib/lang/de.lng
index 822fcd6a796f3b2a8235a001c972f1ce49c5dcc3..65f6646fc41683b2624a335b1b6fc84c3480f2e5 100644
--- a/interface/web/dns/lib/lang/de.lng
+++ b/interface/web/dns/lib/lang/de.lng
@@ -20,3 +20,4 @@ $wb['Templates'] = 'Vorlagen';
 $wb['Secondary Zones'] = 'Slave DNS-Zonen';
 $wb['Import Zone File'] = 'Zonen-Datei-Import';
 ?>
+
diff --git a/interface/web/dns/lib/lang/de_dns_a.lng b/interface/web/dns/lib/lang/de_dns_a.lng
index 409864981adeff4137bca5b05246537dc86709c4..dd809c39252b0fac6afa7e0a904cf851e8987e50 100644
--- a/interface/web/dns/lib/lang/de_dns_a.lng
+++ b/interface/web/dns/lib/lang/de_dns_a.lng
@@ -14,3 +14,4 @@ $wb['data_error_empty'] = 'IPv4 Adresse ist leer';
 $wb['data_error_regex'] = 'IPv4 Adressen Format ist ungültig';
 $wb['data_error_duplicate'] = 'Doppelter A oder CNAME Eintrag';
 ?>
+
diff --git a/interface/web/dns/lib/lang/de_dns_a_list.lng b/interface/web/dns/lib/lang/de_dns_a_list.lng
index 6e8f19509f5499f16706905b2826b7032464f244..0fc4419925276218afb91af5ef769efce7717268 100644
--- a/interface/web/dns/lib/lang/de_dns_a_list.lng
+++ b/interface/web/dns/lib/lang/de_dns_a_list.lng
@@ -13,3 +13,4 @@ $wb['page_txt'] = 'Seite';
 $wb['page_of_txt'] = 'von';
 $wb['delete_confirmation'] = 'Wollen Sie den Datensatz wirklich löschen?';
 ?>
+
diff --git a/interface/web/dns/lib/lang/de_dns_aaaa.lng b/interface/web/dns/lib/lang/de_dns_aaaa.lng
index 854d623cffc117a580049a32f7f4a4d4eb064d39..c2d0e35f51786ee661cac2e7e2b5bbe788d1d919 100644
--- a/interface/web/dns/lib/lang/de_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/de_dns_aaaa.lng
@@ -13,3 +13,4 @@ $wb['name_error_regex'] = 'Der Hostname hat das falsche Format.';
 $wb['data_error_empty'] = 'IPv6 Adresse ist leer';
 $wb['data_error_regex'] = 'IPv6 Adressen Format ist ungültig';
 ?>
+
diff --git a/interface/web/dns/lib/lang/de_dns_alias.lng b/interface/web/dns/lib/lang/de_dns_alias.lng
index e950909bb28d678b85630999127987076585dfa7..48da14fcfeaf6c03adbcc7b5fffc8126f2071619 100644
--- a/interface/web/dns/lib/lang/de_dns_alias.lng
+++ b/interface/web/dns/lib/lang/de_dns_alias.lng
@@ -13,3 +13,4 @@ $wb['name_error_regex'] = 'Der Hostname hat ein falsches Format.';
 $wb['data_error_empty'] = 'Ziel Hostname ist leer';
 $wb['data_error_regex'] = 'Ziel Hostname Format ist ungültig';
 ?>
+
diff --git a/interface/web/dns/lib/lang/de_dns_cname.lng b/interface/web/dns/lib/lang/de_dns_cname.lng
index a07419485301901d65ae77797a9cb99ba51f9607..48efdef90ad8dfbd88f65451e503dbc6c3327d3d 100644
--- a/interface/web/dns/lib/lang/de_dns_cname.lng
+++ b/interface/web/dns/lib/lang/de_dns_cname.lng
@@ -14,3 +14,4 @@ $wb['data_error_empty'] = 'Ziel Hostname ist leer';
 $wb['data_error_regex'] = 'Ziel Hostname Format ist ungültig';
 $wb['data_error_duplicate'] = 'Doppelter A oder CNAME Eintrag';
 ?>
+
diff --git a/interface/web/dns/lib/lang/de_dns_hinfo.lng b/interface/web/dns/lib/lang/de_dns_hinfo.lng
index 5fb182c982d2eb257406c727724c8667c3f90aba..e0393c6be5243cec10b7df978b63115d7b67d1dd 100644
--- a/interface/web/dns/lib/lang/de_dns_hinfo.lng
+++ b/interface/web/dns/lib/lang/de_dns_hinfo.lng
@@ -13,3 +13,4 @@ $wb['name_error_regex'] = 'Der Hostname hat ein falsches Format.';
 $wb['data_error_empty'] = 'Host Information ist leer';
 $wb['data_error_regex'] = 'Host Information Format ist ungültig';
 ?>
+
diff --git a/interface/web/dns/lib/lang/de_dns_import.lng b/interface/web/dns/lib/lang/de_dns_import.lng
index 183809de666c9fc0a8eeb5425a52d87dfdb10871..e6ca3bb06c2c272c2043c71d9e84340130808432 100644
--- a/interface/web/dns/lib/lang/de_dns_import.lng
+++ b/interface/web/dns/lib/lang/de_dns_import.lng
@@ -12,3 +12,4 @@ $wb['domain_field_desc_txt'] = 'Kann freigelassen werden, falls der Dateiname od
 $wb['title'] = 'Zonen Datei importieren';
 $wb['no_file_uploaded_error'] = 'Keine Datei hochgeladen';
 ?>
+
diff --git a/interface/web/dns/lib/lang/de_dns_mx.lng b/interface/web/dns/lib/lang/de_dns_mx.lng
index 4920806ad523faaf043df0db0b398e54032574dc..63f99c680e02213a75f2c646ae5eaad86507b185 100644
--- a/interface/web/dns/lib/lang/de_dns_mx.lng
+++ b/interface/web/dns/lib/lang/de_dns_mx.lng
@@ -15,3 +15,4 @@ $wb['data_error_empty'] = 'Mailserver Hostname ist leer';
 $wb['data_error_regex'] = 'Mailserver Hostname Format ist ungültig';
 $wb['duplicate_mx_record_txt'] = 'Doppelter MX-Eintrag.';
 ?>
+
diff --git a/interface/web/dns/lib/lang/de_dns_ns.lng b/interface/web/dns/lib/lang/de_dns_ns.lng
index 01662d2f8ac88cfc94ac277814557cf633d2d157..0f61c1693865d5976ad73af20705188dd8b189c1 100644
--- a/interface/web/dns/lib/lang/de_dns_ns.lng
+++ b/interface/web/dns/lib/lang/de_dns_ns.lng
@@ -13,3 +13,4 @@ $wb['name_error_regex'] = 'Die Zone hat ein falsches Format.';
 $wb['data_error_empty'] = 'Nameserver ist leer.';
 $wb['data_error_regex'] = 'Nameserver Format ist ungültig.';
 ?>
+
diff --git a/interface/web/dns/lib/lang/de_dns_ptr.lng b/interface/web/dns/lib/lang/de_dns_ptr.lng
index 020c7a328607e030bbd8bd4b438787da9a601300..5ff80e3221085a7628457d509b4b650bc13c9ea2 100644
--- a/interface/web/dns/lib/lang/de_dns_ptr.lng
+++ b/interface/web/dns/lib/lang/de_dns_ptr.lng
@@ -13,3 +13,4 @@ $wb['name_error_regex'] = 'Der Name hat das falsche Format.';
 $wb['data_error_empty'] = 'Kanonischer Hostname ist leer';
 $wb['data_error_regex'] = 'Kanonischer Hostname Format ist ungültig';
 ?>
+
diff --git a/interface/web/dns/lib/lang/de_dns_rp.lng b/interface/web/dns/lib/lang/de_dns_rp.lng
index 8a398d4830137d78dca23800e754391f8230d9b5..e7cd5285006c296b0ed9827ee94c0cb438074c4b 100644
--- a/interface/web/dns/lib/lang/de_dns_rp.lng
+++ b/interface/web/dns/lib/lang/de_dns_rp.lng
@@ -13,3 +13,4 @@ $wb['name_error_regex'] = 'Der Hostname hat das falsche Format.';
 $wb['data_error_empty'] = 'Kontaktperson Feld leer';
 $wb['data_error_regex'] = 'Kontaktperson Format ungültig';
 ?>
+
diff --git a/interface/web/dns/lib/lang/de_dns_slave.lng b/interface/web/dns/lib/lang/de_dns_slave.lng
index 1b58088317e764ae3b6d92a651bbf14b4819db7b..de3411ffa2df233fa9f40e00fa514befe4e0fa14 100644
--- a/interface/web/dns/lib/lang/de_dns_slave.lng
+++ b/interface/web/dns/lib/lang/de_dns_slave.lng
@@ -15,3 +15,4 @@ $wb['ns_error_regex'] = 'NS hat ein ungültiges Format.';
 $wb['eg_domain_tld'] = 'Format: domain.tld.';
 $wb['ipv4_form_txt'] = 'IPv4 Format: 1.2.3.4';
 ?>
+
diff --git a/interface/web/dns/lib/lang/de_dns_slave_list.lng b/interface/web/dns/lib/lang/de_dns_slave_list.lng
index dc60207d98edfe8012ee69bcf05e225ea7399b76..50b83693e7753d576ed0b8fd87ba02c7d98533f2 100644
--- a/interface/web/dns/lib/lang/de_dns_slave_list.lng
+++ b/interface/web/dns/lib/lang/de_dns_slave_list.lng
@@ -7,3 +7,4 @@ $wb['ns_txt'] = 'NS';
 $wb['add_new_record_txt'] = 'Neue Slave DNS-Zone hinzufügen';
 $wb['eg_domain_tld'] = 'Format: domain.tld.';
 ?>
+
diff --git a/interface/web/dns/lib/lang/de_dns_soa.lng b/interface/web/dns/lib/lang/de_dns_soa.lng
index 8ff7141440fc09737d854b45632aabb15a3e5592..41570e2f094ed49d2fe96556344a8c96a34c9947 100644
--- a/interface/web/dns/lib/lang/de_dns_soa.lng
+++ b/interface/web/dns/lib/lang/de_dns_soa.lng
@@ -36,3 +36,4 @@ $wb['minimum_range_error'] = 'Min. Minimum ist 60 Sekunden.';
 $wb['ttl_range_error'] = 'Min. TTL ist 60 Sekunden.';
 $wb['xfer_error_regex'] = 'Bitte Beachten: Verwenden Sie eine IP Adresse.';
 ?>
+
diff --git a/interface/web/dns/lib/lang/de_dns_soa_list.lng b/interface/web/dns/lib/lang/de_dns_soa_list.lng
index 8281fbd222a8aea74975ea3cf058d63d84e27cc0..a6df1ee4d2c65b7702c0357ed931ad1a4dace033 100644
--- a/interface/web/dns/lib/lang/de_dns_soa_list.lng
+++ b/interface/web/dns/lib/lang/de_dns_soa_list.lng
@@ -8,3 +8,4 @@ $wb['mbox_txt'] = 'E-Mail';
 $wb['add_new_record_txt'] = 'Neue DNS Zone (SOA) hinzufügen';
 $wb['add_new_record_wizard_txt'] = 'Neue DNS Zone per Assistent hinzufügen';
 ?>
+
diff --git a/interface/web/dns/lib/lang/de_dns_srv.lng b/interface/web/dns/lib/lang/de_dns_srv.lng
index 91eba844a24035f1e1c47ff56f50562478c9eca3..7dbeb8e81253357a1afd84494648b0d6b2965221 100644
--- a/interface/web/dns/lib/lang/de_dns_srv.lng
+++ b/interface/web/dns/lib/lang/de_dns_srv.lng
@@ -17,3 +17,4 @@ $wb['data_error_regex'] = 'Servereintrag-Format ungültig';
 $wb['srv_error_regex'] = 'Ungültiges Server Record Format. Der ServerRecord muss 3 Text Strings getrennt durch Leerzeichen beinhalten.';
 $wb['aux_txt'] = 'Priorität';
 ?>
+
diff --git a/interface/web/dns/lib/lang/de_dns_template.lng b/interface/web/dns/lib/lang/de_dns_template.lng
index 33d1090cbaa7f556a9caf3f8e8225c9c6807a80c..77cf996184b6ee4aa9922684e7a292a6a64203ca 100644
--- a/interface/web/dns/lib/lang/de_dns_template.lng
+++ b/interface/web/dns/lib/lang/de_dns_template.lng
@@ -4,3 +4,4 @@ $wb['fields_txt'] = 'Felder';
 $wb['template_txt'] = 'Vorlage';
 $wb['visible_txt'] = 'Sichtbar';
 ?>
+
diff --git a/interface/web/dns/lib/lang/de_dns_template_list.lng b/interface/web/dns/lib/lang/de_dns_template_list.lng
index a0f2d9a7d9e09e96d7ac86ba4b8df178bf6db183..3557292fa3aa9833dc53fe29a1680331093ad710 100644
--- a/interface/web/dns/lib/lang/de_dns_template_list.lng
+++ b/interface/web/dns/lib/lang/de_dns_template_list.lng
@@ -4,3 +4,4 @@ $wb['visible_txt'] = 'Sichtbar';
 $wb['name_txt'] = 'Name';
 $wb['add_new_record_txt'] = 'Neuen Eintrag hinzufügen';
 ?>
+
diff --git a/interface/web/dns/lib/lang/de_dns_txt.lng b/interface/web/dns/lib/lang/de_dns_txt.lng
index c0638679a82dab93afc30d3bfeb12571560988a6..39a5dbfeb9e6c5f3c7b707973ce5885a942039d1 100644
--- a/interface/web/dns/lib/lang/de_dns_txt.lng
+++ b/interface/web/dns/lib/lang/de_dns_txt.lng
@@ -13,3 +13,4 @@ $wb['name_error_regex'] = 'Der Hostname hat das falsche Format.';
 $wb['data_error_empty'] = 'Text ist leer';
 $wb['data_error_regex'] = 'Textformat ungültig';
 ?>
+
diff --git a/interface/web/dns/lib/lang/de_dns_wizard.lng b/interface/web/dns/lib/lang/de_dns_wizard.lng
index bb90167b2c657dcac633eda23bd0447e5017b9ed..3b247b1ce5c6b0f0f2b4ef01646396ac01815b1f 100644
--- a/interface/web/dns/lib/lang/de_dns_wizard.lng
+++ b/interface/web/dns/lib/lang/de_dns_wizard.lng
@@ -36,3 +36,4 @@ $wb['globalsearch_noresults_limit_txt'] = '0 Treffer';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Suche';
 $wb['globalsearch_suggestions_text_txt'] = 'Vorschläge';
 ?>
+
diff --git a/interface/web/dns/lib/lang/el.lng b/interface/web/dns/lib/lang/el.lng
index f76afed784a300b3fefefd12915a1585f93d5568..3b3bfe84a71bc1780273d50169434e3d6b7261de 100644
--- a/interface/web/dns/lib/lang/el.lng
+++ b/interface/web/dns/lib/lang/el.lng
@@ -17,6 +17,6 @@ $wb['DNS TXT'] = 'DNS TXT';
 $wb['DNS Wizard'] = 'Οδηγός DNS';
 $wb['Add DNS Zone'] = 'Νέα ζώνη DNS';
 $wb['Templates'] = 'Πρότυπα';
-$wb['Secondary Zones'] = 'Secondary Zones';
-$wb['Import Zone File'] = 'Import Zone File';
+$wb['Secondary Zones'] = 'Δευτερεύουσες Ζώνες';
+$wb['Import Zone File'] = 'Εισαγωγή Αρχείου Ζώνης';
 ?>
diff --git a/interface/web/dns/lib/lang/el_dns_alias.lng b/interface/web/dns/lib/lang/el_dns_alias.lng
index 9d29354028ec96338b55119c2dff6e0eeb132ff1..2ca9f3b488739a67b63ad3cb0110597359322102 100644
--- a/interface/web/dns/lib/lang/el_dns_alias.lng
+++ b/interface/web/dns/lib/lang/el_dns_alias.lng
@@ -11,5 +11,5 @@ $wb['no_zone_perm'] = 'Δεν έχετε δικαίωμα να προσθέσε
 $wb['name_error_empty'] = 'Το hostname δεν έχει οριστεί';
 $wb['name_error_regex'] = 'Το hostname έχει λάθος μορφοποίηση';
 $wb['data_error_empty'] = 'Το hostname Προορισμός δεν έχει οριστεί';
-$wb['data_error_regex'] = 'Το hostname Προορισμός έχει λάθος μορφοποίηση';
+$wb['data_error_regex'] = 'Το hostname Προορισμός δεν έχει σωστή μορφοποίηση';
 ?>
diff --git a/interface/web/dns/lib/lang/el_dns_hinfo.lng b/interface/web/dns/lib/lang/el_dns_hinfo.lng
index 457213e60fd13ef83ac8a352384ecf3734b1a429..f725ddc8bddfdbe9cd7df8cc7d5025332f7012d6 100644
--- a/interface/web/dns/lib/lang/el_dns_hinfo.lng
+++ b/interface/web/dns/lib/lang/el_dns_hinfo.lng
@@ -11,5 +11,5 @@ $wb['no_zone_perm'] = 'Δεν έχετε δικαίωμα να προσθέσε
 $wb['name_error_empty'] = 'Το hostname δεν έχει οριστεί';
 $wb['name_error_regex'] = 'Το hostname δεν έχει σωστή μορφοποίηση';
 $wb['data_error_empty'] = 'Οι πληροφορίες του Host είναι κενές';
-$wb['data_error_regex'] = 'Οι πληροφορίες Host έχουν μη έγκυρη μορφοποίηση';
+$wb['data_error_regex'] = 'Οι πληροφορίες Host δεν έχουν έγκυρη μορφοποίηση';
 ?>
diff --git a/interface/web/dns/lib/lang/el_dns_import.lng b/interface/web/dns/lib/lang/el_dns_import.lng
index 2d1fe083ea4f8faf5627223d2e50f3e8df38fa21..84608d19509ffe1c16caaf8a4147e8850b77f2bf 100644
--- a/interface/web/dns/lib/lang/el_dns_import.lng
+++ b/interface/web/dns/lib/lang/el_dns_import.lng
@@ -1,14 +1,14 @@
 <?php
 $wb['server_id_txt'] = 'Server';
-$wb['client_txt'] = 'Client';
-$wb['btn_save_txt'] = 'Import Zonefile';
-$wb['btn_cancel_txt'] = 'Cancel';
+$wb['client_txt'] = 'Πελάτης';
+$wb['btn_save_txt'] = 'Εισαγωγή Αρχείου Ζώνης';
+$wb['btn_cancel_txt'] = 'Άκυρο';
 $wb['domain_txt'] = 'Domain';
-$wb['zone_file_successfully_imported_txt'] = 'The zone file has successfully been imported!';
-$wb['error_no_valid_zone_file_txt'] = 'This appears to be no valid zone file!';
-$wb['zonefile_to_import_txt'] = 'Zone File';
-$wb['domain_field_desc_txt'] = 'Can be left empty if domain name is in the filename or the zone-file content.';
-$wb['title'] = 'Import Zone Files';
-$wb['no_file_uploaded_error'] = 'No zonefile uploaded';
-$wb['zone_file_import_txt'] = 'Zone File Import';
+$wb['zone_file_successfully_imported_txt'] = 'Το αρχείο ζώνης έχει εισαχθεί με επιτυχία!';
+$wb['error_no_valid_zone_file_txt'] = 'Φαίνεται ότι το αρχείο ζώνης δεν είναι έγκυρο!';
+$wb['zonefile_to_import_txt'] = 'Αρχείο Ζώνης';
+$wb['domain_field_desc_txt'] = 'Μπορεί να μείνει κενό αν το όνομα domain είναι στο όνομα αρχείου λη στα περιεχόμενά του.';
+$wb['title'] = 'Εισαγωγή Αρχείων Ζώνης';
+$wb['no_file_uploaded_error'] = 'Δεν μεταφορτώθηκε αρχείο ζώνης';
+$wb['zone_file_import_txt'] = 'Εισαγωγή Αρχείου Ζώνης';
 ?>
diff --git a/interface/web/dns/lib/lang/el_dns_mx.lng b/interface/web/dns/lib/lang/el_dns_mx.lng
index 37c967bda47909331a6ae0c98ed4158932a51c77..4e779c47ef09063f4ec96bf148bce754b9e24f18 100644
--- a/interface/web/dns/lib/lang/el_dns_mx.lng
+++ b/interface/web/dns/lib/lang/el_dns_mx.lng
@@ -13,5 +13,5 @@ $wb['name_error_empty'] = 'Το hostname δεν έχει οριστεί.';
 $wb['name_error_regex'] = 'Το hostname δεν έχει σωστή μορφοποίηση.';
 $wb['data_error_empty'] = 'Το hostname Mailserver δεν έχει οριστεί';
 $wb['data_error_regex'] = 'Mailserver hostname με μη έγκυρη μορφοποίηση';
-$wb['duplicate_mx_record_txt'] = 'Duplicate MX record.';
+$wb['duplicate_mx_record_txt'] = 'Διπλοεγγραφή MX.';
 ?>
diff --git a/interface/web/dns/lib/lang/el_dns_slave.lng b/interface/web/dns/lib/lang/el_dns_slave.lng
index 64db9755e8e072f6b609c1fc03d4f185ea0d37bd..979c4668f28df8f01ecd22260087fbc0d9111eaf 100644
--- a/interface/web/dns/lib/lang/el_dns_slave.lng
+++ b/interface/web/dns/lib/lang/el_dns_slave.lng
@@ -13,5 +13,5 @@ $wb['origin_error_regex'] = 'Η ζώνη δεν έχει έγκυρη μορφο
 $wb['ns_error_regex'] = 'Ο NS δεν έχει έγκυρη μορφοποίηση.';
 $wb['eg_domain_tld'] = 'π.χ. domain.tld.';
 $wb['ipv4_form_txt'] = 'μορφή IPv4 - π.χ. 1.2.3.4';
-$wb['secondary_zone_txt'] = 'Secondary DNS Zone';
+$wb['secondary_zone_txt'] = 'Δευτερεύουσα Ζώνη DNS';
 ?>
diff --git a/interface/web/dns/lib/lang/el_dns_soa.lng b/interface/web/dns/lib/lang/el_dns_soa.lng
index 87d5fc7ec53a81e6b611eac32f78cf2d3421d7a1..045270a366e3e8fc7f153e43d56636292f756a18 100644
--- a/interface/web/dns/lib/lang/el_dns_soa.lng
+++ b/interface/web/dns/lib/lang/el_dns_soa.lng
@@ -28,11 +28,11 @@ $wb['seconds_txt'] = 'Δευτερόλεπτα';
 $wb['eg_domain_tld'] = 'π.χ. domain.tld';
 $wb['eg_ns1_domain_tld'] = 'π.χ. ns1.domain.tld';
 $wb['eg_webmaster_domain_tld'] = 'π.χ. webmaster@domain.tld';
-$wb['The Domain can not be changed. Please ask your Administrator if you want to change the domain name.'] = 'The Domain can not be changed. Please ask your Administrator if you want to change the domain name.';
-$wb['refresh_range_error'] = 'Min. Refresh time is 60 seconds.';
-$wb['retry_range_error'] = 'Min. Retry time is 60 seconds.';
-$wb['expire_range_error'] = 'Min. Expire time is 60 seconds.';
-$wb['minimum_range_error'] = 'Min. Minimum time is 60 seconds.';
-$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
-$wb['xfer_error_regex'] = 'Also notify: Please use an IP address.';
+$wb['The Domain can not be changed. Please ask your Administrator if you want to change the domain name.'] = 'Το Domain Δεν μπορεί να αλλαχθεί. Παρακαλούμε επικοινωνήστε με τον Διαχειριστή σας αν θέλετε να γίνει η αλλαγή του ονόματος.';
+$wb['refresh_range_error'] = 'Ελάχιστος χρόνος Ανανέωσης είναι τα 60 δευτερόλεπτα.';
+$wb['retry_range_error'] = 'Ελάχιστος χρόνος Επανάληψης είναι τα 60 δευτερόλεπτα.';
+$wb['expire_range_error'] = 'Ελάχιστος χρόνος Λήξης είναι τα 60 δευτερόλεπτα.';
+$wb['minimum_range_error'] = 'Ελάχιστος χρόνος Ελαχίστου είναι τα 60 δευτερόλεπτα.';
+$wb['ttl_range_error'] = 'Ελάχιστος χρόνος TTL είναι τα 60 δευτερόλεπτα.';
+$wb['xfer_error_regex'] = 'Επιπλέον Ειδοποίηση: Παρακαλούμε χρησιμοποιείστε μια διεύθυσνη IP.';
 ?>
diff --git a/interface/web/dns/lib/lang/el_dns_srv.lng b/interface/web/dns/lib/lang/el_dns_srv.lng
index 4452d6bfc4039992c6fa7ecfd6365f4da47477c4..53dc3dd2d749eede0ca463f776d1007152e50ef0 100644
--- a/interface/web/dns/lib/lang/el_dns_srv.lng
+++ b/interface/web/dns/lib/lang/el_dns_srv.lng
@@ -1,19 +1,19 @@
 <?php
 $wb['server_id_txt'] = 'Server';
-$wb['zone_txt'] = 'Ζώνη';
+$wb['zone_txt'] = 'Ζώνη';
 $wb['name_txt'] = 'Hostname';
-$wb['type_txt'] = 'τ�πος';
-$wb['target_txt'] = 'Target';
-$wb['weight_txt'] = 'Weight';
-$wb['port_txt'] = 'Port';
+$wb['type_txt'] = 'τύπος';
+$wb['target_txt'] = 'Στόχος';
+$wb['weight_txt'] = 'Βάρος';
+$wb['port_txt'] = 'Θύρα';
 $wb['ttl_txt'] = 'TTL';
-$wb['active_txt'] = 'Ενε�γή';
-$wb['aux_txt'] = 'Π�οτε�αιότητα';
-$wb['limit_dns_record_txt'] = 'Έχετε φτάσει το μέγιστο πλήθος των εγγ�αφών DNS για τον λογα�ιασμό σας.';
-$wb['no_zone_perm'] = 'Δεν έχετε δικαίωμα να π�οσθέσετε εγγ�αφές σε αυτή τη ζώνη.';
-$wb['name_error_empty'] = 'Το hostname δεν έχει ο�ιστεί.';
-$wb['name_error_regex'] = 'Το hostname δεν έχει σωστή μο�φοποίηση.';
-$wb['data_error_empty'] = 'Η εγγ�αφή Server είναι κενή';
-$wb['data_error_regex'] = 'Εγγ�αφή  Server με μη έγκυ�η μο�φοποίηση';
-$wb['srv_error_regex'] = 'Εγγ�αφή  Server με μη έγκυ�η μο�φοποίηση. Η εγγ�αφή Server π�έπει να πε�ιέχει 3 λέξεις χω�ισμένες με κενά.';
+$wb['active_txt'] = 'Ενεργή';
+$wb['aux_txt'] = 'Προτερεότητα';
+$wb['limit_dns_record_txt'] = 'Έχετε φτάσει στο μέγιστο πλήθος εγγραφών DNS για τον λογιαριασμό σας.';
+$wb['no_zone_perm'] = 'Δεν έχετε δικαίωμα να προσθέσετε εγγραφές σε αυτή την ζώνη DNS.';
+$wb['name_error_empty'] = 'Το hostname είναι άδειο.';
+$wb['name_error_regex'] = 'Το hostname δεν έχει έγκυρη μορφοποίηση.';
+$wb['data_error_empty'] = 'Άδεια εγγραφή Server';
+$wb['data_error_regex'] = 'Η εγγραφή Server δεν έχει έγκυρη μορφοποίηση';
+$wb['srv_error_regex'] = 'Μη έγκυρη μορφοποίηση εγγραφής Server. Η εγγραφή Server πρέπει να περιέχει 3 κομμάτια χαρακτήρων χωρισμένα με κενά.';
 ?>
diff --git a/interface/web/dns/lib/lang/el_dns_wizard.lng b/interface/web/dns/lib/lang/el_dns_wizard.lng
index 764e4fafa5a495a12c0417f1beda3fa4ab976da6..0c59b252fc0d97b39fd50ca82b0fe3484e3849e7 100644
--- a/interface/web/dns/lib/lang/el_dns_wizard.lng
+++ b/interface/web/dns/lib/lang/el_dns_wizard.lng
@@ -26,13 +26,13 @@ $wb['error_domain_regex'] = 'Το Domain περιέχει μη επιτρεπό
 $wb['error_ns1_regex'] = 'Ο NS1 περιέχει μη επιτρεπόμενους χαρακτήρες';
 $wb['error_ns2_regex'] = 'Ο NS2 περιέχει μη επιτρεπόμενους χαρακτήρες';
 $wb['error_email_regex'] = 'Το Email δεν περιέχει μια έγκυρη διεύθυνση.';
-$wb['dns_zone_txt'] = 'DNS Zone';
-$wb['globalsearch_resultslimit_of_txt'] = 'of';
-$wb['globalsearch_resultslimit_results_txt'] = 'results';
-$wb['globalsearch_noresults_text_txt'] = 'No results.';
-$wb['globalsearch_noresults_limit_txt'] = '0 results';
-$wb['globalsearch_searchfield_watermark_txt'] = 'Search';
-$wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
-$wb['list_head_txt'] = 'DNS Zone Wizard';
-$wb['list_desc_txt'] = 'Create a DNS Zone via a wizard';
+$wb['dns_zone_txt'] = 'Ζώνη DNS';
+$wb['globalsearch_resultslimit_of_txt'] = 'από';
+$wb['globalsearch_resultslimit_results_txt'] = 'αποτελέσματα';
+$wb['globalsearch_noresults_text_txt'] = 'Δεν υπάρχουν αποτελέσματα.';
+$wb['globalsearch_noresults_limit_txt'] = '0 αποτελέσματα';
+$wb['globalsearch_searchfield_watermark_txt'] = 'Αναζήτηση';
+$wb['globalsearch_suggestions_text_txt'] = 'Προτάσεις';
+$wb['list_head_txt'] = 'Οδηγός Ζώνης DNS';
+$wb['list_desc_txt'] = 'Δημιουργία Ζώνης DNS Zone μέσω Οδηγού';
 ?>
diff --git a/interface/web/dns/lib/lang/en_dns_dkim.lng b/interface/web/dns/lib/lang/en_dns_dkim.lng
deleted file mode 100644
index 526257e909b508c4cb844cc9252acb5fe412bb0a..0000000000000000000000000000000000000000
--- a/interface/web/dns/lib/lang/en_dns_dkim.lng
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-$wb["public_key_txt"] = 'Public-Key';
-$wb["ttl_txt"] = 'TTL';
-$wb["active_txt"] = 'Active';
-$wb["record_exists_txt"] = 'DNS-Record already exists';
-$wb["limit_dns_record_txt"] = 'The max. number of DNS records for your account is reached.';
-$wb["no_zone_perm"] = 'You do not have the permission to add a record to this DNS zone.';
-?>
diff --git a/interface/web/dns/lib/lang/en_dns_wizard.lng b/interface/web/dns/lib/lang/en_dns_wizard.lng
index 8759159a827ad73c46cd84ec2b5ef097471f50b8..f7057b45c7950fb645d698fb7285a0669b1185d5 100644
--- a/interface/web/dns/lib/lang/en_dns_wizard.lng
+++ b/interface/web/dns/lib/lang/en_dns_wizard.lng
@@ -6,13 +6,12 @@ $wb['template_id_txt'] = 'Template';
 $wb['server_id_txt'] = 'Server';
 $wb['client_txt'] = 'Client';
 $wb["btn_save_txt"] = 'Create DNS-Record';
-$wb["btn_cancel_txt"] = 'Cancel';
-$wb['domain_txt'] = 'Domain';
-$wb['email_txt'] = 'Email';
-$wb['dkim_txt'] = 'DKIM enabled';
-$wb['ns1_txt'] = 'NS 1';
-$wb['ns2_txt'] = 'NS 2';
-$wb['ip_txt'] = 'IP Address';
+$wb["btn_cancel_txt"] = 'Cancel';
+$wb['domain_txt'] = 'Domain';
+$wb['email_txt'] = 'Email';
+$wb['ns1_txt'] = 'NS 1';
+$wb['ns2_txt'] = 'NS 2';
+$wb['ip_txt'] = 'IP Address';
 $wb['error_origin_empty'] = 'Origin empty.';
 $wb['error_ns_empty'] = 'NS empty.';
 $wb['error_mbox_empty'] = 'Mbox empty.';
@@ -33,7 +32,7 @@ $wb['error_email_regex'] = 'Email does not contain a valid email address.';
 $wb['globalsearch_resultslimit_of_txt'] = "of";
 $wb['globalsearch_resultslimit_results_txt'] = "results";
 $wb['globalsearch_noresults_text_txt'] = "No results.";
-$wb['globalsearch_noresults_limit_txt'] = "0 results";
-$wb['globalsearch_searchfield_watermark_txt'] = "Search";
-$wb['globalsearch_suggestions_text_txt'] = "Suggestions";
-?>
+$wb['globalsearch_noresults_limit_txt'] = "0 results";
+$wb['globalsearch_searchfield_watermark_txt'] = "Search";
+$wb['globalsearch_suggestions_text_txt'] = "Suggestions";
+?>
\ No newline at end of file
diff --git a/interface/web/dns/templates/dns_a_list.htm b/interface/web/dns/templates/dns_a_list.htm
index 06c3f941e5ab6650fb5b83b5b3c937bd20358904..549f0c345a016ba06babe2f4d5ac8ea0a2cef0f6 100644
--- a/interface/web/dns/templates/dns_a_list.htm
+++ b/interface/web/dns/templates/dns_a_list.htm
@@ -18,13 +18,12 @@
     <fieldset><legend>{tmpl_var name="toolsarea_head_txt"}</legend>
         <div class="buttons topbuttons">
             <button class="button iconstxt icoAdd" type="button" onclick="loadContent('dns/dns_a_edit.php?zone={tmpl_var name='parent_id'}');"><span>A</span></button>
-            <button class="button iconstxt icoAdd" type="button" onclick="loadContent('dns/dns_aaaa_edit.php?zone={tmpl_var name='parent_id'}');"><span>AAAA</span></button>
-            <button class="button iconstxt icoAdd" type="button" onclick="loadContent('dns/dns_alias_edit.php?zone={tmpl_var name='parent_id'}');"><span>ALIAS</span></button>
-            <button class="button iconstxt icoAdd" type="button" onclick="loadContent('dns/dns_cname_edit.php?zone={tmpl_var name='parent_id'}');"><span>CNAME</span></button>
-            <button class="button iconstxt icoAdd" type="button" onclick="loadContent('dns/dns_dkim_edit.php?zone={tmpl_var name='parent_id'}');"><span>DKIM</span></button>
-            <button class="button iconstxt icoAdd" type="button" onclick="loadContent('dns/dns_hinfo_edit.php?zone={tmpl_var name='parent_id'}');"><span>HINFO</span></button>
-            <button class="button iconstxt icoAdd" type="button" onclick="loadContent('dns/dns_mx_edit.php?zone={tmpl_var name='parent_id'}');"><span>MX</span></button>
-            <button class="button iconstxt icoAdd" type="button" onclick="loadContent('dns/dns_ns_edit.php?zone={tmpl_var name='parent_id'}');"><span>NS</span></button>
+            <button class="button iconstxt icoAdd" type="button" onclick="loadContent('dns/dns_aaaa_edit.php?zone={tmpl_var name='parent_id'}');"><span>AAAA</span></button>
+            <button class="button iconstxt icoAdd" type="button" onclick="loadContent('dns/dns_alias_edit.php?zone={tmpl_var name='parent_id'}');"><span>ALIAS</span></button>
+            <button class="button iconstxt icoAdd" type="button" onclick="loadContent('dns/dns_cname_edit.php?zone={tmpl_var name='parent_id'}');"><span>CNAME</span></button>
+            <button class="button iconstxt icoAdd" type="button" onclick="loadContent('dns/dns_hinfo_edit.php?zone={tmpl_var name='parent_id'}');"><span>HINFO</span></button>
+            <button class="button iconstxt icoAdd" type="button" onclick="loadContent('dns/dns_mx_edit.php?zone={tmpl_var name='parent_id'}');"><span>MX</span></button>
+            <button class="button iconstxt icoAdd" type="button" onclick="loadContent('dns/dns_ns_edit.php?zone={tmpl_var name='parent_id'}');"><span>NS</span></button>
             <button class="button iconstxt icoAdd" type="button" onclick="loadContent('dns/dns_ptr_edit.php?zone={tmpl_var name='parent_id'}');"><span>PTR</span></button>
             <button class="button iconstxt icoAdd" type="button" onclick="loadContent('dns/dns_rp_edit.php?zone={tmpl_var name='parent_id'}');"><span>RP</span></button>
             <button class="button iconstxt icoAdd" type="button" onclick="loadContent('dns/dns_srv_edit.php?zone={tmpl_var name='parent_id'}');"><span>SRV</span></button>
diff --git a/interface/web/dns/templates/dns_dkim_edit.htm b/interface/web/dns/templates/dns_dkim_edit.htm
deleted file mode 100644
index cbf8db941a11a6a534bd5b54c47b40852bef07f3..0000000000000000000000000000000000000000
--- a/interface/web/dns/templates/dns_dkim_edit.htm
+++ /dev/null
@@ -1,38 +0,0 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_dns_txt">
-    <div class="pnl_formsarea">
-        <fieldset class="inlineLabels">
-              <div class="ctrlHolder">
-                <label for="data">{tmpl_var name='public_key_txt'}</label>
-                <textarea name="data" id="data" readonly>{tmpl_var name='public_key'}</textarea>
-              </div>
-            <div class="ctrlHolder">
-                <label for="ttl">{tmpl_var name='ttl_txt'}</label>
-                <input name="ttl" id="ttl" value="{tmpl_var name='ttl'}" size="10" maxlength="10" type="text" class="textInput" />
-            </div>
-
-            <div class="ctrlHolder">
-                <p class="label">{tmpl_var name='active_txt'}</p>
-                <div class="multiField">
-                    {tmpl_var name='active'}
-                </div>
-            </div>
-        </fieldset>
-            
-        <input type="hidden" name="id" value="{tmpl_var name='id'}">
-        <input type="hidden" name="zone" value="{tmpl_var name='zone'}" id="zone">
-        <input type="hidden" name="type" value="{tmpl_var name='type'}">
-        <input type="hidden" name="name" value="{tmpl_var name='name'}">
-            </div>
-            
-        <div class="buttonHolder buttons">
-            <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onclick="submitForm('pageForm','dns/dns_dkim_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
-            <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onclick="loadContent('dns/dns_soa_edit.php?id={tmpl_var name='zone'}');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
-        </div>
-    </div>
-  
-</div>
-<script language="JavaScript" type="text/javascript" src="js/dns_dkim.js"></script>
-
diff --git a/interface/web/dns/templates/dns_wizard.htm b/interface/web/dns/templates/dns_wizard.htm
index 81eb265a1470d0e3b516ae9aceee98005c17255a..849c5b4e15fdf8a0306bd228bcb3f9374630092c 100644
--- a/interface/web/dns/templates/dns_wizard.htm
+++ b/interface/web/dns/templates/dns_wizard.htm
@@ -64,17 +64,12 @@
             <tmpl_if name="EMAIL_VISIBLE">
                 <div class="ctrlHolder">
                     <label for="email">{tmpl_var name='email_txt'}</label>
-                    <input name="email" id="email" value="{tmpl_var name='email'}" size="30" maxlength="255" type="text" class="textInput" />
-                </div>
-            </tmpl_if>
-            <tmpl_if name="DKIM_VISIBLE">
-		    <label for="dkim">{tmpl_var name='dkim_txt'}</label>
-                    <input name="dkim" type="hidden" maxlength="255" type="text"/>
-            </tmpl_if>
-
-        </fieldset>
-            
-        <input type="hidden" name="create" value="0" />
+                    <input name="email" id="email" value="{tmpl_var name='email'}" size="30" maxlength="255" type="text" class="textInput" />
+                </div>
+            </tmpl_if>
+        </fieldset>
+            
+        <input type="hidden" name="create" value="0" />
             
         <div class="buttonHolder buttons">
             <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" name="btn_create" onclick="document.pageForm.create.value=1; submitForm('pageForm','dns/dns_wizard.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
diff --git a/interface/web/help/lib/lang/cz.lng b/interface/web/help/lib/lang/cz.lng
index 18f8f210b70ab3d2c7835b41a508e44a99a6d319..95efe025d24ad7ced2fe795a0a2521d03ea18aed 100644
--- a/interface/web/help/lib/lang/cz.lng
+++ b/interface/web/help/lib/lang/cz.lng
@@ -12,3 +12,4 @@ $wb['Manage Sections'] = 'Spravovat sekce';
 $wb['Manage Questions'] = 'Spravovat dotazy';
 $wb['Add a Question & Answer Pair'] = 'Přidat otázku a odpověď';
 ?>
+
diff --git a/interface/web/help/lib/lang/cz_faq_form.lng b/interface/web/help/lib/lang/cz_faq_form.lng
index 73feee6955ca1ea13de8f949cc9d7b2a260a4703..c71ddfa9ac1a3df5b4c61b2d122126984a56b808 100644
--- a/interface/web/help/lib/lang/cz_faq_form.lng
+++ b/interface/web/help/lib/lang/cz_faq_form.lng
@@ -4,3 +4,4 @@ $wb['faq_question_txt'] = 'Otázka';
 $wb['faq_answer_txt'] = 'Odpověď';
 $wb['faq_section_txt'] = 'Sekce';
 ?>
+
diff --git a/interface/web/help/lib/lang/cz_faq_manage_questions_list.lng b/interface/web/help/lib/lang/cz_faq_manage_questions_list.lng
index a9488445ca9a6872e55e18b39be996dab5c82760..7a4a2fd3ad5c5a7021243db8c5fdcb12463e1014 100644
--- a/interface/web/help/lib/lang/cz_faq_manage_questions_list.lng
+++ b/interface/web/help/lib/lang/cz_faq_manage_questions_list.lng
@@ -7,3 +7,4 @@ $wb['faq_sections_txt'] = 'Sekce';
 $wb['faq_faq_questions_txt'] = 'Často kladené dotazy';
 $wb['faq_new_question_txt'] = 'Přidat nový dotaz';
 ?>
+
diff --git a/interface/web/help/lib/lang/cz_help_faq_list.lng b/interface/web/help/lib/lang/cz_help_faq_list.lng
index b6c7b460b9ecab5767e64a0b73350772e5a7027b..0dcf23b3baa35e34b4fcd00d8ba34db558f3152f 100644
--- a/interface/web/help/lib/lang/cz_help_faq_list.lng
+++ b/interface/web/help/lib/lang/cz_help_faq_list.lng
@@ -1,3 +1,4 @@
 <?php
-$wb['edit_txt'] = 'Edit';
+$wb['edit_txt'] = 'Upravit';
 ?>
+
diff --git a/interface/web/help/lib/lang/cz_help_faq_sections_list.lng b/interface/web/help/lib/lang/cz_help_faq_sections_list.lng
index 967b0abfcd017a69309c088df9d07e6ea9ea2395..596a9ef69b359fc1a9a78dd318dbc574fb0c3530 100644
--- a/interface/web/help/lib/lang/cz_help_faq_sections_list.lng
+++ b/interface/web/help/lib/lang/cz_help_faq_sections_list.lng
@@ -6,3 +6,4 @@ $wb['faq_sections_txt'] = 'Sekce';
 $wb['faq_faq_sections_txt'] = 'Sekce FAQ';
 $wb['faq_new_section_txt'] = 'Přidat novou sekci';
 ?>
+
diff --git a/interface/web/help/lib/lang/cz_support_message.lng b/interface/web/help/lib/lang/cz_support_message.lng
index a6afd5adb5c44827e8717226ff17e9e20b8b1725..1d06da314e9d43d413748edf24e86c8d3078d391 100644
--- a/interface/web/help/lib/lang/cz_support_message.lng
+++ b/interface/web/help/lib/lang/cz_support_message.lng
@@ -5,11 +5,12 @@ $wb['subject_txt'] = 'Předmět';
 $wb['message_txt'] = 'Zpráva';
 $wb['tstamp_txt'] = 'Časové razítko';
 $wb['reply_txt'] = 'Odpovědět';
-$wb['date_txt'] = 'Date';
-$wb['support_request_subject_txt'] = 'Support Request';
+$wb['date_txt'] = 'Datum';
+$wb['support_request_subject_txt'] = 'Žádost o podporu';
 $wb['support_request_txt'] = 'You have got a support request. Please don\'t reply to this email, but process the support request inside ISPConfig.';
 $wb['answer_to_support_request_txt'] = 'You have got a reply to your support request. Please don\'t reply to this email, but process the message inside ISPConfig.';
 $wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request has been sent. Please don\'t reply to this email.';
 $wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.';
-$wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.';
+$wb['recipient_or_sender_email_address_not_valid_txt'] = 'Zprávu nelze odeslat, protože e-mailová adresa příjemce a/nebo odesílatele není platná.';
 ?>
+
diff --git a/interface/web/help/lib/lang/cz_support_message_list.lng b/interface/web/help/lib/lang/cz_support_message_list.lng
index c4c43eb8728aee1c59ca73980bba6642aa209aca..f31449c9ceccc1d3a3a2d4c98fa2eee19d8d7cb7 100644
--- a/interface/web/help/lib/lang/cz_support_message_list.lng
+++ b/interface/web/help/lib/lang/cz_support_message_list.lng
@@ -3,5 +3,6 @@ $wb['list_head_txt'] = 'Zprávy pro podporu';
 $wb['sender_id_txt'] = 'Odesílatel';
 $wb['subject_txt'] = 'Předmět';
 $wb['add_new_record_txt'] = 'Vytvořit zprávu pro podporu';
-$wb['date_txt'] = 'Date';
+$wb['date_txt'] = 'Datum';
 ?>
+
diff --git a/interface/web/help/lib/lang/de.lng b/interface/web/help/lib/lang/de.lng
index f9deb2066c37de8cbbde3386ee82a1837630b41e..606b4f039929b59c9e7cb22976314ee89f480192 100644
--- a/interface/web/help/lib/lang/de.lng
+++ b/interface/web/help/lib/lang/de.lng
@@ -12,3 +12,4 @@ $wb['Manage Sections'] = 'Kategorien verwalten';
 $wb['Add a Question & Answer Pair'] = 'Neues Frage/Antwort Paar hinzufügen';
 $wb['Manage Questions'] = 'Fragen verwalten';
 ?>
+
diff --git a/interface/web/help/lib/lang/de_faq_form.lng b/interface/web/help/lib/lang/de_faq_form.lng
index 35042fa128bbdccb523084d0b2c274705cb7c53c..90c6a443790fc4901ce97b5c9fd7289640447416 100644
--- a/interface/web/help/lib/lang/de_faq_form.lng
+++ b/interface/web/help/lib/lang/de_faq_form.lng
@@ -4,3 +4,4 @@ $wb['faq_question_txt'] = 'Frage';
 $wb['faq_answer_txt'] = 'Antwort';
 $wb['faq_section_txt'] = 'Kategorie';
 ?>
+
diff --git a/interface/web/help/lib/lang/de_faq_manage_questions_list.lng b/interface/web/help/lib/lang/de_faq_manage_questions_list.lng
index b47a6958904f57936ef3c6f44ad5c0674199569a..f3be08c85c6f77d98b12d6453af9ffb435455fd2 100644
--- a/interface/web/help/lib/lang/de_faq_manage_questions_list.lng
+++ b/interface/web/help/lib/lang/de_faq_manage_questions_list.lng
@@ -7,3 +7,4 @@ $wb['faq_sections_txt'] = 'Kategorie';
 $wb['faq_faq_questions_txt'] = 'Frequently Asked Questions';
 $wb['faq_new_question_txt'] = 'Neues Frage/Antwort Paar hinzufügen';
 ?>
+
diff --git a/interface/web/help/lib/lang/de_faq_sections_form.lng b/interface/web/help/lib/lang/de_faq_sections_form.lng
index 873dab2c1953d832c805d30b8e085f1a11d66aca..f9f7cd422504a349dde72f14fc271e143c47fb9b 100644
--- a/interface/web/help/lib/lang/de_faq_sections_form.lng
+++ b/interface/web/help/lib/lang/de_faq_sections_form.lng
@@ -1,3 +1,4 @@
 <?php
 $wb['faq_section_name_txt'] = 'Kategorie Name';
 ?>
+
diff --git a/interface/web/help/lib/lang/de_help_faq_list.lng b/interface/web/help/lib/lang/de_help_faq_list.lng
index 3a240f403570cb96ef8caa7bc27203630f192d4c..66fd26c6b20432adada6507cf2d5952ab745b53c 100644
--- a/interface/web/help/lib/lang/de_help_faq_list.lng
+++ b/interface/web/help/lib/lang/de_help_faq_list.lng
@@ -1,3 +1,4 @@
 <?php
 $wb['edit_txt'] = 'Bearbeiten';
 ?>
+
diff --git a/interface/web/help/lib/lang/de_help_faq_sections_list.lng b/interface/web/help/lib/lang/de_help_faq_sections_list.lng
index 190f85a312a5bdeee31e01d5db1e6dce859e5195..5d52ec809396afe9e6bbbeb37ecb0c4e3cac1e44 100644
--- a/interface/web/help/lib/lang/de_help_faq_sections_list.lng
+++ b/interface/web/help/lib/lang/de_help_faq_sections_list.lng
@@ -6,3 +6,4 @@ $wb['faq_sections_txt'] = 'Kategorie';
 $wb['faq_faq_sections_txt'] = 'FAQ Kategorie';
 $wb['faq_new_section_txt'] = 'Neue Kategorie hinzufügen';
 ?>
+
diff --git a/interface/web/help/lib/lang/de_support_message.lng b/interface/web/help/lib/lang/de_support_message.lng
index 67d68f9984a13d41ac4cc96baa7e81dcb130b036..48a66b92dae0686aa6bea071492d8f0899ad9b4d 100644
--- a/interface/web/help/lib/lang/de_support_message.lng
+++ b/interface/web/help/lib/lang/de_support_message.lng
@@ -7,9 +7,10 @@ $wb['tstamp_txt'] = 'Zeitpunkt';
 $wb['reply_txt'] = 'Antworten';
 $wb['date_txt'] = 'Datum';
 $wb['support_request_subject_txt'] = 'Supportanfrage';
-$wb['support_request_txt'] = 'Sie haben eine Supportanfrage erhalten. Bitte antworten Sie nicht auf diese Email, sondern bearbeiten Sie die Supportanfrage in ISPConfig.';
-$wb['answer_to_support_request_txt'] = 'Sie haben eine Antwort auf Ihre Supportanfrage erhalten. Bitte antworten Sie nicht auf diese Email, sondern bearbeiten Sie die Nachricht in ISPConfig.';
-$wb['answer_to_support_request_sent_txt'] = 'Ihre Antwort auf die Supportanfrage ist verschickt worden. Bitte antworten Sie nicht auf diese Email.';
-$wb['support_request_sent_txt'] = 'Ihre Supportanfrage ist verschickt worden. Bitte antworten Sie nicht auf diese Email.';
-$wb['recipient_or_sender_email_address_not_valid_txt'] = 'Die Nachricht konnte nicht verschickt werden, da die Empfänger- und/oder die Sender-Email-Adresse nicht gültig ist.';
+$wb['support_request_txt'] = 'Sie haben eine Supportanfrage erhalten. Bitte antworten Sie nicht auf diese E-Mail, sondern bearbeiten Sie die Supportanfrage in ISPConfig.';
+$wb['answer_to_support_request_txt'] = 'Sie haben eine Antwort auf Ihre Supportanfrage erhalten. Bitte antworten Sie nicht auf diese E-Mail, sondern bearbeiten Sie die Nachricht in ISPConfig.';
+$wb['answer_to_support_request_sent_txt'] = 'Ihre Antwort auf die Supportanfrage ist verschickt worden. Bitte antworten Sie nicht auf diese E-Mail.';
+$wb['support_request_sent_txt'] = 'Ihre Supportanfrage ist verschickt worden. Bitte antworten Sie nicht auf diese E-Mail.';
+$wb['recipient_or_sender_email_address_not_valid_txt'] = 'Die Nachricht konnte nicht verschickt werden, da die Empfänger- und/oder die Sender E-Mail-Adresse nicht gültig ist.';
 ?>
+
diff --git a/interface/web/help/lib/lang/de_support_message_list.lng b/interface/web/help/lib/lang/de_support_message_list.lng
index 74fbeb2d7ee92e95ad2471f5514c7b07d331ccdb..f6265d21d6cf11de492c1803380f62bccbdce886 100644
--- a/interface/web/help/lib/lang/de_support_message_list.lng
+++ b/interface/web/help/lib/lang/de_support_message_list.lng
@@ -5,3 +5,4 @@ $wb['subject_txt'] = 'Betreff';
 $wb['add_new_record_txt'] = 'Neue Supportnachricht erstellen';
 $wb['date_txt'] = 'Datum';
 ?>
+
diff --git a/interface/web/help/lib/lang/el_help_faq_list.lng b/interface/web/help/lib/lang/el_help_faq_list.lng
index b6c7b460b9ecab5767e64a0b73350772e5a7027b..30405c58f0f5e6f3937a763c4bef392df32fb841 100644
--- a/interface/web/help/lib/lang/el_help_faq_list.lng
+++ b/interface/web/help/lib/lang/el_help_faq_list.lng
@@ -1,3 +1,3 @@
 <?php
-$wb['edit_txt'] = 'Edit';
+$wb['edit_txt'] = 'Επεξεργασία';
 ?>
diff --git a/interface/web/js/dns_dkim.js b/interface/web/js/dns_dkim.js
deleted file mode 100644
index 1294fd024968dd5e15a08581857b8b30848f22e5..0000000000000000000000000000000000000000
--- a/interface/web/js/dns_dkim.js
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
-Copyright (c) 2007 - 2013, Till Brehm, projektfarm Gmbh
-Copyright (c) 2013, Florian Schaal, info@schaal-24.de
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of ISPConfig nor the names of its contributors
-      may be used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-
-This Javascript is invoked by
-	* dns/templates/dns_dkim_edit.htm to get the public key 
-*/
-        var request = false;
-
-        function setRequest(zone) {
-                if (window.XMLHttpRequest) {request = new XMLHttpRequest();}
-                else if (window.ActiveXObject) {
-                        try {request = new ActiveXObject('Msxml2.XMLHTTP');}
-                        catch (e) {
-                                try {request = new ActiveXObject('Microsoft.XMLHTTP');}
-                                catch (e) {}
-                        }
-                }
-                if (!request) {
-                        alert("Error creating XMLHTTP-instance");
-                        return false;
-                } else {
-                        request.open('POST', 'dns/dns_dkim_get.php', true);
-                        request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
-                        request.send('&zone='+zone);
-                        request.onreadystatechange = interpretRequest;
-                }
-        }
-
-        function interpretRequest() {
-                switch (request.readyState) {
-                        case 4:
-                                if (request.status != 200) {alert("Request done but NOK\nError:"+request.status);}
-                                else {
-                                        document.getElementsByName('data')[0].value = request.responseXML.getElementsByTagName('data')[0].firstChild.nodeValue;
-                                        document.getElementsByName('name')[0].value = request.responseXML.getElementsByTagName('name')[0].firstChild.nodeValue;
-                                }
-                                break;
-                        default:
-                                break;
-                }
-        }
-
-var serverType = jQuery('#zone').val();
-setRequest(serverType);
-
-
diff --git a/interface/web/js/js.d/empty.dir b/interface/web/js/js.d/empty.dir
new file mode 100644
index 0000000000000000000000000000000000000000..95ba9ef37cca69318bcba17e67cd44ae84bd41e1
--- /dev/null
+++ b/interface/web/js/js.d/empty.dir
@@ -0,0 +1 @@
+This empty directory is needed by ISPConfig.
diff --git a/interface/web/js/mail_domain_dkim.js b/interface/web/js/mail_domain_dkim.js
deleted file mode 100644
index b07abc4f3e1e225420f6a9804b3092aa53973691..0000000000000000000000000000000000000000
--- a/interface/web/js/mail_domain_dkim.js
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
-Copyright (c) 2007 - 2013, Till Brehm, projektfarm Gmbh
-Copyright (c) 2013, Florian Schaal, info@schaal-24.de
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of ISPConfig nor the names of its contributors
-      may be used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-
-This Javascript is invoked by
-	* mail/templates/mail_domain_edit.htm to show and/or create the key-pair
-*/
-        var request = false;
-
-        function setRequest(action,value,privatekey) {
-                if (window.XMLHttpRequest) {request = new XMLHttpRequest();}
-                else if (window.ActiveXObject) {
-                        try {request = new ActiveXObject('Msxml2.XMLHTTP');}
-                        catch (e) {
-                                try {request = new ActiveXObject('Microsoft.XMLHTTP');}
-                                catch (e) {}
-                        }
-                }
-                if (!request) {
-                        alert("Error creating XMLHTTP-instance");
-                        return false;
-                } else {
-                        request.open('POST', 'mail/mail_domain_dkim_create.php', true);
-                        request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
-                        request.send('domain='+value+'&action='+action+'&pkey='+privatekey);
-                        request.onreadystatechange = interpretRequest;
-                }
-        }
-
-        function interpretRequest() {
-                switch (request.readyState) {
-                        case 4:
-                                if (request.status != 200) {alert("Request done but NOK\nError:"+request.status);}
-                                else {
-                                        document.getElementsByName('dkim_private')[0].value = request.responseXML.getElementsByTagName('privatekey')[0].firstChild.nodeValue;
-                                        document.getElementsByName('dkim_public')[0].value = request.responseXML.getElementsByTagName('publickey')[0].firstChild.nodeValue;
-                                }
-                                break;
-                        default:
-                                break;
-                }
-        }
-
-var serverType = jQuery('#dkim_private').val();
-setRequest('show','{tmpl_var name="domain"}',serverType);
-
diff --git a/interface/web/login/lib/lang/cz.lng b/interface/web/login/lib/lang/cz.lng
index f789b21ff412061de65f825eee809ff130299ec9..4ce9a3b821452e79bfb8ea281bea1fc9f1005140 100644
--- a/interface/web/login/lib/lang/cz.lng
+++ b/interface/web/login/lib/lang/cz.lng
@@ -23,3 +23,4 @@ $wb['email_txt'] = 'E-mail';
 $wb['theme_not_compatible'] = 'Zvolené téma není kompatibilní s aktuální verzí ISPConfig. Zkontrolujte prosím, zda není nová verze tématu.<br />Výchozí motiv byl aktivován automaticky.';
 $wb['back_txt'] = 'Back';
 ?>
+
diff --git a/interface/web/login/lib/lang/de.lng b/interface/web/login/lib/lang/de.lng
index 439fa021bd2fd7c7f3adf1b03c591e92e28af92b..744643bcface5038f92b3ab74cb312ea733df9d8 100644
--- a/interface/web/login/lib/lang/de.lng
+++ b/interface/web/login/lib/lang/de.lng
@@ -23,3 +23,4 @@ $wb['error_maintenance_mode'] = 'Diese ISPConfig Installation wird gerade gewart
 $wb['theme_not_compatible'] = 'Das gewählte Design ist mit dieser ISPConfig Version nicht kompatibel. Bitte prüfen Sie, ob ein Update des Themes verfügbar ist.<br />Es wurde nun automatisch das Standard Design aktiviert.';
 $wb['back_txt'] = 'Zur&uuml;ck';
 ?>
+
diff --git a/interface/web/login/lib/lang/el.lng b/interface/web/login/lib/lang/el.lng
index 00646c6db3a0ce3c30fbc5ae47d6b16200396d23..6fdfc5e57128bf5e4b5f000fd5799fb608c556e5 100644
--- a/interface/web/login/lib/lang/el.lng
+++ b/interface/web/login/lib/lang/el.lng
@@ -14,12 +14,12 @@ $wb['pw_error_length'] = 'Το μέγεθος του συνθηματικού ε
 $wb['username_txt'] = 'Όνομα χρήστη';
 $wb['password_txt'] = 'Συνθηματικό';
 $wb['login_button_txt'] = 'Είσοδος';
-$wb['pw_lost_txt'] = 'Password lost';
-$wb['error_maintenance_mode'] = 'This ISPConfig installation is currently under maintenance. We should be back shortly. Thank you for your patience.';
-$wb['login_txt'] = 'Login';
-$wb['pw_reset_txt'] = 'Password reset';
-$wb['pw_button_txt'] = 'Resend password';
+$wb['pw_lost_txt'] = 'Χαμένο Συνθηματικό';
+$wb['error_maintenance_mode'] = 'Αυτή η εγκατάσταση ISPConfig βρίσκεται σε κατάσταση συντήρησης. Ευχαριστούμε για την υπομονή σας.';
+$wb['login_txt'] = 'Είσοδος';
+$wb['pw_reset_txt'] = 'Αρχικοποίηση Συνθηματικού';
+$wb['pw_button_txt'] = 'Επαναποστολή Συνθηματικού';
 $wb['email_txt'] = 'Email';
-$wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.<br />The default theme as been activated automatically.';
-$wb['back_txt'] = 'Back';
+$wb['theme_not_compatible'] = 'Η επιλεγμένη θεματική παραλλαγή δεν είναι συμβατη με την τρέχουσα έκδοση ISPConfig. Παρακαλούμε ελέξτε για πιο πρόσφατη έκδοση.<br />Η προεπιλεγμένη θεματική παραλλαγή ενεργοποιήθηκε αυτόματα.';
+$wb['back_txt'] = 'Επιστροφή';
 ?>
diff --git a/interface/web/mail/form/mail_domain.tform.php b/interface/web/mail/form/mail_domain.tform.php
index caf48d50b363c809e0b8abcaf89666dd6f41fe29..506f934e385925a45d51f35704b4b5303bcf53ca 100644
--- a/interface/web/mail/form/mail_domain.tform.php
+++ b/interface/web/mail/form/mail_domain.tform.php
@@ -98,33 +98,6 @@ $form["tabs"]['domain'] = array (
 			'maxlength'	=> '255',
 			'searchable' => 1
 		),
-                'dkim' => array (
-                        'datatype'      => 'VARCHAR',
-                        'formtype'      => 'CHECKBOX',
-                        'default'       => 'n',
-                        'value'         => array(0 => 'n',1 => 'y')
-                ),
-                'dkim_private' => array (
-                        'datatype'      => 'TEXT',
-                        'formtype'      => 'TEXTAREA',
-                        'default'       => '',
-                        'value'         => '',
-                        'cols'          => '30',
-                        'rows'          => '10',
-                        'validators'    => array (  0 => array ('type'  => 'CUSTOM',
-                                                                'class' => 'validate_dkim',
-                                                                'function' => 'check_private_key',
-                                                                'errmsg'=> 'dkim_private_key_error'),
-                                    ),
-                ),
-                'dkim_public' => array (
-                        'datatype'      => 'TEXT',
-                        'formtype'      => 'TEXTAREA',
-                        'default'       => '',
-                        'value'         => '',
-                        'cols'          => '30',
-                        'rows'          => '10'
-                ),
 		'active' => array (
 			'datatype'	=> 'VARCHAR',
 			'formtype'	=> 'CHECKBOX',
@@ -138,4 +111,4 @@ $form["tabs"]['domain'] = array (
 );
 
 
-?>
+?>
\ No newline at end of file
diff --git a/interface/web/mail/form/mail_user.tform.php b/interface/web/mail/form/mail_user.tform.php
index ddccdbf060a0e8ed4c15fe3a633535c62cf2c6cc..5ec0cbce29f75ed7e37e751beeb93cf7bd87de63 100644
--- a/interface/web/mail/form/mail_user.tform.php
+++ b/interface/web/mail/form/mail_user.tform.php
@@ -38,8 +38,6 @@
 
 */
 global $app;
-$app->uses('getconf');
-$global_config = $app->getconf->get_global_config();
 
 $form["title"] 			= "Mailbox";
 $form["description"] 	= "";
@@ -232,118 +230,115 @@ $form["tabs"]['mailuser'] = array (
 	)
 );
 
-if ($global_config['mail']['mailbox_show_autoresponder_tab'] === 'y') {
-	$form["tabs"]['autoresponder'] = array (
-		'title' 	=> "Autoresponder",
-		'width' 	=> 100,
-		'template' 	=> "templates/mail_user_autoresponder_edit.htm",
-		'fields' 	=> array (
-		##################################
-		# Begin Datatable fields
-		##################################
-			'autoresponder_subject' => array (
-				'datatype'  => 'VARCHAR',
-				'formtype'  => 'TEXT',
-				'default'   => 'Out of office reply',
-				'value'     => '',
-				'width'		=> '30',
-				'maxlength'	=> '255'
-			),
-			'autoresponder_text' => array (
-				'datatype'	=> 'TEXT',
-				'formtype'	=> 'TEXTAREA',
-				'default'	=> '',
-				'value'		=> '',
-				'cols'		=> '30',
-				'rows'		=> '15'
-			),
-			'autoresponder' => array (
-				'datatype'	=> 'VARCHAR',
-				'formtype'	=> 'CHECKBOX',
-				'default'	=> 'n',
-				'value'		=> array(1 => 'y',0 => 'n')
-			),
-			'autoresponder_start_date' => array (
-				'datatype'	=> 'DATETIME',
-				'formtype'	=> 'DATETIME',
-				'validators'=> array ( 0 => array ( 'type' => 'CUSTOM',
-					'class' => 'validate_autoresponder',
-					'function' => 'start_date',
-					'errmsg'=> 'autoresponder_start_date_is_required'),
-				)
-			),
-			'autoresponder_end_date' => array (
-				'datatype'	=> 'DATETIME',
-				'formtype'	=> 'DATETIME',
-				'validators'=> array ( 	0 => array (	'type'	=> 'CUSTOM',
-					'class' => 'validate_autoresponder',
-					'function' => 'end_date',
-					'errmsg'=> 'autoresponder_end_date_isgreater'),
-				 ),
-			),
-		##################################
-		# END Datatable fields
-		##################################
-		)
-	);
-}
-
+$form["tabs"]['autoresponder'] = array (
+	'title' 	=> "Autoresponder",
+	'width' 	=> 100,
+	'template' 	=> "templates/mail_user_autoresponder_edit.htm",
+	'fields' 	=> array (
+	##################################
+	# Begin Datatable fields
+	##################################
+		'autoresponder_subject' => array (
+			'datatype'  => 'VARCHAR',
+			'formtype'  => 'TEXT',
+			'default'   => 'Out of office reply',
+			'value'     => '',
+			'width'		=> '30',
+			'maxlength'	=> '255'
+		),
+		'autoresponder_text' => array (
+			'datatype'	=> 'TEXT',
+			'formtype'	=> 'TEXTAREA',
+			'default'	=> '',
+			'value'		=> '',
+			'cols'		=> '30',
+			'rows'		=> '15'
+		),
+		'autoresponder' => array (
+			'datatype'	=> 'VARCHAR',
+			'formtype'	=> 'CHECKBOX',
+			'default'	=> 'n',
+			'value'		=> array(1 => 'y',0 => 'n')
+		),
+		'autoresponder_start_date' => array (
+			'datatype'	=> 'DATETIME',
+			'formtype'	=> 'DATETIME',
+			'validators'=> array ( 0 => array ( 'type' => 'CUSTOM',
+				'class' => 'validate_autoresponder',
+				'function' => 'start_date',
+				'errmsg'=> 'autoresponder_start_date_is_required'),
+			)
+		),
+		'autoresponder_end_date' => array (
+			'datatype'	=> 'DATETIME',
+			'formtype'	=> 'DATETIME',
+			'validators'=> array ( 	0 => array (	'type'	=> 'CUSTOM',
+													'class' => 'validate_autoresponder',
+													'function' => 'end_date',
+													'errmsg'=> 'autoresponder_end_date_isgreater'),
+								 ),
+		),
+	##################################
+	# END Datatable fields
+	##################################
+	)
+);
 
-if ($global_config['mail']['mailbox_show_mail_filter_tab'] === 'y') {
-	$form["tabs"]['filter_records'] = array (
-		'title' 	=> "Mail Filter",
-		'width' 	=> 100,
-		'template' 	=> "templates/mail_user_mailfilter_edit.htm",
-		'fields' 	=> array (
-		##################################
-		# Begin Datatable fields
-		##################################
-			'move_junk' => array (
-				'datatype'	=> 'VARCHAR',
-				'formtype'	=> 'CHECKBOX',
-				'default'	=> 'n',
-				'value'		=> array(0 => 'n',1 => 'y')
-			),
-		##################################
-		# END Datatable fields
-		##################################
+$form["tabs"]['filter_records'] = array (
+	'title' 	=> "Mail Filter",
+	'width' 	=> 100,
+	'template' 	=> "templates/mail_user_mailfilter_edit.htm",
+	'fields' 	=> array (
+	##################################
+	# Begin Datatable fields
+	##################################
+		'move_junk' => array (
+			'datatype'	=> 'VARCHAR',
+			'formtype'	=> 'CHECKBOX',
+			'default'	=> 'n',
+			'value'		=> array(0 => 'n',1 => 'y')
 		),
-		'plugins' => array (
-			'filter_records' => array (
-				'class'   => 'plugin_listview',
-				'options' => array(
-						'listdef' => 'list/mail_user_filter.list.php',
-						'sqlextwhere' => "mailuser_id = ".@$app->functions->intval(@$_REQUEST['id']),
-						'sql_order_by' => "ORDER BY rulename"
-					)
+	##################################
+	# END Datatable fields
+	##################################
+	),
+	'plugins' => array (
+     	'filter_records' => array (
+         	'class'   => 'plugin_listview',
+     		'options' => array(
+				'listdef' => 'list/mail_user_filter.list.php',
+				'sqlextwhere' => "mailuser_id = ".@$app->functions->intval(@$_REQUEST['id']),
+				'sql_order_by' => "ORDER BY rulename"
 			)
-		)
-	);
-}
+        )
+	)
+);
 
+if($_SESSION["s"]["user"]["typ"] == 'admin') {
+
+$form["tabs"]['mailfilter'] = array (
+	'title' 	=> "Custom Rules",
+	'width' 	=> 100,
+	'template' 	=> "templates/mail_user_custom_rules_edit.htm",
+	'fields' 	=> array (
+	##################################
+	# Begin Datatable fields
+	##################################
+		'custom_mailfilter' => array (
+			'datatype'	=> 'TEXT',
+			'formtype'	=> 'TEXTAREA',
+			'default'	=> '',
+			'value'		=> '',
+			'cols'		=> '30',
+			'rows'		=> '15'
+		),
+	##################################
+	# END Datatable fields
+	##################################
+	)
+);
 
-if ($_SESSION["s"]["user"]["typ"] == 'admin' && $global_config['mail']['mailbox_show_custom_rules_tab'] === 'y') {
-	$form["tabs"]['mailfilter'] = array (
-		'title' 	=> "Custom Rules",
-		'width' 	=> 100,
-		'template' 	=> "templates/mail_user_custom_rules_edit.htm",
-		'fields' 	=> array (
-		##################################
-		# Begin Datatable fields
-		##################################
-			'custom_mailfilter' => array (
-				'datatype'	=> 'TEXT',
-				'formtype'	=> 'TEXTAREA',
-				'default'	=> '',
-				'value'		=> '',
-				'cols'		=> '30',
-				'rows'		=> '15'
-			),
-		##################################
-		# END Datatable fields
-		##################################
-		)
-	);
 }
 
-?>
+
+?>
\ No newline at end of file
diff --git a/interface/web/mail/lib/lang/cz.lng b/interface/web/mail/lib/lang/cz.lng
index 6a5afe06856be3ac43164c395a138a43f45946bb..c4b386b450bc9871a2f0c9a4d72b078cec12ae79 100644
--- a/interface/web/mail/lib/lang/cz.lng
+++ b/interface/web/mail/lib/lang/cz.lng
@@ -44,5 +44,6 @@ $wb['Global Filters'] = 'Globální filtry';
 $wb['Domain Alias'] = 'Alias domény';
 $wb['Relay Recipients'] = 'Relay adresáti';
 $wb['Statistics'] = 'Statistiky';
-$wb['Mailbox quota'] = 'Mailbox kvóta';
+$wb['Mailbox quota'] = 'Kvóta e-mailové schránky';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_alias.lng b/interface/web/mail/lib/lang/cz_mail_alias.lng
index 605e06b3c875fb13d96cf8ca19343684f6067166..119b849739eebb5819af99fa30c0f26529eec97e 100644
--- a/interface/web/mail/lib/lang/cz_mail_alias.lng
+++ b/interface/web/mail/lib/lang/cz_mail_alias.lng
@@ -12,3 +12,4 @@ $wb['domain_txt'] = 'Doména';
 $wb['duplicate_email_alias_txt'] = 'Tento e-mail alias již existuje.';
 $wb['source_txt'] = 'Alias';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_alias_list.lng b/interface/web/mail/lib/lang/cz_mail_alias_list.lng
index de8cc2ef2ab3f5048883e3ab178a668cacc1fe77..db4fb4f8c7578f811f8141a4573f8ac6e01b4744 100644
--- a/interface/web/mail/lib/lang/cz_mail_alias_list.lng
+++ b/interface/web/mail/lib/lang/cz_mail_alias_list.lng
@@ -6,3 +6,4 @@ $wb['destination_txt'] = 'Cíl';
 $wb['email_txt'] = 'E-mail';
 $wb['add_new_record_txt'] = 'Přidat nový e-mailový alias';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_aliasdomain.lng b/interface/web/mail/lib/lang/cz_mail_aliasdomain.lng
index 74611c2de0a0416931bc96d5859bccedfbf974e5..7c74fb6edfaa1723c942cec773c69639df96838a 100644
--- a/interface/web/mail/lib/lang/cz_mail_aliasdomain.lng
+++ b/interface/web/mail/lib/lang/cz_mail_aliasdomain.lng
@@ -9,3 +9,4 @@ $wb['source_error_empty'] = 'Zdrojová doména je prázdná.';
 $wb['source_error_unique'] = 'Duplikování zdrojové domény.';
 $wb['source_error_regex'] = 'Chybná zdrojová doména.';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_aliasdomain_list.lng b/interface/web/mail/lib/lang/cz_mail_aliasdomain_list.lng
index fd850d6f5f64d77d64b50febe94ade6cc7962c88..155a87a7ba850909282efe4bca5a3dd6c8374616 100644
--- a/interface/web/mail/lib/lang/cz_mail_aliasdomain_list.lng
+++ b/interface/web/mail/lib/lang/cz_mail_aliasdomain_list.lng
@@ -5,3 +5,4 @@ $wb['source_txt'] = 'Zdroj';
 $wb['destination_txt'] = 'Cíl';
 $wb['add_new_record_txt'] = 'Přidat doménový alias';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_blacklist.lng b/interface/web/mail/lib/lang/cz_mail_blacklist.lng
index e1e6dab48f04bee0ad53d9a296d84527f9b3fce6..93978c72f6a4284161eebe9b29a75e34f22fb61c 100644
--- a/interface/web/mail/lib/lang/cz_mail_blacklist.lng
+++ b/interface/web/mail/lib/lang/cz_mail_blacklist.lng
@@ -7,3 +7,4 @@ $wb['source_error_notempty'] = 'Adresa je prázdná.';
 $wb['type_txt'] = 'Typ';
 $wb['limit_mailfilter_txt'] = 'Dosažen maximální počet email filtrů pro Váš účet.';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_blacklist_list.lng b/interface/web/mail/lib/lang/cz_mail_blacklist_list.lng
index 0ef1d3417c1dbfa1ce022d39093fafbe48613851..ba76a7ed4bd708a62add782fbc3f714dbc752abb 100644
--- a/interface/web/mail/lib/lang/cz_mail_blacklist_list.lng
+++ b/interface/web/mail/lib/lang/cz_mail_blacklist_list.lng
@@ -2,9 +2,10 @@
 $wb['list_head_txt'] = 'E-mail černá listina';
 $wb['active_txt'] = 'Aktivní';
 $wb['server_id_txt'] = 'Server';
-$wb['source_txt'] = 'Adresy na černé lisitně';
+$wb['source_txt'] = 'Adresy na černé listině';
 $wb['type_txt'] = 'Typ';
 $wb['recipient_txt'] = 'Příjemce (adresát)';
 $wb['add_new_record_txt'] = 'Přidat záznam na černou listinu';
 $wb['access_txt'] = 'Přístup';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_content_filter.lng b/interface/web/mail/lib/lang/cz_mail_content_filter.lng
index 459ca228a2149d868ea9dfb575253bbb10da261f..240de670e39e035ca3f9147566978a1d71a3519e 100644
--- a/interface/web/mail/lib/lang/cz_mail_content_filter.lng
+++ b/interface/web/mail/lib/lang/cz_mail_content_filter.lng
@@ -7,3 +7,4 @@ $wb['action_txt'] = 'Akce';
 $wb['active_txt'] = 'Aktivní';
 $wb['pattern_error_empty'] = 'Vzor je prázdný.';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_content_filter_list.lng b/interface/web/mail/lib/lang/cz_mail_content_filter_list.lng
index da9709e7f98bb31d63bda148ece2efda717f320b..68acaf780ca74e46eed30c6cc8226df7615683ec 100644
--- a/interface/web/mail/lib/lang/cz_mail_content_filter_list.lng
+++ b/interface/web/mail/lib/lang/cz_mail_content_filter_list.lng
@@ -6,3 +6,4 @@ $wb['pattern_txt'] = 'Vzor';
 $wb['action_txt'] = 'Akce';
 $wb['add_new_record_txt'] = 'Přidat obsahový filtr';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_domain.lng b/interface/web/mail/lib/lang/cz_mail_domain.lng
index 026a2f1d277da942abe985f003a8a81f57069647..d497e0502ae09ea8ad98557da2f9a14d9cf1672f 100644
--- a/interface/web/mail/lib/lang/cz_mail_domain.lng
+++ b/interface/web/mail/lib/lang/cz_mail_domain.lng
@@ -11,3 +11,4 @@ $wb['limit_maildomain_txt'] = 'Dosažen maximální počet email domén pro Vá
 $wb['policy_txt'] = 'Spamový filtr';
 $wb['no_policy'] = '- nepovoleno -';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_domain_admin_list.lng b/interface/web/mail/lib/lang/cz_mail_domain_admin_list.lng
index b579d2de088d0995da33586a6f2a0731445daa76..8277ec484849b6ae5349fb41874ccac07a7b2799 100644
--- a/interface/web/mail/lib/lang/cz_mail_domain_admin_list.lng
+++ b/interface/web/mail/lib/lang/cz_mail_domain_admin_list.lng
@@ -6,3 +6,4 @@ $wb['add_new_record_txt'] = 'Přidat doménu';
 $wb['active_txt'] = 'Aktivní';
 $wb['sys_groupid_txt'] = 'Klient';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_domain_catchall.lng b/interface/web/mail/lib/lang/cz_mail_domain_catchall.lng
index 488d0d5176a4c441e3b9ca94ab6793f3f7d3ecbf..635091c425a88114f68335e61bed400426f8a846 100644
--- a/interface/web/mail/lib/lang/cz_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/cz_mail_domain_catchall.lng
@@ -9,3 +9,4 @@ $wb['limit_mailcatchall_txt'] = 'Dosažen maximální počet košů účtů pro
 $wb['source_txt'] = 'Zdroj';
 $wb['destination_error_isemail'] = 'Cílová e-mailová adresa není platná.';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_domain_catchall_list.lng b/interface/web/mail/lib/lang/cz_mail_domain_catchall_list.lng
index 3b24645ec88a8dd4a411d33dbb7a8a0c93b48972..7fd14a7adfec0bf84dec2a034d2eb66ff73133ec 100644
--- a/interface/web/mail/lib/lang/cz_mail_domain_catchall_list.lng
+++ b/interface/web/mail/lib/lang/cz_mail_domain_catchall_list.lng
@@ -7,3 +7,4 @@ $wb['server_id_txt'] = 'Server';
 $wb['domain_txt'] = 'E-malová doména';
 $wb['add_new_record_txt'] = 'Přidat e-mailový koš';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_domain_list.lng b/interface/web/mail/lib/lang/cz_mail_domain_list.lng
index 2abb05cf74ba4442dedbe96a7720d1fb1035b678..141e9e87d321a30d94140977d4e46b8e80b6dece 100644
--- a/interface/web/mail/lib/lang/cz_mail_domain_list.lng
+++ b/interface/web/mail/lib/lang/cz_mail_domain_list.lng
@@ -5,3 +5,4 @@ $wb['domain_txt'] = 'Doména';
 $wb['add_new_record_txt'] = 'Přidat doménu';
 $wb['active_txt'] = 'Aktivní';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_forward.lng b/interface/web/mail/lib/lang/cz_mail_forward.lng
index a59bd9b52baa1cdbded7bdb71f601e631d3d32dd..054650aaff6ffaab51ad7d4a5033ed7622a647b7 100644
--- a/interface/web/mail/lib/lang/cz_mail_forward.lng
+++ b/interface/web/mail/lib/lang/cz_mail_forward.lng
@@ -1,9 +1,10 @@
 <?php
 $wb['email_txt'] = 'E-mail';
-$wb['destination_txt'] = 'Cílový email';
+$wb['destination_txt'] = 'Cílový e-mail';
 $wb['active_txt'] = 'Aktivní';
 $wb['limit_mailforward_txt'] = 'Dosažen maximální počet email předávání pro Váš účet.';
 $wb['duplicate_mailbox_txt'] = 'Mailbox s touto adresou již existuje';
 $wb['domain_txt'] = 'Doména';
 $wb['source_txt'] = 'Zdrojový e-mail';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_forward_list.lng b/interface/web/mail/lib/lang/cz_mail_forward_list.lng
index e5381fe5f8c17d2bc90f41340114f025cc4299e6..6cf1f88ca400366177a24372e38d4f480bc4cea9 100644
--- a/interface/web/mail/lib/lang/cz_mail_forward_list.lng
+++ b/interface/web/mail/lib/lang/cz_mail_forward_list.lng
@@ -6,3 +6,4 @@ $wb['destination_txt'] = 'Cíl';
 $wb['email_txt'] = 'E-mail';
 $wb['add_new_record_txt'] = 'Přidat nové přesměrování';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_get.lng b/interface/web/mail/lib/lang/cz_mail_get.lng
index 51b9f3403edb2cb37c835192860658706fc45e34..b73ddfddb6b7a51f4c70f70cd59509789be43003 100644
--- a/interface/web/mail/lib/lang/cz_mail_get.lng
+++ b/interface/web/mail/lib/lang/cz_mail_get.lng
@@ -16,3 +16,4 @@ $wb['source_server_error_regex'] = 'POP3/IMAP server není validní doménový n
 $wb['source_read_all_txt'] = 'Načíst všechny e-maily (včetně již přečtené pošty)';
 $wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_get_list.lng b/interface/web/mail/lib/lang/cz_mail_get_list.lng
index 9ca8b86dcb258320aee7376ca5a9bc06dc9cc9e4..55df9d27d7e56912163ad32488c1862b1cf4f3e8 100644
--- a/interface/web/mail/lib/lang/cz_mail_get_list.lng
+++ b/interface/web/mail/lib/lang/cz_mail_get_list.lng
@@ -7,3 +7,4 @@ $wb['source_username_txt'] = 'Uživatelské jméno';
 $wb['destination_txt'] = 'Cíl';
 $wb['add_new_record_txt'] = 'Přidat účet';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_mailinglist.lng b/interface/web/mail/lib/lang/cz_mail_mailinglist.lng
index 2d2278526e9ea34004ce9b52972c98a61d08123e..7723f1f0e9b9694bf51baa8132dadef2ce329fe0 100644
--- a/interface/web/mail/lib/lang/cz_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/cz_mail_mailinglist.lng
@@ -18,5 +18,6 @@ $wb['password_mismatch_txt'] = 'Hesla se neshodují.';
 $wb['password_match_txt'] = 'Hesla se shodují.';
 $wb['listname_error_unique'] = 'Na serveru je již shodný \\"název seznamu\\". Prosím, vyberte si jiný \\"název seznamu\\".';
 $wb['email_error_isemail'] = 'E-mailová adresa je neplatná.';
-$wb['mailinglist_txt'] = 'Mailing list';
+$wb['mailinglist_txt'] = 'E-mailové konference';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_mailinglist_list.lng b/interface/web/mail/lib/lang/cz_mail_mailinglist_list.lng
index db31273f594bd45eed82a9364a984d7101fc8990..abd97373381e831711d1b0313e8590098297f8fd 100644
--- a/interface/web/mail/lib/lang/cz_mail_mailinglist_list.lng
+++ b/interface/web/mail/lib/lang/cz_mail_mailinglist_list.lng
@@ -3,3 +3,4 @@ $wb['list_head_txt'] = 'E-mailové konference';
 $wb['domain_txt'] = 'Doména';
 $wb['listname_txt'] = 'Název seznamu';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_relay_recipient.lng b/interface/web/mail/lib/lang/cz_mail_relay_recipient.lng
index 0c07059c3408449422b4c1b23f9502a4c3a08aa4..fbbdc48ab51b7c6135f77f6d4bad0bbc6dfe7279 100644
--- a/interface/web/mail/lib/lang/cz_mail_relay_recipient.lng
+++ b/interface/web/mail/lib/lang/cz_mail_relay_recipient.lng
@@ -5,5 +5,6 @@ $wb['recipient_txt'] = 'Příjemce (adresát)';
 $wb['active_txt'] = 'Aktivní';
 $wb['source_error_notempty'] = 'Adresa je prázdná.';
 $wb['type_txt'] = 'Typ';
-$wb['limit_mailfilter_txt'] = 'Dosažen maximální počet email filtrů pro Váš účet.';
+$wb['limit_mailfilter_txt'] = 'Dosažen maximální počet e-mail filtrů pro Váš účet.';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_relay_recipient_list.lng b/interface/web/mail/lib/lang/cz_mail_relay_recipient_list.lng
index 1af959966c2dcf172cbdac4485f490fc6c9ecbab..19f46821f33fd7debb07012fc1e37a5fe9766528 100644
--- a/interface/web/mail/lib/lang/cz_mail_relay_recipient_list.lng
+++ b/interface/web/mail/lib/lang/cz_mail_relay_recipient_list.lng
@@ -7,3 +7,4 @@ $wb['recipient_txt'] = 'Příjemce (adresát)';
 $wb['add_new_record_txt'] = 'Přidat relay adresáta';
 $wb['access_txt'] = 'Přístup';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_spamfilter.lng b/interface/web/mail/lib/lang/cz_mail_spamfilter.lng
index 4b6cc2b5d8586f9843044622806ada40cf79f7f3..b538ad044ad472d20972f050422715012b7647a4 100644
--- a/interface/web/mail/lib/lang/cz_mail_spamfilter.lng
+++ b/interface/web/mail/lib/lang/cz_mail_spamfilter.lng
@@ -15,3 +15,4 @@ $wb['email_error_unique'] = 'Pro tuto email adresu již existuje filtrovací zá
 $wb['spam_redirect_maildir_purge_txt'] = 'Vyčistit poté mailový adresář';
 $wb['days_txt'] = 'Dny.';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_spamfilter_list.lng b/interface/web/mail/lib/lang/cz_mail_spamfilter_list.lng
index 7560b570da284998e11f0c8a6ff99ecc1ecfac1f..fa5924f2bdcbda90a85024aad6dbd8c2250c2909 100644
--- a/interface/web/mail/lib/lang/cz_mail_spamfilter_list.lng
+++ b/interface/web/mail/lib/lang/cz_mail_spamfilter_list.lng
@@ -6,3 +6,4 @@ $wb['server_name_txt'] = 'server_name';
 $wb['email_txt'] = 'E-mail';
 $wb['add_new_record_txt'] = 'Přidat nový záznam spamfiltru';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_transport.lng b/interface/web/mail/lib/lang/cz_mail_transport.lng
index dfe185508436062eb14cffcfb755528e9a4a2072..6a195f39cbbecffe40eb95ddc6a1702e3e9b12fb 100644
--- a/interface/web/mail/lib/lang/cz_mail_transport.lng
+++ b/interface/web/mail/lib/lang/cz_mail_transport.lng
@@ -6,6 +6,7 @@ $wb['type_txt'] = 'Typ';
 $wb['mx_txt'] = 'Neprovádět MX lookup';
 $wb['sort_order_txt'] = 'Třídit podle';
 $wb['active_txt'] = 'Aktivní';
-$wb['limit_mailrouting_txt'] = 'Dosažen maximální počet email směrování pro Váš účet.';
+$wb['limit_mailrouting_txt'] = 'Dosažen maximální počet e-mail směrování pro Váš účet.';
 $wb['transport_txt'] = 'Transport';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_transport_list.lng b/interface/web/mail/lib/lang/cz_mail_transport_list.lng
index e833293a2fd89e00d54885eaec530793beb5e15c..584e329adbbe9458fc3255740a8909f2a692602a 100644
--- a/interface/web/mail/lib/lang/cz_mail_transport_list.lng
+++ b/interface/web/mail/lib/lang/cz_mail_transport_list.lng
@@ -7,3 +7,4 @@ $wb['transport_txt'] = 'Transport';
 $wb['sort_order_txt'] = 'Třídit podle';
 $wb['add_new_record_txt'] = 'Přidat transport';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_user.lng b/interface/web/mail/lib/lang/cz_mail_user.lng
index 2c441f2abaafc7eae0f89a4255a18a2e95026ad3..48a9ea35c5a74ad29c2f5cb9875c8f8a961dd248 100644
--- a/interface/web/mail/lib/lang/cz_mail_user.lng
+++ b/interface/web/mail/lib/lang/cz_mail_user.lng
@@ -5,7 +5,7 @@ $wb['cryptpwd_txt'] = 'Heslo';
 $wb['password_strength_txt'] = 'Bezpečnost hesla';
 $wb['active_txt'] = 'Aktivní';
 $wb['email_error_isemail'] = 'E-mail adresa je chybná.';
-$wb['email_error_unique'] = 'Duplikování email adresy.';
+$wb['email_error_unique'] = 'Duplikování e-mail adresy.';
 $wb['autoresponder_text_txt'] = 'Text';
 $wb['autoresponder_txt'] = 'Aktivní';
 $wb['autoresponder_start_date_txt'] = 'Začít od';
@@ -48,3 +48,4 @@ $wb['repeat_password_txt'] = 'Opakujte heslo';
 $wb['password_mismatch_txt'] = 'Hesla se neshodují.';
 $wb['password_match_txt'] = 'Hesla se shodují.';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_user_filter.lng b/interface/web/mail/lib/lang/cz_mail_user_filter.lng
index 6cd8ed7e8987780343352e22a55b721075afe4f4..0fdd4ba147ec0c4ca05af37a80fcce87280dbc28 100644
--- a/interface/web/mail/lib/lang/cz_mail_user_filter.lng
+++ b/interface/web/mail/lib/lang/cz_mail_user_filter.lng
@@ -18,3 +18,4 @@ $wb['ends_with_txt'] = 'Končí na';
 $wb['move_to_txt'] = 'Přesunout do';
 $wb['delete_txt'] = 'Smazat';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_user_filter_list.lng b/interface/web/mail/lib/lang/cz_mail_user_filter_list.lng
index 60229ce3b599091aa8e52bb8bd7452b5495ce5ca..f5de2b289b388328aaf5a97cf43558de440cbe98 100644
--- a/interface/web/mail/lib/lang/cz_mail_user_filter_list.lng
+++ b/interface/web/mail/lib/lang/cz_mail_user_filter_list.lng
@@ -5,3 +5,4 @@ $wb['page_txt'] = 'Stránka';
 $wb['page_of_txt'] = 'z';
 $wb['delete_confirmation'] = 'Opravdu smazat mailový filtr?';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_user_list.lng b/interface/web/mail/lib/lang/cz_mail_user_list.lng
index e6dfd006ed2aee86054be10320bdd4174221d846..b4adbdb5d101c243c2fbcd73f1f816278d305fc5 100644
--- a/interface/web/mail/lib/lang/cz_mail_user_list.lng
+++ b/interface/web/mail/lib/lang/cz_mail_user_list.lng
@@ -6,3 +6,4 @@ $wb['add_new_record_txt'] = 'Přidat e-mailovou schránku';
 $wb['name_txt'] = 'Skutečný název';
 $wb['login_txt'] = 'Přihlášení';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_user_stats_list.lng b/interface/web/mail/lib/lang/cz_mail_user_stats_list.lng
index 50cbc31d5c21e1ffa2609b178d33432146db6468..9c7602dc389d3dd4386f12904847a1c620f3bbb8 100644
--- a/interface/web/mail/lib/lang/cz_mail_user_stats_list.lng
+++ b/interface/web/mail/lib/lang/cz_mail_user_stats_list.lng
@@ -6,3 +6,4 @@ $wb['last_month_txt'] = 'Minulý měsíc';
 $wb['this_year_txt'] = 'Tento rok';
 $wb['last_year_txt'] = 'Minulý rok';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_whitelist.lng b/interface/web/mail/lib/lang/cz_mail_whitelist.lng
index db55c18a0bb1606df3ea8a5eaab8087eee23481f..31dfd7574d28faaf1faff29184f18f92e7c6f4c6 100644
--- a/interface/web/mail/lib/lang/cz_mail_whitelist.lng
+++ b/interface/web/mail/lib/lang/cz_mail_whitelist.lng
@@ -7,3 +7,4 @@ $wb['source_error_notempty'] = 'Adresa je prázdná.';
 $wb['type_txt'] = 'Typ';
 $wb['limit_mailfilter_txt'] = 'Dosažen maximální počet email filtrů pro Váš účet.';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_mail_whitelist_list.lng b/interface/web/mail/lib/lang/cz_mail_whitelist_list.lng
index 7fae3689995265473944ebefcf08893a8ae523d0..bab30222ffbafcb8b53c837b83115885bf2ced3a 100644
--- a/interface/web/mail/lib/lang/cz_mail_whitelist_list.lng
+++ b/interface/web/mail/lib/lang/cz_mail_whitelist_list.lng
@@ -8,3 +8,4 @@ $wb['recipient_txt'] = 'Příjemce (adresát)';
 $wb['add_new_record_txt'] = 'Přidat záznam na bílou listinu';
 $wb['access_txt'] = 'Přístup';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_spamfilter_blacklist.lng b/interface/web/mail/lib/lang/cz_spamfilter_blacklist.lng
index 5e0c6b779909284280bdc5a4278a01c005e471d5..2b929082c7b2cd1a9349f854a66400e68a0d0ac0 100644
--- a/interface/web/mail/lib/lang/cz_spamfilter_blacklist.lng
+++ b/interface/web/mail/lib/lang/cz_spamfilter_blacklist.lng
@@ -7,3 +7,4 @@ $wb['priority_txt'] = 'Priorita';
 $wb['active_txt'] = 'Aktivní';
 $wb['limit_spamfilter_wblist_txt'] = 'Dosažen maximální počet záznamů pro bílou / černou listinu pro Váš účet.';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_spamfilter_blacklist_list.lng b/interface/web/mail/lib/lang/cz_spamfilter_blacklist_list.lng
index 83a732d6f3d2cc4d1ed67050dbf125903f285e48..71685de72d5d18bd5df73c99e5fd64022258d2cc 100644
--- a/interface/web/mail/lib/lang/cz_spamfilter_blacklist_list.lng
+++ b/interface/web/mail/lib/lang/cz_spamfilter_blacklist_list.lng
@@ -4,6 +4,7 @@ $wb['active_txt'] = 'Aktivní';
 $wb['server_id_txt'] = 'Server';
 $wb['priority_txt'] = 'Priorita';
 $wb['rid_txt'] = 'Uživatel';
-$wb['email_txt'] = 'Emaily na černé listině';
+$wb['email_txt'] = 'E-maily na černé listině';
 $wb['add_new_record_txt'] = 'Přidat záznam na černou listinu';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_spamfilter_config.lng b/interface/web/mail/lib/lang/cz_spamfilter_config.lng
index 0f878cc7d8b3a0b45c521a97956a246588db6d7c..7eae43eb2bb1253801fdd3ee1ccdfb3345d7f732 100644
--- a/interface/web/mail/lib/lang/cz_spamfilter_config.lng
+++ b/interface/web/mail/lib/lang/cz_spamfilter_config.lng
@@ -18,3 +18,4 @@ $wb['relayhost_password_txt'] = 'Relayhost heslo';
 $wb['mailbox_size_limit_txt'] = 'Limit velikosti e-mailové schránky';
 $wb['message_size_limit_txt'] = 'Limit velikosti zprávy';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_spamfilter_config_list.lng b/interface/web/mail/lib/lang/cz_spamfilter_config_list.lng
index fe2ee8d51ce0b3e2afd8f5c25403b1c27ff23832..348fe9b0e5501e16f9269a745b4913f707b1c1ae 100644
--- a/interface/web/mail/lib/lang/cz_spamfilter_config_list.lng
+++ b/interface/web/mail/lib/lang/cz_spamfilter_config_list.lng
@@ -3,3 +3,4 @@ $wb['list_head_txt'] = 'Konfigurace serveru';
 $wb['server_name_txt'] = 'Server';
 $wb['server_id_txt'] = 'server_id';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_spamfilter_policy.lng b/interface/web/mail/lib/lang/cz_spamfilter_policy.lng
index 54d0155d74a932b732f763488dd5f9ac3046d909..2740272cf65f646d8cb664c35aabd767c2b5dd89 100644
--- a/interface/web/mail/lib/lang/cz_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/cz_spamfilter_policy.lng
@@ -18,7 +18,7 @@ $wb['spam_tag2_level_txt'] = 'SPAM tag2 úroveň';
 $wb['spam_kill_level_txt'] = 'SPAM kill úroveň';
 $wb['spam_dsn_cutoff_level_txt'] = 'SPAM dsn cutoff úroveň';
 $wb['spam_quarantine_cutoff_level_txt'] = 'SPAM karanténa cutoff úroveň';
-$wb['spam_modifies_subj_txt'] = 'SPAM modifies předmět';
+$wb['spam_modifies_subj_txt'] = 'SPAM upravuje předmět';
 $wb['spam_subject_tag_txt'] = 'SPAM předmět tag';
 $wb['spam_subject_tag2_txt'] = 'SPAM předmět tag2';
 $wb['addr_extension_virus_txt'] = 'Adr. rozšíření virus';
@@ -36,3 +36,4 @@ $wb['spam_admin_txt'] = 'SPAM admin';
 $wb['message_size_limit_txt'] = 'Limit velikosti zprávy';
 $wb['banned_rulenames_txt'] = 'Název pravidel zabanované';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_spamfilter_policy_list.lng b/interface/web/mail/lib/lang/cz_spamfilter_policy_list.lng
index 9a0c3619972097537f5e8847b27e24d9df73be74..0ff38e1091612929e12bed58d7823d535e79d94f 100644
--- a/interface/web/mail/lib/lang/cz_spamfilter_policy_list.lng
+++ b/interface/web/mail/lib/lang/cz_spamfilter_policy_list.lng
@@ -7,3 +7,4 @@ $wb['banned_files_lover_txt'] = 'Zabanované soubory';
 $wb['bad_header_lover_txt'] = 'Špatné hlavičky';
 $wb['add_new_record_txt'] = 'Přidat záznam politiky';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_spamfilter_users.lng b/interface/web/mail/lib/lang/cz_spamfilter_users.lng
index 4f5c0e867f9bbc8583d7b933aeb84c3b4af2f8bd..40c010147accdd3bdb7efa4bc178b9fc7c3d4d1c 100644
--- a/interface/web/mail/lib/lang/cz_spamfilter_users.lng
+++ b/interface/web/mail/lib/lang/cz_spamfilter_users.lng
@@ -2,9 +2,10 @@
 $wb['server_id_txt'] = 'Server';
 $wb['priority_txt'] = 'Priorita';
 $wb['policy_id_txt'] = 'Politika';
-$wb['email_txt'] = 'Email (vzor)';
+$wb['email_txt'] = 'E-mail (vzor)';
 $wb['fullname_txt'] = 'Název';
 $wb['local_txt'] = 'Lokální';
-$wb['email_error_notempty'] = 'The email address must not be empty.';
-$wb['fullname_error_notempty'] = 'The name must not be empty.';
+$wb['email_error_notempty'] = 'E-mailová adresa nesmí být prázdná.';
+$wb['fullname_error_notempty'] = 'Jméno nesmí být prázdné.';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_spamfilter_users_list.lng b/interface/web/mail/lib/lang/cz_spamfilter_users_list.lng
index 36bf3409e368f4941552e6803305c4da6c86d9b7..f4dd015aa62973845649c190f4526bcbc8524e7e 100644
--- a/interface/web/mail/lib/lang/cz_spamfilter_users_list.lng
+++ b/interface/web/mail/lib/lang/cz_spamfilter_users_list.lng
@@ -8,3 +8,4 @@ $wb['fullname_txt'] = 'Jméno';
 $wb['email_txt'] = 'E-mail';
 $wb['add_new_record_txt'] = 'Přidat spamfiltr uživatele';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_spamfilter_whitelist.lng b/interface/web/mail/lib/lang/cz_spamfilter_whitelist.lng
index 5e0c6b779909284280bdc5a4278a01c005e471d5..2b929082c7b2cd1a9349f854a66400e68a0d0ac0 100644
--- a/interface/web/mail/lib/lang/cz_spamfilter_whitelist.lng
+++ b/interface/web/mail/lib/lang/cz_spamfilter_whitelist.lng
@@ -7,3 +7,4 @@ $wb['priority_txt'] = 'Priorita';
 $wb['active_txt'] = 'Aktivní';
 $wb['limit_spamfilter_wblist_txt'] = 'Dosažen maximální počet záznamů pro bílou / černou listinu pro Váš účet.';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_spamfilter_whitelist_list.lng b/interface/web/mail/lib/lang/cz_spamfilter_whitelist_list.lng
index ad13897004c305fbb7a6133ba447a60c39c3668e..65ac33365c8a7c79ddfac413293e75182b12237f 100644
--- a/interface/web/mail/lib/lang/cz_spamfilter_whitelist_list.lng
+++ b/interface/web/mail/lib/lang/cz_spamfilter_whitelist_list.lng
@@ -7,3 +7,4 @@ $wb['rid_txt'] = 'Uživatel';
 $wb['email_txt'] = 'Emaily na bílé listině';
 $wb['add_new_record_txt'] = 'Přidat záznam na bílou listinu';
 ?>
+
diff --git a/interface/web/mail/lib/lang/cz_user_quota_stats_list.lng b/interface/web/mail/lib/lang/cz_user_quota_stats_list.lng
index f60e616517ca05badd15aae5bd0ec7c161636133..d53237fb3d0723ec2fb50fc710e8ed062dadda1d 100755
--- a/interface/web/mail/lib/lang/cz_user_quota_stats_list.lng
+++ b/interface/web/mail/lib/lang/cz_user_quota_stats_list.lng
@@ -1,8 +1,9 @@
 <?php
-$wb['list_head_txt'] = 'Mailbox kvóta';
+$wb['list_head_txt'] = 'Kvóta e-mailové schránky';
 $wb['quota_txt'] = 'Kvóta';
 $wb['name_txt'] = 'Jméno';
 $wb['email_txt'] = 'E-mailová adresa';
 $wb['used_txt'] = 'Využité místo';
-$wb['percentage_txt'] = 'Used %';
+$wb['percentage_txt'] = 'Využité místo v %';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de.lng b/interface/web/mail/lib/lang/de.lng
index 91418972dd0c69f73d0d4f1aba6d1d2e218f0ced..12b6ba70453febb67f2dc3ec989f0fa4252f326a 100644
--- a/interface/web/mail/lib/lang/de.lng
+++ b/interface/web/mail/lib/lang/de.lng
@@ -46,3 +46,4 @@ $wb['Domain Alias'] = 'E-Mail Domain Alias';
 $wb['Relay Recipients'] = 'Relay Empfänger';
 $wb['Mailbox quota'] = 'E-Mail Konto Speichernutzung';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_alias.lng b/interface/web/mail/lib/lang/de_mail_alias.lng
index c11499effa97e5e7c634eb435b06f7104ee094b4..572c09a9c15b5e05ce99bd253e460a159a92b169 100644
--- a/interface/web/mail/lib/lang/de_mail_alias.lng
+++ b/interface/web/mail/lib/lang/de_mail_alias.lng
@@ -12,3 +12,4 @@ $wb['domain_txt'] = 'Domain';
 $wb['duplicate_email_alias_txt'] = 'Dieser E-Mail Alias existiert bereits.';
 $wb['source_txt'] = 'Alias';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_alias_list.lng b/interface/web/mail/lib/lang/de_mail_alias_list.lng
index e741d02b3b504364b76b408bce61d8fe48418fb5..7c0c1145ae31398060a3689a182e0f3a457edf4c 100644
--- a/interface/web/mail/lib/lang/de_mail_alias_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_alias_list.lng
@@ -6,3 +6,4 @@ $wb['destination_txt'] = 'Ziel';
 $wb['email_txt'] = 'E-Mail Adresse';
 $wb['add_new_record_txt'] = 'Neuen E-Mail Alias hinzufügen';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_aliasdomain.lng b/interface/web/mail/lib/lang/de_mail_aliasdomain.lng
index f75bd1659c475a36ecec5f11119fa71d1380b9b4..38d775f4441d64180cd4986c1fa1db0ee1432649 100644
--- a/interface/web/mail/lib/lang/de_mail_aliasdomain.lng
+++ b/interface/web/mail/lib/lang/de_mail_aliasdomain.lng
@@ -9,3 +9,4 @@ $wb['source_error_empty'] = 'Quell Domain ist leer.';
 $wb['source_error_unique'] = 'Quell Domain duplizieren.';
 $wb['source_error_regex'] = 'Ungültiger Quell Domainname.';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_aliasdomain_list.lng b/interface/web/mail/lib/lang/de_mail_aliasdomain_list.lng
index c386d429bc088420bed04c4a0618ff0e32a95254..d7ae9aeaa11cad662f23ecd78bc5a90713de2579 100644
--- a/interface/web/mail/lib/lang/de_mail_aliasdomain_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_aliasdomain_list.lng
@@ -5,3 +5,4 @@ $wb['source_txt'] = 'Quelle';
 $wb['destination_txt'] = 'Ziel';
 $wb['add_new_record_txt'] = 'Neuen E-Mail Domain Alias hinzufügen';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_blacklist.lng b/interface/web/mail/lib/lang/de_mail_blacklist.lng
index 4611dadd063c6eefcf51a2cada37f663975b2c05..474d1ad41aa57b5d25c9db3381e2cdcc3be8db40 100644
--- a/interface/web/mail/lib/lang/de_mail_blacklist.lng
+++ b/interface/web/mail/lib/lang/de_mail_blacklist.lng
@@ -7,3 +7,4 @@ $wb['source_error_notempty'] = 'Adresse ist leer.';
 $wb['type_txt'] = 'Typ';
 $wb['limit_mailfilter_txt'] = 'Die maximale Anzahl an E-Mail Filter für Ihr Konto wurde erreicht.';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_blacklist_list.lng b/interface/web/mail/lib/lang/de_mail_blacklist_list.lng
index b169909112a091d9488d23e3fd329d913ab9ef22..03b1b46e790a75069ba647a91dc40ddfd1e8b9d0 100644
--- a/interface/web/mail/lib/lang/de_mail_blacklist_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_blacklist_list.lng
@@ -8,3 +8,4 @@ $wb['recipient_txt'] = 'Empfänger';
 $wb['add_new_record_txt'] = 'Neuen Blacklist Eintrag hinzufügen';
 $wb['access_txt'] = 'Zugriff';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_content_filter.lng b/interface/web/mail/lib/lang/de_mail_content_filter.lng
index 9ea5422498ca02ee535e54101947445c1f4e9f5e..48348b20af5755fa29802652d90f8952b39e3de1 100644
--- a/interface/web/mail/lib/lang/de_mail_content_filter.lng
+++ b/interface/web/mail/lib/lang/de_mail_content_filter.lng
@@ -7,3 +7,4 @@ $wb['action_txt'] = 'Aktion';
 $wb['active_txt'] = 'Aktiv';
 $wb['pattern_error_empty'] = 'Zeichenkette ist leer';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_content_filter_list.lng b/interface/web/mail/lib/lang/de_mail_content_filter_list.lng
index 126f23ce4e72ffce038ed3294a28edd16bc35622..930f1e53783f929fea47f8361ed078dc394a229f 100644
--- a/interface/web/mail/lib/lang/de_mail_content_filter_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_content_filter_list.lng
@@ -6,3 +6,4 @@ $wb['pattern_txt'] = 'Zeichenkette';
 $wb['action_txt'] = 'Aktion';
 $wb['add_new_record_txt'] = 'Neuen Inhaltsfilter hinzufügen';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_domain.lng b/interface/web/mail/lib/lang/de_mail_domain.lng
index ff6da2ab125cda0c3b19c2bb76afb3c02422f22c..85028d9ce543432d7e83d43581b3f121a158dc27 100644
--- a/interface/web/mail/lib/lang/de_mail_domain.lng
+++ b/interface/web/mail/lib/lang/de_mail_domain.lng
@@ -11,3 +11,4 @@ $wb['limit_maildomain_txt'] = 'Die maximale Anzahl an E-Mail Domains für Ihr Ko
 $wb['policy_txt'] = 'Spamfilter';
 $wb['no_policy'] = '- nicht aktiviert -';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_domain_admin_list.lng b/interface/web/mail/lib/lang/de_mail_domain_admin_list.lng
index 403bb90feea2d1b3afb3cb6736869bc39d5cd0b7..3f5bde4e6407d50a9931bf3041b31a4654a1fe4a 100644
--- a/interface/web/mail/lib/lang/de_mail_domain_admin_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_domain_admin_list.lng
@@ -6,3 +6,4 @@ $wb['add_new_record_txt'] = 'Neue Domain hinzufügen';
 $wb['active_txt'] = 'Aktiv';
 $wb['sys_groupid_txt'] = 'Kunde';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_domain_catchall.lng b/interface/web/mail/lib/lang/de_mail_domain_catchall.lng
index 9f37e56697126ed078d799f3c9ce4faeed8155c1..6c63bf26e91ea9689a2ed1ea69d538ab2ee55324 100644
--- a/interface/web/mail/lib/lang/de_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/de_mail_domain_catchall.lng
@@ -9,3 +9,4 @@ $wb['limit_mailcatchall_txt'] = 'Die maximale Anzahl an Catchall Einträgen für
 $wb['source_txt'] = 'Quelle';
 $wb['destination_error_isemail'] = 'Das Ziel ist keine gültige E-Mail Adresse.';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_domain_catchall_list.lng b/interface/web/mail/lib/lang/de_mail_domain_catchall_list.lng
index 558cb5c9f9614d04bcc7a7de06cff7f57fadd794..7ce05d321b6bcae5a5519aeb6370f24055238403 100644
--- a/interface/web/mail/lib/lang/de_mail_domain_catchall_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_domain_catchall_list.lng
@@ -7,3 +7,4 @@ $wb['server_id_txt'] = 'Server';
 $wb['domain_txt'] = 'Domain';
 $wb['add_new_record_txt'] = 'Neuen Catchall hinzufügen';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_domain_list.lng b/interface/web/mail/lib/lang/de_mail_domain_list.lng
index ff25a5817d728e966d06991d5225d2940c718bb8..3a7a39314206851fb7798c9aa08fb68869232ef9 100644
--- a/interface/web/mail/lib/lang/de_mail_domain_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_domain_list.lng
@@ -5,3 +5,4 @@ $wb['domain_txt'] = 'Domain';
 $wb['add_new_record_txt'] = 'Neue Domain hinzufügen';
 $wb['active_txt'] = 'Aktiv';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_forward.lng b/interface/web/mail/lib/lang/de_mail_forward.lng
index a392ac4e33b18073de853b94f08b3f23510fc8a9..56a82afa6cd64f84b3c979bce34fa400e857e1ae 100644
--- a/interface/web/mail/lib/lang/de_mail_forward.lng
+++ b/interface/web/mail/lib/lang/de_mail_forward.lng
@@ -7,3 +7,4 @@ $wb['duplicate_mailbox_txt'] = 'Es existiert bereits ein E-Mail Konto mit dieser
 $wb['domain_txt'] = 'Domain';
 $wb['source_txt'] = 'Quell E-Mail Adresse';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_forward_list.lng b/interface/web/mail/lib/lang/de_mail_forward_list.lng
index 99b6ab5ea44efdd5bc736f4d6d9bb3b3275ebc4b..01b295061ca63c5a4bdb64c25577efc81d2a7930 100644
--- a/interface/web/mail/lib/lang/de_mail_forward_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_forward_list.lng
@@ -6,3 +6,4 @@ $wb['destination_txt'] = 'Ziel';
 $wb['email_txt'] = 'E-Mail';
 $wb['add_new_record_txt'] = 'Neue E-Mail Weiterleitung hinzufügen';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_get.lng b/interface/web/mail/lib/lang/de_mail_get.lng
index e6064caba8447317a28b99862343b9ffa4869d12..4100c3844b025cc8d03f1431be1af11260f2a1d9 100644
--- a/interface/web/mail/lib/lang/de_mail_get.lng
+++ b/interface/web/mail/lib/lang/de_mail_get.lng
@@ -14,5 +14,6 @@ $wb['source_password_error_isempty'] = 'Passwort ist leer.';
 $wb['destination_error_isemail'] = 'Kein Ziel gewählt.';
 $wb['source_server_error_regex'] = 'POP3/IMAP Server ist kein gültiger Domainname.';
 $wb['source_read_all_txt'] = 'Alle E-Mails abrufen (inkl. bereits gelesene E-Mails)';
-$wb['error_delete_read_all_combination'] = 'Unzulässige Kombination von Optionen. Sie können "E-Mails nach Empfang löschen" = nein nicht zusammen mit "Alle E-Mails abrufen (inkl. bereits gelesene E-Mails)" = ja benutzen.';
+$wb['error_delete_read_all_combination'] = 'Unzulässige Kombination von Optionen. Sie können ';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_get_list.lng b/interface/web/mail/lib/lang/de_mail_get_list.lng
index d1923581228edf966b5fbfc0f120617d15e6f909..a0ee458e8a48e92cd63f6b54d48025b6de3cace1 100644
--- a/interface/web/mail/lib/lang/de_mail_get_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_get_list.lng
@@ -7,3 +7,4 @@ $wb['source_username_txt'] = 'Benutzername';
 $wb['destination_txt'] = 'Ziel';
 $wb['add_new_record_txt'] = 'Neues Konto hinzufügen';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_mailinglist.lng b/interface/web/mail/lib/lang/de_mail_mailinglist.lng
index 1d143b690c4197d8cd370d638eecc5c4103259be..04320e016b3c07db37cb82096952e00882af7fd1 100644
--- a/interface/web/mail/lib/lang/de_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/de_mail_mailinglist.lng
@@ -20,3 +20,4 @@ $wb['listname_error_unique'] = 'Es beseht bereits eine Mailingliste mit diesem N
 $wb['email_error_isemail'] = 'Die E-Mail Adresse ist falsch.';
 $wb['mailinglist_txt'] = 'Mailingliste';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_mailinglist_list.lng b/interface/web/mail/lib/lang/de_mail_mailinglist_list.lng
index 3eee785f264d9e766ca1fcb2ada41de77c295aff..c9959f0007a9b78bfc8468da70f1c1da70ea6588 100644
--- a/interface/web/mail/lib/lang/de_mail_mailinglist_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_mailinglist_list.lng
@@ -3,3 +3,4 @@ $wb['list_head_txt'] = 'Mailinglisten';
 $wb['domain_txt'] = 'Domain';
 $wb['listname_txt'] = 'Listenname';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_relay_recipient.lng b/interface/web/mail/lib/lang/de_mail_relay_recipient.lng
index 37a2401071f823af3e057d049c091af5cd2783ff..1ab7da86d115a46e227de375a79880d0b4152fda 100644
--- a/interface/web/mail/lib/lang/de_mail_relay_recipient.lng
+++ b/interface/web/mail/lib/lang/de_mail_relay_recipient.lng
@@ -7,3 +7,4 @@ $wb['source_error_notempty'] = 'Adresse ist leer.';
 $wb['type_txt'] = 'Typ';
 $wb['limit_mailfilter_txt'] = 'Die maximale Anzahl an E-Mail Filtern für Ihr Konto wurde erreicht.';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_relay_recipient_list.lng b/interface/web/mail/lib/lang/de_mail_relay_recipient_list.lng
index fc5d6f47c545a835f0f438b46064e289cf69450b..ec6574a590331e795b555d7c49afa27fdf4d8dc7 100644
--- a/interface/web/mail/lib/lang/de_mail_relay_recipient_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_relay_recipient_list.lng
@@ -7,3 +7,4 @@ $wb['recipient_txt'] = 'Empfänger';
 $wb['add_new_record_txt'] = 'Neuen Relay Empfänger hinzufügen';
 $wb['access_txt'] = 'Zugriff';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_spamfilter.lng b/interface/web/mail/lib/lang/de_mail_spamfilter.lng
index b133a4129ba560d85003c1e50c27a57b77ca450c..f8c0778674349578aa60c9c4c0147a269a971ce5 100644
--- a/interface/web/mail/lib/lang/de_mail_spamfilter.lng
+++ b/interface/web/mail/lib/lang/de_mail_spamfilter.lng
@@ -15,3 +15,4 @@ $wb['email_error_unique'] = 'Es existiert bereits ein Spamfilter Eintrag für di
 $wb['spam_redirect_maildir_purge_txt'] = 'Lösche E-Mail Verzeichnis nach';
 $wb['days_txt'] = 'Tagen.';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_spamfilter_list.lng b/interface/web/mail/lib/lang/de_mail_spamfilter_list.lng
index 95c7d406a5589307e38541ca64df0111335b6c68..7ccd9f5ffac42f50798db30eeaa6be6b21398596 100644
--- a/interface/web/mail/lib/lang/de_mail_spamfilter_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_spamfilter_list.lng
@@ -6,3 +6,4 @@ $wb['server_name_txt'] = 'Servername';
 $wb['email_txt'] = 'E-Mail';
 $wb['add_new_record_txt'] = 'Neuen Spamfilter Eintrag hinzufügen';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_transport.lng b/interface/web/mail/lib/lang/de_mail_transport.lng
index 873036f947329e3df2ef874909f4dc0749954aef..578afe8e799d78d00723518bb5cedf399f66496b 100644
--- a/interface/web/mail/lib/lang/de_mail_transport.lng
+++ b/interface/web/mail/lib/lang/de_mail_transport.lng
@@ -9,3 +9,4 @@ $wb['active_txt'] = 'Aktiv';
 $wb['limit_mailrouting_txt'] = 'Die maximale Anzahl an E-Mail Routen für Ihr Konto wurde erreicht.';
 $wb['transport_txt'] = 'Transport';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_transport_list.lng b/interface/web/mail/lib/lang/de_mail_transport_list.lng
index 6c9f8656c4ed90fdef951f6d1de59673a3bb189d..213b3d28ae0c8de7454726ac5f7ab6c2da4ec3c1 100644
--- a/interface/web/mail/lib/lang/de_mail_transport_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_transport_list.lng
@@ -7,3 +7,4 @@ $wb['transport_txt'] = 'Transport';
 $wb['sort_order_txt'] = 'Sortiert nach';
 $wb['add_new_record_txt'] = 'Neuen Transport hinzufügen';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_user.lng b/interface/web/mail/lib/lang/de_mail_user.lng
index 87a55631f211570f253ef53c99a01ccfcf224f85..d97af7b3b472aaa766fe2b2feb0938b010bb962e 100644
--- a/interface/web/mail/lib/lang/de_mail_user.lng
+++ b/interface/web/mail/lib/lang/de_mail_user.lng
@@ -48,3 +48,4 @@ $wb['repeat_password_txt'] = 'Passwort wiederholen';
 $wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
 $wb['password_match_txt'] = 'Die Passwörter stimmen überein.';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_user_filter.lng b/interface/web/mail/lib/lang/de_mail_user_filter.lng
index 38c324eb8d7ce175df3baf059e9a49b212922756..9a8d7dcd513426f138f5c1c7bea9fb6d7937acc5 100644
--- a/interface/web/mail/lib/lang/de_mail_user_filter.lng
+++ b/interface/web/mail/lib/lang/de_mail_user_filter.lng
@@ -18,3 +18,4 @@ $wb['ends_with_txt'] = 'Endet mit';
 $wb['move_to_txt'] = 'Verschieben nach';
 $wb['delete_txt'] = 'Löschen';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_user_filter_list.lng b/interface/web/mail/lib/lang/de_mail_user_filter_list.lng
index 003ed0e244c8abff281cfb586495b5cb8a353711..695e404c826261bbcd454c87615f85691f2ad3d1 100644
--- a/interface/web/mail/lib/lang/de_mail_user_filter_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_user_filter_list.lng
@@ -5,3 +5,4 @@ $wb['page_txt'] = 'Seite';
 $wb['page_of_txt'] = 'von';
 $wb['delete_confirmation'] = 'Wollen Sie den Filter wirklich löschen?';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_user_list.lng b/interface/web/mail/lib/lang/de_mail_user_list.lng
index a56fb6da1440cc1687537202a3e92f11c09294ec..50580a94698534e91a66f195402ae056a7cb37c3 100644
--- a/interface/web/mail/lib/lang/de_mail_user_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_user_list.lng
@@ -6,3 +6,4 @@ $wb['add_new_record_txt'] = 'Neues E-Mail Konto hinzufügen';
 $wb['name_txt'] = 'Realname';
 $wb['login_txt'] = 'Anmelden';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_user_stats_list.lng b/interface/web/mail/lib/lang/de_mail_user_stats_list.lng
index e9a1983946cc4522578ee08076ebdf40d3060afd..3291ae42708e38e774087d018ee06fcd223b1cf0 100644
--- a/interface/web/mail/lib/lang/de_mail_user_stats_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_user_stats_list.lng
@@ -6,3 +6,4 @@ $wb['last_month_txt'] = 'Vergangenes Monat';
 $wb['this_year_txt'] = 'Aktuelles Jahr';
 $wb['last_year_txt'] = 'Vergangenes Jahr';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_whitelist.lng b/interface/web/mail/lib/lang/de_mail_whitelist.lng
index 1506deba3f92bcd98b26d8a699e6171e6e039fa5..d09be9a48d083d440e19e6aba2d7a4066c40e24f 100644
--- a/interface/web/mail/lib/lang/de_mail_whitelist.lng
+++ b/interface/web/mail/lib/lang/de_mail_whitelist.lng
@@ -7,3 +7,4 @@ $wb['source_error_notempty'] = 'E-Mail Adresse ist leer.';
 $wb['type_txt'] = 'Typ';
 $wb['limit_mailfilter_txt'] = 'Die maximale Anzahl an E-Mail Filtern für Ihr Konto wurde erreicht.';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_mail_whitelist_list.lng b/interface/web/mail/lib/lang/de_mail_whitelist_list.lng
index bcd4ccb4e10e35320fbefee5751f88c7aac9c878..cf511a56543ab60434b218cc1ad6071dba3cc922 100644
--- a/interface/web/mail/lib/lang/de_mail_whitelist_list.lng
+++ b/interface/web/mail/lib/lang/de_mail_whitelist_list.lng
@@ -8,3 +8,4 @@ $wb['recipient_txt'] = 'Empfänger';
 $wb['add_new_record_txt'] = 'Whitelist Eintrag hinzufügen';
 $wb['access_txt'] = 'Zugriff';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_spamfilter_blacklist.lng b/interface/web/mail/lib/lang/de_spamfilter_blacklist.lng
index 1dd4c6e3fa7b524d5d7cdb919000b0ee1099d5b0..9be7f067cf23fade940c307de1bba562f44d989b 100644
--- a/interface/web/mail/lib/lang/de_spamfilter_blacklist.lng
+++ b/interface/web/mail/lib/lang/de_spamfilter_blacklist.lng
@@ -7,3 +7,4 @@ $wb['priority_txt'] = 'Priorität';
 $wb['active_txt'] = 'Aktiv';
 $wb['limit_spamfilter_wblist_txt'] = 'Die maximale Anzahl an White- oder Blacklist Einträgen für ihr Konto wurde erreicht.';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_spamfilter_blacklist_list.lng b/interface/web/mail/lib/lang/de_spamfilter_blacklist_list.lng
index 7ba623b657d32f07b475cf4d1170f1861a325564..a0fe0722c70ccd879a4a0a6ab915cfe8220526e1 100644
--- a/interface/web/mail/lib/lang/de_spamfilter_blacklist_list.lng
+++ b/interface/web/mail/lib/lang/de_spamfilter_blacklist_list.lng
@@ -7,3 +7,4 @@ $wb['rid_txt'] = 'Benutzer';
 $wb['email_txt'] = 'Blacklisted E-Mail Adressen';
 $wb['add_new_record_txt'] = 'Blacklist Eintrag hinzufügen';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_spamfilter_config.lng b/interface/web/mail/lib/lang/de_spamfilter_config.lng
index 2cf223259bcf07322277951765d98727183b69c7..d00b2b15d0b34b79ef48c249397c9ca2c8d83b0a 100644
--- a/interface/web/mail/lib/lang/de_spamfilter_config.lng
+++ b/interface/web/mail/lib/lang/de_spamfilter_config.lng
@@ -18,3 +18,4 @@ $wb['relayhost_password_txt'] = 'Relayhost Passwort';
 $wb['mailbox_size_limit_txt'] = 'E-Mail Kontogrössenlimit';
 $wb['message_size_limit_txt'] = 'Nachrichtengrössenlimit';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_spamfilter_config_list.lng b/interface/web/mail/lib/lang/de_spamfilter_config_list.lng
index db92a4bd07e30257b74f3ccda5354bb60d98e60b..579d3155de12d507a1b8d7d31af8527299fa9179 100644
--- a/interface/web/mail/lib/lang/de_spamfilter_config_list.lng
+++ b/interface/web/mail/lib/lang/de_spamfilter_config_list.lng
@@ -3,3 +3,4 @@ $wb['list_head_txt'] = 'Serverkonfiguration';
 $wb['server_name_txt'] = 'Server';
 $wb['server_id_txt'] = 'Server ID';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_spamfilter_policy.lng b/interface/web/mail/lib/lang/de_spamfilter_policy.lng
index 32acca46860822f960c1d03ce316e047a29a3afc..60f8b86acdb783d894d3704d55549fced6b96f17 100644
--- a/interface/web/mail/lib/lang/de_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/de_spamfilter_policy.lng
@@ -36,3 +36,4 @@ $wb['spam_admin_txt'] = 'SPAM Administrator';
 $wb['message_size_limit_txt'] = 'Nachrichtengrößen Limit';
 $wb['banned_rulenames_txt'] = 'Banned Richtliniennamen';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_spamfilter_policy_list.lng b/interface/web/mail/lib/lang/de_spamfilter_policy_list.lng
index b5ec8e98c2d57e48e05b415ca69add0d8cb43f38..02083ef5d1a0cb5d7c9f8a27c3f57fb075287b44 100644
--- a/interface/web/mail/lib/lang/de_spamfilter_policy_list.lng
+++ b/interface/web/mail/lib/lang/de_spamfilter_policy_list.lng
@@ -7,3 +7,4 @@ $wb['banned_files_lover_txt'] = 'Gesperrte Dateien Liebhaber';
 $wb['bad_header_lover_txt'] = 'Ungültige Header Liebhaber';
 $wb['add_new_record_txt'] = 'Richtlinien Eintrag hinzufügen';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_spamfilter_users.lng b/interface/web/mail/lib/lang/de_spamfilter_users.lng
index b7f6cd496bfbd53a234f84b5db73db3a2eb90ae8..cf9f0cd2215727307966009cb77bd1059c8903d4 100644
--- a/interface/web/mail/lib/lang/de_spamfilter_users.lng
+++ b/interface/web/mail/lib/lang/de_spamfilter_users.lng
@@ -8,3 +8,4 @@ $wb['local_txt'] = 'Lokal';
 $wb['email_error_notempty'] = 'Die E-Mail-Adresse darf nicht leer sein.';
 $wb['fullname_error_notempty'] = 'Der Name darf nicht leer sein.';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_spamfilter_users_list.lng b/interface/web/mail/lib/lang/de_spamfilter_users_list.lng
index 8e53193f7007c120c17d62fc8224528d29787c18..89a5983289a4c701f68d97daa15e2185dba05535 100644
--- a/interface/web/mail/lib/lang/de_spamfilter_users_list.lng
+++ b/interface/web/mail/lib/lang/de_spamfilter_users_list.lng
@@ -8,3 +8,4 @@ $wb['fullname_txt'] = 'Name';
 $wb['email_txt'] = 'E-Mail Adresse';
 $wb['add_new_record_txt'] = 'Spamfilterbenutzer hinzufügen';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_spamfilter_whitelist.lng b/interface/web/mail/lib/lang/de_spamfilter_whitelist.lng
index d388432c66dbe039820fcbddba5dd0f1a54fe8fb..bb8278189d8060588910c3e66a89952ddbcc8071 100644
--- a/interface/web/mail/lib/lang/de_spamfilter_whitelist.lng
+++ b/interface/web/mail/lib/lang/de_spamfilter_whitelist.lng
@@ -7,3 +7,4 @@ $wb['priority_txt'] = 'Priorität';
 $wb['active_txt'] = 'Aktiv';
 $wb['limit_spamfilter_wblist_txt'] = 'Die maximale Anzahl an White- oder Blacklist Einträgen für Ihr Konto wurde erreicht.';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_spamfilter_whitelist_list.lng b/interface/web/mail/lib/lang/de_spamfilter_whitelist_list.lng
index 4d7769d2aa3eb3dc8e25e7b3c51556b5bb40012c..ed8a22089826dbb2b5aaf8d7b0a93640e4aec942 100644
--- a/interface/web/mail/lib/lang/de_spamfilter_whitelist_list.lng
+++ b/interface/web/mail/lib/lang/de_spamfilter_whitelist_list.lng
@@ -7,3 +7,4 @@ $wb['rid_txt'] = 'Benutzer';
 $wb['email_txt'] = 'Whitelisted E-Mail Adresse';
 $wb['add_new_record_txt'] = 'Whitelist Eintrag hinzufügen';
 ?>
+
diff --git a/interface/web/mail/lib/lang/de_user_quota_stats_list.lng b/interface/web/mail/lib/lang/de_user_quota_stats_list.lng
index beb9c18eb9f8ba1de9fb80437875b64b642b88d6..372c7b37fee38bade49a3828022c41ba28f326f2 100755
--- a/interface/web/mail/lib/lang/de_user_quota_stats_list.lng
+++ b/interface/web/mail/lib/lang/de_user_quota_stats_list.lng
@@ -6,3 +6,4 @@ $wb['email_txt'] = 'E-Mail Adresse';
 $wb['used_txt'] = 'Verbrauchter Speicherplatz';
 $wb['percentage_txt'] = 'Verbraucht in %';
 ?>
+
diff --git a/interface/web/mail/lib/lang/el.lng b/interface/web/mail/lib/lang/el.lng
index f8cadc62f009b1763e9c1ce6e0d7efc720834792..74c51a8931af18b1676db977232f616b94c094b9 100644
--- a/interface/web/mail/lib/lang/el.lng
+++ b/interface/web/mail/lib/lang/el.lng
@@ -11,7 +11,7 @@ $wb['Email Forward'] = 'Email Προώθησης';
 $wb['Get Email'] = 'Λήψη Email';
 $wb['Spamfilter'] = 'Φίλτρο Spam';
 $wb['Email Routing'] = 'Δρομολόγηση Email';
-$wb['Email transport'] = 'Μεταφορά Email';
+$wb['Email transport'] = 'Δρομολογήση Email';
 $wb['Mailbox'] = 'Θυρίδα';
 $wb['Autoresponder'] = 'Αυτόματη απάντηση';
 $wb['Mail Filter'] = 'Φίλτρο Mail';
@@ -44,5 +44,5 @@ $wb['Content Filter'] = 'Φίλτρο Περιεχομένου';
 $wb['Global Filters'] = 'Καθολικά Φίλτρα';
 $wb['Domain Alias'] = 'Ψευδώνυμο Domain';
 $wb['Relay Recipients'] = 'Παραλήπτες Relay';
-$wb['Mailbox quota'] = 'Mailbox quota';
+$wb['Mailbox quota'] = 'Όριο θυρίδας Mail';
 ?>
diff --git a/interface/web/mail/lib/lang/el_mail_alias.lng b/interface/web/mail/lib/lang/el_mail_alias.lng
index 7915af451cb689077198b4d93fcdc1d09ceeb263..48d35a01abf437c98b4431235cc884a92a4c11c8 100644
--- a/interface/web/mail/lib/lang/el_mail_alias.lng
+++ b/interface/web/mail/lib/lang/el_mail_alias.lng
@@ -9,6 +9,6 @@ $wb['destination_error_isemail'] = 'Η διεύθυνση Email παραλήπτ
 $wb['limit_mailalias_txt'] = 'Έχετε φτάσει το μέγιστο πλήθος των ψευδωνύμων email για τον λογαριασμό σας.';
 $wb['duplicate_mailbox_txt'] = 'Υπάρχει ήδη μια θυρίδα με αυτή τη διεύθυνση email';
 $wb['domain_txt'] = 'Domain';
-$wb['duplicate_email_alias_txt'] = 'This email alias does already exist.';
-$wb['source_txt'] = 'Alias';
+$wb['duplicate_email_alias_txt'] = 'Το ψευδώνυμο για το email υπάρχει ήδη.';
+$wb['source_txt'] = 'Ψευδώνυμο';
 ?>
diff --git a/interface/web/mail/lib/lang/el_mail_domain_catchall.lng b/interface/web/mail/lib/lang/el_mail_domain_catchall.lng
index 43c0bdf5658a522b34f3badebc2ddec1849d5c5d..fc5c0d7bb5ecc46faf446d2f455decfc53df3814 100644
--- a/interface/web/mail/lib/lang/el_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/el_mail_domain_catchall.lng
@@ -6,6 +6,6 @@ $wb['domain_error_unique'] = 'Υπάρχει ήδη μία εγγραφή Catcha
 $wb['no_domain_perm'] = 'Δεν έχετε δικαιώματα για αυτό το domain.';
 $wb['domain_error_regex'] = 'Μη έγκρυρο όνομα domain ή το όνομα περιέχει μη επιτρεπόμενους χαρακτήρες';
 $wb['limit_mailcatchall_txt'] = 'Το μέγιστο πλήθος των email catchall για τον λογαριασμό σας, έχει εξαντληθεί.';
-$wb['source_txt'] = 'Source';
-$wb['destination_error_isemail'] = 'Destination is no valid email address.';
+$wb['source_txt'] = 'Πηγή';
+$wb['destination_error_isemail'] = 'Ο προορισμός δεν είναι έγκυρη διεύθυνση email.';
 ?>
diff --git a/interface/web/mail/lib/lang/el_mail_forward.lng b/interface/web/mail/lib/lang/el_mail_forward.lng
index ba166179d5abdc8fc76f27dddf5d8f62f37330d5..78ce691b0b6b616b47530d2059a22c10a031e966 100644
--- a/interface/web/mail/lib/lang/el_mail_forward.lng
+++ b/interface/web/mail/lib/lang/el_mail_forward.lng
@@ -5,5 +5,5 @@ $wb['active_txt'] = 'Ενεργό';
 $wb['limit_mailforward_txt'] = 'Το μέγιστο πλήθος των email forwarders για τον λογαρισμό σας, έχει εξαντληθεί';
 $wb['duplicate_mailbox_txt'] = 'Υπάρχει ήδη μια θυρίδα με αυτή τη διεύθυνση email';
 $wb['domain_txt'] = 'Domain';
-$wb['source_txt'] = 'Source Email';
+$wb['source_txt'] = 'Πηγή Email';
 ?>
diff --git a/interface/web/mail/lib/lang/el_mail_get.lng b/interface/web/mail/lib/lang/el_mail_get.lng
index 500b16aba8561dd56d769494c3ac613910743c0c..1ba5c20ab34ad23a36fca8de3e8f6ce9a55469f0 100644
--- a/interface/web/mail/lib/lang/el_mail_get.lng
+++ b/interface/web/mail/lib/lang/el_mail_get.lng
@@ -4,7 +4,7 @@ $wb['type_txt'] = 'Τύπος';
 $wb['source_server_txt'] = 'Pop3/Imap Server';
 $wb['source_username_txt'] = 'Όνομα Χρήστη';
 $wb['source_password_txt'] = 'Συνθηματικό';
-$wb['source_delete_txt'] = 'Διαγραφή email μετά την απόκτηση';
+$wb['source_delete_txt'] = 'Διαγραφή email μετά την ανάκτηση';
 $wb['destination_txt'] = 'Προορισμός';
 $wb['active_txt'] = 'Ενεργός';
 $wb['limit_fetchmail_txt'] = 'Έχετε φτάσει το μέγιστο πλήθος των εγγραφών Fetchmail για τον λογαριασμό σας.';
@@ -14,5 +14,5 @@ $wb['source_password_error_isempty'] = 'Το Συνθηματικό δεν έχ
 $wb['destination_error_isemail'] = 'Δεν επιλέχθηκε προορισμός.';
 $wb['source_server_error_regex'] = 'Το όνομα του Pop3/Imap Server δεν είναι έγκυρο.';
 $wb['source_read_all_txt'] = 'Ανάκτηση όλων των emails (συμπερ. αναγνωσμένων mails)';
-$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \\"Delete emails after retrieval\\" = no together with \\"Retrieve all emails\\" = yes';
+$wb['error_delete_read_all_combination'] = 'Μη έγκυρος συνδυασμός επιλογών. Δεν μπορείτε να χρησιμοποιήσετε την επιλογή  \\"Διαγραφή email μετά την ανάκτηση\\" = ΟΧΙ μαζί με \\"Ανάκτηση όλων των emails\\" = ΝΑΙ';
 ?>
diff --git a/interface/web/mail/lib/lang/el_mail_mailinglist.lng b/interface/web/mail/lib/lang/el_mail_mailinglist.lng
index 1942ea5a5bae9583b019e25cd93b242bc2b94473..6384e115f24c984bfbaf670d1c2d01d721e83f0c 100644
--- a/interface/web/mail/lib/lang/el_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/el_mail_mailinglist.lng
@@ -2,21 +2,21 @@
 $wb['limit_mailmailinglist_txt'] = 'Το όριο ξεπεράστηκε.';
 $wb['domain_error_empty'] = 'Το Domain είναι άδειο.';
 $wb['listname_error_empty'] = 'Η λίστα είναι άδεια.';
-$wb['domain_error_regex'] = 'Το όνομα domain δεν είναι έγκυρο/';
+$wb['domain_error_regex'] = 'Το όνομα domain δεν είναι έγκυρο';
 $wb['email_in_use_txt'] = 'Το email χρησιμοποιείται ήδη.';
 $wb['no_domain_perm'] = 'Δεν έχετε δικαιώματα σε αυτό το domain.';
-$wb['password_strength_txt'] = 'Δύναμη συνθηματικού';
+$wb['password_strength_txt'] = 'Ισχύς Συνθηματικού';
 $wb['server_id_txt'] = 'Server';
 $wb['domain_txt'] = 'Domain';
 $wb['listname_txt'] = 'Όνομα λίστας';
 $wb['client_txt'] = 'Πελάτης';
 $wb['email_txt'] = 'Email';
 $wb['password_txt'] = 'Συνθηματικό';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
-$wb['listname_error_unique'] = 'There is already a mailinlist with name on the server. Please choose a different listname.';
-$wb['email_error_isemail'] = 'Email address is invalid.';
-$wb['mailinglist_txt'] = 'Mailing list';
+$wb['generate_password_txt'] = 'Δημιουργία Συνθηματικού';
+$wb['repeat_password_txt'] = 'Επανάληψη Συνθηματικού';
+$wb['password_mismatch_txt'] = 'Τα συνθηματικά δεν ταιριάζουν.';
+$wb['password_match_txt'] = 'Τα συνθηματικά ταιριάζουν.';
+$wb['listname_error_unique'] = 'Υπάρχει ήδη μια λίστα mail με αυτό το όνομα στον server. Παρακαλούμε επιλέξτε ένα διαφορετικό όνομα.';
+$wb['email_error_isemail'] = 'Η διεύθυνση email δεν είναι έγκυρη';
+$wb['mailinglist_txt'] = 'Λίστα Mail';
 ?>
diff --git a/interface/web/mail/lib/lang/el_mail_spamfilter.lng b/interface/web/mail/lib/lang/el_mail_spamfilter.lng
index 48c4eaa4cdf3c060c9bea1bcf795e73fe55ba737..5c6d90431fdb4ec6c8780d7152684454d89fa0d4 100644
--- a/interface/web/mail/lib/lang/el_mail_spamfilter.lng
+++ b/interface/web/mail/lib/lang/el_mail_spamfilter.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['email_txt'] = 'Email';
-$wb['spam_rewrite_score_int_txt'] = 'Σκορ Επανεγγαφής';
+$wb['spam_rewrite_score_int_txt'] = 'Σκορ Επανεγγραφής';
 $wb['spam_redirect_score_int_txt'] = 'Σκορ Ανακατεύθυνσης';
 $wb['spam_delete_score_int_txt'] = 'Σκορ Διαγραφής';
-$wb['spam_rewrite_subject_txt'] = 'Επανεγγαφή τίτλου';
+$wb['spam_rewrite_subject_txt'] = 'Επανεγγραφή τίτλου';
 $wb['spam_redirect_maildir_txt'] = 'Ανακατεύθυνση θυρίδας';
 $wb['active_txt'] = 'Ενεργό';
-$wb['spam_rewrite_txt'] = 'Επανεγγαφή τίτλου πάνω από αυτό το σκορ.';
+$wb['spam_rewrite_txt'] = 'Επανεγγραφή τίτλου πάνω από αυτό το σκορ.';
 $wb['spam_redirect_txt'] = 'Ανακατεύθυνση email με μεγαλύτερο σκορ σε αυτή την θυρίδα.';
 $wb['spam_delete_txt'] = 'Διαγραφή email με μεγαλύτερο σκορ';
 $wb['disable_txt'] = 'Σημείωση: Για να απενεργοποιήσετε μια επιλογή φίλτρου, βάλτε για σκορ 0.00.';
diff --git a/interface/web/mail/lib/lang/el_mail_transport.lng b/interface/web/mail/lib/lang/el_mail_transport.lng
index 1b1a5c7ab4a0229b7824bf031df672fd926d7a6e..8f6c2903b313c42c78ef962762e069a3811c3cbe 100644
--- a/interface/web/mail/lib/lang/el_mail_transport.lng
+++ b/interface/web/mail/lib/lang/el_mail_transport.lng
@@ -7,5 +7,5 @@ $wb['mx_txt'] = 'Να μην γίνει lookup στον MX';
 $wb['sort_order_txt'] = 'Ταξινόμηση κατά';
 $wb['active_txt'] = 'Ενεργό';
 $wb['limit_mailrouting_txt'] = 'Το μέγιστο πλήθος των δρομολογήσεων email για τον λογαριασμό σας, εξαντλήθηκε.';
-$wb['transport_txt'] = 'Transport';
+$wb['transport_txt'] = 'Δρομολογήση';
 ?>
diff --git a/interface/web/mail/lib/lang/el_mail_transport_list.lng b/interface/web/mail/lib/lang/el_mail_transport_list.lng
index 249eee9e5cd1f6c6f99ce6be10dcfd599cc62396..d809edf0b12d7ee357050d53ab4783629dedd129 100644
--- a/interface/web/mail/lib/lang/el_mail_transport_list.lng
+++ b/interface/web/mail/lib/lang/el_mail_transport_list.lng
@@ -3,7 +3,7 @@ $wb['list_head_txt'] = 'Προχωρημένη Δρομολογήση Email ';
 $wb['active_txt'] = 'Ενεργό';
 $wb['server_id_txt'] = 'Server';
 $wb['domain_txt'] = 'Domain';
-$wb['transport_txt'] = 'Μεταφορά';
+$wb['transport_txt'] = 'Δρομολογήση';
 $wb['sort_order_txt'] = 'Ταξινόμηση κατά';
-$wb['add_new_record_txt'] = 'Νέα μεταφορά';
+$wb['add_new_record_txt'] = 'Νέα Δρομολογήση';
 ?>
diff --git a/interface/web/mail/lib/lang/el_mail_user.lng b/interface/web/mail/lib/lang/el_mail_user.lng
index 528e35c3a9657f393a4bbc3b34f2c054a4e4d532..9d2fcdadab125f97b82a050fa9a2e0bae8029d14 100644
--- a/interface/web/mail/lib/lang/el_mail_user.lng
+++ b/interface/web/mail/lib/lang/el_mail_user.lng
@@ -2,7 +2,7 @@
 $wb['custom_mailfilter_txt'] = 'Προσαρμοσμένο φίλτρο';
 $wb['email_txt'] = 'Email';
 $wb['cryptpwd_txt'] = 'Συνθηματικό';
-$wb['password_strength_txt'] = 'Δύναμη Συνθηματικού';
+$wb['password_strength_txt'] = 'Ισχύς Συνθηματικού';
 $wb['active_txt'] = 'Ενεργό';
 $wb['email_error_isemail'] = 'Η διεύθυνση Email δεν είναι έγκυρη.';
 $wb['email_error_unique'] = 'Διπλή διεύθυνση Email.';
@@ -16,13 +16,13 @@ $wb['no_domain_perm'] = 'Δεν έχετε δικαιώματα σε αυτό τ
 $wb['error_no_pwd'] = 'Το συνθηματικό δεν έχει οριστεί.';
 $wb['quota_error_isint'] = 'Το μέγεθος της θυρίδας πρέπει να είναι αριθμός.';
 $wb['quota_txt'] = 'Όριο χώρου';
-$wb['server_id_txt'] = 'Aerver_id';
+$wb['server_id_txt'] = 'Server_id';
 $wb['password_txt'] = 'Συνθηματικό';
 $wb['maildir_txt'] = 'Maildir';
 $wb['postfix_txt'] = 'Ενεργοποίηση Λήψης';
 $wb['access_txt'] = 'Ενεργοποίηση Πρόσβασης';
 $wb['policy_txt'] = 'Φίλτρο Spam';
-$wb['no_policy'] = '- ανενεργή -';
+$wb['no_policy'] = '- ανενεργό -';
 $wb['limit_mailbox_txt'] = 'Έχετε φτάσει το μέγιστο πλήθος των θυρίδων για τον λογαριασμό σας.';
 $wb['limit_mailquota_txt'] = 'Έχετε φτάσει στο μέγεστο χώρο της θυρίδα σας.Ο μέγιστος διαθέσιμος χώρος σε MB είναι';
 $wb['disableimap_txt'] = 'Απενεργοποίηση IMAP';
@@ -41,10 +41,10 @@ $wb['login_error_unique'] = 'Το όνομα χρησιμοποιείται ήδ
 $wb['login_error_regex'] = 'Έγγυροι χαρακτήρες είναι οι A-Z, a-z, 0-9, ., _ και -.';
 $wb['login_txt'] = 'Login (προαιτερικά)';
 $wb['error_login_email_txt'] = 'Το όνομα δεν επιτρέπεται. Παρακαλούμε εισάγεται ένα διαφορετικό όνομα ή χρησιμοποιείστε την διεύθυνση e-mail.';
-$wb['autoresponder_subject_txt'] = 'Email Subject';
-$wb['autoresponder_subject'] = 'Out of office reply';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
+$wb['autoresponder_subject_txt'] = 'Θέμα Email';
+$wb['autoresponder_subject'] = 'Εκτός γραφείου';
+$wb['generate_password_txt'] = 'Δημιουργία Συνθηματικού';
+$wb['repeat_password_txt'] = 'Επανάληψη Συνθηματικού';
+$wb['password_mismatch_txt'] = 'Τα συνθηματικά δεν ταιριάζουν.';
+$wb['password_match_txt'] = 'Τα συνθηματικά ταιριάζουν.';
 ?>
diff --git a/interface/web/mail/lib/lang/el_mail_user_list.lng b/interface/web/mail/lib/lang/el_mail_user_list.lng
index 7e3f57bb72ba25148d7f3734d25c18b18a78f890..09613b4c4dd399a3160bff76f29d04f5457df0f5 100644
--- a/interface/web/mail/lib/lang/el_mail_user_list.lng
+++ b/interface/web/mail/lib/lang/el_mail_user_list.lng
@@ -4,5 +4,5 @@ $wb['email_txt'] = 'Email';
 $wb['autoresponder_txt'] = 'Αυτόματη απάντηση';
 $wb['add_new_record_txt'] = 'Νέα Θυρίδα';
 $wb['name_txt'] = 'Πραγματικό Όνομα';
-$wb['login_txt'] = 'Login';
+$wb['login_txt'] = 'Είσοδος';
 ?>
diff --git a/interface/web/mail/lib/lang/el_spamfilter_users.lng b/interface/web/mail/lib/lang/el_spamfilter_users.lng
index 0a896b1b0026691649df91de73419792c903ffa1..e838bb44959e585556a1fb0d7f77e60143d8929f 100644
--- a/interface/web/mail/lib/lang/el_spamfilter_users.lng
+++ b/interface/web/mail/lib/lang/el_spamfilter_users.lng
@@ -5,6 +5,6 @@ $wb['policy_id_txt'] = 'Πολιτική';
 $wb['email_txt'] = 'Email (Μοτίβο)';
 $wb['fullname_txt'] = 'Όνομα';
 $wb['local_txt'] = 'Τοπικός';
-$wb['email_error_notempty'] = 'The email address must not be empty.';
-$wb['fullname_error_notempty'] = 'The name must not be empty.';
+$wb['email_error_notempty'] = 'Η διεύθυνση email δεν πρέπει να είναι κενή.';
+$wb['fullname_error_notempty'] = 'Το όνομα δεν πρέπει να είναι κενό.';
 ?>
diff --git a/interface/web/mail/lib/lang/el_user_quota_stats_list.lng b/interface/web/mail/lib/lang/el_user_quota_stats_list.lng
index 8c404070378f9d163321d732241fff91ab902e63..2e8651f89d4537a25b04bfbd5a04c0d4a96efec4 100755
--- a/interface/web/mail/lib/lang/el_user_quota_stats_list.lng
+++ b/interface/web/mail/lib/lang/el_user_quota_stats_list.lng
@@ -4,5 +4,5 @@ $wb['quota_txt'] = 'Όριο';
 $wb['name_txt'] = 'Όνομα';
 $wb['email_txt'] = 'Διεύθυνση Email';
 $wb['used_txt'] = 'Χώρος σε χρήση';
-$wb['percentage_txt'] = 'Used %';
+$wb['percentage_txt'] = 'Χρήση %';
 ?>
diff --git a/interface/web/mail/lib/lang/en_mail_domain.lng b/interface/web/mail/lib/lang/en_mail_domain.lng
index 5ae48bad0b58f66847e0a5e52591bfba2a002c6c..ad93100696d4c75e62bf26f88ab0ba4c5293e088 100644
--- a/interface/web/mail/lib/lang/en_mail_domain.lng
+++ b/interface/web/mail/lib/lang/en_mail_domain.lng
@@ -2,19 +2,12 @@
 $wb["server_id_txt"] = 'Server';
 $wb["domain_txt"] = 'Domain';
 $wb["type_txt"] = 'Type';
-$wb["active_txt"] = 'Active';
-$wb["dkim_txt"] = 'enable DKIM';
-$wb["dkim_private_txt"] = 'DKIM Private-key';
-$wb["dkim_public_txt"] = 'DKIM Public-key\nfor information only';
-$wb["dkim_generate_txt"] = 'Generate DKIM Private-key';
-$wb["dkim_dns_txt"] = 'DNS-Record (TYPE TXT)<br><br>add this record to your DNS';
-$wb["dkim_private_key_error"] = 'Invalid DKIM-Private key';
+$wb["active_txt"] = 'Active';
 $wb["domain_error_empty"] = 'Domain is empty.';
 $wb["domain_error_unique"] = 'Duplicate Domain.';
 $wb["domain_error_regex"] = 'Invalid domain name.';
-$wb["dkim_settings_txt"] = 'DomainKeys Identified Mail (DKIM)';
 $wb["client_txt"] = 'Client';
 $wb["limit_maildomain_txt"] = 'The max. number of email domains for your account is reached.';
 $wb["policy_txt"] = 'Spamfilter';
 $wb["no_policy"] = '- not enabled -';
-?>
+?>
\ No newline at end of file
diff --git a/interface/web/mail/mail_domain_dkim_create.php b/interface/web/mail/mail_domain_dkim_create.php
deleted file mode 100644
index aab83a6d3395220e1fa97791ba04260a90e0e920..0000000000000000000000000000000000000000
--- a/interface/web/mail/mail_domain_dkim_create.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-/*
-Copyright (c) 2007 - 2013, Till Brehm, projektfarm Gmbh
-Copyright (c) 2013, Florian Schaal, info@schaal-24.de
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of ISPConfig nor the names of its contributors
-      may be used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
-	This script is invoked by interface/web/mail/templates/mail_domain_edit.htm
-	to generate or show the DKIM Private-key.
-
-	returns DKIM Private-Key and DKIM Public-Key
-*/ 
-
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-require_once('../../lib/classes/validate_dkim.inc.php');
-
-$validate_dkim=new validate_dkim ();
-
-//* Check permissions for module
-$app->auth->check_module_permissions('mail');
-
-header('Content-Type: text/xml; charset=utf-8');
-header('Cache-Control: must-revalidate, pre-check=0, no-store, no-cache, max-age=0, post-check=0');
-
-/*
-	This function fix PHP's messing up POST input containing characters space, dot, 
-	open square bracket and others to be compatible with with the deprecated register_globals
-*/
-function getRealPOST() {
-    $pairs = explode("&", file_get_contents("php://input"));
-    $vars = array();
-    foreach ($pairs as $pair) {
-        $nv = explode("=", $pair, 2);
-        $name = urldecode($nv[0]);
-        $value = $nv[1];
-        $vars[$name] = $value;
-    }
-    return $vars;
-}
-
-function pub_key($pubkey) {
-        $public_key='';
-        foreach($pubkey as $values) $public_key=$public_key.$values."\n";
-        return $public_key;
-}
-$_POST=getRealPOST();
-
-switch ($_POST['action']) {
-	case 'create':	/* create DKIM Private-key */
-		exec('openssl rand -out /usr/local/ispconfig/server/temp/random-data.bin 4096',$output,$result);
-		exec('openssl genrsa -rand /usr/local/ispconfig/server/temp/random-data.bin 1024',$privkey,$result);
-		unlink("/usr/local/ispconfig/server/temp/random-data.bin");
-		$private_key='';
-		foreach($privkey as $values) $private_key=$private_key.$values."\n";
-		if($validate_dkim->validate_post('private',$private_key)) { /* validate the $_POST-value */
-			exec('echo '.escapeshellarg($private_key).'|openssl rsa -pubout -outform PEM',$pubkey,$result);
-			$public_key=pub_key($pubkey);
-		} else { $public_key='invalid key'; }
-	break;
-	case 'show': /* show the DNS-Record onLoad */
-		$private_key=$_POST['pkey'];
-		if($validate_dkim->validate_post('private',$private_key)) { /* validate the $_POST-value */
-			/* get the public-key */
-			exec('echo '.escapeshellarg($private_key).'|openssl rsa -pubout -outform PEM',$pubkey,$result);
-			$public_key=pub_key($pubkey);
-		} else { $public_key='invalid key'; }
-	break;
-}
-echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
-echo "<formatname>\n";
-echo "<privatekey>".$private_key."</privatekey>\n";
-echo "<publickey>".$public_key."</publickey>\n";
-echo "</formatname>\n";
-?>
diff --git a/interface/web/mail/templates/mail_domain_edit.htm b/interface/web/mail/templates/mail_domain_edit.htm
index 6426e67badf354694021eb279ce79e5706f33826..5a1b61379237567ab0a18e278bc0b5e0dc25c535 100644
--- a/interface/web/mail/templates/mail_domain_edit.htm
+++ b/interface/web/mail/templates/mail_domain_edit.htm
@@ -59,27 +59,8 @@
                     {tmpl_var name='active'}
                 </div>
             </div>
-            <div class="subsectiontoggle"><span></span>{tmpl_var name='dkim_settings_txt'}<em></em></div>
-            <div style="display:none;">
-              <div class="ctrlHolder">
-                <p class="label">{tmpl_var name='dkim_txt'}</p>
-                <div class="multiField">
-                  {tmpl_var name='dkim'}
-                </div>
-              </div>
-              <div class="ctrlHolder">
-                <label for="dkim_private">{tmpl_var name='dkim_private_txt'}</label>
-                <textarea name="dkim_private" id="dkim_private" rows='10' cols='30'>{tmpl_var name='dkim_private'}</textarea>
-<a href="javascript:setRequest('create','{tmpl_var name='domain'}')">{tmpl_var name='dkim_generate_txt'}</a>
-              </div>
-		<div class="ctrlHolder">
-                <label for="dkim_public">{tmpl_var name='dkim_public_txt'}</label>
-                <textarea name="dkim_public" id="dkim_public" rows='5' cols='30' readonly>{tmpl_var name='dkim_public'}</textarea>
-              </div>
-
-            </div>
-        </fieldset>
-
+        </fieldset>
+
         <input type="hidden" name="id" value="{tmpl_var name='id'}">
         <input type="hidden" name="type" value="local">
 
@@ -87,7 +68,6 @@
             <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onclick="submitForm('pageForm','mail/mail_domain_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
             <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onclick="loadContent('mail/mail_domain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
         </div>
-    </div>
-
-</div>
-<script language="JavaScript" type="text/javascript" src="js/mail_domain_dkim.js"></script>
+    </div>
+
+</div>
\ No newline at end of file
diff --git a/interface/web/mailuser/lib/lang/cz.lng b/interface/web/mailuser/lib/lang/cz.lng
index 8b4b58bc42bdb302369d5a59ebc26ca7a0e1fcbe..4c947bd5f851bac74ae5d900b2a8dbb2092fd0b0 100644
--- a/interface/web/mailuser/lib/lang/cz.lng
+++ b/interface/web/mailuser/lib/lang/cz.lng
@@ -7,3 +7,4 @@ $wb['Send copy'] = 'Poslat kopii na e-mail';
 $wb['Spamfilter'] = 'Spamový filtr';
 $wb['Email Filters'] = 'E-mailové filtry';
 ?>
+
diff --git a/interface/web/mailuser/lib/lang/cz_index.lng b/interface/web/mailuser/lib/lang/cz_index.lng
index 45af56ee8d59e90adadad4c5a7f15a430ba56371..cb39d65ad6077668eb4de8a0a42f845d9727f94c 100644
--- a/interface/web/mailuser/lib/lang/cz_index.lng
+++ b/interface/web/mailuser/lib/lang/cz_index.lng
@@ -10,3 +10,4 @@ $wb['unlimited_txt'] = 'Neomezený';
 $wb['mb_txt'] = 'MB';
 $wb['none_txt'] = 'Nenastaveno';
 ?>
+
diff --git a/interface/web/mailuser/lib/lang/cz_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/cz_mail_user_autoresponder.lng
index ef3aeb42da522378dbd954257bc39bd9b13f3c34..5ed9a1f46ed8df923f55e2e74b725133f7a11710 100644
--- a/interface/web/mailuser/lib/lang/cz_mail_user_autoresponder.lng
+++ b/interface/web/mailuser/lib/lang/cz_mail_user_autoresponder.lng
@@ -11,3 +11,4 @@ $wb['autoresponder_active'] = 'Povolit automatický odpovídač';
 $wb['now_txt'] = 'Nyní';
 $wb['autoresponder_subject_txt'] = 'Předmět e-mailu';
 ?>
+
diff --git a/interface/web/mailuser/lib/lang/cz_mail_user_cc.lng b/interface/web/mailuser/lib/lang/cz_mail_user_cc.lng
index 36f11a9baa9fd9b8894ee181bd89a1d7d957cf2a..ef00aa2365a090fa5f7e580389ffdbabe3c1acc8 100644
--- a/interface/web/mailuser/lib/lang/cz_mail_user_cc.lng
+++ b/interface/web/mailuser/lib/lang/cz_mail_user_cc.lng
@@ -5,3 +5,4 @@ $wb['email_txt'] = 'E-mail';
 $wb['cc_error_isemail'] = 'Vyplněná e-mailová adresa neplatná';
 $wb['email_is_cc_error'] = 'Vyplněná e-mailová adresa a poslat kopii na e-mail adresu, nemůžou být stejné.';
 ?>
+
diff --git a/interface/web/mailuser/lib/lang/cz_mail_user_filter.lng b/interface/web/mailuser/lib/lang/cz_mail_user_filter.lng
index 3df9d38c7246f7dbbf4522ff73d26d812c266e2c..60bd6642a22e7e4692ac67a8fbce1ba7364e6838 100644
--- a/interface/web/mailuser/lib/lang/cz_mail_user_filter.lng
+++ b/interface/web/mailuser/lib/lang/cz_mail_user_filter.lng
@@ -18,3 +18,4 @@ $wb['ends_with_txt'] = 'Končí na';
 $wb['move_to_txt'] = 'Přesunout do';
 $wb['delete_txt'] = 'Smazat';
 ?>
+
diff --git a/interface/web/mailuser/lib/lang/cz_mail_user_filter_list.lng b/interface/web/mailuser/lib/lang/cz_mail_user_filter_list.lng
index 3c2593d6d420f4a987e58faa2ac0ce0e8a53fc98..c7198afa8ef516eae6f52fbf0b1253500eda8651 100644
--- a/interface/web/mailuser/lib/lang/cz_mail_user_filter_list.lng
+++ b/interface/web/mailuser/lib/lang/cz_mail_user_filter_list.lng
@@ -6,3 +6,4 @@ $wb['page_txt'] = 'Stránka';
 $wb['page_of_txt'] = 'z';
 $wb['delete_confirmation'] = 'Opravdu chcete odstranit e-mail filter?';
 ?>
+
diff --git a/interface/web/mailuser/lib/lang/cz_mail_user_password.lng b/interface/web/mailuser/lib/lang/cz_mail_user_password.lng
index 36555a20304678f88ef4b5b8038d7e89edd9b04d..2d09b753b67fbdd61b460190b30263853620e7a6 100644
--- a/interface/web/mailuser/lib/lang/cz_mail_user_password.lng
+++ b/interface/web/mailuser/lib/lang/cz_mail_user_password.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['mailbox_password_txt'] = 'E-malový účet heslo';
+$wb['mailbox_password_txt'] = 'E-mailový účet heslo';
 $wb['password_txt'] = 'Heslo';
 $wb['password_strength_txt'] = 'Síla hesla';
 $wb['email_txt'] = 'E-mail';
@@ -8,3 +8,4 @@ $wb['repeat_password_txt'] = 'Opakujte heslo';
 $wb['password_mismatch_txt'] = 'Hesla se neshodují.';
 $wb['password_match_txt'] = 'Hesla se shodují.';
 ?>
+
diff --git a/interface/web/mailuser/lib/lang/cz_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/cz_mail_user_spamfilter.lng
index 2a53036be6267f69d2f15db97ab7b2087e026eb2..00720f859d811f7ce40fe9cbd02210a9584d7aab 100644
--- a/interface/web/mailuser/lib/lang/cz_mail_user_spamfilter.lng
+++ b/interface/web/mailuser/lib/lang/cz_mail_user_spamfilter.lng
@@ -5,3 +5,4 @@ $wb['email_txt'] = 'E-mail';
 $wb['no_policy'] = '- nepovoleno -';
 $wb['policy_txt'] = 'Politika';
 ?>
+
diff --git a/interface/web/mailuser/lib/lang/de.lng b/interface/web/mailuser/lib/lang/de.lng
index b373d456a0dc876594c8267b3b23dafdd7f545fe..7a40aa419a81de942d425adedb1d007c40c88d2c 100644
--- a/interface/web/mailuser/lib/lang/de.lng
+++ b/interface/web/mailuser/lib/lang/de.lng
@@ -7,3 +7,4 @@ $wb['Send copy'] = 'Kopie senden an';
 $wb['Spamfilter'] = 'Spamfilter';
 $wb['Email Filters'] = 'E-Mailfilter';
 ?>
+
diff --git a/interface/web/mailuser/lib/lang/de_index.lng b/interface/web/mailuser/lib/lang/de_index.lng
index 522ddbc8db8e1f7840532d16463e00900dce1747..d8eec65c2382cf17b57fa19a8c0ba311bbf95033 100644
--- a/interface/web/mailuser/lib/lang/de_index.lng
+++ b/interface/web/mailuser/lib/lang/de_index.lng
@@ -10,3 +10,4 @@ $wb['unlimited_txt'] = 'Unlimitiert';
 $wb['mb_txt'] = 'MB';
 $wb['none_txt'] = 'Niemanden';
 ?>
+
diff --git a/interface/web/mailuser/lib/lang/de_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/de_mail_user_autoresponder.lng
index f8d4e46b12109005789a7d61fd8720d44ac508d9..ce28da041ffdd6270565db89087264b2c1bf47a6 100644
--- a/interface/web/mailuser/lib/lang/de_mail_user_autoresponder.lng
+++ b/interface/web/mailuser/lib/lang/de_mail_user_autoresponder.lng
@@ -11,3 +11,4 @@ $wb['autoresponder_active'] = 'Autoresponder aktivieren';
 $wb['now_txt'] = 'Jetzt';
 $wb['autoresponder_subject_txt'] = 'Betreff';
 ?>
+
diff --git a/interface/web/mailuser/lib/lang/de_mail_user_cc.lng b/interface/web/mailuser/lib/lang/de_mail_user_cc.lng
index b85077ea7cb0a489ec6e0f5110093a0c9a363684..6292bb5745cdb621d1936e68d8ee176d544944a8 100644
--- a/interface/web/mailuser/lib/lang/de_mail_user_cc.lng
+++ b/interface/web/mailuser/lib/lang/de_mail_user_cc.lng
@@ -5,3 +5,4 @@ $wb['email_txt'] = 'E-Mail';
 $wb['cc_error_isemail'] = 'E-Mail Adresse ungültig im -Kopie senden an- Feld';
 $wb['email_is_cc_error'] = 'E-Mail Adresse und ';
 ?>
+
diff --git a/interface/web/mailuser/lib/lang/de_mail_user_filter.lng b/interface/web/mailuser/lib/lang/de_mail_user_filter.lng
index fd93e64658bcdd5a86ec076d6345ffc6715c3a17..53cd51e16a02127bf324ae3307db8e90002de49c 100644
--- a/interface/web/mailuser/lib/lang/de_mail_user_filter.lng
+++ b/interface/web/mailuser/lib/lang/de_mail_user_filter.lng
@@ -18,3 +18,4 @@ $wb['ends_with_txt'] = 'Endet mit';
 $wb['move_to_txt'] = 'Verschieben nach';
 $wb['delete_txt'] = 'Löschen';
 ?>
+
diff --git a/interface/web/mailuser/lib/lang/de_mail_user_filter_list.lng b/interface/web/mailuser/lib/lang/de_mail_user_filter_list.lng
index 9abd40d7e35ec39ca65d1b63d0f5db5888697d17..a0b80bdb0dff3a774d48925e0dea25116f557e60 100644
--- a/interface/web/mailuser/lib/lang/de_mail_user_filter_list.lng
+++ b/interface/web/mailuser/lib/lang/de_mail_user_filter_list.lng
@@ -6,3 +6,4 @@ $wb['page_txt'] = 'Seite';
 $wb['page_of_txt'] = 'von';
 $wb['delete_confirmation'] = 'Möchten Sie die E-Mailfilter Regel wirklich löschen?';
 ?>
+
diff --git a/interface/web/mailuser/lib/lang/de_mail_user_password.lng b/interface/web/mailuser/lib/lang/de_mail_user_password.lng
index 5e5fe5e933822206d3fc4a7b19824ca0c9b9e4b8..062ba6b22f02052e9e4d4b77cce9c3f09a8ba379 100644
--- a/interface/web/mailuser/lib/lang/de_mail_user_password.lng
+++ b/interface/web/mailuser/lib/lang/de_mail_user_password.lng
@@ -8,3 +8,4 @@ $wb['repeat_password_txt'] = 'Passwort wiederholen';
 $wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
 $wb['password_match_txt'] = 'Die Passwörter stimmen überein.';
 ?>
+
diff --git a/interface/web/mailuser/lib/lang/de_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/de_mail_user_spamfilter.lng
index 47ac53a006c373ca32e297350a4cc7929639f6db..019679a829173c6d54c4b6c97e59673c3cbb208c 100644
--- a/interface/web/mailuser/lib/lang/de_mail_user_spamfilter.lng
+++ b/interface/web/mailuser/lib/lang/de_mail_user_spamfilter.lng
@@ -5,3 +5,4 @@ $wb['email_txt'] = 'E-Mail';
 $wb['no_policy'] = '- nicht aktiviert -';
 $wb['policy_txt'] = 'Richtlinie';
 ?>
+
diff --git a/interface/web/mailuser/lib/lang/el.lng b/interface/web/mailuser/lib/lang/el.lng
index 114dec9b9195adcaa18ca636b75e5d162569d6b1..fae2ad90617dd8ed3e5867eb5d1305ee45f20298 100644
--- a/interface/web/mailuser/lib/lang/el.lng
+++ b/interface/web/mailuser/lib/lang/el.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['Email Account'] = 'Email Account';
-$wb['Overview'] = 'Overview';
-$wb['Password'] = 'Password';
-$wb['Autoresponder'] = 'Autoresponder';
-$wb['Send copy'] = 'Send copy';
-$wb['Spamfilter'] = 'Spamfilter';
-$wb['Email Filters'] = 'Email Filters';
+$wb['Email Account'] = 'Λογαριασμός Email';
+$wb['Overview'] = 'Επισκόπηση';
+$wb['Password'] = 'Συνθηματικό';
+$wb['Autoresponder'] = 'Αυτόματη Απάντηση';
+$wb['Send copy'] = 'Αποστολή Αντιγράφου';
+$wb['Spamfilter'] = 'Φίλτρο Spam';
+$wb['Email Filters'] = 'Φίλτρα Email';
 ?>
diff --git a/interface/web/mailuser/lib/lang/el_index.lng b/interface/web/mailuser/lib/lang/el_index.lng
index 29fe9ea4f343d75e1f37cb820d2d1bbeff934e3a..b182b45871d0cea5785f4e5874518803db331fcd 100644
--- a/interface/web/mailuser/lib/lang/el_index.lng
+++ b/interface/web/mailuser/lib/lang/el_index.lng
@@ -1,12 +1,12 @@
 <?php
-$wb['page_head_txt'] = 'Mailbox settings';
-$wb['page_desc_txt'] = 'Here you can edit the settings for the email account.';
-$wb['email_txt'] = 'Email address';
-$wb['login_txt'] = 'Login';
-$wb['server_address_txt'] = 'Mailserver address';
-$wb['cc_txt'] = 'Send copy to (CC)';
-$wb['quota_txt'] = 'Mailbox size';
-$wb['unlimited_txt'] = 'Unlimited';
+$wb['page_head_txt'] = 'Ρυθμίσεις θυρίδας Email';
+$wb['page_desc_txt'] = 'Εδώ μπορείτε να ρυθμίσετε τον λογαριασμό email.';
+$wb['email_txt'] = 'Διεύθυνση Email';
+$wb['login_txt'] = 'Είσοδος';
+$wb['server_address_txt'] = 'Διεύθυνση Mailserver';
+$wb['cc_txt'] = 'Αποστολή αντιγράφου σε (CC)';
+$wb['quota_txt'] = 'Μέγεθος θυρίδας Email';
+$wb['unlimited_txt'] = 'Απεριόριστο';
 $wb['mb_txt'] = 'MB';
-$wb['none_txt'] = 'None';
+$wb['none_txt'] = 'Κανένα';
 ?>
diff --git a/interface/web/mailuser/lib/lang/el_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/el_mail_user_autoresponder.lng
index 79f386a7dc9da88380ae34d006d729d79894b549..529ba60cac83e9a7afcef265c9e1039cbba0bd4a 100644
--- a/interface/web/mailuser/lib/lang/el_mail_user_autoresponder.lng
+++ b/interface/web/mailuser/lib/lang/el_mail_user_autoresponder.lng
@@ -1,13 +1,13 @@
 <?php
-$wb['mailbox_autoresponder_txt'] = 'Autoresponder';
-$wb['autoresponder_subject'] = 'Out of office reply';
-$wb['autoresponder_text_txt'] = 'Text';
-$wb['autoresponder_txt'] = 'Active';
-$wb['autoresponder_start_date_txt'] = 'Start on';
-$wb['autoresponder_start_date_isfuture'] = 'Start date cannot be in the past.';
-$wb['autoresponder_end_date_txt'] = 'End by';
-$wb['autoresponder_end_date_isgreater'] = 'End date must be set and be later than start date.';
-$wb['autoresponder_active'] = 'Enable the autoresponder';
-$wb['now_txt'] = 'Now';
-$wb['autoresponder_subject_txt'] = 'Betreff';
+$wb['mailbox_autoresponder_txt'] = 'Αυτόματη Απάντηση';
+$wb['autoresponder_subject'] = 'Απάντηση όταν είστε εκτός γραφείου';
+$wb['autoresponder_text_txt'] = 'Κείμενο';
+$wb['autoresponder_txt'] = 'Ενεργή';
+$wb['autoresponder_start_date_txt'] = 'Έναρξη στις';
+$wb['autoresponder_start_date_isfuture'] = 'Η ημερομηνία έναρξης δεν μπορεί να είναι στο παρελθόν.';
+$wb['autoresponder_end_date_txt'] = 'Τέλος στις';
+$wb['autoresponder_end_date_isgreater'] = 'Η ημερομηνία τέλους πρέπει να οριστεί και να είναι μετά την ημερομηνία έναρξης.';
+$wb['autoresponder_active'] = 'Ενεργοποίηση αυτόματης απάντησης';
+$wb['now_txt'] = 'Τώρα';
+$wb['autoresponder_subject_txt'] = 'Αυτόματη Απάντηση';
 ?>
diff --git a/interface/web/mailuser/lib/lang/el_mail_user_cc.lng b/interface/web/mailuser/lib/lang/el_mail_user_cc.lng
index dc2165a4fc4b147abfcc34435512cf8e166b3167..7b2080bbc509ed1bee00e91db86d9a9b0c901b09 100644
--- a/interface/web/mailuser/lib/lang/el_mail_user_cc.lng
+++ b/interface/web/mailuser/lib/lang/el_mail_user_cc.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['mailbox_cc_txt'] = 'Send copy to email address';
-$wb['cc_txt'] = 'Send copy to';
+$wb['mailbox_cc_txt'] = 'Αποστολή αντιγράφου στο email';
+$wb['cc_txt'] = 'Αποστολή αντιγράφου σε';
 $wb['email_txt'] = 'Email';
-$wb['cc_error_isemail'] = 'Email address invalid in -Send copy to- field';
-$wb['email_is_cc_error'] = 'Email address and send copy to address can not be the same.';
+$wb['cc_error_isemail'] = 'Μη έγκυρη διεύθυνση Email στο πεδίο -Αποστολή αντιγράφου σε-';
+$wb['email_is_cc_error'] = 'Η διεύθυνση Email και η -Αποστολή αντιγράφου στο email- δεν μπορούν να είναι ίδιες.';
 ?>
diff --git a/interface/web/mailuser/lib/lang/el_mail_user_filter.lng b/interface/web/mailuser/lib/lang/el_mail_user_filter.lng
index 2e74ffd4f748764a60687b3378f87cdf1bab01c3..bec79e639f1c66ee255a6485b2f6c3420f2316cf 100644
--- a/interface/web/mailuser/lib/lang/el_mail_user_filter.lng
+++ b/interface/web/mailuser/lib/lang/el_mail_user_filter.lng
@@ -1,20 +1,20 @@
 <?php
-$wb['rulename_txt'] = 'Name';
-$wb['action_txt'] = 'Action';
-$wb['target_txt'] = 'Folder';
-$wb['active_txt'] = 'Active';
-$wb['rulename_error_empty'] = 'Name is empty.';
-$wb['searchterm_is_empty'] = 'Search term is empty.';
-$wb['source_txt'] = 'Source';
-$wb['target_error_regex'] = 'The target may only contain these characters: a-z, 0-9, -, ., _, and {space}';
-$wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.';
-$wb['subject_txt'] = 'Subject';
-$wb['from_txt'] = 'From';
-$wb['to_txt'] = 'To';
-$wb['contains_txt'] = 'Contains';
-$wb['is_txt'] = 'Is';
-$wb['begins_with_txt'] = 'Begins with';
-$wb['ends_with_txt'] = 'Ends with';
-$wb['move_to_txt'] = 'Move to';
-$wb['delete_txt'] = 'Delete';
+$wb['rulename_txt'] = 'Όνομα';
+$wb['action_txt'] = 'Ενέργεια';
+$wb['target_txt'] = 'Φάκελος';
+$wb['active_txt'] = 'Ενεργό';
+$wb['rulename_error_empty'] = 'Το όνομα είναι κενό.';
+$wb['searchterm_is_empty'] = 'Ο όρος αναζήτησης είναι κενός.';
+$wb['source_txt'] = 'Πηγή';
+$wb['target_error_regex'] = 'Ο στόχος μπορεί να περιέχει μόνο αυτούς τους χαρακτήρες: a-z, 0-9, -, ., _, και {κενό}';
+$wb['limit_mailfilter_txt'] = 'Έχετε φτάσει το μέγιστο πλήθος φίλτρων mail.';
+$wb['subject_txt'] = 'Θέμα';
+$wb['from_txt'] = 'Από';
+$wb['to_txt'] = 'Προς';
+$wb['contains_txt'] = 'Περιέχει';
+$wb['is_txt'] = 'Είναι';
+$wb['begins_with_txt'] = 'Ξεκινά με';
+$wb['ends_with_txt'] = 'Τελειώνει με';
+$wb['move_to_txt'] = 'Μετακίνηση σε';
+$wb['delete_txt'] = 'Διαγραφή';
 ?>
diff --git a/interface/web/mailuser/lib/lang/el_mail_user_filter_list.lng b/interface/web/mailuser/lib/lang/el_mail_user_filter_list.lng
index fb6b9dfa5d7523d6196446128aa96d6a564bfa42..dd2ae1d6cabf47dad1f7c41a08bf022f63d6da55 100644
--- a/interface/web/mailuser/lib/lang/el_mail_user_filter_list.lng
+++ b/interface/web/mailuser/lib/lang/el_mail_user_filter_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Email filter rules';
-$wb['rulename_txt'] = 'Name';
-$wb['add_new_record_txt'] = 'Add new Filter';
-$wb['page_txt'] = 'Page';
-$wb['page_of_txt'] = 'of';
-$wb['delete_confirmation'] = 'Do you really want to delete the mailfilter?';
+$wb['list_head_txt'] = 'Κανόνες Φίλτρων Email';
+$wb['rulename_txt'] = 'Όνομα';
+$wb['add_new_record_txt'] = 'Προσθήκη νέου Φίλτρου';
+$wb['page_txt'] = 'Σελίδα';
+$wb['page_of_txt'] = 'από';
+$wb['delete_confirmation'] = 'Είστε σίγουροι ότι θέλετε να διαγράψετε το Φίλτρο Mail?';
 ?>
diff --git a/interface/web/mailuser/lib/lang/el_mail_user_password.lng b/interface/web/mailuser/lib/lang/el_mail_user_password.lng
index cdf9674e702c16e13a9c7ab9760eea34097e2fce..61b976191db4f18cbdcab19fe265ac3bf68ec647 100644
--- a/interface/web/mailuser/lib/lang/el_mail_user_password.lng
+++ b/interface/web/mailuser/lib/lang/el_mail_user_password.lng
@@ -1,10 +1,10 @@
 <?php
-$wb['mailbox_password_txt'] = 'Mailbox password';
-$wb['password_txt'] = 'Password';
-$wb['password_strength_txt'] = 'Password strength';
+$wb['mailbox_password_txt'] = 'Συνθηματικό θυρίδας Mail';
+$wb['password_txt'] = 'Συνθηματικό';
+$wb['password_strength_txt'] = 'Δϋναμη Συνθηματικού';
 $wb['email_txt'] = 'Email';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
+$wb['generate_password_txt'] = 'Δημιουργία Συνθηματικού';
+$wb['repeat_password_txt'] = 'Επανάληψη Συνθηματικού';
+$wb['password_mismatch_txt'] = 'Τα Συνθηματικά δεν ταιριάζουν.';
+$wb['password_match_txt'] = 'Τα Συνθηματικά δεν ταιριάζουν.';
 ?>
diff --git a/interface/web/mailuser/lib/lang/el_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/el_mail_user_spamfilter.lng
index be4bad90504b47914b13a01b95158a862024839e..15ea90c9b8afd2cacd8692da2d5dbbae5fee8ccd 100644
--- a/interface/web/mailuser/lib/lang/el_mail_user_spamfilter.lng
+++ b/interface/web/mailuser/lib/lang/el_mail_user_spamfilter.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['mailbox_spamfilter_txt'] = 'Spamfilter';
-$wb['spamfilter_txt'] = 'Spamfilter';
+$wb['mailbox_spamfilter_txt'] = 'Φίλτρο Spam';
+$wb['spamfilter_txt'] = 'Φίλτρο Spam';
 $wb['email_txt'] = 'Email';
-$wb['no_policy'] = '- not enabled -';
-$wb['policy_txt'] = 'Policy';
+$wb['no_policy'] = '- ανενεργό -';
+$wb['policy_txt'] = 'Πολιτική';
 ?>
diff --git a/interface/web/monitor/form/empty.dir b/interface/web/monitor/form/empty.dir
new file mode 100644
index 0000000000000000000000000000000000000000..95ba9ef37cca69318bcba17e67cd44ae84bd41e1
--- /dev/null
+++ b/interface/web/monitor/form/empty.dir
@@ -0,0 +1 @@
+This empty directory is needed by ISPConfig.
diff --git a/interface/web/monitor/lib/lang/cz.lng b/interface/web/monitor/lib/lang/cz.lng
index 2379533c0fd385763bbbe29b0c649a9b509e1555..662d73ad3b502aca3c83f6ef6c58cd1b12c114be 100644
--- a/interface/web/monitor/lib/lang/cz.lng
+++ b/interface/web/monitor/lib/lang/cz.lng
@@ -145,11 +145,12 @@ $wb['monitor_beancounter_nosupport_txt'] = 'Tento server nemá nainstalován VE
 $wb['monitor_title_iptables_txt'] = 'IPTables Pravidla';
 $wb['Show fail2ban-Log'] = 'Zobrazit Fail2Ban Log';
 $wb['Show IPTables'] = 'Zobrazit IPTables pravidla';
-$wb['Show OpenVz VE BeanCounter'] = 'Ukázat OpenVz VE BeanCounter';
-$wb['Show Monit'] = 'Show Monit';
+$wb['Show OpenVz VE BeanCounter'] = 'Zobrazit OpenVz VE BeanCounter';
+$wb['Show Monit'] = 'Zobrazit Monit';
 $wb['no_monit_url_defined_txt'] = 'No Monit URL defined.';
 $wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.';
-$wb['Show Munin'] = 'Show Munin';
+$wb['Show Munin'] = 'Zobrazit Munin';
 $wb['no_munin_url_defined_txt'] = 'No Munin URL defined.';
 $wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.';
 ?>
+
diff --git a/interface/web/monitor/lib/lang/cz_datalog_list.lng b/interface/web/monitor/lib/lang/cz_datalog_list.lng
index c9e9a8655510279e3282bd10839cac4b6fc3e011..29d8cbb448aac6ac01e0976ca67a10ddb0d1cdba 100644
--- a/interface/web/monitor/lib/lang/cz_datalog_list.lng
+++ b/interface/web/monitor/lib/lang/cz_datalog_list.lng
@@ -6,3 +6,4 @@ $wb['dbtable_txt'] = 'DB tabulka';
 $wb['action_txt'] = 'Akce';
 $wb['status_txt'] = 'Stav';
 ?>
+
diff --git a/interface/web/monitor/lib/lang/cz_syslog_list.lng b/interface/web/monitor/lib/lang/cz_syslog_list.lng
index 990662552b3a8daac4655d14be078819fe6b6b44..864232ed0d2a22df2a4478c85f0ed1963ff03c15 100644
--- a/interface/web/monitor/lib/lang/cz_syslog_list.lng
+++ b/interface/web/monitor/lib/lang/cz_syslog_list.lng
@@ -5,3 +5,4 @@ $wb['server_id_txt'] = 'Server';
 $wb['loglevel_txt'] = 'Logovací úroveň';
 $wb['message_txt'] = 'Zpráva';
 ?>
+
diff --git a/interface/web/monitor/lib/lang/de.lng b/interface/web/monitor/lib/lang/de.lng
index a46050ee4954f05a660fbedf83818d34f0eb58b7..304ac7333140161d6d91b3a7a36e9a8ee1e727ef 100644
--- a/interface/web/monitor/lib/lang/de.lng
+++ b/interface/web/monitor/lib/lang/de.lng
@@ -122,7 +122,6 @@ $wb['monitor_services_smtp_txt'] = 'SMTP Server:';
 $wb['monitor_services_pop_txt'] = 'POP3 Server:';
 $wb['monitor_services_imap_txt'] = 'IMAP Server:';
 $wb['monitor_services_mydns_txt'] = 'DNS Server:';
-$wb['monitor_services_mongodb_txt'] = 'MongoDB Server:';
 $wb['monitor_services_mysql_txt'] = 'MySQL Server:';
 $wb['monitor_settings_datafromdate_txt'] = 'Daten vom: ';
 $wb['monitor_settings_datetimeformat_txt'] = 'd.m.Y H:i';
@@ -135,7 +134,6 @@ $wb['monitor_title_raidstate_txt'] = 'RAID Status';
 $wb['monitor_title_rkhunterlog_txt'] = 'RKHunter Protokoll';
 $wb['monitor_updates_nosupport_txt'] = 'Ihre Distribution wird für die Überwachung nicht unterstützt';
 $wb['monitor_title_fail2ban_txt'] = 'Fail2Ban Protokoll';
-$wb['monitor_title_mongodb_txt'] = 'MongoDB Protokoll';
 $wb['monitor_nosupportedraid1_txt'] = 'At the moment, we support mdadm or mpt-status for monitoring the RAID.<br>We cant find any of them at your server.<br><br>This means we can not support your RAID yet.';
 $wb['monitor_serverstate_beancounterok_txt'] = 'The beancounter is ok';
 $wb['monitor_serverstate_beancounterinfo_txt'] = 'There are vew failure in the beancounter';
@@ -146,7 +144,6 @@ $wb['monitor_title_beancounter_txt'] = 'OpenVz VE BeanCounter';
 $wb['monitor_beancounter_nosupport_txt'] = 'This server is not a OpenVz VE and has no beancounter information';
 $wb['monitor_title_iptables_txt'] = 'IPTables Regeln';
 $wb['Show fail2ban-Log'] = 'Fail2ban Protokoll anzeigen';
-$wb['Show MongoDB-Log'] = 'MongoDB Protokoll anzeigen';
 $wb['Show IPTables'] = 'IPTables anzeigen';
 $wb['Show OpenVz VE BeanCounter'] = 'OpenVz VE BeanCounter anzeigen';
 $wb['Show Monit'] = 'Monit anzeigen';
@@ -156,3 +153,4 @@ $wb['Show Munin'] = 'Munin anzeigen';
 $wb['no_munin_url_defined_txt'] = 'Keine Munin-URL definiert.';
 $wb['no_permissions_to_view_munin_txt'] = 'Sie haben nicht die Berechtigung, auf Munin zuzugreifen.';
 ?>
+
diff --git a/interface/web/monitor/lib/lang/de_datalog_list.lng b/interface/web/monitor/lib/lang/de_datalog_list.lng
index 0b6bf9a4bb65f86a0eda057b6648c58da9848c28..8939cab064ea58d23a5a83e07dc2b7978044fc71 100644
--- a/interface/web/monitor/lib/lang/de_datalog_list.lng
+++ b/interface/web/monitor/lib/lang/de_datalog_list.lng
@@ -6,3 +6,4 @@ $wb['dbtable_txt'] = 'Datenbanktabelle';
 $wb['action_txt'] = 'Aktion';
 $wb['status_txt'] = 'Status';
 ?>
+
diff --git a/interface/web/monitor/lib/lang/el.lng b/interface/web/monitor/lib/lang/el.lng
index d840b6bb68aea1f5e9986e00bb1d93bcba660854..eb91a59960879d309dcb2120aa608fa79a733595 100644
--- a/interface/web/monitor/lib/lang/el.lng
+++ b/interface/web/monitor/lib/lang/el.lng
@@ -145,11 +145,11 @@ $wb['monitor_title_iptables_txt'] = 'Κανόνες IPTables';
 $wb['Show fail2ban-Log'] = 'Εμφάνιση fail2ban-Log';
 $wb['Show IPTables'] = 'Εμφάνιση IPTables';
 $wb['Show OpenVz VE BeanCounter'] = 'Show OpenVz VE BeanCounter';
-$wb['monitor_serverstate_raidresync_txt'] = 'Your RAID is in RESYNC mode';
-$wb['Show Monit'] = 'Show Monit';
-$wb['no_monit_url_defined_txt'] = 'No Monit URL defined.';
-$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.';
-$wb['Show Munin'] = 'Show Munin';
-$wb['no_munin_url_defined_txt'] = 'No Munin URL defined.';
-$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.';
+$wb['monitor_serverstate_raidresync_txt'] = 'Το RAID βρίσκεται σε κατάσταση επανασυγχρονισμού';
+$wb['Show Monit'] = 'Εμφάνιση Monit';
+$wb['no_monit_url_defined_txt'] = 'Δεν καθορίστηκε URL για το Monit.';
+$wb['no_permissions_to_view_monit_txt'] = 'Δεν επιτρέπεται η πρόσβαση στο Monit.';
+$wb['Show Munin'] = 'Εμφάνιση Munin';
+$wb['no_munin_url_defined_txt'] = 'Δεν καθορίστηκε URL για το Munin.';
+$wb['no_permissions_to_view_munin_txt'] = 'Δεν επιτρέπεται η πρόσβαση στο Munin.';
 ?>
diff --git a/interface/web/monitor/lib/lang/el_datalog_list.lng b/interface/web/monitor/lib/lang/el_datalog_list.lng
index 8ad63ffd42b46c9c52357d5bcb5ef2f4e1cab9aa..f2a5d32732640026a0fb7acaa60654e91a5333ec 100644
--- a/interface/web/monitor/lib/lang/el_datalog_list.lng
+++ b/interface/web/monitor/lib/lang/el_datalog_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Jobqueue';
-$wb['tstamp_txt'] = 'Date';
+$wb['list_head_txt'] = 'Ουρά Ενεργειών';
+$wb['tstamp_txt'] = 'Ημερομηνία';
 $wb['server_id_txt'] = 'Server';
-$wb['dbtable_txt'] = 'DB Table';
-$wb['action_txt'] = 'Action';
-$wb['status_txt'] = 'Status';
+$wb['dbtable_txt'] = 'Πίνακας DB';
+$wb['action_txt'] = 'Ενέργεια';
+$wb['status_txt'] = 'Κατάσταση';
 ?>
diff --git a/interface/web/monitor/lib/lang/en.lng b/interface/web/monitor/lib/lang/en.lng
index ec5ca7325f5d9330cb4d88a3cc41f87cc241c224..20cf1fbb3b1a93a3f10b41a7d68b7de0e95c1a7d 100644
--- a/interface/web/monitor/lib/lang/en.lng
+++ b/interface/web/monitor/lib/lang/en.lng
@@ -46,7 +46,6 @@ $wb['Show ISPConfig-Log'] = 'Show ISPConfig-Log';
 $wb['Show RKHunter-Log'] = 'Show RKHunter-Log';
 $wb['Show Jobqueue'] = 'Show Jobqueue';
 $wb['Show fail2ban-Log'] = 'Show fail2ban-Log';
-$wb['Show MongoDB-Log'] = 'Show MongoDB-Log';
 $wb['Show IPTables'] = 'Show IPTables';
 $wb['Show OpenVz VE BeanCounter'] = 'Show OpenVz VE BeanCounter';
 $wb['monitor_general_serverstate_txt'] = 'Server State';
@@ -132,7 +131,6 @@ $wb['monitor_services_smtp_txt'] = 'SMTP-Server:';
 $wb['monitor_services_pop_txt'] = 'POP3-Server:';
 $wb['monitor_services_imap_txt'] = 'IMAP-Server:';
 $wb['monitor_services_mydns_txt'] = 'DNS-Server:';
-$wb['monitor_services_mongodb_txt'] = 'MongoDB-Server:';
 $wb['monitor_services_mysql_txt'] = 'mySQL-Server:';
 $wb['monitor_settings_datafromdate_txt'] = 'Data from: ';
 $wb['monitor_settings_datetimeformat_txt'] = 'Y-m-d H:i';
@@ -144,7 +142,6 @@ $wb['monitor_title_mailq_txt'] = 'Mail Queue';
 $wb['monitor_title_raidstate_txt'] = 'RAID Status';
 $wb['monitor_title_rkhunterlog_txt'] = 'RKHunter Log';
 $wb['monitor_title_fail2ban_txt'] = 'Fail2Ban Log';
-$wb['monitor_title_mongodb_txt'] = 'MongoDB Log';
 $wb['monitor_title_iptables_txt'] = 'IPTables Rules';
 $wb['monitor_title_beancounter_txt'] = 'OpenVz VE BeanCounter';
 $wb['monitor_updates_nosupport_txt'] = 'Your distribution is not supported for this monitoring';
diff --git a/interface/web/monitor/lib/module.conf.php b/interface/web/monitor/lib/module.conf.php
index c019b84e463a60ec9bc68c8bae3ce63db71e5632..1d4e5e1c34008706d2468a8c9594662913432591 100644
--- a/interface/web/monitor/lib/module.conf.php
+++ b/interface/web/monitor/lib/module.conf.php
@@ -190,11 +190,6 @@ $items[] = array( 'title' 	=> "Show fail2ban-Log",
                   'link'	=> 'monitor/show_data.php?type=fail2ban',
                   'html_id' => 'fai2ban');
 
-$items[] = array( 'title' 	=> "Show MongoDB-Log",
-                  'target' 	=> 'content',
-                  'link'	=> 'monitor/show_data.php?type=mongodb',
-                  'html_id' => 'mongodb');
-
 $items[] = array( 'title' 	=> "Show IPTables",
                   'target' 	=> 'content',
                   'link'	=> 'monitor/show_data.php?type=iptables',
@@ -203,4 +198,4 @@ $items[] = array( 'title' 	=> "Show IPTables",
 $module["nav"][] = array(	'title'	=> 'Logfiles',
                             'open' 	=> 1,
                             'items'	=> $items);
-?>
+?>
\ No newline at end of file
diff --git a/interface/web/monitor/show_data.php b/interface/web/monitor/show_data.php
index 92c66a486ba35a08a2dbc278f4756f8c0e2ec034..1cd4baf525418189e028e5c3faabd540631feadf 100644
--- a/interface/web/monitor/show_data.php
+++ b/interface/web/monitor/show_data.php
@@ -124,13 +124,6 @@ switch($dataType) {
         $title = $app->lng("monitor_title_fail2ban_txt") . ' (' . $monTransSrv . ' : ' . $_SESSION['monitor']['server_name'] . ')';
         $description = '';
         break;
-    case 'mongodb':
-        $template = 'templates/show_data.htm';
-        $output .= $app->tools_monitor->showMongoDB();
-        $time = $app->tools_monitor->getDataTime('log_mongodb');
-        $title = $app->lng("monitor_title_mongodb_txt") . ' (' . $monTransSrv . ' : ' . $_SESSION['monitor']['server_name'] . ')';
-        $description = '';
-        break;
     case 'iptables':
         $template = 'templates/show_data.htm';
         $output .= $app->tools_monitor->showIPTables();
diff --git a/interface/web/monitor/show_log.php b/interface/web/monitor/show_log.php
index cb9e4c1074f80c670f0256d69426cd1fff92e446..ec10a982b1aa768998b0aadcce63b1b7abf3c784 100644
--- a/interface/web/monitor/show_log.php
+++ b/interface/web/monitor/show_log.php
@@ -125,20 +125,7 @@ $record = $app->db->queryOneRecord("SELECT data, state FROM monitor_data WHERE t
 if(isset($record['data'])) {
 	$data = unserialize($record['data']);
 
-  $logData = explode("\n", htmlspecialchars($data));
-  $logDataHtml = '';
-  /* set css class for each line of log, depending on key words in each line */
-  foreach($logData as $val) {
-    if (strpos($val, 'ERROR') !== FALSE) {
-      $logDataHtml .= "<div class='logerror'>$val</div>";   
-    } elseif (strpos($val, 'WARN') !== FALSE) {
-      $logDataHtml .= "<div class='logwarn'>$val</div>";   
-    } elseif (strpos($val, 'INFO') !== FALSE) {
-      $logDataHtml .= "<div class='loginfo'>$val</div>";   
-    } else {
-      $logDataHtml .= "<div class='log'>$val</div>";   
-    }
-  }
+	$logData = nl2br(htmlspecialchars($data));
 
 	$app->tpl->setVar("log_data", $logData);
 } else {
diff --git a/interface/web/monitor/templates/show_sys_state.htm b/interface/web/monitor/templates/show_sys_state.htm
index ceb419573db13061630c460b831f8bf6337de919..55aeeb28a248d3e003f777a557ce0acdb919f3a9 100644
--- a/interface/web/monitor/templates/show_sys_state.htm
+++ b/interface/web/monitor/templates/show_sys_state.htm
@@ -1,25 +1,25 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_sys_state">
-
-    <div class="pnl_toolsarea">
-        <fieldset class="inlineLabels"><legend><tmpl_var name="monTransRefreshsq"></legend>
-            <div class="buttons">
-                <div class="ctrlHolder">
-                    <label for="refreshinterval">&nbsp;</label>
-                    <select name="refreshinterval" id="refreshinterval" class="selectInput withicons" onChange="loadContentRefresh('monitor/show_sys_state.php?state={tmpl_var name="state_type"}')">
-                        {tmpl_var name='refresh'}
-                    </select>
-                </div>
-            </div>
-        </fieldset>
-    </div>
-  
-    <div class="pnl_formarea">
-        <fieldset><legend></legend>
-            <div class="stateview"><tmpl_var name="state_data"></div>
-        </fieldset>
-    </div>
-
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_sys_state">
+
+    <div class="pnl_toolsarea">
+        <fieldset class="inlineLabels"><legend><tmpl_var name="monTransRefreshsq"></legend>
+            <div class="buttons">
+                <div class="ctrlHolder">
+                    <label for="refreshinterval">&nbsp;</label>
+                    <select name="refreshinterval" id="refreshinterval" class="selectInput withicons" onChange="loadContentRefresh('monitor/show_sys_state.php?state={tmpl_var name="state_type"}')">
+                        {tmpl_var name='refresh'}
+                    </select>
+                </div>
+            </div>
+        </fieldset>
+    </div>
+  
+    <div class="pnl_formarea">
+        <fieldset><legend></legend>
+            <div class="stateview"><tmpl_var name="state_data"></div>
+        </fieldset>
+    </div>
+
 </div>
\ No newline at end of file
diff --git a/interface/web/remote/monitor.php b/interface/web/remote/monitor.php
index ae138d536de226e415dd530181e241790bd9eedc..f49b1695d0a4668917f95adee760617356577bbb 100644
--- a/interface/web/remote/monitor.php
+++ b/interface/web/remote/monitor.php
@@ -29,6 +29,11 @@ if($token == '' or $secret == '' or $token != $secret) {
 	if($type == 'serverlist') {
 		$sql = 'SELECT server_id, server_name FROM server WHERE 1 ORDER BY server_id';
 		$records = $app->db->queryAllRecords($sql);
+        foreach($records as $index => $rec) {
+            $rec = $app->db->queryOneRecord("SELECT * FROM monitor_data WHERE server_id = " . $rec['server_id'] . " AND state NOT IN ('ok', 'no_state', 'info')");
+            if($rec) $records[$index]['state'] = 'warn';
+            else $records[$index]['state'] = 'ok';
+        }
 		$out['state'] = 'ok';
 		$out['data'] = $records;
 		$out['time'] = date('Y-m-d H:i',$rec['created']);
diff --git a/interface/web/sites/aps_cron_apscrawler_if.php b/interface/web/sites/aps_cron_apscrawler_if.php
index caa9b02d75189eac40e74429894cd19f04ebebd7..d1e15cc963860d9e4911a1396d211cac407dedd2 100644
--- a/interface/web/sites/aps_cron_apscrawler_if.php
+++ b/interface/web/sites/aps_cron_apscrawler_if.php
@@ -1,63 +1,63 @@
-<?php
-/*
-Copyright (c) 2012, ISPConfig UG
-Contributors: web wack creations,  http://www.web-wack.at
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of ISPConfig nor the names of its contributors
-      may be used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-
-//require_once('classes/class.crawler.php');
-$app->load('aps_crawler');
-
-if(!@ini_get('allow_url_fopen')) $app->error('allow_url_fopen is not enabled.');
-if(!function_exists('curl_version')) $app->error('The PHP CURL extension is not available.');
-
-$log_prefix = 'APS crawler cron: ';
-
-$aps = new ApsCrawler($app, true); // true = Interface mode, false = Server mode
-
-$app->log($log_prefix.'Used mem at begin: '.$aps->convertSize(memory_get_usage(true)));
-
-$time_start = microtime(true);
-$aps->startCrawler();
-$aps->parseFolderToDB();
-$aps->fixURLs();
-$time = microtime(true) - $time_start;
-
-$app->log($log_prefix.'Used mem at end: '.$aps->convertSize(memory_get_usage(true)));
-$app->log($log_prefix.'Mem peak during execution: '.$aps->convertSize(memory_get_peak_usage(true)));
-$app->log($log_prefix.'Execution time: '.round($time, 3).' seconds');
-
-// Load the language file
-$lngfile = 'lib/lang/'.$_SESSION['s']['language'].'_aps.lng';
-$app->load_language_file('web/sites/'.$lngfile);
-
-echo '<div id="OKMsg"><p>'.$app->lng('packagelist_update_finished_txt').'</p></div>';
-
-
-
+<?php
+/*
+Copyright (c) 2012, ISPConfig UG
+Contributors: web wack creations,  http://www.web-wack.at
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of ISPConfig nor the names of its contributors
+      may be used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+
+//require_once('classes/class.crawler.php');
+$app->load('aps_crawler');
+
+if(!@ini_get('allow_url_fopen')) $app->error('allow_url_fopen is not enabled.');
+if(!function_exists('curl_version')) $app->error('The PHP CURL extension is not available.');
+
+$log_prefix = 'APS crawler cron: ';
+
+$aps = new ApsCrawler($app, true); // true = Interface mode, false = Server mode
+
+$app->log($log_prefix.'Used mem at begin: '.$aps->convertSize(memory_get_usage(true)));
+
+$time_start = microtime(true);
+$aps->startCrawler();
+$aps->parseFolderToDB();
+$aps->fixURLs();
+$time = microtime(true) - $time_start;
+
+$app->log($log_prefix.'Used mem at end: '.$aps->convertSize(memory_get_usage(true)));
+$app->log($log_prefix.'Mem peak during execution: '.$aps->convertSize(memory_get_peak_usage(true)));
+$app->log($log_prefix.'Execution time: '.round($time, 3).' seconds');
+
+// Load the language file
+$lngfile = 'lib/lang/'.$_SESSION['s']['language'].'_aps.lng';
+$app->load_language_file('web/sites/'.$lngfile);
+
+echo '<div id="OKMsg"><p>'.$app->lng('packagelist_update_finished_txt').'</p></div>';
+
+
+
 ?>
\ No newline at end of file
diff --git a/interface/web/sites/aps_do_operation.php b/interface/web/sites/aps_do_operation.php
index ada193c759cd5e7193ab4813999d93b9cd5fa20b..ad165f33bc44f4288b7df41f21fac85ae3d710c2 100644
--- a/interface/web/sites/aps_do_operation.php
+++ b/interface/web/sites/aps_do_operation.php
@@ -1,112 +1,112 @@
-<?php
-/*
-Copyright (c) 2012, ISPConfig UG
-Contributors: web wack creations,  http://www.web-wack.at
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of ISPConfig nor the names of its contributors
-      may be used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-$app->load('aps_guicontroller');
-
-// Check the module permissions
-$app->auth->check_module_permissions('sites');
-
-$gui = new ApsGUIController($app);
-
-// An action and ID are required in any case
-if(!isset($_GET['action'])) die('No action');
-
-// List of operations which can be performed
-if($_GET['action'] == 'change_status')
-{
-    // Only admins can perform this operation
-    if($_SESSION['s']['user']['typ'] != 'admin') die('For admin use only.');
-    
-    // Make sure a valid package ID is given
-    if(!$gui->isValidPackageID($_GET['id'], true)) die($app->lng('Invalid ID'));
-    
-    // Change the existing status to the opposite
-    $get_status = $app->db->queryOneRecord("SELECT package_status FROM aps_packages WHERE id = '".$app->functions->intval($_GET['id'])."';");
-    if($get_status['package_status'] == strval(PACKAGE_LOCKED))
-    {
-        $app->db->query("UPDATE aps_packages SET package_status = ".PACKAGE_ENABLED." WHERE id = '".$app->functions->intval($_GET['id'])."';");
-        echo '<div class="swap" id="ir-Yes"><span>'.$app->lng('Yes').'</span></div>';
-    }
-    else
-    {
-        $app->db->query("UPDATE aps_packages SET Package_status = ".PACKAGE_LOCKED." WHERE id = '".$app->functions->intval($_GET['id'])."';");
-        echo '<div class="swap" id="ir-No"><span>'.$app->lng('No').'</span></div>';
-    }
-}
-else if($_GET['action'] == 'delete_instance')
-{
-    // Make sure a valid package ID is given (also corresponding to the calling user)
-    $client_id = 0;
-    $is_admin = ($_SESSION['s']['user']['typ'] == 'admin') ? true : false;
-    if(!$is_admin)
-    {
-        $cid = $app->db->queryOneRecord("SELECT client_id FROM client WHERE username = '".$app->db->quote($_SESSION['s']['user']['username'])."';");
-        $client_id = $cid['client_id'];
-    }
-	
-    // Assume that the given instance belongs to the currently calling client_id. Unimportant if status is admin
-    if(!$gui->isValidInstanceID($_GET['id'], $client_id, $is_admin)) die($app->lng('Invalid ID'));
-    
-    // Only delete the instance if the status is "installed" or "flawed"
-    $check = $app->db->queryOneRecord("SELECT id FROM aps_instances 
-        WHERE id = ".$app->db->quote($_GET['id'])." AND 
-        (instance_status = ".INSTANCE_SUCCESS." OR instance_status = ".INSTANCE_ERROR.");");
-    if($check['id'] > 0) $gui->deleteInstance($_GET['id']);
-    //echo $app->lng('Installation_remove');
-	@header('Location:aps_installedpackages_list.php');
-}
-else if($_GET['action'] == 'reinstall_instance')
-{
-    // Make sure a valid package ID is given (also corresponding to the calling user)
-    $client_id = 0;
-    $is_admin = ($_SESSION['s']['user']['typ'] == 'admin') ? true : false;
-    if(!$is_admin)
-    {
-        $cid = $app->db->queryOneRecord("SELECT client_id FROM client WHERE username = '".$app->db->quote($_SESSION['s']['user']['username'])."';");
-        $client_id = $cid['client_id'];
-    }
-    // Assume that the given instance belongs to the currently calling client_id. Unimportant if status is admin
-    if(!$gui->isValidInstanceID($_GET['id'], $client_id, $is_admin)) die($app->lng('Invalid ID'));
-    
-    // We've an InstanceID, so make sure the package is not enabled and InstanceStatus is still "installed"
-    $check = $app->db->queryOneRecord("SELECT aps_instances.id FROM aps_instances, aps_packages 
-        WHERE aps_instances.package_id = aps_packages.id 
-        AND aps_instances.instance_status = ".INSTANCE_SUCCESS." 
-        AND aps_packages.package_status = ".PACKAGE_ENABLED." 
-        AND aps_instances.id = ".$app->db->quote($_GET['id']).";");
-    if(!$check) die('Check failed'); // normally this might not happen at all, so just die
-    
-    $gui->reinstallInstance($_GET['id']);
-    //echo $app->lng('Installation_task');
-	@header('Location:aps_installedpackages_list.php');
-}
-?>
+<?php
+/*
+Copyright (c) 2012, ISPConfig UG
+Contributors: web wack creations,  http://www.web-wack.at
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of ISPConfig nor the names of its contributors
+      may be used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+$app->load('aps_guicontroller');
+
+// Check the module permissions
+$app->auth->check_module_permissions('sites');
+
+$gui = new ApsGUIController($app);
+
+// An action and ID are required in any case
+if(!isset($_GET['action'])) die('No action');
+
+// List of operations which can be performed
+if($_GET['action'] == 'change_status')
+{
+    // Only admins can perform this operation
+    if($_SESSION['s']['user']['typ'] != 'admin') die('For admin use only.');
+    
+    // Make sure a valid package ID is given
+    if(!$gui->isValidPackageID($_GET['id'], true)) die($app->lng('Invalid ID'));
+    
+    // Change the existing status to the opposite
+    $get_status = $app->db->queryOneRecord("SELECT package_status FROM aps_packages WHERE id = '".$app->functions->intval($_GET['id'])."';");
+    if($get_status['package_status'] == strval(PACKAGE_LOCKED))
+    {
+        $app->db->query("UPDATE aps_packages SET package_status = ".PACKAGE_ENABLED." WHERE id = '".$app->functions->intval($_GET['id'])."';");
+        echo '<div class="swap" id="ir-Yes"><span>'.$app->lng('Yes').'</span></div>';
+    }
+    else
+    {
+        $app->db->query("UPDATE aps_packages SET Package_status = ".PACKAGE_LOCKED." WHERE id = '".$app->functions->intval($_GET['id'])."';");
+        echo '<div class="swap" id="ir-No"><span>'.$app->lng('No').'</span></div>';
+    }
+}
+else if($_GET['action'] == 'delete_instance')
+{
+    // Make sure a valid package ID is given (also corresponding to the calling user)
+    $client_id = 0;
+    $is_admin = ($_SESSION['s']['user']['typ'] == 'admin') ? true : false;
+    if(!$is_admin)
+    {
+        $cid = $app->db->queryOneRecord("SELECT client_id FROM client WHERE username = '".$app->db->quote($_SESSION['s']['user']['username'])."';");
+        $client_id = $cid['client_id'];
+    }
+	
+    // Assume that the given instance belongs to the currently calling client_id. Unimportant if status is admin
+    if(!$gui->isValidInstanceID($_GET['id'], $client_id, $is_admin)) die($app->lng('Invalid ID'));
+    
+    // Only delete the instance if the status is "installed" or "flawed"
+    $check = $app->db->queryOneRecord("SELECT id FROM aps_instances 
+        WHERE id = ".$app->db->quote($_GET['id'])." AND 
+        (instance_status = ".INSTANCE_SUCCESS." OR instance_status = ".INSTANCE_ERROR.");");
+    if($check['id'] > 0) $gui->deleteInstance($_GET['id']);
+    //echo $app->lng('Installation_remove');
+	@header('Location:aps_installedpackages_list.php');
+}
+else if($_GET['action'] == 'reinstall_instance')
+{
+    // Make sure a valid package ID is given (also corresponding to the calling user)
+    $client_id = 0;
+    $is_admin = ($_SESSION['s']['user']['typ'] == 'admin') ? true : false;
+    if(!$is_admin)
+    {
+        $cid = $app->db->queryOneRecord("SELECT client_id FROM client WHERE username = '".$app->db->quote($_SESSION['s']['user']['username'])."';");
+        $client_id = $cid['client_id'];
+    }
+    // Assume that the given instance belongs to the currently calling client_id. Unimportant if status is admin
+    if(!$gui->isValidInstanceID($_GET['id'], $client_id, $is_admin)) die($app->lng('Invalid ID'));
+    
+    // We've an InstanceID, so make sure the package is not enabled and InstanceStatus is still "installed"
+    $check = $app->db->queryOneRecord("SELECT aps_instances.id FROM aps_instances, aps_packages 
+        WHERE aps_instances.package_id = aps_packages.id 
+        AND aps_instances.instance_status = ".INSTANCE_SUCCESS." 
+        AND aps_packages.package_status = ".PACKAGE_ENABLED." 
+        AND aps_instances.id = ".$app->db->quote($_GET['id']).";");
+    if(!$check) die('Check failed'); // normally this might not happen at all, so just die
+    
+    $gui->reinstallInstance($_GET['id']);
+    //echo $app->lng('Installation_task');
+	@header('Location:aps_installedpackages_list.php');
+}
+?>
diff --git a/interface/web/sites/aps_install_package.php b/interface/web/sites/aps_install_package.php
index ccad334993d2770cc0998468e7943372f0373087..b7bed71be3ae8ab3c49f01ee955b43572a4174f7 100644
--- a/interface/web/sites/aps_install_package.php
+++ b/interface/web/sites/aps_install_package.php
@@ -1,211 +1,211 @@
-<?php
-/*
-Copyright (c) 2012, ISPConfig UG
-Contributors: web wack creations,  http://www.web-wack.at
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of ISPConfig nor the names of its contributors
-      may be used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-//require_once('classes/class.guicontroller.php');
-$app->load('aps_guicontroller');
-
-// Check the module permissions
-$app->auth->check_module_permissions('sites');
-
-// Load needed classes
-$app->uses('tpl,tform');
-$app->tpl->newTemplate("form.tpl.htm");
-$app->tpl->setInclude('content_tpl', 'templates/aps_install_package.htm');
-
-// Load the language file
-$lngfile = 'lib/lang/'.$_SESSION['s']['language'].'_aps.lng';
-require_once($lngfile);
-$app->tpl->setVar($wb);
-$app->load_language_file('web/sites/'.$lngfile);
-
-// we will check only users, not admins
-if($_SESSION["s"]["user"]["typ"] == 'user') {		
-	$app->tform->formDef['db_table_idx'] = 'client_id';
-	$app->tform->formDef['db_table'] = 'client';
-	if(!$app->tform->checkClientLimit('limit_aps')) {
-		$app->error($app->lng("limit_aps_txt"));
-	}
-	if(!$app->tform->checkResellerLimit('limit_aps')) {
-		$app->error('Reseller: '.$wb["limit_aps_txt"]);
-	}		
-}
-
-
-$adminflag = ($_SESSION['s']['user']['typ'] == 'admin') ? true : false;
-$gui = new ApsGUIController($app);
-$pkg_id = (isset($_GET['id'])) ? $app->db->quote($_GET['id']) : '';
-
-// Check if a newer version is available for the current package
-// Note: It's intended that here is no strict ID check (see below)
-if(isset($pkg_id))
-{
-    $newest_pkg_id = $gui->getNewestPackageID($pkg_id);
-    if($newest_pkg_id != 0) $pkg_id = $newest_pkg_id;
-}
-
-// Make sure an integer ID is given
-if(!isset($pkg_id) || !$gui->isValidPackageID($pkg_id, $adminflag))
-    $app->error($app->lng('Invalid ID'));
-
-// Get package details
-$details = $gui->getPackageDetails($pkg_id);
-if(isset($details['error'])) $app->error($details['error']);
-$settings = $gui->getPackageSettings($pkg_id);
-if(isset($settings['error'])) $app->error($settings['error']);
-
-// Get domain list
-$domains = array();
-$domain_for_user = '';
-if(!$adminflag) $domain_for_user = "AND (sys_userid = '".$app->db->quote($_SESSION['s']['user']['userid'])."' 
-    OR sys_groupid = '".$app->db->quote($_SESSION['s']['user']['userid'])."' )";
-$domains_assoc = $app->db->queryAllRecords("SELECT domain FROM web_domain WHERE document_root != '' AND (type = 'vhost' OR type = 'vhostsubdomain') AND active = 'y' ".$domain_for_user." ORDER BY domain;");
-if(!empty($domains_assoc)) foreach($domains_assoc as $domain) $domains[] = $domain['domain'];
-
-// If data has been submitted, validate it
-$result['input'] = array();
-if(count($_POST) > 1)
-{
-    $result = $gui->validateInstallerInput($_POST, $details, $domains, $settings);
-    if(empty($result['error']))
-    {
-        $gui->createPackageInstance($result['input'], $pkg_id);
-        @header('Location:aps_installedpackages_list.php');
-    }
-    else
-    {
-        $app->tpl->setVar('error', implode('<br />', $result['error']));
-        
-        // Set memorized values (license, db password, install location)
-        if(!empty($result['input']))
-            foreach($result['input'] as $key => $value) $app->tpl->setVar('inp_'.$key, $value);
-    }
-}
-else $app->tpl->setVar('inp_main_database_password', ucfirst(substr(md5(crypt(rand(0, 10))), 0, 16)));
-
-// Pass the package details to the template
-foreach($details as $key => $value)
-{
-    if(!is_array($value)) $app->tpl->setVar('pkg_'.str_replace(' ', '_', strtolower($key)), $value);
-    else if($key == 'Requirements PHP settings') $app->tpl->setLoop('pkg_requirements_php_settings', $details['Requirements PHP settings']);
-}
-
-// Parse the template as far as possible, then do the rest manually 
-$app->tpl_defaults();
-$parsed_tpl = $app->tpl->grab();
-
-
-// ISPConfig has a very old and functionally limited template engine. We have to style parts on our own...
-
-// Print the domain list
-$domains_tpl = '';
-if(!empty($domains))
-{
-    $set = array();
-    $set[] = '<select name="main_domain" id="main_domain" class="selectInput">';
-    foreach($domains as $domain)
-    {
-        $selected = '';
-        if((count($_POST) > 1)
-        && (isset($result['input']['main_domain']))
-        && ($result['input']['main_domain'] == $domain))
-            $selected = ' selected ';
-        $set[] = '<option value="'.$domain.'" '.$selected.'>'.$domain.'</option>';
-    }
-    $set[] = '</select>';
-    
-    $domains_tpl = implode("\n", $set);
-}
-$parsed_tpl = str_replace('DOMAIN_LIST_SPACE', $domains_tpl, $parsed_tpl);
-
-// Print the packgae settings
-$settings_tpl = '';
-if(!empty($settings))
-{
-    $set = array();
-    $set[] = '<legend>'.$app->lng('package_settings_txt').'</legend>';
-    foreach($settings as $setting)
-    {
-        $set[] = '<div class="ctrlHolder">';
-        $set[] = '<label for="'.$setting['SettingID'].'">'.$setting['SettingName'].'</label>';
-        if($setting['SettingInputType'] == 'string' || $setting['SettingInputType'] == 'password')
-        {
-            $input_type = ($setting['SettingInputType'] == 'string') ? 'text' : 'password';
-              
-            $input_value = '';
-            if((count($_POST) > 1) 
-            && (isset($result['input'][$setting['SettingID']]))) 
-                $input_value = $result['input'][$setting['SettingID']];
-            else $input_value = @$setting['SettingDefaultValue'];
-            
-            $set[] = '<input type="'.$input_type.'" class="textInput" name="'.$setting['SettingID'].'" maxlength="'.$setting['SettingMaxLength'].'" id="'.$setting['SettingID'].'" value="'.$input_value.'" />
-                <p class="formHint">'.$setting['SettingDescription'].'</p>';
-        }
-        else if($setting['SettingInputType'] == 'checkbox')
-        {
-            $checked = '';
-            if((count($_POST) > 1) 
-            && (isset($result['input'][$setting['SettingID']]) 
-            && ($result['input'][$setting['SettingID']] == 'true'))) 
-                $checked = 'checked ';
-            else if($setting['SettingDefaultValue'] == '1') $checked = 'checked ';
-            
-            $set[] = '<input type="checkbox" id="'.$setting['SettingID'].'" name="'.$setting['SettingID'].'" '.$checked.'/>
-                <p class="formHint">'.$setting['SettingDescription'].'</p>';
-        }
-        else if($setting['SettingInputType'] == 'select')
-        {
-            $set[] =  '<select size="1" class="selectInput" name="'.$setting['SettingID'].'">';
-            foreach($setting['SettingChoices'] as $choice)
-            {
-                $selected = '';
-                if((count($_POST) > 1)
-                && (isset($result['input'][$setting['SettingID']])))
-                { 
-                    if($result['input'][$setting['SettingID']] == $choice['EnumID'])
-                        $selected = 'selected ';
-                }
-                else if($setting['SettingDefaultValue'] == $choice['EnumID']) $selected = 'selected ';
-                
-                $set[] = '<option value="'.$choice['EnumID'].'" '.$selected.'>'.$choice['EnumName'].'</option>';
-            }
-            $set[] = '</select>
-                <p class="formHint">'.$setting['SettingDescription'].'</p>';
-        }
-        
-        $set[] = '</div>';
-    }
-    $settings_tpl = implode("\n", $set);
-}
-$parsed_tpl = str_replace('PKG_SETTINGS_SPACE', $settings_tpl, $parsed_tpl);
-
-echo $parsed_tpl;
+<?php
+/*
+Copyright (c) 2012, ISPConfig UG
+Contributors: web wack creations,  http://www.web-wack.at
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of ISPConfig nor the names of its contributors
+      may be used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+//require_once('classes/class.guicontroller.php');
+$app->load('aps_guicontroller');
+
+// Check the module permissions
+$app->auth->check_module_permissions('sites');
+
+// Load needed classes
+$app->uses('tpl,tform');
+$app->tpl->newTemplate("form.tpl.htm");
+$app->tpl->setInclude('content_tpl', 'templates/aps_install_package.htm');
+
+// Load the language file
+$lngfile = 'lib/lang/'.$_SESSION['s']['language'].'_aps.lng';
+require_once($lngfile);
+$app->tpl->setVar($wb);
+$app->load_language_file('web/sites/'.$lngfile);
+
+// we will check only users, not admins
+if($_SESSION["s"]["user"]["typ"] == 'user') {		
+	$app->tform->formDef['db_table_idx'] = 'client_id';
+	$app->tform->formDef['db_table'] = 'client';
+	if(!$app->tform->checkClientLimit('limit_aps')) {
+		$app->error($app->lng("limit_aps_txt"));
+	}
+	if(!$app->tform->checkResellerLimit('limit_aps')) {
+		$app->error('Reseller: '.$wb["limit_aps_txt"]);
+	}		
+}
+
+
+$adminflag = ($_SESSION['s']['user']['typ'] == 'admin') ? true : false;
+$gui = new ApsGUIController($app);
+$pkg_id = (isset($_GET['id'])) ? $app->db->quote($_GET['id']) : '';
+
+// Check if a newer version is available for the current package
+// Note: It's intended that here is no strict ID check (see below)
+if(isset($pkg_id))
+{
+    $newest_pkg_id = $gui->getNewestPackageID($pkg_id);
+    if($newest_pkg_id != 0) $pkg_id = $newest_pkg_id;
+}
+
+// Make sure an integer ID is given
+if(!isset($pkg_id) || !$gui->isValidPackageID($pkg_id, $adminflag))
+    $app->error($app->lng('Invalid ID'));
+
+// Get package details
+$details = $gui->getPackageDetails($pkg_id);
+if(isset($details['error'])) $app->error($details['error']);
+$settings = $gui->getPackageSettings($pkg_id);
+if(isset($settings['error'])) $app->error($settings['error']);
+
+// Get domain list
+$domains = array();
+$domain_for_user = '';
+if(!$adminflag) $domain_for_user = "AND (sys_userid = '".$app->db->quote($_SESSION['s']['user']['userid'])."' 
+    OR sys_groupid = '".$app->db->quote($_SESSION['s']['user']['userid'])."' )";
+$domains_assoc = $app->db->queryAllRecords("SELECT domain FROM web_domain WHERE document_root != '' AND (type = 'vhost' OR type = 'vhostsubdomain') AND active = 'y' ".$domain_for_user." ORDER BY domain;");
+if(!empty($domains_assoc)) foreach($domains_assoc as $domain) $domains[] = $domain['domain'];
+
+// If data has been submitted, validate it
+$result['input'] = array();
+if(count($_POST) > 1)
+{
+    $result = $gui->validateInstallerInput($_POST, $details, $domains, $settings);
+    if(empty($result['error']))
+    {
+        $gui->createPackageInstance($result['input'], $pkg_id);
+        @header('Location:aps_installedpackages_list.php');
+    }
+    else
+    {
+        $app->tpl->setVar('error', implode('<br />', $result['error']));
+        
+        // Set memorized values (license, db password, install location)
+        if(!empty($result['input']))
+            foreach($result['input'] as $key => $value) $app->tpl->setVar('inp_'.$key, $value);
+    }
+}
+else $app->tpl->setVar('inp_main_database_password', ucfirst(substr(md5(crypt(rand(0, 10))), 0, 16)));
+
+// Pass the package details to the template
+foreach($details as $key => $value)
+{
+    if(!is_array($value)) $app->tpl->setVar('pkg_'.str_replace(' ', '_', strtolower($key)), $value);
+    else if($key == 'Requirements PHP settings') $app->tpl->setLoop('pkg_requirements_php_settings', $details['Requirements PHP settings']);
+}
+
+// Parse the template as far as possible, then do the rest manually 
+$app->tpl_defaults();
+$parsed_tpl = $app->tpl->grab();
+
+
+// ISPConfig has a very old and functionally limited template engine. We have to style parts on our own...
+
+// Print the domain list
+$domains_tpl = '';
+if(!empty($domains))
+{
+    $set = array();
+    $set[] = '<select name="main_domain" id="main_domain" class="selectInput">';
+    foreach($domains as $domain)
+    {
+        $selected = '';
+        if((count($_POST) > 1)
+        && (isset($result['input']['main_domain']))
+        && ($result['input']['main_domain'] == $domain))
+            $selected = ' selected ';
+        $set[] = '<option value="'.$domain.'" '.$selected.'>'.$domain.'</option>';
+    }
+    $set[] = '</select>';
+    
+    $domains_tpl = implode("\n", $set);
+}
+$parsed_tpl = str_replace('DOMAIN_LIST_SPACE', $domains_tpl, $parsed_tpl);
+
+// Print the packgae settings
+$settings_tpl = '';
+if(!empty($settings))
+{
+    $set = array();
+    $set[] = '<legend>'.$app->lng('package_settings_txt').'</legend>';
+    foreach($settings as $setting)
+    {
+        $set[] = '<div class="ctrlHolder">';
+        $set[] = '<label for="'.$setting['SettingID'].'">'.$setting['SettingName'].'</label>';
+        if($setting['SettingInputType'] == 'string' || $setting['SettingInputType'] == 'password')
+        {
+            $input_type = ($setting['SettingInputType'] == 'string') ? 'text' : 'password';
+              
+            $input_value = '';
+            if((count($_POST) > 1) 
+            && (isset($result['input'][$setting['SettingID']]))) 
+                $input_value = $result['input'][$setting['SettingID']];
+            else $input_value = @$setting['SettingDefaultValue'];
+            
+            $set[] = '<input type="'.$input_type.'" class="textInput" name="'.$setting['SettingID'].'" maxlength="'.$setting['SettingMaxLength'].'" id="'.$setting['SettingID'].'" value="'.$input_value.'" />
+                <p class="formHint">'.$setting['SettingDescription'].'</p>';
+        }
+        else if($setting['SettingInputType'] == 'checkbox')
+        {
+            $checked = '';
+            if((count($_POST) > 1) 
+            && (isset($result['input'][$setting['SettingID']]) 
+            && ($result['input'][$setting['SettingID']] == 'true'))) 
+                $checked = 'checked ';
+            else if($setting['SettingDefaultValue'] == '1') $checked = 'checked ';
+            
+            $set[] = '<input type="checkbox" id="'.$setting['SettingID'].'" name="'.$setting['SettingID'].'" '.$checked.'/>
+                <p class="formHint">'.$setting['SettingDescription'].'</p>';
+        }
+        else if($setting['SettingInputType'] == 'select')
+        {
+            $set[] =  '<select size="1" class="selectInput" name="'.$setting['SettingID'].'">';
+            foreach($setting['SettingChoices'] as $choice)
+            {
+                $selected = '';
+                if((count($_POST) > 1)
+                && (isset($result['input'][$setting['SettingID']])))
+                { 
+                    if($result['input'][$setting['SettingID']] == $choice['EnumID'])
+                        $selected = 'selected ';
+                }
+                else if($setting['SettingDefaultValue'] == $choice['EnumID']) $selected = 'selected ';
+                
+                $set[] = '<option value="'.$choice['EnumID'].'" '.$selected.'>'.$choice['EnumName'].'</option>';
+            }
+            $set[] = '</select>
+                <p class="formHint">'.$setting['SettingDescription'].'</p>';
+        }
+        
+        $set[] = '</div>';
+    }
+    $settings_tpl = implode("\n", $set);
+}
+$parsed_tpl = str_replace('PKG_SETTINGS_SPACE', $settings_tpl, $parsed_tpl);
+
+echo $parsed_tpl;
 ?>
\ No newline at end of file
diff --git a/interface/web/sites/aps_installedpackages_list.php b/interface/web/sites/aps_installedpackages_list.php
index e3c318f93e84757a7697b1ce0c37d1545aa0dcbe..00d7b258b160e988804d67ddbda5fd02241a090a 100644
--- a/interface/web/sites/aps_installedpackages_list.php
+++ b/interface/web/sites/aps_installedpackages_list.php
@@ -1,142 +1,142 @@
-<?php
-/*
-Copyright (c) 2012, ISPConfig UG
-Contributors: web wack creations,  http://www.web-wack.at
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of ISPConfig nor the names of its contributors
-      may be used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-//require_once('classes/class.base.php'); // for constants
-$app->load('aps_base');
-
-// Path to the list definition file
-$list_def_file = "list/aps_installedpackages.list.php";
-
-// Check the module permissions
-$app->auth->check_module_permissions('sites');
-        
-// Load needed classes
-$app->uses('tpl,tform,listform,listform_actions');
-
-// Show further information only to admins or resellers
-if($_SESSION['s']['user']['typ'] == 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid']))
-    $app->tpl->setVar('is_noclient', 1);
-
-// Show each user the own packages (if not admin)
-$client_ext = '';
-$is_admin = ($_SESSION['s']['user']['typ'] == 'admin') ? true : false;
-if(!$is_admin)
-{
-    $cid = $app->db->queryOneRecord('SELECT client_id FROM client WHERE username = "'.$app->db->quote($_SESSION['s']['user']['username']).'";');
-    //$client_ext = ' AND aps_instances.customer_id = '.$cid['client_id'];
-	$client_ext = ' AND '.$app->tform->getAuthSQL('r', 'aps_instances');
-}
-$app->listform_actions->SQLExtWhere = 'aps_instances.package_id = aps_packages.id'.$client_ext;
-$app->listform_actions->SQLOrderBy = 'ORDER BY package_name';
-
-// We are using parts of listform_actions because ISPConfig doesn't allow
-// queries over multiple tables so we construct them ourselves
-$_SESSION['s']['form']['return_to'] = '';
-
-// Load the list template		
-$app->listform->loadListDef($list_def_file);
-if(!is_file('templates/'.$app->listform->listDef["name"].'_list.htm')) 
-{
-$app->uses('listform_tpl_generator');
-$app->listform_tpl_generator->buildHTML($app->listform->listDef);
-}
-$app->tpl->newTemplate("listpage.tpl.htm");
-$app->tpl->setInclude('content_tpl', 'templates/'.$app->listform->listDef["name"].'_list.htm');
-
-// Build the WHERE query for search
-$sql_where = '';
-if($app->listform_actions->SQLExtWhere != '') 
-  $sql_where .= ' '.$app->listform_actions->SQLExtWhere.' and';
-$sql_where = $app->listform->getSearchSQL($sql_where);
-$app->tpl->setVar($app->listform->searchValues);
-		
-// Paging
-$limit_sql = $app->listform->getPagingSQL($sql_where);
-$app->tpl->setVar('paging', $app->listform->pagingHTML);
-
-if(!$is_admin) {
-// Our query over multiple tables
-$query = "SELECT aps_instances.id AS id, aps_instances.package_id AS package_id, 
-                 aps_instances.customer_id AS customer_id, client.username AS customer_name, 
-                 aps_instances.instance_status AS instance_status, aps_packages.name AS package_name, 
-                 aps_packages.version AS package_version, aps_packages.release AS package_release, 
-                 aps_packages.package_status AS package_status, 
-              CONCAT((SELECT value FROM aps_instances_settings WHERE name='main_domain' AND instance_id = aps_instances.id), 
-                 '/', (SELECT value FROM aps_instances_settings WHERE name='main_location' AND instance_id = aps_instances.id)) 
-                  AS install_location  
-          FROM aps_instances, aps_packages, client 
-          WHERE client.client_id = aps_instances.customer_id AND ".$sql_where." ".$app->listform_actions->SQLOrderBy." ".$limit_sql;
-} else {
-$query = "SELECT aps_instances.id AS id, aps_instances.package_id AS package_id,  
-                 aps_instances.customer_id AS customer_id, sys_group.name AS customer_name,
-				 aps_instances.instance_status AS instance_status, aps_packages.name AS package_name, 
-                 aps_packages.version AS package_version, aps_packages.release AS package_release, 
-                 aps_packages.package_status AS package_status, 
-              CONCAT((SELECT value FROM aps_instances_settings WHERE name='main_domain' AND instance_id = aps_instances.id), 
-                 '/', (SELECT value FROM aps_instances_settings WHERE name='main_location' AND instance_id = aps_instances.id)) 
-                  AS install_location  
-          FROM aps_instances, aps_packages, sys_group 
-          WHERE sys_group.client_id = aps_instances.customer_id AND ".$sql_where." ".$app->listform_actions->SQLOrderBy." ".$limit_sql;
-
-}	  
-
-$records = $app->db->queryAllRecords($query);
-$app->listform_actions->DataRowColor = '#FFFFFF';
-
-// Re-form all result entries and add extra entries 
-$records_new = '';
-if(is_array($records)) 
-{
-    $app->listform_actions->idx_key = $app->listform->listDef["table_idx"]; 
-    foreach($records as $rec)
-    {
-        // Set an abbreviated install location to beware the page layout
-        $ils = '';
-        if(strlen($rec['Install_location']) >= 38) $ils = substr($rec['Install_location'], 0,  35).'...';
-        else $ils = $rec['install_location'];
-        $rec['install_location_short'] = $ils; 
-        
-        // Also set a boolean-like variable for the reinstall button (vlibTemplate doesn't allow variable comparisons)
-        // For a reinstall, the package must be already installed successfully and (still be) enabled
-        if($rec['instance_status'] == INSTANCE_SUCCESS && $rec['package_status'] == PACKAGE_ENABLED) 
-            $rec['reinstall_possible'] = 'true';
-        // Of course an instance can only then be removed when it's not already tagged for removal
-        if($rec['instance_status'] != INSTANCE_REMOVE && $rec['instance_status'] != INSTANCE_INSTALL) 
-            $rec['delete_possible'] = 'true';
-        
-        $records_new[] = $app->listform_actions->prepareDataRow($rec);
-    }
-}
-$app->tpl->setLoop('records', $records_new);
-
-$app->listform_actions->onShow();
-?>
+<?php
+/*
+Copyright (c) 2012, ISPConfig UG
+Contributors: web wack creations,  http://www.web-wack.at
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of ISPConfig nor the names of its contributors
+      may be used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+//require_once('classes/class.base.php'); // for constants
+$app->load('aps_base');
+
+// Path to the list definition file
+$list_def_file = "list/aps_installedpackages.list.php";
+
+// Check the module permissions
+$app->auth->check_module_permissions('sites');
+        
+// Load needed classes
+$app->uses('tpl,tform,listform,listform_actions');
+
+// Show further information only to admins or resellers
+if($_SESSION['s']['user']['typ'] == 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid']))
+    $app->tpl->setVar('is_noclient', 1);
+
+// Show each user the own packages (if not admin)
+$client_ext = '';
+$is_admin = ($_SESSION['s']['user']['typ'] == 'admin') ? true : false;
+if(!$is_admin)
+{
+    $cid = $app->db->queryOneRecord('SELECT client_id FROM client WHERE username = "'.$app->db->quote($_SESSION['s']['user']['username']).'";');
+    //$client_ext = ' AND aps_instances.customer_id = '.$cid['client_id'];
+	$client_ext = ' AND '.$app->tform->getAuthSQL('r', 'aps_instances');
+}
+$app->listform_actions->SQLExtWhere = 'aps_instances.package_id = aps_packages.id'.$client_ext;
+$app->listform_actions->SQLOrderBy = 'ORDER BY package_name';
+
+// We are using parts of listform_actions because ISPConfig doesn't allow
+// queries over multiple tables so we construct them ourselves
+$_SESSION['s']['form']['return_to'] = '';
+
+// Load the list template		
+$app->listform->loadListDef($list_def_file);
+if(!is_file('templates/'.$app->listform->listDef["name"].'_list.htm')) 
+{
+$app->uses('listform_tpl_generator');
+$app->listform_tpl_generator->buildHTML($app->listform->listDef);
+}
+$app->tpl->newTemplate("listpage.tpl.htm");
+$app->tpl->setInclude('content_tpl', 'templates/'.$app->listform->listDef["name"].'_list.htm');
+
+// Build the WHERE query for search
+$sql_where = '';
+if($app->listform_actions->SQLExtWhere != '') 
+  $sql_where .= ' '.$app->listform_actions->SQLExtWhere.' and';
+$sql_where = $app->listform->getSearchSQL($sql_where);
+$app->tpl->setVar($app->listform->searchValues);
+		
+// Paging
+$limit_sql = $app->listform->getPagingSQL($sql_where);
+$app->tpl->setVar('paging', $app->listform->pagingHTML);
+
+if(!$is_admin) {
+// Our query over multiple tables
+$query = "SELECT aps_instances.id AS id, aps_instances.package_id AS package_id, 
+                 aps_instances.customer_id AS customer_id, client.username AS customer_name, 
+                 aps_instances.instance_status AS instance_status, aps_packages.name AS package_name, 
+                 aps_packages.version AS package_version, aps_packages.release AS package_release, 
+                 aps_packages.package_status AS package_status, 
+              CONCAT((SELECT value FROM aps_instances_settings WHERE name='main_domain' AND instance_id = aps_instances.id), 
+                 '/', (SELECT value FROM aps_instances_settings WHERE name='main_location' AND instance_id = aps_instances.id)) 
+                  AS install_location  
+          FROM aps_instances, aps_packages, client 
+          WHERE client.client_id = aps_instances.customer_id AND ".$sql_where." ".$app->listform_actions->SQLOrderBy." ".$limit_sql;
+} else {
+$query = "SELECT aps_instances.id AS id, aps_instances.package_id AS package_id,  
+                 aps_instances.customer_id AS customer_id, sys_group.name AS customer_name,
+				 aps_instances.instance_status AS instance_status, aps_packages.name AS package_name, 
+                 aps_packages.version AS package_version, aps_packages.release AS package_release, 
+                 aps_packages.package_status AS package_status, 
+              CONCAT((SELECT value FROM aps_instances_settings WHERE name='main_domain' AND instance_id = aps_instances.id), 
+                 '/', (SELECT value FROM aps_instances_settings WHERE name='main_location' AND instance_id = aps_instances.id)) 
+                  AS install_location  
+          FROM aps_instances, aps_packages, sys_group 
+          WHERE sys_group.client_id = aps_instances.customer_id AND ".$sql_where." ".$app->listform_actions->SQLOrderBy." ".$limit_sql;
+
+}	  
+
+$records = $app->db->queryAllRecords($query);
+$app->listform_actions->DataRowColor = '#FFFFFF';
+
+// Re-form all result entries and add extra entries 
+$records_new = '';
+if(is_array($records)) 
+{
+    $app->listform_actions->idx_key = $app->listform->listDef["table_idx"]; 
+    foreach($records as $rec)
+    {
+        // Set an abbreviated install location to beware the page layout
+        $ils = '';
+        if(strlen($rec['Install_location']) >= 38) $ils = substr($rec['Install_location'], 0,  35).'...';
+        else $ils = $rec['install_location'];
+        $rec['install_location_short'] = $ils; 
+        
+        // Also set a boolean-like variable for the reinstall button (vlibTemplate doesn't allow variable comparisons)
+        // For a reinstall, the package must be already installed successfully and (still be) enabled
+        if($rec['instance_status'] == INSTANCE_SUCCESS && $rec['package_status'] == PACKAGE_ENABLED) 
+            $rec['reinstall_possible'] = 'true';
+        // Of course an instance can only then be removed when it's not already tagged for removal
+        if($rec['instance_status'] != INSTANCE_REMOVE && $rec['instance_status'] != INSTANCE_INSTALL) 
+            $rec['delete_possible'] = 'true';
+        
+        $records_new[] = $app->listform_actions->prepareDataRow($rec);
+    }
+}
+$app->tpl->setLoop('records', $records_new);
+
+$app->listform_actions->onShow();
+?>
\ No newline at end of file
diff --git a/interface/web/sites/aps_meta_packages/empty.dir b/interface/web/sites/aps_meta_packages/empty.dir
new file mode 100644
index 0000000000000000000000000000000000000000..95ba9ef37cca69318bcba17e67cd44ae84bd41e1
--- /dev/null
+++ b/interface/web/sites/aps_meta_packages/empty.dir
@@ -0,0 +1 @@
+This empty directory is needed by ISPConfig.
diff --git a/interface/web/sites/aps_packagedetails_show.php b/interface/web/sites/aps_packagedetails_show.php
index 94f5eaa0ae1b91d149afe40da0b92e830f1448cf..737bd54a9a82a29bce5644f5819f02f5485882ca 100644
--- a/interface/web/sites/aps_packagedetails_show.php
+++ b/interface/web/sites/aps_packagedetails_show.php
@@ -1,100 +1,100 @@
-<?php
-/*
-Copyright (c) 2012, ISPConfig UG
-Contributors: web wack creations,  http://www.web-wack.at
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of ISPConfig nor the names of its contributors
-      may be used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-//require_once('classes/class.guicontroller.php');
-$app->load('aps_guicontroller');
-
-// Check the module permissions
-$app->auth->check_module_permissions('sites');
-
-// Load needed classes
-$app->uses('tpl');
-$app->tpl->newTemplate("listpage.tpl.htm");
-$app->tpl->setInclude('content_tpl', 'templates/aps_packagedetails_show.htm');
-
-// Load the language file
-$lngfile = 'lib/lang/'.$_SESSION['s']['language'].'_aps.lng';
-require_once($lngfile);
-$app->tpl->setVar($wb);
-
-$gui = new ApsGUIController($app);
-$pkg_id = (isset($_GET['id'])) ? $app->db->quote($_GET['id']) : '';
-
-// Check if a newer version is available for the current package
-// Note: It's intended that here is no strict ID check (see below)
-if(isset($pkg_id))
-{
-    $newest_pkg_id = $gui->getNewestPackageID($pkg_id);
-    if($newest_pkg_id != 0) $pkg_id = $newest_pkg_id;
-}
-
-// Make sure an integer ID is given
-$adminflag = ($_SESSION['s']['user']['typ'] == 'admin') ? true : false;
-if(!isset($pkg_id) || !$gui->isValidPackageID($pkg_id, $adminflag))
-    $app->error($app->lng('Invalid ID'));
-
-// Get package details
-$details = $gui->getPackageDetails($pkg_id);
-if(isset($details['error'])) $app->error($details['error']);
-
-// Set the active and default tab
-$next_tab = 'details';
-if(isset($_POST['next_tab']) || isset($_GET['next_tab']))
-{
-    $tab = (isset($_POST['next_tab']) ? $_POST['next_tab'] : $_GET['next_tab']);
-    switch($tab)
-    {
-        case 'details': $next_tab = 'details'; break;
-        case 'settings': $next_tab = 'settings'; break;
-        case 'changelog': $next_tab = 'changelog'; break;
-        case 'screenshots': $next_tab = 'screenshots'; break;
-        default: $next_tab = 'details';
-    }
-}
-$app->tpl->setVar('next_tab', $next_tab);
-
-// Parse the package details to the template
-foreach($details as $key => $value)
-{
-    if(!is_array($value)) $app->tpl->setVar('pkg_'.str_replace(' ', '_', strtolower($key)), $value);
-    else // Special cases
-    {
-        if($key == 'Changelog') $app->tpl->setLoop('pkg_changelog', $details['Changelog']);
-        elseif($key == 'Screenshots') $app->tpl->setLoop('pkg_screenshots', $details['Screenshots']);
-        elseif($key == 'Requirements PHP settings') $app->tpl->setLoop('pkg_requirements_php_settings', $details['Requirements PHP settings']);
-    }
-}
-//print_r($details['Requirements PHP settings']);
-
-$app->tpl_defaults();
-$app->tpl->pparse();
+<?php
+/*
+Copyright (c) 2012, ISPConfig UG
+Contributors: web wack creations,  http://www.web-wack.at
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of ISPConfig nor the names of its contributors
+      may be used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+require_once('../../lib/config.inc.php');
+require_once('../../lib/app.inc.php');
+//require_once('classes/class.guicontroller.php');
+$app->load('aps_guicontroller');
+
+// Check the module permissions
+$app->auth->check_module_permissions('sites');
+
+// Load needed classes
+$app->uses('tpl');
+$app->tpl->newTemplate("listpage.tpl.htm");
+$app->tpl->setInclude('content_tpl', 'templates/aps_packagedetails_show.htm');
+
+// Load the language file
+$lngfile = 'lib/lang/'.$_SESSION['s']['language'].'_aps.lng';
+require_once($lngfile);
+$app->tpl->setVar($wb);
+
+$gui = new ApsGUIController($app);
+$pkg_id = (isset($_GET['id'])) ? $app->db->quote($_GET['id']) : '';
+
+// Check if a newer version is available for the current package
+// Note: It's intended that here is no strict ID check (see below)
+if(isset($pkg_id))
+{
+    $newest_pkg_id = $gui->getNewestPackageID($pkg_id);
+    if($newest_pkg_id != 0) $pkg_id = $newest_pkg_id;
+}
+
+// Make sure an integer ID is given
+$adminflag = ($_SESSION['s']['user']['typ'] == 'admin') ? true : false;
+if(!isset($pkg_id) || !$gui->isValidPackageID($pkg_id, $adminflag))
+    $app->error($app->lng('Invalid ID'));
+
+// Get package details
+$details = $gui->getPackageDetails($pkg_id);
+if(isset($details['error'])) $app->error($details['error']);
+
+// Set the active and default tab
+$next_tab = 'details';
+if(isset($_POST['next_tab']) || isset($_GET['next_tab']))
+{
+    $tab = (isset($_POST['next_tab']) ? $_POST['next_tab'] : $_GET['next_tab']);
+    switch($tab)
+    {
+        case 'details': $next_tab = 'details'; break;
+        case 'settings': $next_tab = 'settings'; break;
+        case 'changelog': $next_tab = 'changelog'; break;
+        case 'screenshots': $next_tab = 'screenshots'; break;
+        default: $next_tab = 'details';
+    }
+}
+$app->tpl->setVar('next_tab', $next_tab);
+
+// Parse the package details to the template
+foreach($details as $key => $value)
+{
+    if(!is_array($value)) $app->tpl->setVar('pkg_'.str_replace(' ', '_', strtolower($key)), $value);
+    else // Special cases
+    {
+        if($key == 'Changelog') $app->tpl->setLoop('pkg_changelog', $details['Changelog']);
+        elseif($key == 'Screenshots') $app->tpl->setLoop('pkg_screenshots', $details['Screenshots']);
+        elseif($key == 'Requirements PHP settings') $app->tpl->setLoop('pkg_requirements_php_settings', $details['Requirements PHP settings']);
+    }
+}
+//print_r($details['Requirements PHP settings']);
+
+$app->tpl_defaults();
+$app->tpl->pparse();
 ?>
\ No newline at end of file
diff --git a/interface/web/sites/database_user_edit.php b/interface/web/sites/database_user_edit.php
index 4f6979fc4e6ffeca07e8d699645f03ebe0199485..1b71196f69c3defa26618ecc6b0b054581a18a21 100644
--- a/interface/web/sites/database_user_edit.php
+++ b/interface/web/sites/database_user_edit.php
@@ -57,17 +57,17 @@ class page_action extends tform_actions {
 		 * If the names are restricted -> remove the restriction, so that the
 		 * data can be edited
 		 */
-
+		
 		//* Get the database user prefix
 		$app->uses('getconf,tools_sites');
 		$global_config = $app->getconf->get_global_config('sites');
 		$dbuser_prefix = $app->tools_sites->replacePrefix($global_config['dbuser_prefix'], $this->dataRecord);
-
+		
         if ($_SESSION["s"]["user"]["typ"] != 'admin' && $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
 			// Get the limits of the client
 			$client_group_id = $_SESSION["s"]["user"]["default_group"];
 			$client = $app->db->queryOneRecord("SELECT client.company_name, client.contact_name, client.client_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
-
+            
             // Fill the client select field
             $sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ".$client['client_id']." ORDER BY sys_group.name";
             $records = $app->db->queryAllRecords($sql);
@@ -96,24 +96,24 @@ class page_action extends tform_actions {
 			}
 			$app->tpl->setVar("client_group_id",$client_select);
         }
-
-
+        
+        
 		if ($this->dataRecord['database_user'] != ""){
 			/* REMOVE the restriction */
 			$app->tpl->setVar("database_user", $app->tools_sites->removePrefix($this->dataRecord['database_user'], $this->dataRecord['database_user_prefix'], $dbuser_prefix));
 		}
-
-
+		
+    
 		$app->tpl->setVar("database_user_prefix", $app->tools_sites->getPrefix($this->dataRecord['database_user_prefix'], $dbuser_prefix, $global_config['dbuser_prefix']));
-
+		
 		parent::onShowEnd();
 	}
-
+    
     function onSubmit() {
         global $app;
-
+        
         if($_SESSION['s']['user']['typ'] != 'admin' && !$app->auth->has_clients($_SESSION['s']['user']['userid'])) unset($this->dataRecord["client_group_id"]);
-
+        
         parent::onSubmit();
     }
 
@@ -126,40 +126,35 @@ class page_action extends tform_actions {
 		$dbuser_prefix = $app->tools_sites->replacePrefix($global_config['dbuser_prefix'], $this->dataRecord);
 
         $this->oldDataRecord = $app->db->queryOneRecord("SELECT * FROM web_database_user WHERE database_user_id = '".$this->id."'");
-
+        
         $dbuser_prefix = $app->tools_sites->getPrefix($this->oldDataRecord['database_user_prefix'], $dbuser_prefix);
         $this->dataRecord['database_user_prefix'] = $dbuser_prefix;
-
+        
 		//* Database username shall not be empty
 		if($this->dataRecord['database_user'] == '') $app->tform->errorMessage .= $app->tform->wordbook["database_user_error_empty"].'<br />';
 
 		if(strlen($dbuser_prefix . $this->dataRecord['database_user']) > 16) $app->tform->errorMessage .= str_replace('{user}',$dbuser_prefix . $this->dataRecord['database_user'],$app->tform->wordbook["database_user_error_len"]).'<br />';
-
+		
 		//* Check database user against blacklist
 		$dbuser_blacklist = array($conf['db_user'],'mysql','root');
 		if(in_array($dbuser_prefix . $this->dataRecord['database_user'],$dbuser_blacklist)) {
 			$app->tform->errorMessage .= $app->lng('Database user not allowed.').'<br />';
 		}
-
+		
 		if ($app->tform->errorMessage == ''){
 			/* restrict the names if there is no error */
             /* crop user and db names if they are too long -> mysql: user: 16 chars / db: 64 chars */
 			$this->dataRecord['database_user'] = substr($dbuser_prefix . $this->dataRecord['database_user'], 0, 16);
 		}
-
-		/* prepare password for MongoDB */
-		// TODO: this still doens't work as when only the username changes we have no database_password.
-		// taking the one from oldData doesn't work as it's encrypted...shit!
-		$this->dataRecord['database_password_mongo'] = $this->dataRecord['database_user'].":mongo:".$this->dataRecord['database_password'];
-
+		
         $this->dataRecord['server_id'] = 0; // we need this on all servers
-
+        
 		parent::onBeforeUpdate();
 	}
 
 	function onBeforeInsert() {
 		global $app, $conf, $interfaceConf;
-
+		
 		//* Database username shall not be empty
 		if($this->dataRecord['database_user'] == '') $app->tform->errorMessage .= $app->tform->wordbook["database_user_error_empty"].'<br />';
 
@@ -167,11 +162,11 @@ class page_action extends tform_actions {
 		$app->uses('getconf,tools_sites');
 		$global_config = $app->getconf->get_global_config('sites');
 		$dbuser_prefix = $app->tools_sites->replacePrefix($global_config['dbuser_prefix'], $this->dataRecord);
-
+		
         $this->dataRecord['database_user_prefix'] = $dbuser_prefix;
-
+        
 		if(strlen($dbuser_prefix . $this->dataRecord['database_user']) > 16) $app->tform->errorMessage .= str_replace('{user}',$dbuser_prefix . $this->dataRecord['database_user'],$app->tform->wordbook["database_user_error_len"]).'<br />';
-
+		
 		//* Check database user against blacklist
 		$dbuser_blacklist = array($conf['db_user'],'mysql','root');
 		if(is_array($dbuser_blacklist) && in_array($dbuser_prefix . $this->dataRecord['database_user'],$dbuser_blacklist)) {
@@ -183,18 +178,15 @@ class page_action extends tform_actions {
 		if ($app->tform->errorMessage == ''){
 			$this->dataRecord['database_user'] = substr($dbuser_prefix . $this->dataRecord['database_user'], 0, 16);
 		}
-
-		$this->dataRecord['server_id'] = 0; // we need this on all servers
-
-		/* prepare password for MongoDB */
-		$this->dataRecord['database_password_mongo'] = $this->dataRecord['database_user'].":mongo:".$this->dataRecord['database_password'];
-
+		
+        $this->dataRecord['server_id'] = 0; // we need this on all servers
+        
 		parent::onBeforeInsert();
 	}
 
 	function onAfterInsert() {
 		global $app, $conf;
-
+		
 		if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
 			$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
 			$app->db->query("UPDATE web_database_user SET sys_groupid = $client_group_id, sys_perm_group = 'riud' WHERE database_user_id = ".$this->id);
@@ -216,9 +208,9 @@ class page_action extends tform_actions {
 			$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
 			$app->db->query("UPDATE web_database_user SET sys_groupid = $client_group_id, sys_perm_group = 'riud' WHERE database_user_id = ".$this->id);
 		}
-
+		
 		/*$password = $app->db->queryOneRecord("SELECT database_password FROM web_database_user WHERE database_user_id = ".$this->id);
-
+        
         $records = $app->db->queryAllRecords("SELECT DISTINCT server_id FROM web_database WHERE database_user_id = '".$app->functions->intval($this->id)."' UNION SELECT DISTINCT server_id FROM web_database WHERE database_ro_user_id = '".$app->functions->intval($this->id)."'");
         foreach($records as $rec) {
             $new_rec = $this->dataRecord;
diff --git a/interface/web/sites/form/database.tform.php b/interface/web/sites/form/database.tform.php
index 4cbfa12fefc1c70aa2ce761a64a98d73a2ca3720..e390f7276cb9428a8272e84351c5d7734b83c534 100644
--- a/interface/web/sites/form/database.tform.php
+++ b/interface/web/sites/form/database.tform.php
@@ -29,7 +29,7 @@
 	Hint:
 	The ID field of the database table is not part of the datafield definition.
 	The ID field must be always auto incement (int or bigint).
-
+	
 	Search:
 	- searchable = 1 or searchable = 2 include the field in the search
 	- searchable = 1: this field will be the title of the search result
@@ -89,10 +89,7 @@ $form["tabs"]['database'] = array (
 			'datatype'	=> 'VARCHAR',
 			'formtype'	=> 'SELECT',
 			'default'	=> 'y',
-			'value'		=> array(
-			                  'mongo' => 'MongoDB',
-			                  'mysql' => 'MySQL'
-			               )
+			'value'		=> array('mysql' => 'MySQL')
 		),
 		'database_name' => array (
 			'datatype'	=> 'VARCHAR',
@@ -177,4 +174,4 @@ $form["tabs"]['database'] = array (
 );
 
 
-?>
+?>
\ No newline at end of file
diff --git a/interface/web/sites/form/database_user.tform.php b/interface/web/sites/form/database_user.tform.php
index d2a2defe7b59ce8f5dfaa99c256ddbe9995b3bb9..fa2b2d3a321dbd53aa373cb0730b2c2e07a10d24 100644
--- a/interface/web/sites/form/database_user.tform.php
+++ b/interface/web/sites/form/database_user.tform.php
@@ -29,7 +29,7 @@
 	Hint:
 	The ID field of the database table is not part of the datafield definition.
 	The ID field must be always auto incement (int or bigint).
-
+	
 	Search:
 	- searchable = 1 or searchable = 2 include the field in the search
 	- searchable = 1: this field will be the title of the search result
@@ -108,14 +108,6 @@ $form["tabs"]['database_user'] = array (
 			'width'		=> '30',
 			'maxlength'	=> '255'
 		),
-		'database_password_mongo' => array (
-			'datatype'	=> 'VARCHAR',
-			'formtype'	=> 'PASSWORD',
-			'default'	=> '',
-			'value'		=> '',
-			'width'		=> '30',
-			'maxlength'	=> '255'
-		),
 	##################################
 	# ENDE Datatable fields
 	##################################
diff --git a/interface/web/sites/form/web_domain.tform.php b/interface/web/sites/form/web_domain.tform.php
index 233b464b8a960bf9666a07b95060f8c5a55b77d5..f2c6fa7b550ca4d00b7fc997edb69923c53236f7 100644
--- a/interface/web/sites/form/web_domain.tform.php
+++ b/interface/web/sites/form/web_domain.tform.php
@@ -72,9 +72,6 @@ if(!$app->auth->is_admin()) {
     if($client['limit_ssl'] != 'y') $ssl_available = false;
 }
 
-$app->uses('getconf');
-$web_config = $app->getconf->get_global_config('sites');
-
 $form["tabs"]['domain'] = array (
 	'title' 	=> "Domain",
 	'width' 	=> 100,
@@ -538,8 +535,7 @@ $form["tabs"]['backup'] = array (
 
 // }
 
-if($_SESSION["s"]["user"]["typ"] == 'admin'
-    || ($web_config['reseller_can_use_options'] == 'y' && $app->auth->has_clients($_SESSION['s']['user']['userid']))) {
+if($_SESSION["s"]["user"]["typ"] == 'admin') {
 
 $form["tabs"]['advanced'] = array (
 	'title' 	=> "Options",
diff --git a/interface/web/sites/form/web_vhost_subdomain.tform.php b/interface/web/sites/form/web_vhost_subdomain.tform.php
index 3aa304982a1105e137c86c5684d0db7513c1cafa..116428cb6f82a8ec890426cee0a85a3f6cdf92ef 100644
--- a/interface/web/sites/form/web_vhost_subdomain.tform.php
+++ b/interface/web/sites/form/web_vhost_subdomain.tform.php
@@ -64,9 +64,6 @@ if(!$app->auth->is_admin()) {
     if($client['limit_ssl'] != 'y') $ssl_available = false;
 }
 
-$app->uses('getconf');
-$web_config = $app->getconf->get_global_config('sites');
-
 $form["tabs"]['domain'] = array (
 	'title' 	=> "Domain",
 	'width' 	=> 100,
@@ -308,6 +305,14 @@ $form["tabs"]['redirect'] = array (
 			'default'	=> '',
 			'value'		=> array('' => 'no_redirect_txt', 'non_www_to_www' => 'domain.tld => www.domain.tld', 'www_to_non_www' => 'www.domain.tld => domain.tld', '*_domain_tld_to_domain_tld' => '*.doman.tld => domain.tld', '*_domain_tld_to_www_domain_tld' => '*.domain.tld => www.domain.tld', '*_to_domain_tld' => '* => domain.tld', '*_to_www_domain_tld' => '* => www.domain.tld')
 		),
+		'rewrite_rules' => array (
+			'datatype'	=> 'TEXT',
+			'formtype'	=> 'TEXT',
+			'default'	=> '',
+			'value'		=> '',
+			'width'		=> '30',
+			'maxlength'	=> '255'
+		),
 	##################################
 	# ENDE Datatable fields
 	##################################
@@ -520,8 +525,7 @@ $form["tabs"]['backup'] = array (
 
 // }
 
-if($_SESSION["s"]["user"]["typ"] == 'admin'
-    || ($web_config['reseller_can_use_options'] == 'y' && $app->auth->has_clients($_SESSION['s']['user']['userid']))) {
+if($_SESSION["s"]["user"]["typ"] == 'admin') {
 
 $form["tabs"]['advanced'] = array (
 	'title' 	=> "Options",
diff --git a/interface/web/sites/lib/lang/ar_database_admin_list.lng b/interface/web/sites/lib/lang/ar_database_admin_list.lng
index 3f05f65e629d07383ca16240e6ae6b862a30658d..27e62b9ac6382ef7aa436ebafbbf39c9e5df8fb5 100644
--- a/interface/web/sites/lib/lang/ar_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/ar_database_admin_list.lng
@@ -7,4 +7,5 @@ $wb['database_user_txt'] = 'Database user';
 $wb['database_name_txt'] = 'Database name';
 $wb['add_new_record_txt'] = 'Add new Database';
 $wb['sys_groupid_txt'] = 'Client';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/ar_database_list.lng b/interface/web/sites/lib/lang/ar_database_list.lng
index e56806e45afb372b4057198cfb0185c3552e67df..6039a9e0f9ee70c27a858cbb3f7c229438b7a4f2 100644
--- a/interface/web/sites/lib/lang/ar_database_list.lng
+++ b/interface/web/sites/lib/lang/ar_database_list.lng
@@ -6,4 +6,5 @@ $wb['server_id_txt'] = 'Server';
 $wb['database_user_txt'] = 'Database user';
 $wb['database_name_txt'] = 'Database name';
 $wb['add_new_record_txt'] = 'Add new Database';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/ar_web_domain.lng b/interface/web/sites/lib/lang/ar_web_domain.lng
index 8bdb312c9b61f2c7408800b1a7ace435c44b1c25..3148cbbfc6fa0528c25a51e2f4dd20ac400986bc 100644
--- a/interface/web/sites/lib/lang/ar_web_domain.lng
+++ b/interface/web/sites/lib/lang/ar_web_domain.lng
@@ -119,4 +119,5 @@ $wb['monthly_backup_txt'] = 'Monthly';
 $wb['rewrite_rules_txt'] = 'Rewrite Rules';
 $wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
+$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
 ?>
diff --git a/interface/web/sites/lib/lang/bg_database_admin_list.lng b/interface/web/sites/lib/lang/bg_database_admin_list.lng
index c4cff5076e8675d2152c7a17d637986c47e53633..ce6887654e7f1bbcbe5fc3aee99c119cd8638304 100644
--- a/interface/web/sites/lib/lang/bg_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/bg_database_admin_list.lng
@@ -7,4 +7,5 @@ $wb['database_user_txt'] = 'Потребителско име на база да
 $wb['database_name_txt'] = 'Име на базата данни';
 $wb['add_new_record_txt'] = 'Добави нова база данни';
 $wb['sys_groupid_txt'] = 'Клиент';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/bg_database_list.lng b/interface/web/sites/lib/lang/bg_database_list.lng
index 3683aa32c09e9ea627a83fac35551b0fd3250022..01d4d83c696a2a7a2b519bd61d86be9ac40bcd10 100644
--- a/interface/web/sites/lib/lang/bg_database_list.lng
+++ b/interface/web/sites/lib/lang/bg_database_list.lng
@@ -6,4 +6,5 @@ $wb['server_id_txt'] = 'Сървър';
 $wb['database_name_txt'] = 'База данни';
 $wb['add_new_record_txt'] = 'Нова база данни';
 $wb['database_user_txt'] = 'Database user';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/bg_web_domain.lng b/interface/web/sites/lib/lang/bg_web_domain.lng
index dc2d3ff67921d9755b251b123795f01e763dc0c8..dfc1dd07a36642b6247402e81c65a3f8f5ba111e 100644
--- a/interface/web/sites/lib/lang/bg_web_domain.lng
+++ b/interface/web/sites/lib/lang/bg_web_domain.lng
@@ -119,4 +119,5 @@ $wb['monthly_backup_txt'] = 'Monthly';
 $wb['rewrite_rules_txt'] = 'Rewrite Rules';
 $wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
+$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
 ?>
diff --git a/interface/web/sites/lib/lang/br_database_admin_list.lng b/interface/web/sites/lib/lang/br_database_admin_list.lng
index 3f05f65e629d07383ca16240e6ae6b862a30658d..27e62b9ac6382ef7aa436ebafbbf39c9e5df8fb5 100644
--- a/interface/web/sites/lib/lang/br_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/br_database_admin_list.lng
@@ -7,4 +7,5 @@ $wb['database_user_txt'] = 'Database user';
 $wb['database_name_txt'] = 'Database name';
 $wb['add_new_record_txt'] = 'Add new Database';
 $wb['sys_groupid_txt'] = 'Client';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/br_database_list.lng b/interface/web/sites/lib/lang/br_database_list.lng
index 449baa8bba50dda04b17b410ec8e632cdc4fc90c..51c43bfc16055b694a8703a31626f8b029ff5031 100644
--- a/interface/web/sites/lib/lang/br_database_list.lng
+++ b/interface/web/sites/lib/lang/br_database_list.lng
@@ -6,4 +6,5 @@ $wb['server_id_txt'] = 'Servidor';
 $wb['database_user_txt'] = 'Usuário do Banco';
 $wb['database_name_txt'] = 'Nome do banco';
 $wb['add_new_record_txt'] = 'Adcionar um novo banco';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/br_web_domain.lng b/interface/web/sites/lib/lang/br_web_domain.lng
index b2abb2ac905695a54632af7e279e688fe7a483ac..4feeb04191557d9c631cd8fd69d8691d610cad84 100644
--- a/interface/web/sites/lib/lang/br_web_domain.lng
+++ b/interface/web/sites/lib/lang/br_web_domain.lng
@@ -119,4 +119,5 @@ $wb['monthly_backup_txt'] = 'Monthly';
 $wb['rewrite_rules_txt'] = 'Rewrite Rules';
 $wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
+$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
 ?>
diff --git a/interface/web/sites/lib/lang/cz.lng b/interface/web/sites/lib/lang/cz.lng
index 71ccd165f62b6d489a07934ce5859ca8a23df407..3a37df3f91139d381c7b2d04d4b1514b5676101f 100644
--- a/interface/web/sites/lib/lang/cz.lng
+++ b/interface/web/sites/lib/lang/cz.lng
@@ -33,3 +33,4 @@ $wb['Update Packagelist'] = 'Aktualizace seznamu balíčků';
 $wb['Subdomain (Vhost)'] = 'Subdoména (Vhost)';
 $wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_aps.lng b/interface/web/sites/lib/lang/cz_aps.lng
index 176d76da5a21e64a153a921e06b5280dae0e3feb..69887b589a1b83af25884b38a77bd81407886283 100644
--- a/interface/web/sites/lib/lang/cz_aps.lng
+++ b/interface/web/sites/lib/lang/cz_aps.lng
@@ -54,5 +54,6 @@ $wb['installation_remove_txt'] = 'Odstranění plánu';
 $wb['packagelist_update_finished_txt'] = 'APS aktualizace seznamu balíčků dokončena.';
 $wb['btn_install_txt'] = 'Instalovat';
 $wb['btn_cancel_txt'] = 'Zrušit';
-$wb['limit_aps_txt'] = 'The max. number of APS instances for your account is reached.';
+$wb['limit_aps_txt'] = 'Max. počet APS  instancí u vašeho účtu je dosaženo.';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_aps_instances_list.lng b/interface/web/sites/lib/lang/cz_aps_instances_list.lng
index 7b7b6dd6f030ae84c78204b515540d2e06fdc11b..16e863ee9c23441513e2a05386e9756021039ee6 100644
--- a/interface/web/sites/lib/lang/cz_aps_instances_list.lng
+++ b/interface/web/sites/lib/lang/cz_aps_instances_list.lng
@@ -11,3 +11,4 @@ $wb['filter_txt'] = 'Hledat';
 $wb['delete_txt'] = 'Smazat';
 $wb['reinstall_txt'] = 'Přeinstalovat';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_aps_packages_list.lng b/interface/web/sites/lib/lang/cz_aps_packages_list.lng
index 52ef6ebcd9c42dc0bf3862a419ce9f1654a1583c..cf0d2b69d966060c9f21ad85422b4d08cc2af631 100644
--- a/interface/web/sites/lib/lang/cz_aps_packages_list.lng
+++ b/interface/web/sites/lib/lang/cz_aps_packages_list.lng
@@ -6,3 +6,4 @@ $wb['category_txt'] = 'Kategorie';
 $wb['status_txt'] = 'Odemčený';
 $wb['filter_txt'] = 'Hledat';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_aps_update_packagelist.lng b/interface/web/sites/lib/lang/cz_aps_update_packagelist.lng
index 91a6ed46a4e307f1077243b6ef8bb8ba39bc184e..edf9c2a0816af1995dd620831077e5e4cc47cba3 100644
--- a/interface/web/sites/lib/lang/cz_aps_update_packagelist.lng
+++ b/interface/web/sites/lib/lang/cz_aps_update_packagelist.lng
@@ -1,7 +1,8 @@
 <?php
-$wb['head_txt'] = 'Update Packagelist';
+$wb['head_txt'] = 'Aktualizace seznamu balíčků';
 $wb['list_desc_txt'] = '';
-$wb['btn_start_txt'] = 'Update Packagelist';
+$wb['btn_start_txt'] = 'Aktualizace seznamu balíčků';
 $wb['btn_cancel_txt'] = 'Zrušit';
-$wb['legend_txt'] = 'Here you can update the list of available packages. Please note that this can take up to five minutes. You can leave this page if you like; the process will continue in the background.';
+$wb['legend_txt'] = 'Zde si můžete aktualizovat seznam dostupných balíčků. Vezměte prosím na vědomí, že aktualizace může trvat až několik minut. Po spuštění aktualizace můžete následně opustit tuto sekci. Tento proces bude pokračovat na pozadí.';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_cron.lng b/interface/web/sites/lib/lang/cz_cron.lng
index d4e6c1767c3ca833ea85b194916f2ac0b7ddaaef..9e23b5a87d3586678a2dd31d3fe3932e279692ac 100644
--- a/interface/web/sites/lib/lang/cz_cron.lng
+++ b/interface/web/sites/lib/lang/cz_cron.lng
@@ -10,12 +10,13 @@ $wb['run_month_txt'] = 'Měsíce';
 $wb['run_wday_txt'] = 'Dny týdne';
 $wb['command_txt'] = 'Příkaz ke spuštění (příkazy jsou spuštěny přes sh, url přes wget)';
 $wb['limit_cron_txt'] = 'Dosažen maximální počet cron úloh pro Váš účet.';
-$wb['limit_cron_frequency_txt'] = 'Frekvence cron úloh překročila povolený limit';
+$wb['limit_cron_frequency_txt'] = 'Frekvence cron úloh překročila povolený limit (standardní povolená nejnižší hodnota je 1 x za 5 min. */5)';
 $wb['run_min_error_format'] = 'Chybný formát pro minuty.';
 $wb['run_hour_error_format'] = 'Chybný formát pror hodiny.';
 $wb['run_mday_error_format'] = 'Chybný formát pro dny měsíce.';
 $wb['run_month_error_format'] = 'Chybný formát pro měsíce.';
 $wb['run_wday_error_format'] = 'Chybný formát pro dny týdne.';
 $wb['command_error_format'] = 'Chybná formát příkazu. V případě URL je povoleno volání pouze http/https.';
-$wb['unknown_fieldtype_error'] = 'Bylp použito pole neznámého typu.';
+$wb['unknown_fieldtype_error'] = 'Bylo použito pole neznámého typu.';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_cron_list.lng b/interface/web/sites/lib/lang/cz_cron_list.lng
index f50dee2faf4b467db288bc4e4f1a0c94fba7a66b..dfabfa46acd39636eb1c55e415d8b4a6f819ba38 100644
--- a/interface/web/sites/lib/lang/cz_cron_list.lng
+++ b/interface/web/sites/lib/lang/cz_cron_list.lng
@@ -11,3 +11,4 @@ $wb['command_txt'] = 'Příkaz';
 $wb['add_new_cron_txt'] = 'Přidat novou cron úlohu';
 $wb['parent_domain_id_txt'] = 'Webové stránky';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_database.lng b/interface/web/sites/lib/lang/cz_database.lng
index c316f0ac97db44907706b35b7d4c8d8e24b45d08..a13b7791ba82a8ba0c39f042e7b4a7852916d6de 100644
--- a/interface/web/sites/lib/lang/cz_database.lng
+++ b/interface/web/sites/lib/lang/cz_database.lng
@@ -42,5 +42,6 @@ $wb['optional_txt'] = 'Volitelný';
 $wb['select_dbuser_txt'] = 'Vyberte uživatele databáze';
 $wb['no_dbuser_txt'] = 'Žádný';
 $wb['database_client_differs_txt'] = 'Klient mateřského webu a databáze se neshodují.';
-$wb['database_user_missing_txt'] = 'Please select a database user for this database.';
+$wb['database_user_missing_txt'] = 'Prosím vyberte uživatele databáze pro tuto databázi.';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_database_admin_list.lng b/interface/web/sites/lib/lang/cz_database_admin_list.lng
index a0069404d8b2dd755e2d0af7494d1e5516cd19d2..f9aa5571a2287e45b4deb301fdb22ac023b4e0aa 100644
--- a/interface/web/sites/lib/lang/cz_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/cz_database_admin_list.lng
@@ -7,4 +7,6 @@ $wb['database_user_txt'] = 'Uživatel databáze';
 $wb['database_name_txt'] = 'Jméno databáze';
 $wb['add_new_record_txt'] = 'Přidat nové databáze';
 $wb['sys_groupid_txt'] = 'Klient';
+$wb['parent_domain_id_txt'] = 'webová stránka';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_database_list.lng b/interface/web/sites/lib/lang/cz_database_list.lng
index 9bb80dd94580668c61d602253b8f63747ed899e9..f76bcf02c8fd9d6bedc41f8bc34fedee6317bac3 100644
--- a/interface/web/sites/lib/lang/cz_database_list.lng
+++ b/interface/web/sites/lib/lang/cz_database_list.lng
@@ -6,4 +6,6 @@ $wb['server_id_txt'] = 'Server';
 $wb['database_user_txt'] = 'Uživatel databáze';
 $wb['database_name_txt'] = 'Název databáze';
 $wb['add_new_record_txt'] = 'Přidat databázi';
+$wb['parent_domain_id_txt'] = 'Webová stránka';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_database_user.lng b/interface/web/sites/lib/lang/cz_database_user.lng
index 8a64cb5225008a2babc9ba876ce6c72fd524ebae..127d1a39c1f1abd96c3c8eabcb4f3edcb4cb9dd0 100644
--- a/interface/web/sites/lib/lang/cz_database_user.lng
+++ b/interface/web/sites/lib/lang/cz_database_user.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['database_user_txt'] = 'Uživatel databáze';
-$wb['database_password_txt'] = 'Heslo databazového uživatele';
+$wb['database_password_txt'] = 'Heslo databázového uživatele';
 $wb['password_strength_txt'] = 'Bezpečnost hesla';
 $wb['client_txt'] = 'Klient';
 $wb['active_txt'] = 'Aktivní';
@@ -21,3 +21,4 @@ $wb['globalsearch_noresults_limit_txt'] = '0 výsledků';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Hledat';
 $wb['globalsearch_suggestions_text_txt'] = 'Návrhy';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_database_user_admin_list.lng b/interface/web/sites/lib/lang/cz_database_user_admin_list.lng
index 8703e713e17c340021f19853a5da6f26411a113a..127be4f9738c571df5326da50105a64493196da1 100644
--- a/interface/web/sites/lib/lang/cz_database_user_admin_list.lng
+++ b/interface/web/sites/lib/lang/cz_database_user_admin_list.lng
@@ -4,3 +4,4 @@ $wb['database_user_txt'] = 'Uživatel databáze';
 $wb['add_new_record_txt'] = 'Vytvořit nového uživatele databáze';
 $wb['sys_groupid_txt'] = 'Klient';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_database_user_list.lng b/interface/web/sites/lib/lang/cz_database_user_list.lng
index 42cf36d70322b873e1a7d73203a6fa0d695683f4..5fc1fc39b51f2ff5b2fa95fac70f55c75b6aa06d 100644
--- a/interface/web/sites/lib/lang/cz_database_user_list.lng
+++ b/interface/web/sites/lib/lang/cz_database_user_list.lng
@@ -3,3 +3,4 @@ $wb['list_head_txt'] = 'Uživatelé databáze';
 $wb['database_user_txt'] = 'Uživatelé databáze';
 $wb['add_new_record_txt'] = 'Přidat nového uživatele databáze';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_ftp_user.lng b/interface/web/sites/lib/lang/cz_ftp_user.lng
index 876ad5108c3713f00ba4c7c570de339593cfd927..494ecda153eae53c0ee93b2f5a8415304605d577 100644
--- a/interface/web/sites/lib/lang/cz_ftp_user.lng
+++ b/interface/web/sites/lib/lang/cz_ftp_user.lng
@@ -32,3 +32,4 @@ $wb['repeat_password_txt'] = 'Opakujte heslo';
 $wb['password_mismatch_txt'] = 'Hesla se neshodují.';
 $wb['password_match_txt'] = 'Hesla se shodují.';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_ftp_user_list.lng b/interface/web/sites/lib/lang/cz_ftp_user_list.lng
index 41649df7f9b48c2302dea4af5ac2526548e95c1e..965e1c725682816a575673353bb55e8598ca95a0 100644
--- a/interface/web/sites/lib/lang/cz_ftp_user_list.lng
+++ b/interface/web/sites/lib/lang/cz_ftp_user_list.lng
@@ -6,3 +6,4 @@ $wb['parent_domain_id_txt'] = 'Webová stránka';
 $wb['username_txt'] = 'Uživatelské jméno';
 $wb['add_new_record_txt'] = 'Přidat FTP uživatele';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_shell_user.lng b/interface/web/sites/lib/lang/cz_shell_user.lng
index 711475eba8a1cd40c2fc6ea1654554faf29d0163..09377dae84312f742e2bbb370c7626bb21c21482 100644
--- a/interface/web/sites/lib/lang/cz_shell_user.lng
+++ b/interface/web/sites/lib/lang/cz_shell_user.lng
@@ -29,3 +29,4 @@ $wb['password_match_txt'] = 'Hesla se shodují.';
 $wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.';
 $wb['username_not_allowed_txt'] = 'The username is not allowed.';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_shell_user_list.lng b/interface/web/sites/lib/lang/cz_shell_user_list.lng
index 1d6bc198d7ded8db6f17a45dbdc9625288828d83..cdc729c9fea65fab2e516c2897c56a392b75a5b0 100644
--- a/interface/web/sites/lib/lang/cz_shell_user_list.lng
+++ b/interface/web/sites/lib/lang/cz_shell_user_list.lng
@@ -6,3 +6,4 @@ $wb['parent_domain_id_txt'] = 'Stránka';
 $wb['username_txt'] = 'Uživatelské jméno';
 $wb['add_new_record_txt'] = 'Přidat shell uživatele';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_user_quota_stats_list.lng b/interface/web/sites/lib/lang/cz_user_quota_stats_list.lng
index 453194454957d2ea596b3d18134c1cd8db9af464..efb766bd990f34c14e86727170442a11162e72da 100644
--- a/interface/web/sites/lib/lang/cz_user_quota_stats_list.lng
+++ b/interface/web/sites/lib/lang/cz_user_quota_stats_list.lng
@@ -3,7 +3,8 @@ $wb['list_head_txt'] = 'Disková kvóta';
 $wb['domain_txt'] = 'Doména / Webová stránka';
 $wb['system_user_txt'] = 'Linuxový uživatel';
 $wb['used_txt'] = 'Využité místo';
-$wb['hard_txt'] = 'Tvrdý limit';
-$wb['soft_txt'] = 'Měkký limit';
+$wb['hard_txt'] = 'Kvóta max. obsazení';
+$wb['soft_txt'] = 'Kvóta pro upozornění';
 $wb['files_txt'] = 'Jednotlivé soubory';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_web_aliasdomain.lng b/interface/web/sites/lib/lang/cz_web_aliasdomain.lng
index 3a5d1504067dc74f0005ddff8522a31d7f16f1e7..c82c428313f5e1f86157a5fcfcd89331b7d53e88 100644
--- a/interface/web/sites/lib/lang/cz_web_aliasdomain.lng
+++ b/interface/web/sites/lib/lang/cz_web_aliasdomain.lng
@@ -1,7 +1,7 @@
 <?php
 $wb['domain_txt'] = 'Aliasdomain';
-$wb['backup_interval_txt'] = 'Backup interval';
-$wb['backup_copies_txt'] = 'Number of backup copies';
+$wb['backup_interval_txt'] = 'Interval zálohování';
+$wb['backup_copies_txt'] = 'Počet kopií zálohy';
 $wb['ssl_state_txt'] = 'State';
 $wb['ssl_locality_txt'] = 'Locality';
 $wb['ssl_organisation_txt'] = 'Organisation';
@@ -41,7 +41,7 @@ $wb['limit_web_aliasdomain_txt'] = 'The max. number of aliasdomains for your acc
 $wb['limit_web_subdomain_txt'] = 'The max. number of web subdomains for your account is reached.';
 $wb['apache_directives_txt'] = 'Apache Directives';
 $wb['domain_error_empty'] = 'Doména je prázdná.';
-$wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.';
+$wb['domain_error_unique'] = 'Webové stránky nebo sub-doména / alias-domény již existuje s tímto doménovým jménem.';
 $wb['domain_error_regex'] = 'Neplatné doménové jméno.';
 $wb['domain_error_autosub'] = 'There is already a subdomain with these settings.';
 $wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
@@ -113,3 +113,4 @@ $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
 $wb['Domain'] = 'Aliasdomain';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_web_aliasdomain_list.lng b/interface/web/sites/lib/lang/cz_web_aliasdomain_list.lng
index 22a4ffe32f01bfe50afa072238b92ec51c76c77f..a3ae2a954d295921238cc6bc6d8b404b5d0e5190 100644
--- a/interface/web/sites/lib/lang/cz_web_aliasdomain_list.lng
+++ b/interface/web/sites/lib/lang/cz_web_aliasdomain_list.lng
@@ -12,3 +12,4 @@ $wb['no_redirect_txt'] = 'Žádné přesměrování';
 $wb['no_flag_txt'] = 'Žádný příznak';
 $wb['none_txt'] = 'Žádná';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_web_backup_list.lng b/interface/web/sites/lib/lang/cz_web_backup_list.lng
index 3c9cfc8ef57812ae5ed2712a78ccc89088c40f1b..ae06162d72eba2fe15dc70e63157c1fdb543f7e0 100644
--- a/interface/web/sites/lib/lang/cz_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/cz_web_backup_list.lng
@@ -13,3 +13,4 @@ $wb['restore_pending_txt'] = 'There is already a pending backup restore job.';
 $wb['backup_type_mysql'] = 'MySQL Database';
 $wb['backup_type_web'] = 'Website files';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_web_domain.lng b/interface/web/sites/lib/lang/cz_web_domain.lng
index 49ee278fa4e4b7b33d8df14b63c927630c2985a3..ab82df12ed9e5a6440668e1c2081537de79b161d 100644
--- a/interface/web/sites/lib/lang/cz_web_domain.lng
+++ b/interface/web/sites/lib/lang/cz_web_domain.lng
@@ -111,12 +111,14 @@ $wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Sni
 $wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['no_server_error'] = 'No server selected.';
-$wb['no_backup_txt'] = 'No backup';
-$wb['daily_backup_txt'] = 'Daily';
-$wb['weekly_backup_txt'] = 'Weekly';
-$wb['monthly_backup_txt'] = 'Monthly';
+$wb['no_server_error'] = 'Nebyl zvolen žádný server';
+$wb['no_backup_txt'] = 'Žádné zálohování';
+$wb['daily_backup_txt'] = 'DennÄ›';
+$wb['weekly_backup_txt'] = 'Týdně';
+$wb['monthly_backup_txt'] = 'Měsíčně';
 $wb['rewrite_rules_txt'] = 'Rewrite Rules';
 $wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
+$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_web_domain_admin_list.lng b/interface/web/sites/lib/lang/cz_web_domain_admin_list.lng
index e52a794428607d6356db8ef73830fde64926d4a4..4a20c10f5589f5e18dfc6b262b05f1a71213bf73 100644
--- a/interface/web/sites/lib/lang/cz_web_domain_admin_list.lng
+++ b/interface/web/sites/lib/lang/cz_web_domain_admin_list.lng
@@ -7,3 +7,4 @@ $wb['server_id_txt'] = 'Server';
 $wb['domain_txt'] = 'Doména';
 $wb['add_new_record_txt'] = 'Přidat webovou stránku';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_web_domain_list.lng b/interface/web/sites/lib/lang/cz_web_domain_list.lng
index cbf025e79b48bd76195551f87ca3b9d821127023..78296799a13356effaa5661c3316070858a7264f 100644
--- a/interface/web/sites/lib/lang/cz_web_domain_list.lng
+++ b/interface/web/sites/lib/lang/cz_web_domain_list.lng
@@ -6,3 +6,4 @@ $wb['server_id_txt'] = 'Server';
 $wb['domain_txt'] = 'Doména';
 $wb['add_new_record_txt'] = 'Přidat webovou stránku';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_web_folder.lng b/interface/web/sites/lib/lang/cz_web_folder.lng
index f9f623dc2baff896a65372ffc39d960d719b44aa..0d1090f5a54cd26c7a8e3acf6ce87b1b552b1a28 100644
--- a/interface/web/sites/lib/lang/cz_web_folder.lng
+++ b/interface/web/sites/lib/lang/cz_web_folder.lng
@@ -5,3 +5,4 @@ $wb['path_txt'] = 'Cesta';
 $wb['active_txt'] = 'Aktivní';
 $wb['path_error_regex'] = 'Neplatná cesta ke složce.';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_web_folder_list.lng b/interface/web/sites/lib/lang/cz_web_folder_list.lng
index b75c0e80dae76086394ab8ecf416a2522ffdf473..74b4d323c1fd08b4329526ee1baf01bf3df255f2 100644
--- a/interface/web/sites/lib/lang/cz_web_folder_list.lng
+++ b/interface/web/sites/lib/lang/cz_web_folder_list.lng
@@ -5,3 +5,4 @@ $wb['server_id_txt'] = 'Server';
 $wb['parent_domain_id_txt'] = 'Webové stránky';
 $wb['path_txt'] = 'Cesta';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_web_folder_user.lng b/interface/web/sites/lib/lang/cz_web_folder_user.lng
index d55cb29d8d386dd3a708e0b51fb83ceb7d63b6b5..d3d3709918936905137123490b789e4e4b1c81fe 100644
--- a/interface/web/sites/lib/lang/cz_web_folder_user.lng
+++ b/interface/web/sites/lib/lang/cz_web_folder_user.lng
@@ -3,11 +3,12 @@ $wb['web_folder_id_txt'] = 'Složka';
 $wb['username_txt'] = 'Uživatelské jméno';
 $wb['password_txt'] = 'Heslo';
 $wb['active_txt'] = 'Aktivní';
-$wb['folder_error_empty'] = 'No web folder selecetd.';
+$wb['folder_error_empty'] = 'Nebyla vybrána žádná webová složka.';
 $wb['password_strength_txt'] = 'Síla hesla';
 $wb['generate_password_txt'] = 'Generovat heslo';
 $wb['repeat_password_txt'] = 'Opakujte heslo';
 $wb['password_mismatch_txt'] = 'Hesla se neshodují.';
 $wb['password_match_txt'] = 'Hesla se shodují.';
-$wb['no_folder_perm'] = 'You have no permission for this folder.';
+$wb['no_folder_perm'] = 'Nemáte oprávnění pro tuto složku.';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_web_folder_user_list.lng b/interface/web/sites/lib/lang/cz_web_folder_user_list.lng
index 99fe62051c1e83cb715f1ba4ff4de3110b2e5107..c4621250b1accc12f1b8a576637b9413973db8e3 100644
--- a/interface/web/sites/lib/lang/cz_web_folder_user_list.lng
+++ b/interface/web/sites/lib/lang/cz_web_folder_user_list.lng
@@ -4,3 +4,4 @@ $wb['active_txt'] = 'Aktivní';
 $wb['web_folder_id_txt'] = 'Složka';
 $wb['username_txt'] = 'Uživatelské jméno';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_web_sites_stats_list.lng b/interface/web/sites/lib/lang/cz_web_sites_stats_list.lng
index ed93596824f107eac7a12df5256a86e02c81a06a..a70ccfb9b72d350e025576f4e2a8e68312a3b931 100644
--- a/interface/web/sites/lib/lang/cz_web_sites_stats_list.lng
+++ b/interface/web/sites/lib/lang/cz_web_sites_stats_list.lng
@@ -7,3 +7,4 @@ $wb['this_year_txt'] = 'Tento rok';
 $wb['last_year_txt'] = 'Minulý rok';
 $wb['sum_txt'] = 'Součet';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_web_subdomain.lng b/interface/web/sites/lib/lang/cz_web_subdomain.lng
index de1445f5decccff456327198bca37de856d49c90..b40c927524b7c00aab7dc5836aa70e8875bdca7a 100644
--- a/interface/web/sites/lib/lang/cz_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/cz_web_subdomain.lng
@@ -44,3 +44,4 @@ $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
 $wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_web_subdomain_list.lng b/interface/web/sites/lib/lang/cz_web_subdomain_list.lng
index 8a0bafe0f92de7e18017a39057ff7512eff20a7b..d1ad2834fecfd5e993c63aff525e1894baa82159 100644
--- a/interface/web/sites/lib/lang/cz_web_subdomain_list.lng
+++ b/interface/web/sites/lib/lang/cz_web_subdomain_list.lng
@@ -6,3 +6,4 @@ $wb['parent_domain_id_txt'] = 'Webová stránka';
 $wb['domain_txt'] = 'Subdoména';
 $wb['add_new_record_txt'] = 'Přidat subdoménu';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng
index c76dffd07c64d1ea39573631a88e5ac5c2a99866..ab47f26dc4238e5de6ed7ab52b0f1997319f3a26 100644
--- a/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng
+++ b/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng
@@ -45,7 +45,7 @@ $wb['limit_web_aliasdomain_txt'] = 'The max. number of aliasdomains for your acc
 $wb['limit_web_subdomain_txt'] = 'The max. number of web subdomains for your account is reached.';
 $wb['apache_directives_txt'] = 'Apache Directives';
 $wb['domain_error_empty'] = 'Doména je prázdná.';
-$wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.';
+$wb['domain_error_unique'] = 'Webové stránky nebo sub-doména / alias-domény již existuje s tímto doménovým jménem.';
 $wb['domain_error_regex'] = 'Neplatné doménové jméno.';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
 $wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
@@ -116,3 +116,4 @@ $wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snipp
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_web_vhost_subdomain_list.lng b/interface/web/sites/lib/lang/cz_web_vhost_subdomain_list.lng
index a54e19a5ad5b1befcac58b8499111722851038ab..e15402b067a20571a9fc163333cd91f91ae01785 100644
--- a/interface/web/sites/lib/lang/cz_web_vhost_subdomain_list.lng
+++ b/interface/web/sites/lib/lang/cz_web_vhost_subdomain_list.lng
@@ -6,3 +6,4 @@ $wb['parent_domain_id_txt'] = 'Webové stránky';
 $wb['domain_txt'] = 'Subdoména';
 $wb['add_new_record_txt'] = 'Přidat novou poddoménu';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_webdav_user.lng b/interface/web/sites/lib/lang/cz_webdav_user.lng
index 3e89a1e62508597aa2d890c17ff6042a9821f1de..c21555e78ea254bdef3dd7fd187b0f849207b09d 100644
--- a/interface/web/sites/lib/lang/cz_webdav_user.lng
+++ b/interface/web/sites/lib/lang/cz_webdav_user.lng
@@ -19,3 +19,4 @@ $wb['repeat_password_txt'] = 'Opakujte heslo';
 $wb['password_mismatch_txt'] = 'Hesla se neshodují.';
 $wb['password_match_txt'] = 'Hesla se shodují.';
 ?>
+
diff --git a/interface/web/sites/lib/lang/cz_webdav_user_list.lng b/interface/web/sites/lib/lang/cz_webdav_user_list.lng
index 0c1148b53e70ce53581c9ccd9a911599d5ce9bfc..af8bfea7490a540ade39e5932d8eed088cb4ecea 100644
--- a/interface/web/sites/lib/lang/cz_webdav_user_list.lng
+++ b/interface/web/sites/lib/lang/cz_webdav_user_list.lng
@@ -6,3 +6,4 @@ $wb['parent_domain_id_txt'] = 'Webové stránky';
 $wb['username_txt'] = 'Uživatelské jméno';
 $wb['add_new_record_txt'] = 'Přidat nového WebDAV uživatele';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de.lng b/interface/web/sites/lib/lang/de.lng
index 4ef7509e4ecf1a3d003cca377ce5b4fe84fe1924..7f956ef31eeebabff995ac9434402322d8eed8ae 100644
--- a/interface/web/sites/lib/lang/de.lng
+++ b/interface/web/sites/lib/lang/de.lng
@@ -10,12 +10,12 @@ $wb['FTP-User'] = 'FTP Benutzer';
 $wb['Webdav-User'] = 'WebDAV Benutzer';
 $wb['Folder'] = 'Geschützte Ordner';
 $wb['Folder users'] = 'Geschützte Ordner Benutzer';
-$wb['Command Line'] = 'Kommando Zeile';
+$wb['Command Line'] = 'Kommandozeile';
 $wb['Shell-User'] = 'Shell Benutzer';
 $wb['Cron Jobs'] = 'Cronjobs';
 $wb['Statistics'] = 'Statistik';
-$wb['Web traffic'] = 'Web Datentransfer';
-$wb['Website quota (Harddisk)'] = 'Webseitenbeschränkung (Festplatte)';
+$wb['Web traffic'] = 'Datentransfer';
+$wb['Website quota (Harddisk)'] = 'Speicherplatzbeschränkung';
 $wb['Cron'] = 'Cron';
 $wb['Stats'] = 'Statistiken';
 $wb['Shell'] = 'Shell';
@@ -23,7 +23,7 @@ $wb['Webdav'] = 'WebDAV';
 $wb['FTP'] = 'FTP';
 $wb['Options'] = 'Optionen';
 $wb['Domain'] = 'Domain';
-$wb['Redirect'] = 'Umleitung';
+$wb['Redirect'] = 'Weiterleitung';
 $wb['SSL'] = 'SSL';
 $wb['Sites'] = 'Seiten';
 $wb['APS Installer'] = 'APS Installationsassistent';
@@ -33,3 +33,4 @@ $wb['Update Packagelist'] = 'Paketliste aktualisieren';
 $wb['error_proxy_requires_url'] = 'Weiterleitungstyp ';
 $wb['Subdomain (Vhost)'] = 'Subdomain (vHost)';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_aps.lng b/interface/web/sites/lib/lang/de_aps.lng
index aab6f4edf7453af1f9f2d93ff5c62aed1eefb444..b97d0a0c87bfb1aff4cfcbfc0e36c8af89e75b50 100644
--- a/interface/web/sites/lib/lang/de_aps.lng
+++ b/interface/web/sites/lib/lang/de_aps.lng
@@ -54,5 +54,6 @@ $wb['installation_error_txt'] = 'Installationsfehler';
 $wb['installation_success_txt'] = 'Installiert';
 $wb['installation_remove_txt'] = 'Deinstallation vorgemerkt';
 $wb['packagelist_update_finished_txt'] = 'APS Paketlistenupdate beendet.';
-$wb['limit_aps_txt'] = 'Die maximale Anzahl an APS-Instanzen für Ihr Konto wurde erreicht.';
+$wb['limit_aps_txt'] = 'Die maximale Anzahl an APS Instanzen für Ihr Konto wurde erreicht.';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_aps_instances_list.lng b/interface/web/sites/lib/lang/de_aps_instances_list.lng
index e5f8b7b7f12728cbf57937ea40aa369f517176de..753ba3b8af5780b70ed5b05106e3c88e9a63aba6 100644
--- a/interface/web/sites/lib/lang/de_aps_instances_list.lng
+++ b/interface/web/sites/lib/lang/de_aps_instances_list.lng
@@ -11,3 +11,4 @@ $wb['filter_txt'] = 'Suche';
 $wb['delete_txt'] = 'Löschen';
 $wb['reinstall_txt'] = 'Neuinstallieren';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_aps_packages_list.lng b/interface/web/sites/lib/lang/de_aps_packages_list.lng
index 6cada812b206bf7401176c9042dd704dfb11a591..ab21a147712df0c1634e248104627fffb7e66b83 100644
--- a/interface/web/sites/lib/lang/de_aps_packages_list.lng
+++ b/interface/web/sites/lib/lang/de_aps_packages_list.lng
@@ -6,3 +6,4 @@ $wb['category_txt'] = 'Kategorie';
 $wb['status_txt'] = 'Verfügbar';
 $wb['filter_txt'] = 'Suche';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_aps_update_packagelist.lng b/interface/web/sites/lib/lang/de_aps_update_packagelist.lng
index e0326cbb3c0ad27076f24ef4f015eff789b5405d..4ca36cfb10a9aae6dd6837825fd33385f08305fb 100644
--- a/interface/web/sites/lib/lang/de_aps_update_packagelist.lng
+++ b/interface/web/sites/lib/lang/de_aps_update_packagelist.lng
@@ -1,7 +1,8 @@
 <?php
 $wb['head_txt'] = 'Paketliste aktualisieren';
-$wb['list_desc_txt'] = '';
+$wb['list_desc_txt'] = 'APS Paketlisten aktualisieren.';
 $wb['btn_start_txt'] = 'Paketliste aktualisieren';
 $wb['btn_cancel_txt'] = 'Abbrechen';
 $wb['legend_txt'] = 'Hier können Sie die Liste der verfügbaren Pakete aktualisieren. Dies kann bis zu fünf Minuten dauern. Wenn Sie möchten, können Sie diese Seite verlassen; der Prozeß läuft im Hintergrund weiter.';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_cron.lng b/interface/web/sites/lib/lang/de_cron.lng
index 8cebfa9c5f9336f21a5eb5cb9bf0afb335371fd8..8fd195820bcd7dcbb80ab7b50d9fc05f6cf0b0e5 100644
--- a/interface/web/sites/lib/lang/de_cron.lng
+++ b/interface/web/sites/lib/lang/de_cron.lng
@@ -8,8 +8,8 @@ $wb['run_hour_txt'] = 'Stunden';
 $wb['run_mday_txt'] = 'Tage des Monats';
 $wb['run_month_txt'] = 'Monate';
 $wb['run_wday_txt'] = 'Tage der Woche';
-$wb['command_txt'] = 'Auszuführender Befehl (Befehle werden mit sh ausgeführt, urls mit wget)';
-$wb['limit_cron_txt'] = 'Die maximale Anzahl von erlaubten Cronjobs ist bereits erreicht.';
+$wb['command_txt'] = 'Auszuführender Befehl (Befehle werden mit sh ausgeführt, URLs mit wget)';
+$wb['limit_cron_txt'] = 'Die max. Anzahl von erlaubten Cronjobs ist bereits erreicht.';
 $wb['limit_cron_frequency_txt'] = 'Die Ausführungshäufigkeit übersteigt Ihr erlaubtes Limit.';
 $wb['run_min_error_format'] = 'Das Format für Minuten ist nicht korrekt.';
 $wb['run_hour_error_format'] = 'Das Format für Stunden ist nicht korrekt.';
@@ -19,3 +19,4 @@ $wb['run_wday_error_format'] = 'Das Format für Wochentage ist nicht korrekt.';
 $wb['command_error_format'] = 'Das Format für den Befehl ist nicht korrekt. Beachten Sie, dass bei einem URL Aufruf nur http und https erlaubt ist.';
 $wb['unknown_fieldtype_error'] = 'Es wurde ein unbekanntes Feld verwendet.';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_cron_list.lng b/interface/web/sites/lib/lang/de_cron_list.lng
index 687505b4a3c6fcbebd7694ec05d1f879feea807c..029cd59b757f01d2465e9a74fee05576fb67083b 100644
--- a/interface/web/sites/lib/lang/de_cron_list.lng
+++ b/interface/web/sites/lib/lang/de_cron_list.lng
@@ -11,3 +11,4 @@ $wb['command_txt'] = 'Befehl';
 $wb['add_new_cron_txt'] = 'Neuen Cronjob anlegen';
 $wb['parent_domain_id_txt'] = 'Webseite';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_database.lng b/interface/web/sites/lib/lang/de_database.lng
index 716fd7a20ed45446c36e0f785a0ae4331e85c23d..a38dd8d8d8c1c7799726fe34aef1de0dd035427e 100644
--- a/interface/web/sites/lib/lang/de_database.lng
+++ b/interface/web/sites/lib/lang/de_database.lng
@@ -10,20 +10,20 @@ $wb['database_charset_txt'] = 'Datenbank Zeichensatz';
 $wb['select_dbuser_txt'] = 'Datenbankbenutzer auswählen';
 $wb['no_dbuser_txt'] = 'Keiner';
 $wb['remote_access_txt'] = 'Entfernter Zugriff';
-$wb['remote_ips_txt'] = 'Entfernter Zugriff IP Adressen (Mehrere mit Komma trennen, keine Eingabe für <i>alle</i>)';
-$wb['database_remote_error_ips'] = 'Mindestens eine der eingegebenen IP Adressen ist ungültig.';
+$wb['remote_ips_txt'] = 'Entfernter Zugriff IP Adressen (Mehrere mit Komma trennen, keine Angabe für <i>alle</i>)';
+$wb['database_remote_error_ips'] = 'Mindestens eine der angegebenen IP Adressen ist ungültig.';
 $wb['client_txt'] = 'Kunde';
 $wb['active_txt'] = 'Aktiv';
 $wb['database_client_differs_txt'] = 'Der Kunde dieser Datenbank passt nicht zum Kunden des Datenbankbenutzers.';
-$wb['database_name_error_empty'] = 'Datenbank Name ist leer.';
+$wb['database_name_error_empty'] = 'Datenbankname ist leer.';
 $wb['database_name_error_unique'] = 'Es existiert bereits eine Datenbank mit diesem Namen am Server. Um einen eindeutigen Namen zu erhalten können sie z.B. den Domainnamen vor dem Datenbanknamen verwenden.';
-$wb['database_name_error_regex'] = 'Ungültiger Datenbankname. Der Datenbankname darf die Zeichen: a-z, A-Z, 0-9 und den Unterstrich beinhalten. Länge: 2 - 64 Zeichen.';
+$wb['database_name_error_regex'] = 'Ungültiger Datenbankname. Der Datenbank Name darf die Zeichen: a-z, A-Z, 0-9 und den Unterstrich beinhalten. Länge: 2 - 64 Zeichen.';
 $wb['database_user_error_empty'] = 'Datenbankbenutzer ist leer.';
 $wb['database_user_error_unique'] = 'Es existiert bereits ein Benutzer mit diesem Namen am Server. Um einen eindeutigen Namen zu erhalten können sie z.B. den Domainnamen vor dem Benutzernamen verwenden.';
 $wb['database_user_error_regex'] = 'Ungültiger Benutzername. Der Benutzername darf die Zeichen: a-z, A-Z, 0-9 und den Unterstrich beinhalten. Länge: 2 - 64 Zeichen.';
-$wb['limit_database_txt'] = 'Die maximale Anzahl an Datenbanken wurde erreicht.';
+$wb['limit_database_txt'] = 'Die max. Anzahl an Datenbanken wurde erreicht.';
 $wb['database_name_change_txt'] = 'Der Datenbankname kann nicht geändert werden.';
-$wb['database_user_missing_txt'] = 'Bitte wählen Sie einen Datenbanknutzer für die Datenbank aus.';
+$wb['database_user_missing_txt'] = 'Bitte wählen Sie einen Datenbankbennutzer für die Datenbank aus.';
 $wb['database_charset_change_txt'] = 'Der Zeichensatz der Datenbank kann nicht geändert werden.';
 $wb['password_strength_txt'] = 'Passwortkomplexität';
 $wb['database_name_error_len'] = 'Datenbankname - {db} - zu lang. Die max. Datenbanknamen Länge inkl. Präfix ist 64 Zeichen.';
@@ -44,3 +44,4 @@ $wb['globalsearch_noresults_limit_txt'] = '0 Treffer';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Suche';
 $wb['globalsearch_suggestions_text_txt'] = 'Vorschläge';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_database_admin_list.lng b/interface/web/sites/lib/lang/de_database_admin_list.lng
index f77b4ca89da35127dd16e559e066020320d836b5..ad742ff38d14d37257d87ec571d33f7c09c4ef42 100644
--- a/interface/web/sites/lib/lang/de_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/de_database_admin_list.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['list_head_txt'] = 'Datenbank';
 $wb['active_txt'] = 'Aktiv';
-$wb['remote_access_txt'] = 'Remotezugriff';
-$wb['type_txt'] = 'Typ';
+$wb['remote_access_txt'] = 'Entfernter Zugriff';
 $wb['server_id_txt'] = 'Server';
 $wb['database_user_txt'] = 'Datenbank Benutzer';
-$wb['database_name_txt'] = 'Datenbankname';
+$wb['database_name_txt'] = 'Datenbank Name';
 $wb['add_new_record_txt'] = 'Neue Datenbank hinzufügen';
 $wb['sys_groupid_txt'] = 'Kunde';
 $wb['parent_domain_id_txt'] = 'Domain';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_database_list.lng b/interface/web/sites/lib/lang/de_database_list.lng
index d355181b2dd1e3ab5a3ef1fcf3f832841924501b..93dc2779dc7eceaf84b39ce4c108c4f346c3cf91 100644
--- a/interface/web/sites/lib/lang/de_database_list.lng
+++ b/interface/web/sites/lib/lang/de_database_list.lng
@@ -2,10 +2,10 @@
 $wb['list_head_txt'] = 'Datenbank';
 $wb['active_txt'] = 'Aktiv';
 $wb['remote_access_txt'] = 'Remotezugriff';
-$wb['type_txt'] = 'Typ';
 $wb['server_id_txt'] = 'Server';
-$wb['database_name_txt'] = 'Datenbankname';
+$wb['database_name_txt'] = 'Datenbank Name';
 $wb['add_new_record_txt'] = 'Neue Datenbank hinzufügen';
-$wb['database_user_txt'] = 'Database user';
+$wb['database_user_txt'] = 'Datenbank Benutzer';
 $wb['parent_domain_id_txt'] = 'Domain';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_database_user.lng b/interface/web/sites/lib/lang/de_database_user.lng
index 78884bc3b83c14718769f28ac3044464b437be25..d81bc52d0cc8d4505ca11bed81834091c88bf98b 100644
--- a/interface/web/sites/lib/lang/de_database_user.lng
+++ b/interface/web/sites/lib/lang/de_database_user.lng
@@ -1,6 +1,6 @@
 <?php
-$wb['database_user_txt'] = 'Datenbank-Benutzer';
-$wb['database_password_txt'] = 'Datenbank-Passwort';
+$wb['database_user_txt'] = 'Datenbank Benutzer';
+$wb['database_password_txt'] = 'Datenbank Passwort';
 $wb['client_txt'] = 'Kunde';
 $wb['active_txt'] = 'Aktiv';
 $wb['database_user_error_empty'] = 'Datenbank Benutzer ist leer.';
@@ -21,3 +21,4 @@ $wb['globalsearch_noresults_limit_txt'] = '0 Treffer';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Suche';
 $wb['globalsearch_suggestions_text_txt'] = 'Vorschläge';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_database_user_admin_list.lng b/interface/web/sites/lib/lang/de_database_user_admin_list.lng
index 82c09fcf138e7fc6bd71350fa3a194889f36960d..4cbdc9dbda5f3133c909403e7266a77c86ad3a3d 100644
--- a/interface/web/sites/lib/lang/de_database_user_admin_list.lng
+++ b/interface/web/sites/lib/lang/de_database_user_admin_list.lng
@@ -4,3 +4,4 @@ $wb['add_new_record_txt'] = 'Neuen Benutzer hinzufügen';
 $wb['database_user_txt'] = 'Datenbank Benutzer';
 $wb['sys_groupid_txt'] = 'Kunde';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_database_user_list.lng b/interface/web/sites/lib/lang/de_database_user_list.lng
index 7ee8222dcb17df2eab716dbe7c6b8b06a48d578f..d746d2f2c29169534f615479cb387212434859e0 100644
--- a/interface/web/sites/lib/lang/de_database_user_list.lng
+++ b/interface/web/sites/lib/lang/de_database_user_list.lng
@@ -3,3 +3,4 @@ $wb['list_head_txt'] = 'Datenbank Benutzer';
 $wb['add_new_record_txt'] = 'Neuen Benutzer hinzufügen';
 $wb['database_user_txt'] = 'Datenbank Benutzer';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_ftp_user.lng b/interface/web/sites/lib/lang/de_ftp_user.lng
index c367ffffbb5dcba0b848d02c356208925004f14c..897f70057ac8dcad510b6c2077b24da927793daa 100644
--- a/interface/web/sites/lib/lang/de_ftp_user.lng
+++ b/interface/web/sites/lib/lang/de_ftp_user.lng
@@ -12,13 +12,13 @@ $wb['server_id_txt'] = 'Server';
 $wb['parent_domain_id_txt'] = 'Domain';
 $wb['username_txt'] = 'Benutzername';
 $wb['password_txt'] = 'Passwort';
-$wb['quota_size_txt'] = 'Festplatten Quota';
+$wb['quota_size_txt'] = 'Speicherplatz Beschränkung';
 $wb['active_txt'] = 'Aktiv';
-$wb['limit_ftp_user_txt'] = 'Die maximale Anzahl an FTP Benutzer für Ihr Konto wurde erreicht.';
+$wb['limit_ftp_user_txt'] = 'Die max. Anzahl an FTP Benutzer für Ihr Konto wurde erreicht.';
 $wb['username_error_empty'] = 'Benutzername ist leer.';
 $wb['username_error_unique'] = 'Der Benutzername muss einzigartig sein.';
 $wb['username_error_regex'] = 'Der Benutzername enthält nicht erlaubte Zeichen.';
-$wb['quota_size_error_empty'] = 'Beschränkung ist leer.';
+$wb['quota_size_error_empty'] = 'Speicherplatz Beschränkung ist leer.';
 $wb['uid_error_empty'] = 'GID ist leer.';
 $wb['directory_error_empty'] = 'Verzeichnis ist leer.';
 $wb['password_strength_txt'] = 'Passwortkomplexität';
@@ -32,3 +32,4 @@ $wb['repeat_password_txt'] = 'Passwort wiederholen';
 $wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
 $wb['password_match_txt'] = 'Die Passwörter stimmen überein.';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_ftp_user_list.lng b/interface/web/sites/lib/lang/de_ftp_user_list.lng
index 8d1b0817a6f892872c1ab744201d8e590da901f9..d39ff1f526777aac21321ffc9822dec684588402 100644
--- a/interface/web/sites/lib/lang/de_ftp_user_list.lng
+++ b/interface/web/sites/lib/lang/de_ftp_user_list.lng
@@ -6,3 +6,4 @@ $wb['parent_domain_id_txt'] = 'Domain';
 $wb['username_txt'] = 'Benutzername';
 $wb['add_new_record_txt'] = 'Neuen FTP Benutzer hinzufügen';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_shell_user.lng b/interface/web/sites/lib/lang/de_shell_user.lng
index 9de369f90da4e6389be4af3b4c99c73116927a4c..8a825b47b62217527520c2345e781a66e7505cab 100644
--- a/interface/web/sites/lib/lang/de_shell_user.lng
+++ b/interface/web/sites/lib/lang/de_shell_user.lng
@@ -6,20 +6,20 @@ $wb['parent_domain_id_txt'] = 'Webseite';
 $wb['username_txt'] = 'Benutzername';
 $wb['password_txt'] = 'Passwort';
 $wb['chroot_txt'] = 'Chroot Shell';
-$wb['quota_size_txt'] = 'Quota';
+$wb['quota_size_txt'] = 'Beschränkung';
 $wb['active_txt'] = 'Aktiv';
 $wb['username_error_empty'] = 'Benutzername ist leer.';
 $wb['username_error_unique'] = 'Der Benutzername muss eindeutig sein.';
 $wb['username_error_regex'] = 'Der Benutzername enthält ungültige Zeichen.';
-$wb['quota_size_error_empty'] = 'Quota ist leer';
+$wb['quota_size_error_empty'] = 'Beschränkung ist leer';
 $wb['uid_error_empty'] = 'GID ist leer.';
 $wb['directory_error_empty'] = 'Verzeichnis ist leer.';
-$wb['limit_shell_user_txt'] = 'Die maximale Anzahl an Shell Benutzer wurde erreicht.';
+$wb['limit_shell_user_txt'] = 'Die max. Anzahl an Shell Benutzer wurde erreicht.';
 $wb['password_strength_txt'] = 'Passwortkomplexität';
 $wb['parent_domain_id_error_empty'] = 'Keine Webseite ausgewählt.';
 $wb['puser_txt'] = 'Web Benutzername';
 $wb['pgroup_txt'] = 'Web Gruppe';
-$wb['ssh_rsa_txt'] = 'SSH RSA Public Key (für key-basierte Logins)';
+$wb['ssh_rsa_txt'] = 'SSH RSA öffentlicher Schlüssel (Für Schlüssel basierte Logins)';
 $wb['dir_dot_error'] = 'Kein .. im Pfad erlaubt.';
 $wb['dir_slashdot_error'] = 'Kein ./ im Pfad erlaubt.';
 $wb['generate_password_txt'] = 'Passwort erzeugen';
@@ -27,5 +27,6 @@ $wb['repeat_password_txt'] = 'Passwort wiederholen';
 $wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
 $wb['password_match_txt'] = 'Die Passwörter stimmen überein.';
 $wb['username_must_not_exceed_32_chars_txt'] = 'Der Benutzername darf 32 Zeichen nicht überschreiten.';
-$wb['username_not_allowed_txt'] = 'Der Benutzername ist nicht erlaubt.';
+$wb['username_not_allowed_txt'] = 'Dieser Benutzername ist nicht erlaubt.';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_shell_user_list.lng b/interface/web/sites/lib/lang/de_shell_user_list.lng
index c953cf6b0599a212de86a37b8201549f85177d6f..176a4e59700c352f8105e2c8ea0ad07306d1f763 100644
--- a/interface/web/sites/lib/lang/de_shell_user_list.lng
+++ b/interface/web/sites/lib/lang/de_shell_user_list.lng
@@ -6,3 +6,4 @@ $wb['parent_domain_id_txt'] = 'Webseite';
 $wb['username_txt'] = 'Benutzername';
 $wb['add_new_record_txt'] = 'Neuen Shell Benutzer hinzufügen';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_user_quota_stats_list.lng b/interface/web/sites/lib/lang/de_user_quota_stats_list.lng
index 74a0b17476667b9c14234b78ac13678feff43a01..c207ad73146598106aee9172b0777bcf9f57dfab 100644
--- a/interface/web/sites/lib/lang/de_user_quota_stats_list.lng
+++ b/interface/web/sites/lib/lang/de_user_quota_stats_list.lng
@@ -1,9 +1,10 @@
 <?php
-$wb['list_head_txt'] = 'Webseiten Festplattenbeschränkung';
-$wb['domain_txt'] = 'Domain / Webseite';
-$wb['system_user_txt'] = 'Linux Benutzer';
+$wb['list_head_txt'] = 'Webseiten Speicherplatz';
+$wb['domain_txt'] = 'Domain';
+$wb['system_user_txt'] = 'System Benutzer';
 $wb['used_txt'] = 'Verwendeter Speicherplatz';
 $wb['hard_txt'] = 'Hard Limit';
 $wb['soft_txt'] = 'Soft Limit';
 $wb['files_txt'] = 'Dateien';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_web_aliasdomain.lng b/interface/web/sites/lib/lang/de_web_aliasdomain.lng
index ccb3bdfa24ef6b5fe6a17c6119166a92a4e4156b..d568bd26bceb3e32ee9419989543e98e0435d627 100644
--- a/interface/web/sites/lib/lang/de_web_aliasdomain.lng
+++ b/interface/web/sites/lib/lang/de_web_aliasdomain.lng
@@ -2,11 +2,11 @@
 $wb['domain_txt'] = 'Aliasdomain';
 $wb['backup_interval_txt'] = 'Backup Intervall';
 $wb['backup_copies_txt'] = 'Anzahl der Backups';
-$wb['ssl_state_txt'] = 'Land';
+$wb['ssl_state_txt'] = 'Bundesland';
 $wb['ssl_locality_txt'] = 'Ort';
-$wb['ssl_organisation_txt'] = 'Organisation';
-$wb['ssl_organisation_unit_txt'] = 'Organisation Abteilung';
-$wb['ssl_country_txt'] = 'Bundesland';
+$wb['ssl_organisation_txt'] = 'Firma';
+$wb['ssl_organisation_unit_txt'] = 'Abteilung';
+$wb['ssl_country_txt'] = 'Land';
 $wb['ssl_key_txt'] = 'SSL Schlüssel';
 $wb['ssl_request_txt'] = 'SSL Anfrage';
 $wb['ssl_cert_txt'] = 'SSL Zertifikat';
@@ -14,20 +14,20 @@ $wb['ssl_bundle_txt'] = 'SSL Bundle';
 $wb['ssl_action_txt'] = 'SSL Aktion';
 $wb['ssl_domain_txt'] = 'SSL Domain';
 $wb['server_id_txt'] = 'Server';
-$wb['web_folder_error_regex'] = 'Ungültige Verzeichnisangabe. Bitte geben Sie keine Schrägstrich ein.';
+$wb['web_folder_error_regex'] = 'Ungültige Ordnerangabe. Bitte geben Sie keinen Schrägstrich ein.';
 $wb['type_txt'] = 'Typ';
 $wb['parent_domain_id_txt'] = 'Hauptwebseite';
-$wb['redirect_type_txt'] = 'Weiterleitungs Typ';
-$wb['redirect_path_txt'] = 'Weiterleitungs Pfad';
+$wb['redirect_type_txt'] = 'Weiterleitungstyp';
+$wb['redirect_path_txt'] = 'Weiterleitungsziel';
 $wb['active_txt'] = 'Aktiv';
 $wb['document_root_txt'] = 'Documentroot';
-$wb['system_user_txt'] = 'Linux Benutzer';
-$wb['system_group_txt'] = 'Linux Gruppe';
+$wb['system_user_txt'] = 'System Benutzer';
+$wb['system_group_txt'] = 'System Gruppe';
 $wb['ip_address_txt'] = 'IPv4 Adresse';
 $wb['ipv6_address_txt'] = 'IPv6 Adresse';
 $wb['vhost_type_txt'] = 'vHost Typ';
-$wb['hd_quota_txt'] = 'Festplatten Beschränkung';
-$wb['traffic_quota_txt'] = 'Transfer Beschränkung';
+$wb['hd_quota_txt'] = 'Speicherplatz Beschränkung';
+$wb['traffic_quota_txt'] = 'Datentransfer Beschränkung';
 $wb['cgi_txt'] = 'CGI';
 $wb['ssi_txt'] = 'SSI';
 $wb['errordocs_txt'] = 'Eigene Fehlerseiten';
@@ -36,43 +36,43 @@ $wb['ssl_txt'] = 'SSL';
 $wb['suexec_txt'] = 'SuEXEC';
 $wb['php_txt'] = 'PHP';
 $wb['client_txt'] = 'Kunde';
-$wb['limit_web_domain_txt'] = 'Die max. Anzahl an Web Domains für Ihr Konto ist erreicht.';
-$wb['limit_web_aliasdomain_txt'] = 'Die max. Anzahl an Alias Domains für Ihr Konto ist erreicht.';
+$wb['limit_web_domain_txt'] = 'Die max. Anzahl an Webdomains für Ihr Konto ist erreicht.';
+$wb['limit_web_aliasdomain_txt'] = 'Die max. Anzahl an Aliasdomains für Ihr Konto ist erreicht.';
 $wb['limit_web_subdomain_txt'] = 'Die max. Anzahl an Web Subdomains für Ihr Konto ist erreicht.';
 $wb['apache_directives_txt'] = 'Apache Direktiven';
 $wb['domain_error_empty'] = 'Domain ist leer.';
-$wb['domain_error_unique'] = 'Es existiert bereits eine Webseite oder Sub- Alias Domain mit diesem Domain Namen.';
+$wb['domain_error_unique'] = 'Es existiert bereits eine Webseite oder Sub- Aliasdomain mit diesem Domain Namen.';
 $wb['domain_error_regex'] = 'Domain Name ungültig.';
 $wb['domain_error_autosub'] = 'Es existiert bereits eine Subdomain mit diesen Einstellungen.';
-$wb['hd_quota_error_empty'] = 'Festplatten Beschränkung ist 0 oder leer.';
-$wb['traffic_quota_error_empty'] = 'Transfer Beschränkung ist leer.';
-$wb['error_ssl_state_empty'] = 'SSL Staat ist leet.';
+$wb['hd_quota_error_empty'] = 'Speicherplatz Beschränkung ist 0 oder leer.';
+$wb['traffic_quota_error_empty'] = 'Datentransfer Beschränkung ist leer.';
+$wb['error_ssl_state_empty'] = 'SSL Bundesland ist leet.';
 $wb['error_ssl_locality_empty'] = 'SSL Ort ist leer.';
-$wb['error_ssl_organisation_empty'] = 'SSL Organisation ist leer.';
-$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Abteilung ist leer.';
-$wb['error_ssl_country_empty'] = 'SSL Bundeland ist leer.';
+$wb['error_ssl_organisation_empty'] = 'SSL Firma ist leer.';
+$wb['error_ssl_organisation_unit_empty'] = 'SSL Abteilung ist leer.';
+$wb['error_ssl_country_empty'] = 'SSL Land ist leer.';
 $wb['error_ssl_cert_empty'] = 'SSL Zertifikat Feld ist leer.';
 $wb['client_group_id_txt'] = 'Kunde';
 $wb['stats_password_txt'] = 'Webstatistiken Passwort';
 $wb['allow_override_txt'] = 'Apache AllowOverride';
-$wb['limit_web_quota_free_txt'] = 'Max. verfügbare Festplatten Beschränkung';
-$wb['ssl_state_error_regex'] = 'Ungültiger SSL Staat. Mögliche Zeichen sind: a-z, 0-9 and .,-_';
+$wb['limit_web_quota_free_txt'] = 'Max. verfügbarer Speicherplatz';
+$wb['ssl_state_error_regex'] = 'Ungültiges SSL Bundesland. Mögliche Zeichen sind: a-z, 0-9 and .,-_';
 $wb['ssl_locality_error_regex'] = 'Ungültiger SSL Ort. Mögliche Zeichen sind: a-z, 0-9 and .,-_';
-$wb['ssl_organisation_error_regex'] = 'Ungültige SSL Organisation. Mögliche Zeichen sind: a-z, 0-9 and .,-_';
-$wb['ssl_organistaion_unit_error_regex'] = 'Ungültige SSL Organisation Abteilung. Mögliche Zeichen sind: a-z, 0-9 and .,-_';
-$wb['ssl_country_error_regex'] = 'Ungültiges SSL Bundesland. Mögliche Zeichen sind: A-Z';
-$wb['limit_traffic_quota_free_txt'] = 'Max. verfügbare Transfer Beschränkung';
-$wb['redirect_error_regex'] = 'Ungültiger weiterleitungs Pfad. Gültige weiterleitungs Pfade sind zum Beispiel: /test/ oder http://www.domain.tld/test/';
+$wb['ssl_organisation_error_regex'] = 'Ungültige SSL Firma. Mögliche Zeichen sind: a-z, 0-9 and .,-_';
+$wb['ssl_organistaion_unit_error_regex'] = 'Ungültige SSL Abteilung. Mögliche Zeichen sind: a-z, 0-9 and .,-_';
+$wb['ssl_country_error_regex'] = 'Ungültiges SSL Land. Mögliche Zeichen sind: A-Z';
+$wb['limit_traffic_quota_free_txt'] = 'Max. verfügbarer Datentransfer';
+$wb['redirect_error_regex'] = 'Ungültiges Weiterleitungsziel. Gültige Weiterleitungsziele sind zum Beispiel: /test/ oder http://www.domain.tld/test/';
 $wb['php_open_basedir_txt'] = 'PHP open_basedir';
-$wb['traffic_quota_exceeded_txt'] = 'Transfer Beschränkung überschritten';
+$wb['traffic_quota_exceeded_txt'] = 'Datentransfervolumen überschritten';
 $wb['ruby_txt'] = 'Ruby';
 $wb['stats_user_txt'] = 'Webstatistiken Benutzername';
 $wb['stats_type_txt'] = 'Webstatistiken Programm';
 $wb['custom_php_ini_txt'] = 'Benutzerdefinierte php.ini Einstellungen';
-$wb['none_txt'] = 'Keine';
+$wb['none_txt'] = 'Keine Subdomain';
 $wb['disabled_txt'] = 'Deaktiviert';
 $wb['no_redirect_txt'] = 'Keine Weiterleitung';
-$wb['no_flag_txt'] = 'Kein Flag';
+$wb['no_flag_txt'] = 'Keine Option';
 $wb['save_certificate_txt'] = 'Zertifikat speichern';
 $wb['create_certificate_txt'] = 'Zertifikat erstellen';
 $wb['delete_certificate_txt'] = 'Zertifikat löschen';
@@ -81,7 +81,7 @@ $wb['seo_redirect_txt'] = 'SEO Weiterleitung';
 $wb['non_www_to_www_txt'] = 'Non-www -> www';
 $wb['www_to_non_www_txt'] = 'www -> non-www';
 $wb['php_fpm_use_socket_txt'] = 'Verwende Socket für PHP-FPM';
-$wb['error_no_sni_txt'] = 'SNI ist für SSL ist auf diesem Server nicht aktiviert. Sie können nur ein  SSL Zertifikate pro IP Adresse aktivieren.';
+$wb['error_no_sni_txt'] = 'SNI ist für SSL ist auf diesem Server nicht aktiviert. Sie können nur ein SSL Zertifikat pro IP Adresse aktivieren.';
 $wb['python_txt'] = 'Python';
 $wb['perl_txt'] = 'Perl';
 $wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
@@ -93,15 +93,15 @@ $wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children muss ein positiver
 $wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers muss ein positiver integer Wert sein.';
 $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers muss ein positiver integer Wert sein.';
 $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers muss ein positiver integer Wert sein.';
-$wb['hd_quota_error_regex'] = 'Festplatten Beschränkung ist ungültig.';
-$wb['traffic_quota_error_regex'] = 'Transfer Beschränkung ist ungültig.';
+$wb['hd_quota_error_regex'] = 'Speicherplatz Beschränkung ist ungültig.';
+$wb['traffic_quota_error_regex'] = 'Datentransfer Beschränkung ist ungültig.';
 $wb['fastcgi_php_version_txt'] = 'PHP Version';
 $wb['pm_txt'] = 'PHP-FPM Prozess Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
 $wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout muss eine positiver integer Wert sein.';
 $wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests muss ein integer Wert >= 0 sein.';
-$wb['pm_ondemand_hint_txt'] = 'Bitte beachte Sie, daß Sie mindesten PHP Version >= 5.3.9 verwenden um den Ondemand Prozess Manager zu verwenden. Wenn Sie  Ondemand für eine ältere PHP Version aktivieren wird PHP nicht mehr funktionieren!';
+$wb['pm_ondemand_hint_txt'] = 'Bitte beachte Sie, dass Sie mindesten PHP Version >= 5.3.9 verwenden um den Ondemand Prozess Manager zu verwenden. Wenn Sie Ondemand für eine ältere PHP Version aktivieren wird PHP nicht mehr funktionieren!';
 $wb['generate_password_txt'] = 'Passwort generieren';
 $wb['repeat_password_txt'] = 'Passwort wiederholen';
 $wb['password_mismatch_txt'] = 'Die Passwörter stimmer nicht überein.';
@@ -111,5 +111,6 @@ $wb['available_apache_directive_snippets_txt'] = 'Verfügbare Apache Direktiven
 $wb['available_nginx_directive_snippets_txt'] = 'Verfügbare nginx Direktiven Schnipsel:';
 $wb['proxy_directives_txt'] = 'Proxy Direktiven';
 $wb['available_proxy_directive_snippets_txt'] = 'Verfügbare Proxy Direktiven Schnipsel:';
-$wb['Domain'] = 'Alias Domain';
+$wb['Domain'] = 'Aliasdomain';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_web_aliasdomain_list.lng b/interface/web/sites/lib/lang/de_web_aliasdomain_list.lng
index df8ebc683e2f9584d758fddb5f00bfd802c71b36..1fe7f8477c9d300c09615c24343d739018fa94b4 100644
--- a/interface/web/sites/lib/lang/de_web_aliasdomain_list.lng
+++ b/interface/web/sites/lib/lang/de_web_aliasdomain_list.lng
@@ -6,9 +6,10 @@ $wb['parent_domain_id_txt'] = 'Domain';
 $wb['domain_txt'] = 'Aliasdomain';
 $wb['add_new_record_txt'] = 'Neue Aliasdomain hinzufügen';
 $wb['domain_error_empty'] = 'Domain ist leer.';
-$wb['domain_error_unique'] = 'Domain muss eindeutig sein.';
+$wb['domain_error_unique'] = 'Domain ist schon als Webdomain in Verwendung.';
 $wb['domain_error_regex'] = 'Domain Name ist ungültig.';
-$wb['no_redirect_txt'] = 'Kein Redirect';
-$wb['no_flag_txt'] = 'Kein Flag';
-$wb['none_txt'] = 'keine';
+$wb['no_redirect_txt'] = 'Keine Weiterleitung';
+$wb['no_flag_txt'] = 'Keine Optionen';
+$wb['none_txt'] = 'Keine';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_web_backup_list.lng b/interface/web/sites/lib/lang/de_web_backup_list.lng
index 499fb4f7544153ba394dcf86befc93adfe19ac76..87fb0aa7ad0d7e38db34e2477300fec4da49826a 100644
--- a/interface/web/sites/lib/lang/de_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/de_web_backup_list.lng
@@ -5,12 +5,12 @@ $wb['backup_type_txt'] = 'Typ';
 $wb['filename_txt'] = 'Backup Datei';
 $wb['restore_backup_txt'] = 'Backup wiederherstellen';
 $wb['download_backup_txt'] = 'Backup herunterladen';
-$wb['download_info_txt'] = 'Die Backup Datei steht in ein paar Minuten als Download im Backup-Verzeichnis zur Verfügung.';
+$wb['download_info_txt'] = 'Die Backup Datei steht in ein paar Minuten als Download im Backup Verzeichnis zur Verfügung.';
 $wb['restore_info_txt'] = 'Die Wiederherstellung des Backups hat begonnen. Diese Aktion kann bis zur Fertigstellung einige Minuten dauern.';
-$wb['restore_confirm_txt'] = 'Die Wiederherstellung wird existierende Dateien in Ihrer Website überschreiben. Möchten Sie dieses Backup wirklich zurückspielen?';
+$wb['restore_confirm_txt'] = 'Die Wiederherstellung wird existierende Dateien in Ihrer Website überschreiben. Möchten Sie dieses Backup wirklich wiederherstellen?';
 $wb['download_pending_txt'] = 'Es liegt bereits ein Backup Download Job an.';
 $wb['restore_pending_txt'] = 'Es liegt bereits ein Backup Wiederherstellungs Job an.';
-$wb['backup_type_mongodb'] = 'MongoDB Datenbank';
 $wb['backup_type_mysql'] = 'MySQL Datenbank';
 $wb['backup_type_web'] = 'Webseiten Dateien';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_web_domain.lng b/interface/web/sites/lib/lang/de_web_domain.lng
index 15bbcfd5750979c3c1298c4bce4d7bb2e00d40bf..18fd6dbdb84e167adea5d398ab21e3183685887e 100644
--- a/interface/web/sites/lib/lang/de_web_domain.lng
+++ b/interface/web/sites/lib/lang/de_web_domain.lng
@@ -4,8 +4,8 @@ $wb['ssl_locality_txt'] = 'Ort';
 $wb['ssl_organisation_txt'] = 'Firma';
 $wb['ssl_organisation_unit_txt'] = 'Abteilung';
 $wb['ssl_country_txt'] = 'Land';
-$wb['ssl_key_txt'] = 'SSL Key';
-$wb['ssl_request_txt'] = 'SSL Request';
+$wb['ssl_key_txt'] = 'SSL Schlüssel';
+$wb['ssl_request_txt'] = 'SSL Anfrage';
 $wb['ssl_cert_txt'] = 'SSL Zertifikat';
 $wb['ssl_bundle_txt'] = 'SSL Bundle';
 $wb['ssl_action_txt'] = 'SSL Aktion';
@@ -13,56 +13,56 @@ $wb['server_id_txt'] = 'Server';
 $wb['domain_txt'] = 'Domain';
 $wb['type_txt'] = 'Typ';
 $wb['parent_domain_id_txt'] = 'Zugehörige Webseite';
-$wb['web_folder_error_regex'] = 'Ungültige Verzeichnisangabe, bitte keinen / eingeben.';
+$wb['web_folder_error_regex'] = 'Ungültige Ordnerangabe, bitte keinen / eingeben.';
 $wb['redirect_type_txt'] = 'Weiterleitungstyp';
 $wb['redirect_path_txt'] = 'Weiterleitungspfad';
 $wb['active_txt'] = 'Aktiv';
 $wb['document_root_txt'] = 'Documentroot';
-$wb['system_user_txt'] = 'Linux Benutzer';
-$wb['system_group_txt'] = 'Linux Gruppe';
+$wb['system_user_txt'] = 'System Benutzer';
+$wb['system_group_txt'] = 'System Gruppe';
 $wb['ip_address_txt'] = 'IP Adresse';
-$wb['vhost_type_txt'] = 'VHost Type';
-$wb['hd_quota_txt'] = 'Speicherplatzbeschränkung';
-$wb['traffic_quota_txt'] = 'Transfervolumenbeschränkung';
+$wb['vhost_type_txt'] = 'vHost Type';
+$wb['hd_quota_txt'] = 'Speicherplatz Beschränkung';
+$wb['traffic_quota_txt'] = 'Datentransfer Beschränkung';
 $wb['cgi_txt'] = 'CGI';
 $wb['ssi_txt'] = 'SSI';
 $wb['ssl_txt'] = 'SSL';
 $wb['suexec_txt'] = 'SuEXEC';
 $wb['php_txt'] = 'PHP';
 $wb['client_txt'] = 'Kunde';
-$wb['limit_web_domain_txt'] = 'Die maximale Anzahl an Webdomains für Ihr Konto wurde erreicht.';
-$wb['limit_web_aliasdomain_txt'] = 'Die maximale Anzahl an Aliasdomains für Ihr Konto wurde erreicht.';
-$wb['limit_web_subdomain_txt'] = 'Die maximale Anzahl an Subdomains für Ihr Konto wurde erreicht.';
+$wb['limit_web_domain_txt'] = 'Die max. Anzahl an Webdomains für Ihr Konto wurde erreicht.';
+$wb['limit_web_aliasdomain_txt'] = 'Die max. Anzahl an Aliasdomains für Ihr Konto wurde erreicht.';
+$wb['limit_web_subdomain_txt'] = 'Die max. Anzahl an Subdomains für Ihr Konto wurde erreicht.';
 $wb['apache_directives_txt'] = 'Apache Direktiven';
 $wb['domain_error_empty'] = 'Domain ist leer.';
-$wb['domain_error_unique'] = 'Domain muss eindeutig sein';
+$wb['domain_error_unique'] = 'Domain ist schon als Aliasdomain in Verwendung';
 $wb['domain_error_regex'] = 'Domain Name ungültig.';
 $wb['domain_error_autosub'] = 'Es existiert bereits eine Subdomain mit diesen Einstellungen.';
-$wb['hd_quota_error_empty'] = 'Speicherplatzbeschränkung ist leer.';
-$wb['traffic_quota_error_empty'] = 'Transfervolumenbeschränkung ist leer.';
+$wb['hd_quota_error_empty'] = 'Speicherplatz Beschränkung ist leer.';
+$wb['traffic_quota_error_empty'] = 'Datentransfer Beschränkung ist leer.';
 $wb['errordocs_txt'] = 'Eigene Fehlerseiten';
-$wb['error_ssl_state_empty'] = 'SSL Status ist leer.';
-$wb['error_ssl_locality_empty'] = 'Ort (SSL) ist leer.';
-$wb['error_ssl_organisation_empty'] = 'Organisation (SSL) ist leer.';
-$wb['error_ssl_organisation_unit_empty'] = 'Abteilung (SSL) ist leer.';
-$wb['error_ssl_country_empty'] = 'Land (SSL) ist leer.';
+$wb['error_ssl_state_empty'] = 'SSL Bundesland ist leer.';
+$wb['error_ssl_locality_empty'] = 'SSL Ort ist leer.';
+$wb['error_ssl_organisation_empty'] = 'SSL Firma ist leer.';
+$wb['error_ssl_organisation_unit_empty'] = 'SSL Abteilung ist leer.';
+$wb['error_ssl_country_empty'] = 'SSL Land ist leer.';
 $wb['subdomain_txt'] = 'Auto Subdomain';
 $wb['client_group_id_txt'] = 'Kunde';
 $wb['stats_password_txt'] = 'Webstatistik Passwort';
 $wb['ssl_domain_txt'] = 'SSL Domain';
 $wb['allow_override_txt'] = 'Allow Override';
-$wb['limit_web_quota_free_txt'] = 'Max. mögliche Speicherplatzbeschränkung';
-$wb['ssl_state_error_regex'] = 'Ungültige SSL State. Gültige Zeichen sind: a-z, 0-9 und .,-_';
-$wb['ssl_locality_error_regex'] = 'Ungültige SSL Locality. Gülige Zeichen sind: a-z, 0-9 und .,-_';
-$wb['ssl_organisation_error_regex'] = 'Ungültige SSL Organisation. Gültige Zeichen sind: a-z, 0-9 und .,-_';
-$wb['ssl_organistaion_unit_error_regex'] = 'Ungültige SSL Organisation Unit. Gültige Zeichen sind: a-z, 0-9 und .,-_';
+$wb['limit_web_quota_free_txt'] = 'Max. möglicher Speicherplatz';
+$wb['ssl_state_error_regex'] = 'Ungültiges SSL Bundesland. Gültige Zeichen sind: a-z, 0-9 und .,-_';
+$wb['ssl_locality_error_regex'] = 'Ungültiger SSL Ort. Gülige Zeichen sind: a-z, 0-9 und .,-_';
+$wb['ssl_organisation_error_regex'] = 'Ungültige SSL Firma. Gültige Zeichen sind: a-z, 0-9 und .,-_';
+$wb['ssl_organistaion_unit_error_regex'] = 'Ungültige SSL Abteilung. Gültige Zeichen sind: a-z, 0-9 und .,-_';
 $wb['ssl_country_error_regex'] = 'Ungültiges SSL Land. Gültige Zeichen sind: A-Z';
-$wb['limit_traffic_quota_free_txt'] = 'Max. mögliche Transfervolumenbeschränkung';
+$wb['limit_traffic_quota_free_txt'] = 'Max. möglicher Datentransfer';
 $wb['redirect_error_regex'] = 'Ungültiger Weiterleitungspfad. Gültige Angaben sind beispielsweise: /test/ oder http://www.domain.tld/test/';
 $wb['php_open_basedir_txt'] = 'PHP open_basedir';
 $wb['backup_interval_txt'] = 'Backup Intervall';
 $wb['backup_copies_txt'] = 'Anzahl an Backups';
-$wb['traffic_quota_exceeded_txt'] = 'Transfervolumen verbraucht.';
+$wb['traffic_quota_exceeded_txt'] = 'Das Datentransfervolumen ist verbraucht.';
 $wb['ruby_txt'] = 'Ruby';
 $wb['stats_user_txt'] = 'Webstatistik Benutzername';
 $wb['stats_type_txt'] = 'Webstatistik Programm';
@@ -70,13 +70,13 @@ $wb['custom_php_ini_txt'] = 'Individuelle php.ini Einstellungen';
 $wb['error_ssl_cert_empty'] = 'SSL Zertifikat Feld ist leer.';
 $wb['none_txt'] = 'Keine';
 $wb['disabled_txt'] = 'Deaktiviert';
-$wb['no_redirect_txt'] = 'Kein Redirect';
-$wb['no_flag_txt'] = 'Kein Flag';
+$wb['no_redirect_txt'] = 'Keine Weiterleitung';
+$wb['no_flag_txt'] = 'Keine Option';
 $wb['save_certificate_txt'] = 'Zertifikat speichern';
 $wb['create_certificate_txt'] = 'Zertifikat erstellen';
 $wb['delete_certificate_txt'] = 'Zertifikat löschen';
 $wb['nginx_directives_txt'] = 'nginx Direktiven';
-$wb['seo_redirect_txt'] = 'SEO Redirect';
+$wb['seo_redirect_txt'] = 'SEO Weiterleitung';
 $wb['non_www_to_www_txt'] = 'Nicht-www -> www';
 $wb['www_to_non_www_txt'] = 'www -> Nicht-www';
 $wb['php_fpm_use_socket_txt'] = 'Benutze Socket für PHP-FPM';
@@ -93,8 +93,8 @@ $wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children muß eine positive
 $wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers muß eine positive ganze Zahl sein.';
 $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers muß eine positive ganze Zahl sein.';
 $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers muß eine positive ganze Zahl sein.';
-$wb['hd_quota_error_regex'] = 'Speicherplatzbeschränkung ist ungültig.';
-$wb['traffic_quota_error_regex'] = 'Transfervolumenbeschränkung ist ungültig.';
+$wb['hd_quota_error_regex'] = 'Speicherplatz Beschränkung ist ungültig.';
+$wb['traffic_quota_error_regex'] = 'Datentransfer Beschränkung ist ungültig.';
 $wb['fastcgi_php_version_txt'] = 'PHP Version';
 $wb['pm_txt'] = 'PHP-FPM FastCGI Prozess Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
@@ -111,7 +111,7 @@ $wb['available_apache_directive_snippets_txt'] = 'Verfügbare Apache Direktiven
 $wb['available_nginx_directive_snippets_txt'] = 'Verfügbare nginx Direktiven Schnipsel:';
 $wb['proxy_directives_txt'] = 'Proxy Direktiven';
 $wb['available_proxy_directive_snippets_txt'] = 'Verfügbare Proxy Direktiven Schnipsel:';
-$wb['no_server_error'] = 'Kein server ausgewählt.';
+$wb['no_server_error'] = 'Kein Server ausgewählt.';
 $wb['no_backup_txt'] = 'Kein Backup';
 $wb['daily_backup_txt'] = 'Täglich';
 $wb['weekly_backup_txt'] = 'Wöchentlich';
@@ -119,5 +119,6 @@ $wb['monthly_backup_txt'] = 'Monatlich';
 $wb['rewrite_rules_txt'] = 'Rewrite Rules';
 $wb['invalid_rewrite_rules_txt'] = 'Unzulässige Rewrite Rules';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Erlaubte Direktiven:';
-$wb['configuration_error_txt'] = "KONFIGURATIONSFEHLER";
+$wb['configuration_error_txt'] = 'KONFIGURATIONSFEHLER';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_web_domain_admin_list.lng b/interface/web/sites/lib/lang/de_web_domain_admin_list.lng
index d9dc65c6c0c879b323dfaf9d3c9842ece88d13ba..276696c7052db0319044a331da053bf1b82314b6 100644
--- a/interface/web/sites/lib/lang/de_web_domain_admin_list.lng
+++ b/interface/web/sites/lib/lang/de_web_domain_admin_list.lng
@@ -7,3 +7,4 @@ $wb['server_id_txt'] = 'Server';
 $wb['domain_txt'] = 'Domain';
 $wb['add_new_record_txt'] = 'Neue Webseite hinzufügen';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_web_domain_list.lng b/interface/web/sites/lib/lang/de_web_domain_list.lng
index ce56a1cd1f132a26673dd1240064c03247d97747..b722783e725343ec38ddba4399af4dcf6113a6e8 100644
--- a/interface/web/sites/lib/lang/de_web_domain_list.lng
+++ b/interface/web/sites/lib/lang/de_web_domain_list.lng
@@ -6,3 +6,4 @@ $wb['server_id_txt'] = 'Server';
 $wb['domain_txt'] = 'Domain';
 $wb['add_new_record_txt'] = 'Neue Domain hinzufügen';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_web_folder.lng b/interface/web/sites/lib/lang/de_web_folder.lng
index 8defc36f4cc0c7046bac8ea2ac5bc430c6bd7ae2..615e34050fb51477bcba64fbbd278e3cccec8e9a 100644
--- a/interface/web/sites/lib/lang/de_web_folder.lng
+++ b/interface/web/sites/lib/lang/de_web_folder.lng
@@ -5,3 +5,4 @@ $wb['path_txt'] = 'Pfad';
 $wb['active_txt'] = 'Aktiv';
 $wb['path_error_regex'] = 'Ungültiger Pfad.';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_web_folder_list.lng b/interface/web/sites/lib/lang/de_web_folder_list.lng
index 5491202ac64b2f0a2a9f2ab92f2de44ad6ee6956..2ac8f0399a10de936593f9090ec4bea50cb448f0 100644
--- a/interface/web/sites/lib/lang/de_web_folder_list.lng
+++ b/interface/web/sites/lib/lang/de_web_folder_list.lng
@@ -5,3 +5,4 @@ $wb['server_id_txt'] = 'Server';
 $wb['parent_domain_id_txt'] = 'Webseite';
 $wb['path_txt'] = 'Pfad';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_web_folder_user.lng b/interface/web/sites/lib/lang/de_web_folder_user.lng
index 6983dc136e265beef4ee4400461e30c30ad4ebb0..6ab959ca7cf723e1fd820e58d8aaadbed058e022 100644
--- a/interface/web/sites/lib/lang/de_web_folder_user.lng
+++ b/interface/web/sites/lib/lang/de_web_folder_user.lng
@@ -11,3 +11,4 @@ $wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
 $wb['password_match_txt'] = 'Die Passwörter stimmen überein.';
 $wb['no_folder_perm'] = 'Sie haben keine Berechtigung für diesen Ordner.';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_web_folder_user_list.lng b/interface/web/sites/lib/lang/de_web_folder_user_list.lng
index 5357760eb47ae32258a5396648c98d179d5db39c..cd41dbff364d67f481e637e13fa13d0a5f864cb8 100644
--- a/interface/web/sites/lib/lang/de_web_folder_user_list.lng
+++ b/interface/web/sites/lib/lang/de_web_folder_user_list.lng
@@ -4,3 +4,4 @@ $wb['active_txt'] = 'Aktiv';
 $wb['web_folder_id_txt'] = 'Ordner';
 $wb['username_txt'] = 'Benutzername';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_web_sites_stats_list.lng b/interface/web/sites/lib/lang/de_web_sites_stats_list.lng
index f7d8d424cc415942faedf335d945f51977396e20..84a267650917a8623ca952138093263a026fce6b 100644
--- a/interface/web/sites/lib/lang/de_web_sites_stats_list.lng
+++ b/interface/web/sites/lib/lang/de_web_sites_stats_list.lng
@@ -1,9 +1,10 @@
 <?php
-$wb['list_head_txt'] = 'Web Datenverkehr';
+$wb['list_head_txt'] = 'Webseiten Datentransfer';
 $wb['domain_txt'] = 'Domain';
-$wb['this_month_txt'] = 'diesen Monat';
-$wb['last_month_txt'] = 'letzten Monat';
-$wb['this_year_txt'] = 'dieses Jahr';
-$wb['last_year_txt'] = 'letztes Jahr';
+$wb['this_month_txt'] = 'Aktueller Monat';
+$wb['last_month_txt'] = 'Vergangenes Monat';
+$wb['this_year_txt'] = 'Aktuelles Jahr';
+$wb['last_year_txt'] = 'Vergangenes Jahr';
 $wb['sum_txt'] = 'Summe';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_web_subdomain.lng b/interface/web/sites/lib/lang/de_web_subdomain.lng
index d0c7b3010bb6cd35ac26a35697faa0153d2c090a..29de073359a72694559c7517401b16839ae64c3b 100644
--- a/interface/web/sites/lib/lang/de_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/de_web_subdomain.lng
@@ -1,7 +1,7 @@
 <?php
 $wb['ssl_state_txt'] = 'Bundesland';
-$wb['ssl_locality_txt'] = 'Lokalität';
-$wb['ssl_organisation_txt'] = 'Unternehmen';
+$wb['ssl_locality_txt'] = 'Ort';
+$wb['ssl_organisation_txt'] = 'Firma';
 $wb['ssl_organisation_unit_txt'] = 'Abteilung';
 $wb['ssl_country_txt'] = 'Land';
 $wb['ssl_request_txt'] = 'SSL Anfrage';
@@ -13,34 +13,35 @@ $wb['domain_txt'] = 'Domain';
 $wb['type_txt'] = 'Typ';
 $wb['parent_domain_id_txt'] = 'Zugehörige Webseite';
 $wb['redirect_type_txt'] = 'Weiterleitungstyp';
-$wb['redirect_path_txt'] = 'Weiterleitungspfad';
+$wb['redirect_path_txt'] = 'Weiterleitungsziel';
 $wb['active_txt'] = 'Aktiv';
 $wb['document_root_txt'] = 'Documentroot';
-$wb['system_user_txt'] = 'Linux Benutzer';
-$wb['system_group_txt'] = 'Linux Gruppe';
+$wb['system_user_txt'] = 'System Benutzer';
+$wb['system_group_txt'] = 'System Gruppe';
 $wb['ip_address_txt'] = 'IP Adresse';
-$wb['vhost_type_txt'] = 'VHost Typ';
-$wb['hd_quota_txt'] = 'Festplatten Quota';
-$wb['traffic_quota_txt'] = 'Traffic Quota';
+$wb['vhost_type_txt'] = 'vHost Typ';
+$wb['hd_quota_txt'] = 'Speicherplatz Begränzung';
+$wb['traffic_quota_txt'] = 'Datentransfer Beschränkung';
 $wb['cgi_txt'] = 'CGI';
 $wb['ssi_txt'] = 'SSI';
 $wb['ssl_txt'] = 'SSL';
 $wb['suexec_txt'] = 'SuEXEC';
 $wb['php_txt'] = 'PHP';
 $wb['client_txt'] = 'Kunde';
-$wb['limit_web_domain_txt'] = 'Die maximale Anzahl an Webdomains für Ihr Konto wurde erreicht.';
-$wb['limit_web_aliasdomain_txt'] = 'Die maximale Anzahl an Aliasdomains für Ihr Konto wurde erreicht.';
-$wb['limit_web_subdomain_txt'] = 'Die maximale Anzahl an Web Subdomains für Ihr Konto wurde erreicht.';
+$wb['limit_web_domain_txt'] = 'Die max. Anzahl an Webdomains für Ihr Konto wurde erreicht.';
+$wb['limit_web_aliasdomain_txt'] = 'Die max. Anzahl an Aliasdomains für Ihr Konto wurde erreicht.';
+$wb['limit_web_subdomain_txt'] = 'Die max. Anzahl an Web Subdomains für Ihr Konto wurde erreicht.';
 $wb['apache_directives_txt'] = 'Apache Direktiven';
 $wb['domain_error_empty'] = 'Domain ist leer.';
-$wb['domain_error_unique'] = 'Domain muss eindeutig sein.';
+$wb['domain_error_unique'] = 'Domain ist schon in Verwendung.';
 $wb['domain_error_regex'] = 'Domain Name ist ungültig.';
 $wb['domain_error_wildcard'] = 'Wildcard Subdomains sind nicht erlaubt.';
 $wb['host_txt'] = 'Host';
 $wb['redirect_error_regex'] = 'Ungültiger redirect Pfad. Gültige Pfade sind beispielsweise: /test/ oder http://www.domain.tld/test/';
-$wb['no_redirect_txt'] = 'Kein Redirect';
-$wb['no_flag_txt'] = 'Kein Flag';
+$wb['no_redirect_txt'] = 'Keine Weiterleitung';
+$wb['no_flag_txt'] = 'Keine Option';
 $wb['proxy_directives_txt'] = 'Proxy Direktiven';
 $wb['available_proxy_directive_snippets_txt'] = 'Verfügbare Proxy Direktiven Schnipsel:';
 $wb['error_proxy_requires_url'] = 'Weiterleitungstyp \\"proxy\\" erfordert eine URL als Weiterleitungspfad.';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_web_subdomain_list.lng b/interface/web/sites/lib/lang/de_web_subdomain_list.lng
index 042b9f02c5b2b4a665d69472e9192f707b20ef00..91970764d5f289084547b3ec6103e508cf35a31e 100644
--- a/interface/web/sites/lib/lang/de_web_subdomain_list.lng
+++ b/interface/web/sites/lib/lang/de_web_subdomain_list.lng
@@ -6,3 +6,4 @@ $wb['parent_domain_id_txt'] = 'Webseite';
 $wb['domain_txt'] = 'Subdomain';
 $wb['add_new_record_txt'] = 'Neue Subdomain hinzufügen';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/de_web_vhost_subdomain.lng
index e41b71757a2c2d46f9f5e1c29aba20771a83fcaf..d128a5ee7b7113049350800031e922fb4b27fef7 100644
--- a/interface/web/sites/lib/lang/de_web_vhost_subdomain.lng
+++ b/interface/web/sites/lib/lang/de_web_vhost_subdomain.lng
@@ -8,8 +8,8 @@ $wb['ssl_locality_txt'] = 'Ort';
 $wb['ssl_organisation_txt'] = 'Firma';
 $wb['ssl_organisation_unit_txt'] = 'Abteilung';
 $wb['ssl_country_txt'] = 'Land';
-$wb['ssl_key_txt'] = 'SSL Key';
-$wb['ssl_request_txt'] = 'SSL Request';
+$wb['ssl_key_txt'] = 'SSL Schlüssel';
+$wb['ssl_request_txt'] = 'SSL Anfrage';
 $wb['ssl_cert_txt'] = 'SSL Zertifikat';
 $wb['ssl_bundle_txt'] = 'SSL Bundle';
 $wb['ssl_action_txt'] = 'SSL Aktion';
@@ -18,32 +18,32 @@ $wb['domain_txt'] = 'Domain';
 $wb['host_txt'] = 'Host';
 $wb['type_txt'] = 'Typ';
 $wb['web_folder_error_regex'] = 'Ungültige Ordnerangabe, bitte keinen / eingeben.';
-$wb['redirect_type_txt'] = 'Redirect Typ';
-$wb['redirect_path_txt'] = 'Redirect Pfad';
+$wb['redirect_type_txt'] = 'WeiterleitungsTyp';
+$wb['redirect_path_txt'] = 'Weiterleitungsziel';
 $wb['active_txt'] = 'Aktiv';
 $wb['document_root_txt'] = 'Documentroot';
 $wb['system_user_txt'] = 'Linux Benutzer';
 $wb['system_group_txt'] = 'Linux Gruppe';
 $wb['ip_address_txt'] = 'IP Adresse';
-$wb['vhost_type_txt'] = 'VHost Type';
-$wb['hd_quota_txt'] = 'Festplatten Quota';
-$wb['traffic_quota_txt'] = 'Traffic Quota';
+$wb['vhost_type_txt'] = 'vHost Type';
+$wb['hd_quota_txt'] = 'Speicherplatz Beschränkung';
+$wb['traffic_quota_txt'] = 'Datentransfer Beschränkung';
 $wb['cgi_txt'] = 'CGI';
 $wb['ssi_txt'] = 'SSI';
 $wb['ssl_txt'] = 'SSL';
 $wb['suexec_txt'] = 'SuEXEC';
 $wb['php_txt'] = 'PHP';
 $wb['client_txt'] = 'Kunde';
-$wb['limit_web_domain_txt'] = 'Die maximale Anzahl an Webdomains für Ihr Konto wurde erreicht.';
-$wb['limit_web_aliasdomain_txt'] = 'Die maximale Anzahl an Aliasdomains für Ihr Konto wurde erreicht.';
-$wb['limit_web_subdomain_txt'] = 'Die maximale Anzahl an Subdomains für Ihr Konto wurde erreicht.';
+$wb['limit_web_domain_txt'] = 'Die max. Anzahl an Webdomains für Ihr Konto wurde erreicht.';
+$wb['limit_web_aliasdomain_txt'] = 'Die max. Anzahl an Aliasdomains für Ihr Konto wurde erreicht.';
+$wb['limit_web_subdomain_txt'] = 'Die max. Anzahl an Subdomains für Ihr Konto wurde erreicht.';
 $wb['apache_directives_txt'] = 'Apache Direktiven';
 $wb['domain_error_empty'] = 'Domain ist leer.';
-$wb['domain_error_unique'] = 'Domain muss eindeutig sein';
+$wb['domain_error_unique'] = 'Domain ist schon in Verwendung';
 $wb['domain_error_regex'] = 'Domain Name ungültig.';
 $wb['domain_error_wildcard'] = 'Wildcard Subdomains sind nicht erlaubt.';
-$wb['hd_quota_error_empty'] = 'Harddisk Quota ist leer.';
-$wb['traffic_quota_error_empty'] = 'Traffic Quota ist leer.';
+$wb['hd_quota_error_empty'] = 'Speicherplatz Beschränkung ist leer.';
+$wb['traffic_quota_error_empty'] = 'Datentransfer Beschränkung ist leer.';
 $wb['errordocs_txt'] = 'Eigene Fehlerseiten';
 $wb['error_ssl_state_empty'] = 'SSL Status ist leer.';
 $wb['error_ssl_locality_empty'] = 'Ort (SSL) ist leer.';
@@ -55,18 +55,18 @@ $wb['client_group_id_txt'] = 'Kunde';
 $wb['stats_password_txt'] = 'Webstatistik Passwort';
 $wb['ssl_domain_txt'] = 'SSL Domain';
 $wb['allow_override_txt'] = 'Allow Override';
-$wb['limit_web_quota_free_txt'] = 'Max. möglicher Festplatten Quota';
-$wb['ssl_state_error_regex'] = 'Ungültige SSL State. Gültige Zeichen sind: a-z, 0-9 und .,-_';
-$wb['ssl_locality_error_regex'] = 'Ungültige SSL Locality. Gülige Zeichen sind: a-z, 0-9 und .,-_';
-$wb['ssl_organisation_error_regex'] = 'Ungültige SSL Organisation. Gültige Zeichen sind: a-z, 0-9 und .,-_';
-$wb['ssl_organistaion_unit_error_regex'] = 'Ungültige SSL Organisation Unit. Gültige Zeichen sind: a-z, 0-9 und .,-_';
+$wb['limit_web_quota_free_txt'] = 'Max. mögliche Festplattenspeicher Beschränkung';
+$wb['ssl_state_error_regex'] = 'Ungültiges SSL Bundesland. Gültige Zeichen sind: a-z, 0-9 und .,-_';
+$wb['ssl_locality_error_regex'] = 'Ungültiger SSL Ort. Gülige Zeichen sind: a-z, 0-9 und .,-_';
+$wb['ssl_organisation_error_regex'] = 'Ungültige SSL Firma. Gültige Zeichen sind: a-z, 0-9 und .,-_';
+$wb['ssl_organistaion_unit_error_regex'] = 'Ungültige SSL Abteilung. Gültige Zeichen sind: a-z, 0-9 und .,-_';
 $wb['ssl_country_error_regex'] = 'Ungültiges SSL Land. Gültige Zeichen sind: A-Z';
-$wb['limit_traffic_quota_free_txt'] = 'Max. möglicher Traffic Quota';
+$wb['limit_traffic_quota_free_txt'] = 'Max. mögliche Datentransfer Beschränkung';
 $wb['redirect_error_regex'] = 'Ungültiger redirect Pfad. Gültige Angaben sind beispielsweise: /test/ oder http://www.domain.tld/test/';
 $wb['php_open_basedir_txt'] = 'PHP open_basedir';
 $wb['backup_interval_txt'] = 'Backup Intervall';
 $wb['backup_copies_txt'] = 'Anzahl an Backups';
-$wb['traffic_quota_exceeded_txt'] = 'Ãœbertragungs Volumen verbraucht.';
+$wb['traffic_quota_exceeded_txt'] = 'Max. Datentransfer verbraucht.';
 $wb['ruby_txt'] = 'Ruby';
 $wb['stats_user_txt'] = 'Webstatistik Benutzername';
 $wb['stats_type_txt'] = 'Webstatistik Programm';
@@ -74,13 +74,13 @@ $wb['custom_php_ini_txt'] = 'Individuelle php.ini Einstellungen';
 $wb['error_ssl_cert_empty'] = 'SSL Zertifikat Feld ist leer.';
 $wb['none_txt'] = 'Keine';
 $wb['disabled_txt'] = 'Deaktiviert';
-$wb['no_redirect_txt'] = 'Kein Redirect';
-$wb['no_flag_txt'] = 'Kein Flag';
+$wb['no_redirect_txt'] = 'Keine Weiterleitung';
+$wb['no_flag_txt'] = 'Keine Option';
 $wb['save_certificate_txt'] = 'Zertifikat speichern';
 $wb['create_certificate_txt'] = 'Zertifikat erstellen';
 $wb['delete_certificate_txt'] = 'Zertifikat löschen';
 $wb['nginx_directives_txt'] = 'nginx Direktiven';
-$wb['seo_redirect_txt'] = 'SEO Redirect';
+$wb['seo_redirect_txt'] = 'SEO Weiterleitung';
 $wb['non_www_to_www_txt'] = 'Nicht-www -> www';
 $wb['www_to_non_www_txt'] = 'www -> Nicht-www';
 $wb['php_fpm_use_socket_txt'] = 'Benutze Socket für PHP-FPM';
@@ -97,8 +97,8 @@ $wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children muß eine positive
 $wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers muß eine positive ganze Zahl sein.';
 $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers muß eine positive ganze Zahl sein.';
 $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers muß eine positive ganze Zahl sein.';
-$wb['hd_quota_error_regex'] = 'Harddisk Quota ist ungültig.';
-$wb['traffic_quota_error_regex'] = 'Traffic Quota ist ungültig.';
+$wb['hd_quota_error_regex'] = 'Festplattenspeicher Beschränkung ist ungültig.';
+$wb['traffic_quota_error_regex'] = 'Datentransfer Beschränkung ist ungültig.';
 $wb['fastcgi_php_version_txt'] = 'PHP Version';
 $wb['pm_txt'] = 'PHP-FPM Prozess Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
@@ -115,4 +115,9 @@ $wb['available_apache_directive_snippets_txt'] = 'Verfügbare Apache Direktiven
 $wb['available_nginx_directive_snippets_txt'] = 'Verfügbare nginx Direktiven Schnipsel:';
 $wb['proxy_directives_txt'] = 'Proxy Direktiven';
 $wb['available_proxy_directive_snippets_txt'] = 'Verfügbare Proxy Direktiven Schnipsel:';
+$wb['rewrite_rules_txt'] = 'Rewrite Rules';
+$wb['invalid_rewrite_rules_txt'] = 'Unzulässige Rewrite Rules';
+$wb['allowed_rewrite_rule_directives_txt'] = 'Erlaubte Direktiven:';
+$wb['configuration_error_txt'] = 'KONFIGURATIONSFEHLER';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_web_vhost_subdomain_list.lng b/interface/web/sites/lib/lang/de_web_vhost_subdomain_list.lng
index 042b9f02c5b2b4a665d69472e9192f707b20ef00..91970764d5f289084547b3ec6103e508cf35a31e 100644
--- a/interface/web/sites/lib/lang/de_web_vhost_subdomain_list.lng
+++ b/interface/web/sites/lib/lang/de_web_vhost_subdomain_list.lng
@@ -6,3 +6,4 @@ $wb['parent_domain_id_txt'] = 'Webseite';
 $wb['domain_txt'] = 'Subdomain';
 $wb['add_new_record_txt'] = 'Neue Subdomain hinzufügen';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_webdav_user.lng b/interface/web/sites/lib/lang/de_webdav_user.lng
index eeefda85ee7802f45cbb5fe7f02e951abcc65b3e..25c7b0995a2571340a0ba206e1e3519607826826 100644
--- a/interface/web/sites/lib/lang/de_webdav_user.lng
+++ b/interface/web/sites/lib/lang/de_webdav_user.lng
@@ -6,7 +6,7 @@ $wb['username_txt'] = 'Benutzername';
 $wb['password_txt'] = 'Passwort';
 $wb['password_strength_txt'] = 'Passwortkomplexität';
 $wb['active_txt'] = 'Aktiv';
-$wb['limit_webdav_user_txt'] = 'Die maximale Anzahl an WebDAV Benutzer für Ihr Konto wurde erreicht.';
+$wb['limit_webdav_user_txt'] = 'Die max. Anzahl an WebDAV Benutzer für Ihr Konto wurde erreicht.';
 $wb['username_error_empty'] = 'Benutzername ist leer.';
 $wb['username_error_unique'] = 'Der Benutzername muss einzigartig sein.';
 $wb['username_error_regex'] = 'Der Benutzername enthält nicht erlaubte Zeichen.';
@@ -19,3 +19,4 @@ $wb['repeat_password_txt'] = 'Passwort wiederholen';
 $wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
 $wb['password_match_txt'] = 'Die Passwörter stimmen überein.';
 ?>
+
diff --git a/interface/web/sites/lib/lang/de_webdav_user_list.lng b/interface/web/sites/lib/lang/de_webdav_user_list.lng
index 927bfbb2de89fb5f82a851ec4d8935dbd2d37b97..84b9fadcf87ac84f66a8e560783d2154ff0c2352 100644
--- a/interface/web/sites/lib/lang/de_webdav_user_list.lng
+++ b/interface/web/sites/lib/lang/de_webdav_user_list.lng
@@ -6,3 +6,4 @@ $wb['parent_domain_id_txt'] = 'Webseite';
 $wb['username_txt'] = 'Benutzername';
 $wb['add_new_record_txt'] = 'Neuen WebDAV Benutzer hinzufügen';
 ?>
+
diff --git a/interface/web/sites/lib/lang/el.lng b/interface/web/sites/lib/lang/el.lng
index 2d726140fd1ab7fbb29729f4f8016ba02f761288..f7d1e4f87262ce40cb9b38bd105137acd5c9122a 100644
--- a/interface/web/sites/lib/lang/el.lng
+++ b/interface/web/sites/lib/lang/el.lng
@@ -4,17 +4,17 @@ $wb['Website'] = 'Website';
 $wb['Subdomain'] = 'Subdomain για το website';
 $wb['Aliasdomain'] = 'Ψευδώνυμο domain για το website';
 $wb['Database'] = 'Βάση Δεδομένων';
-$wb['Web Access'] = 'Web Access';
+$wb['Web Access'] = 'Πρόσβαση Web';
 $wb['FTP-User'] = 'Χρήστης FTP';
 $wb['Webdav-User'] = 'Χρήστης Webdav';
-$wb['Folder'] = 'Protected Folders';
-$wb['Folder users'] = 'Protected Folder Users';
-$wb['Command Line'] = 'Command Line';
-$wb['Shell-User'] = 'Χρήστης Shell';
+$wb['Folder'] = 'Προστατευμένοι Φάκελοι';
+$wb['Folder users'] = 'Χρήστες Προστατευμένων Φακέλων';
+$wb['Command Line'] = 'Γραμμή Εντολών';
+$wb['Shell-User'] = 'Χρήστης Κελύφους';
 $wb['Cron Jobs'] = 'Εργασίες Cron';
 $wb['Statistics'] = 'Στατιστικά';
 $wb['Web traffic'] = 'Κίνηση Web';
-$wb['Website quota (Harddisk)'] = 'Όριο δίσκου Website (Harddisk)';
+$wb['Website quota (Harddisk)'] = 'Όριο δίσκου Website (Δίσκος)';
 $wb['Cron'] = 'Cron';
 $wb['Stats'] = 'Στατιστικά';
 $wb['Shell'] = 'Shell';
@@ -25,11 +25,11 @@ $wb['Domain'] = 'Domain';
 $wb['Redirect'] = 'Ανακατεύθυνση';
 $wb['SSL'] = 'SSL';
 $wb['Sites'] = 'Sites';
-$wb['Database User'] = 'Database Users';
-$wb['APS Installer'] = 'APS Installer';
-$wb['Available packages'] = 'Available packages';
-$wb['Installed packages'] = 'Installed packages';
-$wb['Update Packagelist'] = 'Update Packagelist';
+$wb['Database User'] = 'Χρήστες Βάσης Δεδομένων';
+$wb['APS Installer'] = 'Εγκαταστάτης APS';
+$wb['Available packages'] = 'Διαθέσιμα Πακέτα';
+$wb['Installed packages'] = 'Εγκατεστημένα Πακέτα';
+$wb['Update Packagelist'] = 'Ενημέρωση Λίστας Πακέτων';
 $wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)';
-$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
+$wb['error_proxy_requires_url'] = 'Ο τύπος ανακατεύθυνσης \\"proxy\\" απαιτεί ένα URL ως το μονοπάτι ανακατεύθυνσης.';
 ?>
diff --git a/interface/web/sites/lib/lang/el_aps.lng b/interface/web/sites/lib/lang/el_aps.lng
index 29fb7b6a40de911e18acadb73479b1da703cbfe9..ee6105eff38b1204ed9ca8655a03885c0c1e5e51 100644
--- a/interface/web/sites/lib/lang/el_aps.lng
+++ b/interface/web/sites/lib/lang/el_aps.lng
@@ -1,58 +1,58 @@
 <?php
-$wb['overview_txt'] = 'Overview';
-$wb['administration_txt'] = 'Administration';
-$wb['available_packages_txt'] = 'Available packages';
-$wb['installed_packages_txt'] = 'Installed packages';
-$wb['yes_txt'] = 'Yes';
-$wb['no_txt'] = 'No';
-$wb['invalid_id_txt'] = 'No valid ID has been provided.';
-$wb['details_txt'] = 'Details';
-$wb['version_txt'] = 'Version';
-$wb['category_txt'] = 'Category';
-$wb['homepage_txt'] = 'Homepage';
-$wb['supported_languages_txt'] = 'Supported languages';
-$wb['description_txt'] = 'Description';
-$wb['config_script_txt'] = 'Configuration script';
-$wb['installed_size_txt'] = 'Size after installation';
-$wb['license_txt'] = 'License';
+$wb['overview_txt'] = 'Επισκόπηση';
+$wb['administration_txt'] = 'Διαχείριση';
+$wb['available_packages_txt'] = 'Διαθέσιμα Πακέτα';
+$wb['installed_packages_txt'] = 'Εγκατεστημένα Πακέτα';
+$wb['yes_txt'] = 'Ναι';
+$wb['no_txt'] = 'Όχι';
+$wb['invalid_id_txt'] = 'Δεν έχει εισαχθεί έγκυρο ID.';
+$wb['details_txt'] = 'Λεπτομέρειες';
+$wb['version_txt'] = 'Έκδοση';
+$wb['category_txt'] = 'Κατηγορία';
+$wb['homepage_txt'] = 'Αρχική Σελίδα';
+$wb['supported_languages_txt'] = 'Υποστηριζόμενες Γλώσσες';
+$wb['description_txt'] = 'Περιγραφή';
+$wb['config_script_txt'] = 'Script Ρυθμίσεων';
+$wb['installed_size_txt'] = 'Μέγεθος μετά την εγκατάσταση';
+$wb['license_txt'] = 'Άδεια Χρήσης';
 $wb['screenshots_txt'] = 'Screenshots';
-$wb['changelog_txt'] = 'Changelog';
-$wb['server_requirements_txt'] = 'Server requirements';
-$wb['php_extensions_txt'] = 'PHP extensions';
-$wb['php_settings_txt'] = 'PHP settings';
-$wb['supported_php_versions_txt'] = 'Supported PHP versions';
-$wb['database_txt'] = 'Database';
-$wb['settings_txt'] = 'Settings';
-$wb['install_package_txt'] = 'Install this package';
-$wb['installation_txt'] = 'Installation';
-$wb['install_location_txt'] = 'Install location';
-$wb['acceptance_txt'] = 'Acceptance';
-$wb['acceptance_text_txt'] = 'Yes, i\'ve read the license and agree.';
-$wb['install_language_txt'] = 'Interface language';
-$wb['new_database_password_txt'] = 'New database password';
-$wb['basic_settings_txt'] = 'Basic settings';
-$wb['package_settings_txt'] = 'Package settings';
-$wb['error_main_domain'] = 'The domain of the installation path is invalid.';
-$wb['error_no_main_location'] = 'You have provided no valid installation path.';
-$wb['error_inv_main_location'] = 'The given install location folder is invalid.';
-$wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.';
-$wb['error_no_database_pw'] = 'You have provided no valid database password.';
-$wb['error_short_database_pw'] = 'Please choose a longer database password.';
-$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.';
-$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.';
-$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.';
-$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".';
-$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".';
-$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".';
-$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".';
-$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".';
-$wb['error_used_location'] = 'The installation path already contains a package installation.';
-$wb['installation_task_txt'] = 'Install planned';
-$wb['installation_error_txt'] = 'Install error';
-$wb['installation_success_txt'] = 'Installed';
-$wb['installation_remove_txt'] = 'Removal planned';
-$wb['packagelist_update_finished_txt'] = 'APS Packagelist update finished.';
-$wb['btn_install_txt'] = 'Install';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['limit_aps_txt'] = 'The max. number of APS instances for your account is reached.';
+$wb['changelog_txt'] = 'Αρχείο αλλαγών έκδοσης';
+$wb['server_requirements_txt'] = 'Απαιτήσεις Server';
+$wb['php_extensions_txt'] = 'Επεκτάσεις PHP';
+$wb['php_settings_txt'] = 'Ρυθμίσεις PHP';
+$wb['supported_php_versions_txt'] = 'Υποστηριζόμενες Εκδόσεις PHP';
+$wb['database_txt'] = 'Βάση Δεδομένων';
+$wb['settings_txt'] = 'Ρυθμίσεις';
+$wb['install_package_txt'] = 'Εγκατάσταση Πακέτου';
+$wb['installation_txt'] = 'Εγκατάσταση';
+$wb['install_location_txt'] = 'Τοποθεσία Εγκατάστασης';
+$wb['acceptance_txt'] = 'Αποδοχή';
+$wb['acceptance_text_txt'] = 'Ναι, διάβασα την άδεια χρήσης και συμφωνώ.';
+$wb['install_language_txt'] = 'Γλώσσα διεπαφής';
+$wb['new_database_password_txt'] = 'Νέο συνθηματικό βάσης δεδομένων';
+$wb['basic_settings_txt'] = 'Βασικές Ρυθμίσεις';
+$wb['package_settings_txt'] = 'Ρυθμίσεις πακέτου';
+$wb['error_main_domain'] = 'ΤΟ domain της διαδρομής εγκατάστασης δεν είναι έγκυρο.';
+$wb['error_no_main_location'] = 'Δεν δώσατε έγκρυρη διαδρομή εγκατάστασης.';
+$wb['error_inv_main_location'] = 'Ο φάκελος στην τοποθεσία δεν είναι έγκυρος.';
+$wb['error_license_agreement'] = 'ΓΙα να συνεχίσετε πρέπει να αποδεχθείτε την άδεια χρήσης.';
+$wb['error_no_database_pw'] = 'Δεν δώσατε έγκυρο συνθηματικό Βάσης Δεδομένων.';
+$wb['error_short_database_pw'] = 'Παρακαλούμε, επιλέξτε μεγαλύτερο συνθηματικό Βάσης Δεδομένων.';
+$wb['error_no_value_for'] = 'Το πεδίο \\"%s\\" δεν πρέπει να είναι κενό.';
+$wb['error_short_value_for'] = 'Το πεδίο \\"%s\\" απαιτεί μεγαλύτερη τιμή.';
+$wb['error_long_value_for'] = 'Το πεδίο \\"%s\\" απαιτεί μικρότερη τιμή.';
+$wb['error_inv_value_for'] = 'Εισάγατε μη έγκυρη τιμή για το πεδίο \\"%s\\".';
+$wb['error_inv_email_for'] = 'Εισάγατε μη έγκυρη διεύθυνση mail για το πεδίο \\"%s\\".';
+$wb['error_inv_domain_for'] = 'Εισάγατε μη έγκυρο domain για το πεδίο \\"%s\\".';
+$wb['error_inv_integer_for'] = 'Εισάγατε μη έγκυρο ακέραιο αριθμό για το πεδίο \\"%s\\".';
+$wb['error_inv_float_for'] = 'Εισάγατε μη έγκυρο πραγματικό αριθμό για το πεδίο  \\"%s\\".';
+$wb['error_used_location'] = 'Η διαδρομή εγκατάστασης περιέχει ήδη ένα εγκατεστημένο πακέτο.';
+$wb['installation_task_txt'] = 'Η εγκατάσταση προγραμματίστηκε';
+$wb['installation_error_txt'] = 'Σφάλμα εγκατάστασης';
+$wb['installation_success_txt'] = 'Η εγκατάσταση έγινε';
+$wb['installation_remove_txt'] = 'Η απεγκατάσταση προγραμματίστηκε';
+$wb['packagelist_update_finished_txt'] = 'Η ενημέρωση της λίστας APS τελείωσε.';
+$wb['btn_install_txt'] = 'Εγκατάσταση';
+$wb['btn_cancel_txt'] = 'Άκυρο';
+$wb['limit_aps_txt'] = 'Έχετε φτάσει το μέγιστο πλήθος εγκαταστάσεων APS για τον λογαριασμό σας.';
 ?>
diff --git a/interface/web/sites/lib/lang/el_aps_instances_list.lng b/interface/web/sites/lib/lang/el_aps_instances_list.lng
index 052d834a7174000d1bdc2e1d87354299a5906f2a..55e0aba1fa490593af7f8cd236fc57dfe371e04f 100644
--- a/interface/web/sites/lib/lang/el_aps_instances_list.lng
+++ b/interface/web/sites/lib/lang/el_aps_instances_list.lng
@@ -1,13 +1,13 @@
 <?php
-$wb['list_head_txt'] = 'Installed packages';
-$wb['name_txt'] = 'Name';
-$wb['version_txt'] = 'Version';
-$wb['customer_txt'] = 'Client';
-$wb['status_txt'] = 'Status';
-$wb['install_location_txt'] = 'Install location';
-$wb['pkg_delete_confirmation'] = 'Do you really want to delete this installation?';
-$wb['pkg_reinstall_confirmation'] = 'Do you really want to reinstall this package with the same settings?';
-$wb['filter_txt'] = 'Search';
-$wb['delete_txt'] = 'Delete';
-$wb['reinstall_txt'] = 'Reinstall';
+$wb['list_head_txt'] = 'Εγκατεστημένα Πακέτα';
+$wb['name_txt'] = 'Όνομα';
+$wb['version_txt'] = 'Έκδοση';
+$wb['customer_txt'] = 'Πελάτης';
+$wb['status_txt'] = 'Κατάσταση';
+$wb['install_location_txt'] = 'Τοποθεσία εγκατάστασης';
+$wb['pkg_delete_confirmation'] = 'Θέλετε οπωσδήποτε να διαγράψετε αυτή την εγκατάσταση?';
+$wb['pkg_reinstall_confirmation'] = 'Θέλετε οπωσδήποτε να ξανακάνετε την εγκατάσταση αυτού του πακέτου με τις ίδιες ρυθμίσεις?';
+$wb['filter_txt'] = 'Αναζήτηση';
+$wb['delete_txt'] = 'Διαγραφή';
+$wb['reinstall_txt'] = 'Επανεγκατάσταση';
 ?>
diff --git a/interface/web/sites/lib/lang/el_aps_packages_list.lng b/interface/web/sites/lib/lang/el_aps_packages_list.lng
index 68c378085f9851f9aa50a68063b99c37a5f985ff..4226d907bdcddb3e897f7dee1014d09c312b9ece 100644
--- a/interface/web/sites/lib/lang/el_aps_packages_list.lng
+++ b/interface/web/sites/lib/lang/el_aps_packages_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Available packages';
-$wb['name_txt'] = 'Name';
-$wb['version_txt'] = 'Version';
-$wb['category_txt'] = 'Category';
-$wb['status_txt'] = 'Unlocked';
-$wb['filter_txt'] = 'Search';
+$wb['list_head_txt'] = 'Διαθέσιμα Πακέτα';
+$wb['name_txt'] = 'Όνομα';
+$wb['version_txt'] = 'Έκδοση';
+$wb['category_txt'] = 'Κατηγορία';
+$wb['status_txt'] = 'Ξεκλείδωτο';
+$wb['filter_txt'] = 'Αναζήτηση';
 ?>
diff --git a/interface/web/sites/lib/lang/el_aps_update_packagelist.lng b/interface/web/sites/lib/lang/el_aps_update_packagelist.lng
index ce9fcf68fb3968052ec0f1edb1ab58b806e545d4..ffe73d0a96295dca2c2a4651da8bf0aca56be6aa 100644
--- a/interface/web/sites/lib/lang/el_aps_update_packagelist.lng
+++ b/interface/web/sites/lib/lang/el_aps_update_packagelist.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['head_txt'] = 'Update Packagelist';
+$wb['head_txt'] = 'Ενημέρωση λίστας πακέτων';
 $wb['list_desc_txt'] = '';
-$wb['btn_start_txt'] = 'Update Packagelist';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['legend_txt'] = 'Here you can update the list of available packages. Please note that this can take up to five minutes. You can leave this page if you like; the process will continue in the background.';
+$wb['btn_start_txt'] = 'Ενημέρωση λίστας πακέτων';
+$wb['btn_cancel_txt'] = 'Άκυρο';
+$wb['legend_txt'] = 'Εδώ μπορείτε να ενημερώσετε την λίστα των διαθέσιμων πακέτων. Η εργασία μπορεί να διαρκέσει μέχρι και πέντε λεπτά. Μπορείτε να φύγετε από την σελίδα αν θέλετε,η εργασία θα συνεχίζεται στο παρασκήνιο.';
 ?>
diff --git a/interface/web/sites/lib/lang/el_cron.lng b/interface/web/sites/lib/lang/el_cron.lng
index 3e8f7eb70470764bf21fa8eefc74a8d1cd944310..291ab1f4de69368222345f1c332ffdcb91eccf98 100644
--- a/interface/web/sites/lib/lang/el_cron.lng
+++ b/interface/web/sites/lib/lang/el_cron.lng
@@ -17,5 +17,5 @@ $wb['run_mday_error_format'] = 'Η μορφοποίηση για τις μέρε
 $wb['run_month_error_format'] = 'Η μορφοποίηση για τους μήνες δεν είναι έγκυρη';
 $wb['run_wday_error_format'] = 'Η μορφοποίηση για τις ημέρες της εβδομάδας δεν είναι έγκυρη';
 $wb['command_error_format'] = 'Η μορφοποίηση για την εντολή δεν είναι έγκυρη. Παρακαλούμε σημειώστε ότι στην περίπτωση του url μόνο τα http/https επιτρέπονται.';
-$wb['unknown_fieldtype_error'] = 'Χρησιμοποιήθηκε άγνωστός τύπος πεδίου.';
+$wb['unknown_fieldtype_error'] = 'Χρησιμοποιήθηκε άγνωστος τύπος πεδίου.';
 ?>
diff --git a/interface/web/sites/lib/lang/el_database.lng b/interface/web/sites/lib/lang/el_database.lng
index 14f05ea35354d9d3b7451ff0ad69ff6ff4bfe634..4776b592176cb876f34585127c3b4d5be68a932e 100644
--- a/interface/web/sites/lib/lang/el_database.lng
+++ b/interface/web/sites/lib/lang/el_database.lng
@@ -4,7 +4,7 @@ $wb['type_txt'] = 'Τύπος';
 $wb['database_name_txt'] = 'Όνομα Βάσης Δεδομένων';
 $wb['database_user_txt'] = 'Όνομα Χρήστη Βάσης Δεδομένων';
 $wb['database_password_txt'] = 'Συνθηματικό Βάσης Δεδομένων';
-$wb['password_strength_txt'] = 'Δύναμη συνθηματικού';
+$wb['password_strength_txt'] = 'Ισχύς Συνθηματικού';
 $wb['database_charset_txt'] = 'Κωδικοποίηση Χαρακτήρων Βάσης Δεδομένων';
 $wb['remote_access_txt'] = 'Απομακρυσμένη πρόσβαση';
 $wb['remote_ips_txt'] = 'Διευθύνσεις IP απομ. πρόσβασης (χωρισμένες με , και αφήστε κενό για  <i>οποιαδήποτε</i>)';
@@ -14,7 +14,7 @@ $wb['active_txt'] = 'Ενεργή';
 $wb['database_name_error_empty'] = 'Το όνομα της βάσης δεδομένων δεν έχει οριστεί.';
 $wb['database_name_error_unique'] = 'Υπάρχει ήδη μία βάση δεδομένων με αυτό το όνομα στον server. Για να φτιάξετε ένα μοναδικό όνομα, π.χ. βάλτε μπροστά από το όνομα της, το όνομα του domain.';
 $wb['database_name_error_regex'] = 'Μή έγκυρο όνομα βάσης δεδομένων. Το όνομα της βάσης μπορεί να περιέχει αυτούς τους χαρακτήρες: a-z, A-Z, 0-9 και την κάτω παύλα. Μέγεθος: 2 - 64 χαρακτήρες.';
-$wb['database_user_error_empty'] = 'Το όνομα της βάσης δεδομένων δεν έχει οριστεί.';
+$wb['database_user_error_empty'] = 'Το όνομα χρήστη δεν έχει οριστεί.';
 $wb['database_user_error_unique'] = 'Υπάρχει ήδη ένας χρήστης με αυτό το όνομα στον server. Για να φτιάξετε ένα μοναδικό όνομα, π.χ. βάλτε μπροστά από το όνομα, το όνομα του domain.';
 $wb['database_user_error_regex'] = 'Μη έγκυρο όνομα χρήστη. Το όνομα χρήστη μπορεί να περιέχει αυτούς τους χαρακτήρες: a-z, A-Z, 0-9 και την κάτω παύλα. Μέγεθος: 2 - 64 χαρακτήρες.';
 $wb['limit_database_txt'] = 'Έχετε φτάσει το μέγιστο πλήθος των βάσεων δεδομένων.';
@@ -23,24 +23,24 @@ $wb['database_charset_change_txt'] = 'Η κωδικοποίηση χαρακτή
 $wb['database_name_error_len'] = 'Το όνομα της βάσης δεδομένων  - {db} - είναι πολύ μεγάλο. Το συνολικό μέγιστο μέγεθος δεν μπορεί να ξεπερνά τους 64 χαρακτήρες.';
 $wb['database_user_error_len'] = 'Το όνομα χρήστη της βάσης δεδομένων - {user}- είναι πολύ μεγάλο. Το συνολικό μέγιστο μέγεθος δεν μπορεί να ξεπερνά τους 16 χαρακτήρες.';
 $wb['parent_domain_id_txt'] = 'Site';
-$wb['database_site_error_empty'] = 'Select the site to which the database belongs.';
-$wb['select_site_txt'] = '- Select Site -';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
-$wb['globalsearch_resultslimit_of_txt'] = 'of';
-$wb['globalsearch_resultslimit_results_txt'] = 'results';
-$wb['globalsearch_noresults_text_txt'] = 'No results.';
-$wb['globalsearch_noresults_limit_txt'] = '0 results';
-$wb['globalsearch_searchfield_watermark_txt'] = 'Search';
-$wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
-$wb['database_ro_user_txt'] = 'Read-only database user';
-$wb['optional_txt'] = 'optional';
-$wb['select_dbuser_txt'] = 'Select database user';
-$wb['no_dbuser_txt'] = 'None';
-$wb['database_client_differs_txt'] = 'The client of the parent web and the database do not match.';
-$wb['database_user_missing_txt'] = 'Please select a database user for this database.';
+$wb['database_site_error_empty'] = 'Επιλέξτε το site στο οποίο ανήκει η βάση δεδομένων.';
+$wb['select_site_txt'] = '- Επιλογή Site -';
+$wb['btn_save_txt'] = 'Αποθήκευση';
+$wb['btn_cancel_txt'] = 'Άκυρο';
+$wb['generate_password_txt'] = 'Δημιουργία Συνθηματικού';
+$wb['repeat_password_txt'] = 'Επανάληψη Συνθηματικού';
+$wb['password_mismatch_txt'] = 'Τα Συνθηματικά δεν ταιριάζουν.';
+$wb['password_match_txt'] = 'Τα Συνθηματικά ταιριάζουν.';
+$wb['globalsearch_resultslimit_of_txt'] = 'από';
+$wb['globalsearch_resultslimit_results_txt'] = 'αποτελέσματα';
+$wb['globalsearch_noresults_text_txt'] = 'Δεν υπάρχουν αποτελέσματα.';
+$wb['globalsearch_noresults_limit_txt'] = '0 αποτελέσματα';
+$wb['globalsearch_searchfield_watermark_txt'] = 'Αναζήτηση';
+$wb['globalsearch_suggestions_text_txt'] = 'Προτάσεις';
+$wb['database_ro_user_txt'] = 'Χρήστης Βάσης δεδομένων μόνο για άναγνωση';
+$wb['optional_txt'] = 'προαιρετικό';
+$wb['select_dbuser_txt'] = 'Επιλογή χρήστη Βάσης Δεδομένων';
+$wb['no_dbuser_txt'] = 'Κανένας';
+$wb['database_client_differs_txt'] = 'Ο πελάτης του γονικού website και η Βάση Δεδομένων δεν ταιριάζουν.';
+$wb['database_user_missing_txt'] = 'Παρακαλούμε επιλέξτε ένα χρήστη για αυτή την Βάση Δεδομένων.';
 ?>
diff --git a/interface/web/sites/lib/lang/el_database_admin_list.lng b/interface/web/sites/lib/lang/el_database_admin_list.lng
index f414200740402f5abcc2ce656b9a43b7f1d8f4e6..c5d1992f76ba5280c46e4a658c773674e552044b 100644
--- a/interface/web/sites/lib/lang/el_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/el_database_admin_list.lng
@@ -7,4 +7,5 @@ $wb['database_user_txt'] = 'Όνομα χρήστη';
 $wb['database_name_txt'] = 'Όνομα βάσης';
 $wb['add_new_record_txt'] = 'Νέα βάση δεδομένων';
 $wb['sys_groupid_txt'] = 'Πελάτης';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/el_database_list.lng b/interface/web/sites/lib/lang/el_database_list.lng
index ce54134293db4e1cf538abc80d85d7ff56b48417..246827506ad2b4b918ae7b314f9c4731bc2589d0 100644
--- a/interface/web/sites/lib/lang/el_database_list.lng
+++ b/interface/web/sites/lib/lang/el_database_list.lng
@@ -6,4 +6,5 @@ $wb['server_id_txt'] = 'Server';
 $wb['database_user_txt'] = 'Όνομα Χρήστη Βάσης Δεδομένων';
 $wb['database_name_txt'] = 'Όνομα Βάσης Δεδομένων';
 $wb['add_new_record_txt'] = 'Νέα Βάσης Δεδομένων';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/el_database_user.lng b/interface/web/sites/lib/lang/el_database_user.lng
index 66a0718349ba3afad8bc3b50d0da0a5a55318d41..e6d8e1397b2139d1e5884df86b064795adba49b0 100644
--- a/interface/web/sites/lib/lang/el_database_user.lng
+++ b/interface/web/sites/lib/lang/el_database_user.lng
@@ -1,23 +1,23 @@
 <?php
-$wb['database_user_txt'] = 'Database user';
-$wb['database_password_txt'] = 'Database password';
-$wb['password_strength_txt'] = 'Password strength';
-$wb['client_txt'] = 'Client';
-$wb['active_txt'] = 'Active';
-$wb['database_user_error_empty'] = 'Database user is empty.';
-$wb['database_user_error_unique'] = 'There is already a database user with this name on the server. To get a unique name, e.g. prepend your domain name to the username.';
-$wb['database_user_error_regex'] = 'Invalid database user name. The username may contain these characters: a-z, A-Z, 0-9 and the underscore. Length: 2 - 64 characters.';
-$wb['database_user_error_len'] = 'Database username - {user} - too long. The max. database username length incl. prefix is 16 chars.';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
-$wb['globalsearch_resultslimit_of_txt'] = 'of';
-$wb['globalsearch_resultslimit_results_txt'] = 'results';
-$wb['globalsearch_noresults_text_txt'] = 'No results.';
-$wb['globalsearch_noresults_limit_txt'] = '0 results';
-$wb['globalsearch_searchfield_watermark_txt'] = 'Search';
-$wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
+$wb['database_user_txt'] = 'Όνομα Χρήστη Βάσης Δεδομένων';
+$wb['database_password_txt'] = 'Συνθηματικό Βάσης Δεδομένων';
+$wb['password_strength_txt'] = 'Ισχύς Συνθηματικού';
+$wb['client_txt'] = 'Πελάτης';
+$wb['active_txt'] = 'Ενεργή';
+$wb['database_user_error_empty'] = 'Το όνομα χρήστη δεν έχει οριστεί.';
+$wb['database_user_error_unique'] = 'Υπάρχει ήδη ένας χρήστης με αυτό το όνομα στον server. Για να φτιάξετε ένα μοναδικό όνομα, π.χ. βάλτε μπροστά από το όνομα, το όνομα του domain.';
+$wb['database_user_error_regex'] = 'Μη έγκυρο όνομα χρήστη. Το όνομα χρήστη μπορεί να περιέχει αυτούς τους χαρακτήρες: a-z, A-Z, 0-9 και την κάτω παύλα. Μέγεθος: 2 - 64 χαρακτήρες.';
+$wb['database_user_error_len'] = 'Το όνομα χρήστη της βάσης δεδομένων - {user}- είναι πολύ μεγάλο. Το συνολικό μέγιστο μέγεθος δεν μπορεί να ξεπερνά τους 16 χαρακτήρες.';
+$wb['btn_save_txt'] = 'Αποθήκευση';
+$wb['btn_cancel_txt'] = 'Άκυρο';
+$wb['generate_password_txt'] = 'Δημιουργία Συνθηματικού';
+$wb['repeat_password_txt'] = 'Επανάληψη Συνθηματικού';
+$wb['password_mismatch_txt'] = 'Τα Συνθηματικά δεν ταιριάζουν.';
+$wb['password_match_txt'] = 'Τα Συνθηματικά ταιριάζουν.';
+$wb['globalsearch_resultslimit_of_txt'] = 'από';
+$wb['globalsearch_resultslimit_results_txt'] = 'αποτελέσματα';
+$wb['globalsearch_noresults_text_txt'] = 'Δεν υπάρχουν αποτελέσματα.';
+$wb['globalsearch_noresults_limit_txt'] = '0 αποτελέσματα';
+$wb['globalsearch_searchfield_watermark_txt'] = 'Αναζήτηση';
+$wb['globalsearch_suggestions_text_txt'] = 'Προτάσεις';
 ?>
diff --git a/interface/web/sites/lib/lang/el_database_user_admin_list.lng b/interface/web/sites/lib/lang/el_database_user_admin_list.lng
index d7f88c4c360e87959fefa5ca1d3678425dbf0ef1..02a4c412118ab454a872ace3e423967abd740bba 100644
--- a/interface/web/sites/lib/lang/el_database_user_admin_list.lng
+++ b/interface/web/sites/lib/lang/el_database_user_admin_list.lng
@@ -1,6 +1,6 @@
 <?php
-$wb['list_head_txt'] = 'Database User';
-$wb['database_user_txt'] = 'Database user';
-$wb['add_new_record_txt'] = 'Add new User';
-$wb['sys_groupid_txt'] = 'Client';
+$wb['list_head_txt'] = 'Χρήστης Βάσης Δεδομένων';
+$wb['database_user_txt'] = 'Χρήστης Βάσης Δεδομένων';
+$wb['add_new_record_txt'] = 'Προσθήκη νέου χρήστη';
+$wb['sys_groupid_txt'] = 'Πελάτης';
 ?>
diff --git a/interface/web/sites/lib/lang/el_database_user_list.lng b/interface/web/sites/lib/lang/el_database_user_list.lng
index 8c226496a6a06a6b2c70db300f35aaac7619d223..b1bb3766b95cb278cde3e38922240320e0afa30c 100644
--- a/interface/web/sites/lib/lang/el_database_user_list.lng
+++ b/interface/web/sites/lib/lang/el_database_user_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Database user';
-$wb['database_user_txt'] = 'Database user';
-$wb['add_new_record_txt'] = 'Add new user';
+$wb['list_head_txt'] = 'Χρήστης Βάσης Δεδομένων';
+$wb['database_user_txt'] = 'Χρήστης Βάσης Δεδομένων';
+$wb['add_new_record_txt'] = 'Προσθήκη νέου χρήστη';
 ?>
diff --git a/interface/web/sites/lib/lang/el_ftp_user.lng b/interface/web/sites/lib/lang/el_ftp_user.lng
index 2f89d27bdf3e3e1cc620f6c880cb5c7b22397ad6..d65aef5ebef56596523b5bc5891d07790068a22e 100644
--- a/interface/web/sites/lib/lang/el_ftp_user.lng
+++ b/interface/web/sites/lib/lang/el_ftp_user.lng
@@ -12,7 +12,7 @@ $wb['server_id_txt'] = 'Server';
 $wb['parent_domain_id_txt'] = 'Website';
 $wb['username_txt'] = 'Όνομα Χρήστη';
 $wb['password_txt'] = 'Συνθηματικό';
-$wb['password_strength_txt'] = 'Δύναμη Συνθηματικου';
+$wb['password_strength_txt'] = 'Ισχύς Συνθηματικου';
 $wb['quota_size_txt'] = 'Όριο χρήσης αποθηκευτικού χώρου';
 $wb['active_txt'] = 'Ενεργός';
 $wb['limit_ftp_user_txt'] = 'Έχετε φτάσει το μέγιστο πλήθος των χρηστών FTP για τον λογαριασμό σας.';
@@ -25,10 +25,10 @@ $wb['directory_error_empty'] = 'Ο Φάκελος δεν έχει οριστεί
 $wb['directory_error_notinweb'] = 'Ο φάκελος δεν βρίσκεται μέσα στον ριζικό φάκελο web.';
 $wb['parent_domain_id_error_empty'] = 'Δεν επιλέχθηκε website.';
 $wb['quota_size_error_regex'] = 'Όριο: εισάγετε -1 για απεριόριστα ή έναν αριθμό > 0';
-$wb['dir_dot_error'] = 'No .. in path allowed.';
-$wb['dir_slashdot_error'] = 'No ./ in path allowed.';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
+$wb['dir_dot_error'] = 'Δεν επιτρέπονται .. στη διαδρομη.';
+$wb['dir_slashdot_error'] = 'Δεν επιτρέπεται ./ στη διαδρομη.';
+$wb['generate_password_txt'] = 'Δημιουργία Συνθηματικού';
+$wb['repeat_password_txt'] = 'Επανάληψη Συνθηματικού';
+$wb['password_mismatch_txt'] = 'Τα Συνθηματικά δεν ταιριάζουν.';
+$wb['password_match_txt'] = 'Τα Συνθηματικά ταιριάζουν.';
 ?>
diff --git a/interface/web/sites/lib/lang/el_shell_user.lng b/interface/web/sites/lib/lang/el_shell_user.lng
index 3c3ea316ce78c95fa2aa59f6d8783064a548c2cf..6513f99121797805f884535cda67e846dda3c3a3 100644
--- a/interface/web/sites/lib/lang/el_shell_user.lng
+++ b/interface/web/sites/lib/lang/el_shell_user.lng
@@ -1,14 +1,14 @@
 <?php
 $wb['puser_txt'] = 'Όνομα χρήστη Web';
 $wb['pgroup_txt'] = 'Ομάδα Web';
-$wb['shell_txt'] = 'Shell';
+$wb['shell_txt'] = 'Κέλυφος';
 $wb['dir_txt'] = 'Φάκελος';
 $wb['server_id_txt'] = 'Server';
 $wb['parent_domain_id_txt'] = 'Site';
 $wb['username_txt'] = 'Όνομα χρήστη';
 $wb['password_txt'] = 'Συνθηματικό';
-$wb['password_strength_txt'] = 'Δύναμη συνθηματικού';
-$wb['chroot_txt'] = 'Chroot Shell';
+$wb['password_strength_txt'] = 'Ισχύς Συνθηματικού';
+$wb['chroot_txt'] = 'Κέλυφος Chroot';
 $wb['quota_size_txt'] = 'Όρια';
 $wb['active_txt'] = 'Ενεργός';
 $wb['username_error_empty'] = 'Το όνομα χρήστη δεν έχει οριστεί';
@@ -20,12 +20,12 @@ $wb['directory_error_empty'] = 'Ο φάκελος δεν έχει οριστεί
 $wb['limit_shell_user_txt'] = 'Φτάσατε το μέγιστο πλήθος τον λογαριασμών Shell';
 $wb['parent_domain_id_error_empty'] = 'Δεν επιλέχθηκε website';
 $wb['ssh_rsa_txt'] = 'Δημόσιο Κλειδί SSH-RSA (για key-based logins)';
-$wb['dir_dot_error'] = 'No .. in path allowed.';
-$wb['dir_slashdot_error'] = 'No ./ in path allowed.';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
+$wb['dir_dot_error'] = 'Δεν επιτρέπονται .. στη διαδρομη.';
+$wb['dir_slashdot_error'] = 'Δεν επιτρέπεται ./ στη διαδρομη.';
+$wb['generate_password_txt'] = 'Δημιουργία Συνθηματικού';
+$wb['repeat_password_txt'] = 'Επανάληψη Συνθηματικού';
+$wb['password_mismatch_txt'] = 'Τα Συνθηματικά δεν ταιριάζουν.';
+$wb['password_match_txt'] = 'Τα Συνθηματικά ταιριάζουν.';
 $wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.';
 $wb['username_not_allowed_txt'] = 'The username is not allowed.';
 ?>
diff --git a/interface/web/sites/lib/lang/el_shell_user_list.lng b/interface/web/sites/lib/lang/el_shell_user_list.lng
index 5468905bbf0d02448aa40d1bb529eb753ad6e4f6..d0b7a169b40a1e728f3cc24d9b34f6efa73a2bab 100644
--- a/interface/web/sites/lib/lang/el_shell_user_list.lng
+++ b/interface/web/sites/lib/lang/el_shell_user_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Χρήστης Shell';
+$wb['list_head_txt'] = 'Χρήστης Κελύφους';
 $wb['active_txt'] = 'Ενεργός';
 $wb['server_id_txt'] = 'Server';
 $wb['parent_domain_id_txt'] = 'Site';
 $wb['username_txt'] = 'Όνομα Χρήστη';
-$wb['add_new_record_txt'] = 'Νεός χρήστης Shell';
+$wb['add_new_record_txt'] = 'Νεός χρήστης Κελύφους';
 ?>
diff --git a/interface/web/sites/lib/lang/el_user_quota_stats_list.lng b/interface/web/sites/lib/lang/el_user_quota_stats_list.lng
index a4b080eecd0284546787e71eb97d5c7220b0c635..5b83022fedbada5f908b50af0d8aa26595a62ae7 100644
--- a/interface/web/sites/lib/lang/el_user_quota_stats_list.lng
+++ b/interface/web/sites/lib/lang/el_user_quota_stats_list.lng
@@ -5,5 +5,5 @@ $wb['system_user_txt'] = 'Χρήστης Linux';
 $wb['used_txt'] = 'Χρησιμοποιούμενος χώρος';
 $wb['hard_txt'] = 'Απόλυτο όριο';
 $wb['soft_txt'] = 'Διαλακτικό όριο';
-$wb['files_txt'] = 'Single files';
+$wb['files_txt'] = 'Μεμονωμένα Αρχεία';
 ?>
diff --git a/interface/web/sites/lib/lang/el_web_aliasdomain.lng b/interface/web/sites/lib/lang/el_web_aliasdomain.lng
index 4149c711493e6b6f06d0e99656a1c65744d4ec46..ba8c6900e2f7bb2e4d82f7938be9cc96359654bf 100644
--- a/interface/web/sites/lib/lang/el_web_aliasdomain.lng
+++ b/interface/web/sites/lib/lang/el_web_aliasdomain.lng
@@ -1,12 +1,12 @@
 <?php
-$wb['domain_txt'] = 'Aliasdomain';
-$wb['backup_interval_txt'] = 'Backup interval';
-$wb['backup_copies_txt'] = 'Number of backup copies';
-$wb['ssl_state_txt'] = 'State';
-$wb['ssl_locality_txt'] = 'Locality';
-$wb['ssl_organisation_txt'] = 'Organisation';
-$wb['ssl_organisation_unit_txt'] = 'Organisation Unit';
-$wb['ssl_country_txt'] = 'Country';
+$wb['domain_txt'] = 'Ψευδώνυμο domain';
+$wb['backup_interval_txt'] = 'Χρονικό διάστημα Αντιγράφων Ασφαλείας';
+$wb['backup_copies_txt'] = 'Πλήθος Αντιγράφων Ασφαλείας';
+$wb['ssl_state_txt'] = 'Κατάσταση';
+$wb['ssl_locality_txt'] = 'Τοποθεσία';
+$wb['ssl_organisation_txt'] = 'Οργανισμός';
+$wb['ssl_organisation_unit_txt'] = 'Τμήμα Οργανισμού';
+$wb['ssl_country_txt'] = 'Χώρα';
 $wb['ssl_key_txt'] = 'SSL Key';
 $wb['ssl_request_txt'] = 'SSL Request';
 $wb['ssl_cert_txt'] = 'SSL Certificate';
@@ -14,70 +14,70 @@ $wb['ssl_bundle_txt'] = 'SSL Bundle';
 $wb['ssl_action_txt'] = 'SSL Action';
 $wb['ssl_domain_txt'] = 'SSL Domain';
 $wb['server_id_txt'] = 'Server';
-$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
-$wb['type_txt'] = 'Type';
-$wb['parent_domain_id_txt'] = 'Parent Website';
-$wb['redirect_type_txt'] = 'Redirect Type';
-$wb['redirect_path_txt'] = 'Redirect Path';
-$wb['active_txt'] = 'Active';
+$wb['web_folder_error_regex'] = 'Εισάγατε μη έγκυρο φάκελο. Μην εισάγετε την κάθετο.';
+$wb['type_txt'] = 'Τύπος';
+$wb['parent_domain_id_txt'] = 'Γονικό Website';
+$wb['redirect_type_txt'] = 'Τύπος Ανακατεύθυνσης';
+$wb['redirect_path_txt'] = 'Διαδρομή Ανακατεύθυνσης';
+$wb['active_txt'] = 'Ενεργό';
 $wb['document_root_txt'] = 'Documentroot';
-$wb['system_user_txt'] = 'Linux User';
-$wb['system_group_txt'] = 'Linux Group';
-$wb['ip_address_txt'] = 'IPv4-Address';
-$wb['ipv6_address_txt'] = 'IPv6-Address';
-$wb['vhost_type_txt'] = 'VHost Type';
-$wb['hd_quota_txt'] = 'Harddisk Quota';
-$wb['traffic_quota_txt'] = 'Traffic Quota';
+$wb['system_user_txt'] = 'Χρήστης Linux';
+$wb['system_group_txt'] = 'Ομάδα Linux';
+$wb['ip_address_txt'] = 'Διεύθυνση IPv4';
+$wb['ipv6_address_txt'] = 'Διεύθυνση IPv6';
+$wb['vhost_type_txt'] = 'Τύπος VHost';
+$wb['hd_quota_txt'] = 'Όριο αποθηκευτικού χώρου';
+$wb['traffic_quota_txt'] = 'Όριο μεταφοράς δεδομένων';
 $wb['cgi_txt'] = 'CGI';
 $wb['ssi_txt'] = 'SSI';
-$wb['errordocs_txt'] = 'Own Error-Documents';
-$wb['subdomain_txt'] = 'Auto-Subdomain';
+$wb['errordocs_txt'] = 'Προσωπικά έγγραφα σφάλματος';
+$wb['subdomain_txt'] = 'Αυτόματο-Subdomain';
 $wb['ssl_txt'] = 'SSL';
 $wb['suexec_txt'] = 'SuEXEC';
 $wb['php_txt'] = 'PHP';
-$wb['client_txt'] = 'Client';
-$wb['limit_web_domain_txt'] = 'The max. number of web domains for your account is reached.';
-$wb['limit_web_aliasdomain_txt'] = 'The max. number of aliasdomains for your account is reached.';
-$wb['limit_web_subdomain_txt'] = 'The max. number of web subdomains for your account is reached.';
+$wb['client_txt'] = 'Πελάτης';
+$wb['limit_web_domain_txt'] = 'Έχετε φτάσει το μέγιστο πλήθος των web domains για τον λογαριασμό σας.';
+$wb['limit_web_aliasdomain_txt'] = 'Έχετε φτάσει το μέγιστο πλήθος των ψευδωνύμων domains για τον λογαριασμό σας.';
+$wb['limit_web_subdomain_txt'] = 'Έχετε φτάσει το μέγιστο πλήθος των web subdomains για τον λογαριασμό σας.';
 $wb['apache_directives_txt'] = 'Apache Directives';
-$wb['domain_error_empty'] = 'Domain is empty.';
-$wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.';
-$wb['domain_error_regex'] = 'Domain name invalid.';
-$wb['domain_error_autosub'] = 'There is already a subdomain with these settings.';
-$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
-$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.';
-$wb['error_ssl_state_empty'] = 'SSL State is empty.';
-$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
-$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
-$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
-$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
-$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
-$wb['client_group_id_txt'] = 'Client';
-$wb['stats_password_txt'] = 'Set Webstatistics password';
+$wb['domain_error_empty'] = 'Το Domain δεν έχει οριστεί.';
+$wb['domain_error_unique'] = 'Υπάρχει ήδη ένα website ή ένα sub / aliasdomain με αυτό το όνομα domain.';
+$wb['domain_error_regex'] = 'Μη έγκυρο Domain.';
+$wb['domain_error_autosub'] = 'Υπάρχει ήδη ένα subdomain με αυτές τις ρυθμίσεις.';
+$wb['hd_quota_error_empty'] = 'Το όριο αποθηκευτικού χώρου είναι 0 ή δεν έχει οριστεί.';
+$wb['traffic_quota_error_empty'] = 'Το όριο μεταφοράς δεδομένων δεν έχει οριστεί.';
+$wb['error_ssl_state_empty'] = 'Κενή περιφέρεια SSL.';
+$wb['error_ssl_locality_empty'] = 'Κενή τοποθεσία SSL.';
+$wb['error_ssl_organisation_empty'] = 'Ο Οργανισμός SSL δεν έχει οριστεί.';
+$wb['error_ssl_organisation_unit_empty'] = 'Το SSL τμήμα Οργανισμού δεν έχει οριστεί.';
+$wb['error_ssl_country_empty'] = 'Κενή χώρα SSL.';
+$wb['error_ssl_cert_empty'] = 'Το πεδίο SSL Certificate δεν έχει οριστεί.';
+$wb['client_group_id_txt'] = 'Πελάτης';
+$wb['stats_password_txt'] = 'Συνθηματικο Στατιστικών Web';
 $wb['allow_override_txt'] = 'Apache AllowOverride';
-$wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota';
-$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
-$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
-$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
-$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
-$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
-$wb['limit_traffic_quota_free_txt'] = 'Max. available Traffic Quota';
-$wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
+$wb['limit_web_quota_free_txt'] = 'Μέγιστο Όριο αποθηκευτικού χώρου';
+$wb['ssl_state_error_regex'] = 'Άκυρη πολιτεία-περιφέρεια SSL. Έγκυροι χαρακτήρες: a-z, 0-9 and .,-_';
+$wb['ssl_locality_error_regex'] = 'Άκυρο SSL Locality. Έγκυροι χαρακτήρες: a-z, 0-9 and .,-_';
+$wb['ssl_organisation_error_regex'] = 'Άκυρος Οργανισμός  SSL. Έγκυροι χαρακτήρες: a-z, 0-9 and .,-_';
+$wb['ssl_organistaion_unit_error_regex'] = 'Άκυρη μονάδα οργανισμού SSL. Έγκυροι χαρακτήρες: a-z, 0-9 and .,-_';
+$wb['ssl_country_error_regex'] = 'Άκυρη Χώρα SSL. Έγκυροι χαρακτήρες: A-Z';
+$wb['limit_traffic_quota_free_txt'] = 'Μέγιστο Όριο μεταφοράς δεδομένων';
+$wb['redirect_error_regex'] = 'Μη έγκυρη διαδρομή ανακατεύθυνσης. Έγκυρες τιμές είναι: /test/ ή http://www.domain.tld/test/';
 $wb['php_open_basedir_txt'] = 'PHP open_basedir';
-$wb['traffic_quota_exceeded_txt'] = 'Traffic quota exceeded';
+$wb['traffic_quota_exceeded_txt'] = 'Ξεπεράστηκε το όριο μεταφοράς δεδομένων';
 $wb['ruby_txt'] = 'Ruby';
-$wb['stats_user_txt'] = 'Webstatistics username';
-$wb['stats_type_txt'] = 'Webstatistics program';
-$wb['custom_php_ini_txt'] = 'Custom php.ini settings';
-$wb['none_txt'] = 'None';
-$wb['disabled_txt'] = 'Disabled';
-$wb['no_redirect_txt'] = 'No redirect';
-$wb['no_flag_txt'] = 'No flag';
-$wb['save_certificate_txt'] = 'Save certificate';
-$wb['create_certificate_txt'] = 'Create certificate';
-$wb['delete_certificate_txt'] = 'Delete certificate';
+$wb['stats_user_txt'] = 'Όνομα Χρήστη Στατιστικών Web';
+$wb['stats_type_txt'] = 'Πρόγραμμα Στατιστικών Web';
+$wb['custom_php_ini_txt'] = 'Προσαρμοσμένες ρυθμίσεις php.ini';
+$wb['none_txt'] = 'Κανένα';
+$wb['disabled_txt'] = 'Απενεργοπ.';
+$wb['no_redirect_txt'] = 'Χωρίς Ανακατεύθυνση';
+$wb['no_flag_txt'] = 'Χωρίς Σημαία';
+$wb['save_certificate_txt'] = 'Αποθήκευση Πιστοποιητικού';
+$wb['create_certificate_txt'] = 'Δημιουργία Πιστοποιητικού';
+$wb['delete_certificate_txt'] = 'Διαγραφή Πιστοποιητικού';
 $wb['nginx_directives_txt'] = 'nginx Directives';
-$wb['seo_redirect_txt'] = 'SEO Redirect';
+$wb['seo_redirect_txt'] = 'Ανακατεύθυνση SEO';
 $wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
 $wb['www_to_non_www_txt'] = 'www -&gt; non-www';
 $wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM';
@@ -102,14 +102,14 @@ $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
 $wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
 $wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
 $wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
-$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
-$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
-$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
+$wb['generate_password_txt'] = 'Δημιουργία Συνθηματικού';
+$wb['repeat_password_txt'] = 'Επανάληψη Συνθηματικού';
+$wb['password_mismatch_txt'] = 'Τα Συνθηματικά δεν ταιριάζουν.';
+$wb['password_match_txt'] = 'Τα Συνθηματικά ταιριάζουν.';
+$wb['available_php_directive_snippets_txt'] = 'Διαθέσιμα PHP Directive Snippets:';
+$wb['available_apache_directive_snippets_txt'] = 'Διαθέσιμα Apache Directive Snippets:';
+$wb['available_nginx_directive_snippets_txt'] = 'Διαθέσιμα nginx Directive Snippets:';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
-$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['Domain'] = 'Aliasdomain';
+$wb['available_proxy_directive_snippets_txt'] = 'Διαθέσιμα Proxy Directive Snippets:';
+$wb['Domain'] = 'Ψευδώνυμο domain';
 ?>
diff --git a/interface/web/sites/lib/lang/el_web_aliasdomain_list.lng b/interface/web/sites/lib/lang/el_web_aliasdomain_list.lng
index b12aba2a5643b146ff93201cb511a417e4ea0e24..6ea60e8c20787e7b50fd058c6004f4d8151e38e1 100644
--- a/interface/web/sites/lib/lang/el_web_aliasdomain_list.lng
+++ b/interface/web/sites/lib/lang/el_web_aliasdomain_list.lng
@@ -8,7 +8,7 @@ $wb['add_new_record_txt'] = 'Νέο ψευδωνύμο domain';
 $wb['domain_error_empty'] = 'Το Domain δεν έχει οριστεί.';
 $wb['domain_error_unique'] = 'Το Domain πρέπει να είναι μοναδικό.';
 $wb['domain_error_regex'] = 'Το όνομα Domain δεν είναι έγκυρο.';
-$wb['no_redirect_txt'] = 'No redirect';
-$wb['no_flag_txt'] = 'No flag';
-$wb['none_txt'] = 'None';
+$wb['no_redirect_txt'] = 'Χωρίς Ανακατεύθυνση';
+$wb['no_flag_txt'] = 'Χωρίς σημαία';
+$wb['none_txt'] = 'Κανένα';
 ?>
diff --git a/interface/web/sites/lib/lang/el_web_backup_list.lng b/interface/web/sites/lib/lang/el_web_backup_list.lng
index 9a10ca6d07c27791935d9c0b47cb7357fa4e170a..2fa2a77cb13cdf441948c3c90f6700695b812500 100644
--- a/interface/web/sites/lib/lang/el_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/el_web_backup_list.lng
@@ -1,15 +1,15 @@
 <?php
-$wb['list_head_txt'] = 'Existing backups';
-$wb['date_txt'] = 'Date';
-$wb['backup_type_txt'] = 'Type';
-$wb['filename_txt'] = 'Backup file';
-$wb['restore_backup_txt'] = 'Restore backup';
-$wb['download_backup_txt'] = 'Download backup';
-$wb['download_info_txt'] = 'The backup file will be available for download in the backup folder of the website in a few minutes.';
-$wb['restore_info_txt'] = 'Restore of the backup has been started. This action takes several minutes to be completed.';
-$wb['restore_confirm_txt'] = 'Restoring will overwrite existing files in your website. Do you really want to restore this backup?';
-$wb['download_pending_txt'] = 'There is already a pending backup download job.';
-$wb['restore_pending_txt'] = 'There is already a pending backup restore job.';
-$wb['backup_type_mysql'] = 'MySQL Database';
-$wb['backup_type_web'] = 'Website files';
+$wb['list_head_txt'] = 'Υπάρχοντα Αντίγραφα Ασφαλείας';
+$wb['date_txt'] = 'Ημερομηνία';
+$wb['backup_type_txt'] = 'Τύπος';
+$wb['filename_txt'] = 'Αρχείο Αντιγράφου Ασφαλείας';
+$wb['restore_backup_txt'] = 'Επαναφορά Αντιγράφου Ασφαλείας';
+$wb['download_backup_txt'] = 'Μεταφόρτωση Αντιγράφου Ασφαλείας';
+$wb['download_info_txt'] = 'Το Αντιγράφου Ασφαλείας θα είναι διαθέσιμο για μεταφόρτωση στον φάκελο Αντιγράφων Ασφαλείας του website σε λίγα λεπτά.';
+$wb['restore_info_txt'] = 'Η επαναφορά του Αντιγράφου Ασφαλείας ξεκίνησε. Η ενέργεια απαιτεί πολλά λεπτά για την ολοκλήρωσή της.';
+$wb['restore_confirm_txt'] = 'Η επαναφορά θα αντικαταστήσει αρχεία στο website. Είστε σίγουροι ότι θέλετε να κάνετε επαναφορά του Αντιγράφου Ασφαλείας?';
+$wb['download_pending_txt'] = 'Υπάρχει ήδη σε αναμονή μια εργασία μεταφόρτωσης Αντιγράφου Ασφαλείας.';
+$wb['restore_pending_txt'] = 'Υπάρχει ήδη σε αναμονή μια εργασία επαναφοράς Αντιγράφου Ασφαλείας.';
+$wb['backup_type_mysql'] = 'Βάση Δεδομένων MySQL';
+$wb['backup_type_web'] = 'Αρχεία Website';
 ?>
diff --git a/interface/web/sites/lib/lang/el_web_domain.lng b/interface/web/sites/lib/lang/el_web_domain.lng
index 6cdc3d7c5604eabbf36bfaa6f640bb8d4d0e428a..e515e59a2ec2186118477879fd3bfed101cbab38 100644
--- a/interface/web/sites/lib/lang/el_web_domain.lng
+++ b/interface/web/sites/lib/lang/el_web_domain.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['backup_interval_txt'] = 'Προγραμματισμός Backup';
+$wb['backup_interval_txt'] = 'Προγραμματισμός Αντιγράφων Ασφαλείας';
 $wb['backup_copies_txt'] = 'Πλήθος αντιγράφων';
 $wb['ssl_state_txt'] = 'Κατάσταση';
 $wb['ssl_locality_txt'] = 'Τοποθεσία';
@@ -24,11 +24,11 @@ $wb['system_group_txt'] = 'Ομάδα Linux';
 $wb['ip_address_txt'] = 'Διεύθυνση IP';
 $wb['vhost_type_txt'] = 'VHost Type';
 $wb['hd_quota_txt'] = 'Όριο αποθηκευτικού χώρου';
-$wb['traffic_quota_txt'] = 'Όριο κίνησης';
+$wb['traffic_quota_txt'] = 'Όριο μεταφοράς δεδομένων';
 $wb['cgi_txt'] = 'CGI';
 $wb['ssi_txt'] = 'SSI';
 $wb['errordocs_txt'] = 'Προσωπικά έγγραφα σφάλματος';
-$wb['subdomain_txt'] = 'Auto-Subdomain';
+$wb['subdomain_txt'] = 'Αυτόματο-Subdomain';
 $wb['ssl_txt'] = 'SSL';
 $wb['suexec_txt'] = 'SuEXEC';
 $wb['php_txt'] = 'PHP';
@@ -41,7 +41,7 @@ $wb['domain_error_empty'] = 'Το Domain δεν έχει οριστεί.';
 $wb['domain_error_unique'] = 'Υπάρχει ήδη ένα website ή ένα sub / aliasdomain με αυτό το όνομα domain.';
 $wb['domain_error_regex'] = 'Domain name invalid.';
 $wb['hd_quota_error_empty'] = 'Το όριο αποθηκευτικού χώρου είναι 0 ή δεν έχει οριστεί.';
-$wb['traffic_quota_error_empty'] = 'Το όριο κίνησης δεν έχει οριστεί.';
+$wb['traffic_quota_error_empty'] = 'Το όριο μεταφοράς δεδομένων δεν έχει οριστεί.';
 $wb['error_ssl_state_empty'] = 'Κενή περιφέρεια SSL.';
 $wb['error_ssl_locality_empty'] = 'Κενή τοποθεσία SSL.';
 $wb['error_ssl_organisation_empty'] = 'Ο Οργανισμός SSL δεν έχει οριστεί.';
@@ -57,10 +57,10 @@ $wb['ssl_locality_error_regex'] = 'Άκυρο SSL Locality. Έγκυροι χα
 $wb['ssl_organisation_error_regex'] = 'Άκυρος Οργανισμός  SSL. Έγκυροι χαρακτήρες: a-z, 0-9 and .,-_';
 $wb['ssl_organistaion_unit_error_regex'] = 'Άκυρη μονάδα οργανισμού SSL. Έγκυροι χαρακτήρες: a-z, 0-9 and .,-_';
 $wb['ssl_country_error_regex'] = 'Άκυρη Χώρα SSL. Έγκυροι χαρακτήρες: A-Z';
-$wb['limit_traffic_quota_free_txt'] = 'Όριο κίνησης';
+$wb['limit_traffic_quota_free_txt'] = 'Όριο μεταφοράς δεδομένων';
 $wb['redirect_error_regex'] = 'Μη έγκυρη διαδρομή ανακατεύθυνσης. Έγκυρες τιμές είναι: /test/ ή http://www.domain.tld/test/';
 $wb['php_open_basedir_txt'] = 'PHP open_basedir';
-$wb['traffic_quota_exceeded_txt'] = 'Ξεπεράστηκε το όριο κίνησης δεδομένων';
+$wb['traffic_quota_exceeded_txt'] = 'Ξεπεράστηκε το όριο μεταφοράς δεδομένων';
 $wb['ruby_txt'] = 'Ruby';
 $wb['stats_user_txt'] = 'Όνομα Χρήστη Στατιστικών Web';
 $wb['stats_type_txt'] = 'Πρόγραμμα Στατιστικών Web';
@@ -89,29 +89,29 @@ $wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive
 $wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers must be a positive integer value.';
 $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
 $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
-$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
-$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
+$wb['hd_quota_error_regex'] = 'Το όριο χρήσης δίσκου δεν είναι έγκυρο.';
+$wb['traffic_quota_error_regex'] = 'Το όριο μεταφοράς δεδομένων δεν είναι έγκυρο.';
 $wb['ssl_key_txt'] = 'SSL Key';
 $wb['perl_txt'] = 'Perl';
-$wb['fastcgi_php_version_txt'] = 'PHP Version';
+$wb['fastcgi_php_version_txt'] = 'Έκδοση PHP';
 $wb['pm_txt'] = 'PHP-FPM Process Manager';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
 $wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
 $wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
 $wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
-$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
-$wb['domain_error_autosub'] = 'There is already a subdomain with these settings.';
-$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
-$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
-$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
+$wb['generate_password_txt'] = 'Δημιουργία Συνθηματικού';
+$wb['repeat_password_txt'] = 'Επανάληψη Συνθηματικού';
+$wb['password_mismatch_txt'] = 'Τα Συνθηματικά δεν ταιριάζουν.';
+$wb['password_match_txt'] = 'Τα Συνθηματικά ταιριάζουν.';
+$wb['web_folder_error_regex'] = 'Εισάγατε μη έγκυρο φάκελο. Μην εισάγετε την κάθετο';
+$wb['domain_error_autosub'] = 'Υπάρχει ήδη ένα subdomain με αυτές τις ρυθμίσεις.';
+$wb['available_php_directive_snippets_txt'] = 'Διαθέσιμα PHP Directive Snippets:';
+$wb['available_apache_directive_snippets_txt'] = 'Διαθέσιμα Apache Directive Snippets:';
+$wb['available_nginx_directive_snippets_txt'] = 'Διαθέσιμα nginx Directive Snippets:';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
-$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['no_server_error'] = 'No server selected.';
+$wb['available_proxy_directive_snippets_txt'] = 'Διαθέσιμα Proxy Directive Snippets:';
+$wb['no_server_error'] = 'Δεν επιλέχθηκε server.';
 $wb['no_backup_txt'] = 'No backup';
 $wb['daily_backup_txt'] = 'Daily';
 $wb['weekly_backup_txt'] = 'Weekly';
@@ -119,4 +119,5 @@ $wb['monthly_backup_txt'] = 'Monthly';
 $wb['rewrite_rules_txt'] = 'Rewrite Rules';
 $wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
+$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
 ?>
diff --git a/interface/web/sites/lib/lang/el_web_folder_user.lng b/interface/web/sites/lib/lang/el_web_folder_user.lng
index 6835eaaaf140149538e4b2c6335b2c64b324b73a..ae898255b9e9a108b44fdd536372b2c0e1c3e028 100644
--- a/interface/web/sites/lib/lang/el_web_folder_user.lng
+++ b/interface/web/sites/lib/lang/el_web_folder_user.lng
@@ -4,10 +4,10 @@ $wb['username_txt'] = 'Όνομα Χρήστη';
 $wb['password_txt'] = 'Συνθηματικό';
 $wb['active_txt'] = 'Ενεργός';
 $wb['folder_error_empty'] = 'Δεν επιλέχθηκε φάκελος web.';
-$wb['password_strength_txt'] = 'Password strength';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
+$wb['password_strength_txt'] = 'Ισχύς Συνθηματικού';
+$wb['generate_password_txt'] = 'Δημιουργία Συνθηματικού';
+$wb['repeat_password_txt'] = 'Επανάληψη Συνθηματικού';
+$wb['password_mismatch_txt'] = 'Τα Συνθηματικά δεν ταιριάζουν.';
+$wb['password_match_txt'] = 'Τα Συνθηματικά ταιριάζουν.';
 $wb['no_folder_perm'] = 'You have no permission for this folder.';
 ?>
diff --git a/interface/web/sites/lib/lang/el_web_sites_stats_list.lng b/interface/web/sites/lib/lang/el_web_sites_stats_list.lng
index 9916646017e94839e1e27d6e193a5c55ca71f1a2..dc58324fdaa173407f1eba0b56229f107f9b1f9f 100644
--- a/interface/web/sites/lib/lang/el_web_sites_stats_list.lng
+++ b/interface/web/sites/lib/lang/el_web_sites_stats_list.lng
@@ -5,5 +5,5 @@ $wb['this_month_txt'] = 'Αυτό το μήνα';
 $wb['last_month_txt'] = 'Το τελευταίο μήνα';
 $wb['this_year_txt'] = 'Αυτό το χρόνο';
 $wb['last_year_txt'] = 'Τον τελευταίο χρόνο';
-$wb['sum_txt'] = 'Sum';
+$wb['sum_txt'] = 'Σύνολο';
 ?>
diff --git a/interface/web/sites/lib/lang/el_web_subdomain.lng b/interface/web/sites/lib/lang/el_web_subdomain.lng
index 8f5148b99d6e6764721141fb5364349e367df1f4..6183fbabb8de27dcc1c9b6fedaab90b5eae4c831 100644
--- a/interface/web/sites/lib/lang/el_web_subdomain.lng
+++ b/interface/web/sites/lib/lang/el_web_subdomain.lng
@@ -21,7 +21,7 @@ $wb['system_group_txt'] = 'Ομάδα Linux';
 $wb['ip_address_txt'] = 'Διεύθυνση IP';
 $wb['vhost_type_txt'] = 'Τύπος VHost';
 $wb['hd_quota_txt'] = 'Όριο αποθηκευτικού χώρου';
-$wb['traffic_quota_txt'] = 'Όριο κίνησης δεδομένων';
+$wb['traffic_quota_txt'] = 'Όριο μεταφοράς δεδομένων';
 $wb['cgi_txt'] = 'CGI';
 $wb['ssi_txt'] = 'SSI';
 $wb['ssl_txt'] = 'SSL';
@@ -39,8 +39,8 @@ $wb['host_txt'] = 'Host';
 $wb['redirect_error_regex'] = 'Η διαδρομή ανακατεύθυνσης δεν είναι έγκυρη. Έγκυρες διαδρομές είναι για παράδειγμα οι: /test/ ή http://www.domain.tld/test/';
 $wb['no_redirect_txt'] = 'Χωρίς Ανακατεύθυνση';
 $wb['no_flag_txt'] = 'Χωρίς Σημαία';
-$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
+$wb['domain_error_wildcard'] = 'Wildcard subdomains δεν επιτρέπονται.';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
-$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
+$wb['available_proxy_directive_snippets_txt'] = 'Διαθέσιμα Proxy Directive Snippets:';
+$wb['error_proxy_requires_url'] = 'Ο τύπος ανακατεύθυνσης \\"proxy\\" απαιτεί ένα URL ως μονοπάτι ανακατεύθυνσης.';
 ?>
diff --git a/interface/web/sites/lib/lang/el_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/el_web_vhost_subdomain.lng
index b87c788126dbd5785e1b73ac049e6f04b5ee7735..7381df6bf716073110fc94a84af85ea8ede2c936 100644
--- a/interface/web/sites/lib/lang/el_web_vhost_subdomain.lng
+++ b/interface/web/sites/lib/lang/el_web_vhost_subdomain.lng
@@ -1,15 +1,15 @@
 <?php
-$wb['parent_domain_id_txt'] = 'Parent Website';
-$wb['web_folder_txt'] = 'Web folder';
-$wb['web_folder_invalid_txt'] = 'The web folder is invalid, please choose a different one.';
-$wb['web_folder_unique_txt'] = 'The web folder is already used, please choose a different one.';
-$wb['backup_interval_txt'] = 'Backup interval';
-$wb['backup_copies_txt'] = 'Number of backup copies';
-$wb['ssl_state_txt'] = 'State';
-$wb['ssl_locality_txt'] = 'Locality';
-$wb['ssl_organisation_txt'] = 'Organisation';
-$wb['ssl_organisation_unit_txt'] = 'Organisation Unit';
-$wb['ssl_country_txt'] = 'Country';
+$wb['parent_domain_id_txt'] = 'Γονικό Website';
+$wb['web_folder_txt'] = 'Φάκελος Web';
+$wb['web_folder_invalid_txt'] = 'Ο Φάκελος Web δεν είναι έγκυρος, διαλέξτε κάποιον άλλο.';
+$wb['web_folder_unique_txt'] = 'Ο Φάκελος Web χρησιμοποιείται ήδη, διαλέξτε κάποιον άλλο.';
+$wb['backup_interval_txt'] = 'Χρονικό διάστημα Αντιγράφων Ασφαλείας';
+$wb['backup_copies_txt'] = 'Πλήθος Αντιγράφων Ασφαλείας';
+$wb['ssl_state_txt'] = 'Κατάσταση';
+$wb['ssl_locality_txt'] = 'Τοποθεσία';
+$wb['ssl_organisation_txt'] = 'Οργανισμός';
+$wb['ssl_organisation_unit_txt'] = 'Τμήμα Οργανισμού';
+$wb['ssl_country_txt'] = 'Χώρα';
 $wb['ssl_key_txt'] = 'SSL Key';
 $wb['ssl_request_txt'] = 'SSL Request';
 $wb['ssl_cert_txt'] = 'SSL Certificate';
@@ -19,72 +19,72 @@ $wb['ssl_domain_txt'] = 'SSL Domain';
 $wb['server_id_txt'] = 'Server';
 $wb['domain_txt'] = 'Domain';
 $wb['host_txt'] = 'Hostname';
-$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
-$wb['type_txt'] = 'Type';
-$wb['redirect_type_txt'] = 'Redirect Type';
-$wb['redirect_path_txt'] = 'Redirect Path';
-$wb['active_txt'] = 'Active';
+$wb['web_folder_error_regex'] = 'Εισάγατε μη έγκυρο φάκελο. Μην εισάγετε την κάθετο';
+$wb['type_txt'] = 'Τύπος';
+$wb['redirect_type_txt'] = 'Τύπος Ανακατεύθυνσης';
+$wb['redirect_path_txt'] = 'Διαδρομή Ανακατεύθυνσης';
+$wb['active_txt'] = 'Ενεργό';
 $wb['document_root_txt'] = 'Documentroot';
-$wb['system_user_txt'] = 'Linux User';
-$wb['system_group_txt'] = 'Linux Group';
-$wb['ip_address_txt'] = 'IPv4-Address';
-$wb['ipv6_address_txt'] = 'IPv6-Address';
+$wb['system_user_txt'] = 'Χρήστης Linux';
+$wb['system_group_txt'] = 'Ομάδα Linux';
+$wb['ip_address_txt'] = 'Διεύθυνση IP';
+$wb['ipv6_address_txt'] = 'Διεύθυνση IPv6';
 $wb['vhost_type_txt'] = 'VHost Type';
-$wb['hd_quota_txt'] = 'Harddisk Quota';
-$wb['traffic_quota_txt'] = 'Traffic Quota';
+$wb['hd_quota_txt'] = 'Όριο αποθηκευτικού χώρου';
+$wb['traffic_quota_txt'] = 'Όριο μεταφοράς δεδομένων';
 $wb['cgi_txt'] = 'CGI';
 $wb['ssi_txt'] = 'SSI';
-$wb['errordocs_txt'] = 'Own Error-Documents';
-$wb['subdomain_txt'] = 'Auto-Subdomain';
+$wb['errordocs_txt'] = 'Προσωπικά έγγραφα σφάλματος';
+$wb['subdomain_txt'] = 'Αυτόματο-Subdomain';
 $wb['ssl_txt'] = 'SSL';
 $wb['suexec_txt'] = 'SuEXEC';
 $wb['php_txt'] = 'PHP';
-$wb['client_txt'] = 'Client';
-$wb['limit_web_domain_txt'] = 'The max. number of web domains for your account is reached.';
-$wb['limit_web_aliasdomain_txt'] = 'The max. number of aliasdomains for your account is reached.';
-$wb['limit_web_subdomain_txt'] = 'The max. number of web subdomains for your account is reached.';
-$wb['apache_directives_txt'] = 'Apache Directives';
-$wb['domain_error_empty'] = 'Domain is empty.';
-$wb['domain_error_unique'] = 'There is already a website or sub / aliasdomain with this domain name.';
+$wb['client_txt'] = 'Πελάτης';
+$wb['limit_web_domain_txt'] = 'Έχετε φτάσει το μέγιστο πλήθος των web domains για τον λογαριασμό σας.';
+$wb['limit_web_aliasdomain_txt'] = 'Έχετε φτάσει το μέγιστο πλήθος των aliasdomains για τον λογαριασμό σας.';
+$wb['limit_web_subdomain_txt'] = 'Έχετε φτάσει το μέγιστο πλήθος των web subdomains για τον λογαριασμό σας.';
+$wb['apache_directives_txt'] = 'Apache directives';
+$wb['domain_error_empty'] = 'Το Domain δεν έχει οριστεί.';
+$wb['domain_error_unique'] = 'Υπάρχει ήδη ένα website ή ένα sub / aliasdomain με αυτό το όνομα domain.';
 $wb['domain_error_regex'] = 'Domain name invalid.';
 $wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
-$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
-$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.';
-$wb['error_ssl_state_empty'] = 'SSL State is empty.';
-$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
-$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
-$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
-$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
-$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
-$wb['client_group_id_txt'] = 'Client';
-$wb['stats_password_txt'] = 'Webstatistics password';
+$wb['hd_quota_error_empty'] = 'Το όριο αποθηκευτικού χώρου είναι 0 ή δεν έχει οριστεί.';
+$wb['traffic_quota_error_empty'] = 'Το όριο μεταφοράς δεδομένων δεν έχει οριστεί.';
+$wb['error_ssl_state_empty'] = 'Κενή περιφέρεια SSL.';
+$wb['error_ssl_locality_empty'] = 'Κενή τοποθεσία SSL.';
+$wb['error_ssl_organisation_empty'] = 'Ο Οργανισμός SSL δεν έχει οριστεί.';
+$wb['error_ssl_organisation_unit_empty'] = 'Το SSL τμήμα Οργανισμού δεν έχει οριστεί.';
+$wb['error_ssl_country_empty'] = 'Κενή χώρα SSL.';
+$wb['error_ssl_cert_empty'] = 'Το πεδίο SSL Certificate δεν έχει οριστεί';
+$wb['client_group_id_txt'] = 'Πελάτης';
+$wb['stats_password_txt'] = 'Συνθηματικο Στατιστικών Web';
 $wb['allow_override_txt'] = 'Apache AllowOverride';
-$wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota';
-$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
-$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
-$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
-$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
-$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
-$wb['limit_traffic_quota_free_txt'] = 'Max. available Traffic Quota';
-$wb['redirect_error_regex'] = 'Invalid redirect path. Valid redirects are for example: /test/ or http://www.domain.tld/test/';
+$wb['limit_web_quota_free_txt'] = 'Όριο αποθηκευτικού χώρου';
+$wb['ssl_state_error_regex'] = 'Άκυρη πολιτεία-περιφέρεια SSL. Έγκυροι χαρακτήρες: a-z, 0-9 and .,-_';
+$wb['ssl_locality_error_regex'] = 'Άκυρο SSL Locality. Έγκυροι χαρακτήρες: a-z, 0-9 and .,-_';
+$wb['ssl_organisation_error_regex'] = 'Άκυρος Οργανισμός  SSL. Έγκυροι χαρακτήρες: a-z, 0-9 and .,-_';
+$wb['ssl_organistaion_unit_error_regex'] = 'Άκυρη μονάδα οργανισμού SSL. Έγκυροι χαρακτήρες: a-z, 0-9 and .,-_';
+$wb['ssl_country_error_regex'] = 'Άκυρη Χώρα SSL. Έγκυροι χαρακτήρες: A-Z';
+$wb['limit_traffic_quota_free_txt'] = 'Όριο μεταφοράς δεδομένων';
+$wb['redirect_error_regex'] = 'Μη έγκυρη διαδρομή ανακατεύθυνσης. Έγκυρες τιμές είναι: /test/ ή http://www.domain.tld/test/';
 $wb['php_open_basedir_txt'] = 'PHP open_basedir';
-$wb['traffic_quota_exceeded_txt'] = 'Traffic quota exceeded';
+$wb['traffic_quota_exceeded_txt'] = 'Ξεπεράστηκε το όριο μεταφοράς δεδομένων';
 $wb['ruby_txt'] = 'Ruby';
-$wb['stats_user_txt'] = 'Webstatistics username';
-$wb['stats_type_txt'] = 'Webstatistics program';
-$wb['custom_php_ini_txt'] = 'Custom php.ini settings';
-$wb['none_txt'] = 'None';
-$wb['disabled_txt'] = 'Disabled';
-$wb['no_redirect_txt'] = 'No redirect';
-$wb['no_flag_txt'] = 'No flag';
-$wb['save_certificate_txt'] = 'Save certificate';
-$wb['create_certificate_txt'] = 'Create certificate';
-$wb['delete_certificate_txt'] = 'Delete certificate';
-$wb['nginx_directives_txt'] = 'nginx Directives';
-$wb['seo_redirect_txt'] = 'SEO Redirect';
+$wb['stats_user_txt'] = 'Όνομα Χρήστη Στατιστικών Web';
+$wb['stats_type_txt'] = 'Πρόγραμμα Στατιστικών Web';
+$wb['custom_php_ini_txt'] = 'Προσαρμοσμένες ρυθμίσεις php.ini';
+$wb['none_txt'] = 'Καμία';
+$wb['disabled_txt'] = 'Απενεργοπ.';
+$wb['no_redirect_txt'] = 'Χωρίς Ανακατεύθυνση';
+$wb['no_flag_txt'] = 'Χωρίς Σημαία';
+$wb['save_certificate_txt'] = 'Αποθήκευση Πιστοποιητικού';
+$wb['create_certificate_txt'] = 'Δημιουργία Πιστοποιητικού';
+$wb['delete_certificate_txt'] = 'Διαγραφή Πιστοποιητικού';
+$wb['nginx_directives_txt'] = 'Ντιρεκτίβες nginx';
+$wb['seo_redirect_txt'] = 'Ανακατεύθυνση SEO';
 $wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
 $wb['www_to_non_www_txt'] = 'www -&gt; non-www';
-$wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM';
+$wb['php_fpm_use_socket_txt'] = 'Χρήση Socket Για PHP-FPM';
 $wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
 $wb['python_txt'] = 'Python';
 $wb['perl_txt'] = 'Perl';
@@ -106,13 +106,13 @@ $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
 $wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
 $wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
 $wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
-$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
-$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
-$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
+$wb['generate_password_txt'] = 'Δημιουργία Συνθηματικού';
+$wb['repeat_password_txt'] = 'Επανάληψη Συνθηματικού';
+$wb['password_mismatch_txt'] = 'Τα Συνθηματικά δεν ταιριάζουν.';
+$wb['password_match_txt'] = 'Τα Συνθηματικά ταιριάζουν.';
+$wb['available_php_directive_snippets_txt'] = 'Διαθέσιμα PHP Directive Snippets:';
+$wb['available_apache_directive_snippets_txt'] = 'Διαθέσιμα Apache Directive Snippets:';
+$wb['available_nginx_directive_snippets_txt'] = 'Διαθέσιμα nginx Directive Snippets:';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
-$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
+$wb['available_proxy_directive_snippets_txt'] = 'Διαθέσιμα Proxy Directive Snippets:';
 ?>
diff --git a/interface/web/sites/lib/lang/el_web_vhost_subdomain_list.lng b/interface/web/sites/lib/lang/el_web_vhost_subdomain_list.lng
index 1c16bcda288f146167a5a49221951769017f580b..a4426cf3ce987eb5246773639412216a13782c87 100644
--- a/interface/web/sites/lib/lang/el_web_vhost_subdomain_list.lng
+++ b/interface/web/sites/lib/lang/el_web_vhost_subdomain_list.lng
@@ -1,8 +1,8 @@
 <?php
 $wb['list_head_txt'] = 'Subdomains';
-$wb['active_txt'] = 'Active';
+$wb['active_txt'] = 'Ενεργό';
 $wb['server_id_txt'] = 'Server';
 $wb['parent_domain_id_txt'] = 'Website';
 $wb['domain_txt'] = 'Subdomain';
-$wb['add_new_record_txt'] = 'Add new subdomain';
+$wb['add_new_record_txt'] = 'Νέο subdomain';
 ?>
diff --git a/interface/web/sites/lib/lang/el_webdav_user.lng b/interface/web/sites/lib/lang/el_webdav_user.lng
index b33b553f8fc7ab52caaf8a9f0d12bef7ab2c54e9..bf7e10f2eb1b8874b92f949aeba2b73b72cb19d4 100644
--- a/interface/web/sites/lib/lang/el_webdav_user.lng
+++ b/interface/web/sites/lib/lang/el_webdav_user.lng
@@ -4,7 +4,7 @@ $wb['server_id_txt'] = 'Server';
 $wb['parent_domain_id_txt'] = 'Website';
 $wb['username_txt'] = 'Όνομα Χρήστη';
 $wb['password_txt'] = 'Συνθηματικό';
-$wb['password_strength_txt'] = 'Δύναμη Συνθηματικού';
+$wb['password_strength_txt'] = 'Ισχύς Συνθηματικού';
 $wb['active_txt'] = 'Ενεργός';
 $wb['limit_webdav_user_txt'] = 'Έχετε φτάσει το μέγιστο πλήθος των webdav users για τον λογαριασμό σας.';
 $wb['username_error_empty'] = 'Όνομα Χρήστη δεν έχει οριστεί.';
@@ -12,10 +12,10 @@ $wb['username_error_unique'] = 'Το Όνομα Χρήστη πρέπει να 
 $wb['username_error_regex'] = 'Το Όνομα Χρήστη περιέχει μη επιτρεπόμενους χαρακτήρες.';
 $wb['directory_error_empty'] = 'Ο φάκελος δεν έχει οριστεί.';
 $wb['parent_domain_id_error_empty'] = 'Δεν επιλέχθηκε website.';
-$wb['dir_dot_error'] = 'No .. in path allowed.';
-$wb['dir_slashdot_error'] = 'No ./ in path allowed.';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
+$wb['dir_dot_error'] = 'Δεν επιτρέπονται οι .. στην διαδρομή.';
+$wb['dir_slashdot_error'] = 'Δεν επιτρέπεται το ./ στην διαδρομή.';
+$wb['generate_password_txt'] = 'Δημιουργία Συνθηματικού';
+$wb['repeat_password_txt'] = 'Επανάληψη Συνθηματικού';
+$wb['password_mismatch_txt'] = 'Τα συνθηματικά δεν ταιριάζουν.';
+$wb['password_match_txt'] = 'Τα συνθηματικά ταιριάζουν.';
 ?>
diff --git a/interface/web/sites/lib/lang/en_aps.lng b/interface/web/sites/lib/lang/en_aps.lng
index bd33c1884ae848cf3b466433810528053a34e323..e240d57873dde680d9d16a239215ba72137e633f 100644
--- a/interface/web/sites/lib/lang/en_aps.lng
+++ b/interface/web/sites/lib/lang/en_aps.lng
@@ -1,58 +1,58 @@
-<?php
-$wb['overview_txt'] = 'Overview';
-$wb['administration_txt'] = 'Administration';
-$wb['available_packages_txt'] = 'Available packages';
-$wb['installed_packages_txt'] = 'Installed packages';
-$wb['yes_txt'] = 'Yes';
-$wb['no_txt'] = 'No';
-$wb['invalid_id_txt'] = 'No valid ID has been provided.';
-$wb['details_txt'] = 'Details';
-$wb['version_txt'] = 'Version';
-$wb['category_txt'] = 'Category';
-$wb['homepage_txt'] = 'Homepage';
-$wb['supported_languages_txt'] = 'Supported languages';
-$wb['description_txt'] = 'Description';
-$wb['config_script_txt'] = 'Configuration script';
-$wb['installed_size_txt'] = 'Size after installation';
-$wb['license_txt'] = 'License';
-$wb['screenshots_txt'] = 'Screenshots';
-$wb['changelog_txt'] = 'Changelog';
-$wb['server_requirements_txt'] = 'Server requirements';
-$wb['php_extensions_txt'] = 'PHP extensions';
-$wb['php_settings_txt'] = 'PHP settings';
-$wb['supported_php_versions_txt'] = 'Supported PHP versions';
-$wb['database_txt'] = 'Database';
-$wb['settings_txt'] = 'Settings';
-$wb['install_package_txt'] = 'Install this package';
-$wb['installation_txt'] = 'Installation';
-$wb['install_location_txt'] = 'Install location';
-$wb['btn_install_txt'] = 'Install';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['acceptance_txt'] = 'Acceptance';
-$wb['acceptance_text_txt'] = 'Yes, i\'ve read the license and agree.';
-$wb['install_language_txt'] = 'Interface language';
-$wb['new_database_password_txt'] = 'New database password';
-$wb['basic_settings_txt'] = 'Basic settings';
-$wb['package_settings_txt'] = 'Package settings';
-$wb['error_main_domain'] = 'The domain of the installation path is invalid.';
-$wb['error_no_main_location'] = 'You have provided no valid installation path.';
-$wb['error_inv_main_location'] = 'The given install location folder is invalid.';
-$wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.';
-$wb['error_no_database_pw'] = 'You have provided no valid database password.';
-$wb['error_short_database_pw'] = 'Please choose a longer database password.';
-$wb['error_no_value_for'] = 'The field "%s" must not be empty.';
-$wb['error_short_value_for'] = 'The field "%s" requires a longer input value.';
-$wb['error_long_value_for'] = 'The field "%s" requires a shorter input value.';
-$wb['error_inv_value_for'] = 'You have entered an invalid value for the field "%s".';
-$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field "%s".';
-$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field "%s".';
-$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field "%s".';
-$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field "%s".';
-$wb['error_used_location'] = 'The installation path already contains a package installation.';
-$wb['installation_task_txt'] = 'Install planned';
-$wb['installation_error_txt'] = 'Install error';
-$wb['installation_success_txt'] = 'Installed';
-$wb['installation_remove_txt'] = 'Removal planned';
-$wb['packagelist_update_finished_txt'] = 'APS Packagelist update finished.';
-$wb["limit_aps_txt"] = 'The max. number of APS instances for your account is reached.';
+<?php
+$wb['overview_txt'] = 'Overview';
+$wb['administration_txt'] = 'Administration';
+$wb['available_packages_txt'] = 'Available packages';
+$wb['installed_packages_txt'] = 'Installed packages';
+$wb['yes_txt'] = 'Yes';
+$wb['no_txt'] = 'No';
+$wb['invalid_id_txt'] = 'No valid ID has been provided.';
+$wb['details_txt'] = 'Details';
+$wb['version_txt'] = 'Version';
+$wb['category_txt'] = 'Category';
+$wb['homepage_txt'] = 'Homepage';
+$wb['supported_languages_txt'] = 'Supported languages';
+$wb['description_txt'] = 'Description';
+$wb['config_script_txt'] = 'Configuration script';
+$wb['installed_size_txt'] = 'Size after installation';
+$wb['license_txt'] = 'License';
+$wb['screenshots_txt'] = 'Screenshots';
+$wb['changelog_txt'] = 'Changelog';
+$wb['server_requirements_txt'] = 'Server requirements';
+$wb['php_extensions_txt'] = 'PHP extensions';
+$wb['php_settings_txt'] = 'PHP settings';
+$wb['supported_php_versions_txt'] = 'Supported PHP versions';
+$wb['database_txt'] = 'Database';
+$wb['settings_txt'] = 'Settings';
+$wb['install_package_txt'] = 'Install this package';
+$wb['installation_txt'] = 'Installation';
+$wb['install_location_txt'] = 'Install location';
+$wb['btn_install_txt'] = 'Install';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['acceptance_txt'] = 'Acceptance';
+$wb['acceptance_text_txt'] = 'Yes, i\'ve read the license and agree.';
+$wb['install_language_txt'] = 'Interface language';
+$wb['new_database_password_txt'] = 'New database password';
+$wb['basic_settings_txt'] = 'Basic settings';
+$wb['package_settings_txt'] = 'Package settings';
+$wb['error_main_domain'] = 'The domain of the installation path is invalid.';
+$wb['error_no_main_location'] = 'You have provided no valid installation path.';
+$wb['error_inv_main_location'] = 'The given install location folder is invalid.';
+$wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.';
+$wb['error_no_database_pw'] = 'You have provided no valid database password.';
+$wb['error_short_database_pw'] = 'Please choose a longer database password.';
+$wb['error_no_value_for'] = 'The field "%s" must not be empty.';
+$wb['error_short_value_for'] = 'The field "%s" requires a longer input value.';
+$wb['error_long_value_for'] = 'The field "%s" requires a shorter input value.';
+$wb['error_inv_value_for'] = 'You have entered an invalid value for the field "%s".';
+$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field "%s".';
+$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field "%s".';
+$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field "%s".';
+$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field "%s".';
+$wb['error_used_location'] = 'The installation path already contains a package installation.';
+$wb['installation_task_txt'] = 'Install planned';
+$wb['installation_error_txt'] = 'Install error';
+$wb['installation_success_txt'] = 'Installed';
+$wb['installation_remove_txt'] = 'Removal planned';
+$wb['packagelist_update_finished_txt'] = 'APS Packagelist update finished.';
+$wb["limit_aps_txt"] = 'The max. number of APS instances for your account is reached.';
 ?>
\ No newline at end of file
diff --git a/interface/web/sites/lib/lang/en_aps_instances_list.lng b/interface/web/sites/lib/lang/en_aps_instances_list.lng
index 611c37efa63656420e4a25c5beb71d9b11c3047d..3b9c7e943ac237c34427c4e3bd1ee63e877bef8c 100644
--- a/interface/web/sites/lib/lang/en_aps_instances_list.lng
+++ b/interface/web/sites/lib/lang/en_aps_instances_list.lng
@@ -1,13 +1,13 @@
-<?php
-$wb['list_head_txt'] = 'Installed packages';
-$wb['name_txt'] = 'Name';
-$wb['version_txt'] = 'Version';
-$wb['customer_txt'] = 'Client';
-$wb['status_txt'] = 'Status';
-$wb['install_location_txt'] = 'Install location';
-$wb['pkg_delete_confirmation'] = 'Do you really want to delete this installation?';
-$wb['pkg_reinstall_confirmation'] = 'Do you really want to reinstall this package with the same settings?';
-$wb['filter_txt'] = 'Search';
-$wb['delete_txt'] = 'Delete';
-$wb['reinstall_txt'] = 'Reinstall';
+<?php
+$wb['list_head_txt'] = 'Installed packages';
+$wb['name_txt'] = 'Name';
+$wb['version_txt'] = 'Version';
+$wb['customer_txt'] = 'Client';
+$wb['status_txt'] = 'Status';
+$wb['install_location_txt'] = 'Install location';
+$wb['pkg_delete_confirmation'] = 'Do you really want to delete this installation?';
+$wb['pkg_reinstall_confirmation'] = 'Do you really want to reinstall this package with the same settings?';
+$wb['filter_txt'] = 'Search';
+$wb['delete_txt'] = 'Delete';
+$wb['reinstall_txt'] = 'Reinstall';
 ?>
\ No newline at end of file
diff --git a/interface/web/sites/lib/lang/en_aps_packages_list.lng b/interface/web/sites/lib/lang/en_aps_packages_list.lng
index ed6303a64e9176e80a8d2d6432a8cd783617682b..12cc30d023dddf9eee510f9c3545100fc158547a 100644
--- a/interface/web/sites/lib/lang/en_aps_packages_list.lng
+++ b/interface/web/sites/lib/lang/en_aps_packages_list.lng
@@ -1,8 +1,8 @@
-<?php
-$wb['list_head_txt'] = 'Available packages';
-$wb['name_txt'] = 'Name';
-$wb['version_txt'] = 'Version';
-$wb['category_txt'] = 'Category';
-$wb['status_txt'] = 'Unlocked';
-$wb['filter_txt'] = 'Search';
+<?php
+$wb['list_head_txt'] = 'Available packages';
+$wb['name_txt'] = 'Name';
+$wb['version_txt'] = 'Version';
+$wb['category_txt'] = 'Category';
+$wb['status_txt'] = 'Unlocked';
+$wb['filter_txt'] = 'Search';
 ?>
\ No newline at end of file
diff --git a/interface/web/sites/lib/lang/en_aps_update_packagelist.lng b/interface/web/sites/lib/lang/en_aps_update_packagelist.lng
index 20a7360b64d81cd90a24c3e9ba3fa8ef9d32f28c..1a40a3394f2a049f00b2f5e3fef7764579281962 100644
--- a/interface/web/sites/lib/lang/en_aps_update_packagelist.lng
+++ b/interface/web/sites/lib/lang/en_aps_update_packagelist.lng
@@ -1,7 +1,7 @@
-<?php
-$wb['head_txt'] = 'Update Packagelist';
-$wb['list_desc_txt'] = '';
-$wb['btn_start_txt'] = 'Update Packagelist';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['legend_txt'] = 'Here you can update the list of available packages. Please note that this can take up to five minutes. You can leave this page if you like; the process will continue in the background.';
+<?php
+$wb['head_txt'] = 'Update Packagelist';
+$wb['list_desc_txt'] = '';
+$wb['btn_start_txt'] = 'Update Packagelist';
+$wb['btn_cancel_txt'] = 'Cancel';
+$wb['legend_txt'] = 'Here you can update the list of available packages. Please note that this can take up to five minutes. You can leave this page if you like; the process will continue in the background.';
 ?>
\ No newline at end of file
diff --git a/interface/web/sites/lib/lang/en_database_admin_list.lng b/interface/web/sites/lib/lang/en_database_admin_list.lng
index e68d9935f37eb80920ce13b0d95915d47ed1b1ff..fdafd68aee6dd4e939cb265456a9d3f716a00a41 100644
--- a/interface/web/sites/lib/lang/en_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/en_database_admin_list.lng
@@ -2,11 +2,10 @@
 $wb["list_head_txt"] = 'Database';
 $wb["active_txt"] = 'Active';
 $wb["remote_access_txt"] = 'Remote Access';
-$wb['type_txt'] = 'Type';
 $wb["server_id_txt"] = 'Server';
 $wb["database_user_txt"] = 'Database user';
 $wb["database_name_txt"] = 'Database name';
 $wb["add_new_record_txt"] = 'Add new Database';
 $wb["sys_groupid_txt"] = 'Client';
 $wb["parent_domain_id_txt"] = 'Website';
-?>
+?>
\ No newline at end of file
diff --git a/interface/web/sites/lib/lang/en_database_list.lng b/interface/web/sites/lib/lang/en_database_list.lng
index 13bb3040334b3df973e9932d92f91c8703b232e6..e87ad2a9b79e48679f09f39f4955753fdd4b76f2 100644
--- a/interface/web/sites/lib/lang/en_database_list.lng
+++ b/interface/web/sites/lib/lang/en_database_list.lng
@@ -2,7 +2,6 @@
 $wb["list_head_txt"] = 'Database';
 $wb["active_txt"] = 'Active';
 $wb["remote_access_txt"] = 'Remote Access';
-$wb['type_txt'] = 'Type';
 $wb["server_id_txt"] = 'Server';
 $wb["database_user_txt"] = 'Database user';
 $wb["database_name_txt"] = 'Database name';
diff --git a/interface/web/sites/lib/lang/en_web_backup_list.lng b/interface/web/sites/lib/lang/en_web_backup_list.lng
index aea21f8046fae7f69629d84adc130b282c9da39d..74bcbd9b7e4217866cb84f827cbd2835b714c341 100644
--- a/interface/web/sites/lib/lang/en_web_backup_list.lng
+++ b/interface/web/sites/lib/lang/en_web_backup_list.lng
@@ -1,18 +1,16 @@
 <?php
 $wb['list_head_txt'] = 'Existing backups';
-$wb['date_txt'] = 'Date';
-$wb['backup_type_txt'] = 'Type';
-$wb['filename_txt'] = 'Backup file';
-$wb['filesize_txt'] = 'Filesize';
-$wb['restore_backup_txt'] = 'Restore';
-$wb['download_backup_txt'] = 'Download';
-$wb['download_info_txt'] = 'The backup file will be available for download in the backup folder of the website in a few minutes.';
+$wb['date_txt'] = 'Date';
+$wb['backup_type_txt'] = 'Type';
+$wb['filename_txt'] = 'Backup file';
+$wb['restore_backup_txt'] = 'Restore';
+$wb['download_backup_txt'] = 'Download';
+$wb['download_info_txt'] = 'The backup file will be available for download in the backup folder of the website in a few minutes.';
 $wb['restore_info_txt'] = 'Restore of the backup has been started. This action takes several minutes to be completed.';
 $wb['restore_confirm_txt'] = 'Restoring will overwrite existing files in your website. Do you really want to restore this backup?';
 $wb['download_pending_txt'] = 'There is already a pending backup download job.';
 $wb['restore_pending_txt'] = 'There is already a pending backup restore job.';
-$wb['backup_type_mongodb'] = 'MongoDB Database';
 $wb['backup_type_mysql'] = 'MySQL Database';
 $wb['backup_type_web'] = 'Website files';
 
-?>
+?>
\ No newline at end of file
diff --git a/interface/web/sites/lib/lang/en_web_vhost_subdomain.lng b/interface/web/sites/lib/lang/en_web_vhost_subdomain.lng
index 82a3d25ef7f489bba2fdd7bbd9fbfb120cbc8ecd..ae8873813e14ceb1839059600205fdeec857ad74 100644
--- a/interface/web/sites/lib/lang/en_web_vhost_subdomain.lng
+++ b/interface/web/sites/lib/lang/en_web_vhost_subdomain.lng
@@ -116,4 +116,8 @@ $wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Sni
 $wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
 $wb['proxy_directives_txt'] = 'Proxy Directives';
 $wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
+$wb['rewrite_rules_txt'] = 'Rewrite Rules';
+$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
+$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
+$wb['configuration_error_txt'] = "CONFIGURATION ERROR";
 ?>
\ No newline at end of file
diff --git a/interface/web/sites/lib/lang/es_database_admin_list.lng b/interface/web/sites/lib/lang/es_database_admin_list.lng
index 511a4572adff8fe052d592f5cd9f5d1199388d2a..b6f4cb33656cf09ea18c2eecdb285cd5cb47b064 100644
--- a/interface/web/sites/lib/lang/es_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/es_database_admin_list.lng
@@ -7,4 +7,5 @@ $wb['database_user_txt'] = 'Usuario Base de Datos';
 $wb['database_name_txt'] = 'Nombre Base de Datos';
 $wb['add_new_record_txt'] = 'Añadir nueva Base de Datos';
 $wb['sys_groupid_txt'] = 'Cliente';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/es_database_list.lng b/interface/web/sites/lib/lang/es_database_list.lng
index 19bb11034ca82596f483e33a6b6f79e959111298..157cdd52b71be8d160e8cc95a11c7cada2fbce93 100644
--- a/interface/web/sites/lib/lang/es_database_list.lng
+++ b/interface/web/sites/lib/lang/es_database_list.lng
@@ -6,4 +6,5 @@ $wb['server_id_txt'] = 'Servidor';
 $wb['database_name_txt'] = 'Nombre de la base de datos';
 $wb['add_new_record_txt'] = 'Añadir nueva base de datos';
 $wb['database_user_txt'] = 'Usuario de Basos Datos';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/es_web_domain.lng b/interface/web/sites/lib/lang/es_web_domain.lng
index b3f466018e8823a883041e79b982a4fb8c3c7e53..37695c57e9854ec0853c916e69a613ff287c7b03 100644
--- a/interface/web/sites/lib/lang/es_web_domain.lng
+++ b/interface/web/sites/lib/lang/es_web_domain.lng
@@ -119,4 +119,5 @@ $wb['monthly_backup_txt'] = 'Monthly';
 $wb['rewrite_rules_txt'] = 'Rewrite Rules';
 $wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
+$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
 ?>
diff --git a/interface/web/sites/lib/lang/fi_database_admin_list.lng b/interface/web/sites/lib/lang/fi_database_admin_list.lng
index 3f05f65e629d07383ca16240e6ae6b862a30658d..27e62b9ac6382ef7aa436ebafbbf39c9e5df8fb5 100644
--- a/interface/web/sites/lib/lang/fi_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/fi_database_admin_list.lng
@@ -7,4 +7,5 @@ $wb['database_user_txt'] = 'Database user';
 $wb['database_name_txt'] = 'Database name';
 $wb['add_new_record_txt'] = 'Add new Database';
 $wb['sys_groupid_txt'] = 'Client';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/fi_database_list.lng b/interface/web/sites/lib/lang/fi_database_list.lng
index 2ce0989e5580e4922072bc2f26b7dd9583aa1baa..cf5e75ceca2b435032a54cc2bdf9da27e03fe5af 100755
--- a/interface/web/sites/lib/lang/fi_database_list.lng
+++ b/interface/web/sites/lib/lang/fi_database_list.lng
@@ -6,4 +6,5 @@ $wb['server_id_txt'] = 'Palvelin';
 $wb['database_name_txt'] = 'Tietokannnan nimi';
 $wb['add_new_record_txt'] = 'Lisää uusi tietokanta';
 $wb['database_user_txt'] = 'Tietokannan käyttäjä';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/fi_web_domain.lng b/interface/web/sites/lib/lang/fi_web_domain.lng
index 1c4055aa1d25ca25a02ff9fc70668f765ab98d70..b910463e71c9c99458a1529a6d86782811e901e5 100755
--- a/interface/web/sites/lib/lang/fi_web_domain.lng
+++ b/interface/web/sites/lib/lang/fi_web_domain.lng
@@ -119,4 +119,5 @@ $wb['monthly_backup_txt'] = 'Monthly';
 $wb['rewrite_rules_txt'] = 'Rewrite Rules';
 $wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
+$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
 ?>
diff --git a/interface/web/sites/lib/lang/fr_database_admin_list.lng b/interface/web/sites/lib/lang/fr_database_admin_list.lng
index d6be240fd721d8f7937e8cf52360cbd0d7424378..651aa20fd137c84fefb7a62c38f2400d9c22afd9 100644
--- a/interface/web/sites/lib/lang/fr_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/fr_database_admin_list.lng
@@ -7,4 +7,5 @@ $wb['database_user_txt'] = 'Utilisateur de la base de données';
 $wb['database_name_txt'] = 'Nom de la base de données';
 $wb['add_new_record_txt'] = 'Ajouter une base de données';
 $wb['sys_groupid_txt'] = 'Client';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/fr_database_list.lng b/interface/web/sites/lib/lang/fr_database_list.lng
index b530a6e5af22d868dc1492e82f287b36281a54b7..3ff3eac31f62ade22dad2ab9ea9084fa099cc776 100644
--- a/interface/web/sites/lib/lang/fr_database_list.lng
+++ b/interface/web/sites/lib/lang/fr_database_list.lng
@@ -6,4 +6,5 @@ $wb['server_id_txt'] = 'Serveur';
 $wb['database_name_txt'] = 'Nom de la base';
 $wb['add_new_record_txt'] = 'Nouvelle base de données';
 $wb['database_user_txt'] = 'Utilisateur BDD';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/fr_web_domain.lng b/interface/web/sites/lib/lang/fr_web_domain.lng
index d96e6ad75f64da3073fb48b34b63b815dd68ab8d..10c52ee8930ed84b0814266d77ff17fa5249fe24 100644
--- a/interface/web/sites/lib/lang/fr_web_domain.lng
+++ b/interface/web/sites/lib/lang/fr_web_domain.lng
@@ -119,4 +119,5 @@ $wb['monthly_backup_txt'] = 'Monthly';
 $wb['rewrite_rules_txt'] = 'Rewrite Rules';
 $wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
+$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
 ?>
diff --git a/interface/web/sites/lib/lang/hr_database_admin_list.lng b/interface/web/sites/lib/lang/hr_database_admin_list.lng
index aee31601c6ef41e5664efd806993fa35a881208c..19c99568b5a90f92137114f2c0474542ae929144 100644
--- a/interface/web/sites/lib/lang/hr_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/hr_database_admin_list.lng
@@ -7,4 +7,5 @@ $wb['database_user_txt'] = 'Korisnik baze';
 $wb['database_name_txt'] = 'Naziv baze';
 $wb['add_new_record_txt'] = 'Dodaj bazu';
 $wb['sys_groupid_txt'] = 'Klijent';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/hr_database_list.lng b/interface/web/sites/lib/lang/hr_database_list.lng
index dcfe205ff29b4a3ef47da140838c198bf28655f3..baec9d4cd0305600587a55dc9c6d83e30de17723 100644
--- a/interface/web/sites/lib/lang/hr_database_list.lng
+++ b/interface/web/sites/lib/lang/hr_database_list.lng
@@ -6,4 +6,5 @@ $wb['server_id_txt'] = 'Server';
 $wb['database_user_txt'] = 'Korisnik baze';
 $wb['database_name_txt'] = 'Naziv baze';
 $wb['add_new_record_txt'] = 'Dodaj bazu';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/hr_web_domain.lng b/interface/web/sites/lib/lang/hr_web_domain.lng
index 8c47934df7809144e4e7d94c1696dcc7a0c96dd9..b14d67a24808e326a374eeee658e05c024898b95 100644
--- a/interface/web/sites/lib/lang/hr_web_domain.lng
+++ b/interface/web/sites/lib/lang/hr_web_domain.lng
@@ -119,4 +119,5 @@ $wb['monthly_backup_txt'] = 'Monthly';
 $wb['rewrite_rules_txt'] = 'Rewrite Rules';
 $wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
+$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
 ?>
diff --git a/interface/web/sites/lib/lang/hu_database_admin_list.lng b/interface/web/sites/lib/lang/hu_database_admin_list.lng
index 77f27e80dd0a564ee3f9714465390b76d12d4c3f..d844905c1a432fb4cba289cc7116925b1a8d74c0 100644
--- a/interface/web/sites/lib/lang/hu_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/hu_database_admin_list.lng
@@ -7,4 +7,5 @@ $wb['database_user_txt'] = 'Felhasználó';
 $wb['database_name_txt'] = 'Adatbázis';
 $wb['add_new_record_txt'] = 'Új adatbázis';
 $wb['sys_groupid_txt'] = 'Ügyfél';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/hu_database_list.lng b/interface/web/sites/lib/lang/hu_database_list.lng
index bafb54867d04cae0cb6d6f9449777e0c07581eed..db4bd2b8aa72c0ae1be4ecc99824b33de313135d 100644
--- a/interface/web/sites/lib/lang/hu_database_list.lng
+++ b/interface/web/sites/lib/lang/hu_database_list.lng
@@ -6,4 +6,5 @@ $wb['server_id_txt'] = 'Szerver';
 $wb['database_name_txt'] = 'Adatbázis neve';
 $wb['add_new_record_txt'] = 'Új adatbázis';
 $wb['database_user_txt'] = 'Adatbázis Felhasználó';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/hu_web_domain.lng b/interface/web/sites/lib/lang/hu_web_domain.lng
index 0060787254dd79c0963ed2619cccda8a94d11896..0e53fae4d02fb7bfc152c2058f9be716734d0ca9 100644
--- a/interface/web/sites/lib/lang/hu_web_domain.lng
+++ b/interface/web/sites/lib/lang/hu_web_domain.lng
@@ -119,4 +119,5 @@ $wb['monthly_backup_txt'] = 'Monthly';
 $wb['rewrite_rules_txt'] = 'Rewrite Rules';
 $wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
+$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
 ?>
diff --git a/interface/web/sites/lib/lang/id_database_admin_list.lng b/interface/web/sites/lib/lang/id_database_admin_list.lng
index 782e4e4272c578c771d8fd0cb8b1e95a7cf7e571..6f81d66858e6e53f1d31d56cd11668ade976731e 100644
--- a/interface/web/sites/lib/lang/id_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/id_database_admin_list.lng
@@ -7,4 +7,5 @@ $wb['database_user_txt'] = 'Pengguna Database';
 $wb['database_name_txt'] = 'Nama Database';
 $wb['add_new_record_txt'] = 'Tambah Database Baru';
 $wb['sys_groupid_txt'] = 'Klien';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/id_database_list.lng b/interface/web/sites/lib/lang/id_database_list.lng
index 9b44571f641164096d948862bb2ae1b51821080c..1221632978f57dad5434f76bbea44337dd641702 100644
--- a/interface/web/sites/lib/lang/id_database_list.lng
+++ b/interface/web/sites/lib/lang/id_database_list.lng
@@ -6,4 +6,5 @@ $wb['server_id_txt'] = 'Server';
 $wb['database_user_txt'] = 'Pengguna Database';
 $wb['database_name_txt'] = 'Nama Database';
 $wb['add_new_record_txt'] = 'Tambah Database Baru';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/id_web_domain.lng b/interface/web/sites/lib/lang/id_web_domain.lng
index 5bcfb28baa2522a28f2ac4c87a11acf873e3bdea..0d240c93f5a77e1fc957417b8dca69d1ebec81f7 100644
--- a/interface/web/sites/lib/lang/id_web_domain.lng
+++ b/interface/web/sites/lib/lang/id_web_domain.lng
@@ -119,4 +119,5 @@ $wb['monthly_backup_txt'] = 'Monthly';
 $wb['rewrite_rules_txt'] = 'Rewrite Rules';
 $wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
+$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
 ?>
diff --git a/interface/web/sites/lib/lang/it_database_admin_list.lng b/interface/web/sites/lib/lang/it_database_admin_list.lng
index 3f05f65e629d07383ca16240e6ae6b862a30658d..27e62b9ac6382ef7aa436ebafbbf39c9e5df8fb5 100644
--- a/interface/web/sites/lib/lang/it_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/it_database_admin_list.lng
@@ -7,4 +7,5 @@ $wb['database_user_txt'] = 'Database user';
 $wb['database_name_txt'] = 'Database name';
 $wb['add_new_record_txt'] = 'Add new Database';
 $wb['sys_groupid_txt'] = 'Client';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/it_database_list.lng b/interface/web/sites/lib/lang/it_database_list.lng
index 0ce261e5ae1019ee8a6101b107dc08948f9b534e..7e66ceb09b77c886bb80b6660a78992189da10e5 100644
--- a/interface/web/sites/lib/lang/it_database_list.lng
+++ b/interface/web/sites/lib/lang/it_database_list.lng
@@ -6,4 +6,5 @@ $wb['server_id_txt'] = 'Server';
 $wb['database_name_txt'] = 'Nome Database';
 $wb['add_new_record_txt'] = 'Aggiungi nuovo Database';
 $wb['database_user_txt'] = 'Database user';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/it_web_domain.lng b/interface/web/sites/lib/lang/it_web_domain.lng
index d605e88dfb209d7f821bd31bd8cf36cd79ca5924..eb606872428ac19541a95b0b9da8488ffb61f536 100644
--- a/interface/web/sites/lib/lang/it_web_domain.lng
+++ b/interface/web/sites/lib/lang/it_web_domain.lng
@@ -119,4 +119,5 @@ $wb['monthly_backup_txt'] = 'Monthly';
 $wb['rewrite_rules_txt'] = 'Rewrite Rules';
 $wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
+$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
 ?>
diff --git a/interface/web/sites/lib/lang/ja_database_admin_list.lng b/interface/web/sites/lib/lang/ja_database_admin_list.lng
index 3f05f65e629d07383ca16240e6ae6b862a30658d..27e62b9ac6382ef7aa436ebafbbf39c9e5df8fb5 100644
--- a/interface/web/sites/lib/lang/ja_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/ja_database_admin_list.lng
@@ -7,4 +7,5 @@ $wb['database_user_txt'] = 'Database user';
 $wb['database_name_txt'] = 'Database name';
 $wb['add_new_record_txt'] = 'Add new Database';
 $wb['sys_groupid_txt'] = 'Client';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/ja_database_list.lng b/interface/web/sites/lib/lang/ja_database_list.lng
index 9a0ad45c718e6bbb82d257b4650b40d478a8e72e..afbda1b528fc12e46c2d2f4d17c61b012420a1fd 100644
--- a/interface/web/sites/lib/lang/ja_database_list.lng
+++ b/interface/web/sites/lib/lang/ja_database_list.lng
@@ -6,4 +6,5 @@ $wb['server_id_txt'] = 'サーバー';
 $wb['database_name_txt'] = 'データベース名';
 $wb['add_new_record_txt'] = 'データベースを追加する';
 $wb['database_user_txt'] = 'Database user';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/ja_web_domain.lng b/interface/web/sites/lib/lang/ja_web_domain.lng
index a6dbbf6dcc342ef0eb345c88526ba7dab9064770..e0402c01c360e6739c72cadc876c838030c4c7a6 100644
--- a/interface/web/sites/lib/lang/ja_web_domain.lng
+++ b/interface/web/sites/lib/lang/ja_web_domain.lng
@@ -119,4 +119,5 @@ $wb['monthly_backup_txt'] = 'Monthly';
 $wb['rewrite_rules_txt'] = 'Rewrite Rules';
 $wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
+$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
 ?>
diff --git a/interface/web/sites/lib/lang/nl_database_admin_list.lng b/interface/web/sites/lib/lang/nl_database_admin_list.lng
index 3ad586efd36e51445dbaf2b53eb9117ce7227edd..e49d8826589086798564ce412cdb6140c4925e7c 100644
--- a/interface/web/sites/lib/lang/nl_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/nl_database_admin_list.lng
@@ -7,4 +7,5 @@ $wb['database_user_txt'] = 'Database gebruiker';
 $wb['database_name_txt'] = 'Database naam';
 $wb['add_new_record_txt'] = 'Toevoegen nieuwe database';
 $wb['sys_groupid_txt'] = 'Klant';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/nl_database_list.lng b/interface/web/sites/lib/lang/nl_database_list.lng
index aa6dc3cdc7e1e9fb9d3a15fe7f96602726a296ea..c2af6476a1f56784130e4af38ed78f5fd55170ac 100644
--- a/interface/web/sites/lib/lang/nl_database_list.lng
+++ b/interface/web/sites/lib/lang/nl_database_list.lng
@@ -6,4 +6,5 @@ $wb['server_id_txt'] = 'Server';
 $wb['database_user_txt'] = 'Database gebruiker';
 $wb['database_name_txt'] = 'Database naam';
 $wb['add_new_record_txt'] = 'Toevoegen nieuwe database';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/nl_web_domain.lng b/interface/web/sites/lib/lang/nl_web_domain.lng
index e2bb5cbeab544e9135cecb522d594469cb5bbfd0..2d357819c0e9986e7fd7b33e570bec35ad2f325b 100644
--- a/interface/web/sites/lib/lang/nl_web_domain.lng
+++ b/interface/web/sites/lib/lang/nl_web_domain.lng
@@ -119,4 +119,5 @@ $wb['monthly_backup_txt'] = 'Monthly';
 $wb['rewrite_rules_txt'] = 'Rewrite Rules';
 $wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
+$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
 ?>
diff --git a/interface/web/sites/lib/lang/pl_database_admin_list.lng b/interface/web/sites/lib/lang/pl_database_admin_list.lng
index 5785a779fd62ae8bb1ad2f0a2489fc4a3e935bab..4795a90ecbdc01fc844c8fce90c2eba2af34988b 100644
--- a/interface/web/sites/lib/lang/pl_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/pl_database_admin_list.lng
@@ -7,4 +7,5 @@ $wb['database_user_txt'] = 'Nazwa użytkownika bazy';
 $wb['database_name_txt'] = 'Nazwa bazy danych';
 $wb['add_new_record_txt'] = 'Dodaj nowÄ… bazÄ™ danych';
 $wb['sys_groupid_txt'] = 'Klient';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/pl_database_list.lng b/interface/web/sites/lib/lang/pl_database_list.lng
index 2162a15a21a0b3991abcc991934ed341339aeeeb..60e1ecff23f9cfde6082d0e3cdba1de7d2dfad17 100644
--- a/interface/web/sites/lib/lang/pl_database_list.lng
+++ b/interface/web/sites/lib/lang/pl_database_list.lng
@@ -6,4 +6,5 @@ $wb['server_id_txt'] = 'Serwer';
 $wb['database_name_txt'] = 'Nazwa bazy danych';
 $wb['add_new_record_txt'] = 'Dodaj nowÄ… bazÄ™ danych';
 $wb['database_user_txt'] = 'Użytkownik bazy danych';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/pl_web_domain.lng b/interface/web/sites/lib/lang/pl_web_domain.lng
index c08113e9e639fd9bdaa22f0fd601b4ae1fc0f698..ae5c3e1cd3fd1e840521bfeb1aa42952f78ec224 100644
--- a/interface/web/sites/lib/lang/pl_web_domain.lng
+++ b/interface/web/sites/lib/lang/pl_web_domain.lng
@@ -119,4 +119,5 @@ $wb['monthly_backup_txt'] = 'Monthly';
 $wb['rewrite_rules_txt'] = 'Rewrite Rules';
 $wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
+$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
 ?>
diff --git a/interface/web/sites/lib/lang/pt_database_admin_list.lng b/interface/web/sites/lib/lang/pt_database_admin_list.lng
index 3f05f65e629d07383ca16240e6ae6b862a30658d..27e62b9ac6382ef7aa436ebafbbf39c9e5df8fb5 100644
--- a/interface/web/sites/lib/lang/pt_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/pt_database_admin_list.lng
@@ -7,4 +7,5 @@ $wb['database_user_txt'] = 'Database user';
 $wb['database_name_txt'] = 'Database name';
 $wb['add_new_record_txt'] = 'Add new Database';
 $wb['sys_groupid_txt'] = 'Client';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/pt_database_list.lng b/interface/web/sites/lib/lang/pt_database_list.lng
index 40e888b8ae3cd132bc983c8b21cf05b616d371d2..9e886921d0db5b8eea4390f4cfc40f4180413c04 100644
--- a/interface/web/sites/lib/lang/pt_database_list.lng
+++ b/interface/web/sites/lib/lang/pt_database_list.lng
@@ -6,4 +6,5 @@ $wb['server_id_txt'] = 'Servidor';
 $wb['database_name_txt'] = 'Nome da Base de Dados';
 $wb['add_new_record_txt'] = 'Adicionar uma nova base de dados';
 $wb['database_user_txt'] = 'Database user';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/pt_web_domain.lng b/interface/web/sites/lib/lang/pt_web_domain.lng
index 787e1c71dabae7e4db005a5dce8246c9e6ea1877..e7f3fd2fb098a858146037bd90ccbeebf744a08e 100644
--- a/interface/web/sites/lib/lang/pt_web_domain.lng
+++ b/interface/web/sites/lib/lang/pt_web_domain.lng
@@ -119,4 +119,5 @@ $wb['monthly_backup_txt'] = 'Monthly';
 $wb['rewrite_rules_txt'] = 'Rewrite Rules';
 $wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
+$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
 ?>
diff --git a/interface/web/sites/lib/lang/ro_database_admin_list.lng b/interface/web/sites/lib/lang/ro_database_admin_list.lng
index 3f05f65e629d07383ca16240e6ae6b862a30658d..27e62b9ac6382ef7aa436ebafbbf39c9e5df8fb5 100644
--- a/interface/web/sites/lib/lang/ro_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/ro_database_admin_list.lng
@@ -7,4 +7,5 @@ $wb['database_user_txt'] = 'Database user';
 $wb['database_name_txt'] = 'Database name';
 $wb['add_new_record_txt'] = 'Add new Database';
 $wb['sys_groupid_txt'] = 'Client';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/ro_database_list.lng b/interface/web/sites/lib/lang/ro_database_list.lng
index 6e1597f1e8ec758daab1f83fb098d612f1f84057..3b835ce3d5aebed8a0f198a7ef25110730a12c77 100644
--- a/interface/web/sites/lib/lang/ro_database_list.lng
+++ b/interface/web/sites/lib/lang/ro_database_list.lng
@@ -6,4 +6,5 @@ $wb['server_id_txt'] = 'Server';
 $wb['database_name_txt'] = 'Database name';
 $wb['add_new_record_txt'] = 'Adauga Database';
 $wb['database_user_txt'] = 'Database user';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/ro_web_domain.lng b/interface/web/sites/lib/lang/ro_web_domain.lng
index 31e0112ee67d2f691887f5e0f1ca5fe58bc79097..4ff6a0d186eb696dc8449ee27e84871f02b836f8 100644
--- a/interface/web/sites/lib/lang/ro_web_domain.lng
+++ b/interface/web/sites/lib/lang/ro_web_domain.lng
@@ -119,4 +119,5 @@ $wb['monthly_backup_txt'] = 'Monthly';
 $wb['rewrite_rules_txt'] = 'Rewrite Rules';
 $wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
+$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
 ?>
diff --git a/interface/web/sites/lib/lang/ru_database_admin_list.lng b/interface/web/sites/lib/lang/ru_database_admin_list.lng
index 3f05f65e629d07383ca16240e6ae6b862a30658d..27e62b9ac6382ef7aa436ebafbbf39c9e5df8fb5 100644
--- a/interface/web/sites/lib/lang/ru_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/ru_database_admin_list.lng
@@ -7,4 +7,5 @@ $wb['database_user_txt'] = 'Database user';
 $wb['database_name_txt'] = 'Database name';
 $wb['add_new_record_txt'] = 'Add new Database';
 $wb['sys_groupid_txt'] = 'Client';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/ru_database_list.lng b/interface/web/sites/lib/lang/ru_database_list.lng
index 0d737de5c675a90739b3d1333c866dde76dcd784..4647c0c15845c6622debf64720eca8de5b9685ef 100644
--- a/interface/web/sites/lib/lang/ru_database_list.lng
+++ b/interface/web/sites/lib/lang/ru_database_list.lng
@@ -6,4 +6,5 @@ $wb['server_id_txt'] = 'Сервер';
 $wb['database_name_txt'] = 'Имя БД';
 $wb['add_new_record_txt'] = 'Добавить новую БД';
 $wb['database_user_txt'] = 'Database user';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/ru_web_domain.lng b/interface/web/sites/lib/lang/ru_web_domain.lng
index 5f6aafdc3356b9a54ddcf5262afa0c6956638837..964d9f488b7335de8cf1b57d5f66026150cd962d 100644
--- a/interface/web/sites/lib/lang/ru_web_domain.lng
+++ b/interface/web/sites/lib/lang/ru_web_domain.lng
@@ -119,4 +119,5 @@ $wb['monthly_backup_txt'] = 'Monthly';
 $wb['rewrite_rules_txt'] = 'Rewrite Rules';
 $wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
+$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
 ?>
diff --git a/interface/web/sites/lib/lang/se_database_admin_list.lng b/interface/web/sites/lib/lang/se_database_admin_list.lng
index 3f05f65e629d07383ca16240e6ae6b862a30658d..27e62b9ac6382ef7aa436ebafbbf39c9e5df8fb5 100644
--- a/interface/web/sites/lib/lang/se_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/se_database_admin_list.lng
@@ -7,4 +7,5 @@ $wb['database_user_txt'] = 'Database user';
 $wb['database_name_txt'] = 'Database name';
 $wb['add_new_record_txt'] = 'Add new Database';
 $wb['sys_groupid_txt'] = 'Client';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/se_database_list.lng b/interface/web/sites/lib/lang/se_database_list.lng
index 59f563d011edf0b4a8ed1c39e47f750042a865b4..b05ba127abf2a9235eda96e3216ddffb034b76d0 100644
--- a/interface/web/sites/lib/lang/se_database_list.lng
+++ b/interface/web/sites/lib/lang/se_database_list.lng
@@ -6,4 +6,5 @@ $wb['server_id_txt'] = 'Server';
 $wb['database_name_txt'] = 'Database name';
 $wb['add_new_record_txt'] = 'Add new Database';
 $wb['database_user_txt'] = 'Database user';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/se_web_domain.lng b/interface/web/sites/lib/lang/se_web_domain.lng
index 3e309ed5d16750ce4da0afeebfa7d2922e7716ea..2d9e432374ae7815c587adeea09e599506e1a2fb 100644
--- a/interface/web/sites/lib/lang/se_web_domain.lng
+++ b/interface/web/sites/lib/lang/se_web_domain.lng
@@ -119,4 +119,5 @@ $wb['monthly_backup_txt'] = 'Monthly';
 $wb['rewrite_rules_txt'] = 'Rewrite Rules';
 $wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
+$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
 ?>
diff --git a/interface/web/sites/lib/lang/sk_database_admin_list.lng b/interface/web/sites/lib/lang/sk_database_admin_list.lng
index 3f05f65e629d07383ca16240e6ae6b862a30658d..27e62b9ac6382ef7aa436ebafbbf39c9e5df8fb5 100644
--- a/interface/web/sites/lib/lang/sk_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/sk_database_admin_list.lng
@@ -7,4 +7,5 @@ $wb['database_user_txt'] = 'Database user';
 $wb['database_name_txt'] = 'Database name';
 $wb['add_new_record_txt'] = 'Add new Database';
 $wb['sys_groupid_txt'] = 'Client';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/sk_database_list.lng b/interface/web/sites/lib/lang/sk_database_list.lng
index f8acec2b7e308acdfae0623d843e91f03f4965df..98422c41f707dacde0f129f713231623bc8fee31 100644
--- a/interface/web/sites/lib/lang/sk_database_list.lng
+++ b/interface/web/sites/lib/lang/sk_database_list.lng
@@ -6,4 +6,5 @@ $wb['server_id_txt'] = 'Server';
 $wb['database_name_txt'] = 'Meno databáza';
 $wb['add_new_record_txt'] = 'Pridať novú databázu';
 $wb['database_user_txt'] = 'Database user';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/sk_web_domain.lng b/interface/web/sites/lib/lang/sk_web_domain.lng
index 952216fe80ca17f7cbc03f3b53f88eac4c3017e7..40b00bde65132897f7a80e9c19cf1dfd7713a2a3 100644
--- a/interface/web/sites/lib/lang/sk_web_domain.lng
+++ b/interface/web/sites/lib/lang/sk_web_domain.lng
@@ -119,4 +119,5 @@ $wb['monthly_backup_txt'] = 'Monthly';
 $wb['rewrite_rules_txt'] = 'Rewrite Rules';
 $wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
+$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_database_admin_list.lng b/interface/web/sites/lib/lang/tr_database_admin_list.lng
index 3f05f65e629d07383ca16240e6ae6b862a30658d..27e62b9ac6382ef7aa436ebafbbf39c9e5df8fb5 100644
--- a/interface/web/sites/lib/lang/tr_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/tr_database_admin_list.lng
@@ -7,4 +7,5 @@ $wb['database_user_txt'] = 'Database user';
 $wb['database_name_txt'] = 'Database name';
 $wb['add_new_record_txt'] = 'Add new Database';
 $wb['sys_groupid_txt'] = 'Client';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_database_list.lng b/interface/web/sites/lib/lang/tr_database_list.lng
index 5e9d258c8b2fe75147a2c9f4061e5befcf14b672..c3b3eb49ef4e955a51d8b56f26a81bec208e20db 100644
--- a/interface/web/sites/lib/lang/tr_database_list.lng
+++ b/interface/web/sites/lib/lang/tr_database_list.lng
@@ -6,4 +6,5 @@ $wb['server_id_txt'] = 'Sunucu';
 $wb['database_name_txt'] = 'Veritabanı adı';
 $wb['add_new_record_txt'] = 'Yeni Veritabanı';
 $wb['database_user_txt'] = 'Database user';
+$wb['parent_domain_id_txt'] = 'Website';
 ?>
diff --git a/interface/web/sites/lib/lang/tr_web_domain.lng b/interface/web/sites/lib/lang/tr_web_domain.lng
index 23a5374b0aa07a351891f21d57e4a782887d287b..1b330059e93074d10204ee797c7ecbe55775afc3 100644
--- a/interface/web/sites/lib/lang/tr_web_domain.lng
+++ b/interface/web/sites/lib/lang/tr_web_domain.lng
@@ -119,4 +119,5 @@ $wb['monthly_backup_txt'] = 'Monthly';
 $wb['rewrite_rules_txt'] = 'Rewrite Rules';
 $wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
 $wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
+$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
 ?>
diff --git a/interface/web/sites/list/aps_availablepackages.list.php b/interface/web/sites/list/aps_availablepackages.list.php
index b6f52cff8295b8c325106108f7048a5aff4337b1..d07b85a4fe1d4a50c290e92b539333e04159ab0d 100644
--- a/interface/web/sites/list/aps_availablepackages.list.php
+++ b/interface/web/sites/list/aps_availablepackages.list.php
@@ -1,86 +1,86 @@
-<?php
-/*
-Copyright (c) 2012, ISPConfig UG
-Contributors: web wack creations,  http://www.web-wack.at
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of ISPConfig nor the names of its contributors
-      may be used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-$liste['name'] = 'aps_packages'; // Name of the list
-$liste['table'] = 'aps_packages'; // Database table
-$liste['table_idx'] = 'id'; // Table index
-$liste["search_prefix"] = 'search_'; // Search field prefix
-$liste['records_per_page'] = 15; // Records per page
-$liste['file'] = 'aps_availablepackages_list.php'; // Script file for this list
-$liste['edit_file']    = ''; // Script file to edit
-$liste['delete_file'] = ''; // Script file to delete
-$liste['paging_tpl'] = 'templates/paging.tpl.htm'; // Paging template
-$liste['auth'] = 'no'; // Handling it myself (check for admin)
-
-// Search fields
-$liste["item"][] = array('field'    => 'name',
-                         'datatype' => 'VARCHAR',
-                         'formtype' => 'TEXT',
-                         'op'       => 'like',
-                         'prefix'   => '%',
-                         'suffix'   => '%',
-                         'width'    => '',
-                         'value'    => '');
-
-$liste["item"][] = array('field'    => 'version',
-                         'datatype' => 'VARCHAR',
-                         'formtype' => 'TEXT',
-                         'op'       => 'like',
-                         'prefix'   => '%',
-                         'suffix'   => '%',
-                         'width'    => '',
-                         'value'    => '');
-
-$liste["item"][] = array('field'    => 'category',
-                         'datatype' => 'VARCHAR',
-                         'formtype' => 'SELECT',
-                         'op'       => '=',
-                         'prefix'   => '',
-                         'suffix'   => '',
-                         'datasource' => array('type' => 'SQL',
-                                               'querystring' => 'SELECT category FROM aps_packages ORDER BY category',
-                                               'keyfield' => 'category',
-                                               'valuefield' => 'category'),
-                         'width'    => '',
-                         'value'    => '');
-
-if($_SESSION['s']['user']['typ'] == 'admin') 
-{
-$liste['item'][] = array('field'    => 'package_status',
-                         'datatype' => 'VARCHAR',
-                         'formtype' => 'SELECT',
-                         'op'       => '=',
-                         'prefix'   => '',
-                         'suffix'   => '',
-                         'width'    => '',
-                         'value'    => array(PACKAGE_ENABLED => '<div class="swap" id="ir-Yes"><span>'.$app->lng('Yes').'</span></div>',
-                                             PACKAGE_LOCKED => '<div class="swap" id="ir-No"><span>'.$app->lng('No').'</span></div>'));
-}      
+<?php
+/*
+Copyright (c) 2012, ISPConfig UG
+Contributors: web wack creations,  http://www.web-wack.at
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of ISPConfig nor the names of its contributors
+      may be used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+$liste['name'] = 'aps_packages'; // Name of the list
+$liste['table'] = 'aps_packages'; // Database table
+$liste['table_idx'] = 'id'; // Table index
+$liste["search_prefix"] = 'search_'; // Search field prefix
+$liste['records_per_page'] = 15; // Records per page
+$liste['file'] = 'aps_availablepackages_list.php'; // Script file for this list
+$liste['edit_file']    = ''; // Script file to edit
+$liste['delete_file'] = ''; // Script file to delete
+$liste['paging_tpl'] = 'templates/paging.tpl.htm'; // Paging template
+$liste['auth'] = 'no'; // Handling it myself (check for admin)
+
+// Search fields
+$liste["item"][] = array('field'    => 'name',
+                         'datatype' => 'VARCHAR',
+                         'formtype' => 'TEXT',
+                         'op'       => 'like',
+                         'prefix'   => '%',
+                         'suffix'   => '%',
+                         'width'    => '',
+                         'value'    => '');
+
+$liste["item"][] = array('field'    => 'version',
+                         'datatype' => 'VARCHAR',
+                         'formtype' => 'TEXT',
+                         'op'       => 'like',
+                         'prefix'   => '%',
+                         'suffix'   => '%',
+                         'width'    => '',
+                         'value'    => '');
+
+$liste["item"][] = array('field'    => 'category',
+                         'datatype' => 'VARCHAR',
+                         'formtype' => 'SELECT',
+                         'op'       => '=',
+                         'prefix'   => '',
+                         'suffix'   => '',
+                         'datasource' => array('type' => 'SQL',
+                                               'querystring' => 'SELECT category FROM aps_packages ORDER BY category',
+                                               'keyfield' => 'category',
+                                               'valuefield' => 'category'),
+                         'width'    => '',
+                         'value'    => '');
+
+if($_SESSION['s']['user']['typ'] == 'admin') 
+{
+$liste['item'][] = array('field'    => 'package_status',
+                         'datatype' => 'VARCHAR',
+                         'formtype' => 'SELECT',
+                         'op'       => '=',
+                         'prefix'   => '',
+                         'suffix'   => '',
+                         'width'    => '',
+                         'value'    => array(PACKAGE_ENABLED => '<div class="swap" id="ir-Yes"><span>'.$app->lng('Yes').'</span></div>',
+                                             PACKAGE_LOCKED => '<div class="swap" id="ir-No"><span>'.$app->lng('No').'</span></div>'));
+}      
 ?>
\ No newline at end of file
diff --git a/interface/web/sites/list/database.list.php b/interface/web/sites/list/database.list.php
index 76dbec54fdd89b612d214048b6371539b351c0a0..56bf15dc40119b08b1174c1326ca6d4576346790 100644
--- a/interface/web/sites/list/database.list.php
+++ b/interface/web/sites/list/database.list.php
@@ -70,19 +70,6 @@ $liste["item"][] = array(	'field'		=> "remote_access",
 							'width'		=> "",
 							'value'		=> array('y' => "<div id=\"ir-Yes\" class=\"swap\"><span>Yes</span></div>",'n' => "<div class=\"swap\" id=\"ir-No\"><span>No</span></div>"));
 
-$liste["item"][] = array(	'field'		=> "type",
-							'datatype'	=> "VARCHAR",
-							'formtype'	=> "SELECT",
-							'op'		=> "=",
-							'prefix'	=> "",
-							'suffix'	=> "",
-							'width'		=> "",
-							'value'		=> array(
-							                  'mongo' => "MongoDB",
-							                  'mysql' => "MySQL"
-							               )
-						);
-
 if($_SESSION['s']['user']['typ'] == 'admin') {
 $liste["item"][] = array(	'field'		=> "sys_groupid",
 							'datatype'	=> "INTEGER",
@@ -153,4 +140,4 @@ $liste["item"][] = array(    'field'        => "database_name",
                             'width'        => "",
                             'value'        => "");
 
-?>
+?>
\ No newline at end of file
diff --git a/interface/web/sites/templates/aps_install_package.htm b/interface/web/sites/templates/aps_install_package.htm
index c911ced39e9947bf04939ea92975ea957848477d..4e0c9bd517e660ebbaf564b3b4c6288c26d3aedb 100644
--- a/interface/web/sites/templates/aps_install_package.htm
+++ b/interface/web/sites/templates/aps_install_package.htm
@@ -1,56 +1,56 @@
-<h2>
-    {tmpl_var name='installation_txt'}: {tmpl_var name='pkg_name'} {tmpl_var name='pkg_version'}-{tmpl_var name='pkg_release'}
-    <span style="float:right">
-        <tmpl_if name='pkg_icon' op='!=' value=''>
-            <img src="{tmpl_var name='pkg_icon'}" height="32" width="32" alt="{tmpl_var name='pkg_name'}" style="vertical-align:text-bottom;" /> 
-        </tmpl_if>
-    </span>
-</h2>
-    
-<tmpl_if name='error'>
-    <div id="errorMsg"><h3>ERROR</h3><ol>{tmpl_var name='error'}</ol></div>
-</tmpl_if>
-
-<div class="panel panel_install_package">
-    
-    <div class="pnl_formsarea">
-        <fieldset class="inlineLabels">
-            <legend>{tmpl_var name='basic_settings_txt'}</legend>
-            <div class="ctrlHolder">
-                <label for="main_domain">{tmpl_var name='install_location_txt'}</label>
-                <div class="resetButton">http(s)://&nbsp;</div>DOMAIN_LIST_SPACE<div style="float:left;">&nbsp;/&nbsp;</div>
-                <input type="text" name="main_location" id="main_location" value="{tmpl_var name='inp_main_location'}" maxlength="255" class="textInput formLengthHalf" />
-            </div>
-            <tmpl_if name='pkg_requirements_database' op='!=' value=''>
-                <div class="ctrlHolder">
-                    <label for="main_database_password">{tmpl_var name='new_database_password_txt'}</label>
-                    <input type="text" class="textInput" name="main_database_password" id="main_database_password" value="{tmpl_var name='inp_main_database_password'}" size="10" maxlength="255" />
-                </div>
-            </tmpl_if>
-                
-            PKG_SETTINGS_SPACE
-                
-            <legend>{tmpl_var name='license_txt'}</legend>
-            <div class="ctrlHolder">
-                <label for="license">{tmpl_var name='license_txt'}</label>
-                <tmpl_if name='pkg_license_content' op='==' value=''>{tmpl_var name='pkg_license_name'}<br /></tmpl_if>
-                <tmpl_if name='pkg_license_type' op='==' value='url'>
-                    <a href="{tmpl_var name='pkg_license_content'}" target="_blank">{tmpl_var name='pkg_license_content'}</a>
-                    <tmpl_elseif name='pkg_license_content'>
-                        <textarea rows="10" cols="80" id="license_text">{tmpl_var name='pkg_license_content'}</textarea>
-                </tmpl_if>
-            </div>
-            <div class="ctrlHolder">
-                <label for="license">{tmpl_var name='acceptance_txt'}</label>
-                <input type="checkbox" name="license" id="license" <tmpl_if name='inp_license' op='==' value='true'>checked</tmpl_if> />&nbsp;&nbsp;{tmpl_var name='acceptance_text'}
-            </div>
-        </fieldset>
-            
-        <input type="hidden" name="install" value="0" />
-        <div class="buttonHolder buttons">
-            <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_install_txt'}" name="btn_install" onclick="document.pageForm.install.value=1; submitForm('pageForm','sites/aps_install_package.php?id={tmpl_var name='pkg_id'}');"><span>{tmpl_var name='btn_install_txt'}</span></button>
-            <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onclick="loadContent('sites/aps_availablepackages_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
-        </div>
-    </div>
-    
-</div>
+<h2>
+    {tmpl_var name='installation_txt'}: {tmpl_var name='pkg_name'} {tmpl_var name='pkg_version'}-{tmpl_var name='pkg_release'}
+    <span style="float:right">
+        <tmpl_if name='pkg_icon' op='!=' value=''>
+            <img src="{tmpl_var name='pkg_icon'}" height="32" width="32" alt="{tmpl_var name='pkg_name'}" style="vertical-align:text-bottom;" /> 
+        </tmpl_if>
+    </span>
+</h2>
+    
+<tmpl_if name='error'>
+    <div id="errorMsg"><h3>ERROR</h3><ol>{tmpl_var name='error'}</ol></div>
+</tmpl_if>
+
+<div class="panel panel_install_package">
+    
+    <div class="pnl_formsarea">
+        <fieldset class="inlineLabels">
+            <legend>{tmpl_var name='basic_settings_txt'}</legend>
+            <div class="ctrlHolder">
+                <label for="main_domain">{tmpl_var name='install_location_txt'}</label>
+                <div class="resetButton">http(s)://&nbsp;</div>DOMAIN_LIST_SPACE<div style="float:left;">&nbsp;/&nbsp;</div>
+                <input type="text" name="main_location" id="main_location" value="{tmpl_var name='inp_main_location'}" maxlength="255" class="textInput formLengthHalf" />
+            </div>
+            <tmpl_if name='pkg_requirements_database' op='!=' value=''>
+                <div class="ctrlHolder">
+                    <label for="main_database_password">{tmpl_var name='new_database_password_txt'}</label>
+                    <input type="text" class="textInput" name="main_database_password" id="main_database_password" value="{tmpl_var name='inp_main_database_password'}" size="10" maxlength="255" />
+                </div>
+            </tmpl_if>
+                
+            PKG_SETTINGS_SPACE
+                
+            <legend>{tmpl_var name='license_txt'}</legend>
+            <div class="ctrlHolder">
+                <label for="license">{tmpl_var name='license_txt'}</label>
+                <tmpl_if name='pkg_license_content' op='==' value=''>{tmpl_var name='pkg_license_name'}<br /></tmpl_if>
+                <tmpl_if name='pkg_license_type' op='==' value='url'>
+                    <a href="{tmpl_var name='pkg_license_content'}" target="_blank">{tmpl_var name='pkg_license_content'}</a>
+                    <tmpl_elseif name='pkg_license_content'>
+                        <textarea rows="10" cols="80" id="license_text">{tmpl_var name='pkg_license_content'}</textarea>
+                </tmpl_if>
+            </div>
+            <div class="ctrlHolder">
+                <label for="license">{tmpl_var name='acceptance_txt'}</label>
+                <input type="checkbox" name="license" id="license" <tmpl_if name='inp_license' op='==' value='true'>checked</tmpl_if> />&nbsp;&nbsp;{tmpl_var name='acceptance_text'}
+            </div>
+        </fieldset>
+            
+        <input type="hidden" name="install" value="0" />
+        <div class="buttonHolder buttons">
+            <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_install_txt'}" name="btn_install" onclick="document.pageForm.install.value=1; submitForm('pageForm','sites/aps_install_package.php?id={tmpl_var name='pkg_id'}');"><span>{tmpl_var name='btn_install_txt'}</span></button>
+            <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onclick="loadContent('sites/aps_availablepackages_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+        </div>
+    </div>
+    
+</div>
\ No newline at end of file
diff --git a/interface/web/sites/templates/aps_instances_list.htm b/interface/web/sites/templates/aps_instances_list.htm
index 2d9c50f6da77d6d2e8f37cd3fc0db96e8527cec1..48da5232e6438fb2e1cb9c205e311ea3d412f9e1 100644
--- a/interface/web/sites/templates/aps_instances_list.htm
+++ b/interface/web/sites/templates/aps_instances_list.htm
@@ -1,62 +1,62 @@
-<h2>{tmpl_var name="list_head_txt"}</h2>
-
-<div class="panel panel_list_instances">
-    
-    <div class="pnl_listarea">
-        <fieldset><legend>{tmpl_var name="list_head_txt"}</legend>
-            <table class="list">
-                <thead>
-                    <tr class="caption">
-                        <th class="tbl_col_name" scope="col">{tmpl_var name='name_txt'}</th>
-                        <th class="tbl_col_version" scope="col">{tmpl_var name='version_txt'}</th>
-                        <tmpl_if name='is_noclient'>
-                        <!--<th class="tbl_col_customer" scope="col">{tmpl_var name='customer_txt'}</th>-->
-                        </tmpl_if>
-                        <th class="tbl_col_installlocation" scope="col">{tmpl_var name='install_location_txt'}</th>
-                        <th class="tbl_col_instancestatus" scope="col">{tmpl_var name='status_txt'}</th>
-                        <th class="tbl_col_limit" scope="col" >&nbsp;</th>
-                    </tr>
-                    <tr class="filter">
-                        <td class="tbl_col_name"><input type="text" name="search_name" value="{tmpl_var name='search_name'}" /></td>
-                        <td class="tbl_col_version"><input type="text" name="search_version" value="{tmpl_var name='search_version'}" /></td>
-                        <tmpl_if name='is_noclient'>
-                        <!--<td class="tbl_col_customer"><input type="text" name="search_customer_name" value="{tmpl_var name='search_customer_name'}" /></td>-->
-                        </tmpl_if>
-                        <td class="tbl_col_installlocation">&nbsp;</td>
-                        <td class="tbl_col_instancestatus"><select name="search_instance_status" onChange="submitForm('pageForm','sites/aps_installedpackages_list.php');">{tmpl_var name='search_instance_status'}</select></td>
-                        <td class="tbl_col_buttons">
-                            <button type="button" class="button icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name='filter_txt'}" onclick="submitForm('pageForm','sites/aps_installedpackages_list.php');"><span>{tmpl_var name='filter_txt'}</span></button>
-                        </td>
-                    </tr>
-                </thead>
-                <tbody>
-                    <tmpl_loop name='records'>
-                        <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
-                            <td class="tbl_col_name"><a href="#" onclick="loadContent('sites/aps_packagedetails_show.php?id={tmpl_var name='package_id'}');">{tmpl_var name='package_name'}</a></td>
-                            <td class="tbl_col_version">{tmpl_var name='package_version'}-{tmpl_var name='package_release'}</td>
-                            <tmpl_if name='is_noclient'>
-                                <!--<td class="tbl_col_customer"><a href="#" onclick="loadContent('sites/aps_packagedetails_show.php?id={tmpl_var name='package_id'}');">{tmpl_var name='customer_name'}</a></td>-->
-                            </tmpl_if>
-                            <td class="tbl_col_installlocation"><a href="http://{tmpl_var name='install_location'}" target="_blank">{tmpl_var name='install_location_short'}</a></td>
-                            <td class="tbl_col_instancestatus"><span id="status_content{tmpl_var name='__ROWNUM__'}">{tmpl_var name='instance_status'}</span></td>
-                            <td class="tbl_col_buttons">
-                                <tmpl_if name='delete_possible'>
-                                    <a class="button icons16 icoDelete" href="javascript: del_record('sites/aps_do_operation.php?action=delete_instance&id={tmpl_var name='id'}','{tmpl_var name='pkg_delete_confirmation'}')"><span>{tmpl_var name='delete_txt'}</span></a>
-                                </tmpl_if>
-                                <tmpl_if name='reinstall_possible'>
-                                    <a class="button icons16 icoEdit" href="javascript: del_record('sites/aps_do_operation.php?action=reinstall_instance&id={tmpl_var name='id'}','{tmpl_var name='pkg_reinstall_confirmation'}')"><span>{tmpl_var name='reinstall_txt'}</span></a>
-                                </tmpl_if>
-                            </td>        
-                        </tr>
-                    </tmpl_loop>
-                </tbody>
-                <tfoot>
-                    <tr>
-                        <td class="tbl_footer tbl_paging" colspan="6">{tmpl_var name='paging'}</td>
-                    </tr>
-                </tfoot>
-            </table>
-        </fieldset>
-    </div>
-    
+<h2>{tmpl_var name="list_head_txt"}</h2>
+
+<div class="panel panel_list_instances">
+    
+    <div class="pnl_listarea">
+        <fieldset><legend>{tmpl_var name="list_head_txt"}</legend>
+            <table class="list">
+                <thead>
+                    <tr class="caption">
+                        <th class="tbl_col_name" scope="col">{tmpl_var name='name_txt'}</th>
+                        <th class="tbl_col_version" scope="col">{tmpl_var name='version_txt'}</th>
+                        <tmpl_if name='is_noclient'>
+                        <!--<th class="tbl_col_customer" scope="col">{tmpl_var name='customer_txt'}</th>-->
+                        </tmpl_if>
+                        <th class="tbl_col_installlocation" scope="col">{tmpl_var name='install_location_txt'}</th>
+                        <th class="tbl_col_instancestatus" scope="col">{tmpl_var name='status_txt'}</th>
+                        <th class="tbl_col_limit" scope="col" >&nbsp;</th>
+                    </tr>
+                    <tr class="filter">
+                        <td class="tbl_col_name"><input type="text" name="search_name" value="{tmpl_var name='search_name'}" /></td>
+                        <td class="tbl_col_version"><input type="text" name="search_version" value="{tmpl_var name='search_version'}" /></td>
+                        <tmpl_if name='is_noclient'>
+                        <!--<td class="tbl_col_customer"><input type="text" name="search_customer_name" value="{tmpl_var name='search_customer_name'}" /></td>-->
+                        </tmpl_if>
+                        <td class="tbl_col_installlocation">&nbsp;</td>
+                        <td class="tbl_col_instancestatus"><select name="search_instance_status" onChange="submitForm('pageForm','sites/aps_installedpackages_list.php');">{tmpl_var name='search_instance_status'}</select></td>
+                        <td class="tbl_col_buttons">
+                            <button type="button" class="button icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name='filter_txt'}" onclick="submitForm('pageForm','sites/aps_installedpackages_list.php');"><span>{tmpl_var name='filter_txt'}</span></button>
+                        </td>
+                    </tr>
+                </thead>
+                <tbody>
+                    <tmpl_loop name='records'>
+                        <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
+                            <td class="tbl_col_name"><a href="#" onclick="loadContent('sites/aps_packagedetails_show.php?id={tmpl_var name='package_id'}');">{tmpl_var name='package_name'}</a></td>
+                            <td class="tbl_col_version">{tmpl_var name='package_version'}-{tmpl_var name='package_release'}</td>
+                            <tmpl_if name='is_noclient'>
+                                <!--<td class="tbl_col_customer"><a href="#" onclick="loadContent('sites/aps_packagedetails_show.php?id={tmpl_var name='package_id'}');">{tmpl_var name='customer_name'}</a></td>-->
+                            </tmpl_if>
+                            <td class="tbl_col_installlocation"><a href="http://{tmpl_var name='install_location'}" target="_blank">{tmpl_var name='install_location_short'}</a></td>
+                            <td class="tbl_col_instancestatus"><span id="status_content{tmpl_var name='__ROWNUM__'}">{tmpl_var name='instance_status'}</span></td>
+                            <td class="tbl_col_buttons">
+                                <tmpl_if name='delete_possible'>
+                                    <a class="button icons16 icoDelete" href="javascript: del_record('sites/aps_do_operation.php?action=delete_instance&id={tmpl_var name='id'}','{tmpl_var name='pkg_delete_confirmation'}')"><span>{tmpl_var name='delete_txt'}</span></a>
+                                </tmpl_if>
+                                <tmpl_if name='reinstall_possible'>
+                                    <a class="button icons16 icoEdit" href="javascript: del_record('sites/aps_do_operation.php?action=reinstall_instance&id={tmpl_var name='id'}','{tmpl_var name='pkg_reinstall_confirmation'}')"><span>{tmpl_var name='reinstall_txt'}</span></a>
+                                </tmpl_if>
+                            </td>        
+                        </tr>
+                    </tmpl_loop>
+                </tbody>
+                <tfoot>
+                    <tr>
+                        <td class="tbl_footer tbl_paging" colspan="6">{tmpl_var name='paging'}</td>
+                    </tr>
+                </tfoot>
+            </table>
+        </fieldset>
+    </div>
+    
 </div>
\ No newline at end of file
diff --git a/interface/web/sites/templates/aps_packagedetails_show.htm b/interface/web/sites/templates/aps_packagedetails_show.htm
index 5456a8985009c095af8b1287c3e56585f3175ac7..a09c26f2039eeca6c638178d1941446cbfcf7e99 100644
--- a/interface/web/sites/templates/aps_packagedetails_show.htm
+++ b/interface/web/sites/templates/aps_packagedetails_show.htm
@@ -1,141 +1,141 @@
-<h2>
-    <tmpl_if name='pkg_icon' op='!=' value=''>
-        <img src="{tmpl_var name='pkg_icon'}" height="32" width="32" alt="{tmpl_var name='pkg_name'}" style="vertical-align:text-bottom;" /> 
-    </tmpl_if>
-    {tmpl_var name='pkg_name'}
-</h2>
-<b>{tmpl_var name='pkg_summary'}</b>
-<p>&nbsp;</p>
-
-<div class="pnl_toolsarea">
-    <fieldset>
-        <div class="buttons">
-            <button class="button iconstxt icoAdd" type="button" onclick="loadContent('sites/aps_install_package.php?id={tmpl_var name='pkg_id'}');">
-                <span>{tmpl_var name="install_package_txt"}</span>
-            </button>
-        </div>
-    </fieldset>
-</div>
-<p>&nbsp;</p><p>&nbsp;</p>
-
-
-<div class="tabbox_tabs">
-    <input type="hidden" name="next_tab" value="" />
-    <ul>
-        <li<tmpl_if name='next_tab' op='==' value='details'> class="active"</tmpl_if>>
-            <a href="#" onclick="return changeTab('details', 'sites/aps_packagedetails_show.php?id={tmpl_var name='pkg_id'}');">{tmpl_var name='details_txt'}</a>
-        </li>
-        <tmpl_if name='pkg_screenshots'>
-        <li<tmpl_if name='next_tab' op='==' value='screenshots'> class="active"</tmpl_if>>
-            <a href="#" onclick="return changeTab('screenshots', 'sites/aps_packagedetails_show.php?id={tmpl_var name='pkg_id'}');">{tmpl_var name='screenshots_txt'}</a>
-        </li></tmpl_if>
-        <tmpl_if name='pkg_changelog'>
-        <li<tmpl_if name='next_tab' op='==' value='changelog'> class="active"</tmpl_if>>
-            <a href="#" onclick="return changeTab('changelog', 'sites/aps_packagedetails_show.php?id={tmpl_var name='pkg_id'}');">{tmpl_var name='changelog_txt'}</a>
-        </li></tmpl_if>
-        <li<tmpl_if name='next_tab' op='==' value='settings'> class="active"</tmpl_if>>
-            <a href="#" onclick="return changeTab('settings', 'sites/aps_packagedetails_show.php?id={tmpl_var name='pkg_id'}');">{tmpl_var name='settings_txt'}</a>
-        </li>
-    </ul>
-</div>
-<p>&nbsp;</p>
-
-<div class="panel panel_list_packages">
-    
-    <div class="pnl_listarea">
-        <table class="list">
-            <tbody>
-                <tmpl_if name='next_tab' op='==' value='details'>
-                    <tr class="tbl_row_uneven">
-                        <td width="25%">{tmpl_var name='version_txt'}</td>
-                        <td>{tmpl_var name='pkg_version'} (Release {tmpl_var name='pkg_release'})</td>
-                    </tr>
-                    <tr class="tbl_row_even">
-                        <td>{tmpl_var name='category_txt'}</td>
-                        <td>{tmpl_var name='pkg_category'}</td>
-                    </tr>
-                    <tr class="tbl_row_uneven">
-                        <td>{tmpl_var name='description_txt'}</td>
-                        <td>{tmpl_var name='pkg_description'}</td>
-                    </tr>
-                    <tr class="tbl_row_even">
-                        <td>{tmpl_var name='homepage_txt'}</td>
-                        <td>
-                            <a href="{tmpl_var name='pkg_homepage'}" target="_blank">{tmpl_var name='pkg_homepage'}</a>
-                        </td>
-                    </tr>
-                    <tr class="tbl_row_uneven">
-                        <td>{tmpl_var name='installed_size_txt'}</td>
-                        <td>{tmpl_var name='pkg_installed_size'}</td>
-                    </tr>
-                    <tr class="tbl_row_even">
-                        <td>{tmpl_var name='supported_languages_txt'}</td>
-                        <td>{tmpl_var name='pkg_languages'}</td>
-                    </tr>
-                    <tr class="tbl_row_uneven">
-                        <td>{tmpl_var name='config_script_txt'}</td>
-                        <td>{tmpl_var name='pkg_config_script'}</td>
-                    </tr>
-                    <tr class="tbl_row_even">
-                        <td>{tmpl_var name='license_txt'}</td>
-                        <td>
-                            <tmpl_if name='pkg_license_name'>{tmpl_var name='pkg_license_name'}<br /></tmpl_if>
-                            <tmpl_if name='pkg_license_type' op='==' value='url'><a href="{tmpl_var name='pkg_license_content'}" target="_blank">{tmpl_var name='pkg_license_content'}</a>
-                            <tmpl_elseif name='pkg_license_content'>
-                                <textarea rows="10" cols="80">{tmpl_var name='pkg_license_content'}</textarea>
-                            </tmpl_if>
-                        </td>
-                    </tr>
-                <tmpl_elseif name='next_tab' op='==' value='screenshots'>
-                    <tmpl_if name='pkg_screenshots'>
-                        <tr class="tbl_row_even">
-                            <td style="text-align:center;">
-                                <tmpl_loop name='pkg_screenshots'>
-                                    <img src="{tmpl_var name='ScreenPath'}" alt="{tmpl_var name='ScreenDescription'}" /><br />
-                                    <em>{tmpl_var name='ScreenDescription'}</em><br /><br />
-                                </tmpl_loop>
-                            </td>
-                        </tr>
-                    </tmpl_if>
-                <tmpl_elseif name='next_tab' op='==' value='changelog'>
-                    <tmpl_if name='pkg_changelog'>
-                        <tr class="tbl_row_even">
-                            <td>
-                                <ul>
-                                    <tmpl_loop name='pkg_changelog'>
-                                    <li>{tmpl_var name='ChangelogVersion'}</li>
-                                <ul>
-                                    <tmpl_if name='ChangelogDescription'>
-                                    <li>{tmpl_var name='ChangelogDescription'}</li>
-                                    </tmpl_if>
-                                </ul>
-                                    </tmpl_loop>
-                                </ul>
-                            </td>
-                        </tr>
-                    </tmpl_if>
-                <tmpl_elseif name='next_tab' op='==' value='settings'>
-                    <tr class="tbl_row_uneven">
-                        <td width="25%">{tmpl_var name='php_extensions_txt'}</td>
-                        <td>{tmpl_var name='pkg_requirements_php_extensions'}</td>
-                    </tr>
-                    <tr class="tbl_row_even">
-                        <td>{tmpl_var name='php_settings_txt'}</td>
-                        <td>
-                            <tmpl_loop name='pkg_requirements_php_settings'>{tmpl_var name='PHPSettingName'} = {tmpl_var name='PHPSettingValue'}<br /></tmpl_loop>
-                        </td>
-                    </tr>
-                    <tr class="tbl_row_uneven">
-                        <td>{tmpl_var name='supported_php_versions_txt'}</td>
-                        <td>{tmpl_var name='pkg_requirements_supported_php_versions'}</td>
-                    </tr>
-                    <tr class="tbl_row_even">
-                        <td>{tmpl_var name='database_txt'}</td>
-                        <td>{tmpl_var name='pkg_requirements_database'}</a></td>
-                    </tr>
-                </tmpl_if>
-            </tbody>
-        </table>
-    </div>
-    
+<h2>
+    <tmpl_if name='pkg_icon' op='!=' value=''>
+        <img src="{tmpl_var name='pkg_icon'}" height="32" width="32" alt="{tmpl_var name='pkg_name'}" style="vertical-align:text-bottom;" /> 
+    </tmpl_if>
+    {tmpl_var name='pkg_name'}
+</h2>
+<b>{tmpl_var name='pkg_summary'}</b>
+<p>&nbsp;</p>
+
+<div class="pnl_toolsarea">
+    <fieldset>
+        <div class="buttons">
+            <button class="button iconstxt icoAdd" type="button" onclick="loadContent('sites/aps_install_package.php?id={tmpl_var name='pkg_id'}');">
+                <span>{tmpl_var name="install_package_txt"}</span>
+            </button>
+        </div>
+    </fieldset>
+</div>
+<p>&nbsp;</p><p>&nbsp;</p>
+
+
+<div class="tabbox_tabs">
+    <input type="hidden" name="next_tab" value="" />
+    <ul>
+        <li<tmpl_if name='next_tab' op='==' value='details'> class="active"</tmpl_if>>
+            <a href="#" onclick="return changeTab('details', 'sites/aps_packagedetails_show.php?id={tmpl_var name='pkg_id'}');">{tmpl_var name='details_txt'}</a>
+        </li>
+        <tmpl_if name='pkg_screenshots'>
+        <li<tmpl_if name='next_tab' op='==' value='screenshots'> class="active"</tmpl_if>>
+            <a href="#" onclick="return changeTab('screenshots', 'sites/aps_packagedetails_show.php?id={tmpl_var name='pkg_id'}');">{tmpl_var name='screenshots_txt'}</a>
+        </li></tmpl_if>
+        <tmpl_if name='pkg_changelog'>
+        <li<tmpl_if name='next_tab' op='==' value='changelog'> class="active"</tmpl_if>>
+            <a href="#" onclick="return changeTab('changelog', 'sites/aps_packagedetails_show.php?id={tmpl_var name='pkg_id'}');">{tmpl_var name='changelog_txt'}</a>
+        </li></tmpl_if>
+        <li<tmpl_if name='next_tab' op='==' value='settings'> class="active"</tmpl_if>>
+            <a href="#" onclick="return changeTab('settings', 'sites/aps_packagedetails_show.php?id={tmpl_var name='pkg_id'}');">{tmpl_var name='settings_txt'}</a>
+        </li>
+    </ul>
+</div>
+<p>&nbsp;</p>
+
+<div class="panel panel_list_packages">
+    
+    <div class="pnl_listarea">
+        <table class="list">
+            <tbody>
+                <tmpl_if name='next_tab' op='==' value='details'>
+                    <tr class="tbl_row_uneven">
+                        <td width="25%">{tmpl_var name='version_txt'}</td>
+                        <td>{tmpl_var name='pkg_version'} (Release {tmpl_var name='pkg_release'})</td>
+                    </tr>
+                    <tr class="tbl_row_even">
+                        <td>{tmpl_var name='category_txt'}</td>
+                        <td>{tmpl_var name='pkg_category'}</td>
+                    </tr>
+                    <tr class="tbl_row_uneven">
+                        <td>{tmpl_var name='description_txt'}</td>
+                        <td>{tmpl_var name='pkg_description'}</td>
+                    </tr>
+                    <tr class="tbl_row_even">
+                        <td>{tmpl_var name='homepage_txt'}</td>
+                        <td>
+                            <a href="{tmpl_var name='pkg_homepage'}" target="_blank">{tmpl_var name='pkg_homepage'}</a>
+                        </td>
+                    </tr>
+                    <tr class="tbl_row_uneven">
+                        <td>{tmpl_var name='installed_size_txt'}</td>
+                        <td>{tmpl_var name='pkg_installed_size'}</td>
+                    </tr>
+                    <tr class="tbl_row_even">
+                        <td>{tmpl_var name='supported_languages_txt'}</td>
+                        <td>{tmpl_var name='pkg_languages'}</td>
+                    </tr>
+                    <tr class="tbl_row_uneven">
+                        <td>{tmpl_var name='config_script_txt'}</td>
+                        <td>{tmpl_var name='pkg_config_script'}</td>
+                    </tr>
+                    <tr class="tbl_row_even">
+                        <td>{tmpl_var name='license_txt'}</td>
+                        <td>
+                            <tmpl_if name='pkg_license_name'>{tmpl_var name='pkg_license_name'}<br /></tmpl_if>
+                            <tmpl_if name='pkg_license_type' op='==' value='url'><a href="{tmpl_var name='pkg_license_content'}" target="_blank">{tmpl_var name='pkg_license_content'}</a>
+                            <tmpl_elseif name='pkg_license_content'>
+                                <textarea rows="10" cols="80">{tmpl_var name='pkg_license_content'}</textarea>
+                            </tmpl_if>
+                        </td>
+                    </tr>
+                <tmpl_elseif name='next_tab' op='==' value='screenshots'>
+                    <tmpl_if name='pkg_screenshots'>
+                        <tr class="tbl_row_even">
+                            <td style="text-align:center;">
+                                <tmpl_loop name='pkg_screenshots'>
+                                    <img src="{tmpl_var name='ScreenPath'}" alt="{tmpl_var name='ScreenDescription'}" /><br />
+                                    <em>{tmpl_var name='ScreenDescription'}</em><br /><br />
+                                </tmpl_loop>
+                            </td>
+                        </tr>
+                    </tmpl_if>
+                <tmpl_elseif name='next_tab' op='==' value='changelog'>
+                    <tmpl_if name='pkg_changelog'>
+                        <tr class="tbl_row_even">
+                            <td>
+                                <ul>
+                                    <tmpl_loop name='pkg_changelog'>
+                                    <li>{tmpl_var name='ChangelogVersion'}</li>
+                                <ul>
+                                    <tmpl_if name='ChangelogDescription'>
+                                    <li>{tmpl_var name='ChangelogDescription'}</li>
+                                    </tmpl_if>
+                                </ul>
+                                    </tmpl_loop>
+                                </ul>
+                            </td>
+                        </tr>
+                    </tmpl_if>
+                <tmpl_elseif name='next_tab' op='==' value='settings'>
+                    <tr class="tbl_row_uneven">
+                        <td width="25%">{tmpl_var name='php_extensions_txt'}</td>
+                        <td>{tmpl_var name='pkg_requirements_php_extensions'}</td>
+                    </tr>
+                    <tr class="tbl_row_even">
+                        <td>{tmpl_var name='php_settings_txt'}</td>
+                        <td>
+                            <tmpl_loop name='pkg_requirements_php_settings'>{tmpl_var name='PHPSettingName'} = {tmpl_var name='PHPSettingValue'}<br /></tmpl_loop>
+                        </td>
+                    </tr>
+                    <tr class="tbl_row_uneven">
+                        <td>{tmpl_var name='supported_php_versions_txt'}</td>
+                        <td>{tmpl_var name='pkg_requirements_supported_php_versions'}</td>
+                    </tr>
+                    <tr class="tbl_row_even">
+                        <td>{tmpl_var name='database_txt'}</td>
+                        <td>{tmpl_var name='pkg_requirements_database'}</a></td>
+                    </tr>
+                </tmpl_if>
+            </tbody>
+        </table>
+    </div>
+    
 </div>
\ No newline at end of file
diff --git a/interface/web/sites/templates/aps_packages_list.htm b/interface/web/sites/templates/aps_packages_list.htm
index 1042e711694182feff40abd67c4fa8bbd1adeb5d..4765f2edefdf591cf504c1da2023b0d4b962287a 100644
--- a/interface/web/sites/templates/aps_packages_list.htm
+++ b/interface/web/sites/templates/aps_packages_list.htm
@@ -1,55 +1,55 @@
-<h2>{tmpl_var name="list_head_txt"}</h2>
-
-<div class="panel panel_list_packages">
-    
-    <div class="pnl_listarea">
-        <fieldset><legend>{tmpl_var name="list_head_txt"} ({tmpl_var name='package_count'})</legend>
-            <table class="list">
-                <thead>
-                    <tr class="caption">
-                        <th class="tbl_col_name" scope="col">{tmpl_var name='name_txt'}</th>
-                        <th class="tbl_col_version" scope="col">{tmpl_var name='version_txt'}</th>
-                        <th class="tbl_col_category" scope="col">{tmpl_var name='category_txt'}</th>
-                            <tmpl_if name='is_admin'>
-                                <th class="tbl_col_package_status" scope="col">{tmpl_var name='status_txt'}</th>
-                            </tmpl_if>
-                        <th class="tbl_col_limit" scope="col">&nbsp;</th>
-                    </tr>
-                    <tr class="filter">
-                        <td class="tbl_col_name"><input type="text" name="search_name" value="{tmpl_var name='search_name'}" /></td>
-                        <td class="tbl_col_version"><input type="text" name="search_version" value="{tmpl_var name='search_version'}" /></td>
-                        <td class="tbl_col_customerid"><select name="search_category" onChange="submitForm('pageForm','sites/aps_availablepackages_list.php');">{tmpl_var name='search_category'}</select></td>
-                            <tmpl_if name='is_admin'>
-                                <td class="tbl_col_status"><select name="search_package_status" onChange="submitForm('pageForm','sites/aps_availablepackages_list.php');">{tmpl_var name='search_package_status'}</select></td>
-                            </tmpl_if>
-                        <td class="tbl_col_buttons"><button type="button" class="button icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name='filter_txt'}" onclick="submitForm('pageForm','sites/aps_availablepackages_list.php');"><span>{tmpl_var name='filter_txt'}</span></button></td>
-                    </tr>
-                </thead>
-                <tbody>
-                    <tmpl_loop name='records'>
-                        <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
-                            <td class="tbl_col_name"><a href="#" onclick="loadContent('sites/aps_packagedetails_show.php?id={tmpl_var name='id'}');">{tmpl_var name='name'}</a></td>
-                            <td class="tbl_col_version">{tmpl_var name='version'}-{tmpl_var name='release'}</td>
-                            <td class="tbl_col_category">{tmpl_var name='category'}</td>
-                                <tmpl_if name='is_admin'>
-                                    <td class="tbl_col_status"><a href="javascript:loadContentInto('status_content{tmpl_var name='__ROWNUM__'}', 'sites/aps_do_operation.php?action=change_status&id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}');"><span id="status_content{tmpl_var name='__ROWNUM__'}">{tmpl_var name='package_status'}</span></a></td>
-                                </tmpl_if>
-                            <td class="tbl_col_buttons">&nbsp;</td>
-                        </tr>
-                    </tmpl_loop>
-                    <tmpl_unless name="records">
-                        <tr class="tbl_row_noresults tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
-                            <td colspan="4">{tmpl_var name='globalsearch_noresults_text_txt'}</td>
-                        </tr>
-                    </tmpl_unless>
-                </tbody>
-                <tfoot>
-                    <tr>
-                        <td class="tbl_footer tbl_paging" colspan="5">{tmpl_var name='paging'}</td>
-                    </tr>
-                </tfoot>
-            </table>
-        </fieldset>
-    </div>
-    
+<h2>{tmpl_var name="list_head_txt"}</h2>
+
+<div class="panel panel_list_packages">
+    
+    <div class="pnl_listarea">
+        <fieldset><legend>{tmpl_var name="list_head_txt"} ({tmpl_var name='package_count'})</legend>
+            <table class="list">
+                <thead>
+                    <tr class="caption">
+                        <th class="tbl_col_name" scope="col">{tmpl_var name='name_txt'}</th>
+                        <th class="tbl_col_version" scope="col">{tmpl_var name='version_txt'}</th>
+                        <th class="tbl_col_category" scope="col">{tmpl_var name='category_txt'}</th>
+                            <tmpl_if name='is_admin'>
+                                <th class="tbl_col_package_status" scope="col">{tmpl_var name='status_txt'}</th>
+                            </tmpl_if>
+                        <th class="tbl_col_limit" scope="col">&nbsp;</th>
+                    </tr>
+                    <tr class="filter">
+                        <td class="tbl_col_name"><input type="text" name="search_name" value="{tmpl_var name='search_name'}" /></td>
+                        <td class="tbl_col_version"><input type="text" name="search_version" value="{tmpl_var name='search_version'}" /></td>
+                        <td class="tbl_col_customerid"><select name="search_category" onChange="submitForm('pageForm','sites/aps_availablepackages_list.php');">{tmpl_var name='search_category'}</select></td>
+                            <tmpl_if name='is_admin'>
+                                <td class="tbl_col_status"><select name="search_package_status" onChange="submitForm('pageForm','sites/aps_availablepackages_list.php');">{tmpl_var name='search_package_status'}</select></td>
+                            </tmpl_if>
+                        <td class="tbl_col_buttons"><button type="button" class="button icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name='filter_txt'}" onclick="submitForm('pageForm','sites/aps_availablepackages_list.php');"><span>{tmpl_var name='filter_txt'}</span></button></td>
+                    </tr>
+                </thead>
+                <tbody>
+                    <tmpl_loop name='records'>
+                        <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
+                            <td class="tbl_col_name"><a href="#" onclick="loadContent('sites/aps_packagedetails_show.php?id={tmpl_var name='id'}');">{tmpl_var name='name'}</a></td>
+                            <td class="tbl_col_version">{tmpl_var name='version'}-{tmpl_var name='release'}</td>
+                            <td class="tbl_col_category">{tmpl_var name='category'}</td>
+                                <tmpl_if name='is_admin'>
+                                    <td class="tbl_col_status"><a href="javascript:loadContentInto('status_content{tmpl_var name='__ROWNUM__'}', 'sites/aps_do_operation.php?action=change_status&id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}');"><span id="status_content{tmpl_var name='__ROWNUM__'}">{tmpl_var name='package_status'}</span></a></td>
+                                </tmpl_if>
+                            <td class="tbl_col_buttons">&nbsp;</td>
+                        </tr>
+                    </tmpl_loop>
+                    <tmpl_unless name="records">
+                        <tr class="tbl_row_noresults tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
+                            <td colspan="4">{tmpl_var name='globalsearch_noresults_text_txt'}</td>
+                        </tr>
+                    </tmpl_unless>
+                </tbody>
+                <tfoot>
+                    <tr>
+                        <td class="tbl_footer tbl_paging" colspan="5">{tmpl_var name='paging'}</td>
+                    </tr>
+                </tfoot>
+            </table>
+        </fieldset>
+    </div>
+    
 </div>
\ No newline at end of file
diff --git a/interface/web/sites/templates/database_admin_list.htm b/interface/web/sites/templates/database_admin_list.htm
index e4aefdbd87087fba92585ff59f2cfcd0b27729f5..a7021656e0408606b95e9115b325307bd20b3d3b 100644
--- a/interface/web/sites/templates/database_admin_list.htm
+++ b/interface/web/sites/templates/database_admin_list.htm
@@ -19,7 +19,6 @@
                     <tr class="caption">
                         <th class="tbl_col_active" scope="col"><tmpl_var name="active_txt"></th>
                         <th class="tbl_col_remote_access" scope="col"><tmpl_var name="remote_access_txt"></th>
-                        <th class="tbl_col_type" scope="col"><tmpl_var name="type_txt"></th>
                         <th class="tbl_col_sys_groupid" scope="col"><tmpl_var name="sys_groupid_txt"></th>
                         <th class="tbl_col_server_id" scope="col"><tmpl_var name="server_id_txt"></th>
 						<th class="tbl_col_parent_domain_id" scope="col"><tmpl_var name="parent_domain_id_txt"></th>
@@ -30,7 +29,6 @@
                     <tr class="filter">
                         <td class="tbl_col_active"><select name="search_active">{tmpl_var name='search_active'}</select></td>
                         <td class="tbl_col_remote_access"><select name="search_remote_access">{tmpl_var name='search_remote_access'}</select></td>
-                        <td class="tbl_col_type"><select name="search_type">{tmpl_var name='search_type'}</select></td>
                         <td class="tbl_col_sys_groupid"><select name="search_sys_groupid">{tmpl_var name='search_sys_groupid'}</select></td>
                         <td class="tbl_col_server_id"><select name="search_server_id">{tmpl_var name='search_server_id'}</select></td>
 						<td class="tbl_col_parent_domain_id"><select name="search_parent_domain_id">{tmpl_var name='search_parent_domain_id'}</select></td>
@@ -46,7 +44,6 @@
                         <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
                             <td class="tbl_col_active"><a href="#" onclick="loadContent('sites/database_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="active"}</a></td>
                             <td class="tbl_col_remote_access"><a href="#" onclick="loadContent('sites/database_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="remote_access"}</a></td>
-                            <td class="tbl_col_type"><a href="#" onclick="loadContent('sites/database_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="type"}</a></td>
                             <td class="tbl_col_sys_groupid"><a href="#" onclick="loadContent('sites/database_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="sys_groupid"}</a></td>
                             <td class="tbl_col_server_id"><a href="#" onclick="loadContent('sites/database_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="server_id"}</a></td>
 							<td class="tbl_col_parent_domain_id"><a href="#" onclick="loadContent('sites/database_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="parent_domain_id"}</a></td>
@@ -57,7 +54,7 @@
                                     <a class="button icons16 icoDbAdmin" href="sites/database_phpmyadmin.php?id={tmpl_var name='id'}" target="phpmyadmin"><span>{tmpl_var name='admin_txt'}</span></a>
                                 </tmpl_if>
                                 <a class="button icons16 icoEdit" href="javascript: loadContent('sites/database_edit.php?id={tmpl_var name='id'}');"><span>{tmpl_var name='edit_txt'}</span></a>
-                                <a class="button icons16 icoDelete" href="javascript: del_record('sites/database_del.php?id={tmpl_var name='id'}&amp;phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span>{tmpl_var name='delete_txt'}</span></a>
+                                <a class="button icons16 icoDelete" href="javascript: del_record('sites/database_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span>{tmpl_var name='delete_txt'}</span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
@@ -76,4 +73,4 @@
         </fieldset>
     </div>
 
-</div>
+</div>
\ No newline at end of file
diff --git a/interface/web/sites/templates/database_list.htm b/interface/web/sites/templates/database_list.htm
index 15a8ae77cf4f8359f145a3d128e3a890849a8604..ec2d55fdb22b7ce4d25b6fe788e5be8b2cf8fd3f 100644
--- a/interface/web/sites/templates/database_list.htm
+++ b/interface/web/sites/templates/database_list.htm
@@ -36,7 +36,6 @@
                     <tr class="caption">
                         <th class="tbl_col_active" scope="col"><tmpl_var name="active_txt"></th>
                         <th class="tbl_col_remote_access" scope="col"><tmpl_var name="remote_access_txt"></th>
-                        <th class="tbl_col_type" scope="col"><tmpl_var name="type_txt"></th>
                         <th class="tbl_col_server_id" scope="col"><tmpl_var name="server_id_txt"></th>
 						<th class="tbl_col_parent_domain_id" scope="col"><tmpl_var name="parent_domain_id_txt"></th>
                         <th class="tbl_col_database_user_id" scope="col"><tmpl_var name="database_user_txt"></th>
@@ -46,7 +45,6 @@
                     <tr class="filter">
                         <td class="tbl_col_active"><select name="search_active">{tmpl_var name='search_active'}</select></td>
                         <td class="tbl_col_remote_access"><select name="search_remote_access">{tmpl_var name='search_remote_access'}</select></td>
-                        <td class="tbl_col_type"><select name="search_type">{tmpl_var name='search_type'}</select></td>
                         <td class="tbl_col_server_id"><select name="search_server_id">{tmpl_var name='search_server_id'}</select></td>
 						<td class="tbl_col_parent_domain_id"><select name="search_parent_domain_id">{tmpl_var name='search_parent_domain_id'}</select></td>
                         <td class="tbl_col_database_user_id"><select name="search_database_user_id">{tmpl_var name='search_database_user_id'}</select></td>
@@ -61,7 +59,6 @@
                         <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
                             <td class="tbl_col_active"><a href="#" onclick="loadContent('sites/database_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="active"}</a></td>
                             <td class="tbl_col_remote_access"><a href="#" onclick="loadContent('sites/database_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="remote_access"}</a></td>
-                            <td class="tbl_col_type"><a href="#" onclick="loadContent('sites/database_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="type"}</a></td>
                             <td class="tbl_col_server_id"><a href="#" onclick="loadContent('sites/database_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="server_id"}</a></td>
 							<td class="tbl_col_parent_domain_id"><a href="#" onclick="loadContent('sites/database_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="parent_domain_id"}</a></td>
                             <td class="tbl_col_database_user"><a href="#" onclick="loadContent('sites/database_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="database_user_id"}</a></td>
@@ -71,7 +68,7 @@
                                     <a class="button icons16 icoDbAdmin" href="sites/database_phpmyadmin.php?id={tmpl_var name='id'}" target="phpmyadmin"><span>{tmpl_var name='admin_txt'}</span></a>
                                 </tmpl_if>
                                 <a class="button icons16 icoEdit" href="javascript: loadContent('sites/database_edit.php?id={tmpl_var name='id'}');"><span>{tmpl_var name='edit_txt'}</span></a>
-                                <a class="button icons16 icoDelete" href="javascript: del_record('sites/database_del.php?id={tmpl_var name='id'}&amp;phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span>{tmpl_var name='delete_txt'}</span></a>
+                                <a class="button icons16 icoDelete" href="javascript: del_record('sites/database_del.php?id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}','{tmpl_var name='delete_confirmation'}');"><span>{tmpl_var name='delete_txt'}</span></a>
                             </td>
                         </tr>
                     </tmpl_loop>
@@ -90,4 +87,4 @@
         </fieldset>
     </div>
 
-</div>
+</div>
\ No newline at end of file
diff --git a/interface/web/sites/templates/web_aliasdomain_advanced.htm b/interface/web/sites/templates/web_aliasdomain_advanced.htm
index 4c605ca94cc75433c8d1ebc6914f26aa999e83b7..293b87124431868510e5b912295e962adcea5bb8 100644
--- a/interface/web/sites/templates/web_aliasdomain_advanced.htm
+++ b/interface/web/sites/templates/web_aliasdomain_advanced.htm
@@ -1,37 +1,37 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_web_domain">
-
-  <div class="pnl_formsarea">
-    <fieldset class="inlineLabels"><legend>Options</legend>
-      <div class="ctrlHolder proxy">
-                <label for="proxy_directives">{tmpl_var name='proxy_directives_txt'}</label>
-                <textarea name="proxy_directives" id="proxy_directives" rows='10' cols='50' style="width:400px;">{tmpl_var name='proxy_directives'}</textarea>&nbsp;<b>{tmpl_var name="available_proxy_directive_snippets_txt"}</b><br><br>&nbsp;{tmpl_var name="proxy_directive_snippets_txt"}
-            </div>
-    </fieldset>
-
-    <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
-    <div class="buttonHolder buttons">
-      <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onclick="submitForm('pageForm','sites/web_aliasdomain_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
-      <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onclick="loadContent('sites/web_aliasdomain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
-    </div>
-  </div>
-  
-</div>
-<script language="JavaScript" type="text/javascript">
-    var webId = jQuery('input[name="id"]').val();
-    adjustForm();
-		
-    function adjustForm(){
-		jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {web_id : webId, type : "getredirecttype"}, function(data) {
-            if(data.redirecttype == "proxy"){
-                jQuery('.proxy').show();
-            } else {
-                jQuery('.proxy').hide();
-            }
-        });
-    }
-			
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_web_domain">
+
+  <div class="pnl_formsarea">
+    <fieldset class="inlineLabels"><legend>Options</legend>
+      <div class="ctrlHolder proxy">
+                <label for="proxy_directives">{tmpl_var name='proxy_directives_txt'}</label>
+                <textarea name="proxy_directives" id="proxy_directives" rows='10' cols='50' style="width:400px;">{tmpl_var name='proxy_directives'}</textarea>&nbsp;<b>{tmpl_var name="available_proxy_directive_snippets_txt"}</b><br><br>&nbsp;{tmpl_var name="proxy_directive_snippets_txt"}
+            </div>
+    </fieldset>
+
+    <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+    <div class="buttonHolder buttons">
+      <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onclick="submitForm('pageForm','sites/web_aliasdomain_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+      <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onclick="loadContent('sites/web_aliasdomain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+    </div>
+  </div>
+  
+</div>
+<script language="JavaScript" type="text/javascript">
+    var webId = jQuery('input[name="id"]').val();
+    adjustForm();
+		
+    function adjustForm(){
+		jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {web_id : webId, type : "getredirecttype"}, function(data) {
+            if(data.redirecttype == "proxy"){
+                jQuery('.proxy').show();
+            } else {
+                jQuery('.proxy').hide();
+            }
+        });
+    }
+			
 </script>
\ No newline at end of file
diff --git a/interface/web/sites/templates/web_backup_list.htm b/interface/web/sites/templates/web_backup_list.htm
index 55944730b03652d6e0724501295b2b9f49414ad8..3248812e8b6ce25d5ffe40b23534efa69468548c 100644
--- a/interface/web/sites/templates/web_backup_list.htm
+++ b/interface/web/sites/templates/web_backup_list.htm
@@ -13,23 +13,21 @@
             <table class="list">
                 <thead>
                     <tr class="caption">
-                        <th class="tbl_col_date" scope="col"><tmpl_var name="date_txt"></th>
-                        <th class="tbl_col_date" scope="col"><tmpl_var name="backup_type_txt"></th>
-                        <th class="tbl_col_filename" scope="col"><tmpl_var name="filename_txt"></th>
-                        <th class="tbl_col_filename" scope="col"><tmpl_var name="filesize_txt"></th>
-                        <th class="tbl_col_limit" scope="col">{tmpl_var name='search_limit'}</th>
-                    </tr>
-                </thead>
+                        <th class="tbl_col_date" scope="col"><tmpl_var name="date_txt"></th>
+                        <th class="tbl_col_date" scope="col"><tmpl_var name="backup_type_txt"></th>
+                        <th class="tbl_col_filename" scope="col"><tmpl_var name="filename_txt"></th>
+                        <th class="tbl_col_limit" scope="col">{tmpl_var name='search_limit'}</th>
+                    </tr>
+                </thead>
                 <tbody>
                     <tmpl_loop name="records">
                         <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
-                            <td class="tbl_col_date">{tmpl_var name="date"}</td>
-                            <td class="tbl_col_date">{tmpl_var name="backup_type"}</td>
-                            <td class="tbl_col_filename">{tmpl_var name="filename"}</td>
-                            <td class="tbl_col_filesize">{tmpl_var name="filesize"}</td>
-                            <td class="tbl_col_buttons">
-                                <div class="buttons">
-                                    <button class="button iconstxt icoRestore" type="button" onclick="confirm_action('sites/web_domain_edit.php?id={tmpl_var name='parent_id'}&next_tab=backup&backup_action=restore&backup_id={tmpl_var name='backup_id'}','{tmpl_var name='restore_confirm_txt'}');"><span>{tmpl_var name="restore_backup_txt"}</span></button>
+                            <td class="tbl_col_date">{tmpl_var name="date"}</td>
+                            <td class="tbl_col_date">{tmpl_var name="backup_type"}</td>
+                            <td class="tbl_col_filename">{tmpl_var name="filename"}</td>
+                            <td class="tbl_col_buttons">
+                                <div class="buttons">
+                                    <button class="button iconstxt icoRestore" type="button" onclick="confirm_action('sites/web_domain_edit.php?id={tmpl_var name='parent_id'}&next_tab=backup&backup_action=restore&backup_id={tmpl_var name='backup_id'}','{tmpl_var name='restore_confirm_txt'}');"><span>{tmpl_var name="restore_backup_txt"}</span></button>
                                     <button class="button iconstxt icoDownload" type="button" onclick="loadContent('sites/web_domain_edit.php?id={tmpl_var name='parent_id'}&next_tab=backup&backup_action=download&backup_id={tmpl_var name='backup_id'}');"><span>{tmpl_var name="download_backup_txt"}</span></button>
                                 </div>
                             </td>
@@ -42,7 +40,7 @@
                     </tmpl_unless>
                 </tbody>
             </table>
-        </fieldset>
-    </div>
-    
-</div>
+        </fieldset>
+    </div>
+    
+</div>
\ No newline at end of file
diff --git a/interface/web/sites/templates/web_subdomain_advanced.htm b/interface/web/sites/templates/web_subdomain_advanced.htm
index 3924362a362cf976c0ec1751c8413ca008bb59fa..d2beb4275d5924ba81cf4a362f3b6e3cabc8841f 100644
--- a/interface/web/sites/templates/web_subdomain_advanced.htm
+++ b/interface/web/sites/templates/web_subdomain_advanced.htm
@@ -1,37 +1,37 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_web_subdomain">
-
-  <div class="pnl_formsarea">
-    <fieldset class="inlineLabels"><legend>Options</legend>
-      <div class="ctrlHolder proxy">
-                <label for="proxy_directives">{tmpl_var name='proxy_directives_txt'}</label>
-                <textarea name="proxy_directives" id="proxy_directives" rows='10' cols='50' style="width:400px;">{tmpl_var name='proxy_directives'}</textarea>&nbsp;<b>{tmpl_var name="available_proxy_directive_snippets_txt"}</b><br><br>&nbsp;{tmpl_var name="proxy_directive_snippets_txt"}
-            </div>
-    </fieldset>
-
-    <input type="hidden" name="id" value="{tmpl_var name='id'}">
-
-    <div class="buttonHolder buttons">
-      <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onclick="submitForm('pageForm','sites/web_subdomain_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
-      <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onclick="loadContent('sites/web_subdomain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
-    </div>
-  </div>
-  
-</div>
-<script language="JavaScript" type="text/javascript">
-    var webId = jQuery('input[name="id"]').val();
-    adjustForm();
-		
-    function adjustForm(){
-		jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {web_id : webId, type : "getredirecttype"}, function(data) {
-            if(data.redirecttype == "proxy"){
-                jQuery('.proxy').show();
-            } else {
-                jQuery('.proxy').hide();
-            }
-        });
-    }
-			
-</script>
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_web_subdomain">
+
+  <div class="pnl_formsarea">
+    <fieldset class="inlineLabels"><legend>Options</legend>
+      <div class="ctrlHolder proxy">
+                <label for="proxy_directives">{tmpl_var name='proxy_directives_txt'}</label>
+                <textarea name="proxy_directives" id="proxy_directives" rows='10' cols='50' style="width:400px;">{tmpl_var name='proxy_directives'}</textarea>&nbsp;<b>{tmpl_var name="available_proxy_directive_snippets_txt"}</b><br><br>&nbsp;{tmpl_var name="proxy_directive_snippets_txt"}
+            </div>
+    </fieldset>
+
+    <input type="hidden" name="id" value="{tmpl_var name='id'}">
+
+    <div class="buttonHolder buttons">
+      <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_save_txt'}" onclick="submitForm('pageForm','sites/web_subdomain_edit.php');"><span>{tmpl_var name='btn_save_txt'}</span></button>
+      <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel_txt'}" onclick="loadContent('sites/web_subdomain_list.php');"><span>{tmpl_var name='btn_cancel_txt'}</span></button>
+    </div>
+  </div>
+  
+</div>
+<script language="JavaScript" type="text/javascript">
+    var webId = jQuery('input[name="id"]').val();
+    adjustForm();
+		
+    function adjustForm(){
+		jQuery.getJSON('sites/ajax_get_json.php'+ '?' + Math.round(new Date().getTime()), {web_id : webId, type : "getredirecttype"}, function(data) {
+            if(data.redirecttype == "proxy"){
+                jQuery('.proxy').show();
+            } else {
+                jQuery('.proxy').hide();
+            }
+        });
+    }
+			
+</script>
diff --git a/interface/web/sites/templates/web_vhost_subdomain_redirect.htm b/interface/web/sites/templates/web_vhost_subdomain_redirect.htm
index 5f441467be4d66899ab15e7e8f960f11e1d09f04..c00b8667480f748b1356a63178189e106f84abf6 100644
--- a/interface/web/sites/templates/web_vhost_subdomain_redirect.htm
+++ b/interface/web/sites/templates/web_vhost_subdomain_redirect.htm
@@ -20,6 +20,10 @@
                 <select name="seo_redirect" id="seo_redirect" class="selectInput formLengthHalf">
                     {tmpl_var name='seo_redirect'}
                 </select>
+            </div>
+			<div class="ctrlHolder nginx">
+                <label for="rewrite_rules">{tmpl_var name='rewrite_rules_txt'}</label>
+                <textarea name="rewrite_rules" id="rewrite_rules" rows='10' cols='50' style="width:400px;">{tmpl_var name='rewrite_rules'}</textarea>&nbsp;<b>{tmpl_var name="allowed_rewrite_rule_directives_txt"}</b><br><br>&nbsp;break<br>&nbsp;if<br>&nbsp;return<br>&nbsp;rewrite<br>&nbsp;set<br><br>&nbsp;<a href="http://wiki.nginx.org/HttpRewriteModule" target="_blank">http://wiki.nginx.org/HttpRewriteModule</a>
             </div>
         </fieldset>
 
@@ -58,6 +62,7 @@
                 jQuery('#redirect_type option[value="R,L"]').hide();
                 jQuery('#redirect_type option[value="R=301,L"]').hide();
                 if(selected != "no" && selected != "" && selected != "last" && selected != "break" && selected != "redirect" && selected != "permanent" && selected != "proxy") jQuery('#redirect_type option[value="no"]').attr('selected', 'selected');
+				jQuery('.nginx').show();
             } else {
                 jQuery('#redirect_type option[value="last"]').attr('disabled','disabled');
                 jQuery('#redirect_type option[value="break"]').attr('disabled','disabled');
@@ -71,6 +76,7 @@
                 jQuery('#redirect_type option[value="permanent"]').hide();
 				jQuery('#redirect_type option[value="proxy"]').hide();
                 if(selected != "no" && selected != "" && selected != "R" && selected != "L" && selected != "R,L" && selected != "R=301,L") jQuery('#redirect_type option[value="no"]').attr('selected', 'selected');
+				jQuery('.nginx').hide();
             }
         });
     }
diff --git a/interface/web/sites/web_domain_edit.php b/interface/web/sites/web_domain_edit.php
index 062529fda339b15d151f38d882a795c15cabf18b..ffc29e84ccfc916af0bb4456887642f47ca71753 100644
--- a/interface/web/sites/web_domain_edit.php
+++ b/interface/web/sites/web_domain_edit.php
@@ -259,53 +259,6 @@ class page_action extends tform_actions {
             // add limits to template to be able to hide settings
             foreach($read_limits as $limit) $app->tpl->setVar($limit, $client[$limit]);
             
-            $sites_config = $app->getconf->get_global_config('sites');
-            if($sites_config['reseller_can_use_options']) {
-                // Directive Snippets
-                $php_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'php' AND active = 'y'");
-                $php_directive_snippets_txt = '';
-                if(is_array($php_directive_snippets) && !empty($php_directive_snippets)){
-                        foreach($php_directive_snippets as $php_directive_snippet){
-                            $php_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$php_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.htmlentities($php_directive_snippet['snippet']).'</pre></a> ';
-                        }
-                }
-                if($php_directive_snippets_txt == '') $php_directive_snippets_txt = '------';
-                $app->tpl->setVar("php_directive_snippets_txt",$php_directive_snippets_txt);
-                
-                if($server_type == 'apache'){
-                    $apache_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'apache' AND active = 'y'");
-                    $apache_directive_snippets_txt = '';
-                    if(is_array($apache_directive_snippets) && !empty($apache_directive_snippets)){
-                            foreach($apache_directive_snippets as $apache_directive_snippet){
-                                $apache_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$apache_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.htmlentities($apache_directive_snippet['snippet']).'</pre></a> ';
-                            }
-                    }
-                    if($apache_directive_snippets_txt == '') $apache_directive_snippets_txt = '------';
-                    $app->tpl->setVar("apache_directive_snippets_txt",$apache_directive_snippets_txt);
-                }
-                
-                if($server_type == 'nginx'){
-                    $nginx_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'nginx' AND active = 'y'");
-                    $nginx_directive_snippets_txt = '';
-                    if(is_array($nginx_directive_snippets) && !empty($nginx_directive_snippets)){
-                            foreach($nginx_directive_snippets as $nginx_directive_snippet){
-                                $nginx_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$nginx_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.htmlentities($nginx_directive_snippet['snippet']).'</pre></a> ';
-                            }
-                    }
-                    if($nginx_directive_snippets_txt == '') $nginx_directive_snippets_txt = '------';
-                    $app->tpl->setVar("nginx_directive_snippets_txt",$nginx_directive_snippets_txt);
-                }
-                
-                $proxy_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'proxy' AND active = 'y'");
-                $proxy_directive_snippets_txt = '';
-                if(is_array($proxy_directive_snippets) && !empty($proxy_directive_snippets)){
-                        foreach($proxy_directive_snippets as $proxy_directive_snippet){
-                            $proxy_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$proxy_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.htmlentities($proxy_directive_snippet['snippet']).'</pre></a> ';
-                        }
-                }
-                if($proxy_directive_snippets_txt == '') $proxy_directive_snippets_txt = '------';
-                $app->tpl->setVar("proxy_directive_snippets_txt",$proxy_directive_snippets_txt);
-            }
             
 			//* Admin: If the logged in user is admin
 		} else {
diff --git a/interface/web/sites/web_vhost_subdomain_edit.php b/interface/web/sites/web_vhost_subdomain_edit.php
index 97e84f4f59767bd9fc107025cee249b8548d6a27..0322726bc40b644a67f7b01280d18c10f39e67ee 100644
--- a/interface/web/sites/web_vhost_subdomain_edit.php
+++ b/interface/web/sites/web_vhost_subdomain_edit.php
@@ -164,53 +164,6 @@ class page_action extends tform_actions {
             // add limits to template to be able to hide settings
             foreach($read_limits as $limit) $app->tpl->setVar($limit, $client[$limit]);
             
-            $sites_config = $app->getconf->get_global_config('sites');
-            if($sites_config['reseller_can_use_options']) {
-                // Directive Snippets
-                $php_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'php' AND active = 'y'");
-                $php_directive_snippets_txt = '';
-                if(is_array($php_directive_snippets) && !empty($php_directive_snippets)){
-                        foreach($php_directive_snippets as $php_directive_snippet){
-                            $php_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$php_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.$php_directive_snippet['snippet'].'</pre></a> ';
-                        }
-                }
-                if($php_directive_snippets_txt == '') $php_directive_snippets_txt = '------';
-                $app->tpl->setVar("php_directive_snippets_txt",$php_directive_snippets_txt);
-                
-                if($server_type == 'apache'){
-                    $apache_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'apache' AND active = 'y'");
-                    $apache_directive_snippets_txt = '';
-                    if(is_array($apache_directive_snippets) && !empty($apache_directive_snippets)){
-                            foreach($apache_directive_snippets as $apache_directive_snippet){
-                                $apache_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$apache_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.$apache_directive_snippet['snippet'].'</pre></a> ';
-                            }
-                    }
-                    if($apache_directive_snippets_txt == '') $apache_directive_snippets_txt = '------';
-                    $app->tpl->setVar("apache_directive_snippets_txt",$apache_directive_snippets_txt);
-                }
-                
-                if($server_type == 'nginx'){
-                    $nginx_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'nginx' AND active = 'y'");
-                    $nginx_directive_snippets_txt = '';
-                    if(is_array($nginx_directive_snippets) && !empty($nginx_directive_snippets)){
-                            foreach($nginx_directive_snippets as $nginx_directive_snippet){
-                                $nginx_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$nginx_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.$nginx_directive_snippet['snippet'].'</pre></a> ';
-                            }
-                    }
-                    if($nginx_directive_snippets_txt == '') $nginx_directive_snippets_txt = '------';
-                    $app->tpl->setVar("nginx_directive_snippets_txt",$nginx_directive_snippets_txt);
-                }
-                
-                $proxy_directive_snippets = $app->db->queryAllRecords("SELECT * FROM directive_snippets WHERE type = 'proxy' AND active = 'y'");
-                $proxy_directive_snippets_txt = '';
-                if(is_array($proxy_directive_snippets) && !empty($proxy_directive_snippets)){
-                        foreach($proxy_directive_snippets as $proxy_directive_snippet){
-                            $proxy_directive_snippets_txt .= '<a href="javascript:void(0);" class="addPlaceholderContent">['.$proxy_directive_snippet['name'].']<pre class="addPlaceholderContent" style="display:none;">'.$proxy_directive_snippet['snippet'].'</pre></a> ';
-                        }
-                }
-                if($proxy_directive_snippets_txt == '') $proxy_directive_snippets_txt = '------';
-                $app->tpl->setVar("proxy_directive_snippets_txt",$proxy_directive_snippets_txt);
-            }
             
 			//* Admin: If the logged in user is admin
 		} else {
@@ -529,6 +482,62 @@ class page_action extends tform_actions {
 				$app->tform->errorMessage .= $app->tform->lng("error_php_fpm_pm_settings_txt").'<br>';
 			}
 		}
+		
+		// Check rewrite rules
+		$server_type = $web_config['server_type'];
+		
+		if($server_type == 'nginx' && isset($this->dataRecord['rewrite_rules']) && trim($this->dataRecord['rewrite_rules']) != '') {
+			$rewrite_rules = trim($this->dataRecord['rewrite_rules']);
+			$rewrites_are_valid = true;
+			// use this counter to make sure all curly brackets are properly closed
+			$if_level = 0;
+			// Make sure we only have Unix linebreaks
+			$rewrite_rules = str_replace("\r\n", "\n", $rewrite_rules);
+			$rewrite_rules = str_replace("\r", "\n", $rewrite_rules);
+			$rewrite_rule_lines = explode("\n", $rewrite_rules);
+			if(is_array($rewrite_rule_lines) && !empty($rewrite_rule_lines)){
+				foreach($rewrite_rule_lines as $rewrite_rule_line){
+					// ignore comments
+					if(substr(ltrim($rewrite_rule_line),0,1) == '#') continue;
+					// empty lines
+					if(trim($rewrite_rule_line) == '') continue;
+					// rewrite
+					if(preg_match('@^\s*rewrite\s+(^/)?\S+(\$)?\s+\S+(\s+(last|break|redirect|permanent|))?\s*;\s*$@', $rewrite_rule_line)) continue;
+					// if
+					if(preg_match('@^\s*if\s+\(\s*\$\S+(\s+(\!?(=|~|~\*))\s+(\S+|\".+\"))?\s*\)\s*\{\s*$@', $rewrite_rule_line)){
+						$if_level += 1;
+						continue;
+					}
+					// if - check for files, directories, etc.
+					if(preg_match('@^\s*if\s+\(\s*\!?-(f|d|e|x)\s+\S+\s*\)\s*\{\s*$@', $rewrite_rule_line)){
+						$if_level += 1;
+						continue;
+					}
+					// break
+					if(preg_match('@^\s*break\s*;\s*$@', $rewrite_rule_line)){
+						continue;
+					}
+					// return code [ text ]
+					if(preg_match('@^\s*return\s+\d\d\d.*;\s*$@', $rewrite_rule_line)) continue;
+					// return code URL
+					// return URL
+					if(preg_match('@^\s*return(\s+\d\d\d)?\s+(http|https|ftp)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*\@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|localhost|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))*\s*;\s*$@', $rewrite_rule_line)) continue;
+					// set
+					if(preg_match('@^\s*set\s+\$\S+\s+\S+\s*;\s*$@', $rewrite_rule_line)) continue;
+					// closing curly bracket
+					if(trim($rewrite_rule_line) == '}'){
+						$if_level -= 1;
+						continue;
+					}
+					$rewrites_are_valid = false;
+					break;
+				}
+			}
+			
+			if(!$rewrites_are_valid || $if_level != 0){
+				$app->tform->errorMessage .= $app->tform->lng("invalid_rewrite_rules_txt").'<br>';
+			}
+		}
 
 		parent::onSubmit();
 	}
@@ -600,4 +609,4 @@ class page_action extends tform_actions {
 $page = new page_action;
 $page->onLoad();
 
-?>
+?>
\ No newline at end of file
diff --git a/interface/web/strengthmeter/lib/lang/cz_strengthmeter.lng b/interface/web/strengthmeter/lib/lang/cz_strengthmeter.lng
index cff29d541a9a25397d54f9ef3d50cf8856997aed..136f5e2273ccf1022a919fa93ce82962786adf5a 100644
--- a/interface/web/strengthmeter/lib/lang/cz_strengthmeter.lng
+++ b/interface/web/strengthmeter/lib/lang/cz_strengthmeter.lng
@@ -6,3 +6,4 @@ $wb['password_strength_3_txt'] = 'Dobré';
 $wb['password_strength_4_txt'] = 'Silné';
 $wb['password_strength_5_txt'] = 'Velmi silné';
 ?>
+
diff --git a/interface/web/strengthmeter/lib/lang/de_strengthmeter.lng b/interface/web/strengthmeter/lib/lang/de_strengthmeter.lng
index 52f10189e03885cde254069fd18602d0dba6b5c4..dbfdce3aee32ce028a10a3bd75ef6c4e5f2b357d 100644
--- a/interface/web/strengthmeter/lib/lang/de_strengthmeter.lng
+++ b/interface/web/strengthmeter/lib/lang/de_strengthmeter.lng
@@ -6,3 +6,4 @@ $wb['password_strength_3_txt'] = 'Gut';
 $wb['password_strength_4_txt'] = 'Stark';
 $wb['password_strength_5_txt'] = 'Sehr stark';
 ?>
+
diff --git a/interface/web/temp/empty.dir b/interface/web/temp/empty.dir
new file mode 100644
index 0000000000000000000000000000000000000000..95ba9ef37cca69318bcba17e67cd44ae84bd41e1
--- /dev/null
+++ b/interface/web/temp/empty.dir
@@ -0,0 +1 @@
+This empty directory is needed by ISPConfig.
diff --git a/interface/web/themes/default-304/css/screen/redmond/jquery-ui-1.8.16.custom.css b/interface/web/themes/default-304/css/screen/redmond/jquery-ui-1.8.16.custom.css
index e3e05d1d9ee93d5720023297afea0e4028db2061..88353fe6a8df26718f7db109ad8f833629517295 100644
--- a/interface/web/themes/default-304/css/screen/redmond/jquery-ui-1.8.16.custom.css
+++ b/interface/web/themes/default-304/css/screen/redmond/jquery-ui-1.8.16.custom.css
@@ -1,444 +1,444 @@
-/*
- * jQuery UI CSS Framework 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- */
-
-/* Layout helpers
-----------------------------------*/
-.ui-helper-hidden { display: none; }
-.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
-.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
-.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
-.ui-helper-clearfix { display: inline-block; }
-/* required comment for clearfix to work in Opera \*/
-* html .ui-helper-clearfix { height:1%; }
-.ui-helper-clearfix { display:block; }
-/* end clearfix */
-.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
-
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-disabled { cursor: default !important; }
-
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Overlays */
-.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
-
-
-/*
- * jQuery UI CSS Framework 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- *
- * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande,%20Lucida%20Sans,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=0px&bgColorHeader=5c9ccc&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=55&borderColorHeader=4297d7&fcHeader=ffffff&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=469bdd&bgColorDefault=dfeffc&bgTextureDefault=02_glass.png&bgImgOpacityDefault=85&borderColorDefault=c5dbec&fcDefault=2e6e9e&iconColorDefault=6da8d5&bgColorHover=d0e5f5&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=79b7e7&fcHover=1d5987&iconColorHover=217bc0&bgColorActive=f5f8f9&bgTextureActive=06_inset_hard.png&bgImgOpacityActive=100&borderColorActive=79b7e7&fcActive=e17009&iconColorActive=f9bd01&bgColorHighlight=fbec88&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=fad42e&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=0px
- */
-
-
-/* Component containers
-----------------------------------*/
-.ui-widget { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1.1em; }
-.ui-widget .ui-widget { font-size: 1em; }
-.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1em; }
-.ui-widget-content { border: 1px solid #a6c9e2; background: #fcfdfd url(images/ui-bg_inset-hard_100_fcfdfd_1x100.png) 50% bottom repeat-x; color: #222222; }
-.ui-widget-content a { color: #222222; }
-.ui-widget-header { border: 1px solid #4297d7; background: #5c9ccc url(images/ui-bg_gloss-wave_55_5c9ccc_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
-.ui-widget-header a { color: #ffffff; }
-
-/* Interaction states
-----------------------------------*/
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #c5dbec; background: #dfeffc url(images/ui-bg_glass_85_dfeffc_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #2e6e9e; }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #2e6e9e; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #79b7e7; background: #d0e5f5 url(images/ui-bg_glass_75_d0e5f5_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1d5987; }
-.ui-state-hover a, .ui-state-hover a:hover { color: #1d5987; text-decoration: none; }
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #79b7e7; background: #f5f8f9 url(images/ui-bg_inset-hard_100_f5f8f9_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #e17009; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #e17009; text-decoration: none; }
-.ui-widget :active { outline: none; }
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fad42e; background: #fbec88 url(images/ui-bg_flat_55_fbec88_40x100.png) 50% 50% repeat-x; color: #363636; }
-.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
-.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
-.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
-.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
-.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
-.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
-.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_469bdd_256x240.png); }
-.ui-widget-content .ui-icon {background-image: url(images/ui-icons_469bdd_256x240.png); }
-.ui-widget-header .ui-icon {background-image: url(images/ui-icons_d8e7f3_256x240.png); }
-.ui-state-default .ui-icon { background-image: url(images/ui-icons_6da8d5_256x240.png); }
-.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_217bc0_256x240.png); }
-.ui-state-active .ui-icon {background-image: url(images/ui-icons_f9bd01_256x240.png); }
-.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
-.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
-
-/* positioning */
-.ui-icon-carat-1-n { background-position: 0 0; }
-.ui-icon-carat-1-ne { background-position: -16px 0; }
-.ui-icon-carat-1-e { background-position: -32px 0; }
-.ui-icon-carat-1-se { background-position: -48px 0; }
-.ui-icon-carat-1-s { background-position: -64px 0; }
-.ui-icon-carat-1-sw { background-position: -80px 0; }
-.ui-icon-carat-1-w { background-position: -96px 0; }
-.ui-icon-carat-1-nw { background-position: -112px 0; }
-.ui-icon-carat-2-n-s { background-position: -128px 0; }
-.ui-icon-carat-2-e-w { background-position: -144px 0; }
-.ui-icon-triangle-1-n { background-position: 0 -16px; }
-.ui-icon-triangle-1-ne { background-position: -16px -16px; }
-.ui-icon-triangle-1-e { background-position: -32px -16px; }
-.ui-icon-triangle-1-se { background-position: -48px -16px; }
-.ui-icon-triangle-1-s { background-position: -64px -16px; }
-.ui-icon-triangle-1-sw { background-position: -80px -16px; }
-.ui-icon-triangle-1-w { background-position: -96px -16px; }
-.ui-icon-triangle-1-nw { background-position: -112px -16px; }
-.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
-.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
-.ui-icon-arrow-1-n { background-position: 0 -32px; }
-.ui-icon-arrow-1-ne { background-position: -16px -32px; }
-.ui-icon-arrow-1-e { background-position: -32px -32px; }
-.ui-icon-arrow-1-se { background-position: -48px -32px; }
-.ui-icon-arrow-1-s { background-position: -64px -32px; }
-.ui-icon-arrow-1-sw { background-position: -80px -32px; }
-.ui-icon-arrow-1-w { background-position: -96px -32px; }
-.ui-icon-arrow-1-nw { background-position: -112px -32px; }
-.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
-.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
-.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
-.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
-.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
-.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
-.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
-.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
-.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
-.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
-.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
-.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
-.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
-.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
-.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
-.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
-.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
-.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
-.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
-.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
-.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
-.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
-.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
-.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
-.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
-.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
-.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
-.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
-.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
-.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
-.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
-.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
-.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
-.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
-.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
-.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
-.ui-icon-arrow-4 { background-position: 0 -80px; }
-.ui-icon-arrow-4-diag { background-position: -16px -80px; }
-.ui-icon-extlink { background-position: -32px -80px; }
-.ui-icon-newwin { background-position: -48px -80px; }
-.ui-icon-refresh { background-position: -64px -80px; }
-.ui-icon-shuffle { background-position: -80px -80px; }
-.ui-icon-transfer-e-w { background-position: -96px -80px; }
-.ui-icon-transferthick-e-w { background-position: -112px -80px; }
-.ui-icon-folder-collapsed { background-position: 0 -96px; }
-.ui-icon-folder-open { background-position: -16px -96px; }
-.ui-icon-document { background-position: -32px -96px; }
-.ui-icon-document-b { background-position: -48px -96px; }
-.ui-icon-note { background-position: -64px -96px; }
-.ui-icon-mail-closed { background-position: -80px -96px; }
-.ui-icon-mail-open { background-position: -96px -96px; }
-.ui-icon-suitcase { background-position: -112px -96px; }
-.ui-icon-comment { background-position: -128px -96px; }
-.ui-icon-person { background-position: -144px -96px; }
-.ui-icon-print { background-position: -160px -96px; }
-.ui-icon-trash { background-position: -176px -96px; }
-.ui-icon-locked { background-position: -192px -96px; }
-.ui-icon-unlocked { background-position: -208px -96px; }
-.ui-icon-bookmark { background-position: -224px -96px; }
-.ui-icon-tag { background-position: -240px -96px; }
-.ui-icon-home { background-position: 0 -112px; }
-.ui-icon-flag { background-position: -16px -112px; }
-.ui-icon-calendar { background-position: -32px -112px; }
-.ui-icon-cart { background-position: -48px -112px; }
-.ui-icon-pencil { background-position: -64px -112px; }
-.ui-icon-clock { background-position: -80px -112px; }
-.ui-icon-disk { background-position: -96px -112px; }
-.ui-icon-calculator { background-position: -112px -112px; }
-.ui-icon-zoomin { background-position: -128px -112px; }
-.ui-icon-zoomout { background-position: -144px -112px; }
-.ui-icon-search { background-position: -160px -112px; }
-.ui-icon-wrench { background-position: -176px -112px; }
-.ui-icon-gear { background-position: -192px -112px; }
-.ui-icon-heart { background-position: -208px -112px; }
-.ui-icon-star { background-position: -224px -112px; }
-.ui-icon-link { background-position: -240px -112px; }
-.ui-icon-cancel { background-position: 0 -128px; }
-.ui-icon-plus { background-position: -16px -128px; }
-.ui-icon-plusthick { background-position: -32px -128px; }
-.ui-icon-minus { background-position: -48px -128px; }
-.ui-icon-minusthick { background-position: -64px -128px; }
-.ui-icon-close { background-position: -80px -128px; }
-.ui-icon-closethick { background-position: -96px -128px; }
-.ui-icon-key { background-position: -112px -128px; }
-.ui-icon-lightbulb { background-position: -128px -128px; }
-.ui-icon-scissors { background-position: -144px -128px; }
-.ui-icon-clipboard { background-position: -160px -128px; }
-.ui-icon-copy { background-position: -176px -128px; }
-.ui-icon-contact { background-position: -192px -128px; }
-.ui-icon-image { background-position: -208px -128px; }
-.ui-icon-video { background-position: -224px -128px; }
-.ui-icon-script { background-position: -240px -128px; }
-.ui-icon-alert { background-position: 0 -144px; }
-.ui-icon-info { background-position: -16px -144px; }
-.ui-icon-notice { background-position: -32px -144px; }
-.ui-icon-help { background-position: -48px -144px; }
-.ui-icon-check { background-position: -64px -144px; }
-.ui-icon-bullet { background-position: -80px -144px; }
-.ui-icon-radio-off { background-position: -96px -144px; }
-.ui-icon-radio-on { background-position: -112px -144px; }
-.ui-icon-pin-w { background-position: -128px -144px; }
-.ui-icon-pin-s { background-position: -144px -144px; }
-.ui-icon-play { background-position: 0 -160px; }
-.ui-icon-pause { background-position: -16px -160px; }
-.ui-icon-seek-next { background-position: -32px -160px; }
-.ui-icon-seek-prev { background-position: -48px -160px; }
-.ui-icon-seek-end { background-position: -64px -160px; }
-.ui-icon-seek-start { background-position: -80px -160px; }
-/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
-.ui-icon-seek-first { background-position: -80px -160px; }
-.ui-icon-stop { background-position: -96px -160px; }
-.ui-icon-eject { background-position: -112px -160px; }
-.ui-icon-volume-off { background-position: -128px -160px; }
-.ui-icon-volume-on { background-position: -144px -160px; }
-.ui-icon-power { background-position: 0 -176px; }
-.ui-icon-signal-diag { background-position: -16px -176px; }
-.ui-icon-signal { background-position: -32px -176px; }
-.ui-icon-battery-0 { background-position: -48px -176px; }
-.ui-icon-battery-1 { background-position: -64px -176px; }
-.ui-icon-battery-2 { background-position: -80px -176px; }
-.ui-icon-battery-3 { background-position: -96px -176px; }
-.ui-icon-circle-plus { background-position: 0 -192px; }
-.ui-icon-circle-minus { background-position: -16px -192px; }
-.ui-icon-circle-close { background-position: -32px -192px; }
-.ui-icon-circle-triangle-e { background-position: -48px -192px; }
-.ui-icon-circle-triangle-s { background-position: -64px -192px; }
-.ui-icon-circle-triangle-w { background-position: -80px -192px; }
-.ui-icon-circle-triangle-n { background-position: -96px -192px; }
-.ui-icon-circle-arrow-e { background-position: -112px -192px; }
-.ui-icon-circle-arrow-s { background-position: -128px -192px; }
-.ui-icon-circle-arrow-w { background-position: -144px -192px; }
-.ui-icon-circle-arrow-n { background-position: -160px -192px; }
-.ui-icon-circle-zoomin { background-position: -176px -192px; }
-.ui-icon-circle-zoomout { background-position: -192px -192px; }
-.ui-icon-circle-check { background-position: -208px -192px; }
-.ui-icon-circlesmall-plus { background-position: 0 -208px; }
-.ui-icon-circlesmall-minus { background-position: -16px -208px; }
-.ui-icon-circlesmall-close { background-position: -32px -208px; }
-.ui-icon-squaresmall-plus { background-position: -48px -208px; }
-.ui-icon-squaresmall-minus { background-position: -64px -208px; }
-.ui-icon-squaresmall-close { background-position: -80px -208px; }
-.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
-.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
-.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
-.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
-.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
-.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Corner radius */
-
-/* Overlays */
-.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
-.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }/*
- * jQuery UI Autocomplete 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Autocomplete#theming
- */
-.ui-autocomplete { position: absolute; cursor: default; }
-
-/* workarounds */
-* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
-
-/*
- * jQuery UI Menu 1.8.16
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Menu#theming
- */
-.ui-menu {
-	list-style:none;
-	padding: 2px;
-	margin: 0;
-	display:block;
-	float: left;
-}
-.ui-menu .ui-menu {
-	margin-top: -3px;
-}
-.ui-menu .ui-menu-item {
-	margin:0;
-	padding: 0;
-	zoom: 1;
-	float: left;
-	clear: left;
-	width: 100%;
-}
-.ui-menu .ui-menu-item a {
-	text-decoration:none;
-	display:block;
-	padding:.2em .4em;
-	line-height:1.5;
-	zoom:1;
-}
-.ui-menu .ui-menu-item a.ui-state-hover,
-.ui-menu .ui-menu-item a.ui-state-active {
-	font-weight: normal;
-	margin: -1px;
-}
-/*
- * jQuery UI Button 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Button#theming
- */
-.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
-.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
-button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
-.ui-button-icons-only { width: 3.4em; }
-button.ui-button-icons-only { width: 3.7em; }
-
-/*button text element */
-.ui-button .ui-button-text { display: block; line-height: 1.4;  }
-.ui-button-text-only .ui-button-text { padding: .4em 1em; }
-.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
-.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
-.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
-.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
-/* no icon support for input elements, provide padding by default */
-input.ui-button { padding: .4em 1em; }
-
-/*button icon element(s) */
-.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
-.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
-.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
-.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
-.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
-
-/*button sets*/
-.ui-buttonset { margin-right: 7px; }
-.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
-
-/* workarounds */
-button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
-/*
- * jQuery UI Datepicker 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Datepicker#theming
- */
-.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
-.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
-.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
-.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
-.ui-datepicker .ui-datepicker-prev { left:2px; }
-.ui-datepicker .ui-datepicker-next { right:2px; }
-.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
-.ui-datepicker .ui-datepicker-next-hover { right:1px; }
-.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
-.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
-.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
-.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
-.ui-datepicker select.ui-datepicker-month,
-.ui-datepicker select.ui-datepicker-year { width: 49%;}
-.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
-.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
-.ui-datepicker td { border: 0; padding: 1px; }
-.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
-.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
-.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
-.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
-
-/* with multiple calendars */
-.ui-datepicker.ui-datepicker-multi { width:auto; }
-.ui-datepicker-multi .ui-datepicker-group { float:left; }
-.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
-.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
-.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
-.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
-.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
-.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
-
-/* RTL support */
-.ui-datepicker-rtl { direction: rtl; }
-.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-
-/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
-.ui-datepicker-cover {
-    display: none; /*sorry for IE5*/
-    display/**/: block; /*sorry for IE5*/
-    position: absolute; /*must have*/
-    z-index: -1; /*must have*/
-    filter: mask(); /*must have*/
-    top: -4px; /*must have*/
-    left: -4px; /*must have*/
-    width: 200px; /*must have*/
-    height: 200px; /*must have*/
+/*
+ * jQuery UI CSS Framework 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande,%20Lucida%20Sans,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=0px&bgColorHeader=5c9ccc&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=55&borderColorHeader=4297d7&fcHeader=ffffff&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=469bdd&bgColorDefault=dfeffc&bgTextureDefault=02_glass.png&bgImgOpacityDefault=85&borderColorDefault=c5dbec&fcDefault=2e6e9e&iconColorDefault=6da8d5&bgColorHover=d0e5f5&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=79b7e7&fcHover=1d5987&iconColorHover=217bc0&bgColorActive=f5f8f9&bgTextureActive=06_inset_hard.png&bgImgOpacityActive=100&borderColorActive=79b7e7&fcActive=e17009&iconColorActive=f9bd01&bgColorHighlight=fbec88&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=fad42e&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=0px
+ */
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1.1em; }
+.ui-widget .ui-widget { font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #a6c9e2; background: #fcfdfd url(images/ui-bg_inset-hard_100_fcfdfd_1x100.png) 50% bottom repeat-x; color: #222222; }
+.ui-widget-content a { color: #222222; }
+.ui-widget-header { border: 1px solid #4297d7; background: #5c9ccc url(images/ui-bg_gloss-wave_55_5c9ccc_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
+.ui-widget-header a { color: #ffffff; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #c5dbec; background: #dfeffc url(images/ui-bg_glass_85_dfeffc_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #2e6e9e; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #2e6e9e; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #79b7e7; background: #d0e5f5 url(images/ui-bg_glass_75_d0e5f5_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1d5987; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #1d5987; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #79b7e7; background: #f5f8f9 url(images/ui-bg_inset-hard_100_f5f8f9_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #e17009; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #e17009; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fad42e; background: #fbec88 url(images/ui-bg_flat_55_fbec88_40x100.png) 50% 50% repeat-x; color: #363636; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_469bdd_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_469bdd_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_d8e7f3_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_6da8d5_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_217bc0_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_f9bd01_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+
+/* Overlays */
+.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }/*
+ * jQuery UI Autocomplete 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.ui-autocomplete { position: absolute; cursor: default; }
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.16
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+	zoom:1;
+}
+.ui-menu .ui-menu-item a.ui-state-hover,
+.ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
+.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.ui-button-icons-only { width: 3.4em; }
+button.ui-button-icons-only { width: 3.7em; }
+
+/*button text element */
+.ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.ui-buttonset { margin-right: 7px; }
+.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Datepicker 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.ui-datepicker .ui-datepicker-prev { left:2px; }
+.ui-datepicker .ui-datepicker-next { right:2px; }
+.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.ui-datepicker select.ui-datepicker-month,
+.ui-datepicker select.ui-datepicker-year { width: 49%;}
+.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.ui-datepicker td { border: 0; padding: 1px; }
+.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.ui-datepicker.ui-datepicker-multi { width:auto; }
+.ui-datepicker-multi .ui-datepicker-group { float:left; }
+.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.ui-datepicker-rtl { direction: rtl; }
+.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
 }
\ No newline at end of file
diff --git a/interface/web/themes/default-304/css/screen/tipsy.css b/interface/web/themes/default-304/css/screen/tipsy.css
index ea735c76278167dbe19710a84f890b3ee2f17d12..3d6295408849a6a80062536a55f65657a67888d4 100644
--- a/interface/web/themes/default-304/css/screen/tipsy.css
+++ b/interface/web/themes/default-304/css/screen/tipsy.css
@@ -1,25 +1,25 @@
-.tipsy { font-size: 10px; position: absolute; padding: 5px; z-index: 100000; }
-  .tipsy-inner { background-color: #000; color: #FFF; max-width: 350px; padding: 5px 8px 4px 8px; text-align: left; }
-
-  /* Rounded corners */
-  .tipsy-inner { border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; }
-  
-  /* Uncomment for shadow */
-  /*.tipsy-inner { box-shadow: 0 0 5px #000000; -webkit-box-shadow: 0 0 5px #000000; -moz-box-shadow: 0 0 5px #000000; }*/
-  
-  .tipsy-arrow { position: absolute; width: 0; height: 0; line-height: 0; border: 5px dashed #000; }
-  
-  /* Rules to colour arrows */
-  .tipsy-arrow-n { border-bottom-color: #000; }
-  .tipsy-arrow-s { border-top-color: #000; }
-  .tipsy-arrow-e { border-left-color: #000; }
-  .tipsy-arrow-w { border-right-color: #000; }
-  
-	.tipsy-n .tipsy-arrow { top: 0px; left: 50%; margin-left: -5px; border-bottom-style: solid; border-top: none; border-left-color: transparent; border-right-color: transparent; }
-    .tipsy-nw .tipsy-arrow { top: 0; left: 10px; border-bottom-style: solid; border-top: none; border-left-color: transparent; border-right-color: transparent;}
-    .tipsy-ne .tipsy-arrow { top: 0; right: 10px; border-bottom-style: solid; border-top: none;  border-left-color: transparent; border-right-color: transparent;}
-  .tipsy-s .tipsy-arrow { bottom: 0; left: 50%; margin-left: -5px; border-top-style: solid; border-bottom: none;  border-left-color: transparent; border-right-color: transparent; }
-    .tipsy-sw .tipsy-arrow { bottom: 0; left: 10px; border-top-style: solid; border-bottom: none;  border-left-color: transparent; border-right-color: transparent; }
-    .tipsy-se .tipsy-arrow { bottom: 0; right: 10px; border-top-style: solid; border-bottom: none; border-left-color: transparent; border-right-color: transparent; }
-  .tipsy-e .tipsy-arrow { right: 0; top: 50%; margin-top: -5px; border-left-style: solid; border-right: none; border-top-color: transparent; border-bottom-color: transparent; }
-  .tipsy-w .tipsy-arrow { left: 0; top: 50%; margin-top: -5px; border-right-style: solid; border-left: none; border-top-color: transparent; border-bottom-color: transparent; }
+.tipsy { font-size: 10px; position: absolute; padding: 5px; z-index: 100000; }
+  .tipsy-inner { background-color: #000; color: #FFF; max-width: 350px; padding: 5px 8px 4px 8px; text-align: left; }
+
+  /* Rounded corners */
+  .tipsy-inner { border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px; }
+  
+  /* Uncomment for shadow */
+  /*.tipsy-inner { box-shadow: 0 0 5px #000000; -webkit-box-shadow: 0 0 5px #000000; -moz-box-shadow: 0 0 5px #000000; }*/
+  
+  .tipsy-arrow { position: absolute; width: 0; height: 0; line-height: 0; border: 5px dashed #000; }
+  
+  /* Rules to colour arrows */
+  .tipsy-arrow-n { border-bottom-color: #000; }
+  .tipsy-arrow-s { border-top-color: #000; }
+  .tipsy-arrow-e { border-left-color: #000; }
+  .tipsy-arrow-w { border-right-color: #000; }
+  
+	.tipsy-n .tipsy-arrow { top: 0px; left: 50%; margin-left: -5px; border-bottom-style: solid; border-top: none; border-left-color: transparent; border-right-color: transparent; }
+    .tipsy-nw .tipsy-arrow { top: 0; left: 10px; border-bottom-style: solid; border-top: none; border-left-color: transparent; border-right-color: transparent;}
+    .tipsy-ne .tipsy-arrow { top: 0; right: 10px; border-bottom-style: solid; border-top: none;  border-left-color: transparent; border-right-color: transparent;}
+  .tipsy-s .tipsy-arrow { bottom: 0; left: 50%; margin-left: -5px; border-top-style: solid; border-bottom: none;  border-left-color: transparent; border-right-color: transparent; }
+    .tipsy-sw .tipsy-arrow { bottom: 0; left: 10px; border-top-style: solid; border-bottom: none;  border-left-color: transparent; border-right-color: transparent; }
+    .tipsy-se .tipsy-arrow { bottom: 0; right: 10px; border-top-style: solid; border-bottom: none; border-left-color: transparent; border-right-color: transparent; }
+  .tipsy-e .tipsy-arrow { right: 0; top: 50%; margin-top: -5px; border-left-style: solid; border-right: none; border-top-color: transparent; border-bottom-color: transparent; }
+  .tipsy-w .tipsy-arrow { left: 0; top: 50%; margin-top: -5px; border-right-style: solid; border-left: none; border-top-color: transparent; border-bottom-color: transparent; }
diff --git a/interface/web/themes/default-304/templates/monitor/show_sys_state.htm b/interface/web/themes/default-304/templates/monitor/show_sys_state.htm
index 9a5830c19c0a89834aadab9a32b7d9416a792652..740141b26998f91426e3559dda7aed00839aadc8 100644
--- a/interface/web/themes/default-304/templates/monitor/show_sys_state.htm
+++ b/interface/web/themes/default-304/templates/monitor/show_sys_state.htm
@@ -1,25 +1,25 @@
-<h2><tmpl_var name="list_head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_sys_state">
-
-    <div class="pnl_toolsarea">
-        <fieldset class="inlineLabels"><legend><tmpl_var name="monTransRefreshsq"></legend>
-            <div class="buttons">
-                <div class="ctrlHolder">
-                    <label for="refreshinterval">{tmpl_var name='refreshinterval_txt'}</label>
-                    <select name="refreshinterval" id="refreshinterval" class="selectInput withicons" onChange="loadContentRefresh('monitor/show_sys_state.php?state={tmpl_var name="state_type"}')">
-                        {tmpl_var name='refresh'}
-                    </select>
-                </div>
-            </div>
-        </fieldset>
-    </div>
-  
-    <div class="pnl_formarea">
-        <fieldset><legend></legend>
-            <div class="stateview"><tmpl_var name="state_data"></div>
-        </fieldset>
-    </div>
-
+<h2><tmpl_var name="list_head_txt"></h2>
+<p><tmpl_var name="list_desc_txt"></p>
+
+<div class="panel panel_sys_state">
+
+    <div class="pnl_toolsarea">
+        <fieldset class="inlineLabels"><legend><tmpl_var name="monTransRefreshsq"></legend>
+            <div class="buttons">
+                <div class="ctrlHolder">
+                    <label for="refreshinterval">{tmpl_var name='refreshinterval_txt'}</label>
+                    <select name="refreshinterval" id="refreshinterval" class="selectInput withicons" onChange="loadContentRefresh('monitor/show_sys_state.php?state={tmpl_var name="state_type"}')">
+                        {tmpl_var name='refresh'}
+                    </select>
+                </div>
+            </div>
+        </fieldset>
+    </div>
+  
+    <div class="pnl_formarea">
+        <fieldset><legend></legend>
+            <div class="stateview"><tmpl_var name="state_data"></div>
+        </fieldset>
+    </div>
+
 </div>
\ No newline at end of file
diff --git a/interface/web/themes/default-304/templates/sites/aps_install_package.htm b/interface/web/themes/default-304/templates/sites/aps_install_package.htm
index eeed54f970f1d6545fb18184e3a96b9be3877186..e6ce02a445cf01565835fddbbc0933b56bd227ed 100644
--- a/interface/web/themes/default-304/templates/sites/aps_install_package.htm
+++ b/interface/web/themes/default-304/templates/sites/aps_install_package.htm
@@ -1,56 +1,56 @@
-<h2>
-    {tmpl_var name='installation_txt'}: {tmpl_var name='pkg_name'} {tmpl_var name='pkg_version'}-{tmpl_var name='pkg_release'}
-    <span style="float:right">
-        <tmpl_if name='pkg_icon' op='!=' value=''>
-            <img src="{tmpl_var name='pkg_icon'}" height="32" width="32" alt="{tmpl_var name='pkg_name'}" style="vertical-align:text-bottom;" /> 
-        </tmpl_if>
-    </span>
-</h2>
-    
-<tmpl_if name='error'>
-    <div id="errorMsg"><h3>ERROR</h3><ol>{tmpl_var name='error'}</ol></div>
-</tmpl_if>
-
-<div class="panel panel_install_package">
-    
-    <div class="pnl_formsarea">
-        <fieldset class="inlineLabels">
-            <legend>{tmpl_var name='basic_settings_txt'}</legend>
-            <div class="ctrlHolder">
-                <label for="main_domain">{tmpl_var name='install_location_txt'}</label>
-                <div class="resetButton">http(s)://&nbsp;</div>DOMAIN_LIST_SPACE<div style="float:left;">&nbsp;/&nbsp;</div>
-                <input type="text" name="main_location" id="main_location" value="{tmpl_var name='inp_main_location'}" maxlength="255" class="textInput formLengthHalf" />
-            </div>
-            <tmpl_if name='pkg_requirements_database' op='!=' value=''>
-                <div class="ctrlHolder">
-                    <label for="main_database_password">{tmpl_var name='new_database_password_txt'}</label>
-                    <input type="text" class="textInput" name="main_database_password" id="main_database_password" value="{tmpl_var name='inp_main_database_password'}" size="10" maxlength="255" />
-                </div>
-            </tmpl_if>
-                
-            PKG_SETTINGS_SPACE
-                
-            <legend>{tmpl_var name='license_txt'}</legend>
-            <div class="ctrlHolder">
-                <label for="license">{tmpl_var name='license_txt'}</label>
-                <tmpl_if name='pkg_license_content' op='==' value=''>{tmpl_var name='pkg_license_name'}<br /></tmpl_if>
-                <tmpl_if name='pkg_license_type' op='==' value='url'>
-                    <a href="{tmpl_var name='pkg_license_content'}" target="_blank">{tmpl_var name='pkg_license_content'}</a>
-                    <tmpl_elseif name='pkg_license_content'>
-                        <textarea rows="10" cols="80" id="license_text">{tmpl_var name='pkg_license_content'}</textarea>
-                </tmpl_if>
-            </div>
-            <div class="ctrlHolder">
-                <label for="license">{tmpl_var name='acceptance_txt'}</label>
-                <input type="checkbox" name="license" id="license" <tmpl_if name='inp_license' op='==' value='true'>checked</tmpl_if> />&nbsp;&nbsp;{tmpl_var name='acceptance_text'}
-            </div>
-        </fieldset>
-            
-        <input type="hidden" name="install" value="0" />
-        <div class="buttonHolder buttons">
-            <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_install'}" name="btn_install" onClick="document.pageForm.install.value=1; submitForm('pageForm','sites/aps_install_package.php?id={tmpl_var name='pkg_id'}');"><span>{tmpl_var name='btn_install'}</span></button>
-            <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel'}" onClick="loadContent('aps/availablepackages_list.php');"><span>{tmpl_var name='btn_cancel'}</span></button>
-        </div>
-    </div>
-    
+<h2>
+    {tmpl_var name='installation_txt'}: {tmpl_var name='pkg_name'} {tmpl_var name='pkg_version'}-{tmpl_var name='pkg_release'}
+    <span style="float:right">
+        <tmpl_if name='pkg_icon' op='!=' value=''>
+            <img src="{tmpl_var name='pkg_icon'}" height="32" width="32" alt="{tmpl_var name='pkg_name'}" style="vertical-align:text-bottom;" /> 
+        </tmpl_if>
+    </span>
+</h2>
+    
+<tmpl_if name='error'>
+    <div id="errorMsg"><h3>ERROR</h3><ol>{tmpl_var name='error'}</ol></div>
+</tmpl_if>
+
+<div class="panel panel_install_package">
+    
+    <div class="pnl_formsarea">
+        <fieldset class="inlineLabels">
+            <legend>{tmpl_var name='basic_settings_txt'}</legend>
+            <div class="ctrlHolder">
+                <label for="main_domain">{tmpl_var name='install_location_txt'}</label>
+                <div class="resetButton">http(s)://&nbsp;</div>DOMAIN_LIST_SPACE<div style="float:left;">&nbsp;/&nbsp;</div>
+                <input type="text" name="main_location" id="main_location" value="{tmpl_var name='inp_main_location'}" maxlength="255" class="textInput formLengthHalf" />
+            </div>
+            <tmpl_if name='pkg_requirements_database' op='!=' value=''>
+                <div class="ctrlHolder">
+                    <label for="main_database_password">{tmpl_var name='new_database_password_txt'}</label>
+                    <input type="text" class="textInput" name="main_database_password" id="main_database_password" value="{tmpl_var name='inp_main_database_password'}" size="10" maxlength="255" />
+                </div>
+            </tmpl_if>
+                
+            PKG_SETTINGS_SPACE
+                
+            <legend>{tmpl_var name='license_txt'}</legend>
+            <div class="ctrlHolder">
+                <label for="license">{tmpl_var name='license_txt'}</label>
+                <tmpl_if name='pkg_license_content' op='==' value=''>{tmpl_var name='pkg_license_name'}<br /></tmpl_if>
+                <tmpl_if name='pkg_license_type' op='==' value='url'>
+                    <a href="{tmpl_var name='pkg_license_content'}" target="_blank">{tmpl_var name='pkg_license_content'}</a>
+                    <tmpl_elseif name='pkg_license_content'>
+                        <textarea rows="10" cols="80" id="license_text">{tmpl_var name='pkg_license_content'}</textarea>
+                </tmpl_if>
+            </div>
+            <div class="ctrlHolder">
+                <label for="license">{tmpl_var name='acceptance_txt'}</label>
+                <input type="checkbox" name="license" id="license" <tmpl_if name='inp_license' op='==' value='true'>checked</tmpl_if> />&nbsp;&nbsp;{tmpl_var name='acceptance_text'}
+            </div>
+        </fieldset>
+            
+        <input type="hidden" name="install" value="0" />
+        <div class="buttonHolder buttons">
+            <button class="positive iconstxt icoPositive" type="button" value="{tmpl_var name='btn_install'}" name="btn_install" onClick="document.pageForm.install.value=1; submitForm('pageForm','sites/aps_install_package.php?id={tmpl_var name='pkg_id'}');"><span>{tmpl_var name='btn_install'}</span></button>
+            <button class="negative iconstxt icoNegative" type="button" value="{tmpl_var name='btn_cancel'}" onClick="loadContent('aps/availablepackages_list.php');"><span>{tmpl_var name='btn_cancel'}</span></button>
+        </div>
+    </div>
+    
 </div>
\ No newline at end of file
diff --git a/interface/web/themes/default-304/templates/sites/aps_instances_list.htm b/interface/web/themes/default-304/templates/sites/aps_instances_list.htm
index 6f4ab80e875e0b4d5f1068ebbfcb2fd7e00a76de..640c0bb96c8ab99e50f9efb0d225107e63cfebc9 100644
--- a/interface/web/themes/default-304/templates/sites/aps_instances_list.htm
+++ b/interface/web/themes/default-304/templates/sites/aps_instances_list.htm
@@ -1,62 +1,62 @@
-<h2>{tmpl_var name="list_head_txt"}</h2>
-
-<div class="panel panel_list_instances">
-    
-    <div class="pnl_listarea">
-        <fieldset><legend>{tmpl_var name="list_head_txt"}</legend>
-            <table class="list">
-                <thead>
-                    <tr>
-                        <th class="tbl_col_name" scope="col">{tmpl_var name='name_txt'}</th>
-                        <th class="tbl_col_version" scope="col">{tmpl_var name='version_txt'}</th>
-                        <tmpl_if name='is_noclient'>
-                        <th class="tbl_col_customer" scope="col">{tmpl_var name='customer_txt'}</th>
-                        </tmpl_if>
-                        <th class="tbl_col_installlocation" scope="col">{tmpl_var name='install_location_txt'}</th>
-                        <th class="tbl_col_instancestatus" scope="col">{tmpl_var name='status_txt'}</th>
-                        <th class="tbl_col_buttons" scope="col" >&nbsp;</th>
-                    </tr>
-                    <tr>
-                        <td class="tbl_col_name"><input type="text" name="search_name" value="{tmpl_var name='search_name'}" /></td>
-                        <td class="tbl_col_version"><input type="text" name="search_version" value="{tmpl_var name='search_version'}" /></td>
-                        <tmpl_if name='is_noclient'>
-                        <td class="tbl_col_customer"><input type="text" name="search_customer_name" value="{tmpl_var name='search_customer_name'}" /></td>
-                        </tmpl_if>
-                        <td class="tbl_col_installlocation">&nbsp;</td>
-                        <td class="tbl_col_instancestatus"><select name="search_instance_status" onChange="submitForm('pageForm','sites/aps_installedpackages_list.php');">{tmpl_var name='search_instance_status'}</select></td>
-                        <td class="tbl_col_buttons">
-                        <button type="button" class="icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name='filter_txt'}" onClick="submitForm('pageForm','sites/aps_installedpackages_list.php');">
-                            <span>{tmpl_var name='filter_txt'}</span>
-                        </button>
-                        </td>
-                    </tr>
-                </thead>
-                <tbody>
-                    <tmpl_loop name='records'>
-                        <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
-                            <td class="tbl_col_name"><a href="#" onClick="loadContent('sites/aps_packagedetails_show.php?id={tmpl_var name='package_id'}');">{tmpl_var name='package_name'}</a></td>
-                            <td class="tbl_col_version">{tmpl_var name='package_version'}-{tmpl_var name='package_release'}</td>
-                            <tmpl_if name='is_noclient'>
-                                <td class="tbl_col_customer"><a href="#" onClick="loadContent('client/client_edit.php?id={tmpl_var name='CustomerID'}');">{tmpl_var name='customer_name'}</a></td>
-                            </tmpl_if>
-                            <td class="tbl_col_installlocation"><a href="http://{tmpl_var name='install_location'}" target="_blank">{tmpl_var name='install_location_short'}</a></td>
-                            <td class="tbl_col_instancestatus"><span id="status_content{tmpl_var name='__ROWNUM__'}">{tmpl_var name='instance_status'}</span></td>
-                            <td class="tbl_col_buttons">
-                                <div class="buttons icons16" style="width:60px;">
-                                    <tmpl_if name='delete_possible'><a class="icons16 icoDelete" href="javascript:if(window.confirm('{tmpl_var name='pkg_delete_confirmation'}')){ loadContentInto('status_content{tmpl_var name='__ROWNUM__'}', 'sites/aps_do_operation.php?action=delete_instance&id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}'); }"><span>{tmpl_var name='delete_txt'}</span></a></tmpl_if>
-                                    <tmpl_if name='reinstall_possible'><a class="icons16 icoEdit" href="javascript:if(window.confirm('{tmpl_var name='pkg_reinstall_confirmation'}')){ loadContentInto('status_content{tmpl_var name='__ROWNUM__'}', 'sites/aps_do_operation.php?action=reinstall_instance&id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}'); }"><span>{tmpl_var name='reinstall_txt'}</span></a></tmpl_if>
-                                </div>
-                            </td>        
-                        </tr>
-                    </tmpl_loop>
-                </tbody>
-                <tfoot>
-                    <tr>
-                        <td class="tbl_footer tbl_paging" colspan="6">{tmpl_var name='paging'}</td>
-                    </tr>
-                </tfoot>
-            </table>
-        </fieldset>
-    </div>
-    
+<h2>{tmpl_var name="list_head_txt"}</h2>
+
+<div class="panel panel_list_instances">
+    
+    <div class="pnl_listarea">
+        <fieldset><legend>{tmpl_var name="list_head_txt"}</legend>
+            <table class="list">
+                <thead>
+                    <tr>
+                        <th class="tbl_col_name" scope="col">{tmpl_var name='name_txt'}</th>
+                        <th class="tbl_col_version" scope="col">{tmpl_var name='version_txt'}</th>
+                        <tmpl_if name='is_noclient'>
+                        <th class="tbl_col_customer" scope="col">{tmpl_var name='customer_txt'}</th>
+                        </tmpl_if>
+                        <th class="tbl_col_installlocation" scope="col">{tmpl_var name='install_location_txt'}</th>
+                        <th class="tbl_col_instancestatus" scope="col">{tmpl_var name='status_txt'}</th>
+                        <th class="tbl_col_buttons" scope="col" >&nbsp;</th>
+                    </tr>
+                    <tr>
+                        <td class="tbl_col_name"><input type="text" name="search_name" value="{tmpl_var name='search_name'}" /></td>
+                        <td class="tbl_col_version"><input type="text" name="search_version" value="{tmpl_var name='search_version'}" /></td>
+                        <tmpl_if name='is_noclient'>
+                        <td class="tbl_col_customer"><input type="text" name="search_customer_name" value="{tmpl_var name='search_customer_name'}" /></td>
+                        </tmpl_if>
+                        <td class="tbl_col_installlocation">&nbsp;</td>
+                        <td class="tbl_col_instancestatus"><select name="search_instance_status" onChange="submitForm('pageForm','sites/aps_installedpackages_list.php');">{tmpl_var name='search_instance_status'}</select></td>
+                        <td class="tbl_col_buttons">
+                        <button type="button" class="icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name='filter_txt'}" onClick="submitForm('pageForm','sites/aps_installedpackages_list.php');">
+                            <span>{tmpl_var name='filter_txt'}</span>
+                        </button>
+                        </td>
+                    </tr>
+                </thead>
+                <tbody>
+                    <tmpl_loop name='records'>
+                        <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
+                            <td class="tbl_col_name"><a href="#" onClick="loadContent('sites/aps_packagedetails_show.php?id={tmpl_var name='package_id'}');">{tmpl_var name='package_name'}</a></td>
+                            <td class="tbl_col_version">{tmpl_var name='package_version'}-{tmpl_var name='package_release'}</td>
+                            <tmpl_if name='is_noclient'>
+                                <td class="tbl_col_customer"><a href="#" onClick="loadContent('client/client_edit.php?id={tmpl_var name='CustomerID'}');">{tmpl_var name='customer_name'}</a></td>
+                            </tmpl_if>
+                            <td class="tbl_col_installlocation"><a href="http://{tmpl_var name='install_location'}" target="_blank">{tmpl_var name='install_location_short'}</a></td>
+                            <td class="tbl_col_instancestatus"><span id="status_content{tmpl_var name='__ROWNUM__'}">{tmpl_var name='instance_status'}</span></td>
+                            <td class="tbl_col_buttons">
+                                <div class="buttons icons16" style="width:60px;">
+                                    <tmpl_if name='delete_possible'><a class="icons16 icoDelete" href="javascript:if(window.confirm('{tmpl_var name='pkg_delete_confirmation'}')){ loadContentInto('status_content{tmpl_var name='__ROWNUM__'}', 'sites/aps_do_operation.php?action=delete_instance&id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}'); }"><span>{tmpl_var name='delete_txt'}</span></a></tmpl_if>
+                                    <tmpl_if name='reinstall_possible'><a class="icons16 icoEdit" href="javascript:if(window.confirm('{tmpl_var name='pkg_reinstall_confirmation'}')){ loadContentInto('status_content{tmpl_var name='__ROWNUM__'}', 'sites/aps_do_operation.php?action=reinstall_instance&id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}'); }"><span>{tmpl_var name='reinstall_txt'}</span></a></tmpl_if>
+                                </div>
+                            </td>        
+                        </tr>
+                    </tmpl_loop>
+                </tbody>
+                <tfoot>
+                    <tr>
+                        <td class="tbl_footer tbl_paging" colspan="6">{tmpl_var name='paging'}</td>
+                    </tr>
+                </tfoot>
+            </table>
+        </fieldset>
+    </div>
+    
 </div>
\ No newline at end of file
diff --git a/interface/web/themes/default-304/templates/sites/aps_packagedetails_show.htm b/interface/web/themes/default-304/templates/sites/aps_packagedetails_show.htm
index 18a6fc9e96b0639c44281840cd8068dc7a01cb81..351d3ac0460a708d0fdcc02d175149bd8ef3a4b5 100644
--- a/interface/web/themes/default-304/templates/sites/aps_packagedetails_show.htm
+++ b/interface/web/themes/default-304/templates/sites/aps_packagedetails_show.htm
@@ -1,139 +1,139 @@
-<h2>
-    <tmpl_if name='pkg_icon' op='!=' value=''>
-        <img src="{tmpl_var name='pkg_icon'}" height="32" width="32" alt="{tmpl_var name='pkg_name'}" style="vertical-align:text-bottom;" /> 
-    </tmpl_if>
-    {tmpl_var name='pkg_name'}
-</h2>
-<b>{tmpl_var name='pkg_summary'}</b>
-<p>&nbsp;</p>
-
-<div class="pnl_toolsarea">
-    <div class="buttons">
-        <button class="iconstxt icoAdd" type="button" onClick="loadContent('sites/aps_install_package.php?id={tmpl_var name='pkg_id'}');">
-            <span>{tmpl_var name='install_package_txt'}</span>
-        </button>
-    </div>
-    <p>&nbsp;</p><p>&nbsp;</p>
-</div>
-
-
-<div class="tabbox_tabs">
-    <input type="hidden" name="next_tab" value="" />
-    <ul>
-        <li<tmpl_if name='next_tab' op='==' value='details'> class="active"</tmpl_if>>
-            <a href="javascript:changeTab('details', 'sites/aps_packagedetails_show.php?id={tmpl_var name='pkg_id'}');">{tmpl_var name='details_txt'}</a>
-        </li>
-        <tmpl_if name='pkg_screenshots'>
-        <li<tmpl_if name='next_tab' op='==' value='screenshots'> class="active"</tmpl_if>>
-            <a href="javascript:changeTab('screenshots', 'sites/aps_packagedetails_show.php?id={tmpl_var name='pkg_id'}');">{tmpl_var name='screenshots_txt'}</a>
-        </li></tmpl_if>
-        <tmpl_if name='pkg_changelog'>
-        <li<tmpl_if name='next_tab' op='==' value='changelog'> class="active"</tmpl_if>>
-            <a href="javascript:changeTab('changelog', 'sites/aps_packagedetails_show.php?id={tmpl_var name='pkg_id'}');">{tmpl_var name='changelog_txt'}</a>
-        </li></tmpl_if>
-        <li<tmpl_if name='next_tab' op='==' value='settings'> class="active"</tmpl_if>>
-            <a href="javascript:changeTab('settings', 'sites/aps_packagedetails_show.php?id={tmpl_var name='pkg_id'}');">{tmpl_var name='settings_txt'}</a>
-        </li>
-    </ul>
-</div>
-<p>&nbsp;</p>
-
-<div class="panel panel_list_packages">
-    
-    <div class="pnl_listarea">
-        <table class="list">
-            <tbody>
-                <tmpl_if name='next_tab' op='==' value='details'>
-                    <tr class="tbl_row_uneven">
-                        <td width="25%">{tmpl_var name='version_txt'}</td>
-                        <td>{tmpl_var name='pkg_version'} (Release {tmpl_var name='pkg_release'})</td>
-                    </tr>
-                    <tr class="tbl_row_even">
-                        <td>{tmpl_var name='category_txt'}</td>
-                        <td>{tmpl_var name='pkg_category'}</td>
-                    </tr>
-                    <tr class="tbl_row_uneven">
-                        <td>{tmpl_var name='description_txt'}</td>
-                        <td>{tmpl_var name='pkg_description'}</td>
-                    </tr>
-                    <tr class="tbl_row_even">
-                        <td>{tmpl_var name='homepage_txt'}</td>
-                        <td>
-                            <a href="{tmpl_var name='pkg_homepage'}" target="_blank">{tmpl_var name='pkg_homepage'}</a>
-                        </td>
-                    </tr>
-                    <tr class="tbl_row_uneven">
-                        <td>{tmpl_var name='installed_size_txt'}</td>
-                        <td>{tmpl_var name='pkg_installed_size'}</td>
-                    </tr>
-                    <tr class="tbl_row_even">
-                        <td>{tmpl_var name='supported_languages_txt'}</td>
-                        <td>{tmpl_var name='pkg_languages'}</td>
-                    </tr>
-                    <tr class="tbl_row_uneven">
-                        <td>{tmpl_var name='config_script_txt'}</td>
-                        <td>{tmpl_var name='pkg_config_script'}</td>
-                    </tr>
-                    <tr class="tbl_row_even">
-                        <td>{tmpl_var name='license_txt'}</td>
-                        <td>
-                            <tmpl_if name='pkg_license_name'>{tmpl_var name='pkg_license_name'}<br /></tmpl_if>
-                            <tmpl_if name='pkg_license_type' op='==' value='url'><a href="{tmpl_var name='pkg_license_content'}" target="_blank">{tmpl_var name='pkg_license_content'}</a>
-                            <tmpl_elseif name='pkg_license_content'>
-                                <textarea rows="10" cols="80">{tmpl_var name='pkg_license_content'}</textarea>
-                            </tmpl_if>
-                        </td>
-                    </tr>
-                <tmpl_elseif name='next_tab' op='==' value='screenshots'>
-                    <tmpl_if name='pkg_screenshots'>
-                        <tr class="tbl_row_even">
-                            <td style="text-align:center;">
-                                <tmpl_loop name='pkg_screenshots'>
-                                    <img src="{tmpl_var name='ScreenPath'}" alt="{tmpl_var name='ScreenDescription'}" /><br />
-                                    <em>{tmpl_var name='ScreenDescription'}</em><br /><br />
-                                </tmpl_loop>
-                            </td>
-                        </tr>
-                    </tmpl_if>
-                <tmpl_elseif name='next_tab' op='==' value='changelog'>
-                    <tmpl_if name='pkg_changelog'>
-                        <tr class="tbl_row_even">
-                            <td>
-                                <ul>
-                                    <tmpl_loop name='pkg_changelog'>
-                                    <li>{tmpl_var name='ChangelogVersion'}</li>
-                                <ul>
-                                    <tmpl_if name='ChangelogDescription'>
-                                    <li>{tmpl_var name='ChangelogDescription'}</li>
-                                    </tmpl_if>
-                                </ul>
-                                    </tmpl_loop>
-                                </ul>
-                            </td>
-                        </tr>
-                    </tmpl_if>
-                <tmpl_elseif name='next_tab' op='==' value='settings'>
-                    <tr class="tbl_row_uneven">
-                        <td width="25%">{tmpl_var name='php_extensions_txt'}</td>
-                        <td>{tmpl_var name='pkg_requirements_php_extensions'}</td>
-                    </tr>
-                    <tr class="tbl_row_even">
-                        <td>{tmpl_var name='php_settings_txt'}</td>
-                        <td>
-                            <tmpl_loop name='pkg_requirements_php_settings'>{tmpl_var name='PHPSettingName'} = {tmpl_var name='PHPSettingValue'}<br /></tmpl_loop>
-                        </td>
-                    </tr>
-                    <tr class="tbl_row_uneven">
-                        <td>{tmpl_var name='supported_php_versions_txt'}</td>
-                        <td>{tmpl_var name='pkg_requirements_supported_php_versions'}</td>
-                    </tr>
-                    <tr class="tbl_row_even">
-                        <td>{tmpl_var name='database_txt'}</td>
-                        <td>{tmpl_var name='pkg_requirements_database'}</a></td>
-                    </tr>
-                </tmpl_if>
-            </tbody>
-        </table>
-    </div>
-    
+<h2>
+    <tmpl_if name='pkg_icon' op='!=' value=''>
+        <img src="{tmpl_var name='pkg_icon'}" height="32" width="32" alt="{tmpl_var name='pkg_name'}" style="vertical-align:text-bottom;" /> 
+    </tmpl_if>
+    {tmpl_var name='pkg_name'}
+</h2>
+<b>{tmpl_var name='pkg_summary'}</b>
+<p>&nbsp;</p>
+
+<div class="pnl_toolsarea">
+    <div class="buttons">
+        <button class="iconstxt icoAdd" type="button" onClick="loadContent('sites/aps_install_package.php?id={tmpl_var name='pkg_id'}');">
+            <span>{tmpl_var name='install_package_txt'}</span>
+        </button>
+    </div>
+    <p>&nbsp;</p><p>&nbsp;</p>
+</div>
+
+
+<div class="tabbox_tabs">
+    <input type="hidden" name="next_tab" value="" />
+    <ul>
+        <li<tmpl_if name='next_tab' op='==' value='details'> class="active"</tmpl_if>>
+            <a href="javascript:changeTab('details', 'sites/aps_packagedetails_show.php?id={tmpl_var name='pkg_id'}');">{tmpl_var name='details_txt'}</a>
+        </li>
+        <tmpl_if name='pkg_screenshots'>
+        <li<tmpl_if name='next_tab' op='==' value='screenshots'> class="active"</tmpl_if>>
+            <a href="javascript:changeTab('screenshots', 'sites/aps_packagedetails_show.php?id={tmpl_var name='pkg_id'}');">{tmpl_var name='screenshots_txt'}</a>
+        </li></tmpl_if>
+        <tmpl_if name='pkg_changelog'>
+        <li<tmpl_if name='next_tab' op='==' value='changelog'> class="active"</tmpl_if>>
+            <a href="javascript:changeTab('changelog', 'sites/aps_packagedetails_show.php?id={tmpl_var name='pkg_id'}');">{tmpl_var name='changelog_txt'}</a>
+        </li></tmpl_if>
+        <li<tmpl_if name='next_tab' op='==' value='settings'> class="active"</tmpl_if>>
+            <a href="javascript:changeTab('settings', 'sites/aps_packagedetails_show.php?id={tmpl_var name='pkg_id'}');">{tmpl_var name='settings_txt'}</a>
+        </li>
+    </ul>
+</div>
+<p>&nbsp;</p>
+
+<div class="panel panel_list_packages">
+    
+    <div class="pnl_listarea">
+        <table class="list">
+            <tbody>
+                <tmpl_if name='next_tab' op='==' value='details'>
+                    <tr class="tbl_row_uneven">
+                        <td width="25%">{tmpl_var name='version_txt'}</td>
+                        <td>{tmpl_var name='pkg_version'} (Release {tmpl_var name='pkg_release'})</td>
+                    </tr>
+                    <tr class="tbl_row_even">
+                        <td>{tmpl_var name='category_txt'}</td>
+                        <td>{tmpl_var name='pkg_category'}</td>
+                    </tr>
+                    <tr class="tbl_row_uneven">
+                        <td>{tmpl_var name='description_txt'}</td>
+                        <td>{tmpl_var name='pkg_description'}</td>
+                    </tr>
+                    <tr class="tbl_row_even">
+                        <td>{tmpl_var name='homepage_txt'}</td>
+                        <td>
+                            <a href="{tmpl_var name='pkg_homepage'}" target="_blank">{tmpl_var name='pkg_homepage'}</a>
+                        </td>
+                    </tr>
+                    <tr class="tbl_row_uneven">
+                        <td>{tmpl_var name='installed_size_txt'}</td>
+                        <td>{tmpl_var name='pkg_installed_size'}</td>
+                    </tr>
+                    <tr class="tbl_row_even">
+                        <td>{tmpl_var name='supported_languages_txt'}</td>
+                        <td>{tmpl_var name='pkg_languages'}</td>
+                    </tr>
+                    <tr class="tbl_row_uneven">
+                        <td>{tmpl_var name='config_script_txt'}</td>
+                        <td>{tmpl_var name='pkg_config_script'}</td>
+                    </tr>
+                    <tr class="tbl_row_even">
+                        <td>{tmpl_var name='license_txt'}</td>
+                        <td>
+                            <tmpl_if name='pkg_license_name'>{tmpl_var name='pkg_license_name'}<br /></tmpl_if>
+                            <tmpl_if name='pkg_license_type' op='==' value='url'><a href="{tmpl_var name='pkg_license_content'}" target="_blank">{tmpl_var name='pkg_license_content'}</a>
+                            <tmpl_elseif name='pkg_license_content'>
+                                <textarea rows="10" cols="80">{tmpl_var name='pkg_license_content'}</textarea>
+                            </tmpl_if>
+                        </td>
+                    </tr>
+                <tmpl_elseif name='next_tab' op='==' value='screenshots'>
+                    <tmpl_if name='pkg_screenshots'>
+                        <tr class="tbl_row_even">
+                            <td style="text-align:center;">
+                                <tmpl_loop name='pkg_screenshots'>
+                                    <img src="{tmpl_var name='ScreenPath'}" alt="{tmpl_var name='ScreenDescription'}" /><br />
+                                    <em>{tmpl_var name='ScreenDescription'}</em><br /><br />
+                                </tmpl_loop>
+                            </td>
+                        </tr>
+                    </tmpl_if>
+                <tmpl_elseif name='next_tab' op='==' value='changelog'>
+                    <tmpl_if name='pkg_changelog'>
+                        <tr class="tbl_row_even">
+                            <td>
+                                <ul>
+                                    <tmpl_loop name='pkg_changelog'>
+                                    <li>{tmpl_var name='ChangelogVersion'}</li>
+                                <ul>
+                                    <tmpl_if name='ChangelogDescription'>
+                                    <li>{tmpl_var name='ChangelogDescription'}</li>
+                                    </tmpl_if>
+                                </ul>
+                                    </tmpl_loop>
+                                </ul>
+                            </td>
+                        </tr>
+                    </tmpl_if>
+                <tmpl_elseif name='next_tab' op='==' value='settings'>
+                    <tr class="tbl_row_uneven">
+                        <td width="25%">{tmpl_var name='php_extensions_txt'}</td>
+                        <td>{tmpl_var name='pkg_requirements_php_extensions'}</td>
+                    </tr>
+                    <tr class="tbl_row_even">
+                        <td>{tmpl_var name='php_settings_txt'}</td>
+                        <td>
+                            <tmpl_loop name='pkg_requirements_php_settings'>{tmpl_var name='PHPSettingName'} = {tmpl_var name='PHPSettingValue'}<br /></tmpl_loop>
+                        </td>
+                    </tr>
+                    <tr class="tbl_row_uneven">
+                        <td>{tmpl_var name='supported_php_versions_txt'}</td>
+                        <td>{tmpl_var name='pkg_requirements_supported_php_versions'}</td>
+                    </tr>
+                    <tr class="tbl_row_even">
+                        <td>{tmpl_var name='database_txt'}</td>
+                        <td>{tmpl_var name='pkg_requirements_database'}</a></td>
+                    </tr>
+                </tmpl_if>
+            </tbody>
+        </table>
+    </div>
+    
 </div>
\ No newline at end of file
diff --git a/interface/web/themes/default-304/templates/sites/aps_packages_list.htm b/interface/web/themes/default-304/templates/sites/aps_packages_list.htm
index fe997430398297845e1d4b38b8f0f29d38c57836..e7db3e84a4e7b5313658dac83414c8a443f005f1 100644
--- a/interface/web/themes/default-304/templates/sites/aps_packages_list.htm
+++ b/interface/web/themes/default-304/templates/sites/aps_packages_list.htm
@@ -1,50 +1,50 @@
-<h2>{tmpl_var name="list_head_txt"}</h2>
-
-<div class="panel panel_list_packages">
-    
-    <div class="pnl_listarea">
-        <fieldset><legend>{tmpl_var name="list_head_txt"} ({tmpl_var name='package_count'})</legend>
-            <table class="list">
-                <thead>
-                    <tr>
-                        <th class="tbl_col_name" scope="col">{tmpl_var name='name_txt'}</th>
-                        <th class="tbl_col_version" scope="col">{tmpl_var name='version_txt'}</th>
-                        <th class="tbl_col_category" scope="col">{tmpl_var name='category_txt'}</th>
-                            <tmpl_if name='is_admin'>
-                                <th class="tbl_col_status" scope="col">{tmpl_var name='status_txt'}</th>
-                            </tmpl_if>
-                        <th class="tbl_col_buttons" scope="col" width="60px;">&nbsp;</th>
-                    </tr>
-                    <tr>
-                        <td class="tbl_col_name"><input type="text" name="search_name" value="{tmpl_var name='search_name'}" /></td>
-                        <td class="tbl_col_version"><input type="text" name="search_version" value="{tmpl_var name='search_version'}" /></td>
-                        <td class="tbl_col_customerid"><select name="search_category" onChange="submitForm('pageForm','sites/aps_availablepackages_list.php');">{tmpl_var name='search_category'}</select></td>
-                            <tmpl_if name='is_admin'>
-                                <td class="tbl_col_status"><select name="search_package_status" onChange="submitForm('pageForm','sites/aps_availablepackages_list.php');">{tmpl_var name='search_package_status'}</select></td>
-                            </tmpl_if>
-                        <td class="tbl_col_buttons"><button type="button" class="icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name='filter_txt'}" onClick="submitForm('pageForm','sites/aps_availablepackages_list.php');"><span>{tmpl_var name='filter_txt'}</span></button></td>
-                    </tr>
-                </thead>
-                <tbody>
-                    <tmpl_loop name='records'>
-                        <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
-                            <td class="tbl_col_name"><a href="#" onClick="loadContent('sites/aps_packagedetails_show.php?id={tmpl_var name='id'}');">{tmpl_var name='name'}</a></td>
-                            <td class="tbl_col_version">{tmpl_var name='version'}-{tmpl_var name='release'}</td>
-                            <td class="tbl_col_category">{tmpl_var name='category'}</td>
-                                <tmpl_if name='is_admin'>
-                                    <td class="tbl_col_status"><a href="javascript:loadContentInto('status_content{tmpl_var name='__ROWNUM__'}', 'sites/aps_do_operation.php?action=change_status&id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}');"><span id="status_content{tmpl_var name='__ROWNUM__'}">{tmpl_var name='package_status'}</span></a></td>
-                                </tmpl_if>
-                            <td>&nbsp;</td>
-                        </tr>
-                    </tmpl_loop>
-                </tbody>
-                <tfoot>
-                    <tr>
-                        <td class="tbl_footer tbl_paging" colspan="5">{tmpl_var name='paging'}</td>
-                    </tr>
-                </tfoot>
-            </table>
-        </fieldset>
-    </div>
-    
+<h2>{tmpl_var name="list_head_txt"}</h2>
+
+<div class="panel panel_list_packages">
+    
+    <div class="pnl_listarea">
+        <fieldset><legend>{tmpl_var name="list_head_txt"} ({tmpl_var name='package_count'})</legend>
+            <table class="list">
+                <thead>
+                    <tr>
+                        <th class="tbl_col_name" scope="col">{tmpl_var name='name_txt'}</th>
+                        <th class="tbl_col_version" scope="col">{tmpl_var name='version_txt'}</th>
+                        <th class="tbl_col_category" scope="col">{tmpl_var name='category_txt'}</th>
+                            <tmpl_if name='is_admin'>
+                                <th class="tbl_col_status" scope="col">{tmpl_var name='status_txt'}</th>
+                            </tmpl_if>
+                        <th class="tbl_col_buttons" scope="col" width="60px;">&nbsp;</th>
+                    </tr>
+                    <tr>
+                        <td class="tbl_col_name"><input type="text" name="search_name" value="{tmpl_var name='search_name'}" /></td>
+                        <td class="tbl_col_version"><input type="text" name="search_version" value="{tmpl_var name='search_version'}" /></td>
+                        <td class="tbl_col_customerid"><select name="search_category" onChange="submitForm('pageForm','sites/aps_availablepackages_list.php');">{tmpl_var name='search_category'}</select></td>
+                            <tmpl_if name='is_admin'>
+                                <td class="tbl_col_status"><select name="search_package_status" onChange="submitForm('pageForm','sites/aps_availablepackages_list.php');">{tmpl_var name='search_package_status'}</select></td>
+                            </tmpl_if>
+                        <td class="tbl_col_buttons"><button type="button" class="icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name='filter_txt'}" onClick="submitForm('pageForm','sites/aps_availablepackages_list.php');"><span>{tmpl_var name='filter_txt'}</span></button></td>
+                    </tr>
+                </thead>
+                <tbody>
+                    <tmpl_loop name='records'>
+                        <tr class="tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
+                            <td class="tbl_col_name"><a href="#" onClick="loadContent('sites/aps_packagedetails_show.php?id={tmpl_var name='id'}');">{tmpl_var name='name'}</a></td>
+                            <td class="tbl_col_version">{tmpl_var name='version'}-{tmpl_var name='release'}</td>
+                            <td class="tbl_col_category">{tmpl_var name='category'}</td>
+                                <tmpl_if name='is_admin'>
+                                    <td class="tbl_col_status"><a href="javascript:loadContentInto('status_content{tmpl_var name='__ROWNUM__'}', 'sites/aps_do_operation.php?action=change_status&id={tmpl_var name='id'}&phpsessid={tmpl_var name='phpsessid'}');"><span id="status_content{tmpl_var name='__ROWNUM__'}">{tmpl_var name='package_status'}</span></a></td>
+                                </tmpl_if>
+                            <td>&nbsp;</td>
+                        </tr>
+                    </tmpl_loop>
+                </tbody>
+                <tfoot>
+                    <tr>
+                        <td class="tbl_footer tbl_paging" colspan="5">{tmpl_var name='paging'}</td>
+                    </tr>
+                </tfoot>
+            </table>
+        </fieldset>
+    </div>
+    
 </div>
\ No newline at end of file
diff --git a/interface/web/themes/default/CHANGELOG b/interface/web/themes/default/CHANGELOG
index 454964210b1c78a57d230d7230ffbaf243d4ce40..cae152a05c5b9b204c0f6c31e13c0ad99f6b5339 100644
--- a/interface/web/themes/default/CHANGELOG
+++ b/interface/web/themes/default/CHANGELOG
@@ -1,32 +1,32 @@
-CHANGELOG
-default -> default-v2
-source: default $3241 07/06/2012 @ 12:00 UTC+2
-resources @ https://github.com/foe-services/ispc-resources
-
-- changed doctype to <!DOCTYPE html> (HTML5)
-- rm yaml/*
-- rm css/patches/*
-- cp yaml/patches/iehacks.css css/*
-- rm <!--[if lte ie 6]> from templates/main.tpl.htm
-- rm IE6 support from css/iehacks.css
-- mv css/nav/* into css/style.css
-- mv css/print/* into css/print.css
-- add css/print.css to templates/main.tpl.htm
-- rm css/print/*
-- rm css/nav/*
-- rm css projection-type support
-- mv css/screen/redmond/* css/*
-- rm css/screen/*
-- mv css media-recognition from css-files to <head>-link tag
-- change most div-containers to new html5 tags in main.tpl.htm
-- rm dom elements from main.tpl.htm
-- add html5shiv.js (https://github.com/aFarkas/html5shiv) for better HTML5-compatibility
-- reduction of dom elements
-- reduction of css rules
-- removed all single icons
-    - all icons separate:  https://github.com/downloads/foe-services/ispc-larry/ispc-default_separate.zip
-    - all used icons as layers and sprite as .psd: https://github.com/downloads/foe-services/ispc-larry/ispc-default_psd.zip
-- added sprites for (nearly) all used icons where suitable
-- added flags for country text in lists
-- added some list column widths
+CHANGELOG
+default -> default-v2
+source: default $3241 07/06/2012 @ 12:00 UTC+2
+resources @ https://github.com/foe-services/ispc-resources
+
+- changed doctype to <!DOCTYPE html> (HTML5)
+- rm yaml/*
+- rm css/patches/*
+- cp yaml/patches/iehacks.css css/*
+- rm <!--[if lte ie 6]> from templates/main.tpl.htm
+- rm IE6 support from css/iehacks.css
+- mv css/nav/* into css/style.css
+- mv css/print/* into css/print.css
+- add css/print.css to templates/main.tpl.htm
+- rm css/print/*
+- rm css/nav/*
+- rm css projection-type support
+- mv css/screen/redmond/* css/*
+- rm css/screen/*
+- mv css media-recognition from css-files to <head>-link tag
+- change most div-containers to new html5 tags in main.tpl.htm
+- rm dom elements from main.tpl.htm
+- add html5shiv.js (https://github.com/aFarkas/html5shiv) for better HTML5-compatibility
+- reduction of dom elements
+- reduction of css rules
+- removed all single icons
+    - all icons separate:  https://github.com/downloads/foe-services/ispc-larry/ispc-default_separate.zip
+    - all used icons as layers and sprite as .psd: https://github.com/downloads/foe-services/ispc-larry/ispc-default_psd.zip
+- added sprites for (nearly) all used icons where suitable
+- added flags for country text in lists
+- added some list column widths
 - limited height (500px) for the globalsearch results
\ No newline at end of file
diff --git a/interface/web/themes/default/TODO b/interface/web/themes/default/TODO
index 177a86333628eae224444fb622956054852df473..b39fb99faa9911186dd0bf40b116bb720f462504 100644
--- a/interface/web/themes/default/TODO
+++ b/interface/web/themes/default/TODO
@@ -1,8 +1,8 @@
-TODO
-- css/print.css is useless in current state
-- css/iehacks.css is useless in current state
-- some more icons need to be changed into sprites
-
-- <html dir="ltr" lang="en-US"> set lang variable with data from the user data or config data
-
+TODO
+- css/print.css is useless in current state
+- css/iehacks.css is useless in current state
+- some more icons need to be changed into sprites
+
+- <html dir="ltr" lang="en-US"> set lang variable with data from the user data or config data
+
 - Lists of servers in monitor module break in IE7 + IE8
\ No newline at end of file
diff --git a/interface/web/themes/default/css/jquery-ui-1.8.16.custom.css b/interface/web/themes/default/css/jquery-ui-1.8.16.custom.css
index cf52f36c58f61e21c7051bd0342d486d802b2e66..54dfd6573ec6a0e3200aa63d439645a2cd13c72d 100644
--- a/interface/web/themes/default/css/jquery-ui-1.8.16.custom.css
+++ b/interface/web/themes/default/css/jquery-ui-1.8.16.custom.css
@@ -1,446 +1,446 @@
-/*
- * jQuery UI CSS Framework 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- */
-
-/* Layout helpers
-----------------------------------*/
-.ui-helper-hidden { display: none; }
-.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
-.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
-.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
-.ui-helper-clearfix { display: inline-block; }
-/* required comment for clearfix to work in Opera \*/
-* html .ui-helper-clearfix { height:1%; }
-.ui-helper-clearfix { display:block; }
-/* end clearfix */
-.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
-
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-disabled { cursor: default !important; }
-
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Overlays */
-.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
-
-
-/*
- * jQuery UI CSS Framework 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Theming/API
- *
- * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande,%20Lucida%20Sans,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=0px&bgColorHeader=5c9ccc&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=55&borderColorHeader=4297d7&fcHeader=ffffff&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=469bdd&bgColorDefault=dfeffc&bgTextureDefault=02_glass.png&bgImgOpacityDefault=85&borderColorDefault=c5dbec&fcDefault=2e6e9e&iconColorDefault=6da8d5&bgColorHover=d0e5f5&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=79b7e7&fcHover=1d5987&iconColorHover=217bc0&bgColorActive=f5f8f9&bgTextureActive=06_inset_hard.png&bgImgOpacityActive=100&borderColorActive=79b7e7&fcActive=e17009&iconColorActive=f9bd01&bgColorHighlight=fbec88&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=fad42e&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=0px
- */
-
-
-/* Component containers
-----------------------------------*/
-/*.ui-widget { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1.1em; }*/
-.ui-widget { font-size: 1.1em; }
-.ui-widget .ui-widget { font-size: 1em; }
-.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-size: 1em; }
-.ui-widget-content { border: 1px solid #a6c9e2; background: #fcfdfd url(images/ui-bg_inset-hard_100_fcfdfd_1x100.png) 50% bottom repeat-x; color: #222222; }
-.ui-widget-content a { color: #222222; }
-.ui-widget-header { border: 1px solid #4297d7; background: #5c9ccc url(images/ui-bg_gloss-wave_55_5c9ccc_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
-.ui-widget-header a { color: #ffffff; }
-
-/* Interaction states
-----------------------------------*/
-.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #c5dbec; background: #dfeffc url(images/ui-bg_glass_85_dfeffc_1x400.png) 50% 50% repeat-x; font-weight: bold; /*color: #2e6e9e;*/ }
-.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #2e6e9e; text-decoration: none; }
-.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #79b7e7; background: #d0e5f5 url(images/ui-bg_glass_75_d0e5f5_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1d5987; }
-.ui-state-hover a, .ui-state-hover a:hover { color: #1d5987; text-decoration: none; }
-.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #79b7e7; background: #f5f8f9 url(images/ui-bg_inset-hard_100_f5f8f9_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #e17009; }
-.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #e17009; text-decoration: none; }
-.ui-widget :active { outline: none; }
-
-/* Interaction Cues
-----------------------------------*/
-.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fad42e; background: #fbec88 url(images/ui-bg_flat_55_fbec88_40x100.png) 50% 50% repeat-x; color: #363636; }
-.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
-.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
-.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
-.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
-.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
-.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
-.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
-
-/* Icons
-----------------------------------*/
-
-/* states and images */
-.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_469bdd_256x240.png); }
-.ui-widget-content .ui-icon {background-image: url(images/ui-icons_469bdd_256x240.png); }
-.ui-widget-header .ui-icon {background-image: url(images/ui-icons_d8e7f3_256x240.png); }
-.ui-state-default .ui-icon { background-image: url(images/ui-icons_6da8d5_256x240.png); }
-.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_217bc0_256x240.png); }
-.ui-state-active .ui-icon {background-image: url(images/ui-icons_f9bd01_256x240.png); }
-.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
-.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
-
-/* positioning */
-.ui-icon-carat-1-n { background-position: 0 0; }
-.ui-icon-carat-1-ne { background-position: -16px 0; }
-.ui-icon-carat-1-e { background-position: -32px 0; }
-.ui-icon-carat-1-se { background-position: -48px 0; }
-.ui-icon-carat-1-s { background-position: -64px 0; }
-.ui-icon-carat-1-sw { background-position: -80px 0; }
-.ui-icon-carat-1-w { background-position: -96px 0; }
-.ui-icon-carat-1-nw { background-position: -112px 0; }
-.ui-icon-carat-2-n-s { background-position: -128px 0; }
-.ui-icon-carat-2-e-w { background-position: -144px 0; }
-.ui-icon-triangle-1-n { background-position: 0 -16px; }
-.ui-icon-triangle-1-ne { background-position: -16px -16px; }
-.ui-icon-triangle-1-e { background-position: -32px -16px; }
-.ui-icon-triangle-1-se { background-position: -48px -16px; }
-.ui-icon-triangle-1-s { background-position: -64px -16px; }
-.ui-icon-triangle-1-sw { background-position: -80px -16px; }
-.ui-icon-triangle-1-w { background-position: -96px -16px; }
-.ui-icon-triangle-1-nw { background-position: -112px -16px; }
-.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
-.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
-.ui-icon-arrow-1-n { background-position: 0 -32px; }
-.ui-icon-arrow-1-ne { background-position: -16px -32px; }
-.ui-icon-arrow-1-e { background-position: -32px -32px; }
-.ui-icon-arrow-1-se { background-position: -48px -32px; }
-.ui-icon-arrow-1-s { background-position: -64px -32px; }
-.ui-icon-arrow-1-sw { background-position: -80px -32px; }
-.ui-icon-arrow-1-w { background-position: -96px -32px; }
-.ui-icon-arrow-1-nw { background-position: -112px -32px; }
-.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
-.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
-.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
-.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
-.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
-.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
-.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
-.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
-.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
-.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
-.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
-.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
-.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
-.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
-.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
-.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
-.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
-.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
-.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
-.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
-.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
-.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
-.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
-.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
-.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
-.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
-.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
-.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
-.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
-.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
-.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
-.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
-.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
-.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
-.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
-.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
-.ui-icon-arrow-4 { background-position: 0 -80px; }
-.ui-icon-arrow-4-diag { background-position: -16px -80px; }
-.ui-icon-extlink { background-position: -32px -80px; }
-.ui-icon-newwin { background-position: -48px -80px; }
-.ui-icon-refresh { background-position: -64px -80px; }
-.ui-icon-shuffle { background-position: -80px -80px; }
-.ui-icon-transfer-e-w { background-position: -96px -80px; }
-.ui-icon-transferthick-e-w { background-position: -112px -80px; }
-.ui-icon-folder-collapsed { background-position: 0 -96px; }
-.ui-icon-folder-open { background-position: -16px -96px; }
-.ui-icon-document { background-position: -32px -96px; }
-.ui-icon-document-b { background-position: -48px -96px; }
-.ui-icon-note { background-position: -64px -96px; }
-.ui-icon-mail-closed { background-position: -80px -96px; }
-.ui-icon-mail-open { background-position: -96px -96px; }
-.ui-icon-suitcase { background-position: -112px -96px; }
-.ui-icon-comment { background-position: -128px -96px; }
-.ui-icon-person { background-position: -144px -96px; }
-.ui-icon-print { background-position: -160px -96px; }
-.ui-icon-trash { background-position: -176px -96px; }
-.ui-icon-locked { background-position: -192px -96px; }
-.ui-icon-unlocked { background-position: -208px -96px; }
-.ui-icon-bookmark { background-position: -224px -96px; }
-.ui-icon-tag { background-position: -240px -96px; }
-.ui-icon-home { background-position: 0 -112px; }
-.ui-icon-flag { background-position: -16px -112px; }
-.ui-icon-calendar { background-position: -32px -112px; }
-.ui-icon-cart { background-position: -48px -112px; }
-.ui-icon-pencil { background-position: -64px -112px; }
-.ui-icon-clock { background-position: -80px -112px; }
-.ui-icon-disk { background-position: -96px -112px; }
-.ui-icon-calculator { background-position: -112px -112px; }
-.ui-icon-zoomin { background-position: -128px -112px; }
-.ui-icon-zoomout { background-position: -144px -112px; }
-.ui-icon-search { background-position: -160px -112px; }
-.ui-icon-wrench { background-position: -176px -112px; }
-.ui-icon-gear { background-position: -192px -112px; }
-.ui-icon-heart { background-position: -208px -112px; }
-.ui-icon-star { background-position: -224px -112px; }
-.ui-icon-link { background-position: -240px -112px; }
-.ui-icon-cancel { background-position: 0 -128px; }
-.ui-icon-plus { background-position: -16px -128px; }
-.ui-icon-plusthick { background-position: -32px -128px; }
-.ui-icon-minus { background-position: -48px -128px; }
-.ui-icon-minusthick { background-position: -64px -128px; }
-.ui-icon-close { background-position: -80px -128px; }
-.ui-icon-closethick { background-position: -96px -128px; }
-.ui-icon-key { background-position: -112px -128px; }
-.ui-icon-lightbulb { background-position: -128px -128px; }
-.ui-icon-scissors { background-position: -144px -128px; }
-.ui-icon-clipboard { background-position: -160px -128px; }
-.ui-icon-copy { background-position: -176px -128px; }
-.ui-icon-contact { background-position: -192px -128px; }
-.ui-icon-image { background-position: -208px -128px; }
-.ui-icon-video { background-position: -224px -128px; }
-.ui-icon-script { background-position: -240px -128px; }
-.ui-icon-alert { background-position: 0 -144px; }
-.ui-icon-info { background-position: -16px -144px; }
-.ui-icon-notice { background-position: -32px -144px; }
-.ui-icon-help { background-position: -48px -144px; }
-.ui-icon-check { background-position: -64px -144px; }
-.ui-icon-bullet { background-position: -80px -144px; }
-.ui-icon-radio-off { background-position: -96px -144px; }
-.ui-icon-radio-on { background-position: -112px -144px; }
-.ui-icon-pin-w { background-position: -128px -144px; }
-.ui-icon-pin-s { background-position: -144px -144px; }
-.ui-icon-play { background-position: 0 -160px; }
-.ui-icon-pause { background-position: -16px -160px; }
-.ui-icon-seek-next { background-position: -32px -160px; }
-.ui-icon-seek-prev { background-position: -48px -160px; }
-.ui-icon-seek-end { background-position: -64px -160px; }
-.ui-icon-seek-start { background-position: -80px -160px; }
-/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
-.ui-icon-seek-first { background-position: -80px -160px; }
-.ui-icon-stop { background-position: -96px -160px; }
-.ui-icon-eject { background-position: -112px -160px; }
-.ui-icon-volume-off { background-position: -128px -160px; }
-.ui-icon-volume-on { background-position: -144px -160px; }
-.ui-icon-power { background-position: 0 -176px; }
-.ui-icon-signal-diag { background-position: -16px -176px; }
-.ui-icon-signal { background-position: -32px -176px; }
-.ui-icon-battery-0 { background-position: -48px -176px; }
-.ui-icon-battery-1 { background-position: -64px -176px; }
-.ui-icon-battery-2 { background-position: -80px -176px; }
-.ui-icon-battery-3 { background-position: -96px -176px; }
-.ui-icon-circle-plus { background-position: 0 -192px; }
-.ui-icon-circle-minus { background-position: -16px -192px; }
-.ui-icon-circle-close { background-position: -32px -192px; }
-.ui-icon-circle-triangle-e { background-position: -48px -192px; }
-.ui-icon-circle-triangle-s { background-position: -64px -192px; }
-.ui-icon-circle-triangle-w { background-position: -80px -192px; }
-.ui-icon-circle-triangle-n { background-position: -96px -192px; }
-.ui-icon-circle-arrow-e { background-position: -112px -192px; }
-.ui-icon-circle-arrow-s { background-position: -128px -192px; }
-.ui-icon-circle-arrow-w { background-position: -144px -192px; }
-.ui-icon-circle-arrow-n { background-position: -160px -192px; }
-.ui-icon-circle-zoomin { background-position: -176px -192px; }
-.ui-icon-circle-zoomout { background-position: -192px -192px; }
-.ui-icon-circle-check { background-position: -208px -192px; }
-.ui-icon-circlesmall-plus { background-position: 0 -208px; }
-.ui-icon-circlesmall-minus { background-position: -16px -208px; }
-.ui-icon-circlesmall-close { background-position: -32px -208px; }
-.ui-icon-squaresmall-plus { background-position: -48px -208px; }
-.ui-icon-squaresmall-minus { background-position: -64px -208px; }
-.ui-icon-squaresmall-close { background-position: -80px -208px; }
-.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
-.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
-.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
-.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
-.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
-.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
-
-
-/* Misc visuals
-----------------------------------*/
-
-/* Corner radius */
-
-/* Overlays */
-.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
-.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }/*
- * jQuery UI Autocomplete 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Autocomplete#theming
- */
-.ui-autocomplete { position: absolute; cursor: default; }
-
-/* workarounds */
-* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
-
-/*
- * jQuery UI Menu 1.8.16
- *
- * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Menu#theming
- */
-.ui-menu {
-	list-style:none;
-	padding: 2px;
-	margin: 0;
-	display:block;
-	float: left;
-}
-.ui-menu .ui-menu {
-	margin-top: -3px;
-}
-.ui-menu .ui-menu-item {
-	margin:0;
-	padding: 0;
-	zoom: 1;
-	float: left;
-	clear: left;
-	width: 100%;
-}
-.ui-menu .ui-menu-item a {
-	text-decoration:none;
-	display:block;
-	padding:.2em .4em;
-	line-height:1.5;
-    white-space: nowrap;
-	zoom:1;
-}
-.ui-menu .ui-menu-item a.ui-state-hover,
-.ui-menu .ui-menu-item a.ui-state-active {
-	font-weight: normal;
-	margin: -1px;
-}
-/*
- * jQuery UI Button 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Button#theming
- */
-.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
-.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
-button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
-.ui-button-icons-only { width: 3.4em; }
-button.ui-button-icons-only { width: 3.7em; }
-
-/*button text element */
-.ui-button .ui-button-text { display: block; line-height: 1.4;  }
-.ui-button-text-only .ui-button-text { padding: .4em 1em; }
-.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
-.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
-.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
-.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
-/* no icon support for input elements, provide padding by default */
-input.ui-button { padding: .4em 1em; }
-
-/*button icon element(s) */
-.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
-.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
-.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
-.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
-.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
-
-/*button sets*/
-.ui-buttonset { margin-right: 7px; }
-.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
-
-/* workarounds */
-button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
-/*
- * jQuery UI Datepicker 1.8.16
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Datepicker#theming
- */
-.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
-.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
-.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
-.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
-.ui-datepicker .ui-datepicker-prev { left:2px; }
-.ui-datepicker .ui-datepicker-next { right:2px; }
-.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
-.ui-datepicker .ui-datepicker-next-hover { right:1px; }
-.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
-.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
-.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
-.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
-.ui-datepicker select.ui-datepicker-month,
-.ui-datepicker select.ui-datepicker-year { width: 49%;}
-.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
-.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
-.ui-datepicker td { border: 0; padding: 1px; }
-.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
-.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
-.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
-.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
-
-/* with multiple calendars */
-.ui-datepicker.ui-datepicker-multi { width:auto; }
-.ui-datepicker-multi .ui-datepicker-group { float:left; }
-.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
-.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
-.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
-.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
-.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
-.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
-.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
-
-/* RTL support */
-.ui-datepicker-rtl { direction: rtl; }
-.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-
-/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
-.ui-datepicker-cover {
-    display: none; /*sorry for IE5*/
-    display/**/: block; /*sorry for IE5*/
-    position: absolute; /*must have*/
-    z-index: -1; /*must have*/
-    filter: mask(); /*must have*/
-    top: -4px; /*must have*/
-    left: -4px; /*must have*/
-    width: 200px; /*must have*/
-    height: 200px; /*must have*/
+/*
+ * jQuery UI CSS Framework 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande,%20Lucida%20Sans,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=0px&bgColorHeader=5c9ccc&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=55&borderColorHeader=4297d7&fcHeader=ffffff&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=06_inset_hard.png&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=469bdd&bgColorDefault=dfeffc&bgTextureDefault=02_glass.png&bgImgOpacityDefault=85&borderColorDefault=c5dbec&fcDefault=2e6e9e&iconColorDefault=6da8d5&bgColorHover=d0e5f5&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=79b7e7&fcHover=1d5987&iconColorHover=217bc0&bgColorActive=f5f8f9&bgTextureActive=06_inset_hard.png&bgImgOpacityActive=100&borderColorActive=79b7e7&fcActive=e17009&iconColorActive=f9bd01&bgColorHighlight=fbec88&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=fad42e&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=0px
+ */
+
+
+/* Component containers
+----------------------------------*/
+/*.ui-widget { font-family: Lucida Grande, Lucida Sans, Arial, sans-serif; font-size: 1.1em; }*/
+.ui-widget { font-size: 1.1em; }
+.ui-widget .ui-widget { font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-size: 1em; }
+.ui-widget-content { border: 1px solid #a6c9e2; background: #fcfdfd url(images/ui-bg_inset-hard_100_fcfdfd_1x100.png) 50% bottom repeat-x; color: #222222; }
+.ui-widget-content a { color: #222222; }
+.ui-widget-header { border: 1px solid #4297d7; background: #5c9ccc url(images/ui-bg_gloss-wave_55_5c9ccc_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; }
+.ui-widget-header a { color: #ffffff; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #c5dbec; background: #dfeffc url(images/ui-bg_glass_85_dfeffc_1x400.png) 50% 50% repeat-x; font-weight: bold; /*color: #2e6e9e;*/ }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #2e6e9e; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #79b7e7; background: #d0e5f5 url(images/ui-bg_glass_75_d0e5f5_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1d5987; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #1d5987; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #79b7e7; background: #f5f8f9 url(images/ui-bg_inset-hard_100_f5f8f9_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #e17009; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #e17009; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fad42e; background: #fbec88 url(images/ui-bg_flat_55_fbec88_40x100.png) 50% 50% repeat-x; color: #363636; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_469bdd_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_469bdd_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_d8e7f3_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_6da8d5_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_217bc0_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_f9bd01_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+
+/* Overlays */
+.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }/*
+ * jQuery UI Autocomplete 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.ui-autocomplete { position: absolute; cursor: default; }
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.16
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.ui-menu {
+	list-style:none;
+	padding: 2px;
+	margin: 0;
+	display:block;
+	float: left;
+}
+.ui-menu .ui-menu {
+	margin-top: -3px;
+}
+.ui-menu .ui-menu-item {
+	margin:0;
+	padding: 0;
+	zoom: 1;
+	float: left;
+	clear: left;
+	width: 100%;
+}
+.ui-menu .ui-menu-item a {
+	text-decoration:none;
+	display:block;
+	padding:.2em .4em;
+	line-height:1.5;
+    white-space: nowrap;
+	zoom:1;
+}
+.ui-menu .ui-menu-item a.ui-state-hover,
+.ui-menu .ui-menu-item a.ui-state-active {
+	font-weight: normal;
+	margin: -1px;
+}
+/*
+ * jQuery UI Button 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
+.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.ui-button-icons-only { width: 3.4em; }
+button.ui-button-icons-only { width: 3.7em; }
+
+/*button text element */
+.ui-button .ui-button-text { display: block; line-height: 1.4;  }
+.ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.ui-buttonset { margin-right: 7px; }
+.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Datepicker 1.8.16
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.ui-datepicker .ui-datepicker-prev { left:2px; }
+.ui-datepicker .ui-datepicker-next { right:2px; }
+.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
+.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.ui-datepicker select.ui-datepicker-month,
+.ui-datepicker select.ui-datepicker-year { width: 49%;}
+.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
+.ui-datepicker td { border: 0; padding: 1px; }
+.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.ui-datepicker.ui-datepicker-multi { width:auto; }
+.ui-datepicker-multi .ui-datepicker-group { float:left; }
+.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
+
+/* RTL support */
+.ui-datepicker-rtl { direction: rtl; }
+.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.ui-datepicker-cover {
+    display: none; /*sorry for IE5*/
+    display/**/: block; /*sorry for IE5*/
+    position: absolute; /*must have*/
+    z-index: -1; /*must have*/
+    filter: mask(); /*must have*/
+    top: -4px; /*must have*/
+    left: -4px; /*must have*/
+    width: 200px; /*must have*/
+    height: 200px; /*must have*/
 }
\ No newline at end of file
diff --git a/interface/web/tools/import_plesk.php b/interface/web/tools/import_plesk.php
index de8fe7a0b55cb442f0fb64119b256d22f0e0412e..a06505cbcbafc00aa162f38af2baf31cf7e1a3de 100644
--- a/interface/web/tools/import_plesk.php
+++ b/interface/web/tools/import_plesk.php
@@ -122,21 +122,6 @@ function id_hash($id,$levels) {
     return $hash;
 }
 
-$COMMANDS = 'unset HISTFILE
-MYSERVER="192.168.1.10"
-MYSQL_EXPORT_USER="root"
-MYSQL_EXPORT_PASS=""
-MYSQL_IMPORT_USER="root"
-MYSQL_IMPORT_PASS=""
-';
-
-function add_command($cmd) {
-    global $COMMANDS;
-    
-    $COMMANDS .= $cmd . "\n";
-}
-
-
 /* TODO: document root rewrite on ftp account and other home directories */
 
 //* Check permissions for module
@@ -235,7 +220,7 @@ if(isset($_POST['start']) && $_POST['start'] == 1) {
             $params = array(
                             'company_name' => $entry['cname'],
                             'contact_name' => $entry['pname'],
-                            'customer_no' => 'Plesk' . $entry['id'],
+                            //'customer_no' => '',
                             'username' => $entry['login'],
                             'password' => $entry['password'],
                             'language' => substr($entry['locale'], 0, 2), // plesk stores as de-DE or en-US
@@ -309,7 +294,7 @@ if(isset($_POST['start']) && $_POST['start'] == 1) {
             
             if($old_client) {
                 $new_id = $old_client['client_id'];
-                $ok = $importer->client_update($session_id, $old_client['client_id'], $reseller_id, array_merge($old_client, $params));
+                $ok = $importer->client_update($session_id, $old_client['client_id'], $reseller_id, $params);
                 if($ok === false) {
                     
                 }
@@ -333,7 +318,7 @@ if(isset($_POST['start']) && $_POST['start'] == 1) {
         
         $web_config = $app->getconf->get_server_config($server_id,'web');
         
-        $domains = $exdb->queryAllRecords("SELECT d.id, d.cr_date, d.name, d.displayName, d.dns_zone_id, d.status, d.htype, d.real_size, d.cl_id, d.limits_id, d.params_id, d.guid, d.overuse, d.gl_filter, d.vendor_id, d.webspace_id, d.webspace_status, d.permissions_id, d.external_id FROM domains as d WHERE d.parentDomainId = 0");
+        $domains = $exdb->queryAllRecords("SELECT d.id, d.cr_date, d.name, d.displayName, d.dns_zone_id, d.status, d.htype, d.real_size, d.cl_id, d.limits_id, d.params_id, d.guid, d.overuse, d.gl_filter, d.vendor_id, d.webspace_id, d.webspace_status, d.permissions_id, d.external_id FROM domains as d");
         $dom_ftp_users = array();
         $domain_ids = array();
         $domain_roots = array();
@@ -471,16 +456,6 @@ if(isset($_POST['start']) && $_POST['start'] == 1) {
                 $msg .= "&nbsp; Error: " . $importer->getFault() . "<br />";
             } else {
                 $msg .= "Domain " . $entry['id'] . " (" . $entry['name'] . ") inserted -> " . $new_id . ".<br />";
-                
-                $cmd_data = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = '" . $new_id . "'");
-                $path = $cmd_data['document_root'];
-                add_command('chattr -i ' . escapeshellarg($path));
-                add_command('if [[ -f ' . $path . '/web/index.html ]] ; then rm ' . $path . '/web/index.html ; fi');
-                add_command('rsync -av --modify-window 10 --progress -e ssh root@${MYSERVER}:' . $hosting['www_root'] . '/ ' . $path . '/web/');
-                add_command('chown -R ' . $cmd_data['system_user'] . ':' . $cmd_data['system_group'] . ' ' . escapeshellarg($path));
-                add_command('grep ' . escapeshellarg($hosting['www_root']) . ' ' . $path . '/web -r -l | xargs replace ' . escapeshellarg($hosting['www_root']) . ' ' . escapeshellarg($path . '/web') . ' --');
-                add_command('chown -R root:root ' . escapeshellarg($path . '/log') . ' ' . escapeshellarg($path . '/ssl') . ' ' . escapeshellarg($path . '/web/stats'));
-                add_command('chattr +i ' . escapeshellarg($path));
             }
             
             // add domain to mail domains too
@@ -557,7 +532,7 @@ if(isset($_POST['start']) && $_POST['start'] == 1) {
                 $new_id = $old_domain['domain_id'];
                 $params = array_merge($old_domain, $params);
                 $msg .= "Found mail domain with id " . $new_id . ", updating it.<br />";
-                $ok = $importer->mail_domain_update($session_id, $plesk_ispc_ids[$domain_owners[$entry['dom_id']]], $new_id, $params);
+                $ok = $importer->sites_web_aliasdomain_update($session_id, $plesk_ispc_ids[$domain_owners[$entry['dom_id']]], $new_id, $params);
                 if($ok === false) $msg .= "&nbsp; Error: " . $importer->getFault() . "<br />";
             } else {
                 $new_id = $importer->mail_domain_add($session_id, $plesk_ispc_ids[$domain_owners[$entry['dom_id']]], $params);
@@ -573,155 +548,11 @@ if(isset($_POST['start']) && $_POST['start'] == 1) {
             }
         }
         
+        // subdomains in plesk are real vhosts, so we have to treat them as vhostsubdomains
+        $subdomains = $exdb->queryAllRecords("SELECT d.id, d.dom_id, d.name, d.displayName, d.sys_user_id, d.ssi, d.php, d.cgi, d.perl, d.python, d.fastcgi, d.miva, d.coldfusion, d.asp, d.asp_dot_net, d.ssl, d.same_ssl, d.php_handler_type, d.www_root, d.maintenance_mode, d.certificate_id FROM subdomains as d");
         $subdomain_ids = array();
         $subdomain_roots = array();
         $subdomain_owners = array();
-        
-        $subdomains = $exdb->queryAllRecords("SELECT d.id, d.cr_date, d.name, d.displayName, d.dns_zone_id, d.status, d.htype, d.real_size, d.cl_id, d.limits_id, d.params_id, d.guid, d.overuse, d.gl_filter, d.vendor_id, d.webspace_id, d.webspace_status, d.permissions_id, d.external_id, d.parentDomainId FROM domains as d WHERE d.parentDomainId != 0");
-        foreach($subdomains as $entry) {
-            $res = $exdb->query("SELECT d.dom_id, d.param, d.val FROM dom_param as d WHERE d.dom_id = '" . $entry['id'] . "'");
-            $options = array();
-            while($opt = $exdb->nextRecord()) {
-                $options[$opt['param']] = $opt['val'];
-            }
-            
-            $parent_domain = $exdb->queryOneRecord("SELECT d.id, d.cl_id, d.name FROM domains as d WHERE d.id = '" . $entry['parentDomainId'] . "'");
-            $redir_type = '';
-            $redir_path = '';
-            
-            if($entry['htype'] === 'std_fwd') {
-                // redirection
-                $redir = $exdb->queryOneRecord("SELECT f.dom_id, f.ip_address_id, f.redirect FROM forwarding as f WHERE f.dom_id = '" . $entry['id'] . "'");
-                $redir_type = 'R,L';
-                $redir_path = $redir['redirect'];
-            } elseif($entry['htype'] === 'vrt_hst') {
-                // default virtual hosting (vhost)
-            } else {
-                /* TODO: unknown type */
-            }
-            
-            $hosting = $exdb->queryOneRecord("SELECT h.dom_id, h.sys_user_id, h.ip_address_id, h.real_traffic, h.fp, h.fp_ssl, h.fp_enable, h.fp_adm, h.fp_pass, h.ssi, h.php, h.cgi, h.perl, h.python, h.fastcgi, h.miva, h.coldfusion, h.asp, h.asp_dot_net, h.ssl, h.webstat, h.same_ssl, h.traffic_bandwidth, h.max_connection, h.php_handler_type, h.www_root, h.maintenance_mode, h.certificate_id, s.login, s.account_id, s.home, s.shell, s.quota, s.mapped_to, a.password, a.type as `pwtype` FROM hosting as h LEFT JOIN sys_users as s ON (s.id = h.sys_user_id) LEFT JOIN accounts as a ON (s.account_id = a.id) WHERE h.dom_id = '" . $entry['id'] . "'");
-            if($hosting['sys_user_id']) {
-                $dom_ftp_users[] = array('id' => 0,
-                                         'dom_id' => $hosting['dom_id'],
-                                         'sys_user_id' => $hosting['sys_user_id'],
-                                         'login' => $hosting['login'],
-                                         'account_id' => $hosting['account_id'],
-                                         'home' => $hosting['home'],
-                                         'shell' => $hosting['shell'],
-                                         'quota' => $hosting['quota'],
-                                         'mapped_to' => $hosting['mapped_to'],
-                                         'password' => $hosting['password'],
-                                         'pwtype' => $hosting['pwtype']
-                                        );
-            }
-            
-            $phpmode = 'no';
-            if(get_option($hosting, 'php', 'false') === 'true') {
-                $mode = get_option($hosting, 'php_handler_type', 'module');
-                if($mode === 'module') $phpmode = 'mod';
-                else $phpmode = 'fast-cgi';
-                /* TODO: what other options could be in "php_handler_type"? */
-            }
-            /* TODO: plesk offers some more options:
-             * sys_user_id -> owner of files?
-             * ip_address_id - needed?
-             * fp - frontpage extensions
-             * miva - ?
-             * coldfusion
-             * asp
-             * asp_dot_net
-             * traffic_bandwidth
-             * max_connections
-             */
-            
-            $web_folder = $hosting['www_root'];
-            $web_folder = preg_replace('/^\/(var|srv)\/www\/(vhosts\/)?[^\/]+\/(.*)\/httpdocs.*/', '$3', $web_folder);
-            
-            //if(substr($web_folder, 0, 1) === '/') $web_folder = substr($web_folder, 1);
-            //if(substr($web_folder, -1, 1) === '/') $web_folder = substr($web_folder, 0, -1);
-            $params = array(
-                            'server_id' => $server_id,
-                            'ip_address' => '*',
-                            //'ipv6_address' => '',
-                            'domain' => $entry['name'],
-                            'web_folder' => $web_folder,
-                            'type' => 'vhostsubdomain', // can be vhost or alias
-                            'parent_domain_id' => $domain_ids[$entry['parentDomainId']],
-                            'vhost_type' => 'name', // or ip (-based)
-                            'hd_quota' => byte_to_mbyte(get_limit($limits, $entry['dom_id'], 'disk_space', -1)),
-                            'traffic_quota' => byte_to_mbyte(get_limit($limits, $entry['dom_id'], 'max_traffic', -1)),
-                            'cgi' => yes_no(get_option($hosting, 'cgi', 'false') === 'true' ? 1 : 0),
-                            'ssi' => yes_no(get_option($hosting, 'ssi', 'false') === 'true' ? 1 : 0),
-                            'suexec' => yes_no(1), // does plesk use this?!
-                            'errordocs' => get_option($options, 'apacheErrorDocs', 'false') === 'true' ? 1 : 0,
-                            'subdomain' => '', // plesk always uses this option
-                            'ssl' => yes_no(get_option($hosting, 'ssl', 'false') === 'true' ? 1 : 0),
-                            'php' => $phpmode,
-                            'fastcgi_php_version' => '', // plesk has no different php versions
-                            'ruby' => yes_no(0), // plesk has no ruby support
-                            'python' => yes_no(get_option($hosting, 'python', 'false') === 'true' ? 1 : 0),
-                            'active' => yes_no(($entry['status'] == 0 && get_option($hosting, 'maintenance_mode', 'false') !== 'true') ? 1 : 0),
-                            'redirect_type' => $redir_type,
-                            'redirect_path' => $redir_path,
-                            'seo_redirect' => '',
-                            'ssl_state' => $entry[''],
-                            'ssl_locality' => $entry[''],
-                            'ssl_organisation' => $entry[''],
-                            'ssl_organisation_unit' => $entry[''],
-                            'ssl_country' => $entry[''],
-                            'ssl_domain' => $entry[''],
-                            'ssl_request' => $entry[''],
-                            'ssl_cert' => $entry[''],
-                            'ssl_bundle' => $entry[''],
-                            'ssl_action' => $entry[''],
-                            'stats_password' => '',
-                            'stats_type' => get_option($hosting, 'webstat', 'webalizer') === 'awstats' ? 'awstats' : 'webalizer',
-                            'backup_interval' => 'none',
-                            'backup_copies' => 1,
-                            'allow_override' => 'All',
-                            'pm_process_idle_timeout' => 10,
-                            'pm_max_requests' => 0
-                            );
-
-            $old_domain = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain = '" . $entry['name'] . "'");
-            if(!$old_domain) $old_domain = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE CONCAT(subdomain, '.', domain) = '" . $entry['name'] . "'");
-            if($old_domain) {
-                $new_id = $old_domain['domain_id'];
-                $params = array_merge($old_domain, $params);
-                $msg .= "Found domain " . $entry['name'] . " with id " . $new_id . ", updating it.<br />";
-                $ok = $importer->sites_web_vhost_subdomain_update($session_id, $plesk_ispc_ids[$parent_domain['cl_id']], $new_id, $params);
-                if($ok === false) $msg .= "&nbsp; Error: " . $importer->getFault() . "<br />";
-            } else {
-                $new_id = $importer->sites_web_vhost_subdomain_add($session_id, $plesk_ispc_ids[$parent_domain['cl_id']], $params, true); // read only...
-            }
-            
-            $subdomain_ids[$entry['id']] = $new_id;
-            $subdomain_roots[$entry['id']] = $hosting['www_root'];
-            $subdomain_owners[$entry['id']] = $entry['cl_id'];
-            if($new_id === false) {
-                //something went wrong here...
-                $msg .= "Subdomain " . $entry['id'] . " (" . $entry['name'] . ") with folder \"" . $web_folder . "\" could not be inserted.<br />";
-                $msg .= "&nbsp; Error: " . $importer->getFault() . "<br />";
-            } else {
-                $msg .= "Subdomain " . $entry['id'] . " (" . $entry['name'] . ") inserted.<br />";
-                
-                $cmd_data = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = '" . $new_id . "'");
-                $path = $cmd_data['document_root'];
-                add_command('chattr -i ' . escapeshellarg($path));
-                add_command('if [[ -f ' . $path . '/' . $web_folder . '/index.html ]] ; then rm ' . $path . '/' . $web_folder . '/index.html ; fi');
-                add_command('rsync -av --modify-window 10 --progress -e ssh root@${MYSERVER}:' . $hosting['www_root'] . '/ ' . $path . '/' . $web_folder . '/');
-                add_command('chown -R ' . $cmd_data['system_user'] . ':' . $cmd_data['system_group'] . ' ' . escapeshellarg($path));
-                add_command('grep ' . escapeshellarg($hosting['www_root']) . ' ' . $path . '/web -r -l | xargs replace ' . escapeshellarg($hosting['www_root']) . ' ' . escapeshellarg($path . '/web') . ' --');
-                add_command('chown -R root:root ' . escapeshellarg($path . '/log') . ' ' . escapeshellarg($path . '/ssl') . ' ' . escapeshellarg($path . '/web/stats'));
-                add_command('chattr +i ' . escapeshellarg($path));
-                
-            }
-            $domain_ids[$entry['id']] = $new_id;
-        }
-        
-        // subdomains in plesk are real vhosts, so we have to treat them as vhostsubdomains
-        $subdomains = $exdb->queryAllRecords("SELECT d.id, d.dom_id, d.name, d.displayName, d.sys_user_id, d.ssi, d.php, d.cgi, d.perl, d.python, d.fastcgi, d.miva, d.coldfusion, d.asp, d.asp_dot_net, d.ssl, d.same_ssl, d.php_handler_type, d.www_root, d.maintenance_mode, d.certificate_id FROM subdomains as d");
         foreach($subdomains as $entry) {
             $res = $exdb->query("SELECT d.dom_id, d.param, d.val FROM dom_param as d WHERE d.dom_id = '" . $entry['dom_id'] . "'");
             $options = array();
@@ -775,15 +606,12 @@ if(isset($_POST['start']) && $_POST['start'] == 1) {
              * max_connections
              */
             
-            $web_folder = $entry['www_root'];
-            $web_folder = preg_replace('/^\/(var|srv)\/www\/(vhosts\/)?[^\/]+\/(.*)\/httpdocs.*/', '$3', $web_folder);
-
             $params = array(
                             'server_id' => $server_id,
                             'ip_address' => '*',
                             //'ipv6_address' => '',
                             'domain' => $entry['name'] . '.' . $parent_domain['name'],
-                            'web_folder' => $web_folder,
+                            'web_folder' => $entry['www_root'],
                             'type' => 'vhostsubdomain', // can be vhost or alias
                             'parent_domain_id' => $domain_ids[$entry['dom_id']],
                             'vhost_type' => 'name', // or ip (-based)
@@ -843,15 +671,6 @@ if(isset($_POST['start']) && $_POST['start'] == 1) {
                 $msg .= "&nbsp; Error: " . $importer->getFault() . "<br />";
             } else {
                 $msg .= "Subdomain " . $entry['id'] . " (" . $entry['name'] . ") inserted.<br />";
-                
-                $cmd_data = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = '" . $new_id . "'");
-                $path = $cmd_data['document_root'];
-                add_command('chattr -i ' . escapeshellarg($path));
-                add_command('if [[ -f ' . $path . '/' . $web_folder . '/index.html ]] ; then rm ' . $path . '/' . $web_folder . '/index.html ; fi');
-                add_command('rsync -av --modify-window 10 --progress -e ssh root@${MYSERVER}:' . $entry['www_root'] . '/ ' . $path . '/' . $web_folder . '/');
-                add_command('chown -R ' . $cmd_data['system_user'] . ':' . $cmd_data['system_group'] . ' ' . escapeshellarg($path));
-                add_command('chown -R root:root ' . escapeshellarg($path . '/log') . ' ' . escapeshellarg($path . '/ssl') . ' ' . escapeshellarg($path . '/web/stats'));
-                add_command('chattr +i ' . escapeshellarg($path));
             }
         }
         
@@ -1019,9 +838,6 @@ if(isset($_POST['start']) && $_POST['start'] == 1) {
                             'parent_domain_id' => $domain_ids[$entry['dom_id']],
                             'path' => $entry['path'],
                             'active' => 'y');
-            
-            $client_id = $plesk_ispc_ids[$domain_owners[$entry['dom_id']]];
-            
             $folder_id = 0;
             $check = $app->db->queryOneRecord('SELECT * FROM `web_folder` WHERE `parent_domain_id` = \'' . $domain_ids[$entry['dom_id']] . '\' AND `path` = \'' . $app->db->quote($entry['path']) . '\'');
             if($check) {
@@ -1038,18 +854,13 @@ if(isset($_POST['start']) && $_POST['start'] == 1) {
             $folder_ids[$entry['id']] = $folder_id;
         }
         
-        $pd_users = $exdb->queryAllRecords("SELECT u.id, u.login, u.account_id, u.pd_id, a.password, d.dom_id FROM pd_users as u INNER JOIN protected_dirs as d ON (d.id = u.pd_id) INNER JOIN accounts as a ON (a.id = u.account_id)");
-        foreach($pd_users as $entry) {
+        $pd_users = $exdb->queryAllRecords("SELECT u.id, u.login, u.account_id, u.pd_id, a.password FROM pd_users as u INNER JOIN accounts as a ON (a.id = u.account_id)");
+        foreach($protected_dirs as $entry) {
             $params = array('server_id' => $server_id,
                             'web_folder_id' => $folder_ids[$entry['pd_id']],
                             'username' => $entry['login'],
                             'password' => $entry['password'],
                             'active' => 'y');
-            if($entry['login'] == '' || !isset($folder_ids[$entry['pd_id']])) {
-                $msg .= 'Skipping Folder user because of missing data.<br />';
-                continue;
-            }
-            $client_id = $plesk_ispc_ids[$domain_owners[$entry['dom_id']]];
             
             $check = $app->db->queryOneRecord('SELECT * FROM `web_folder_user` WHERE `web_folder_id` = ' . intval($folder_ids[$entry['pd_id']]) . ' AND `username` = \'' . $entry['login'] . '\'');
             if($check) {
@@ -1074,7 +885,7 @@ if(isset($_POST['start']) && $_POST['start'] == 1) {
         $ftp_users = array_merge($ftp_users, $dom_ftp_users);
         foreach($ftp_users as $entry) {
             $parent_domain = $exdb->queryOneRecord("SELECT d.id, d.cl_id, d.name FROM domains as d WHERE d.id = '" . $entry['dom_id'] . "'");
-            if(!$entry['id']) continue;
+            
             $ispc_dom_id = $domain_ids[$entry['dom_id']];
             $client_id = $plesk_ispc_ids[$domain_owners[$entry['dom_id']]];
             if(!$client_id) $client_id = 0;
@@ -1127,7 +938,7 @@ if(isset($_POST['start']) && $_POST['start'] == 1) {
                     $msg .= "FTP Account conflicts with other domain!<br />";
                 } else {
                     $new_id = $old_ftp['ftp_user_id'];
-                    $ok = $importer->sites_ftp_user_update($session_id, $client_id, $new_id, array_merge($old_ftp, $params));
+                    $ok = $importer->sites_ftp_user_update($session_id, $client_id, $new_id, $params);
                     if($ok === false) $msg .= "&nbsp; Error: " . $importer->getFault() . "<br />";
                 }
             } else {
@@ -1200,7 +1011,7 @@ if(isset($_POST['start']) && $_POST['start'] == 1) {
                 $old_mail = $app->db->queryOneRecord("SELECT mailuser_id FROM mail_user WHERE email = '" . $entry['mail_name'] . "@" . $parent_domain['name'] . "'");
                 if($old_mail) {
                     $new_id = $old_mail['mailuser_id'];
-                    $ok = $importer->mail_user_update($session_id, $client_id, $new_id, array_merge($old_mail, $params));
+                    $ok = $importer->mail_user_update($session_id, $client_id, $new_id, $params);
                     if($ok === false) $msg .= "&nbsp; Error: " . $importer->getFault() . "<br />";
                 } else {
                     $new_id = $importer->mail_user_add($session_id, $client_id, $params);
@@ -1212,13 +1023,6 @@ if(isset($_POST['start']) && $_POST['start'] == 1) {
                     $msg .= "&nbsp; Error: " . $importer->getFault() . "<br />";
                 } else {
                     $msg .= "Mail " . $entry['id'] . " (" . $entry['mail_name'] . "@" . $parent_domain['name'] . ") inserted/updated.<br />";
-                    
-                    add_command('rsync -av --delete-after --modify-window 10 --progress -e ssh root@${MYSERVER}:/var/qmail/mailnames/' . $parent_domain['name'] . '/' . strtolower($entry['mail_name']) . '/Maildir/ ' . $maildir . '/Maildir/');
-                    add_command('chown -R vmail:vmail ' . $maildir);
-                    add_command('chmod 744 ' . $maildir . '/Maildir/subscriptions');
-                    add_command('chmod 600 ' . $maildir . '/Maildir/dovecot-*');
-                    add_command('chmod 700 ' . $maildir . '/Maildir/cur ' . $maildir . '/Maildir/new ' . $maildir . '/Maildir/tmp');
-                    add_command('chmod 600 ' . $maildir . '/Maildir/cur/* ' . $maildir . '/Maildir/new/* ' . $maildir . '/Maildir/tmp/*');
                 }
                 $mail_ids[$entry['id']] = $new_id;
             }
@@ -1237,7 +1041,7 @@ if(isset($_POST['start']) && $_POST['start'] == 1) {
                 $old_mail = $app->db->queryOneRecord("SELECT forwarding_id FROM mail_forwarding WHERE source = '" . $entry['mail_name'] . "@" . $parent_domain['name'] . "' AND destination = '" . $redir['address'] . "'");
                 if($old_mail) {
                     $new_id = $old_mail['forwarding_id'];
-                    $ok = $importer->mail_forward_update($session_id, $client_id, $new_id, array_merge($old_mail, $params));
+                    $ok = $importer->mail_forward_update($session_id, $client_id, $new_id, $params);
                     if($ok === false) $msg .= "&nbsp; Error: " . $importer->getFault() . "<br />";
                 } else {
                     $new_id = $importer->mail_forward_add($session_id, $client_id, $params);
@@ -1276,7 +1080,7 @@ if(isset($_POST['start']) && $_POST['start'] == 1) {
             $old_mail = $app->db->queryOneRecord("SELECT forwarding_id FROM mail_forwarding WHERE source = '" . $entry['alias'] . "@" . $parent_domain['name'] . "' AND destination = '" . $entry['mail_name'] . "@" . $parent_domain['name'] . "'");
             if($old_mail) {
                 $new_id = $old_mail['forwarding_id'];
-                $ok = $importer->mail_alias_update($session_id, $client_id, $new_id, array_merge($old_mail, $params));
+                $ok = $importer->mail_alias_update($session_id, $client_id, $new_id, $params);
                 if($ok === false) $msg .= "&nbsp; Error: " . $importer->getFault() . "<br />";
             } else {
                 $new_id = $importer->mail_alias_add($session_id, $client_id, $params);
@@ -1304,15 +1108,12 @@ if(isset($_POST['start']) && $_POST['start'] == 1) {
         
         $db_userids = array();
         
-        $db_users  = $exdb->queryAllRecords("SELECT u.id, u.login, u.account_id, u.db_id, a.password, a.type as `pwtype`, d.dom_id FROM db_users as u INNER JOIN data_bases as d ON (d.id = u.db_id) LEFT JOIN accounts as a ON (a.id = u.account_id)");
+        $db_users  = $exdb->queryAllRecords("SELECT u.id, u.login, u.account_id, u.db_id, a.password, a.type as `pwtype` FROM db_users as u LEFT JOIN accounts as a ON (a.id = u.account_id)");
         foreach($db_users as $db_user) {
             // database user
             $params = array('server_id' => $server_id,
                             'database_user' => $db_user['login'],
                             'database_password' => $db_user['password']);
-            
-            $client_id = $plesk_ispc_ids[$domain_owners[$db_user['dom_id']]];
-
             $check = $app->db->queryOneRecord('SELECT * FROM `web_database_user` WHERE `database_user` = \'' . $app->db->quote($db_user['login']) . '\'');
             $db_user_id = 0;
             if($check) {
@@ -1326,8 +1127,6 @@ if(isset($_POST['start']) && $_POST['start'] == 1) {
             if(!isset($db_userids[$db_user['db_id']])) $db_userids[$db_user['db_id']] = $db_user_id;
             $msg .= 'Created / updated database user: ' . $db_user['login'] . '<br />';
         }
-         
-        add_command('# DATABASES');
             
         $databases  = $exdb->queryAllRecords("SELECT d.id, d.name, d.type, d.dom_id, d.db_server_id, d.default_user_id FROM `data_bases` as d");
         foreach($databases as $database) {
@@ -1342,8 +1141,6 @@ if(isset($_POST['start']) && $_POST['start'] == 1) {
                             'active' => 'y',
                             'remote_ips' => '');
             
-            $client_id = $plesk_ispc_ids[$domain_owners[$database['dom_id']]];
-            
             $check = $app->db->queryOneRecord('SELECT * FROM `web_database` WHERE `database_name` = \'' . $app->db->quote($database['name']) . '\'');
             if($check) {
                 $ok = $importer->sites_database_update($session_id, $client_id, $check['database_id'], array_merge($check, $params));
@@ -1352,9 +1149,6 @@ if(isset($_POST['start']) && $_POST['start'] == 1) {
                 $importer->sites_database_add($session_id, $client_id, $params);
             }
             
-            add_command('for T in `mysql -u ${MYSQL_IMPORT_USER} -p${MYSQL_IMPORT_PASS} ' . $database['name'] . ' -e \'show tables\' | awk \'{ print $1}\' | grep -v \'^Tables\'` ; do echo "DROP TABLE \\`$T\\`" ; mysql -u ${MYSQL_IMPORT_USER} -p${MYSQL_IMPORT_PASS} ' . $database['name'] . ' -e "DROP TABLE \\`$T\\`" ; done');
-            add_command('mysqldump -cCQ --quote-names --hex-blob -h ${MYSERVER} -u ${MYSQL_EXPORT_USER} -p${MYSQL_EXPORT_PASS} ' . $database['name'] . ' | mysql -D ' . $database['name'] . ' -u ${MYSQL_IMPORT_USER} -p${MYSQL_IMPORT_PASS}');
-            
             $msg .= 'Created / updated database: ' . $database['name'] . '<br />';
          }
         
@@ -1393,13 +1187,6 @@ if(isset($_POST['start']) && $_POST['start'] == 1) {
         id, login, account_id, home, shell, quota, mapped_to
         
          */
-        add_command('unset MYSERVER');
-        add_command('unset MYSQL_EXPORT_USER');
-        add_command('unset MYSQL_EXPORT_PASS');
-        add_command('unset MYSQL_IMPORT_USER');
-        add_command('unset MYSQL_IMPORT_PASS');
-        add_command('# END');
-        file_put_contents('/tmp/plesk_import_commands.sh', $COMMANDS);
 	} else {
         $msg .= 'Connecting to external database failed!<br />';
         $msg .= $exdb->connect_error;
diff --git a/interface/web/tools/import_vpopmail.php b/interface/web/tools/import_vpopmail.php
deleted file mode 100644
index cb997941852c6b831c0bc6b9b50214eb9e183701..0000000000000000000000000000000000000000
--- a/interface/web/tools/import_vpopmail.php
+++ /dev/null
@@ -1,267 +0,0 @@
-<?php
-/*
-Copyright (c) 2012, Till Brehm, projektfarm Gmbh, ISPConfig UG
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of ISPConfig nor the names of its contributors
-      may be used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-set_time_limit(0);
-
-require_once('../../lib/config.inc.php');
-require_once('../../lib/app.inc.php');
-
-//* Check permissions for module
-$app->auth->check_module_permissions('admin');
-
-//* This is only allowed for administrators
-if(!$app->auth->is_admin()) die('only allowed for administrators.');
-
-$app->uses('tpl,auth');
-
-$app->tpl->newTemplate('form.tpl.htm');
-$app->tpl->setInclude('content_tpl', 'templates/import_vpopmail.htm');
-$msg = '';
-$error = '';
-
-//* load language file
-$lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_import_vpopmail.lng';
-include($lng_file);
-$app->tpl->setVar($wb);
-
-if(isset($_POST['db_hostname']) && $_POST['db_hostname'] != '') {
-	
-	//* Set external Login details
-	$conf['imp_db_host'] = $_POST['db_hostname'];
-	$conf['imp_db_database'] = $_POST['db_name'];
-	$conf['imp_db_user'] = $_POST['db_user'];
-	$conf['imp_db_password'] = $_POST['db_password'];
-    $conf['imp_db_charset'] = 'utf8';
-    $conf['imp_db_new_link'] = false;
-    $conf['imp_db_client_flags'] = 0;
-	
-	//* create new db object
-	$exdb = new db('imp');
-	
-	if($exdb !== false) {
-		$msg .= 'Databse connection succeeded<br />';
-		
-		$local_server_id = intval($_POST['local_server_id']);
-		$tmp = $app->db->queryOneRecord("SELECT mail_server FROM server WHERE server_id = $local_server_id");
-		
-		if($tmp['mail_server'] == 1) {
-			start_import();
-		} else {
-			$msg .= 'The server with the ID $local_server_id is not a mail server.<br />';
-		}
-		
-	} else {
-		$msg .= 'Database connection failed<br />';
-	}
-	
-} else {
-	$_POST['local_server_id'] = 1;
-}
-
-$app->tpl->setVar('db_hostname',$_POST['db_hostname']);
-$app->tpl->setVar('db_user',$_POST['db_user']);
-$app->tpl->setVar('db_password',$_POST['db_password']);
-$app->tpl->setVar('db_name',$_POST['db_name']);
-$app->tpl->setVar('local_server_id',$_POST['local_server_id']);
-$app->tpl->setVar('msg',$msg);
-$app->tpl->setVar('error',$error);
-
-$app->tpl_defaults();
-$app->tpl->pparse();
-
-###########################################################
-
-function start_import() {
-	global $app, $conf, $msg, $error, $exdb, $local_server_id;
-	
-	//* Import the clients
-	$records = $exdb->queryAllRecords("SELECT * FROM vpopmail WHERE pw_name = 'postmaster'");	
-	if(is_array($records)) {
-		foreach($records as $rec) {
-			$pw_domain = $rec['pw_domain'];
-			//* Check if we have a client with that username already
-			$tmp = $app->db->queryOneRecord("SELECT count(client_id) as number FROM client WHERE username = '$pw_domain'");
-			if($tmp['number'] == 0) {
-				$pw_crypt_password = $app->auth->crypt_password($rec['pw_clear_passwd']);
-				$country = 'FI';
-				
-				//* add client
-				$sql = "INSERT INTO `client` (`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `company_name`, `company_id`, `contact_name`, `customer_no`, `vat_id`, `street`, `zip`, `city`, `state`, `country`, `telephone`, `mobile`, `fax`, `email`, `internet`, `icq`, `notes`, `bank_account_owner`, `bank_account_number`, `bank_code`, `bank_name`, `bank_account_iban`, `bank_account_swift`, `default_mailserver`, `limit_maildomain`, `limit_mailbox`, `limit_mailalias`, `limit_mailaliasdomain`, `limit_mailforward`, `limit_mailcatchall`, `limit_mailrouting`, `limit_mailfilter`, `limit_fetchmail`, `limit_mailquota`, `limit_spamfilter_wblist`, `limit_spamfilter_user`, `limit_spamfilter_policy`, `default_webserver`, `limit_web_ip`, `limit_web_domain`, `limit_web_quota`, `web_php_options`, `limit_cgi`, `limit_ssi`, `limit_perl`, `limit_ruby`, `limit_python`, `force_suexec`, `limit_hterror`, `limit_wildcard`, `limit_ssl`, `limit_web_subdomain`, `limit_web_aliasdomain`, `limit_ftp_user`, `limit_shell_user`, `ssh_chroot`, `limit_webdav_user`, `limit_aps`, `default_dnsserver`, `limit_dns_zone`, `limit_dns_slave_zone`, `limit_dns_record`, `default_dbserver`, `limit_database`, `limit_cron`, `limit_cron_type`, `limit_cron_frequency`, `limit_traffic_quota`, `limit_client`, `limit_mailmailinglist`, `limit_openvz_vm`, `limit_openvz_vm_template_id`, `parent_client_id`, `username`, `password`, `language`, `usertheme`, `template_master`, `template_additional`, `created_at`, `id_rsa`, `ssh_rsa`) 
-				VALUES(1, 1, 'riud', 'riud', '', '', '', '$pw_domain', '', '', '', '', '', '', '$country', '', '', '', '', 'http://', '', '', '', '', '', '', '', '', 1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, 0, 0, 0, 1, NULL, -1, -1, 'no,fast-cgi,cgi,mod,suphp', 'n', 'n', 'n', 'n', 'n', 'y', 'n', 'n', 'n', -1, -1, -1, 0, 'no,jailkit', 0, 0, 1, -1, -1, -1, 1, -1, 0, 'url', 5, -1, 0, -1, 0, 0, 0, '$pw_domain', '$pw_crypt_password', '".$conf['language']."', 'default', 0, '', NOW(), '', '')";
-				$app->db->query($sql);
-				$client_id = $app->db->insertID();
-				
-				//* add sys_group
-				$groupid = $app->db->datalogInsert('sys_group', "(name,description,client_id) VALUES ('".$app->db->quote($pw_domain)."','',".$client_id.")", 'groupid');
-				$groups = $groupid;
-				
-				$username = $app->db->quote($pw_domain);
-				$password = $pw_crypt_password;
-				$modules = $conf['interface_modules_enabled'];
-				$startmodule = 'dashboard';
-				$usertheme = $app->db->quote('default');
-				$type = 'user';
-				$active = 1;
-				$language = $app->db->quote($conf["language"]);
-				//$password = $app->auth->crypt_password($password);
-		
-				// Create the controlpaneluser for the client
-				//Generate ssh-rsa-keys
-				exec('ssh-keygen -t rsa -C '.$username.'-rsa-key-'.time().' -f /tmp/id_rsa -N ""');
-				$app->db->query("UPDATE client SET created_at = ".time().", id_rsa = '".$app->db->quote(@file_get_contents('/tmp/id_rsa'))."', ssh_rsa = '".$app->db->quote(@file_get_contents('/tmp/id_rsa.pub'))."' WHERE client_id = ".$client_id);
-				exec('rm -f /tmp/id_rsa /tmp/id_rsa.pub');
-		
-				// Create the controlpaneluser for the client
-				$sql = "INSERT INTO sys_user (username,passwort,modules,startmodule,app_theme,typ,active,language,groups,default_group,client_id)
-				VALUES ('$username','$password','$modules','$startmodule','$usertheme','$type','$active','$language',$groups,$groupid,".$client_id.")";
-				$app->db->query($sql);
-		
-				//* Set the default servers
-				$tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE mail_server = 1 AND mirror_server_id = 0 LIMIT 0,1');
-				$default_mailserver = $app->functions->intval($tmp['server_id']);
-				$tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE web_server = 1 AND mirror_server_id = 0 LIMIT 0,1');
-				$default_webserver = $app->functions->intval($tmp['server_id']);
-				$tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE dns_server = 1 AND mirror_server_id = 0 LIMIT 0,1');
-				$default_dnsserver = $app->functions->intval($tmp['server_id']);
-				$tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE db_server = 1 AND mirror_server_id = 0 LIMIT 0,1');
-				$default_dbserver = $app->functions->intval($tmp['server_id']);
-		
-				$sql = "UPDATE client SET default_mailserver = $default_mailserver, default_webserver = $default_webserver, default_dnsserver = $default_dnsserver, default_dbserver = $default_dbserver WHERE client_id = ".$client_id;
-				$app->db->query($sql);
-				
-				$msg .= "Added Client $username.<br />";
-			} else {
-				$msg .= "Client $username exists, skipped.<br />";
-			}
-		}
-	}
-	
-	//* Import the mail domains
-	$records = $exdb->queryAllRecords("SELECT DISTINCT pw_domain FROM `vpopmail`");	
-	if(is_array($records)) {
-		foreach($records as $rec) {
-			$domain = $rec['pw_domain'];
-			
-			//* Check if domain exists already
-			$tmp = $app->db->queryOneRecord("SELECT count(domain_id) as number FROM mail_domain WHERE domain = '$domain'");
-			if($tmp['number'] == 0) {
-				$user_rec = $app->db->queryOneRecord("SELECT * FROM sys_user WHERE username = '$domain'");
-				$sys_userid = ($user_rec['userid'] > 0)?$user_rec['userid']:1;
-				$sys_groupid = ($user_rec['default_group'] > 0)?$user_rec['default_group']:1;
-				
-				$sql = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `domain`, `active`) 
-				VALUES(".$sys_userid.", ".$sys_groupid.", 'riud', 'riud', '', $local_server_id, '$domain', 'y')";
-				$app->db->datalogInsert('mail_domain', $sql, 'domain_id');
-				$msg .= "Imported domain $domain <br />";
-			} else {
-				$msg .= "Skipped domain $domain <br />";
-			}
-		}
-	}
-	
-	//* Import mailboxes
-	$records = $exdb->queryAllRecords("SELECT * FROM `vpopmail`");	
-	if(is_array($records)) {
-		foreach($records as $rec) {
-			$domain = $rec['pw_domain'];
-			$email = $rec['pw_name'].'@'.$rec['pw_domain'];
-			
-			//* Check for duplicate mailboxes
-			$tmp = $app->db->queryOneRecord("SELECT count(mailuser_id) as number FROM mail_user WHERE email = '".$app->db->quote($email)."'");
-			
-			if($tmp['number'] == 0) {
-			
-				//* get the mail domain for the mailbox
-				$domain_rec = $app->db->queryOneRecord("SELECT * FROM mail_domain WHERE domain = '$domain'");
-				
-				if(is_array($domain_rec)) {
-					$pw_crypt_password = $app->auth->crypt_password($rec['pw_clear_passwd']);
-					$maildir_path = "/var/vmail/".$rec['pw_domain']."/".$rec['pw_name'];
-				
-					//* Insert the mailbox
-					$sql = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `email`, `login`, `password`, `name`, `uid`, `gid`, `maildir`, `quota`, `cc`, `homedir`, `autoresponder`, `autoresponder_start_date`, `autoresponder_end_date`, `autoresponder_subject`, `autoresponder_text`, `move_junk`, `custom_mailfilter`, `postfix`, `access`, `disableimap`, `disablepop3`, `disabledeliver`, `disablesmtp`, `disablesieve`, `disablelda`, `disabledoveadm`) 
-					VALUES(".$domain_rec['sys_userid'].", ".$domain_rec['sys_groupid'].", 'riud', 'riud', '', $local_server_id, '$email', '$email', '$pw_crypt_password', '$email', 5000, 5000, '$maildir_path', 0, '', '/var/vmail', 'n', '0000-00-00 00:00:00', '0000-00-00 00:00:00', 'Out of office reply', '', 'n', '', 'y', 'n', 'n', 'n', 'n', 'n', 'n', 'n', 'n')";
-					$app->db->datalogInsert('mail_user', $sql, 'mailuser_id');
-					$msg .= "Imported mailbox $email <br />";
-				}
-			}else {
-				$msg .= "Skipped mailbox $email <br />";
-			}
-		}
-	}
-	
-	//* Import Aliases
-	$records = $exdb->queryAllRecords("SELECT * FROM `valias`");	
-	if(is_array($records)) {
-		foreach($records as $rec) {
-			
-			$email = $rec['alias'].'@'.$rec['domain'];
-			$target = '';
-			
-			if(stristr($rec['valias_line'],'|')) {
-				//* Skipped
-				$msg .= "Skipped $email as target is a script pipe.<br />";
-			} elseif (substr(trim($rec['valias_line']),-9) == '/Maildir/') {
-				$parts = explode('/',$rec['valias_line']);
-				$target_user = $parts[count($parts)-3];
-				$target_domain = $parts[count($parts)-4];
-				$target = $target_user.'@'.$target_domain;
-			} elseif (substr(trim($rec['valias_line']),0,1) == '&') {
-				$target = substr(trim($rec['valias_line']),1);
-			} elseif (stristr($rec['valias_line'],'@')) {
-				$target = $rec['valias_line'];
-			} else {
-				//* Unknown
-				$msg .= "Skipped $email as format of target ".$rec['valias_line']." is unknown.<br />";
-			}
-			
-			//* Check for duplicate forwards
-			$tmp = $app->db->queryOneRecord("SELECT count(forwarding_id) as number FROM mail_forwarding WHERE source = '".$app->db->quote($email)."' AND destination = '".$app->db->quote($target)."'");
-			
-			if($tmp['number'] == 0 && $target != '') {
-				
-				//* get the mail domain
-				$domain_rec = $app->db->queryOneRecord("SELECT * FROM mail_domain WHERE domain = '".$rec['domain']."'");
-				
-				if(is_array($domain_rec)) {
-					$sql = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `source`, `destination`, `type`, `active`) 
-					VALUES(".$domain_rec['sys_userid'].", ".$domain_rec['sys_groupid'].", 'riud', 'riud', '', $local_server_id, '".$app->db->quote($email)."', '".$app->db->quote($target)."', 'forward', 'y')";
-					$app->db->datalogInsert('mail_forwarding', $sql, 'forwarding_id');
-				}
-				$msg .= "Imported alias $email.<br />";
-			} else {
-				$msg .= "Skipped alias $email as it exists already.<br />";
-			}
-		}
-	}
-	
-}
-
-
-?>
diff --git a/interface/web/tools/lib/interface.d/tpl_default.menu.php b/interface/web/tools/lib/interface.d/tpl_default.menu.php
index f55b480e8c8bc813d4bffc9396e711e651483297..7b8555c609cd8ce36f9b5bbeb4f432f93726bc20 100644
--- a/interface/web/tools/lib/interface.d/tpl_default.menu.php
+++ b/interface/web/tools/lib/interface.d/tpl_default.menu.php
@@ -1,8 +1,8 @@
-<?php
-
-// No settings yet
-//$items[] = array(   'title'     => 'Default Theme',
-//                    'target' 	=> 'content',
-//                    'link'	=> 'tools/tpl_default.php',
-//                    'html_id'   => 'tpl_default');
-?>
+<?php
+
+// No settings yet
+//$items[] = array(   'title'     => 'Default Theme',
+//                    'target' 	=> 'content',
+//                    'link'	=> 'tools/tpl_default.php',
+//                    'html_id'   => 'tpl_default');
+?>
diff --git a/interface/web/tools/lib/lang/cz.lng b/interface/web/tools/lib/lang/cz.lng
index 66bcaf49ae1aca04f3c85100ce9bf0a87f1c74c9..2379ffb8e57384e55e8772a7c5101d2931ee1b49 100644
--- a/interface/web/tools/lib/lang/cz.lng
+++ b/interface/web/tools/lib/lang/cz.lng
@@ -11,3 +11,4 @@ $wb['ISPConfig 3 mail'] = 'ISPConfig 3 vzdalený e-mail server';
 $wb['PDNS Tupa'] = 'PowerDNS Tupa';
 $wb['Interface'] = 'Rozhraní';
 ?>
+
diff --git a/interface/web/tools/lib/lang/cz_import_ispconfig.lng b/interface/web/tools/lib/lang/cz_import_ispconfig.lng
index 8ebf71795c1cdf46acba844e8389337533d3163c..97d213ad824750852767035387cfbad175e0d065 100644
--- a/interface/web/tools/lib/lang/cz_import_ispconfig.lng
+++ b/interface/web/tools/lib/lang/cz_import_ispconfig.lng
@@ -21,3 +21,4 @@ $wb['import_forward_txt'] = 'Import forward';
 $wb['import_user_filter_txt'] = 'Importovat uživatelský filter';
 $wb['import_spamfilter_txt'] = 'Importovat spamový filter';
 ?>
+
diff --git a/interface/web/tools/lib/lang/cz_import_vpopmail.lng b/interface/web/tools/lib/lang/cz_import_vpopmail.lng
new file mode 100644
index 0000000000000000000000000000000000000000..c794425b08d73542611b91c228004694fcbff83b
--- /dev/null
+++ b/interface/web/tools/lib/lang/cz_import_vpopmail.lng
@@ -0,0 +1,8 @@
+<?php
+$wb['head_txt'] = 'Importovat e-mailové konfigurace z Vpopmail';
+$wb['legend_txt'] = 'Remote database server connection details';
+$wb['btn_start_txt'] = 'Spustit import';
+$wb['btn_connect_txt'] = 'Připojit ke vzdálenému serveru';
+$wb['btn_cancel_txt'] = 'Zrušit';
+?>
+
diff --git a/interface/web/tools/lib/lang/cz_index.lng b/interface/web/tools/lib/lang/cz_index.lng
index 5ebf1ec341c14fab8c44a4b2313f80041839eb1f..c3db96e19dae363e581dabc3b5153f805bbc40b9 100644
--- a/interface/web/tools/lib/lang/cz_index.lng
+++ b/interface/web/tools/lib/lang/cz_index.lng
@@ -2,3 +2,4 @@
 $wb['page_head_txt'] = 'ISPConfig nástroje';
 $wb['page_desc_txt'] = 'Změna uživatelského nastavení';
 ?>
+
diff --git a/interface/web/tools/lib/lang/cz_interface.lng b/interface/web/tools/lib/lang/cz_interface.lng
index 507b7c3cbeda904058d89d4929dfed78d349fa87..1ac22ec6ca3ca580c9503c4f0ed626a7d7efd7f2 100644
--- a/interface/web/tools/lib/lang/cz_interface.lng
+++ b/interface/web/tools/lib/lang/cz_interface.lng
@@ -5,3 +5,4 @@ $wb['language_txt'] = 'Jazyk';
 $wb['startmodule_txt'] = 'Výchozí modul po přihlášení';
 $wb['app_theme_txt'] = 'Výchozí grafické téma';
 ?>
+
diff --git a/interface/web/tools/lib/lang/cz_resync.lng b/interface/web/tools/lib/lang/cz_resync.lng
index 96d622e28ab2441253a5cc1885ef280fae89cc93..ff1e3a586aa665a14caafe83acd63b87df3f00f8 100644
--- a/interface/web/tools/lib/lang/cz_resync.lng
+++ b/interface/web/tools/lib/lang/cz_resync.lng
@@ -11,3 +11,4 @@ $wb['resync_dns_txt'] = 'Resynchronizovat DNS záznamy';
 $wb['btn_start_txt'] = 'Zahájit';
 $wb['btn_cancel_txt'] = 'Zrušit';
 ?>
+
diff --git a/interface/web/tools/lib/lang/cz_tpl_default.lng b/interface/web/tools/lib/lang/cz_tpl_default.lng
index 0f037f1590b07a7fdf6b5dbf3d4f2f951f7045fa..fb77e7cb0a745f6cfa3c52d2f372b6d4e66c3bf5 100644
--- a/interface/web/tools/lib/lang/cz_tpl_default.lng
+++ b/interface/web/tools/lib/lang/cz_tpl_default.lng
@@ -5,3 +5,4 @@ $wb['no_settings_txt'] = 'Nejsou žádné nastavení pro výchozí motiv.';
 $wb['btn_start_txt'] = 'Uložit';
 $wb['btn_cancel_txt'] = 'Zpět';
 ?>
+
diff --git a/interface/web/tools/lib/lang/cz_usersettings.lng b/interface/web/tools/lib/lang/cz_usersettings.lng
index dec46b7a06de801c358648cd73bdb30c8370e482..eb3599b8514f1b66170c37bf2fdb4ca145d6c053 100644
--- a/interface/web/tools/lib/lang/cz_usersettings.lng
+++ b/interface/web/tools/lib/lang/cz_usersettings.lng
@@ -10,3 +10,4 @@ $wb['repeat_password_txt'] = 'Opakujte heslo';
 $wb['password_mismatch_txt'] = 'Hesla se neshodují.';
 $wb['password_match_txt'] = 'Hesla se shodují.';
 ?>
+
diff --git a/interface/web/tools/lib/lang/de.lng b/interface/web/tools/lib/lang/de.lng
index 5a1c501cb53be1563e0840e830cb3ad1242a071e..62e0debc46f46e433e35c4f5b2a5e3b71b9b8c4a 100644
--- a/interface/web/tools/lib/lang/de.lng
+++ b/interface/web/tools/lib/lang/de.lng
@@ -11,3 +11,4 @@ $wb['Import'] = 'Importieren';
 $wb['ISPConfig 3 mail'] = 'ISPConfig 3 E-Mail';
 $wb['PDNS Tupa'] = 'PowerDNS Tupa';
 ?>
+
diff --git a/interface/web/tools/lib/lang/de_import_ispconfig.lng b/interface/web/tools/lib/lang/de_import_ispconfig.lng
index d8ae6cf1a7b3270abd977a50274b9d6ba9f93a61..eb3a8cf01276accf58246655f88b409ec204a92a 100644
--- a/interface/web/tools/lib/lang/de_import_ispconfig.lng
+++ b/interface/web/tools/lib/lang/de_import_ispconfig.lng
@@ -21,3 +21,4 @@ $wb['import_forward_txt'] = 'Weiterleitungen importieren';
 $wb['import_user_filter_txt'] = 'Benutzer Filter importieren';
 $wb['import_spamfilter_txt'] = 'Spamfilter importieren';
 ?>
+
diff --git a/interface/web/tools/lib/lang/de_index.lng b/interface/web/tools/lib/lang/de_index.lng
index 8cde04515ecb9600722f4222cc0ee9de0df76db3..0bfbcc7c1380a6109e51916771aa8083d19af232 100644
--- a/interface/web/tools/lib/lang/de_index.lng
+++ b/interface/web/tools/lib/lang/de_index.lng
@@ -2,3 +2,4 @@
 $wb['page_head_txt'] = 'ISPConfig Einstellungen';
 $wb['page_desc_txt'] = 'Benutzereinstellungen ändern';
 ?>
+
diff --git a/interface/web/tools/lib/lang/de_interface.lng b/interface/web/tools/lib/lang/de_interface.lng
index 2af008f7639d2806c904323588c719ba096c8605..4ec5d9d8707f08faedc400dae8032dab35b6d8f6 100644
--- a/interface/web/tools/lib/lang/de_interface.lng
+++ b/interface/web/tools/lib/lang/de_interface.lng
@@ -5,3 +5,4 @@ $wb['language_txt'] = 'Sprache';
 $wb['startmodule_txt'] = 'Startmodul';
 $wb['app_theme_txt'] = 'Design';
 ?>
+
diff --git a/interface/web/tools/lib/lang/de_resync.lng b/interface/web/tools/lib/lang/de_resync.lng
index 0387ae6265b891bf5fe5c9b1aca279842a5b2aa9..cf858b7df1d9c0601bfd67085f9fe66a0b0436cc 100644
--- a/interface/web/tools/lib/lang/de_resync.lng
+++ b/interface/web/tools/lib/lang/de_resync.lng
@@ -11,3 +11,4 @@ $wb['resync_dns_txt'] = 'DNS Einträge';
 $wb['btn_start_txt'] = 'Start';
 $wb['btn_cancel_txt'] = 'Zurück';
 ?>
+
diff --git a/interface/web/tools/lib/lang/de_tpl_default.lng b/interface/web/tools/lib/lang/de_tpl_default.lng
index 45de148b39202bf0eb7f6929fd70b0a1d0c1d38f..40cfdc02aa4546d76e1702da85a4c9550865162b 100644
--- a/interface/web/tools/lib/lang/de_tpl_default.lng
+++ b/interface/web/tools/lib/lang/de_tpl_default.lng
@@ -5,3 +5,4 @@ $wb['btn_cancel_txt'] = 'Zurück';
 $wb['list_head_txt'] = 'Standard Design Einstellungen';
 $wb['list_desc_txt'] = 'Spezielle Optionen des standard Designs ändern';
 ?>
+
diff --git a/interface/web/tools/lib/lang/de_usersettings.lng b/interface/web/tools/lib/lang/de_usersettings.lng
index 908bbf6d5bfbf698ff9fd1aee3e931658f7a050b..167a0f7dfe56bb5bd8a2b2c176883523dab9d3c2 100644
--- a/interface/web/tools/lib/lang/de_usersettings.lng
+++ b/interface/web/tools/lib/lang/de_usersettings.lng
@@ -10,3 +10,4 @@ $wb['repeat_password_txt'] = 'Passwort wiederholen';
 $wb['password_mismatch_txt'] = 'Die Passwörter stimmen nicht überein.';
 $wb['password_match_txt'] = 'Die Passwörter stimmen überein.';
 ?>
+
diff --git a/interface/web/tools/lib/lang/el.lng b/interface/web/tools/lib/lang/el.lng
index 0f44f7013a9b5e8e256485c650ae379c80c02eb1..80e62959344fa00b92f6701147b2919872d07d3d 100644
--- a/interface/web/tools/lib/lang/el.lng
+++ b/interface/web/tools/lib/lang/el.lng
@@ -4,10 +4,10 @@ $wb['Settings'] = 'Ρυθμίσεις';
 $wb['ISPConfig Tools'] = 'Εργαλεία ISPConfig';
 $wb['Password and Language'] = 'Συνθηματικό και Γλώσσα';
 $wb['ispconfig_tools_note'] = 'Το άρθρωμα σας επιτρέπει να αλλάξετε το συνθηματικό και την γλώσσα και να ξεκινήσετε έναν επανασυγχρονισμό των εγγραφών DNS.';
-$wb['Resync'] = 'Resync';
-$wb['Sync Tools'] = 'Sync Tools';
-$wb['Import'] = 'Import';
+$wb['Resync'] = 'Επανασυγχρονισμός';
+$wb['Sync Tools'] = 'Εργαλεία Συγχρονισμού';
+$wb['Import'] = 'Εισαγωγή';
 $wb['ISPConfig 3 mail'] = 'ISPConfig 3 mail';
 $wb['PDNS Tupa'] = 'PowerDNS Tupa';
-$wb['Interface'] = 'Interface';
+$wb['Interface'] = 'Διεπαφή';
 ?>
diff --git a/interface/web/tools/lib/lang/el_import_ispconfig.lng b/interface/web/tools/lib/lang/el_import_ispconfig.lng
index ce47c4da4d24b0709be26b5ec28b82ef2ec33b79..1c80ac6db1f55a0e09d4a2ae727ab466108a81d4 100644
--- a/interface/web/tools/lib/lang/el_import_ispconfig.lng
+++ b/interface/web/tools/lib/lang/el_import_ispconfig.lng
@@ -1,23 +1,23 @@
 <?php
-$wb['head_txt'] = 'Import email configuration from ISPConfig 3';
-$wb['legend_txt'] = 'Remote server connection details';
-$wb['legend2_txt'] = 'Import email domain';
-$wb['resync_sites_txt'] = 'Resync Websites';
-$wb['resync_ftp_txt'] = 'Resync FTP users';
-$wb['resync_shell_txt'] = 'Resync shell users';
-$wb['resync_cron_txt'] = 'Resync cronjobs';
-$wb['resync_db_txt'] = 'Resync clientdb config';
-$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
-$wb['resync_dns_txt'] = 'Resync DNS records';
-$wb['btn_start_txt'] = 'Start Import';
-$wb['btn_connect_txt'] = 'Connect to remote server';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['client_group_id_txt'] = 'Local client';
-$wb['mail_domain_txt'] = 'Remote email domain';
-$wb['import_mailbox_txt'] = 'Import mailbox';
-$wb['import_aliasdomain_txt'] = 'Import alias domain';
-$wb['import_alias_txt'] = 'Import email alias';
-$wb['import_forward_txt'] = 'Import forward';
-$wb['import_user_filter_txt'] = 'Import user filter';
-$wb['import_spamfilter_txt'] = 'Import spamfilter';
+$wb['head_txt'] = 'Εισαγωγή ρυθμίσεων email από ISPConfig 3';
+$wb['legend_txt'] = 'Λεπτομέρειες σύνδεσης απομακρυσμένου server';
+$wb['legend2_txt'] = 'Εισαγωγή domain email';
+$wb['resync_sites_txt'] = 'Επανασυγχρονισμός Websites';
+$wb['resync_ftp_txt'] = 'Επανασυγχρονισμός χρηστών FTP';
+$wb['resync_shell_txt'] = 'Επανασυγχρονισμός χρηστών shell';
+$wb['resync_cron_txt'] = 'Επανασυγχρονισμός εργασιών cron';
+$wb['resync_db_txt'] = 'Επανασυγχρονισμός ρυθμίσεων ΒΔ πελατών';
+$wb['resync_mailbox_txt'] = 'Επανασυγχρονισμός θυρίδων Mail';
+$wb['resync_dns_txt'] = 'Επανασυγχρονισμός εγγραφών DNS';
+$wb['btn_start_txt'] = 'Εκκίνηση Εισαγωγής';
+$wb['btn_connect_txt'] = 'Σύνδεση στον απομακρυσμένο server';
+$wb['btn_cancel_txt'] = 'Άκυρο';
+$wb['client_group_id_txt'] = 'Τοπικός πελάτης';
+$wb['mail_domain_txt'] = 'Απομακρυσμένο domain email';
+$wb['import_mailbox_txt'] = 'Εισαγωγή θυρίδας mail';
+$wb['import_aliasdomain_txt'] = 'Εισαγωγή ψευδωνύμου domain';
+$wb['import_alias_txt'] = 'Εισαγωγή ψευδωνύμου email';
+$wb['import_forward_txt'] = 'Εισαγωγή προώθησης';
+$wb['import_user_filter_txt'] = 'Εισαγωγή φίλτρων χρήστη';
+$wb['import_spamfilter_txt'] = 'Εισαγωγή φίλτρων spam';
 ?>
diff --git a/interface/web/tools/lib/lang/el_index.lng b/interface/web/tools/lib/lang/el_index.lng
index a3ef38f21934a9d02669da2c2722feefc3f64325..ce794cc9df88a9b5bf98866ccec8964bf38c2cc8 100644
--- a/interface/web/tools/lib/lang/el_index.lng
+++ b/interface/web/tools/lib/lang/el_index.lng
@@ -1,4 +1,4 @@
 <?php
-$wb['page_head_txt'] = 'ISPConfig Tools';
-$wb['page_desc_txt'] = 'Change user settings';
+$wb['page_head_txt'] = 'Εργαλεία ISPConfig';
+$wb['page_desc_txt'] = 'Αλλαγή ρυθμίσεων χρήστη';
 ?>
diff --git a/interface/web/tools/lib/lang/el_interface.lng b/interface/web/tools/lib/lang/el_interface.lng
index aab4fc89ffe72aab7529d850c4e1dc3bbd92dc77..9b53146eebbb69e044a871a288ef8dbefd8ac40f 100644
--- a/interface/web/tools/lib/lang/el_interface.lng
+++ b/interface/web/tools/lib/lang/el_interface.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['interface_head_txt'] = 'Interface Settings';
-$wb['interface_desc_txt'] = 'Modify your interface';
-$wb['language_txt'] = 'Language';
-$wb['startmodule_txt'] = 'Startmodule';
-$wb['app_theme_txt'] = 'Design';
+$wb['interface_head_txt'] = 'Ρυθμίσεις διεπαφής';
+$wb['interface_desc_txt'] = 'Τροποποιήστε την διεπαφή σας';
+$wb['language_txt'] = 'Γλώσσα';
+$wb['startmodule_txt'] = 'Άρθρωμα Εκκίνησης';
+$wb['app_theme_txt'] = 'Σχεδίαση';
 ?>
diff --git a/interface/web/tools/lib/lang/el_resync.lng b/interface/web/tools/lib/lang/el_resync.lng
index ed9476720842d4438285ad600dd1992f1760eb82..74b2a460e64d3f59de0394ad2cf4ef0429664233 100644
--- a/interface/web/tools/lib/lang/el_resync.lng
+++ b/interface/web/tools/lib/lang/el_resync.lng
@@ -1,13 +1,13 @@
 <?php
-$wb['head_txt'] = 'Resync Tool';
-$wb['legend_txt'] = 'Resync';
-$wb['resync_sites_txt'] = 'Resync Websites';
-$wb['resync_ftp_txt'] = 'Resync FTP users';
-$wb['resync_shell_txt'] = 'Resync shell users';
-$wb['resync_cron_txt'] = 'Resync cronjobs';
-$wb['resync_db_txt'] = 'Resync clientdb config';
-$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
-$wb['resync_dns_txt'] = 'Resync DNS records';
-$wb['btn_start_txt'] = 'Start';
-$wb['btn_cancel_txt'] = 'Cancel';
+$wb['head_txt'] = 'Εργαλείο επανασυγχρονισμού';
+$wb['legend_txt'] = 'Επανασυγχρονισμός';
+$wb['resync_sites_txt'] = 'Επανασυγχρονισμός Websites';
+$wb['resync_ftp_txt'] = 'Επανασυγχρονισμός χρηστών FTP';
+$wb['resync_shell_txt'] = 'Επανασυγχρονισμός χρηστών shell';
+$wb['resync_cron_txt'] = 'Επανασυγχρονισμός εργασιών cron';
+$wb['resync_db_txt'] = 'Επανασυγχρονισμός ρυθμίσεων ΒΔ πελατών';
+$wb['resync_mailbox_txt'] = 'Επανασυγχρονισμός θυρίδων Mail';
+$wb['resync_dns_txt'] = 'Επανασυγχρονισμός εγγραφών DNS';
+$wb['btn_start_txt'] = 'Εκκίνηση';
+$wb['btn_cancel_txt'] = 'Άκυρο';
 ?>
diff --git a/interface/web/tools/lib/lang/el_tpl_default.lng b/interface/web/tools/lib/lang/el_tpl_default.lng
index c06246304d016300490b28f50eb168cff4cdbc4e..45c78e9a4684251920778b69e68e4a4e60d309ab 100644
--- a/interface/web/tools/lib/lang/el_tpl_default.lng
+++ b/interface/web/tools/lib/lang/el_tpl_default.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['list_head_txt'] = 'Default Theme settings';
-$wb['list_desc_txt'] = 'Modify default-theme specific options';
-$wb['no_settings_txt'] = 'There are no settings for the default theme.';
-$wb['btn_start_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Back';
+$wb['list_head_txt'] = 'Προεπιλεγμένες ρυθμίσεις θεματικής παραλλαγής';
+$wb['list_desc_txt'] = 'Παραμετροποίηση  ρυθμίσεων Προεπιλεγμένης θεματικής παραλλαγής';
+$wb['no_settings_txt'] = 'Δεν υπάρχουν ρυθμίσεις για την Προεπιλεγμένη θεματική παραλλαγή.';
+$wb['btn_start_txt'] = 'Αποθήκευση';
+$wb['btn_cancel_txt'] = 'Επιστροφή';
 ?>
diff --git a/interface/web/tools/lib/lang/el_usersettings.lng b/interface/web/tools/lib/lang/el_usersettings.lng
index d2321b04bc134fd130c2ea462d88ec726b4de7e8..55f24e9db031a091650a366468b422aae15d32c6 100644
--- a/interface/web/tools/lib/lang/el_usersettings.lng
+++ b/interface/web/tools/lib/lang/el_usersettings.lng
@@ -1,12 +1,12 @@
 <?php
 $wb['passwort_txt'] = 'Συνθηματικό';
-$wb['password_strength_txt'] = 'Δύναμη συνθηματικού';
+$wb['password_strength_txt'] = 'Ισχύς Συνθηματικού';
 $wb['language_txt'] = 'Γλώσσα';
 $wb['password_mismatch'] = 'Το συνθηματικό στο δεύτερο πεδίο δεν ταιριάζει με το συνθηματικό στο πρώτο πεδίο.';
 $wb['Form to edit the user password and language.'] = 'Φόρμα επεξεργασίας συνθηματικού και γλώσσας';
 $wb['Settings'] = 'Ρυθμίσεις';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
+$wb['generate_password_txt'] = 'Δημιουργία Συνθηματικού';
+$wb['repeat_password_txt'] = 'Επανάληψη Συνθηματικού';
+$wb['password_mismatch_txt'] = 'Τα Συνθηματικά δεν ταιριάζουν.';
+$wb['password_match_txt'] = 'Τα Συνθηματικά ταιριάζουν.';
 ?>
diff --git a/interface/web/tools/lib/lang/en_import_vpopmail.lng b/interface/web/tools/lib/lang/en_import_vpopmail.lng
deleted file mode 100644
index 1e4dd281f73e4c5ef4a3c43f06a5e2347e1804b4..0000000000000000000000000000000000000000
--- a/interface/web/tools/lib/lang/en_import_vpopmail.lng
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-$wb['head_txt'] = 'Import email configuration from Vpopmail';
-$wb['legend_txt'] = 'Remote database server connection details';
-$wb['btn_start_txt'] = 'Start Import';
-$wb['btn_connect_txt'] = 'Connect to remote server';
-$wb['btn_cancel_txt'] = 'Cancel';
-
-?>
diff --git a/interface/web/tools/list/empty.dir b/interface/web/tools/list/empty.dir
new file mode 100644
index 0000000000000000000000000000000000000000..95ba9ef37cca69318bcba17e67cd44ae84bd41e1
--- /dev/null
+++ b/interface/web/tools/list/empty.dir
@@ -0,0 +1 @@
+This empty directory is needed by ISPConfig.
diff --git a/interface/web/tools/templates/import_vpopmail.htm b/interface/web/tools/templates/import_vpopmail.htm
deleted file mode 100644
index ade9476943acb525ef95e033c5fa1002800e0265..0000000000000000000000000000000000000000
--- a/interface/web/tools/templates/import_vpopmail.htm
+++ /dev/null
@@ -1,53 +0,0 @@
-<h2><tmpl_var name="head_txt"></h2>
-<p><tmpl_var name="list_desc_txt"></p>
-
-<div class="panel panel_language_import">
-  
-    <div class="pnl_formsarea">
-        <fieldset class="inlineLabels"><legend>{tmpl_var name="legend_txt"}</legend>
-            <div class="ctrlHolder">
-                <p class="label">Database Hostname</p>
-                <div class="multiField">
-                    <input id="db_hostname" type="text" value="{tmpl_var name='db_hostname'}" name="db_hostname" />
-                </div>
-            </div>
-			<div class="ctrlHolder">
-                <p class="label">Database Name</p>
-                <div class="multiField">
-                    <input id="db_name" type="text" value="{tmpl_var name='db_name'}" name="db_name" />
-                </div>
-            </div>
-            <div class="ctrlHolder">
-                <p class="label">Database User</p>
-                <div class="multiField">
-                    <input id="db_user" type="text" value="{tmpl_var name='db_user'}" name="db_user" />
-                </div>
-            </div>
-            <div class="ctrlHolder">
-                <p class="label">Database password</p>
-                <div class="multiField">
-                    <input id="db_password" type="text" value="{tmpl_var name='db_password'}" name="db_password" />
-                </div>
-            </div>
-			<div class="ctrlHolder">
-                <p class="label">Server ID of local mailserver</p>
-                <div class="multiField">
-                    <input id="local_server_id" type="text" value="{tmpl_var name='local_server_id'}" name="local_server_id" />
-                </div>
-            </div>
-        </fieldset>
-    </div>
-	 
-    <tmpl_if name="msg">
-        <div id="OKMsg"><p><tmpl_var name="msg"></p></div>
-    </tmpl_if>
-    <tmpl_if name="error">
-        <div id="errorMsg"><h3>ERROR</h3><ol><tmpl_var name="error"></ol></div>
-    </tmpl_if>
-	
-    <input type="hidden" name="remote_session_id" value="{tmpl_var name='remote_session_id'}">
-        <div class="buttonHolder buttons">
-            <button class="positive iconstxt icoPositive" type="button" value="Import" onClick="submitForm('pageForm','tools/import_vpopmail.php');"><span>{tmpl_var name="btn_start_txt"}</span></button>
-            <button class="negative iconstxt icoNegative" type="button" value="Cancel" onClick="loadContent('tools/index.php');"><span>{tmpl_var name="btn_cancel_txt"}</span></button>
-        </div>
-  </div>
diff --git a/interface/web/vm/lib/lang/cz.lng b/interface/web/vm/lib/lang/cz.lng
index 4167e14a8a150090ecfb1aa6738fb8a6abf17760..5c1ab5822999a2616d1b6792b084893848cff580 100644
--- a/interface/web/vm/lib/lang/cz.lng
+++ b/interface/web/vm/lib/lang/cz.lng
@@ -5,3 +5,4 @@ $wb['VM Templates'] = 'VM Templates';
 $wb['IP addresses'] = 'IP addresses';
 $wb['OpenVZ'] = 'OpenVZ';
 ?>
+
diff --git a/interface/web/vm/lib/lang/cz_openvz_action.lng b/interface/web/vm/lib/lang/cz_openvz_action.lng
index 3e2e3e0b84a82c5520e13f71eba231d40fe25eb1..84682fc15ae12133ce5558c729a149a477ac95e5 100644
--- a/interface/web/vm/lib/lang/cz_openvz_action.lng
+++ b/interface/web/vm/lib/lang/cz_openvz_action.lng
@@ -14,3 +14,4 @@ $wb['ostemplate_name_error'] = 'The OSTemplate name conatains unallowed characte
 $wb['ostemplate_name_unique_error'] = 'There is already a OSTemplate with that name.';
 $wb['ostemplate_exec_txt'] = 'The command to create a OSTemplate has been sent to the host server. It will take several minutes until the OSTemplate has been created.';
 ?>
+
diff --git a/interface/web/vm/lib/lang/cz_openvz_ip.lng b/interface/web/vm/lib/lang/cz_openvz_ip.lng
index 6016681df89f13323f60379acff5e7abd98f4c77..67f688576ac762561936a46e18120b84d7033f28 100644
--- a/interface/web/vm/lib/lang/cz_openvz_ip.lng
+++ b/interface/web/vm/lib/lang/cz_openvz_ip.lng
@@ -7,3 +7,4 @@ $wb['ip_error_wrong'] = 'Please fill in a valid IPv4 address.';
 $wb['ip_error_unique'] = 'This IP address does already exist.';
 $wb['IP address'] = 'IP address';
 ?>
+
diff --git a/interface/web/vm/lib/lang/cz_openvz_ip_list.lng b/interface/web/vm/lib/lang/cz_openvz_ip_list.lng
index e6a3a68c2c3b9cad34982f035b86d4446ea68439..37c1d62e7c2700ef456abcb2398607b9dbda6adc 100644
--- a/interface/web/vm/lib/lang/cz_openvz_ip_list.lng
+++ b/interface/web/vm/lib/lang/cz_openvz_ip_list.lng
@@ -5,3 +5,4 @@ $wb['ip_address_txt'] = 'IP address';
 $wb['reserved_txt'] = 'Reserved';
 $wb['vm_id_txt'] = 'VM';
 ?>
+
diff --git a/interface/web/vm/lib/lang/cz_openvz_ostemplate.lng b/interface/web/vm/lib/lang/cz_openvz_ostemplate.lng
index 72838a20de8c8ff4944856821cfd1786cde17674..97741100e483be991f41e7411b2dc7f0bcfa8fa4 100644
--- a/interface/web/vm/lib/lang/cz_openvz_ostemplate.lng
+++ b/interface/web/vm/lib/lang/cz_openvz_ostemplate.lng
@@ -9,3 +9,4 @@ $wb['template_name_error_empty'] = 'Template name is empty.';
 $wb['template_file_error_empty'] = 'Template filename is empty.';
 $wb['Template'] = 'Å ablona';
 ?>
+
diff --git a/interface/web/vm/lib/lang/cz_openvz_ostemplate_list.lng b/interface/web/vm/lib/lang/cz_openvz_ostemplate_list.lng
index 7705a4d18f342e0d87d90f049fae07fc75efc721..930b33f5bb2bec395dff0e6f7e05cdc6956bcf29 100644
--- a/interface/web/vm/lib/lang/cz_openvz_ostemplate_list.lng
+++ b/interface/web/vm/lib/lang/cz_openvz_ostemplate_list.lng
@@ -6,3 +6,4 @@ $wb['server_id_txt'] = 'Server';
 $wb['allservers_txt'] = 'Exists on all servers';
 $wb['ostemplate_id_txt'] = 'ID';
 ?>
+
diff --git a/interface/web/vm/lib/lang/cz_openvz_template.lng b/interface/web/vm/lib/lang/cz_openvz_template.lng
index 12c80bd6c121d85a5ab5cd906bffe7debd366b87..cf926f6b33b0f8ec8831360f9f7ec1288572d54e 100644
--- a/interface/web/vm/lib/lang/cz_openvz_template.lng
+++ b/interface/web/vm/lib/lang/cz_openvz_template.lng
@@ -91,3 +91,4 @@ $wb['swappages_error_empty'] = 'Swappages is empty.';
 $wb['Template'] = 'Å ablona';
 $wb['Advanced'] = 'Pokročilý';
 ?>
+
diff --git a/interface/web/vm/lib/lang/cz_openvz_template_list.lng b/interface/web/vm/lib/lang/cz_openvz_template_list.lng
index 89c11ef5d1926da64f4f787a778b7c0f9793149f..353e760ea6d9c702349c8df5c0794feb1c2c4256 100644
--- a/interface/web/vm/lib/lang/cz_openvz_template_list.lng
+++ b/interface/web/vm/lib/lang/cz_openvz_template_list.lng
@@ -3,3 +3,4 @@ $wb['list_head_txt'] = 'OpenVZ Virtual Machine Template';
 $wb['active_txt'] = 'Aktivní';
 $wb['template_name_txt'] = 'Název šablony';
 ?>
+
diff --git a/interface/web/vm/lib/lang/cz_openvz_vm.lng b/interface/web/vm/lib/lang/cz_openvz_vm.lng
index adfa56f0d531654ee4153a93bdd1b9cdd4dcf384..b9043e4a95e819cec4d2f71ee7b90363a47485f1 100644
--- a/interface/web/vm/lib/lang/cz_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/cz_openvz_vm.lng
@@ -38,3 +38,4 @@ $wb['template_nameserver_error_empty'] = 'Nameserver(s) is empty.';
 $wb['Virtual server'] = 'Virtual server';
 $wb['Advanced'] = 'Pokročilý';
 ?>
+
diff --git a/interface/web/vm/lib/lang/cz_openvz_vm_list.lng b/interface/web/vm/lib/lang/cz_openvz_vm_list.lng
index 1371c4b70ea40b9670804d290c0b9f96f32cc05c..9fa15b92eec9eb28a36276fd37299a3a34941eab 100644
--- a/interface/web/vm/lib/lang/cz_openvz_vm_list.lng
+++ b/interface/web/vm/lib/lang/cz_openvz_vm_list.lng
@@ -8,3 +8,4 @@ $wb['hostname_txt'] = 'Hostname';
 $wb['ip_address_txt'] = 'IP address';
 $wb['veid_txt'] = 'VEID';
 ?>
+
diff --git a/interface/web/vm/lib/lang/de.lng b/interface/web/vm/lib/lang/de.lng
index 474d2ac7b7c2a68a8f00f3841440390f21e3eac5..a68f43f784cbf5f29a764ae78469ebfcb97b5d2a 100644
--- a/interface/web/vm/lib/lang/de.lng
+++ b/interface/web/vm/lib/lang/de.lng
@@ -1,7 +1,8 @@
 <?php
 $wb['Virtual Servers'] = 'Virtuelle Server';
-$wb['OS Templates'] = 'OS-Templates';
-$wb['VM Templates'] = 'VM-Templates';
-$wb['IP addresses'] = 'IP-Adressen';
+$wb['OS Templates'] = 'OS Templates';
+$wb['VM Templates'] = 'VM Templates';
+$wb['IP addresses'] = 'IP Adressen';
 $wb['OpenVZ'] = 'OpenVZ';
 ?>
+
diff --git a/interface/web/vm/lib/lang/de_openvz_action.lng b/interface/web/vm/lib/lang/de_openvz_action.lng
index f40d2f28b1aa50485c994b8b2221986736ffe3fa..c0a5c0e5198f97168d25a9a5112eb17238ffa222 100644
--- a/interface/web/vm/lib/lang/de_openvz_action.lng
+++ b/interface/web/vm/lib/lang/de_openvz_action.lng
@@ -14,3 +14,4 @@ $wb['ostemplate_name_error'] = 'Der Name des OSTemplates enthält ungültige Zei
 $wb['ostemplate_name_unique_error'] = 'Es existiert bereits ein OSTemplate mit diesem Namen.';
 $wb['ostemplate_exec_txt'] = 'Der Befehl um das OSTemplate zu erstellen wurde an den VM-Host gesendet. Es kann einige Minuten dauern bis das OSTemplate verfügbar ist.';
 ?>
+
diff --git a/interface/web/vm/lib/lang/de_openvz_ip.lng b/interface/web/vm/lib/lang/de_openvz_ip.lng
index 48c9a520c448c5d9a2cfc8a13db90ddb39d26d7d..b7b1498b78b56189f1385ca1adc8ea6719e510c8 100644
--- a/interface/web/vm/lib/lang/de_openvz_ip.lng
+++ b/interface/web/vm/lib/lang/de_openvz_ip.lng
@@ -7,3 +7,4 @@ $wb['ip_error_wrong'] = 'Bitte tragen Sie eine gültige IPv4-Adresse ein.';
 $wb['ip_error_unique'] = 'Diese IP-Adresse existiert bereits.';
 $wb['IP address'] = 'IP-Adresse';
 ?>
+
diff --git a/interface/web/vm/lib/lang/de_openvz_ip_list.lng b/interface/web/vm/lib/lang/de_openvz_ip_list.lng
index f4302d813acc8a4eebaaf6193e017cc67abfa10a..d214e951581cba008c4c788d4e495f3ad609cf13 100644
--- a/interface/web/vm/lib/lang/de_openvz_ip_list.lng
+++ b/interface/web/vm/lib/lang/de_openvz_ip_list.lng
@@ -5,3 +5,4 @@ $wb['vm_id_txt'] = 'VM';
 $wb['ip_address_txt'] = 'IP-Adresse';
 $wb['reserved_txt'] = 'Reserviert';
 ?>
+
diff --git a/interface/web/vm/lib/lang/de_openvz_ostemplate.lng b/interface/web/vm/lib/lang/de_openvz_ostemplate.lng
index 8e4cfcb977fb52b136f96e937e737a0c9d856e31..e0fb9396db947750aa61817ec40696083f9b9d9a 100644
--- a/interface/web/vm/lib/lang/de_openvz_ostemplate.lng
+++ b/interface/web/vm/lib/lang/de_openvz_ostemplate.lng
@@ -9,3 +9,4 @@ $wb['template_name_error_empty'] = 'Template-Name ist leer.';
 $wb['template_file_error_empty'] = 'Template-Dateiname ist leer.';
 $wb['Template'] = 'Template';
 ?>
+
diff --git a/interface/web/vm/lib/lang/de_openvz_ostemplate_list.lng b/interface/web/vm/lib/lang/de_openvz_ostemplate_list.lng
index dff6bd2ded79845ca70f2a54f42b4fdb82680c8a..09a174ee8a60a4a0b5c795eda1a1614d20d96ede 100644
--- a/interface/web/vm/lib/lang/de_openvz_ostemplate_list.lng
+++ b/interface/web/vm/lib/lang/de_openvz_ostemplate_list.lng
@@ -6,3 +6,4 @@ $wb['server_id_txt'] = 'Server';
 $wb['allservers_txt'] = 'Existiert auf allen Servern';
 $wb['ostemplate_id_txt'] = 'ID';
 ?>
+
diff --git a/interface/web/vm/lib/lang/de_openvz_template.lng b/interface/web/vm/lib/lang/de_openvz_template.lng
index 329a10601d4f2ef50d6b68ac70f5f858d2a49071..9e76ecaac447c67335f1a6971bfc201d7ff6a303 100644
--- a/interface/web/vm/lib/lang/de_openvz_template.lng
+++ b/interface/web/vm/lib/lang/de_openvz_template.lng
@@ -91,3 +91,4 @@ $wb['swappages_error_empty'] = 'Swappages ist leer.';
 $wb['Template'] = 'Template';
 $wb['Advanced'] = 'Erweitert';
 ?>
+
diff --git a/interface/web/vm/lib/lang/de_openvz_template_list.lng b/interface/web/vm/lib/lang/de_openvz_template_list.lng
index 9e32b341b50d4cc945cde1d75676f469ce0661f1..682f2cc3c1b9c694d51a69eefacb30326fffae4d 100644
--- a/interface/web/vm/lib/lang/de_openvz_template_list.lng
+++ b/interface/web/vm/lib/lang/de_openvz_template_list.lng
@@ -3,3 +3,4 @@ $wb['list_head_txt'] = 'OpenVZ Virtual Machine Template';
 $wb['active_txt'] = 'Aktiv';
 $wb['template_name_txt'] = 'Template-Name';
 ?>
+
diff --git a/interface/web/vm/lib/lang/de_openvz_vm.lng b/interface/web/vm/lib/lang/de_openvz_vm.lng
index c773885c69426bfc0bd1c044c15a86e10f5ed7fd..b45a79fef26e5f724f0ccfdbcc5ec864790cde6f 100644
--- a/interface/web/vm/lib/lang/de_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/de_openvz_vm.lng
@@ -38,3 +38,4 @@ $wb['template_nameserver_error_empty'] = 'Nameserver ist leer.';
 $wb['Virtual server'] = 'Virtueller Server';
 $wb['Advanced'] = 'Erweitert';
 ?>
+
diff --git a/interface/web/vm/lib/lang/de_openvz_vm_list.lng b/interface/web/vm/lib/lang/de_openvz_vm_list.lng
index 0b3ac30c7fe26d7bb47cde5a456cd75e297e5f98..aecb4621e72f308f0959400f12ed52b41ac6fd21 100644
--- a/interface/web/vm/lib/lang/de_openvz_vm_list.lng
+++ b/interface/web/vm/lib/lang/de_openvz_vm_list.lng
@@ -8,3 +8,4 @@ $wb['hostname_txt'] = 'Hostname';
 $wb['ip_address_txt'] = 'IP-Adresse';
 $wb['veid_txt'] = 'VEID';
 ?>
+
diff --git a/interface/web/vm/lib/lang/el_openvz_ip.lng b/interface/web/vm/lib/lang/el_openvz_ip.lng
index 8aecd92058ad6ab26b62918c4e889cdca91d3294..a602f6d1f997e0a67a0968f336f9813d3f14586b 100644
--- a/interface/web/vm/lib/lang/el_openvz_ip.lng
+++ b/interface/web/vm/lib/lang/el_openvz_ip.lng
@@ -2,7 +2,7 @@
 $wb['server_id_txt'] = 'Hostserver';
 $wb['ip_address_txt'] = 'Διεύθυνση IP';
 $wb['vm_id_txt'] = 'Εικονικός server';
-$wb['reserved_txt'] = 'Reserved';
+$wb['reserved_txt'] = 'Κατειλημμένη';
 $wb['ip_error_wrong'] = 'Παρακαλούμε συμπληρώστε μια έγκυρη διεύθυνση IPv4.';
 $wb['ip_error_unique'] = 'Η διεύθυνση IP υπάρχει ήδη.';
 $wb['IP address'] = 'Διεύθυνση IP';
diff --git a/interface/web/vm/lib/lang/el_openvz_ip_list.lng b/interface/web/vm/lib/lang/el_openvz_ip_list.lng
index 5af2ea055bc9042997d8729be2e8b7f4414ef446..168100ce88710abd3f2a3ddf702dadfef4be5179 100644
--- a/interface/web/vm/lib/lang/el_openvz_ip_list.lng
+++ b/interface/web/vm/lib/lang/el_openvz_ip_list.lng
@@ -2,6 +2,6 @@
 $wb['list_head_txt'] = 'Διευθύνσεις IP OpenVZ';
 $wb['server_id_txt'] = 'Server';
 $wb['ip_address_txt'] = 'Διεύθυνση IP';
-$wb['reserved_txt'] = 'Reserved';
+$wb['reserved_txt'] = 'Σε χρήση';
 $wb['vm_id_txt'] = 'VM';
 ?>
diff --git a/interface/web/vm/lib/lang/el_openvz_template.lng b/interface/web/vm/lib/lang/el_openvz_template.lng
index afe2bcda65ec3e081c340f6f5714e86759a6817c..94425463d56e3505c119ad5366162b561d6e1055 100644
--- a/interface/web/vm/lib/lang/el_openvz_template.lng
+++ b/interface/web/vm/lib/lang/el_openvz_template.lng
@@ -23,20 +23,20 @@ $wb['numiptent_txt'] = 'Numiptent';
 $wb['swappages_txt'] = 'Swappages';
 $wb['hostname_txt'] = 'Hostname';
 $wb['nameserver_txt'] = 'Nameserver(s)';
-$wb['nameserver_desc_txt'] = '(separated by whitespace)';
-$wb['capability_txt'] = 'Capability';
-$wb['template_name_txt'] = 'Template name';
-$wb['diskspace_txt'] = 'Diskspace';
-$wb['ram_txt'] = 'RAM (guaranteed)';
-$wb['ram_burst_txt'] = 'RAM (burst)';
+$wb['nameserver_desc_txt'] = '(Διαχωρισμός με κενό)';
+$wb['capability_txt'] = 'Δυνατότητα';
+$wb['template_name_txt'] = 'Όνομα Προτύπου';
+$wb['diskspace_txt'] = 'Χώρος Δϊσκου';
+$wb['ram_txt'] = 'RAM (εγγυημένη)';
+$wb['ram_burst_txt'] = 'RAM (στιγμιαία)';
 $wb['cpu_units_txt'] = 'Μονάδες CPU';
 $wb['cpu_num_txt'] = 'Αριθμός CPU';
 $wb['cpu_limit_txt'] = 'Όριο CPU %';
 $wb['io_priority_txt'] = 'Προτεραιότητα Ε/Ε';
-$wb['active_txt'] = 'Active';
+$wb['active_txt'] = 'Εν Ενεργεία';
 $wb['description_txt'] = 'Περιγραφή';
 $wb['numproc_desc_txt'] = 'Πλήθος διεργασιών και νημάτων.';
-$wb['numtcpsock_desc_txt'] = 'Number of TCP sockets.';
+$wb['numtcpsock_desc_txt'] = 'Πλήθος TCP sockets.';
 $wb['numothersock_desc_txt'] = 'Number of sockets other than TCP.';
 $wb['vmguarpages_desc_txt'] = 'Memory allocation guarantee, in pages.';
 $wb['kmemsize_desc_txt'] = 'Size of unswappable kernel memory, allocated for processes in this container.';
@@ -88,6 +88,6 @@ $wb['numsiginfo_error_empty'] = 'Numsiginfo is empty.';
 $wb['dcachesize_error_empty'] = 'Dcachesize is empty.';
 $wb['numiptent_error_empty'] = 'Numiptent is empty.';
 $wb['swappages_error_empty'] = 'Swappages is empty.';
-$wb['Template'] = 'Template';
-$wb['Advanced'] = 'Advanced';
+$wb['Template'] = 'Πρότυπο';
+$wb['Advanced'] = 'Για προχωρημένους';
 ?>
diff --git a/interface/web/vm/lib/lang/el_openvz_vm.lng b/interface/web/vm/lib/lang/el_openvz_vm.lng
index 4c7950af36056e064ea15af0d96e75641117eef2..37c7ce0838d7c72ac492e58e92383e14c5276ceb 100644
--- a/interface/web/vm/lib/lang/el_openvz_vm.lng
+++ b/interface/web/vm/lib/lang/el_openvz_vm.lng
@@ -27,12 +27,12 @@ $wb['hostname_error_empty'] = 'Το Hostname είναι κενό.';
 $wb['vm_password_error_empty'] = 'Το συνθηματικό VM είναι κενό.';
 $wb['veid_error_empty'] = 'Το VEID είναι κενό.';
 $wb['veid_error_unique'] = 'Το VEID υπάρχει ήδη.';
-$wb['diskspace_error_empty'] = 'Το Diskspace είναι κενό.';
+$wb['diskspace_error_empty'] = 'Το Χώρος Δίσκου είναι κενό.';
 $wb['ram_error_empty'] = 'Το RAM (εγγυημένη) είναι κενό.';
 $wb['ram_burst_error_empty'] = 'Το RAM (burst) είναι κενό.';
-$wb['cpu_units_error_empty'] = 'Το μονάδες CPU είναι κενό.';
-$wb['cpu_num_error_empty'] = 'Το αριθμός CPU είναι κενό.';
-$wb['cpu_limit_error_empty'] = 'Το όριο CPU είναι κενό.';
+$wb['cpu_units_error_empty'] = 'Το Μονάδες CPU είναι κενό.';
+$wb['cpu_num_error_empty'] = 'Το Αριθμός CPU είναι κενό.';
+$wb['cpu_limit_error_empty'] = 'Το Όριο CPU είναι κενό.';
 $wb['io_priority_error_empty'] = 'Το Προτεραιότητα Ε/Ε είναι κενό.';
 $wb['template_nameserver_error_empty'] = 'Το Nameserver(s) είναι κενό.';
 $wb['Virtual server'] = 'Εικονικός server';
diff --git a/server/aps_packages/empty.dir b/server/aps_packages/empty.dir
new file mode 100644
index 0000000000000000000000000000000000000000..95ba9ef37cca69318bcba17e67cd44ae84bd41e1
--- /dev/null
+++ b/server/aps_packages/empty.dir
@@ -0,0 +1 @@
+This empty directory is needed by ISPConfig.
diff --git a/server/conf-custom/empty.dir b/server/conf-custom/empty.dir
new file mode 100644
index 0000000000000000000000000000000000000000..95ba9ef37cca69318bcba17e67cd44ae84bd41e1
--- /dev/null
+++ b/server/conf-custom/empty.dir
@@ -0,0 +1 @@
+This empty directory is needed by ISPConfig.
diff --git a/server/conf-custom/error/empty.dir b/server/conf-custom/error/empty.dir
new file mode 100644
index 0000000000000000000000000000000000000000..95ba9ef37cca69318bcba17e67cd44ae84bd41e1
--- /dev/null
+++ b/server/conf-custom/error/empty.dir
@@ -0,0 +1 @@
+This empty directory is needed by ISPConfig.
diff --git a/server/conf-custom/index/empty.dir b/server/conf-custom/index/empty.dir
new file mode 100644
index 0000000000000000000000000000000000000000..95ba9ef37cca69318bcba17e67cd44ae84bd41e1
--- /dev/null
+++ b/server/conf-custom/index/empty.dir
@@ -0,0 +1 @@
+This empty directory is needed by ISPConfig.
diff --git a/server/conf-custom/install/empty.dir b/server/conf-custom/install/empty.dir
new file mode 100644
index 0000000000000000000000000000000000000000..95ba9ef37cca69318bcba17e67cd44ae84bd41e1
--- /dev/null
+++ b/server/conf-custom/install/empty.dir
@@ -0,0 +1 @@
+This empty directory is needed by ISPConfig.
diff --git a/server/conf-custom/mail/empty.dir b/server/conf-custom/mail/empty.dir
new file mode 100644
index 0000000000000000000000000000000000000000..95ba9ef37cca69318bcba17e67cd44ae84bd41e1
--- /dev/null
+++ b/server/conf-custom/mail/empty.dir
@@ -0,0 +1 @@
+This empty directory is needed by ISPConfig.
diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master
index 02ea5af297ba4818ef8836a5169fb7653e1b1baa..6e3d853245da0a7da04798ac616392949547df0f 100644
--- a/server/conf/nginx_vhost.conf.master
+++ b/server/conf/nginx_vhost.conf.master
@@ -121,7 +121,7 @@ server {
             access_log off;
         }
 		
-        location /stats {
+        location /stats/ {
             <tmpl_var name='web_document_root_www_proxy'>
             index index.html index.php;
             auth_basic "Members Only";
diff --git a/server/cron_daily.php b/server/cron_daily.php
index 029c4f30fb2b020227dc0b7ec1348937bf7321d8..3342cee8c087fd1e89e1d5ee6effaac7f8430154 100644
--- a/server/cron_daily.php
+++ b/server/cron_daily.php
@@ -55,7 +55,7 @@ if(count($records) > 0) $parse_mail_log = true;
 foreach($records as $rec) {
 	if(@is_file($rec['maildir'].'/ispconfig_mailsize')) {
         $parse_mail_log = false;
-
+        
 		// rename file
 		rename($rec['maildir'].'/ispconfig_mailsize',$rec['maildir'].'/ispconfig_mailsize_save');
 
@@ -93,15 +93,15 @@ if($parse_mail_log == true) {
     $mailbox_traffic = array();
     $mail_boxes = array();
     $mail_rewrites = array(); // we need to read all mail aliases and forwards because the address in amavis is not always the mailbox address
-
+    
     function parse_mail_log_line($line) {
         //Oct 31 17:35:48 mx01 amavis[32014]: (32014-05) Passed CLEAN, [IPv6:xxxxx] [IPv6:xxxxx] <xxx@yyyy> -> <aaaa@bbbb>, Message-ID: <xxxx@yyyyy>, mail_id: xxxxxx, Hits: -1.89, size: 1591, queued_as: xxxxxxx, 946 ms
-
+        
         if(preg_match('/^(\w+\s+\d+\s+\d+:\d+:\d+)\s+[^ ]+\s+amavis.* <([^>]+)>\s+->\s+((<[^>]+>,)+) .*Message-ID:\s+<([^>]+)>.* size:\s+(\d+),.*$/', $line, $matches) == false) return false;
-
+        
         $timestamp = strtotime($matches[1]);
         if(!$timestamp) return false;
-
+        
         $to = array();
         $recipients = explode(',', $matches[3]);
         foreach($recipients as $recipient) {
@@ -109,15 +109,15 @@ if($parse_mail_log == true) {
             if(!$recipient || $recipient == $matches[2]) continue;
             $to[] = $recipient;
         }
-
+        
         return array('line' => $line, 'timestamp' => $timestamp, 'size' => $matches[6], 'from' => $matches[2], 'to' => $to, 'message-id' => $matches[5]);
     }
 
     function add_mailbox_traffic(&$traffic_array, $address, $traffic) {
         global $mail_boxes, $mail_rewrites;
-
+        
         $address = strtolower($address);
-
+        
         if(in_array($address, $mail_boxes) == true) {
             if(!isset($traffic_array[$address])) $traffic_array[$address] = 0;
             $traffic_array[$address] += $traffic;
@@ -147,17 +147,17 @@ if($parse_mail_log == true) {
             }
         }
     }
-
+    
     $state_file = dirname(__FILE__) . '/mail_log_parser.state';
     $prev_line = false;
     $last_line = false;
     $cur_line = false;
-
+    
     if(file_exists($state_file)) {
         $prev_line = parse_mail_log_line(trim(file_get_contents($state_file)));
         //if($prev_line) echo "continuing from previous run, log position: " . $prev_line['message-id'] . " at " . strftime('%d.%m.%Y %H:%M:%S', $prev_line['timestamp']) . "\n";
     }
-
+    
     if(file_exists('/var/log/mail.log')) {
         $fp = fopen('/var/log/mail.log', 'r');
         //echo "Parsing mail.log...\n";
@@ -167,7 +167,7 @@ if($parse_mail_log == true) {
             //if($l % 1000 == 0) echo "\rline $l";
             $cur_line = parse_mail_log_line($line);
             if(!$cur_line) continue;
-
+            
             if($prev_line) {
                 // check if this line has to be processed
                 if($cur_line['timestamp'] < $prev_line['timestamp']) {
@@ -179,7 +179,7 @@ if($parse_mail_log == true) {
                     continue;
                 }
             }
-
+            
             add_mailbox_traffic($mailbox_traffic, $cur_line['from'], $cur_line['size']);
             foreach($cur_line['to'] as $to) {
                 add_mailbox_traffic($mailbox_traffic, $to, $cur_line['size']);
@@ -189,7 +189,7 @@ if($parse_mail_log == true) {
         fclose($fp);
         //echo "\n";
     }
-
+    
     if($parse_mail_log == true && file_exists('/var/log/mail.log.1')) {
         $fp = fopen('/var/log/mail.log.1', 'r');
         //echo "Parsing mail.log.1...\n";
@@ -199,7 +199,7 @@ if($parse_mail_log == true) {
             //if($l % 1000 == 0) echo "\rline $l";
             $cur_line = parse_mail_log_line($line);
             if(!$cur_line) continue;
-
+            
             if($prev_line) {
                 // check if this line has to be processed
                 if($cur_line['timestamp'] < $prev_line['timestamp']) continue; // already processed
@@ -208,7 +208,7 @@ if($parse_mail_log == true) {
                     continue;
                 }
             }
-
+            
             add_mailbox_traffic($mailbox_traffic, $cur_line['from'], $cur_line['size']);
             foreach($cur_line['to'] as $to) {
                 add_mailbox_traffic($mailbox_traffic, $to, $cur_line['size']);
@@ -219,7 +219,7 @@ if($parse_mail_log == true) {
     }
     unset($mail_rewrites);
     unset($mail_boxes);
-
+    
     // Save the traffic stats in the sql database
     $tstamp = date('Y-m');
     $sql = "SELECT mailuser_id,email FROM mail_user WHERE server_id = ".$conf['server_id'];
@@ -239,7 +239,7 @@ if($parse_mail_log == true) {
             //echo $sql;
         }
     }
-
+    
     unset($mailbox_traffic);
     if($last_line) file_put_contents($state_file, $last_line);
 }
@@ -279,7 +279,7 @@ $records = $app->db->queryAllRecords($sql);
 foreach($records as $rec) {
 	//$yesterday = date('Ymd',time() - 86400);
 	$yesterday = date('Ymd',strtotime("-1 day", time()));
-
+	
     $log_folder = 'log';
     if($rec['type'] == 'vhostsubdomain') {
         $tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = '.intval($rec['parent_domain_id']));
@@ -331,7 +331,7 @@ $web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
 foreach($records as $rec) {
 	//$yesterday = date('Ymd',time() - 86400);
 	$yesterday = date('Ymd',strtotime("-1 day", time()));
-
+	
     $log_folder = 'log';
     if($rec['type'] == 'vhostsubdomain') {
         $tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = '.intval($rec['parent_domain_id']));
@@ -453,7 +453,7 @@ foreach($records as $rec) {
 
 	//* create traffic statistics based on yesterdays access log file
 	$yesterday = date('Ymd',time() - 86400);
-
+	
     $log_folder = 'log';
     if($rec['type'] == 'vhostsubdomain') {
         $tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = '.intval($rec['parent_domain_id']));
@@ -462,7 +462,7 @@ foreach($records as $rec) {
         $log_folder .= '/' . $subdomain_host;
         unset($tmp);
     }
-
+    
     $logfile = $rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log';
 	$total_bytes = 0;
 
@@ -647,10 +647,10 @@ if ($app->dbmaster == $app->db) {
 #########
 function send_notification_email($template, $placeholders, $recipients) {
     global $conf;
-
+    
     if(!is_array($recipients) || count($recipients) < 1) return false;
     if(!is_array($placeholders)) $placeholders = array();
-
+    
     if(file_exists($conf['rootpath'].'/conf-custom/mail/' . $template . '_'.$conf['language'].'.txt')) {
         $lines = file($conf['rootpath'].'/conf-custom/mail/' . $template . '_'.$conf['language'].'.txt');
     } elseif(file_exists($conf['rootpath'].'/conf-custom/mail/' . $template . '_en.txt')) {
@@ -660,7 +660,7 @@ function send_notification_email($template, $placeholders, $recipients) {
     } else {
         $lines = file($conf['rootpath'].'/conf/mail/' . $template . '_en.txt');
     }
-
+    
     //* get mail headers, subject and body
     $mailHeaders = '';
     $mailBody = '';
@@ -681,12 +681,12 @@ function send_notification_email($template, $placeholders, $recipients) {
         }
     }
     $mailBody = trim($mailBody);
-
+    
     //* Replace placeholders
     $mailHeaders = strtr($mailHeaders, $placeholders);
     $mailSubject = strtr($mailSubject, $placeholders);
     $mailBody = strtr($mailBody, $placeholders);
-
+    
     for($r = 0; $r < count($recipients); $r++) {
         mail($recipients[$r], $mailSubject, $mailBody, $mailHeaders);
     }
@@ -695,7 +695,7 @@ function send_notification_email($template, $placeholders, $recipients) {
     unset($mailHeaders);
     unset($mailBody);
     unset($lines);
-
+    
     return true;
 }
 
@@ -707,7 +707,7 @@ function send_notification_email($template, $placeholders, $recipients) {
 if ($app->dbmaster == $app->db) {
 
 	$global_config = $app->getconf->get_global_config('mail');
-
+	
 	$current_month = date('Y-m');
 
 	//* Check website traffic quota
@@ -740,19 +740,19 @@ if ($app->dbmaster == $app->db) {
 			if($web_traffic_quota > 0 && $web_traffic > $web_traffic_quota) {
 				$app->dbmaster->datalogUpdate('web_domain', "traffic_quota_lock = 'y',active = 'n'", 'domain_id', $rec['domain_id']);
 				$app->log('Traffic quota for '.$rec['domain'].' exceeded. Disabling website.',LOGLEVEL_DEBUG);
-
+				
 				//* Send traffic notifications
 				if($rec['traffic_quota_lock'] != 'y' && ($web_config['overtraffic_notify_admin'] == 'y' || $web_config['overtraffic_notify_client'] == 'y')) {
                     
-					$placeholders = array('{domain}' => $rec['domain'],
+                    $placeholders = array('{domain}' => $rec['domain'],
                                           '{admin_mail}' => ($global_config['admin_mail'] != ''? $global_config['admin_mail'] : 'root'));
                     
 					$recipients = array();
-					//* send email to admin
+                    //* send email to admin
 					if($global_config['admin_mail'] != '' && $web_config['overtraffic_notify_admin'] == 'y') {
 						$recipients[] = $global_config['admin_mail'];
 					}
-
+					
 					//* Send email to client
 					if($web_config['overtraffic_notify_client'] == 'y') {
 						$client_group_id = $rec["sys_groupid"];
@@ -761,10 +761,11 @@ if ($app->dbmaster == $app->db) {
 							$recipients[] = $client['email'];
 						}
 					}
-
-					send_notification_email('web_traffic_notification', $placeholders, $recipients);
+                    
+                    send_notification_email('web_traffic_notification', $placeholders, $recipients);
 				}
-
+				
+				
 			} else {
 				//* unlock the website, if traffic is lower then quota
 				if($rec['traffic_quota_lock'] == 'y') {
@@ -791,7 +792,7 @@ if ($app->dbmaster == $app->db) {
 	$sql = "SELECT domain_id,sys_groupid,domain,system_user,last_quota_notification,DATEDIFF(CURDATE(), last_quota_notification) as `notified_before` FROM web_domain WHERE (type = 'vhost' OR type = 'vhostsubdomain')";
 	$records = $app->db->queryAllRecords($sql);
 	if(is_array($records) && !empty($records)) {
-
+	
 		$tmp_rec =  $app->db->queryAllRecords("SELECT data from monitor_data WHERE type = 'harddisk_quota' ORDER BY created DESC");
 		$monitor_data = array();
 		if(is_array($tmp_rec)) {
@@ -799,18 +800,18 @@ if ($app->dbmaster == $app->db) {
 				$monitor_data = array_merge_recursive($monitor_data,unserialize($app->db->unquote($tmp_mon['data'])));
 			}
 		}
-
+		
 		foreach($records as $rec) {
 
 			//$web_hd_quota = $rec['hd_quota'];
 			$domain = $rec['domain'];
-
+			
 			$username = $rec['system_user'];
 			$rec['used'] = $monitor_data['user'][$username]['used'];
 			$rec['soft'] = $monitor_data['user'][$username]['soft'];
 			$rec['hard'] = $monitor_data['user'][$username]['hard'];
 			$rec['files'] = $monitor_data['user'][$username]['files'];
-
+				
 			if (!is_numeric($rec['used'])){
 				if ($rec['used'][0] > $rec['used'][1]){
 					$rec['used'] = $rec['used'][0];
@@ -821,22 +822,22 @@ if ($app->dbmaster == $app->db) {
 			if (!is_numeric($rec['soft'])) $rec['soft']=$rec['soft'][1];
 			if (!is_numeric($rec['hard'])) $rec['hard']=$rec['hard'][1];
 			if (!is_numeric($rec['files'])) $rec['files']=$rec['files'][1];
-
+				
 			// used space ratio
 			if($rec['soft'] > 0){
 				$used_ratio = $rec['used']/$rec['soft'];
 			} else {
 				$used_ratio = 0;
 			}
-
+			
 			$rec['ratio'] = number_format($used_ratio * 100, 2, '.', '').'%';
-
+		
 			if($rec['used'] > 1024) {
 				$rec['used'] = round($rec['used'] / 1024,2).' MB';
 			} else {
 				if ($rec['used'] != '') $rec['used'] .= ' KB';
 			}
-
+		
 			if($rec['soft'] > 1024) {
 				$rec['soft'] = round($rec['soft'] / 1024,2).' MB';
 			} elseif($rec['soft'] == 0){
@@ -844,7 +845,7 @@ if ($app->dbmaster == $app->db) {
 			} else {
 				$rec['soft'] .= ' KB';
 			}
-
+		
 			if($rec['hard'] > 1024) {
 				$rec['hard'] = round($rec['hard'] / 1024,2).' MB';
 			} elseif($rec['hard'] == 0){
@@ -852,12 +853,12 @@ if ($app->dbmaster == $app->db) {
 			} else {
 				$rec['hard'] .= ' KB';
 			}
-
+			
 			// send notifications only if 90% or more of the quota are used
 			if($used_ratio < 0.9) {
                 // reset notification date
                 if($rec['last_quota_notification']) $app->dbmaster->datalogUpdate('web_domain', "last_quota_notification = NULL", 'domain_id', $rec['domain_id']);
-
+                
                 // send notification - everything ok again
                 if($rec['last_quota_notification'] && $web_config['overquota_notify_onok'] == 'y' && ($web_config['overquota_notify_admin'] == 'y' || $web_config['overquota_notify_client'] == 'y')) {
                     $placeholders = array('{domain}' => $rec['domain'],
@@ -868,12 +869,12 @@ if ($app->dbmaster == $app->db) {
                                           '{ratio}' => $rec['ratio']);
 
                     $recipients = array();
-
+                    
                     //* send email to admin
                     if($global_config['admin_mail'] != '' && $web_config['overquota_notify_admin'] == 'y') {
                         $recipients[] = $global_config['admin_mail'];
                     }
-
+                    
                     //* Send email to client
                     if($web_config['overquota_notify_client'] == 'y') {
                         $client_group_id = $rec["sys_groupid"];
@@ -884,19 +885,19 @@ if ($app->dbmaster == $app->db) {
                     }
                     send_notification_email('web_quota_ok_notification', $placeholders, $recipients);
                 }
-
+                
                 continue;
             }
-
+            
             // could a notification be sent?
             $send_notification = false;
             if(!$rec['last_quota_notification']) $send_notification = true; // not yet notified
             elseif($web_config['overquota_notify_freq'] > 0 && $rec['notified_before'] >= $web_config['overquota_notify_freq']) $send_notification = true;
-
+            
 			//* Send quota notifications
 			if(($web_config['overquota_notify_admin'] == 'y' || $web_config['overquota_notify_client'] == 'y') && $send_notification == true) {
 				$app->dbmaster->datalogUpdate('web_domain', "last_quota_notification = CURDATE()", 'domain_id', $rec['domain_id']);
-
+                
                 $placeholders = array('{domain}' => $rec['domain'],
                                       '{admin_mail}' => ($global_config['admin_mail'] != ''? $global_config['admin_mail'] : 'root'),
                                       '{used}' => $rec['used'],
@@ -905,12 +906,12 @@ if ($app->dbmaster == $app->db) {
                                       '{ratio}' => $rec['ratio']);
 
                 $recipients = array();
-
+                
                 //* send email to admin
                 if($global_config['admin_mail'] != '' && $web_config['overquota_notify_admin'] == 'y') {
                     $recipients[] = $global_config['admin_mail'];
                 }
-
+                
                 //* Send email to client
                 if($web_config['overquota_notify_client'] == 'y') {
                     $client_group_id = $rec["sys_groupid"];
@@ -939,7 +940,7 @@ if ($app->dbmaster == $app->db) {
 	$sql = "SELECT mailuser_id,sys_groupid,email,name,quota,last_quota_notification,DATEDIFF(CURDATE(), last_quota_notification) as `notified_before` FROM mail_user";
 	$records = $app->db->queryAllRecords($sql);
 	if(is_array($records) && !empty($records)) {
-
+	
 		$tmp_rec =  $app->db->queryAllRecords("SELECT data from monitor_data WHERE type = 'email_quota' ORDER BY created DESC");
 		$monitor_data = array();
 		if(is_array($tmp_rec)) {
@@ -953,24 +954,24 @@ if ($app->dbmaster == $app->db) {
 				}
 			}
 		}
-
+		
 		foreach($records as $rec) {
 
 			$email = $rec['email'];
-
+		
 			$rec['used'] = isset($monitor_data[$email]['used']) ? $monitor_data[$email]['used'] : array(1 => 0);
-
+		
 			if (!is_numeric($rec['used'])) $rec['used']=$rec['used'][1];
-
+				
 			// used space ratio
 			if($rec['quota'] > 0){
 				$used_ratio = $rec['used']/$rec['quota'];
 			} else {
 				$used_ratio = 0;
 			}
-
+			
 			$rec['ratio'] = number_format($used_ratio * 100, 2, '.', '').'%';
-
+			
 			if($rec['quota'] > 0){
 				$rec['quota'] = round($rec['quota'] / 1048576,4).' MB';
 			} else {
@@ -981,8 +982,8 @@ if ($app->dbmaster == $app->db) {
 				$rec['used'] = round($rec['used'] / 1024,4).' KB';
 			} else {
 				$rec['used'] = round($rec['used'] / 1048576,4).' MB';
-			}
-
+			} 
+			
 			// send notifications only if 90% or more of the quota are used
 			if($used_ratio < 0.9) {
                 // reset notification date
@@ -996,13 +997,13 @@ if ($app->dbmaster == $app->db) {
                               '{name}' => $rec['name'],
                               '{quota}' => $rec['quota'],
                               '{ratio}' => $rec['ratio']);
-
+        
                     $recipients = array();
                     //* send email to admin
                     if($global_config['admin_mail'] != '' && $mail_config['overquota_notify_admin'] == 'y') {
                         $recipients[] = $global_config['admin_mail'];
                     }
-
+                    
                     //* Send email to client
                     if($mail_config['overquota_notify_client'] == 'y') {
                         $client_group_id = $rec["sys_groupid"];
@@ -1011,35 +1012,35 @@ if ($app->dbmaster == $app->db) {
                             $recipients[] = $client['email'];
                         }
                     }
-
+                    
                     send_notification_email('mail_quota_ok_notification', $placeholders, $recipients);
                 }
 
                 continue;
             }
-
+				
 			//* Send quota notifications
             // could a notification be sent?
             $send_notification = false;
             if(!$rec['last_quota_notification']) $send_notification = true; // not yet notified
             elseif($mail_config['overquota_notify_freq'] > 0 && $rec['notified_before'] >= $mail_config['overquota_notify_freq']) $send_notification = true;
-
+            
             if(($mail_config['overquota_notify_admin'] == 'y' || $mail_config['overquota_notify_client'] == 'y') && $send_notification == true) {
 				$app->dbmaster->datalogUpdate('mail_user', "last_quota_notification = CURDATE()", 'mailuser_id', $rec['mailuser_id']);
-
+                
                 $placeholders = array('{email}' => $rec['email'],
                           '{admin_mail}' => ($global_config['admin_mail'] != ''? $global_config['admin_mail'] : 'root'),
                           '{used}' => $rec['used'],
                           '{name}' => $rec['name'],
                           '{quota}' => $rec['quota'],
                           '{ratio}' => $rec['ratio']);
-
+    
                 $recipients = array();
                 //* send email to admin
                 if($global_config['admin_mail'] != '' && $mail_config['overquota_notify_admin'] == 'y') {
                     $recipients[] = $global_config['admin_mail'];
                 }
-
+                
                 //* Send email to client
                 if($mail_config['overquota_notify_client'] == 'y') {
                     $client_group_id = $rec["sys_groupid"];
@@ -1048,9 +1049,9 @@ if ($app->dbmaster == $app->db) {
                         $recipients[] = $client['email'];
                     }
                 }
-
+                
                 send_notification_email('mail_quota_notification', $placeholders, $recipients);
-			}
+			}	
 		}
 	}
 }
@@ -1076,17 +1077,12 @@ if ($app->dbmaster == $app->db) {
 
 }
 
-#######################################################################################################
-// Create website backups
-#######################################################################################################
-function formatBytes($size, $precision = 2) {
-	$base=log($size)/log(1024);
-	$suffixes=array('','k','M','G','T');
-    	return round(pow(1024,$base-floor($base)),$precision).$suffixes[floor($base)];
-}
-
-$server_config = $app->getconf->get_server_config($conf['server_id'], 'server');
-$backup_dir = $server_config['backup_dir'];
+#######################################################################################################
+// Create website backups
+#######################################################################################################
+
+$server_config = $app->getconf->get_server_config($conf['server_id'], 'server');
+$backup_dir = $server_config['backup_dir'];
 $backup_mode = $server_config['backup_mode'];
 if($backup_mode == '') $backup_mode = 'userzip';
 
@@ -1139,7 +1135,7 @@ if($backup_dir != '') {
 					$web_backup_file = 'web'.$web_id.'_'.date('Y-m-d_H-i').'.tar.gz';
 					exec('tar pczf '.escapeshellarg($web_backup_dir.'/'.$web_backup_file).' --exclude=backup\* --directory '.escapeshellarg($web_path).' .', $tmp_output, $retval);
 				}
-				if($retval == 0){
+				if($retval == 0 || $backup_mode != 'userzip'){ // tar can return 1 (due to harmless warings) and still create valid backups
 					chown($web_backup_dir.'/'.$web_backup_file, 'root');
 					chgrp($web_backup_dir.'/'.$web_backup_file, 'root');
 					chmod($web_backup_dir.'/'.$web_backup_file, 0750);
@@ -1153,7 +1149,7 @@ if($backup_dir != '') {
 				} else {
 					if(is_file($web_backup_dir.'/'.$web_backup_file)) unlink($web_backup_dir.'/'.$web_backup_file);
 				}
-
+				
 				//* Remove old backups
 				$backup_copies = intval($rec['backup_copies']);
 
@@ -1187,7 +1183,7 @@ if($backup_dir != '') {
 				//* Remove backupdir symlink and create as directory instead
 				$app->uses('system');
 				$app->system->web_folder_protection($web_path,false);
-
+				
 				if(is_link($web_path.'/backup')) {
 					unlink($web_path.'/backup');
 				}
@@ -1196,9 +1192,8 @@ if($backup_dir != '') {
 					chown($web_path.'/backup', $rec['system_user']);
 					chgrp($web_path.'/backup', $rec['system_group']);
 				}
-
+				
 				$app->system->web_folder_protection($web_path,true);
-
 			}
 
 			/* If backup_interval is set to none and we have a
@@ -1232,73 +1227,34 @@ if($backup_dir != '') {
 				chown($db_backup_dir, 'root');
 				chgrp($db_backup_dir, 'root');
 
-				//* Do the mysql database backup with mysqldump or mongodump
+				//* Do the mysql database backup with mysqldump
 				$db_id = $rec['database_id'];
 				$db_name = $rec['database_name'];
+				$db_backup_file = 'db_'.$db_name.'_'.date('Y-m-d_H-i').'.sql';
+				//$command = "mysqldump -h '".escapeshellcmd($clientdb_host)."' -u '".escapeshellcmd($clientdb_user)."' -p'".escapeshellcmd($clientdb_password)."' -c --add-drop-table --create-options --quick --result-file='".$db_backup_dir.'/'.$db_backup_file."' '".$db_name."'";
+				$command = "mysqldump -h ".escapeshellarg($clientdb_host)." -u ".escapeshellarg($clientdb_user)." -p".escapeshellarg($clientdb_password)." -c --add-drop-table --create-options --quick --result-file='".$db_backup_dir.'/'.$db_backup_file."' '".$db_name."'";
+				exec($command, $tmp_output, $retval);
+
+				//* Compress the backup with gzip
+				if($retval == 0) exec("gzip -c '".escapeshellcmd($db_backup_dir.'/'.$db_backup_file)."' > '".escapeshellcmd($db_backup_dir.'/'.$db_backup_file).".gz'", $tmp_output, $retval);
+				
+				if($retval == 0){
+					chmod($db_backup_dir.'/'.$db_backup_file.'.gz', 0750);
+					chown($db_backup_dir.'/'.$db_backup_file.'.gz', fileowner($db_backup_dir));
+					chgrp($db_backup_dir.'/'.$db_backup_file.'.gz', filegroup($db_backup_dir));
 
-				if ($rec['type'] == 'mysql') {
-					$db_backup_file = 'db_'.$db_name.'_'.date('Y-m-d_H-i').'.sql';
-					//$command = "mysqldump -h '".escapeshellcmd($clientdb_host)."' -u '".escapeshellcmd($clientdb_user)."' -p'".escapeshellcmd($clientdb_password)."' -c --add-drop-table --create-options --quick --result-file='".$db_backup_dir.'/'.$db_backup_file."' '".$db_name."'";
-					$command = "mysqldump -h ".escapeshellarg($clientdb_host)." -u ".escapeshellarg($clientdb_user)." -p".escapeshellarg($clientdb_password)." -c --add-drop-table --create-options --quick --result-file='".$db_backup_dir.'/'.$db_backup_file."' '".$db_name."'";
-					exec($command, $tmp_output, $retval);
-
-					//* Compress the backup with gzip
-					if($retval == 0) exec("gzip -c '".escapeshellcmd($db_backup_dir.'/'.$db_backup_file)."' > '".escapeshellcmd($db_backup_dir.'/'.$db_backup_file).".gz'", $tmp_output, $retval);
-
-					if($retval == 0){
-						chmod($db_backup_dir.'/'.$db_backup_file.'.gz', 0750);
-						chown($db_backup_dir.'/'.$db_backup_file.'.gz', fileowner($db_backup_dir));
-						chgrp($db_backup_dir.'/'.$db_backup_file.'.gz', filegroup($db_backup_dir));
-
-						//* Insert web backup record in database
-						//$insert_data = "(server_id,parent_domain_id,backup_type,backup_mode,tstamp,filename) VALUES (".$conf['server_id'].",$web_id,'mysql','sqlgz',".time().",'".$app->db->quote($db_backup_file).".gz')";
-						//$app->dbmaster->datalogInsert('web_backup', $insert_data, 'backup_id');
-						$sql = "INSERT INTO web_backup (server_id,parent_domain_id,backup_type,backup_mode,tstamp,filename) VALUES (".$conf['server_id'].",$web_id,'mysql','sqlgz',".time().",'".$app->db->quote($db_backup_file).".gz')";
-						$app->db->query($sql);
-						if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql);
-
-					} else {
-						if(is_file($db_backup_dir.'/'.$db_backup_file.'.gz')) unlink($db_backup_dir.'/'.$db_backup_file.'.gz');
-					}
-					//* Remove the uncompressed file
-					if(is_file($db_backup_dir.'/'.$db_backup_file)) unlink($db_backup_dir.'/'.$db_backup_file);
-				} else if ($rec['type'] == 'mongo') {
-					$db_backup_file = 'db_'.$db_name.'_'.date('Y-m-d_H-i');
-
-					try {
-						$connection = new MongoClient("mongodb://root:123456@127.0.0.1:27017/admin");
-						$db = $connection->selectDB($db_name);
-						// exclude not supported by mongodump, only get user collections
-						$collections = $db->getCollectionNames(false);
-
-						foreach ($collections as $collection) {
-							// mongodump -h 127.0.0.1 --port 27017 -u root -p 123456 --authenticationDatabase admin -d <db> -c <table> -o /tmp/test
-							$command = "mongodump -h 127.0.0.1 --port 27017 -u root -p 123456 --authenticationDatabase admin -d ".escapeshellcmd($db_name)." -c ".escapeshellcmd($collection)." -o ".escapeshellcmd($db_backup_dir.'/'.$db_backup_file);
-							exec($command);
-						}
-
-						if (is_dir(escapeshellcmd($db_backup_dir.'/'.$db_backup_file))) {
-							//* Compress the backup with gzip
-							exec("cd ".escapeshellcmd($db_backup_dir)." && tar -pczf ".escapeshellcmd($db_backup_dir.'/'.$db_backup_file).".tar.gz ".escapeshellcmd($db_backup_file));
-							chmod($db_backup_dir.'/'.$db_backup_file.'.tar.gz', 0750);
-							chown($db_backup_dir.'/'.$db_backup_file.'.tar.gz', fileowner($db_backup_dir));
-							chgrp($db_backup_dir.'/'.$db_backup_file.'.tar.gz', filegroup($db_backup_dir));
-
-							//* Insert web backup record in database
-							$sql = "INSERT INTO web_backup (server_id,parent_domain_id,backup_type,backup_mode,tstamp,filename) VALUES (".$conf['server_id'].",$web_id,'mongodb','rootgz',".time().",'".$app->db->quote($db_backup_file).".tar.gz')";
-							$app->db->query($sql);
-
-							if ($app->db->dbHost != $app->dbmaster->dbHost) {
-								$app->dbmaster->query($sql);
-							}
+					//* Insert web backup record in database
+					//$insert_data = "(server_id,parent_domain_id,backup_type,backup_mode,tstamp,filename) VALUES (".$conf['server_id'].",$web_id,'mysql','sqlgz',".time().",'".$app->db->quote($db_backup_file).".gz')";
+					//$app->dbmaster->datalogInsert('web_backup', $insert_data, 'backup_id');
+					$sql = "INSERT INTO web_backup (server_id,parent_domain_id,backup_type,backup_mode,tstamp,filename) VALUES (".$conf['server_id'].",$web_id,'mysql','sqlgz',".time().",'".$app->db->quote($db_backup_file).".gz')";
+					$app->db->query($sql);
+					if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql);
 
-							//* Remove the uncompressed file
-							exec("rm -rf ".escapeshellcmd($db_backup_dir.'/'.$db_backup_file));
-						}
-					} catch (MongoConnnectionException $e) {
-						// connecting to MongoDB failed - cannot create backup
-					}
+				} else {
+					if(is_file($db_backup_dir.'/'.$db_backup_file.'.gz')) unlink($db_backup_dir.'/'.$db_backup_file.'.gz');
 				}
+				//* Remove the uncompressed file
+				if(is_file($db_backup_dir.'/'.$db_backup_file)) unlink($db_backup_dir.'/'.$db_backup_file);
 
 				//* Remove old backups
 				$backup_copies = intval($rec['backup_copies']);
@@ -1306,13 +1262,13 @@ if($backup_dir != '') {
 				$dir_handle = dir($db_backup_dir);
 				$files = array();
 				while (false !== ($entry = $dir_handle->read())) {
-					if($entry != '.' && $entry != '..' && (preg_match('/^db_(.*?)_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}\.sql.gz$/', $entry, $matches) || preg_match('/^db_(.*?)_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}\.tar.gz$/', $entry, $matches)) && is_file($db_backup_dir.'/'.$entry)) {
+					if($entry != '.' && $entry != '..' && preg_match('/^db_(.*?)_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}\.sql.gz$/', $entry, $matches) && is_file($db_backup_dir.'/'.$entry)) {
                         if(array_key_exists($matches[1], $files) == false) $files[$matches[1]] = array();
 						$files[$matches[1]][] = $entry;
 					}
 				}
 				$dir_handle->close();
-
+                
                 reset($files);
                 foreach($files as $db_name => $filelist) {
                     rsort($filelist);
@@ -1339,6 +1295,19 @@ if($backup_dir != '') {
 		unset($clientdb_password);
 
 	}
+	
+	// remove non-existing backups from database
+	$backups = $app->db->queryAllRecords("SELECT * FROM web_backup WHERE server_id = ".$conf['server_id']);
+	if(is_array($backups) && !empty($backups)){
+		foreach($backups as $backup){
+			$backup_file = $backup_dir.'/web'.$backup['parent_domain_id'].'/'.$backup['filename'];
+			if(!is_file($backup_file)){
+				$sql = "DELETE FROM web_backup WHERE server_id = ".$conf['server_id']." AND parent_domain_id = ".$backup['parent_domain_id']." AND filename = '".$backup['filename']."'";
+				$app->db->query($sql);
+				if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql);
+			}
+		}
+	}
 }
 
 
diff --git a/server/lib/classes/aps_base.inc.php b/server/lib/classes/aps_base.inc.php
index 4c1512ba2a018e45f9aee6ef758be1c65e767b70..b8f6ad9232275d3ec5135002307c8e4629f82b13 100644
--- a/server/lib/classes/aps_base.inc.php
+++ b/server/lib/classes/aps_base.inc.php
@@ -1,103 +1,103 @@
-<?php
-/*
-Copyright (c) 2012, ISPConfig UG
-Contributors: web wack creations,  http://www.web-wack.at
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of ISPConfig nor the names of its contributors
-      may be used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-// Constants describing instances
-define('INSTANCE_PENDING', 0);
-define('INSTANCE_INSTALL', 1);
-define('INSTANCE_ERROR', 2);
-define('INSTANCE_SUCCESS', 3);
-define('INSTANCE_REMOVE', 4);
-
-// Constants describing packages
-define('PACKAGE_LOCKED', 1);
-define('PACKAGE_ENABLED', 2);
-define('PACKAGE_OUTDATED', 3);
-define('PACKAGE_ERROR_NOMETA', 4);
-
-class ApsBase
-{
-    protected $log_prefix = '';
-    protected $fetch_url = '';
-    protected $aps_version = '';
-    protected $packages_dir = '';
-    protected $temp_pkg_dir = '';
-    protected $interface_pkg_dir = '';
-    protected $interface_mode = false; // server mode by default
-
-    /**
-     * Constructor
-     *
-     * @param $app the application instance (db handle + log method)
-     * @param $interface_mode act in interface (true) or server mode (false)
-     * @param $log_prefix a prefix to set before all log entries
-     */
-    public function __construct($app, $log_prefix = 'APS: ', $interface_mode = false)
-    {
-        $this->log_prefix = $log_prefix;
-        $this->interface_mode = $interface_mode;
-        $this->fetch_url = 'apscatalog.com';
-        $this->aps_version = '1';
-        $this->packages_dir = ISPC_ROOT_PATH.'/aps_packages';
-        $this->interface_pkg_dir = ISPC_ROOT_PATH.'/web/sites/aps_meta_packages';
-    }
-    
-    /**
-     * Converts a given value to it's native representation in 1024 units
-     * 
-     * @param $value the size to convert
-     * @return integer and string 
-     */
-    public function convertSize($value)
-    {
-        $unit = array('Bytes', 'KB', 'MB', 'GB', 'TB');
-        return @round($value/pow(1024, ($i = floor(log($value, 1024)))), 2).' '.$unit[$i];
-    }
-    
-    /**
-     * Determine a specific xpath from a given SimpleXMLElement handle. If the
-     * element is found, it's string representation is returned. If not,
-     * the return value will stay empty
-     *
-     * @param $xml_handle the SimpleXMLElement handle
-     * @param $query the XPath query
-     * @param $array define whether to return an array or a string
-     * @return $ret the return string
-     */
-    protected function getXPathValue($xml_handle, $query, $array = false)
-    {
-        $ret = '';
-        
-        $xp_result = @($xml_handle->xpath($query)) ? $xml_handle->xpath($query) : false;
-        if($xp_result !== false) $ret = (($array === false) ? (string)$xp_result[0] : $xp_result);
-        
-        return $ret;
-    }
-}
+<?php
+/*
+Copyright (c) 2012, ISPConfig UG
+Contributors: web wack creations,  http://www.web-wack.at
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of ISPConfig nor the names of its contributors
+      may be used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+// Constants describing instances
+define('INSTANCE_PENDING', 0);
+define('INSTANCE_INSTALL', 1);
+define('INSTANCE_ERROR', 2);
+define('INSTANCE_SUCCESS', 3);
+define('INSTANCE_REMOVE', 4);
+
+// Constants describing packages
+define('PACKAGE_LOCKED', 1);
+define('PACKAGE_ENABLED', 2);
+define('PACKAGE_OUTDATED', 3);
+define('PACKAGE_ERROR_NOMETA', 4);
+
+class ApsBase
+{
+    protected $log_prefix = '';
+    protected $fetch_url = '';
+    protected $aps_version = '';
+    protected $packages_dir = '';
+    protected $temp_pkg_dir = '';
+    protected $interface_pkg_dir = '';
+    protected $interface_mode = false; // server mode by default
+
+    /**
+     * Constructor
+     *
+     * @param $app the application instance (db handle + log method)
+     * @param $interface_mode act in interface (true) or server mode (false)
+     * @param $log_prefix a prefix to set before all log entries
+     */
+    public function __construct($app, $log_prefix = 'APS: ', $interface_mode = false)
+    {
+        $this->log_prefix = $log_prefix;
+        $this->interface_mode = $interface_mode;
+        $this->fetch_url = 'apscatalog.com';
+        $this->aps_version = '1';
+        $this->packages_dir = ISPC_ROOT_PATH.'/aps_packages';
+        $this->interface_pkg_dir = ISPC_ROOT_PATH.'/web/sites/aps_meta_packages';
+    }
+    
+    /**
+     * Converts a given value to it's native representation in 1024 units
+     * 
+     * @param $value the size to convert
+     * @return integer and string 
+     */
+    public function convertSize($value)
+    {
+        $unit = array('Bytes', 'KB', 'MB', 'GB', 'TB');
+        return @round($value/pow(1024, ($i = floor(log($value, 1024)))), 2).' '.$unit[$i];
+    }
+    
+    /**
+     * Determine a specific xpath from a given SimpleXMLElement handle. If the
+     * element is found, it's string representation is returned. If not,
+     * the return value will stay empty
+     *
+     * @param $xml_handle the SimpleXMLElement handle
+     * @param $query the XPath query
+     * @param $array define whether to return an array or a string
+     * @return $ret the return string
+     */
+    protected function getXPathValue($xml_handle, $query, $array = false)
+    {
+        $ret = '';
+        
+        $xp_result = @($xml_handle->xpath($query)) ? $xml_handle->xpath($query) : false;
+        if($xp_result !== false) $ret = (($array === false) ? (string)$xp_result[0] : $xp_result);
+        
+        return $ret;
+    }
+}
 ?>
\ No newline at end of file
diff --git a/server/lib/classes/aps_installer.inc.php b/server/lib/classes/aps_installer.inc.php
index 39f71ce51a83ba7e4c7d0c8e5a2a3167cd5a8d16..6cb922f67462666d3ee2599eec28e45cb5533fa5 100644
--- a/server/lib/classes/aps_installer.inc.php
+++ b/server/lib/classes/aps_installer.inc.php
@@ -1,720 +1,720 @@
-<?php
-/*
-Copyright (c) 2012, ISPConfig UG
-Contributors: web wack creations,  http://www.web-wack.at
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of ISPConfig nor the names of its contributors
-      may be used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-require_once('aps_base.inc.php');
-
-@set_time_limit(0);
-@ignore_user_abort(1);
-
-class ApsInstaller extends ApsBase
-{
-    private $handle_type = '';
-    private $domain = '';
-    private $document_root = '';
-    private $sublocation = '';
-    private $local_installpath = '';
-    private $dbhost = '';
-    private $newdb_name = '';
-    private $newdb_user = '';
-    private $file_owner_user = '';
-    private $file_owner_group = '';
-	private $putenv = array();
-    
-   /**
-    * Constructor
-    *
-    * @param $app the application instance (db handle + log method)
-    * @param $interface_mode act in interface (true) or server mode (false)
-    */
-    public function __construct($app, $interface_mode = false)
-    {
-        parent::__construct($app, 'APS installer: ', $interface_mode);
-    }
-    
-    /**
-     * Before the cron is executed, make sure all necessary options are set
-     * and all functions are available
-     */
-    private function checkRequirements()
-    {
-        global $app;
-        try
-        {
-            // Check if exec() is not disabled
-            $disabled_func = explode(',', @ini_get('disable_functions'));
-            if(in_array('exec', $disabled_func)) throw new Exception('the call of exec() is disabled');
-            
-            // Check if safe_mode is disabled (needed for correct putenv, chmod, chown handling)
-            if(@ini_get('safe_mode')) throw new Exception('the safe_mode restriction is on');
-            
-            return true;
-        }
-        catch(Exception $e)
-        {
-            $app->log('Aborting execution because '.$e->getMessage(), 1);
-            return false;
-        }
-    }
-    
-    /**
-     * Get a file from a ZIP archive and either return it's content or
-     * extract it to a given destination
-     * 
-     * @param $zipfile the ZIP file to work with
-     * @param $subfile the file from which to get the content
-     * @param $destfolder the optional extraction destination
-     * @param $destname the optional target file name when extracting
-     * @return string or boolean
-     */
-    private function getContentFromZIP($zipfile, $subfile, $destfolder = '', $destname = '')
-    {
-        try
-        {
-            $zip = new ZipArchive;
-            $res = $zip->open(realpath($zipfile));
-            if(!$res) throw new Exception('Cannot open ZIP file '.$zipfile);
-        
-            // If no destination is given, the content is returned, otherwise
-            // the $subfile is extracted to $destination
-            if($destfolder == '')
-            {
-                $fh = $zip->getStream($subfile);
-                if(!$fh) throw new Exception('Cannot read '.$subfile.' from '.$zipfile);
-                
-                $subfile_content = '';            
-                while(!feof($fh)) $subfile_content .= fread($fh, 8192);
-                
-                fclose($fh);
-                
-                return $subfile_content;
-            }
-            else
-            {
-                // extractTo would be suitable but has no target name parameter
-                //$ind = $zip->locateName($subfile);
-                //$ex = $zip->extractTo($destination, array($zip->getNameIndex($ind)));
-                if($destname == '') $destname = basename($subfile);
-                $ex = @copy('zip://'.$zipfile.'#'.$subfile, $destfolder.$destname);
-                if(!$ex) throw new Exception('Cannot extract '.$subfile.' to '.$destfolder);
-            }
-            
-            $zip->close();
-            
-        }
-        catch(Exception $e)
-        {
-            // The exception message is only interesting for debugging reasons
-            // echo $e->getMessage();
-            return false;
-        }
-    }    
-    
-    /**
-     * Extract the complete directory of a ZIP file
-     * 
-     * @param $filename the file to unzip
-     * @param $directory the ZIP inside directory to unzip
-     * @param $destination the place where to extract the data
-     * @return boolean
-     */
-    private function extractZip($filename, $directory, $destination)
-    {
-        if(!file_exists($filename)) return false;
-        
-        // Fix the paths
-        if(substr($directory, -1) == '/') $directory = substr($directory, 0, strlen($directory) - 1);
-        if(substr($destination, -1) != '/') $destination .= '/';
-        
-        // Read and extract the ZIP file
-        $ziphandle = zip_open(realpath($filename));
-        if(is_resource($ziphandle))
-        {
-            while($entry = zip_read($ziphandle))
-            {
-                if(substr(zip_entry_name($entry), 0, strlen($directory)) == $directory)
-                {
-                    // Modify the relative ZIP file path
-                    $new_path = substr(zip_entry_name($entry), strlen($directory));
-                    
-                    if(substr($new_path, -1) == '/') // Identifier for directories
-                    {
-                        if(!file_exists($destination.$new_path)) mkdir($destination.$new_path, 0777, true);
-                    }
-                    else // Handle files
-                    {
-                        if(zip_entry_open($ziphandle, $entry))
-                        {
-                            $new_dir = dirname($destination.$new_path);
-                            if(!file_exists($new_dir)) mkdir($new_dir, 0777, true);
-                            
-                            $file = fopen($destination.$new_path, 'wb');
-                            if($file)
-                            {
-                                while($line = zip_entry_read($entry)) fwrite($file, $line);
-                                fclose($file);
-                            }
-                            else return false;
-                        }
-                    }
-                }
-            }
-            
-            zip_close($ziphandle);
-            return true;
-        }
-        
-        return false;
-    }
-
-    /**
-     * Setup the path environment variables for the install script
-     * 
-     * @param $parent_mapping the SimpleXML instance with the current mapping position
-     * @param $url the relative path within the mapping tree
-     * @param $path the absolute path within the mapping tree
-     */
-    private function processMappings($parent_mapping, $url, $path)
-    {
-        if($parent_mapping && $parent_mapping != null)
-        {
-            $writable = parent::getXPathValue($parent_mapping, 'php:permissions/@writable');
-            $readable = parent::getXPathValue($parent_mapping, 'php:permissions/@readable');
-
-            // set the write permission            
-            if($writable == 'true')
-            {
-                if(is_dir($path)) chmod($path, 0775);
-                else chmod($path, 0664);
-            }
-            
-            // set non-readable permission
-            if($readable == 'false')
-            {
-                if(is_dir($path)) chmod($path, 0333);
-                else chmod($path, 0222);
-            }
-        }
-        
-        // Set the environment variables
-        $env = str_replace('/', '_', $url);
-        $this->putenv[] = 'WEB_'.$env.'_DIR='.$path;
-        
-        // Step recursively into further mappings
-        if($parent_mapping && $parent_mapping != null)
-        {
-            foreach($parent_mapping->mapping as $mapping)
-            {
-                if($url == '/') $this->processMappings($mapping, $url.$mapping['url'], $path.$mapping['url']);
-                else $this->processMappings($mapping, $url.'/'.$mapping['url'], $path.'/'.$mapping['url']);
-            }
-        }
-    }    
-    
-    /**
-     * Setup the environment with data for the install location
-     * 
-     * @param $task an array containing all install related data
-     */
-    private function prepareLocation($task)
-    {
-        global $app;
-        
-        // Get the domain name to use for the installation
-        // Would be possible in one query too, but we use 2 for easier debugging
-        $main_domain = $app->db->queryOneRecord("SELECT value FROM aps_instances_settings  
-            WHERE name = 'main_domain' AND instance_id = '".$app->db->quote($task['instance_id'])."';");
-        $this->domain = $main_domain['value'];
-        
-        // Get the document root
-        $domain_res = $app->db->queryOneRecord("SELECT document_root, web_folder, type FROM web_domain 
-            WHERE domain = '".$app->db->quote($this->domain)."';");
-        $this->document_root = $domain_res['document_root'];
-        
-        // Get the sub location
-        $location_res = $app->db->queryOneRecord("SELECT value FROM aps_instances_settings 
-            WHERE name = 'main_location' AND instance_id = '".$app->db->quote($task['instance_id'])."';");
-        $this->sublocation = $location_res['value'];
-        
-        // Make sure the document_root ends with /
-        if(substr($this->document_root, -1) != '/') $this->document_root .= '/';
-        
-        // Attention: ISPConfig Special: web files are in subfolder 'web' -> append it:
-        if($domain_res['type'] == 'vhostsubdomain') $this->document_root .= $domain_res['web_folder'] . '/';
-        else $this->document_root .= 'web/';
-
-        // If a subfolder is given, make sure it's path doesn't begin with / i.e. /phpbb
-        if(substr($this->sublocation, 0, 1) == '/') $this->sublocation = substr($this->sublocation, 1);
-                
-        // If the package isn't installed to a subfolder, remove the / at the end of the document root
-        if(empty($this->sublocation)) $this->document_root = substr($this->document_root, 0, strlen($this->document_root) - 1);
-        
-        // Set environment variables, later processed by the package install script
-        $this->putenv[] = 'BASE_URL_SCHEME=http';
-        // putenv('BASE_URL_PORT') -> omitted as it's 80 by default
-        $this->putenv[] = 'BASE_URL_HOST='.$this->domain;
-        $this->putenv[] = 'BASE_URL_PATH='.$this->sublocation.'/';
-    }    
-    
-    /**
-     * Setup a database (if needed) and the appropriate environment variables
-     * 
-     * @param $task an array containing all install related data
-     * @param $sxe a SimpleXMLElement handle, holding APP-META.xml
-     */
-    private function prepareDatabase($task, $sxe)
-    {
-        global $app;
-        
-        $db_id = parent::getXPathValue($sxe, '//db:id');
-        if(empty($db_id)) return; // No database needed
-        
-		/* WARNING: if this will ever be uncommented please check the updated prefix handling for user and db names!!!
-         * 
-        // Set the database owner to the domain owner
-        // ISPConfig identifies the owner by the sys_groupid (not sys_userid!)
-        // so sys_userid can be set to any value
-        $perm = $app->db->queryOneRecord("SELECT sys_groupid, server_id FROM web_domain 
-            WHERE domain = '".$this->domain."';");
-        $task['sys_groupid'] = $perm['sys_groupid'];
-        $serverid = $perm['server_id'];
-                
-        // Get the database prefix and db user prefix 
-        $app->uses('getconf');
-        $global_config = $app->getconf->get_global_config('sites');
-        $dbname_prefix = str_replace('[CLIENTID]', '', $global_config['dbname_prefix']);
-        $dbuser_prefix = str_replace('[CLIENTID]', '', $global_config['dbuser_prefix']);
-        $this->dbhost = DB_HOST; // Taken from config.inc.php
-        if(empty($this->dbhost)) $this->dbhost = 'localhost'; // Just to ensure any hostname... ;)
-        
-        $this->newdb_name = $dbname_prefix.$task['CustomerID'].'aps'.$task['InstanceID'];
-        $this->newdb_user = $dbuser_prefix.$task['CustomerID'].'aps'.$task['InstanceID'];
-        $dbpw_res = $app->db->queryOneRecord("SELECT Value FROM aps_instances_settings  
-            WHERE Name = 'main_database_password' AND InstanceID = '".$app->db->quote($task['InstanceID'])."';");
-        $newdb_pw = $dbpw_res['Value'];
- 
-        // In any case delete an existing database (install and removal procedure)
-        $app->db->query('DROP DATABASE IF EXISTS `'.$app->db->quote($this->newdb_name).'`;');
-        // Delete an already existing database with this name
-        $app->db->query("DELETE FROM web_database WHERE database_name = '".$app->db->quote($this->newdb_name)."';");
-        
-        
-        // Create the new database and assign it to a user
-        if($this->handle_type == 'install')
-        {
-            $app->db->query('CREATE DATABASE IF NOT EXISTS `'.$app->db->quote($this->newdb_name).'`;');
-            $app->db->query('GRANT ALL PRIVILEGES ON '.$app->db->quote($this->newdb_name).'.* TO '.$app->db->quote($this->newdb_user).'@'.$app->db->quote($this->dbhost).' IDENTIFIED BY \'password\';');
-            $app->db->query('SET PASSWORD FOR '.$app->db->quote($this->newdb_user).'@'.$app->db->quote($this->dbhost).' = PASSWORD(\''.$newdb_pw.'\');');
-            $app->db->query('FLUSH PRIVILEGES;');
-        
-            // Add the new database to the customer databases
-            // Assumes: charset = utf8
-            $app->db->query('INSERT INTO web_database (sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, server_id, 
-                type, database_name, database_user, database_password, database_charset, remote_access, remote_ips, active) 
-                VALUES ('.$task['sys_userid'].', '.$task['sys_groupid'].', "'.$task['sys_perm_user'].'", "'.$task['sys_perm_group'].'", 
-                "'.$task['sys_perm_other'].'", '.$app->db->quote($serverid).', "mysql", "'.$app->db->quote($this->newdb_name).'", 
-                "'.$app->db->quote($this->newdb_user).'", "'.$app->db->quote($newdb_pw).'", "utf8", "n", "", "y");');
-        }
-		*/
-        
-        $mysqlver_res = $app->db->queryOneRecord('SELECT VERSION() as ver;');
-        $mysqlver = $mysqlver_res['ver'];
-		
-		$tmp = $app->db->queryOneRecord("SELECT value FROM aps_instances_settings WHERE name = 'main_database_password' AND instance_id = '".$app->db->quote($task['instance_id'])."';");
-        $newdb_pw = $tmp['value'];
-		
-		$tmp = $app->db->queryOneRecord("SELECT value FROM aps_instances_settings WHERE name = 'main_database_host' AND instance_id = '".$app->db->quote($task['instance_id'])."';");
-        $newdb_host = $tmp['value'];
-		
-		$tmp = $app->db->queryOneRecord("SELECT value FROM aps_instances_settings WHERE name = 'main_database_name' AND instance_id = '".$app->db->quote($task['instance_id'])."';");
-        $newdb_name = $tmp['value'];
-		
-		$tmp = $app->db->queryOneRecord("SELECT value FROM aps_instances_settings WHERE name = 'main_database_login' AND instance_id = '".$app->db->quote($task['instance_id'])."';");
-        $newdb_login = $tmp['value'];
-        
-        $this->putenv[] = 'DB_'.$db_id.'_TYPE=mysql';
-        $this->putenv[] = 'DB_'.$db_id.'_NAME='.$newdb_name;
-        $this->putenv[] = 'DB_'.$db_id.'_LOGIN='.$newdb_login;
-        $this->putenv[] = 'DB_'.$db_id.'_PASSWORD='.$newdb_pw;
-        $this->putenv[] = 'DB_'.$db_id.'_HOST='.$newdb_host;
-        $this->putenv[] = 'DB_'.$db_id.'_PORT=3306';
-        $this->putenv[] = 'DB_'.$db_id.'_VERSION='.$mysqlver;
-    }    
-    
-    /**
-     * Extract all needed files from the package
-     * 
-     * @param $task an array containing all install related data
-     * @param $sxe a SimpleXMLElement handle, holding APP-META.xml
-     * @return boolean
-     */
-    private function prepareFiles($task, $sxe)
-    {
-        global $app;
-        
-        // Basically set the mapping for APS version 1.0, if not available -> newer way
-        $mapping = $sxe->mapping;
-        $mapping_path = $sxe->mapping['path'];
-        $mapping_url = $sxe->mapping['url'];
-        if(empty($mapping))
-        {
-            $mapping = $sxe->service->provision->{'url-mapping'}->mapping;
-            $mapping_path = $sxe->service->provision->{'url-mapping'}->mapping['path'];
-            $mapping_url = $sxe->service->provision->{'url-mapping'}->mapping['url'];
-        }
-
-        try
-        {
-            // Make sure we have a valid mapping path (at least /)
-            if(empty($mapping_path)) throw new Exception('Unable to determine a mapping path');
-            
-            $this->local_installpath = $this->document_root.$this->sublocation.'/';
-
-            // Now delete an existing folder (affects install and removal in the same way)
-            @chdir($this->local_installpath);
-            if(file_exists($this->local_installpath)){
-				// make sure we don't delete error and stats folders
-				if($this->local_installpath == $this->document_root.'/'){
-					if(is_dir($this->document_root)){
-						$files = array_diff(scandir($this->document_root), array('.','..','error','stats'));
-						foreach($files as $file){
-							if(is_dir($this->document_root.'/'.$file)){
-								$app->file->removeDirectory($this->document_root.'/'.$file);
-							} else {
-								@unlink($this->document_root.'/'.$file);
-							}
-						}
-					} else {
-						@unlink($this->document_root);
-						mkdir($this->document_root, 0777, true);
-					}
-				} else {
-					exec("rm -Rf ".escapeshellarg($this->local_installpath).'*');
-				}
-			} else {
-				mkdir($this->local_installpath, 0777, true);
-			}
-
-            if($this->handle_type == 'install')
-            {            
-                // Now check if the needed folder is there
-                if(!file_exists($this->local_installpath))
-                    throw new Exception('Unable to create a new folder for the package '.$task['path']);
-                
-                // Extract all files and assign them a new owner
-                if( ($this->extractZip($this->packages_dir.'/'.$task['path'], $mapping_path, $this->local_installpath) === false)
-                 || ($this->extractZip($this->packages_dir.'/'.$task['path'], 'scripts', $this->local_installpath.'install_scripts/') === false) )
-                {
-                    // Clean already extracted data
-                    exec("rm -Rf ".escapeshellarg($this->local_installpath).'*');
-                    throw new Exception('Unable to extract the package '.$task['path']);              
-                }
-                
-                $this->processMappings($mapping, $mapping_url, $this->local_installpath);
-            
-                // Set the appropriate file owner
-                $main_domain = $app->db->queryOneRecord("SELECT value FROM aps_instances_settings  
-                    WHERE name = 'main_domain' AND instance_id = '".$app->db->quote($task['instance_id'])."';");        
-                $owner_res = $app->db->queryOneRecord("SELECT system_user, system_group FROM web_domain  
-                        WHERE domain = '".$app->db->quote($main_domain['value'])."';");
-                $this->file_owner_user = $owner_res['system_user']; 
-                $this->file_owner_group = $owner_res['system_group'];
-                exec('chown -R '.$this->file_owner_user.':'.$this->file_owner_group.' '.escapeshellarg($this->local_installpath));
-
-		//* Chown stats directory back
-		if(is_dir($this->local_installpath.'stats')) {
-			exec('chown -R root:root '.escapeshellarg($this->local_installpath.'stats'));
-		}
-            }
-        }
-        catch(Exception $e)
-        {
-            $app->dbmaster->query('UPDATE aps_instances SET instance_status = "'.INSTANCE_ERROR.'" 
-                WHERE id = "'.$app->db->quote($task['instance_id']).'";');
-            $app->log($e->getMessage(), 1);
-            return false;
-        }
-        
-        return true;
-    }
-    
-    /**
-     * Get all user config variables and set them to environment variables
-     * 
-     * @param $task an array containing all install related data
-     */    
-    private function prepareUserInputData($task)
-    {
-        global $app;
-        
-        $userdata = $app->db->queryAllRecords("SELECT name, value FROM aps_instances_settings 
-            WHERE instance_id = '".$app->db->quote($task['instance_id'])."';");
-        if(empty($userdata)) return false;
-        
-        foreach($userdata as $data)
-        {
-            // Skip unnecessary data
-            if($data['name'] == 'main_location'
-            || $data['name'] == 'main_domain'
-            || $data['name'] == 'main_database_password'
-			|| $data['name'] == 'main_database_name'
-			|| $data['name'] == 'main_database_host'
-			|| $data['name'] == 'main_database_login'
-            || $data['name'] == 'license') continue;
-            
-            $this->putenv[] = 'SETTINGS_'.$data['name'].'='.$data['value'];
-        }
-    }
-	
-	/**
-     * Fetch binary data from a given array
-     * The data is retrieved in binary mode and 
-     * then directly written to an output file
-     *
-     * @param $input a specially structed array
-     * @see $this->startUpdate()
-     */
-    private function fetchFiles($input)
-    {
-        $fh = array();
-        $url = array();
-        $conn = array();
-
-        // Build the single cURL handles and add them to a multi handle
-        $mh = curl_multi_init();
-        
-        // Process each app 
-        for($i = 0; $i < count($input); $i++)
-        {
-            $conn[$i] = curl_init($input[$i]['url']);
-            $fh[$i] = fopen($input[$i]['localtarget'], 'wb'); 
-            
-            curl_setopt($conn[$i], CURLOPT_BINARYTRANSFER, true);
-            curl_setopt($conn[$i], CURLOPT_FILE, $fh[$i]);
-            curl_setopt($conn[$i], CURLOPT_TIMEOUT, 0);
-            curl_setopt($conn[$i], CURLOPT_FAILONERROR, 1);
-            curl_setopt($conn[$i], CURLOPT_FOLLOWLOCATION, 1); 
-            
-            curl_multi_add_handle($mh, $conn[$i]);
-        }
-        
-        $active = 0;
-        do curl_multi_exec($mh, $active);
-        while($active > 0);
-
-        // Close the handles
-        for($i = 0; $i < count($input); $i++)
-        {
-            fclose($fh[$i]);
-            curl_multi_remove_handle($mh, $conn[$i]);
-            curl_close($conn[$i]);
-        }
-        curl_multi_close($mh);
-    }
-    
-    /**
-     * The installation script should be executed
-     * 
-     * @param $task an array containing all install related data
-     * @param $sxe a SimpleXMLElement handle, holding APP-META.xml
-     * @return boolean
-     */
-    private function doInstallation($task, $sxe)
-    {
-        global $app;
-        
-        try
-        {
-            // Check if the install directory exists
-            if(!is_dir($this->local_installpath.'install_scripts/'))
-                throw new Exception('The install directory '.$this->local_installpath.' is not existing');
-            
-            // Set the executable bit to the configure script
-            $cfgscript = @(string)$sxe->service->provision->{'configuration-script'}['name'];
-            if(!$cfgscript) $cfgscript = 'configure';
-            chmod($this->local_installpath.'install_scripts/'.$cfgscript, 0755);
-            
-            // Change to the install folder (import for the exec() below!)
-			//exec('chown -R '.$this->file_owner_user.':'.$this->file_owner_group.' '.escapeshellarg($this->local_installpath));
-            chdir($this->local_installpath.'install_scripts/');
-			
-			// Set the enviroment variables
-			foreach($this->putenv as $var) {
-				putenv($var);
-			}
-			
-            $shell_retcode = true;
-            $shell_ret = array();
-			 exec('php '.escapeshellarg($this->local_installpath.'install_scripts/'.$cfgscript).' install 2>&1', $shell_ret, $shell_retcode);
-            $shell_ret = array_filter($shell_ret);
-            $shell_ret_str = implode("\n", $shell_ret);
-            
-			// Although $shell_retcode might be 0, there can be PHP errors. Filter them:
-            if(substr_count($shell_ret_str, 'Warning: ') > 0) $shell_retcode = 1;
-            
-            // If an error has occurred, the return code is != 0 
-            if($shell_retcode != 0) throw new Exception($shell_ret_str);
-            else
-            {
-                // The install succeeded, chown newly created files too
-                exec('chown -R '.$this->file_owner_user.':'.$this->file_owner_group.' '.escapeshellarg($this->local_installpath));
-                
-		//* Chown stats directory back
-		if(is_dir($this->local_installpath.'stats')) {
-			exec('chown -R root:root '.escapeshellarg($this->local_installpath.'stats'));
-		}
-
-                $app->dbmaster->query('UPDATE aps_instances SET instance_status = "'.INSTANCE_SUCCESS.'" 
-                    WHERE id = "'.$app->db->quote($task['instance_id']).'";');
-            }
-        }
-        catch(Exception $e)
-        {
-            $app->dbmaster->query('UPDATE aps_instances SET instance_status = "'.INSTANCE_ERROR.'" 
-                WHERE id = "'.$app->db->quote($task['instance_id']).'";');
-            $app->log($e->getMessage(), 1);
-            return false;
-        }
-        
-        return true;
-    }
-    
-    /**
-     * Cleanup: Remove install scripts, remove tasks and update the database
-     * 
-     * @param $task an array containing all install related data
-     * @param $sxe a SimpleXMLElement handle, holding APP-META.xml
-     */
-    private function cleanup($task, $sxe)
-    {
-        chdir($this->local_installpath);
-        exec("rm -Rf ".escapeshellarg($this->local_installpath).'install_scripts');
-    }    
-    
-    /**
-     * The main method which performs the actual package installation
-     * 
-     * @param $instanceid the instanceID to install
-     * @param $type the type of task to perform (installation, removal)
-     */
-    public function installHandler($instanceid, $type)
-    {
-        global $app;
-        
-        // Set the given handle type, currently supported: install, delete
-        if($type == 'install' || $type == 'delete') $this->handle_type = $type;
-        else return false;
-        
-        // Get all instance metadata
-		/*
-        $task = $app->db->queryOneRecord("SELECT * FROM aps_instances AS i 
-            INNER JOIN aps_packages AS p ON i.package_id = p.id 
-            INNER JOIN client AS c ON i.customer_id = c.client_id
-            WHERE i.id = ".$instanceid.";");
-		*/
-		$task = $app->db->queryOneRecord("SELECT * FROM aps_instances AS i 
-            INNER JOIN aps_packages AS p ON i.package_id = p.id
-            WHERE i.id = ".$instanceid.";");
-        if(!$task) return false;  // formerly: throw new Exception('The InstanceID doesn\'t exist.');
-        if(!isset($task['instance_id'])) $task['instance_id'] = $instanceid;
-		
-		// Download aps package
-		if(!file_exists($this->packages_dir.'/'.$task['path']) || filesize($this->packages_dir.'/'.$task['path']) == 0) {
-			$ch = curl_init();
-			$fh = fopen($this->packages_dir.'/'.$task['path'], 'wb');
-			curl_setopt($ch, CURLOPT_FILE, $fh); 
-			//curl_setopt($ch, CURLOPT_HEADER, 0); 
-			curl_setopt($ch, CURLOPT_URL, $task['package_url']);
-			curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
-			curl_setopt($ch, CURLOPT_TIMEOUT, 0);
-			curl_setopt($ch, CURLOPT_FAILONERROR, 1);
-			curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);     
-			if(curl_exec($ch) === false) $app->log(curl_error ($ch),1);
-			fclose($fh);
-			curl_close($ch);
-		}
-		
-		/*
-		$app_to_dl[] = array('name' => $task['path'], 
-                            'url' => $task['package_url'], 
-                            'filesize' => 0, 
-                            'localtarget' => $this->packages_dir.'/'.$task['path']);
-
-        $this->fetchFiles($app_to_dl);
-		*/
-		
-		// Make sure the requirements are given so that this script can execute
-        $req_ret = $this->checkRequirements();
-        if(!$req_ret) return false;
-        
-        $metafile = $this->getContentFromZIP($this->packages_dir.'/'.$task['path'], 'APP-META.xml');
-        // Check if the meta file is existing
-        if(!$metafile)
-        {
-            $app->dbmaster->query('UPDATE aps_instances SET instance_status = "'.INSTANCE_ERROR.'" 
-                WHERE id = "'.$app->db->quote($task['instance_id']).'";');
-            $app->log('Unable to find the meta data file of package '.$task['path'], 1);
-            return false;
-        }
-        
-        // Rename namespaces and register them 
-        $metadata = str_replace("xmlns=", "ns=", $metafile);
-        $sxe = new SimpleXMLElement($metadata);
-        $namespaces = $sxe->getDocNamespaces(true);
-        foreach($namespaces as $ns => $url) $sxe->registerXPathNamespace($ns, $url); 
-
-        // Setup the environment with data for the install location
-        $this->prepareLocation($task);
-        
-        // Create the database if necessary
-        $this->prepareDatabase($task, $sxe);
-        
-        // Unpack the install scripts from the packages
-        if($this->prepareFiles($task, $sxe) && $this->handle_type == 'install')
-        {
-            // Setup the variables from the install script
-            $this->prepareUserInputData($task);
-        
-            // Do the actual installation
-            $this->doInstallation($task, $sxe);
-            
-            // Remove temporary files
-            $this->cleanup($task, $sxe);
-        }
-        
-        // Finally delete the instance entry + settings
-        if($this->handle_type == 'delete')
-        {
-            $app->db->query('DELETE FROM aps_instances WHERE id = "'.$app->db->quote($task['instance_id']).'";');
-            $app->db->query('DELETE FROM aps_instances_settings WHERE instance_id = "'.$app->db->quote($task['instance_id']).'";');
-        }
-        
-        unset($sxe);
-    }
-}
-?>
+<?php
+/*
+Copyright (c) 2012, ISPConfig UG
+Contributors: web wack creations,  http://www.web-wack.at
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of ISPConfig nor the names of its contributors
+      may be used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+require_once('aps_base.inc.php');
+
+@set_time_limit(0);
+@ignore_user_abort(1);
+
+class ApsInstaller extends ApsBase
+{
+    private $handle_type = '';
+    private $domain = '';
+    private $document_root = '';
+    private $sublocation = '';
+    private $local_installpath = '';
+    private $dbhost = '';
+    private $newdb_name = '';
+    private $newdb_user = '';
+    private $file_owner_user = '';
+    private $file_owner_group = '';
+	private $putenv = array();
+    
+   /**
+    * Constructor
+    *
+    * @param $app the application instance (db handle + log method)
+    * @param $interface_mode act in interface (true) or server mode (false)
+    */
+    public function __construct($app, $interface_mode = false)
+    {
+        parent::__construct($app, 'APS installer: ', $interface_mode);
+    }
+    
+    /**
+     * Before the cron is executed, make sure all necessary options are set
+     * and all functions are available
+     */
+    private function checkRequirements()
+    {
+        global $app;
+        try
+        {
+            // Check if exec() is not disabled
+            $disabled_func = explode(',', @ini_get('disable_functions'));
+            if(in_array('exec', $disabled_func)) throw new Exception('the call of exec() is disabled');
+            
+            // Check if safe_mode is disabled (needed for correct putenv, chmod, chown handling)
+            if(@ini_get('safe_mode')) throw new Exception('the safe_mode restriction is on');
+            
+            return true;
+        }
+        catch(Exception $e)
+        {
+            $app->log('Aborting execution because '.$e->getMessage(), 1);
+            return false;
+        }
+    }
+    
+    /**
+     * Get a file from a ZIP archive and either return it's content or
+     * extract it to a given destination
+     * 
+     * @param $zipfile the ZIP file to work with
+     * @param $subfile the file from which to get the content
+     * @param $destfolder the optional extraction destination
+     * @param $destname the optional target file name when extracting
+     * @return string or boolean
+     */
+    private function getContentFromZIP($zipfile, $subfile, $destfolder = '', $destname = '')
+    {
+        try
+        {
+            $zip = new ZipArchive;
+            $res = $zip->open(realpath($zipfile));
+            if(!$res) throw new Exception('Cannot open ZIP file '.$zipfile);
+        
+            // If no destination is given, the content is returned, otherwise
+            // the $subfile is extracted to $destination
+            if($destfolder == '')
+            {
+                $fh = $zip->getStream($subfile);
+                if(!$fh) throw new Exception('Cannot read '.$subfile.' from '.$zipfile);
+                
+                $subfile_content = '';            
+                while(!feof($fh)) $subfile_content .= fread($fh, 8192);
+                
+                fclose($fh);
+                
+                return $subfile_content;
+            }
+            else
+            {
+                // extractTo would be suitable but has no target name parameter
+                //$ind = $zip->locateName($subfile);
+                //$ex = $zip->extractTo($destination, array($zip->getNameIndex($ind)));
+                if($destname == '') $destname = basename($subfile);
+                $ex = @copy('zip://'.$zipfile.'#'.$subfile, $destfolder.$destname);
+                if(!$ex) throw new Exception('Cannot extract '.$subfile.' to '.$destfolder);
+            }
+            
+            $zip->close();
+            
+        }
+        catch(Exception $e)
+        {
+            // The exception message is only interesting for debugging reasons
+            // echo $e->getMessage();
+            return false;
+        }
+    }    
+    
+    /**
+     * Extract the complete directory of a ZIP file
+     * 
+     * @param $filename the file to unzip
+     * @param $directory the ZIP inside directory to unzip
+     * @param $destination the place where to extract the data
+     * @return boolean
+     */
+    private function extractZip($filename, $directory, $destination)
+    {
+        if(!file_exists($filename)) return false;
+        
+        // Fix the paths
+        if(substr($directory, -1) == '/') $directory = substr($directory, 0, strlen($directory) - 1);
+        if(substr($destination, -1) != '/') $destination .= '/';
+        
+        // Read and extract the ZIP file
+        $ziphandle = zip_open(realpath($filename));
+        if(is_resource($ziphandle))
+        {
+            while($entry = zip_read($ziphandle))
+            {
+                if(substr(zip_entry_name($entry), 0, strlen($directory)) == $directory)
+                {
+                    // Modify the relative ZIP file path
+                    $new_path = substr(zip_entry_name($entry), strlen($directory));
+                    
+                    if(substr($new_path, -1) == '/') // Identifier for directories
+                    {
+                        if(!file_exists($destination.$new_path)) mkdir($destination.$new_path, 0777, true);
+                    }
+                    else // Handle files
+                    {
+                        if(zip_entry_open($ziphandle, $entry))
+                        {
+                            $new_dir = dirname($destination.$new_path);
+                            if(!file_exists($new_dir)) mkdir($new_dir, 0777, true);
+                            
+                            $file = fopen($destination.$new_path, 'wb');
+                            if($file)
+                            {
+                                while($line = zip_entry_read($entry)) fwrite($file, $line);
+                                fclose($file);
+                            }
+                            else return false;
+                        }
+                    }
+                }
+            }
+            
+            zip_close($ziphandle);
+            return true;
+        }
+        
+        return false;
+    }
+
+    /**
+     * Setup the path environment variables for the install script
+     * 
+     * @param $parent_mapping the SimpleXML instance with the current mapping position
+     * @param $url the relative path within the mapping tree
+     * @param $path the absolute path within the mapping tree
+     */
+    private function processMappings($parent_mapping, $url, $path)
+    {
+        if($parent_mapping && $parent_mapping != null)
+        {
+            $writable = parent::getXPathValue($parent_mapping, 'php:permissions/@writable');
+            $readable = parent::getXPathValue($parent_mapping, 'php:permissions/@readable');
+
+            // set the write permission            
+            if($writable == 'true')
+            {
+                if(is_dir($path)) chmod($path, 0775);
+                else chmod($path, 0664);
+            }
+            
+            // set non-readable permission
+            if($readable == 'false')
+            {
+                if(is_dir($path)) chmod($path, 0333);
+                else chmod($path, 0222);
+            }
+        }
+        
+        // Set the environment variables
+        $env = str_replace('/', '_', $url);
+        $this->putenv[] = 'WEB_'.$env.'_DIR='.$path;
+        
+        // Step recursively into further mappings
+        if($parent_mapping && $parent_mapping != null)
+        {
+            foreach($parent_mapping->mapping as $mapping)
+            {
+                if($url == '/') $this->processMappings($mapping, $url.$mapping['url'], $path.$mapping['url']);
+                else $this->processMappings($mapping, $url.'/'.$mapping['url'], $path.'/'.$mapping['url']);
+            }
+        }
+    }    
+    
+    /**
+     * Setup the environment with data for the install location
+     * 
+     * @param $task an array containing all install related data
+     */
+    private function prepareLocation($task)
+    {
+        global $app;
+        
+        // Get the domain name to use for the installation
+        // Would be possible in one query too, but we use 2 for easier debugging
+        $main_domain = $app->db->queryOneRecord("SELECT value FROM aps_instances_settings  
+            WHERE name = 'main_domain' AND instance_id = '".$app->db->quote($task['instance_id'])."';");
+        $this->domain = $main_domain['value'];
+        
+        // Get the document root
+        $domain_res = $app->db->queryOneRecord("SELECT document_root, web_folder, type FROM web_domain 
+            WHERE domain = '".$app->db->quote($this->domain)."';");
+        $this->document_root = $domain_res['document_root'];
+        
+        // Get the sub location
+        $location_res = $app->db->queryOneRecord("SELECT value FROM aps_instances_settings 
+            WHERE name = 'main_location' AND instance_id = '".$app->db->quote($task['instance_id'])."';");
+        $this->sublocation = $location_res['value'];
+        
+        // Make sure the document_root ends with /
+        if(substr($this->document_root, -1) != '/') $this->document_root .= '/';
+        
+        // Attention: ISPConfig Special: web files are in subfolder 'web' -> append it:
+        if($domain_res['type'] == 'vhostsubdomain') $this->document_root .= $domain_res['web_folder'] . '/';
+        else $this->document_root .= 'web/';
+
+        // If a subfolder is given, make sure it's path doesn't begin with / i.e. /phpbb
+        if(substr($this->sublocation, 0, 1) == '/') $this->sublocation = substr($this->sublocation, 1);
+                
+        // If the package isn't installed to a subfolder, remove the / at the end of the document root
+        if(empty($this->sublocation)) $this->document_root = substr($this->document_root, 0, strlen($this->document_root) - 1);
+        
+        // Set environment variables, later processed by the package install script
+        $this->putenv[] = 'BASE_URL_SCHEME=http';
+        // putenv('BASE_URL_PORT') -> omitted as it's 80 by default
+        $this->putenv[] = 'BASE_URL_HOST='.$this->domain;
+        $this->putenv[] = 'BASE_URL_PATH='.$this->sublocation.'/';
+    }    
+    
+    /**
+     * Setup a database (if needed) and the appropriate environment variables
+     * 
+     * @param $task an array containing all install related data
+     * @param $sxe a SimpleXMLElement handle, holding APP-META.xml
+     */
+    private function prepareDatabase($task, $sxe)
+    {
+        global $app;
+        
+        $db_id = parent::getXPathValue($sxe, '//db:id');
+        if(empty($db_id)) return; // No database needed
+        
+		/* WARNING: if this will ever be uncommented please check the updated prefix handling for user and db names!!!
+         * 
+        // Set the database owner to the domain owner
+        // ISPConfig identifies the owner by the sys_groupid (not sys_userid!)
+        // so sys_userid can be set to any value
+        $perm = $app->db->queryOneRecord("SELECT sys_groupid, server_id FROM web_domain 
+            WHERE domain = '".$this->domain."';");
+        $task['sys_groupid'] = $perm['sys_groupid'];
+        $serverid = $perm['server_id'];
+                
+        // Get the database prefix and db user prefix 
+        $app->uses('getconf');
+        $global_config = $app->getconf->get_global_config('sites');
+        $dbname_prefix = str_replace('[CLIENTID]', '', $global_config['dbname_prefix']);
+        $dbuser_prefix = str_replace('[CLIENTID]', '', $global_config['dbuser_prefix']);
+        $this->dbhost = DB_HOST; // Taken from config.inc.php
+        if(empty($this->dbhost)) $this->dbhost = 'localhost'; // Just to ensure any hostname... ;)
+        
+        $this->newdb_name = $dbname_prefix.$task['CustomerID'].'aps'.$task['InstanceID'];
+        $this->newdb_user = $dbuser_prefix.$task['CustomerID'].'aps'.$task['InstanceID'];
+        $dbpw_res = $app->db->queryOneRecord("SELECT Value FROM aps_instances_settings  
+            WHERE Name = 'main_database_password' AND InstanceID = '".$app->db->quote($task['InstanceID'])."';");
+        $newdb_pw = $dbpw_res['Value'];
+ 
+        // In any case delete an existing database (install and removal procedure)
+        $app->db->query('DROP DATABASE IF EXISTS `'.$app->db->quote($this->newdb_name).'`;');
+        // Delete an already existing database with this name
+        $app->db->query("DELETE FROM web_database WHERE database_name = '".$app->db->quote($this->newdb_name)."';");
+        
+        
+        // Create the new database and assign it to a user
+        if($this->handle_type == 'install')
+        {
+            $app->db->query('CREATE DATABASE IF NOT EXISTS `'.$app->db->quote($this->newdb_name).'`;');
+            $app->db->query('GRANT ALL PRIVILEGES ON '.$app->db->quote($this->newdb_name).'.* TO '.$app->db->quote($this->newdb_user).'@'.$app->db->quote($this->dbhost).' IDENTIFIED BY \'password\';');
+            $app->db->query('SET PASSWORD FOR '.$app->db->quote($this->newdb_user).'@'.$app->db->quote($this->dbhost).' = PASSWORD(\''.$newdb_pw.'\');');
+            $app->db->query('FLUSH PRIVILEGES;');
+        
+            // Add the new database to the customer databases
+            // Assumes: charset = utf8
+            $app->db->query('INSERT INTO web_database (sys_userid, sys_groupid, sys_perm_user, sys_perm_group, sys_perm_other, server_id, 
+                type, database_name, database_user, database_password, database_charset, remote_access, remote_ips, active) 
+                VALUES ('.$task['sys_userid'].', '.$task['sys_groupid'].', "'.$task['sys_perm_user'].'", "'.$task['sys_perm_group'].'", 
+                "'.$task['sys_perm_other'].'", '.$app->db->quote($serverid).', "mysql", "'.$app->db->quote($this->newdb_name).'", 
+                "'.$app->db->quote($this->newdb_user).'", "'.$app->db->quote($newdb_pw).'", "utf8", "n", "", "y");');
+        }
+		*/
+        
+        $mysqlver_res = $app->db->queryOneRecord('SELECT VERSION() as ver;');
+        $mysqlver = $mysqlver_res['ver'];
+		
+		$tmp = $app->db->queryOneRecord("SELECT value FROM aps_instances_settings WHERE name = 'main_database_password' AND instance_id = '".$app->db->quote($task['instance_id'])."';");
+        $newdb_pw = $tmp['value'];
+		
+		$tmp = $app->db->queryOneRecord("SELECT value FROM aps_instances_settings WHERE name = 'main_database_host' AND instance_id = '".$app->db->quote($task['instance_id'])."';");
+        $newdb_host = $tmp['value'];
+		
+		$tmp = $app->db->queryOneRecord("SELECT value FROM aps_instances_settings WHERE name = 'main_database_name' AND instance_id = '".$app->db->quote($task['instance_id'])."';");
+        $newdb_name = $tmp['value'];
+		
+		$tmp = $app->db->queryOneRecord("SELECT value FROM aps_instances_settings WHERE name = 'main_database_login' AND instance_id = '".$app->db->quote($task['instance_id'])."';");
+        $newdb_login = $tmp['value'];
+        
+        $this->putenv[] = 'DB_'.$db_id.'_TYPE=mysql';
+        $this->putenv[] = 'DB_'.$db_id.'_NAME='.$newdb_name;
+        $this->putenv[] = 'DB_'.$db_id.'_LOGIN='.$newdb_login;
+        $this->putenv[] = 'DB_'.$db_id.'_PASSWORD='.$newdb_pw;
+        $this->putenv[] = 'DB_'.$db_id.'_HOST='.$newdb_host;
+        $this->putenv[] = 'DB_'.$db_id.'_PORT=3306';
+        $this->putenv[] = 'DB_'.$db_id.'_VERSION='.$mysqlver;
+    }    
+    
+    /**
+     * Extract all needed files from the package
+     * 
+     * @param $task an array containing all install related data
+     * @param $sxe a SimpleXMLElement handle, holding APP-META.xml
+     * @return boolean
+     */
+    private function prepareFiles($task, $sxe)
+    {
+        global $app;
+        
+        // Basically set the mapping for APS version 1.0, if not available -> newer way
+        $mapping = $sxe->mapping;
+        $mapping_path = $sxe->mapping['path'];
+        $mapping_url = $sxe->mapping['url'];
+        if(empty($mapping))
+        {
+            $mapping = $sxe->service->provision->{'url-mapping'}->mapping;
+            $mapping_path = $sxe->service->provision->{'url-mapping'}->mapping['path'];
+            $mapping_url = $sxe->service->provision->{'url-mapping'}->mapping['url'];
+        }
+
+        try
+        {
+            // Make sure we have a valid mapping path (at least /)
+            if(empty($mapping_path)) throw new Exception('Unable to determine a mapping path');
+            
+            $this->local_installpath = $this->document_root.$this->sublocation.'/';
+
+            // Now delete an existing folder (affects install and removal in the same way)
+            @chdir($this->local_installpath);
+            if(file_exists($this->local_installpath)){
+				// make sure we don't delete error and stats folders
+				if($this->local_installpath == $this->document_root.'/'){
+					if(is_dir($this->document_root)){
+						$files = array_diff(scandir($this->document_root), array('.','..','error','stats'));
+						foreach($files as $file){
+							if(is_dir($this->document_root.'/'.$file)){
+								$app->file->removeDirectory($this->document_root.'/'.$file);
+							} else {
+								@unlink($this->document_root.'/'.$file);
+							}
+						}
+					} else {
+						@unlink($this->document_root);
+						mkdir($this->document_root, 0777, true);
+					}
+				} else {
+					exec("rm -Rf ".escapeshellarg($this->local_installpath).'*');
+				}
+			} else {
+				mkdir($this->local_installpath, 0777, true);
+			}
+
+            if($this->handle_type == 'install')
+            {            
+                // Now check if the needed folder is there
+                if(!file_exists($this->local_installpath))
+                    throw new Exception('Unable to create a new folder for the package '.$task['path']);
+                
+                // Extract all files and assign them a new owner
+                if( ($this->extractZip($this->packages_dir.'/'.$task['path'], $mapping_path, $this->local_installpath) === false)
+                 || ($this->extractZip($this->packages_dir.'/'.$task['path'], 'scripts', $this->local_installpath.'install_scripts/') === false) )
+                {
+                    // Clean already extracted data
+                    exec("rm -Rf ".escapeshellarg($this->local_installpath).'*');
+                    throw new Exception('Unable to extract the package '.$task['path']);              
+                }
+                
+                $this->processMappings($mapping, $mapping_url, $this->local_installpath);
+            
+                // Set the appropriate file owner
+                $main_domain = $app->db->queryOneRecord("SELECT value FROM aps_instances_settings  
+                    WHERE name = 'main_domain' AND instance_id = '".$app->db->quote($task['instance_id'])."';");        
+                $owner_res = $app->db->queryOneRecord("SELECT system_user, system_group FROM web_domain  
+                        WHERE domain = '".$app->db->quote($main_domain['value'])."';");
+                $this->file_owner_user = $owner_res['system_user']; 
+                $this->file_owner_group = $owner_res['system_group'];
+                exec('chown -R '.$this->file_owner_user.':'.$this->file_owner_group.' '.escapeshellarg($this->local_installpath));
+				
+				//* Chown stats directory back
+				if(is_dir($this->local_installpath.'stats')) {
+					exec('chown -R root:root '.escapeshellarg($this->local_installpath.'stats'));
+				}
+            }
+        }
+        catch(Exception $e)
+        {
+            $app->dbmaster->query('UPDATE aps_instances SET instance_status = "'.INSTANCE_ERROR.'" 
+                WHERE id = "'.$app->db->quote($task['instance_id']).'";');
+            $app->log($e->getMessage(), 1);
+            return false;
+        }
+        
+        return true;
+    }
+    
+    /**
+     * Get all user config variables and set them to environment variables
+     * 
+     * @param $task an array containing all install related data
+     */    
+    private function prepareUserInputData($task)
+    {
+        global $app;
+        
+        $userdata = $app->db->queryAllRecords("SELECT name, value FROM aps_instances_settings 
+            WHERE instance_id = '".$app->db->quote($task['instance_id'])."';");
+        if(empty($userdata)) return false;
+        
+        foreach($userdata as $data)
+        {
+            // Skip unnecessary data
+            if($data['name'] == 'main_location'
+            || $data['name'] == 'main_domain'
+            || $data['name'] == 'main_database_password'
+			|| $data['name'] == 'main_database_name'
+			|| $data['name'] == 'main_database_host'
+			|| $data['name'] == 'main_database_login'
+            || $data['name'] == 'license') continue;
+            
+            $this->putenv[] = 'SETTINGS_'.$data['name'].'='.$data['value'];
+        }
+    }
+	
+	/**
+     * Fetch binary data from a given array
+     * The data is retrieved in binary mode and 
+     * then directly written to an output file
+     *
+     * @param $input a specially structed array
+     * @see $this->startUpdate()
+     */
+    private function fetchFiles($input)
+    {
+        $fh = array();
+        $url = array();
+        $conn = array();
+
+        // Build the single cURL handles and add them to a multi handle
+        $mh = curl_multi_init();
+        
+        // Process each app 
+        for($i = 0; $i < count($input); $i++)
+        {
+            $conn[$i] = curl_init($input[$i]['url']);
+            $fh[$i] = fopen($input[$i]['localtarget'], 'wb'); 
+            
+            curl_setopt($conn[$i], CURLOPT_BINARYTRANSFER, true);
+            curl_setopt($conn[$i], CURLOPT_FILE, $fh[$i]);
+            curl_setopt($conn[$i], CURLOPT_TIMEOUT, 0);
+            curl_setopt($conn[$i], CURLOPT_FAILONERROR, 1);
+            curl_setopt($conn[$i], CURLOPT_FOLLOWLOCATION, 1); 
+            
+            curl_multi_add_handle($mh, $conn[$i]);
+        }
+        
+        $active = 0;
+        do curl_multi_exec($mh, $active);
+        while($active > 0);
+
+        // Close the handles
+        for($i = 0; $i < count($input); $i++)
+        {
+            fclose($fh[$i]);
+            curl_multi_remove_handle($mh, $conn[$i]);
+            curl_close($conn[$i]);
+        }
+        curl_multi_close($mh);
+    }
+    
+    /**
+     * The installation script should be executed
+     * 
+     * @param $task an array containing all install related data
+     * @param $sxe a SimpleXMLElement handle, holding APP-META.xml
+     * @return boolean
+     */
+    private function doInstallation($task, $sxe)
+    {
+        global $app;
+        
+        try
+        {
+            // Check if the install directory exists
+            if(!is_dir($this->local_installpath.'install_scripts/'))
+                throw new Exception('The install directory '.$this->local_installpath.' is not existing');
+            
+            // Set the executable bit to the configure script
+            $cfgscript = @(string)$sxe->service->provision->{'configuration-script'}['name'];
+            if(!$cfgscript) $cfgscript = 'configure';
+            chmod($this->local_installpath.'install_scripts/'.$cfgscript, 0755);
+            
+            // Change to the install folder (import for the exec() below!)
+			//exec('chown -R '.$this->file_owner_user.':'.$this->file_owner_group.' '.escapeshellarg($this->local_installpath));
+            chdir($this->local_installpath.'install_scripts/');
+			
+			// Set the enviroment variables
+			foreach($this->putenv as $var) {
+				putenv($var);
+			}
+			
+            $shell_retcode = true;
+            $shell_ret = array();
+			 exec('php '.escapeshellarg($this->local_installpath.'install_scripts/'.$cfgscript).' install 2>&1', $shell_ret, $shell_retcode);
+            $shell_ret = array_filter($shell_ret);
+            $shell_ret_str = implode("\n", $shell_ret);
+            
+			// Although $shell_retcode might be 0, there can be PHP errors. Filter them:
+            if(substr_count($shell_ret_str, 'Warning: ') > 0) $shell_retcode = 1;
+            
+            // If an error has occurred, the return code is != 0 
+            if($shell_retcode != 0) throw new Exception($shell_ret_str);
+            else
+            {
+                // The install succeeded, chown newly created files too
+                exec('chown -R '.$this->file_owner_user.':'.$this->file_owner_group.' '.escapeshellarg($this->local_installpath));
+				
+				//* Chown stats directory back
+				if(is_dir($this->local_installpath.'stats')) {
+					exec('chown -R root:root '.escapeshellarg($this->local_installpath.'stats'));
+				}
+                
+                $app->dbmaster->query('UPDATE aps_instances SET instance_status = "'.INSTANCE_SUCCESS.'" 
+                    WHERE id = "'.$app->db->quote($task['instance_id']).'";');
+            }
+        }
+        catch(Exception $e)
+        {
+            $app->dbmaster->query('UPDATE aps_instances SET instance_status = "'.INSTANCE_ERROR.'" 
+                WHERE id = "'.$app->db->quote($task['instance_id']).'";');
+            $app->log($e->getMessage(), 1);
+            return false;
+        }
+        
+        return true;
+    }
+    
+    /**
+     * Cleanup: Remove install scripts, remove tasks and update the database
+     * 
+     * @param $task an array containing all install related data
+     * @param $sxe a SimpleXMLElement handle, holding APP-META.xml
+     */
+    private function cleanup($task, $sxe)
+    {
+        chdir($this->local_installpath);
+        exec("rm -Rf ".escapeshellarg($this->local_installpath).'install_scripts');
+    }    
+    
+    /**
+     * The main method which performs the actual package installation
+     * 
+     * @param $instanceid the instanceID to install
+     * @param $type the type of task to perform (installation, removal)
+     */
+    public function installHandler($instanceid, $type)
+    {
+        global $app;
+        
+        // Set the given handle type, currently supported: install, delete
+        if($type == 'install' || $type == 'delete') $this->handle_type = $type;
+        else return false;
+        
+        // Get all instance metadata
+		/*
+        $task = $app->db->queryOneRecord("SELECT * FROM aps_instances AS i 
+            INNER JOIN aps_packages AS p ON i.package_id = p.id 
+            INNER JOIN client AS c ON i.customer_id = c.client_id
+            WHERE i.id = ".$instanceid.";");
+		*/
+		$task = $app->db->queryOneRecord("SELECT * FROM aps_instances AS i 
+            INNER JOIN aps_packages AS p ON i.package_id = p.id
+            WHERE i.id = ".$instanceid.";");
+        if(!$task) return false;  // formerly: throw new Exception('The InstanceID doesn\'t exist.');
+        if(!isset($task['instance_id'])) $task['instance_id'] = $instanceid;
+		
+		// Download aps package
+		if(!file_exists($this->packages_dir.'/'.$task['path']) || filesize($this->packages_dir.'/'.$task['path']) == 0) {
+			$ch = curl_init();
+			$fh = fopen($this->packages_dir.'/'.$task['path'], 'wb');
+			curl_setopt($ch, CURLOPT_FILE, $fh); 
+			//curl_setopt($ch, CURLOPT_HEADER, 0); 
+			curl_setopt($ch, CURLOPT_URL, $task['package_url']);
+			curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
+			curl_setopt($ch, CURLOPT_TIMEOUT, 0);
+			curl_setopt($ch, CURLOPT_FAILONERROR, 1);
+			curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);     
+			if(curl_exec($ch) === false) $app->log(curl_error ($ch),1);
+			fclose($fh);
+			curl_close($ch);
+		}
+		
+		/*
+		$app_to_dl[] = array('name' => $task['path'], 
+                            'url' => $task['package_url'], 
+                            'filesize' => 0, 
+                            'localtarget' => $this->packages_dir.'/'.$task['path']);
+
+        $this->fetchFiles($app_to_dl);
+		*/
+		
+		// Make sure the requirements are given so that this script can execute
+        $req_ret = $this->checkRequirements();
+        if(!$req_ret) return false;
+        
+        $metafile = $this->getContentFromZIP($this->packages_dir.'/'.$task['path'], 'APP-META.xml');
+        // Check if the meta file is existing
+        if(!$metafile)
+        {
+            $app->dbmaster->query('UPDATE aps_instances SET instance_status = "'.INSTANCE_ERROR.'" 
+                WHERE id = "'.$app->db->quote($task['instance_id']).'";');
+            $app->log('Unable to find the meta data file of package '.$task['path'], 1);
+            return false;
+        }
+        
+        // Rename namespaces and register them 
+        $metadata = str_replace("xmlns=", "ns=", $metafile);
+        $sxe = new SimpleXMLElement($metadata);
+        $namespaces = $sxe->getDocNamespaces(true);
+        foreach($namespaces as $ns => $url) $sxe->registerXPathNamespace($ns, $url); 
+
+        // Setup the environment with data for the install location
+        $this->prepareLocation($task);
+        
+        // Create the database if necessary
+        $this->prepareDatabase($task, $sxe);
+        
+        // Unpack the install scripts from the packages
+        if($this->prepareFiles($task, $sxe) && $this->handle_type == 'install')
+        {
+            // Setup the variables from the install script
+            $this->prepareUserInputData($task);
+        
+            // Do the actual installation
+            $this->doInstallation($task, $sxe);
+            
+            // Remove temporary files
+            $this->cleanup($task, $sxe);
+        }
+        
+        // Finally delete the instance entry + settings
+        if($this->handle_type == 'delete')
+        {
+            $app->db->query('DELETE FROM aps_instances WHERE id = "'.$app->db->quote($task['instance_id']).'";');
+            $app->db->query('DELETE FROM aps_instances_settings WHERE instance_id = "'.$app->db->quote($task['instance_id']).'";');
+        }
+        
+        unset($sxe);
+    }
+}
+?>
\ No newline at end of file
diff --git a/server/lib/classes/monitor_tools.inc.php b/server/lib/classes/monitor_tools.inc.php
index 6b93e1e6aee5abbeeca176780ab9ae25ec6cd097..0b1caa6cbd0c1ed0e3c6866611daba0a60b0ef16 100644
--- a/server/lib/classes/monitor_tools.inc.php
+++ b/server/lib/classes/monitor_tools.inc.php
@@ -755,13 +755,6 @@ class monitor_tools {
 				$data['mysqlserver'] = 0;
 				$state = 'error'; // because service is down
 			}
-
-			if ($this->_checkTcp('localhost', 27017)) {
-				$data['mongodbserver'] = 1;
-			} else {
-				$data['mongodbserver'] = 0;
-				$state = 'error'; // because service is down
-			}
 		}
 
 		/*
@@ -907,7 +900,7 @@ class monitor_tools {
 			/*
 			 * Fetch the output
 			 */
-			$data['output'] = $aptData;
+			$data['output'] = shell_exec('apt-get -s -q dist-upgrade');
 		} elseif (file_exists('/etc/gentoo-release')) {
 
 			/*
@@ -1068,7 +1061,7 @@ class monitor_tools {
 				/* fetch the next line */
 				$line = $tmp[$i];
 
-				if ((strpos($line, '[U_]') !== false) || (strpos($line, '[_U]') !== false)) {
+				if ((strpos($line, 'U_]') !== false) || (strpos($line, '[_U') !== false) || (strpos($line, 'U_U') !== false)) {
 					/* One Disk is not working.
 					 * if the next line starts with "[>" or "[=" then
 					 * recovery (resync) is in state and the state is
@@ -1306,51 +1299,6 @@ class monitor_tools {
 		return $res;
 	}
 
-	public function monitorMongoDB() {
-		global $conf;
-
-		/* the id of the server as int */
-		$server_id = intval($conf['server_id']);
-
-		/** The type of the data */
-		$type = 'log_mongodb';
-
-		/* This monitoring is only available if MongoDB is installed */
-		system('which mongod', $retval); // Debian, Ubuntu, Fedora
-		if ($retval !== 0)
-			system('which mongod', $retval); // CentOS
-		if ($retval === 0) {
-			/*  Get the data of the log */
-			$data = $this->_getLogData($type);
-
-			/*
-			 * At this moment, there is no state (maybe later)
-			 */
-			$state = 'no_state';
-		} else {
-			/*
-			 * MongoDB is not installed, so there is no data and no state
-			 *
-			 * no_state, NOT unknown, because "unknown" is shown as state
-			 * inside the GUI. no_state is hidden.
-			 *
-			 * We have to write NO DATA inside the DB, because the GUI
-			 * could not know, if there is any dat, or not...
-			 */
-			$state = 'no_state';
-			$data = '';
-		}
-
-		/*
-		 * Return the Result
-		 */
-		$res['server_id'] = $server_id;
-		$res['type'] = $type;
-		$res['data'] = $data;
-		$res['state'] = $state;
-		return $res;
-	}
-
 	public function monitorIPTables() {
 				global $conf;
 
@@ -1797,9 +1745,6 @@ class monitor_tools {
 					$logfile = '/var/log/fail2ban.log';
 				}
 				break;
-			case 'log_mongodb':
-					$logfile = '/var/log/mongodb/mongodb.log';
-				break;
 			case 'log_ispconfig':
 				if ($dist == 'debian') {
 					$logfile = $conf['ispconfig_log_dir'] . '/ispconfig.log';
@@ -1981,4 +1926,4 @@ class monitor_tools {
 
 }
 
-?>
+?>
\ No newline at end of file
diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php
index f6b52cfbfd0433f1b0dde62d934e149d60e7cb7b..57b1e1fae0f0ecbe419e6d2b4b0368563b673c99 100644
--- a/server/lib/classes/system.inc.php
+++ b/server/lib/classes/system.inc.php
@@ -780,7 +780,8 @@ class system{
 		if(substr($path,0,1) != '/') return false;
 		
 		//* We allow only some characters in the path
-		if(!preg_match('/^\/[a-zA-Z0-9_\/\.\-]{1,}$/',$path)) return false;
+		// * is allowed, for example it is part of wildcard certificates/keys: *.example.com.crt
+		if(!preg_match('@^/[-a-zA-Z0-9_/.*~]{1,}$@',$path)) return false;
 		
 		//* Check path for symlinks
 		$path_parts = explode('/',$path);
diff --git a/server/mods-available/monitor_core_module.inc.php b/server/mods-available/monitor_core_module.inc.php
index 88e994dccffc29567d6dba4e58ab7c03e5b58db0..2e66d64938452c357484fa4b690d9438bf25e6f8 100644
--- a/server/mods-available/monitor_core_module.inc.php
+++ b/server/mods-available/monitor_core_module.inc.php
@@ -89,7 +89,7 @@ class monitor_core_module {
 		$this->_tools = new monitor_tools();
 
 		/*
-		 * Calls the single Monitoring steps
+		 * Calls the single Monitoring steps 
 		 */
 		$this->_monitorEmailQuota();
 		$this->_monitorHDQuota();
@@ -117,7 +117,6 @@ class monitor_core_module {
 		$this->_monitorRaid();
 		$this->_monitorRkHunter();
 		$this->_monitorFail2ban();
-		$this->_monitorMongoDB();
 		$this->_monitorIPTables();
 		$this->_monitorSysLog();
 	}
@@ -130,12 +129,12 @@ class monitor_core_module {
 		 */
 		$min = @date('i', $this->_run_time);
 		if ($min % 15 != 0) return;
-
+		
 		$app->uses('getconf');
 		$mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail');
 		if($mail_config['mailbox_quota_stats'] == 'n') return;
-
-
+		
+		
 		/*
          * First we get the Monitoring-data from the tools
          */
@@ -423,7 +422,7 @@ class monitor_core_module {
 		 * First we get the Monitoring-data from the tools
 		 */
 		$res = $this->_tools->monitorSystemUpdate();
-
+		
 		//* Ensure that output is encoded so that it does not break the serialize
 		//$res['data']['output'] = htmlentities($res['data']['output']);
 		$res['data']['output'] = htmlentities($res['data']['output'],ENT_QUOTES,'UTF-8');
@@ -555,31 +554,6 @@ class monitor_core_module {
         $this->_delOldRecords($res['type'], $res['server_id']);
     }
 
-	private function _monitorMongoDB() {
-	global $app;
-
-        /*
-         * First we get the Monitoring-data from the tools
-         */
-        $res = $this->_tools->monitorMongoDB();
-
-        /*
-         * Insert the data into the database
-         */
-        $sql = 'REPLACE INTO monitor_data (server_id, type, created, data, state) ' .
-                'VALUES (' .
-                $res['server_id'] . ', ' .
-                "'" . $app->dbmaster->quote($res['type']) . "', " .
-                'UNIX_TIMESTAMP(), ' .
-                "'" . $app->dbmaster->quote(serialize($res['data'])) . "', " .
-                "'" . $res['state'] . "'" .
-                ')';
-        $app->dbmaster->query($sql);
-
-        /* The new data is written, now we can delete the old one */
-        $this->_delOldRecords($res['type'], $res['server_id']);
-    }
-
 
 	private function _monitorIPTables() {
 		global $app;
@@ -738,7 +712,7 @@ class monitor_core_module {
 		 * First we get the Monitoring-data from the tools
 		 */
 		$res = $this->_tools->monitorISPCCronLog();
-
+		
 		//* Ensure that output is encoded so that it does not break the serialize
 		if(is_array($res) && isset($res['data'])) $res['data'] = htmlentities($res['data']);
 
@@ -846,10 +820,10 @@ class monitor_core_module {
 		// $now = time();
 		// $old = $now - (4 * 60); // 4 minutes
 		$old = 'UNIX_TIMESTAMP() - 240';
-
+		
 		/*
 		 * ATTENTION if i do NOT pay attention of the server id, i delete all data (of the type)
-		 * of ALL servers. This means, if i have a multiserver-environment and a server has a
+		 * of ALL servers. This means, if i have a multiserver-environment and a server has a 
 		 * time not synced with the others (for example, all server has 11:00 and ONE server has
 		 * 10:45) then the actual data of this server (with the time-stamp 10:45) get lost
 		 * even though it is the NEWEST data of this server. To avoid this i HAVE to include
@@ -867,4 +841,4 @@ class monitor_core_module {
 
 }
 
-?>
+?>
\ No newline at end of file
diff --git a/server/mods-available/rescue_core_module.inc.php b/server/mods-available/rescue_core_module.inc.php
index 050d32fd3bf2373f30852a01ca73277c040bceed..49012d50a0f7a82f1e8dbe39397e695340433ac1 100644
--- a/server/mods-available/rescue_core_module.inc.php
+++ b/server/mods-available/rescue_core_module.inc.php
@@ -35,7 +35,7 @@ class rescue_core_module {
 	/* No actions at this time. maybe later... */
 	var $actions_available = array();
 	/**
-	 * The monitoring-Data of this module.
+	 * The monitoring-Data of this module. 
 	 * [0] are the actual data, [1] are the data 1 minnute ago [2] are teh data 2 minuntes...
 	 */
 	private $_monitoringData = array();
@@ -73,7 +73,7 @@ class rescue_core_module {
 		 * do nothing, if the rescue-system is not enabled
 		 */
 		global $conf;
-		if ((!isset($conf['serverconfig']['rescue']['try_rescue'])) ||
+		if ((!isset($conf['serverconfig']['rescue']['try_rescue'])) || 
 				((isset($conf['serverconfig']['rescue']['try_rescue'])) && ($conf['serverconfig']['rescue']['try_rescue'] !='y'))){
 			return;
 		}
@@ -87,22 +87,17 @@ class rescue_core_module {
 		 * Next we get the rescue data needed for rescuing the system
 		 */
 		$this->_rescueData = $this->_getRescueData();
-
-		/*
-		 * rescue MongoDB if needed
-		 */
-		$this->_rescueMongoDB();
-
+		
 		/*
 		 * rescue mysql if needed (maybe httpd depends on mysql, so try this first!)
 		 */
 		$this->_rescueMySql();
-
+		
 		/*
 		 * rescue httpd if needed
 		 */
 		$this->_rescueHttpd();
-
+		
 		/*
 		 * The last step is to save the rescue-data
 		 */
@@ -117,12 +112,12 @@ class rescue_core_module {
 	 */
 	private function _getMonitoringData() {
 		global $app;
-
+		
 		$dataFilename = dirname(__FILE__) . "/../temp/rescue_module_monitoringdata.ser.txt";
-
+		
 		/*
 		 * If the file containing the data is too old (older than 5 minutes) it is better to
-		 * delete it, because it could be, that the server was down for some times and so the data
+		 * delete it, because it could be, that the server was down for some times and so the data 
 		 * are outdated
 		 */
 		if (file_exists($dataFilename) && (filemtime($dataFilename) < (time() - 5 * 60))) {
@@ -137,7 +132,7 @@ class rescue_core_module {
 		} else {
 			$data = array();
 		}
-
+		
 		/*
 		 * $temp[0] was the data of the last monitoring (means 1 minute ago), $temp[1] is the data
 		 * 2 minutes ago and so on. Now we have make place for the newest data...
@@ -149,32 +144,32 @@ class rescue_core_module {
 		for ($i = $max; $i > 0; $i--){
 			$data[$i] = $data[$i -1];
 		}
-
+		
 		/*
 		 * we need the monitoring tools
 		 */
 		$app->load('monitor_tools');
 		$tools = new monitor_tools();
-
+		
 		/*
 		 * Call the needed Monitoring-step and get the data
 		 */
 		$tmp[0] = $tools->monitorServices();
-
+		
 		/* Add the data at the FIRST position of the history */
 		$data[0] = $tmp;
-
+		
 		/*
 		 * We have the newest monitoring data. Save it!
 		 * (and protect it, because there may be sensible data in it)
 		 */
 		file_put_contents($dataFilename, serialize($data));
 		chmod($dataFilename, 0600);
-
+						
 		/* Thats it */
 		return $data;
 	}
-
+	
 	/**
 	 * This gets the rescue-Data, needed for rescuing the system.
 	 * Because we can not be 100% sure, that the mysql-DB is up and running, so we use the
@@ -186,7 +181,7 @@ class rescue_core_module {
 
 		/*
 		 * If the file containing the data is too old (older than 5 minutes) it is better to
-		 * delete it, because it could be, that the server was down for some times and so the data
+		 * delete it, because it could be, that the server was down for some times and so the data 
 		 * are outdated
 		 */
 		if (file_exists($dataFilename) && (filemtime($dataFilename) < (time() - 5 * 60))) {
@@ -201,7 +196,7 @@ class rescue_core_module {
 		} else {
 			$data = array();
 		}
-
+		
 		/* Thats it */
 		return $data;
 	}
@@ -227,14 +222,14 @@ class rescue_core_module {
 	 */
 	private function _rescueHttpd(){
 		global $app, $conf;
-
+		
 		/*
 		 * do nothing, if it is not allowed to rescue httpd
 		 */
 		if ((isset($conf['serverconfig']['rescue']['do_not_try_rescue_httpd']) && ($conf['serverconfig']['rescue']['do_not_try_rescue_httpd']) == 'y')){
 			return;
 		}
-
+		
 		/*
 		 * if the service is up and running, or the service is not installed there is nothing to do...
 		 */
@@ -243,42 +238,42 @@ class rescue_core_module {
 			$this->_rescueData['webserver']['try_counter'] = 0;
 			return;
 		}
-
+		
 		/*
 		 * OK, the service is installed and down.
 		 * Maybe this is because of a restart of the service by the admin.
 		 * This means, we check the data 1 minute ago
 		 */
-		if ((!isset($this->_monitoringData[1][0]['data']['webserver'])) ||
+		if ((!isset($this->_monitoringData[1][0]['data']['webserver'])) || 
 				((isset($this->_monitoringData[1][0]['data']['webserver'])) && ($this->_monitoringData[1][0]['data']['webserver'] != 0))){
-			/*
-			 * We do NOT have this data or we have this data, but the webserver was not down 1 minute ago.
-			 * This means, it could be, that the admin is restarting the server.
+			/* 
+			 * We do NOT have this data or we have this data, but the webserver was not down 1 minute ago. 
+			 * This means, it could be, that the admin is restarting the server. 
 			 * We wait one more minute...
 			 */
 			return;
 		}
-
+		
 		/*#####
 		 * The service is down and it was down 1 minute ago.
 		 * We try to rescue it
 		 *#####*/
-
+		
 		/* Get the try counter */
 		$tryCount = (!isset($this->_rescueData['webserver']['try_counter']))? 1 : $this->_rescueData['webserver']['try_counter'] + 1;
-
+		
 		/* Set the new try counter */
 		$this->_rescueData['webserver']['try_counter'] = $tryCount;
-
+		
 		/* if 5 times will not work, we have to give up... */
 		if ($tryCount > 5){
 			$app->log('httpd is down! Rescue will not help!', LOGLEVEL_ERROR);
 			return;
 		}
-
-
+		
+		
 		$app->log('httpd is down! Try rescue httpd (try:' . $tryCount . ')...', LOGLEVEL_WARN);
-
+		
 		if($conf['serverconfig']['web']['server_type'] == 'nginx'){
 			$daemon = 'nginx';
 		} else {
@@ -290,89 +285,23 @@ class rescue_core_module {
 				$daemon = 'apache2';
 			}
 		}
-
+		
 		$this->_rescueDaemon($daemon);
 	}
-
-	/**
-	 * restarts MongoDB, if needed
-	 */
-	private function _rescueMongoDB(){
-		global $app, $conf;
-
-		/*
-		 * do nothing, if it is not allowed to rescue mysql
-		 */
-		if ((isset($conf['serverconfig']['rescue']['do_not_try_rescue_mongodb']) && ($conf['serverconfig']['rescue']['do_not_try_rescue_mongodb']) == 'y')){
-			return;
-		}
-
-		/*
-		 * if the service is up and running, or the service is not installed there is nothing to do...
-		 */
-		if ($this->_monitoringData[0][0]['data']['mongodbserver'] != 0){
-			/* Clear the try counter, because we do not have to try to rescue the service */
-			$this->_rescueData['mongodbserver']['try_counter'] = 0;
-			return;
-		}
-
-		/*
-		 * OK, the service is installed and down.
-		 * Maybe this is because of a restart of the service by the admin.
-		 * This means, we check the data 1 minute ago
-		 */
-		if ((!isset($this->_monitoringData[1][0]['data']['mongodbserver'])) ||
-				((isset($this->_monitoringData[1][0]['data']['mongodbserver'])) && ($this->_monitoringData[1][0]['data']['mongodbserver'] != 0))){
-			/*
-			 * We do NOT have this data or we have this data, but the webserver was not down 1 minute ago.
-			 * This means, it could be, that the admin is restarting the server.
-			 * We wait one more minute...
-			 */
-			return;
-		}
-
-		/*#####
-		 * The service is down and it was down 1 minute ago.
-		 * We try to rescue it
-		 *#####*/
-
-		/* Get the try counter */
-		$tryCount = (!isset($this->_rescueData['mongodbserver']['try_counter']))? 1 : $this->_rescueData['mongodbserver']['try_counter'] + 1;
-
-		/* Set the new try counter */
-		$this->_rescueData['mongodbserver']['try_counter'] = $tryCount;
-
-		/* if 5 times will not work, we have to give up... */
-		if ($tryCount > 5){
-			$app->log('MongoDB is down! Rescue will not help!', LOGLEVEL_ERROR);
-			return;
-		}
-
-
-		$app->log('MongoDB is down! Try rescue MongoDB (try:' . $tryCount . ')...', LOGLEVEL_WARN);
-
-		if(is_file($conf['init_scripts'] . '/' . 'mongodb')) {
-			$daemon = 'mongodb';
-		} else {
-			$daemon = 'mongodb';
-		}
-
-		$this->_rescueDaemon($daemon);
-	}
-
+	
 	/**
 	 * restarts mysql, if needed
 	 */
 	private function _rescueMySql(){
 		global $app, $conf;
-
+		
 		/*
 		 * do nothing, if it is not allowed to rescue mysql
 		 */
 		if ((isset($conf['serverconfig']['rescue']['do_not_try_rescue_mysql']) && ($conf['serverconfig']['rescue']['do_not_try_rescue_mysql']) == 'y')){
 			return;
 		}
-
+		
 		/*
 		 * if the service is up and running, or the service is not installed there is nothing to do...
 		 */
@@ -381,40 +310,40 @@ class rescue_core_module {
 			$this->_rescueData['mysqlserver']['try_counter'] = 0;
 			return;
 		}
-
+		
 		/*
 		 * OK, the service is installed and down.
 		 * Maybe this is because of a restart of the service by the admin.
 		 * This means, we check the data 1 minute ago
 		 */
-		if ((!isset($this->_monitoringData[1][0]['data']['mysqlserver'])) ||
+		if ((!isset($this->_monitoringData[1][0]['data']['mysqlserver'])) || 
 				((isset($this->_monitoringData[1][0]['data']['mysqlserver'])) && ($this->_monitoringData[1][0]['data']['mysqlserver'] != 0))){
-			/*
-			 * We do NOT have this data or we have this data, but the webserver was not down 1 minute ago.
-			 * This means, it could be, that the admin is restarting the server.
+			/* 
+			 * We do NOT have this data or we have this data, but the webserver was not down 1 minute ago. 
+			 * This means, it could be, that the admin is restarting the server. 
 			 * We wait one more minute...
 			 */
 			return;
 		}
-
+		
 		/*#####
 		 * The service is down and it was down 1 minute ago.
 		 * We try to rescue it
 		 *#####*/
-
+		
 		/* Get the try counter */
 		$tryCount = (!isset($this->_rescueData['mysqlserver']['try_counter']))? 1 : $this->_rescueData['mysqlserver']['try_counter'] + 1;
-
+		
 		/* Set the new try counter */
 		$this->_rescueData['mysqlserver']['try_counter'] = $tryCount;
-
+		
 		/* if 5 times will not work, we have to give up... */
 		if ($tryCount > 5){
 			$app->log('MySQL is down! Rescue will not help!', LOGLEVEL_ERROR);
 			return;
 		}
-
-
+		
+		
 		$app->log('MySQL is down! Try rescue mysql (try:' . $tryCount . ')...', LOGLEVEL_WARN);
 
 		if(is_file($conf['init_scripts'] . '/' . 'mysqld')) {
@@ -422,23 +351,23 @@ class rescue_core_module {
 		} else {
 			$daemon = 'mysql';
 		}
-
+		
 		$this->_rescueDaemon($daemon);
 	}
 
 	/**
 	 * Tries to stop and then restart the daemon
-	 *
+	 * 
 	 * @param type $daemon the name of the daemon
 	 */
 	private function _rescueDaemon($daemon){
 		global $conf;
-
+		
 		// if you need to find all restarts search for "['init_scripts']"
 		/*
 		 * First we stop the running service "normally"
 		 */
-
+		
 		/*
 		 * ATTENTION!
 		 * The service hangs. this means it could be, that "stop" will hang also.
@@ -446,13 +375,13 @@ class rescue_core_module {
 		 * of the service
 		 */
 		exec($conf['init_scripts'] . '/' . $daemon . ' stop && (sleep 3; kill $!; sleep 2; kill -9 $!) &> /dev/null');
-
+		
 		/*
 		 * OK, we tryed to stop it normally, maybe this worked maybe not. So we have to look
 		 * if the service is already running or not. If so, we have to kill them hard
 		 */
 		exec("kill -9 `ps -A | grep " . $daemon . "| grep -v grep | awk '{print $1}'` &> /dev/null");
-
+		
 		/*
 		 * There are no more zombies left. Lets start the service..
 		 */
diff --git a/server/mods-core/empty.dir b/server/mods-core/empty.dir
new file mode 100644
index 0000000000000000000000000000000000000000..95ba9ef37cca69318bcba17e67cd44ae84bd41e1
--- /dev/null
+++ b/server/mods-core/empty.dir
@@ -0,0 +1 @@
+This empty directory is needed by ISPConfig.
diff --git a/server/mods-enabled/empty.dir b/server/mods-enabled/empty.dir
new file mode 100644
index 0000000000000000000000000000000000000000..95ba9ef37cca69318bcba17e67cd44ae84bd41e1
--- /dev/null
+++ b/server/mods-enabled/empty.dir
@@ -0,0 +1 @@
+This empty directory is needed by ISPConfig.
diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php
index 5bc44075014519f903dba5d0f63ad2b111e37233..2e1e80ce85ce455d87f34147707fa65a74ed4477 100644
--- a/server/plugins-available/apache2_plugin.inc.php
+++ b/server/plugins-available/apache2_plugin.inc.php
@@ -88,97 +88,8 @@ class apache2_plugin {
 		
 		$app->plugins->registerEvent('ftp_user_delete',$this->plugin_name,'ftp_user_delete');
 		
-        $app->plugins->registerAction('php_ini_changed', $this->plugin_name, 'php_ini_changed');
 	}
-    
-    // check for php.ini changes
-    
-    
-    // Handle php.ini changes
-    function php_ini_changed($event_name, $data) {
-        global $app, $conf;
-        
-        $app->uses('getconf');
-		$web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
-		$fastcgi_config = $app->getconf->get_server_config($conf['server_id'], 'fastcgi');
-        
-        /* $data contains an array with these keys:
-         * file -> full path of changed php_ini
-         * mode -> web_domain php modes to change (mod, fast-cgi, php-fpm or '' for all except 'mod')
-         * php_version -> php ini path that changed (additional php versions)
-         */
-        
-        $qrystr = "SELECT * FROM web_domain WHERE custom_php_ini != ''";
-        if($data['mode'] == 'mod') {
-            $qrystr .= " AND php = 'mod'";
-        } elseif($data['mode'] == 'fast-cgi') {
-            $qrystr .= " AND php = 'fast-cgi'";
-            if($data['php_version']) {
-                $qrystr .= " AND fastcgi_php_version LIKE '%:" . $app->db->quote($data['php_version']) . "'";
-            }
-        } elseif($data['mode'] == 'php-fpm') {
-            $qrystr .= " AND php = 'php-fpm'";
-            if($data['php_version']) {
-                $qrystr .= " AND fastcgi_php_version LIKE '%:" . $app->db->quote($data['php_version']) . ":%'";
-            }
-        } else {
-            $qrystr .= " AND php != 'mod' AND php != 'fast-cgi'";
-        }
-        
-        
-        //** Get all the webs
-        $web_domains = $app->db->queryAllRecords($qrystr);
-        foreach($web_domains as $web_data) {
-            $custom_php_ini_dir = $web_config['website_basedir'].'/conf/'.$web_data['system_user'];
-            $web_folder = 'web';
-            if($web_data['type'] == 'vhostsubdomain') {
-                $web_folder = $web_data['web_folder'];
-                $custom_php_ini_dir .= '_' . $web_folder;
-            }
-            if(!is_dir($web_config['website_basedir'].'/conf')) $app->system->mkdir($web_config['website_basedir'].'/conf');
-
 
-            if(!is_dir($custom_php_ini_dir)) $app->system->mkdir($custom_php_ini_dir);
-            $php_ini_content = '';
-            if($web_data['php'] == 'mod') {
-                $master_php_ini_path = $web_config['php_ini_path_apache'];
-            } else {
-                if($web_data['php'] == 'fast-cgi' && file_exists($fastcgi_config["fastcgi_phpini_path"])) {
-                    $master_php_ini_path = $fastcgi_config["fastcgi_phpini_path"];
-                } else {
-                    $master_php_ini_path = $web_config['php_ini_path_cgi'];
-                }
-            }
-            if($master_php_ini_path != '' && substr($master_php_ini_path,-7) == 'php.ini' && is_file($master_php_ini_path)) {
-                $php_ini_content .= $app->system->file_get_contents($master_php_ini_path)."\n";
-            }
-            $php_ini_content .= str_replace("\r",'',trim($web_data['custom_php_ini']));
-            $app->system->file_put_contents($custom_php_ini_dir.'/php.ini',$php_ini_content);
-            $app->log('Info: rewrote custom php.ini for web ' . $web_data['domain_id'] . ' (' . $web_data['domain'] . ').',LOGLEVEL_DEBUG);
-        }
-        
-        if(count($web_domains) > 0) {
-            //* We do not check the apache config here - we only changed the php.ini
-            //* Check if this is a chrooted setup
-            if($web_config['website_basedir'] != '' && @is_file($web_config['website_basedir'].'/etc/passwd')) {
-                $apache_chrooted = true;
-                $app->log('Info: Apache is chrooted.',LOGLEVEL_DEBUG);
-            } else {
-                $apache_chrooted = false;
-            }
-            
-            $app->log('Info: rewrote all php.ini and reloading apache now.',LOGLEVEL_DEBUG);
-            if($apache_chrooted) {
-                $app->services->restartServiceDelayed('httpd','restart');
-            } else {
-                // request a httpd reload when all records have been processed
-                $app->services->restartServiceDelayed('httpd','reload');
-            }
-        } else {
-            $app->log('Info: No webs affected by php.ini change.',LOGLEVEL_DEBUG);
-        }
-    }
-    
 	// Handle the creation of SSL certificates
 	function ssl($event_name,$data) {
 		global $app, $conf;
@@ -260,15 +171,15 @@ class apache2_plugin {
 
 			$rand_file = escapeshellcmd($rand_file);
 			$key_file = escapeshellcmd($key_file);
-			if(substr($domain, 0, 2) == '*.' && strpos($key_file, '/ssl/\*.') != false) $key_file = str_replace('/ssl/\*.', '/ssl/*.', $key_file); // wildcard certificate
+			if(substr($domain, 0, 2) == '*.' && strpos($key_file, '/ssl/\*.') !== false) $key_file = str_replace('/ssl/\*.', '/ssl/*.', $key_file); // wildcard certificate
 			$key_file2 = escapeshellcmd($key_file2);
-			if(substr($domain, 0, 2) == '*.' && strpos($key_file2, '/ssl/\*.') != false) $key_file2 = str_replace('/ssl/\*.', '/ssl/*.', $key_file2); // wildcard certificate
+			if(substr($domain, 0, 2) == '*.' && strpos($key_file2, '/ssl/\*.') !== false) $key_file2 = str_replace('/ssl/\*.', '/ssl/*.', $key_file2); // wildcard certificate
 			$ssl_days = 3650;
 			$csr_file = escapeshellcmd($csr_file);
-			if(substr($domain, 0, 2) == '*.' && strpos($csr_file, '/ssl/\*.') != false) $csr_file = str_replace('/ssl/\*.', '/ssl/*.', $csr_file); // wildcard certificate
+			if(substr($domain, 0, 2) == '*.' && strpos($csr_file, '/ssl/\*.') !== false) $csr_file = str_replace('/ssl/\*.', '/ssl/*.', $csr_file); // wildcard certificate
 			$config_file = escapeshellcmd($ssl_cnf_file);
 			$crt_file = escapeshellcmd($crt_file);
-			if(substr($domain, 0, 2) == '*.' && strpos($crt_file, '/ssl/\*.') != false) $crt_file = str_replace('/ssl/\*.', '/ssl/*.', $crt_file); // wildcard certificate
+			if(substr($domain, 0, 2) == '*.' && strpos($crt_file, '/ssl/\*.') !== false) $crt_file = str_replace('/ssl/\*.', '/ssl/*.', $crt_file); // wildcard certificate
 
 			if(is_file($ssl_cnf_file) && !is_link($ssl_cnf_file)) {
 				
@@ -1428,23 +1339,23 @@ class apache2_plugin {
 			if(count($ipv4_ssl_alias_seo_redirects) > 0) $tmp_vhost_arr = $tmp_vhost_arr + array('alias_seo_redirects' => $ipv4_ssl_alias_seo_redirects);
 			$vhosts[] = $tmp_vhost_arr;
 			unset($tmp_vhost_arr, $ipv4_ssl_alias_seo_redirects);
-			$app->log('Enable SSL for: '.$domain,LOGLEVEL_DEBUG);
-		}
-		
-	//* Add vhost for IPv6 IP
-	if($data['new']['ipv6_address'] != '') {
-		if ($conf['serverconfig']['web']['vhost_rewrite_v6'] == 'y') {
-			if (isset($conf['serverconfig']['server']['v6_prefix']) && $conf['serverconfig']['server']['v6_prefix'] <> '') {
-				$explode_v6prefix=explode(':',$conf['serverconfig']['server']['v6_prefix']);
-				$explode_v6=explode(':',$data['new']['ipv6_address']);
-
-				for ( $i = 0; $i <= count($explode_v6prefix)-3; $i++ ) {
-				        $explode_v6[$i] = $explode_v6prefix[$i];
-				}
-				$data['new']['ipv6_address'] = implode(':',$explode_v6);
-			}
-		}
-			
+			$app->log('Enable SSL for: '.$domain,LOGLEVEL_DEBUG);
+		}
+		
+	//* Add vhost for IPv6 IP
+	if($data['new']['ipv6_address'] != '') {
+		if ($conf['serverconfig']['web']['vhost_rewrite_v6'] == 'y') {
+			if (isset($conf['serverconfig']['server']['v6_prefix']) && $conf['serverconfig']['server']['v6_prefix'] <> '') {
+				$explode_v6prefix=explode(':',$conf['serverconfig']['server']['v6_prefix']);
+				$explode_v6=explode(':',$data['new']['ipv6_address']);
+
+				for ( $i = 0; $i <= count($explode_v6prefix)-3; $i++ ) {
+				        $explode_v6[$i] = $explode_v6prefix[$i];
+				}
+				$data['new']['ipv6_address'] = implode(':',$explode_v6);
+			}
+		}
+			
 			$tmp_vhost_arr = array('ip_address' => '['.$data['new']['ipv6_address'].']', 'ssl_enabled' => 0, 'port' => 80);
 			if(count($rewrite_rules) > 0)  $tmp_vhost_arr = $tmp_vhost_arr + array('redirects' => $rewrite_rules);
 			if(count($alias_seo_redirects) > 0) $tmp_vhost_arr = $tmp_vhost_arr + array('alias_seo_redirects' => $alias_seo_redirects);
diff --git a/server/plugins-available/aps_plugin.inc.php b/server/plugins-available/aps_plugin.inc.php
index e529b12b207aab48fd9ddc8100133cf1f2c21206..dbbbfb944a1ba8ce90ccfcf24b81a3c6cc3b323b 100644
--- a/server/plugins-available/aps_plugin.inc.php
+++ b/server/plugins-available/aps_plugin.inc.php
@@ -1,118 +1,118 @@
-<?php
-/*
-Copyright (c) 2012, ISPConfig UG
-Contributors: web wack creations,  http://www.web-wack.at
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of ISPConfig nor the names of its contributors
-      may be used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-if(defined('ISPC_ROOT_PATH')) include_once(ISPC_ROOT_PATH.'/lib/classes/aps_installer.inc.php');
-//require_once(ISPC_ROOT_PATH.'/lib/classes/class.installer.php');
-
-class aps_plugin
-{
-    public $plugin_name = 'aps_plugin';
-    public $class_name = 'aps_plugin';
-	
-	//* This function is called during ispconfig installation to determine
-	//  if a symlink shall be created for this plugin.
-	function onInstall() {
-		global $conf;
-
-		if($conf['services']['web'] == true) {
-			return true;
-		} else {
-			return false;
-		}
-
-	}
-    
-    /**
-     * This method gets called when the plugin is loaded
-     */
-    public function onLoad()
-    {
-        global $app;
-        
-        // Register the available events
-        $app->plugins->registerEvent('aps_instance_insert', $this->plugin_name, 'install');
-        $app->plugins->registerEvent('aps_instance_update', $this->plugin_name, 'install');
-        $app->plugins->registerEvent('aps_instance_delete', $this->plugin_name, 'delete');
-    }
-    
-    /**
-     * (Re-)install a package
-     */
-    public function install($event_name, $data)
-    {
-        global $app, $conf;
-        
-		//* dont run the installer on a mirror server to prevent
-		//  that the pplication gets installed twice.
-		if($conf['mirror_server_id'] > 0) return true;
-		
-		$app->log("Starting APS install",LOGLEVEL_DEBUG);
-        if(!isset($data['new']['id'])) return false;
-        $instanceid = $data['new']['id'];
-		
-		if($data['new']['instance_status'] == INSTANCE_INSTALL) {
-			$aps = new ApsInstaller($app);
-			$app->log("Running installHandler",LOGLEVEL_DEBUG);
-			$aps->installHandler($instanceid, 'install');
-		}
-		
-		if($data['new']['instance_status'] == INSTANCE_REMOVE) {
-			$aps = new ApsInstaller($app);
-			$app->log("Running installHandler",LOGLEVEL_DEBUG);
-			$aps->installHandler($instanceid, 'delete');
-		}
-    }
-    
-    /**
-     * Update an existing instance (currently unused)
-     */
-	 /*
-    public function update($event_name, $data)
-    {
-    }
-	*/
-    
-    /**
-     * Uninstall an instance
-     */
-    public function delete($event_name, $data)
-    {
-        global $app, $conf;
-        
-        if(!isset($data['new']['id'])) return false;
-        $instanceid = $data['new']['id'];
-		
-		if($data['new']['instance_status'] == INSTANCE_REMOVE) {
-			$aps = new ApsInstaller($app);
-			$aps->installHandler($instanceid, 'install');
-		}        
-    }
-}
+<?php
+/*
+Copyright (c) 2012, ISPConfig UG
+Contributors: web wack creations,  http://www.web-wack.at
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of ISPConfig nor the names of its contributors
+      may be used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+if(defined('ISPC_ROOT_PATH')) include_once(ISPC_ROOT_PATH.'/lib/classes/aps_installer.inc.php');
+//require_once(ISPC_ROOT_PATH.'/lib/classes/class.installer.php');
+
+class aps_plugin
+{
+    public $plugin_name = 'aps_plugin';
+    public $class_name = 'aps_plugin';
+	
+	//* This function is called during ispconfig installation to determine
+	//  if a symlink shall be created for this plugin.
+	function onInstall() {
+		global $conf;
+
+		if($conf['services']['web'] == true) {
+			return true;
+		} else {
+			return false;
+		}
+
+	}
+    
+    /**
+     * This method gets called when the plugin is loaded
+     */
+    public function onLoad()
+    {
+        global $app;
+        
+        // Register the available events
+        $app->plugins->registerEvent('aps_instance_insert', $this->plugin_name, 'install');
+        $app->plugins->registerEvent('aps_instance_update', $this->plugin_name, 'install');
+        $app->plugins->registerEvent('aps_instance_delete', $this->plugin_name, 'delete');
+    }
+    
+    /**
+     * (Re-)install a package
+     */
+    public function install($event_name, $data)
+    {
+        global $app, $conf;
+        
+		//* dont run the installer on a mirror server to prevent
+		//  that the pplication gets installed twice.
+		if($conf['mirror_server_id'] > 0) return true;
+		
+		$app->log("Starting APS install",LOGLEVEL_DEBUG);
+        if(!isset($data['new']['id'])) return false;
+        $instanceid = $data['new']['id'];
+		
+		if($data['new']['instance_status'] == INSTANCE_INSTALL) {
+			$aps = new ApsInstaller($app);
+			$app->log("Running installHandler",LOGLEVEL_DEBUG);
+			$aps->installHandler($instanceid, 'install');
+		}
+		
+		if($data['new']['instance_status'] == INSTANCE_REMOVE) {
+			$aps = new ApsInstaller($app);
+			$app->log("Running installHandler",LOGLEVEL_DEBUG);
+			$aps->installHandler($instanceid, 'delete');
+		}
+    }
+    
+    /**
+     * Update an existing instance (currently unused)
+     */
+	 /*
+    public function update($event_name, $data)
+    {
+    }
+	*/
+    
+    /**
+     * Uninstall an instance
+     */
+    public function delete($event_name, $data)
+    {
+        global $app, $conf;
+        
+        if(!isset($data['new']['id'])) return false;
+        $instanceid = $data['new']['id'];
+		
+		if($data['new']['instance_status'] == INSTANCE_REMOVE) {
+			$aps = new ApsInstaller($app);
+			$aps->installHandler($instanceid, 'install');
+		}        
+    }
+}
 ?>
\ No newline at end of file
diff --git a/server/plugins-available/backup_plugin.inc.php b/server/plugins-available/backup_plugin.inc.php
index bc91a9186da0983fd7f63f800e84980fbd1c86c4..78be959e6d0ae452c44d4cc7fe67c1be767923ba 100644
--- a/server/plugins-available/backup_plugin.inc.php
+++ b/server/plugins-available/backup_plugin.inc.php
@@ -29,48 +29,48 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
 class backup_plugin {
-
+	
 	var $plugin_name = 'backup_plugin';
 	var $class_name  = 'backup_plugin';
-
+	
 	//* This function is called during ispconfig installation to determine
 	//  if a symlink shall be created for this plugin.
 	public function onInstall() {
 		global $conf;
-
+		
 		return true;
-
+		
 	}
-
-
+	
+		
 	/*
 	 	This function is called when the plugin is loaded
 	*/
-
+	
 	public function onLoad() {
 		global $app;
-
+		
 		//* Register for actions
 		$app->plugins->registerAction('backup_download',$this->plugin_name,'backup_action');
 		$app->plugins->registerAction('backup_restore',$this->plugin_name,'backup_action');
-
+		
 	}
-
+	
 	//* Do a backup action
 	public function backup_action($action_name,$data) {
 		global $app,$conf;
-
+		
 		$backup_id = intval($data);
 		$backup = $app->dbmaster->queryOneRecord("SELECT * FROM web_backup WHERE backup_id = $backup_id");
-
+		
 		if(is_array($backup)) {
-
+		
 			$app->uses('ini_parser,file,getconf');
-
+			
 			$web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$backup['parent_domain_id']);
 			$server_config = $app->getconf->get_server_config($conf['server_id'], 'server');
 			$backup_dir = $server_config['backup_dir'].'/web'.$web['domain_id'];
-
+			
 			//* Make backup available for download
 			if($action_name == 'backup_download') {
 				//* Copy the backup file to the backup folder of the website
@@ -80,38 +80,12 @@ class backup_plugin {
 					$app->log('cp '.$backup_dir.'/'.$backup['filename'].' '.$web['document_root'].'/backup/'.$backup['filename'],LOGLEVEL_DEBUG);
 				}
 			}
-
-			//* Restore a MongoDB backup
-			if($action_name == 'backup_restore' && $backup['backup_type'] == 'mongodb') {
-				if(file_exists($backup_dir.'/'.$backup['filename'])) {
-					//$parts = explode('_',$backup['filename']);
-					//$db_name = $parts[1];
-					preg_match('@^db_(.+)_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}\.tar\.gz$@', $backup['filename'], $matches);
-					$db_name = $matches[1];
-
-					// extract tar.gz archive
-					$dump_directory = str_replace(".tar.gz", "", $backup['filename']);
-					$extracted = "/usr/local/ispconfig/server/temp";
-					exec("tar -xzvf ".escapeshellarg($backup_dir.'/'.$backup['filename'])." --directory=".escapeshellarg($extracted));
-					$restore_directory = $extracted."/".$dump_directory."/".$db_name;
-
-					// mongorestore -h 127.0.0.1 -u root -p 123456 --authenticationDatabase admin -d c1debug --drop ./toRestore
-					$command = "mongorestore -h 127.0.0.1 --port 27017 -u root -p 123456 --authenticationDatabase admin -d ".$db_name." --drop ".escapeshellarg($restore_directory);
-					exec($command);
-					exec("rm -rf ".escapeshellarg($extracted."/".$dump_directory));
-				}
-
-				unset($clientdb_host);
-				unset($clientdb_user);
-				unset($clientdb_password);
-				$app->log('Restored MongoDB backup '.$backup_dir.'/'.$backup['filename'],LOGLEVEL_DEBUG);
-			}
-
+			
 			//* Restore a mysql backup
 			if($action_name == 'backup_restore' && $backup['backup_type'] == 'mysql') {
 				//* Load sql dump into db
 				include('lib/mysql_clientdb.conf');
-
+				
 				if(file_exists($backup_dir.'/'.$backup['filename'])) {
 					//$parts = explode('_',$backup['filename']);
 					//$db_name = $parts[1];
@@ -125,7 +99,7 @@ class backup_plugin {
 				unset($clientdb_password);
 				$app->log('Restored MySQL backup '.$backup_dir.'/'.$backup['filename'],LOGLEVEL_DEBUG);
 			}
-
+			
 			//* Restore a web backup
 			if($action_name == 'backup_restore' && $backup['backup_type'] == 'web') {
 				if($backup['backup_mode'] == 'userzip') {
@@ -149,11 +123,11 @@ class backup_plugin {
 					}
 				}
 			}
-
+			
 		} else {
 			$app->log('No backup with ID '.$backup_id.' found.',LOGLEVEL_DEBUG);
 		}
-
+		
 		return 'ok';
 	}
 
diff --git a/server/plugins-available/mail_plugin.inc.php b/server/plugins-available/mail_plugin.inc.php
index e55720269a217b5543fb3b7971e20e6d2b42e63d..5d4fd988ff5c4be9995b4a9ba2119efec74c3ac3 100644
--- a/server/plugins-available/mail_plugin.inc.php
+++ b/server/plugins-available/mail_plugin.inc.php
@@ -193,7 +193,8 @@ class mail_plugin {
 		$mailTarget       = $data["new"]["email"];
 		$mailSubject      = "=?utf-8?B?".base64_encode($welcome_mail_subject)."?=";
 
-		mail($mailTarget, $mailSubject, $welcome_mail_message, $mailHeaders);
+		//* Send the welcome email only on the "master" mail server to avoid duplicate emails
+		if($conf['mirror_server_id'] == 0) mail($mailTarget, $mailSubject, $welcome_mail_message, $mailHeaders);
 		
 	}
 	
diff --git a/server/plugins-available/mail_plugin_dkim.inc.php b/server/plugins-available/mail_plugin_dkim.inc.php
deleted file mode 100644
index 1a50cee94785232fc09c91f4f76126551d508013..0000000000000000000000000000000000000000
--- a/server/plugins-available/mail_plugin_dkim.inc.php
+++ /dev/null
@@ -1,266 +0,0 @@
-<?php
-
-/*
-Copyright (c) 2007 - 2013, Till Brehm, projektfarm Gmbh
-Copyright (c) 2013, Florian Schaal, info@schaal-24.de
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of ISPConfig nor the names of its contributors
-      may be used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-class mail_plugin_dkim {
-
-	var $plugin_name = 'mail_plugin_dkim';
-	var $class_name = 'mail_plugin_dkim';
-
-	// private variables
-	var $action = '';
-
-	/* 
-		This function is called during ispconfig installation to determine
-		if a symlink shall be created for this plugin.
-	*/
-	function onInstall() {
-		global $conf;
-
-		if($conf['services']['mail'] == true) {
-			return true;
-		} else {
-			return false;
-		}
-
-	}
-
-	/*
-	 	This function is called when the plugin is loaded
-	*/
-	function onLoad() {
-		global $app,$conf;
-		/*
-		Register for the events
-		*/
-		$app->plugins->registerEvent('mail_domain_delete',$this->plugin_name,'domain_dkim_delete');
-		$app->plugins->registerEvent('mail_domain_insert',$this->plugin_name,'domain_dkim_insert');
-		$app->plugins->registerEvent('mail_domain_update',$this->plugin_name,'domain_dkim_update');
-	}
-
-        /*
-                This function gets the amavisd-config file
-        */
-	function get_amavis_config() {
-		$pos_config=array(
-			'/etc/amavisd.conf',
-			'/etc/amavisd.conf/50-user',
-			'/etc/amavis/conf.d/50-user'
-		);
-		$amavis_configfile='';
-                foreach($pos_config as $conf) {
-			if (is_file($conf)) {
-				$amavis_configfile=$conf;
-				break;
-			}
-                }
-		return $amavis_configfile;
-	}
-
-	/*
-		This function checks the relevant configs and disables dkim for the domain 
-		if the directory for dkim is not writeable or does not exist
-	*/
-	function check_system($data) {
-		global $app,$mail_config;
-                $app->uses('getconf');
-		$check=true;
-		/* check for amavis-config */
-		if ( $this->get_amavis_config() == '' || !is_writeable($this->get_amavis_config()) ) {
-			$app->log('Amavis-config not found or not writeable.',LOGLEVEL_ERROR);
-			$check=false;
-		}
-		/* dir for dkim-keys writeable? */
-                $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail');
-		if (isset($mail_config['dkim_path']) && isset($data['new']['dkim_private']) && !empty($data['new']['dkim_private'])) {
-			if (!is_writeable($mail_config['dkim_path'])) {
-				$app->log('DKIM Path '.$mail_config['dkim_path'].' not found or not writeable.',LOGLEVEL_ERROR);
-				$check=false;
-               		}
-		} else {
-			$app->log('Unable to write DKIM settings; Check your config!',LOGLEVEL_ERROR);
-			$check=false;
-		}
-		return $check;
-	}
-        
-	/*
-		This function restarts amavis
-	*/
-	function restart_amavis() {
-		global $app,$conf;
-		$initfile=$conf['init_scripts'].'/amavis';
-		$app->log('Restarting amavis.',LOGLEVEL_DEBUG);
-		exec(escapeshellarg($conf['init_scripts']).escapeshellarg('/amavis').' restart',$output);
-		foreach($output as $logline) $app->log($logline,LOGLEVEL_DEBUG);
-	}
-
-	/*
-                This function writes the keyfiles (public and private)
-        */
-	function write_dkim_key($key_file,$key_value,$key_domain) {
-                global $app,$mailconfig;
-		$success=false;
-		if (!file_put_contents($key_file.'.private',$key_value) === false) { 
-			$app->log('Saved DKIM Private-key to '.$key_file.'.private',LOGLEVEL_DEBUG);
-			$success=true;
-			/* now we get the DKIM Public-key */
-			exec('cat '.escapeshellarg($key_file.'.private').'|openssl rsa -pubout',$pubkey,$result);
-			$public_key='';
-			foreach($pubkey as $values) $public_key=$public_key.$values."\n";
-			/* save the DKIM Public-key in dkim-dir */
-			if (!file_put_contents($key_file.'.public',$public_key) === false) 
-				$app->log('Saved DKIM Public to '.$key_domain.'.',LOGLEVEL_DEBUG);
-			else $app->log('Unable to save DKIM Public to '.$key_domain.'.',LOGLEVEL_WARNING);
-		} 
-		return $success;
-	}
-
-	/*
-		This function removes the keyfiles
-	*/
-	function remove_dkim_key($key_file,$key_domain) {
-		global $app;
-		if (file_exists($key_file.'.private')) {
-			exec('rm -f '.escapeshellarg($key_file.'.private'));
-			$app->log('Deleted the DKIM Private-key for '.$key_domain.'.',LOGLEVEL_DEBUG);
-		} else $app->log('Unable to delete the DKIM Private-key for '.$key_domain.' (not found).',LOGLEVEL_DEBUG);
-		if (file_exists($key_file.'.public')) {
-			exec('rm -f '.escapeshellarg($key_file.'.public'));
-			$app->log('Deleted the DKIM Public-key for '.$key_domain.'.',LOGLEVEL_DEBUG);
-		} else $app->log('Unable to delete the DKIM Public-key for '.$key_domain.' (not found).',LOGLEVEL_DEBUG);
-	}
-
-	/*
-		This function adds the entry to the amavisd-config
-	*/
-	function add_to_amavis($key_domain) {
-		global $app,$mail_config;
-		$amavis_config = file_get_contents($this->get_amavis_config());
-	       	$key_value="dkim_key('".$key_domain."', 'default', '".$mail_config['dkim_path']."/".$key_domain.".private');\n";
-       	        if(strpos($amavis_config, $key_value) !== false) $amavis_config = str_replace($key_value, '', $amavis_config);
-		if (!file_put_contents($this->get_amavis_config(),$key_value,FILE_APPEND) === false) {
-			$app->log('Adding DKIM Private-key to amavis-config.',LOGLEVEL_DEBUG);
-			$this->restart_amavis();
-		}
-	}
-
-	/*
-		This function removes the entry from the amavisd-config
-	*/
-	function remove_from_amavis($key_domain) {
-		global $app;
-		$amavis_config = file($this->get_amavis_config());
-		$i=0;$found=false;
-		foreach($amavis_config as $line) {
-			if (preg_match("/^\bdkim_key\b.*\b".$key_domain."\b/",$line)) {
-				unset($amavis_config[$i]);
-				$found=true;
-			}
-			$i++;
-		}
-		if ($found) {
-			file_put_contents($this->get_amavis_config(), $amavis_config);
-			$app->log('Deleted the DKIM settings from amavis-config for '.$key_domain.'.',LOGLEVEL_DEBUG);
-			$this->restart_amavis();
-		} else $app->log('Unable to delete the DKIM settings from amavis-config for '.$key_domain.'.',LOGLEVEL_ERROR);
-	}
-
-	/*
-		This function controlls new key-files and amavisd-entries
-	*/
-	function add_dkim($data) {
-		global $app;
-                $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail');
-		if ( substr($mail_config['dkim_path'],strlen($mail_config['dkim_path'])-1) == '/' )
-			$mail_config['dkim_path'] = substr($mail_config['dkim_path'],0,strlen($mail_config['dkim_path'])-1);
-		if ($this->write_dkim_key($mail_config['dkim_path']."/".$data['new']['domain'],$data['new']['dkim_private'],$data['new']['domain'])) {
-	       	        $this->add_to_amavis($data['new']['domain']);
-		} else {
-			$app->log('Error saving the DKIM Private-key for '.$data['new']['domain'].' - DKIM is not enabled for the domain.',LOGLEVEL_ERROR);
-		}
-	}
-
-	/*
-		This function controlls the removement of keyfiles (public and private)
-		and the entry in the amavisd-config
-	*/
-	function remove_dkim($_data) {
-		global $app;
-                $mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail');
-		if ( substr($mail_config['dkim_path'],strlen($mail_config['dkim_path'])-1) == '/' )
-			$mail_config['dkim_path'] = substr($mail_config['dkim_path'],0,strlen($mail_config['dkim_path'])-1);
-		$this->remove_dkim_key($mail_config['dkim_path']."/".$_data['domain'],$_data['domain']);
-               	$this->remove_from_amavis($_data['domain']);
-	}
-
-	/*
-		Functions called by onLoad
-	*/
-	function domain_dkim_delete($event_name,$data) {
-		if (isset($data['old']['dkim']) && $data['old']['dkim'] == 'y') $this->remove_dkim($data['old']);
-	}
-
-	function domain_dkim_insert($event_name,$data) {
-		if (isset($data['new']['dkim']) && $data['new']['dkim']=='y' && $this->check_system($data)) {
-			$this->add_dkim($data);
-		}
-	}
-
-	function domain_dkim_update($event_name,$data) {
-		global $app;
-                /* get the config */
-		if (isset($data['new']['dkim']) && $data['new']['dkim']=='y') { /* DKIM enabled */
-			if ($this->check_system($data)) {
-				/* new domain-name */
-        		        if ($data['old']['domain'] != $data['new']['domain']) {
-					$this->remove_dkim($data['old']);
-					$this->add_dkim($data);
-				}
-				/* new key */
-        		        if (($data['old']['dkim_private'] != $data['new']['dkim_private']) || ($data['old']['dkim'] != $data['new']['dkim'])) {
-				if ($data['new']['dkim_private'] != $data['old']['dkim_private']) $this->remove_dkim($data['new']);
-					$this->add_dkim($data);
-				}
-				/* change active (on / off) */
-                		if ($data['old']['active'] != $data['new']['active']) {
-                        		if ($data['new']['active'] == 'y') {
-	                        		$this->add_dkim($data);
-					} else {
-        	                		$this->remove_dkim($data['new']);
-	        	                }
-        	        	}
-			}	
-		}
-		if (isset($data['new']['dkim']) && $data['old']['dkim'] != $data['new']['dkim'])
-			if ($this->check_system($data) && $data['new']['dkim'] == 'n') $this->remove_dkim($data['new']);
-	}
-}
-?>
diff --git a/server/plugins-available/mongo_clientdb_plugin.inc.php b/server/plugins-available/mongo_clientdb_plugin.inc.php
deleted file mode 100644
index 545fe9e4bd4875e14ba408ddfddc2b8551d39461..0000000000000000000000000000000000000000
--- a/server/plugins-available/mongo_clientdb_plugin.inc.php
+++ /dev/null
@@ -1,820 +0,0 @@
-<?php
-
-/*
-Copyright (c) 2007, Till Brehm, projektfarm Gmbh
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright notice,
-      this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright notice,
-      this list of conditions and the following disclaimer in the documentation
-      and/or other materials provided with the distribution.
-    * Neither the name of ISPConfig nor the names of its contributors
-      may be used to endorse or promote products derived from this software without
-      specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/**
- * The MongoDB client plugin is used by ISPConfig to control the management of MongoDB.
- * If handles everything from creating DBs/Users, update them or delete them.
- */
-class mongo_clientdb_plugin {
-
-	/**
-	 * ISPConfig internal identifiers.
-	 */
-	var $plugin_name = 'mongo_clientdb_plugin';
-	var $class_name  = 'mongo_clientdb_plugin';
-
-
-	/**
-	 * This function is called during ISPConfig installation.
-	 * It determines if a symlink shall be created for this plugin.
-	 *
-	 * @return bool true if symlink should be created
-	 */
-	function onInstall() {
-		global $conf;
-
-		return (bool) $conf['services']['db'];
-	}
-
-	/**
-	 * This function is called when the plugin is loaded.
-	 * Each plugin/module needs to register itself to ISPConfig events from which
-	 * it want to receive changes/get notified.
-	 *
-	 * Since this is a MongoDB plugin we are interested in DB changes and everything related
-	 * to it, like users.
-	 */
-	function onLoad() {
-		global $app;
-
-		//* Databases
-		$app->plugins->registerEvent('database_insert',$this->plugin_name,'db_insert');
-		$app->plugins->registerEvent('database_update',$this->plugin_name,'db_update');
-		$app->plugins->registerEvent('database_delete',$this->plugin_name,'db_delete');
-
-		//* Database users
-		$app->plugins->registerEvent('database_user_insert',$this->plugin_name,'db_user_insert');
-		$app->plugins->registerEvent('database_user_update',$this->plugin_name,'db_user_update');
-		$app->plugins->registerEvent('database_user_delete',$this->plugin_name,'db_user_delete');
-	}
-
-
-	/**
-	 * MongoDB
-	 * ------------------------------------------------------------------------
-	 * The following needs to be done before using this plugin:
-	 * - 1. install MongoDB server from 10gen sources (or another one with >= 2.4)
-	 * - 2. install php5-dev package (apt-get install php5-dev)
-	 * - 3. install mongo PECL extension (pecl install mongo)
-	 * - 4. enable mongo (echo "extension=mongo.so" > /etc/php5/mods-available/mongo.ini && php5enmod mongo)
-	 * - 5. create administrative user manager in Mongo (mongo -> use admin -> db.addUser({user: "root", pwd: "123456", roles: [ "userAdminAnyDatabase", "readWriteAnyDatabase", "dbAdminAnyDatabase", "clusterAdmin" ]}))
-	 * - 6. enable auth for Mongo (nano /etc/mongodb.conf -> auth = true)
-	 * - 7. restart MongoDB (service mongodb restart)
-	 *
-	 * Unlike MySQL, MongoDB manages users per database.
-	 * Therefor we cannot use one user for multiple databases. Instead, we have to add him each time via the admin user.
-	 */
-
-	/**
-	 * Stores the MongoDB connection.
-	 * @var object
-	 */
-	private $_connection = null;
-
-	/**
-	 * Stores the MongoDB admin user.
-	 * @var string
-	 */
-	const USER = "root";
-
-	/**
-	 * Stores the MongoDB admin password.
-	 * @var string
-	 */
-	const PW = "123456";
-
-	/**
-	 * Stores the MongoDB host address.
-	 * @var string
-	 */
-	const HOST = "127.0.0.1";
-
-	/**
-	 * Stores the MongoDB port.
-	 * @var int
-	 */
-	const PORT = 27017;
-
-	/**
-	 * Adds the user to given database.
-	 * If no connection exists, the user already exists or the database doesn't exist,
-	 * null is returned.
-	 *
-	 * @param string $db the database to use
-	 * @param array $user the user to add
-	 * @return bool true if user added
-	 */
-	private function addUser($db, $user) {
-		if ($this->isConnected() && !$this->userExists($db, $user)) {
-			$roles = "";
-
-			foreach ($user['roles'] as $index => $role) {
-				$roles .= "\"".$role."\"";
-
-				if ($index !== count($user['roles']) - 1) {
-					$roles .= ", ";
-				}
-			}
-
-			return $this->exec($db, "db.system.users.insert({ user: \"".$user['username']."\", pwd: \"".$user['password']."\", roles: [ ".$roles." ] })");
-			//return $this->exec($db, "db.addUser({ user: \"".$user['username']."\", pwd: \"".$user['password']."\", roles: [ ".$roles." ] })");
-		}
-
-		return null;
-	}
-
-	/**
-	 * Changes the users password in given DB.
-	 * If no connection exists, the user doesn't exist or the DB doesn't exist,
-	 * null is returned.
-	 *
-	 * @param string $db the database name
-	 * @param string $user the user to change
-	 * @param string $password the new password
-	 * @return bool true if password changes
-	 */
-	private function changePassword($db, $user, $password) {
-		if ($this->isConnected() && $this->dbExists($db) && $this->userExists($db, $user)) {
-			$old_user = $this->getUser($db, $user);
-
-			if ($this->dropUser($user, $db)) {
-				return $this->addUser($db, array(
-					'username' => $user,
-					'password' => $password,
-					'roles' => $old_user['roles']
-				));
-			}
-
-			return false;
-		}
-
-		return null;
-	}
-
-	/**
-	 * Connects to the server and authentificates.
-	 * If the authentificaten goes wrong or another error encounters,
-	 * false is returned.
-	 * If we already have an open connection we try to disconnect and connect again.
-	 * If this fails, false is returned.
-	 *
-	 * @return object $connection the MongoDB connection
-	 */
-	private function connect() {
-		try {
-			if ($this->isConnected() && !$this->disconnect()) {
-				return false;
-			}
-
-			$this->_connection = new MongoClient("mongodb://".self::USER.":".self::PW."@".self::HOST.":".self::PORT."/admin");
-
-			return $this->_connection;
-		} catch (MongoConnnectionException $e) {
-			$app->log('Unable to connect to MongoDB: '.$e, LOGLEVEL_ERROR);
-			$this->_connection = null;
-
-			return false;
-		}
-	}
-
-	/**
-	 * Checks if the database exists.
-	 * If no connection exists,
-	 * null is returned.
-	 *
-	 * @param string $db the database name
-	 * @return bool true if exists
-	 */
-	private function dbExists($db) {
-		if ($this->isConnected()) {
-			return in_array($db, $this->getDBs());
-		}
-
-		return null;
-	}
-
-	/**
-	 * Closes the MongoDB connection.
-	 * If no connection exists and nothing is done,
-	 * null is returned.
-	 *
-	 * @return bool true if closed
-	 */
-	private function disconnect() {
-		if ($this->isConnected()) {
-			$status = $this->_connection->close();
-
-			if ($status) {
-				$this->_connection = null;
-			}
-
-			return $status;
-		}
-
-		return null;
-	}
-
-	/**
-	 * Drops the given database.
-	 * If no connection exists or the database doesn't exist,
-	 * null is returned.
-	 *
-	 * @param string $db the database's to drop name
-	 */
-	private function dropDB($db) {
-		if ($this->isConnected() && $this->dbExists($db)) {
-			return (bool) $this->_connection->dropDB($db)['ok'];
-		}
-
-		return null;
-	}
-
-	/**
-	 * Drops the given user from database.
-	 * If no DB is defined, the user is dropped from all databases.
-	 * If there's an error when dropping the user from all DBs, an array containing the
-	 * names of the failed DBs is returned.
-	 * If no connection exists, the database doesn't exist or the user is not in DB,
-	 * null is returned.
-	 *
-	 * @param string $user the user to drop
-	 * @param string $db the database name
-	 * @return bool true if dropped
-	 */
-	private function dropUser($user, $db = null) {
-		if ($this->isConnected()) {
-			if ($db !== null && $this->dbExists($db) && $this->userExists($db, $user)) {
-				return $this->exec($db, "db.removeUser(\"".$user."\")");
-			} else {
-				$dbs = $this->getDBs();
-
-				if ((bool) $dbs) {
-					$failures = array();
-
-					foreach ($dbs as $db) {
-						$exists = $this->userExists($db, $user);
-
-						if ($exists) {
-							if (!$this->dropUser($user, $db)) {
-								$failures[] = $db;
-							}
-						}
-					}
-				}
-
-				return (bool) $failures ? $failures : true;
-			}
-		}
-
-		return null;
-	}
-
-	/**
-	 * Executed the command on the MongoDB server.
-	 * If no connection exists and thus nothing can be done,
-	 * null is returned.
-	 *
-	 * @param string $db the database to query
-	 * @param string $query the command to execute
-	 * @return array the result of the query
-	 */
-	private function exec($db, $query) {
-		if ($this->isConnected()) {
-			$db = $this->selectDB($db);
-			$result = $db->execute($query);
-
-			if ((bool) $result['ok']) {
-				return $result;
-			}
-
-			return false;
-		}
-
-		return null;
-	}
-
-	/**
-	 * Checks if the connection exists.
-	 *
-	 * @return true if connected
-	 */
-	private function isConnected() {
-		return $this->_connection !== null;
-	}
-
-	/**
-	 * Generates a MongoDB compatible password.
-	 *
-	 * @param string $user the username
-	 * @param string $password the user password
-	 * @return string the MD5 string
-	 */
-	private function generatePassword($user, $password) {
-		return md5($user.":mongo:".$password);
-	}
-
-	/**
-	 * Returns the databases found on connection.
-	 * If no connection exists and therefor no DBs can be found,
-	 * null is returned.
-	 *
-	 * @return array $names the databases's name
-	 */
-	private function getDBs() {
-		if ($this->isConnected()) {
-			$dbs = $this->_connection->listDBs();
-
-			if ((bool) $dbs && isset($dbs['databases'])) {
-				$names = array();
-
-				foreach ($dbs['databases'] as $db) {
-					$names[] = $db['name'];
-				}
-
-				return $names;
-			}
-		}
-
-		return null;
-	}
-
-	/**
-	 * Returns the user entry for given database.
-	 * If no connection exists, the database doesn't exist or the user doesn't exist
-	 * null is returned.
-	 *
-	 * @param string $db the database name
-	 * @param string $user the user to return
-	 * @return array $user the user in DB
-	 */
-	private function getUser($db, $user) {
-		if ($this->isConnected() && $this->dbExists($db) && $this->userExists($db, $user)) {
-			$result = $this->selectDB($db)->selectCollection("system.users")->find(array( 'user' => $user ));
-
-			// ugly fix to return user
-			foreach ($result as $user) {
-				return $user;
-			}
-		}
-
-		return null;
-	}
-
-	/**
-	 * Returns the users for given database.
-	 * If no connection exists or the database doesn't exist,
-	 * null is returned.
-	 *
-	 * @param string $db the database name
-	 * @return array $users the users in DB
-	 */
-	private function getUsers($db) {
-		if ($this->isConnected() && $this->dbExists($db)) {
-			$result = $this->selectDB($db)->selectCollection("system.users")->find();
-
-			$users = array();
-
-			foreach ($result as $record) {
-				$users[] = $record['user'];
-			}
-
-			return $users;
-		}
-
-		return null;
-	}
-
-	/**
-	 * Checks if the given user exists in given database.
-	 * If no connection exists or the given database doesn't exist
-	 * null is returned.
-	 *
-	 * @param string $db the database name
-	 * @param string $user the user to check
-	 * @return bool true if user exists
-	 */
-	private function userExists($db, $user) {
-		if ($this->isConnected() && $this->dbExists($db)) {
-			$users = $this->getUsers($db);
-
-			return in_array($user, $users);
-		}
-
-		return null;
-	}
-
-	/**
-	 * Renames the MongoDB database to provided name.
-	 * If no connection exists, the source DB doesn't exist or the target DB already exists,
-	 * null is returned.
-	 *
-	 * @param string $old_name the old database name
-	 * @param string $new_name the new database name
-	 * @return bool true if renamed
-	 */
-	private function renameDB($old_name, $new_name) {
-		if ($this->isConnected() && $this->dbExists($old_name) && !$this->dbExists($new_name)) {
-			if ($this->exec($old_name, "db.copyDatabase(\"".$old_name."\", \"".$new_name."\", \"".self::HOST."\", \"".self::USER."\", \"".self::PW."\")")) {
-				$this->dropDB($old_name);
-
-				return true;
-			}
-
-			return false;
-		}
-
-		return null;
-	}
-
-	/**
-	 * Switched the selected database.
-	 * MongoDB acts on a per-DB level (user management) and we always need to
-	 * ensure we have the right DB selected.
-	 * If no connection exists and thus nothing is done,
-	 * null is returned.
-	 *
-	 * @param string $db the database to use
-	 * @return object the MongoDB database object
-	 */
-	private function selectDB($db) {
-		if ($this->isConnected()) {
-			return $this->_connection->selectDB($db);
-		}
-
-		return null;
-	}
-
-
-	/**
-	 * This function is called when a DB is created from within the ISPConfig3 interface.
-	 * We need to create the DB and allow all users to connect to it that are choosen.
-	 * Since MongoDB doesn't create a DB before any data is stored in it, it's important
-	 * to store the users so it contains data -> is created.
-	 *
-	 * @param string $event_name the name of the event (insert, update, delete)
-	 * @param array $data the event data (old and new)
-	 * @return only if something is wrong
-	 */
-	function db_insert($event_name, $data) {
-		global $app, $conf;
-
-		// beside checking for MongoDB we also check if the DB is active because only then we add users
-		// -> MongoDB needs users to create the DB
-		if ($data['new']['type'] == 'mongo' && $data['new']['active'] == 'y') {
-			if ($this->connect() === false) {
-				$app->log("Unable to connect to MongoDB: Connecting using connect() failed.", LOGLEVEL_ERROR);
-				return;
-			}
-
-			$db_user = $app->db->queryOneRecord("SELECT `database_user`, `database_password_mongo` FROM `web_database_user` WHERE `database_user_id` = '" . intval($data['new']['database_user_id']) . "'");
-			$db_ro_user = $app->db->queryOneRecord("SELECT `database_user`, `database_password_mongo` FROM `web_database_user` WHERE `database_user_id` = '" . intval($data['new']['database_ro_user_id']) . "'");
-
-			$user = $db_user['database_user'];
-			$password = $db_user['database_password_mongo'];
-
-			$ro_user = $db_ro_user['database_user'];
-			$ro_password = $db_ro_user['database_password_mongo'];
-
-			$db = $data['new']['database_name'];
-
-			if ((bool) $db_user) {
-			    if ($user == 'root') {
-				$app->log("User root not allowed for client databases", LOGLEVEL_WARNING);
-			    } else {
-				if (!$this->addUser($db, array(
-					'username' => $user,
-					'password' => $password,
-					'roles' => array(
-						"readWrite",
-						"dbAdmin"
-					)
-				))) {
-					$app->log("Error while adding user: ".$user." to DB: ".$db, LOGLEVEL_WARNING);
-				}
-			    }
-			}
-
-			if ($db_ro_user && $data['new']['database_user_id'] != $data['new']['database_ro_user_id']) {
-			    if ($user == 'root') {
-				$app->log("User root not allowed for client databases", LOGLEVEL_WARNING);
-			    } else {
-				if (!$this->addUser($db, array(
-					'username' => $ro_user,
-					'password' => $ro_password,
-					'roles' => array(
-						"read"
-					)
-				))) {
-					$app->log("Error while adding read-only user: ".$user." to DB: ".$db, LOGLEVEL_WARNING);
-				}
-			    }
-			}
-
-			$this->disconnect();
-		}
-	}
-
-	/**
-	 * This function is called when a DB is updated from within the ISPConfig interface.
-	 * Updating the DB needs a lot of changes. First, we need to recheck all users that
-	 * have permissions to access the DB. Maybe we also need to rename the DB and change
-	 * it's type (MySQL, MongoDB etc.)...hard work here :)
-	 *
-	 * @param string $event_name the name of the event (insert, update, delete)
-	 * @param array $data the event data (old and new)
-	 * @return only if something is wrong
-	 */
-	function db_update($event_name,$data) {
-		global $app, $conf;
-
-		if ($data['old']['active'] == 'n' && $data['new']['active'] == 'n') {
-			return;
-		}
-
-		// currently switching from MongoDB <-> MySQL isn't supported
-		if ($data['old']['type'] == 'mongo' && $data['new']['type'] == 'mongo') {
-			if ($this->connect() === false) {
-				$app->log("Unable to connect to MongoDB: Connecting using connect() failed.", LOGLEVEL_ERROR);
-				return;
-			}
-
-			$db_user = $app->db->queryOneRecord("SELECT `database_user`, `database_password_mongo` FROM `web_database_user` WHERE `database_user_id` = '" . intval($data['new']['database_user_id']) . "'");
-			$db_ro_user = $app->db->queryOneRecord("SELECT `database_user`, `database_password_mongo` FROM `web_database_user` WHERE `database_user_id` = '" . intval($data['new']['database_ro_user_id']) . "'");
-
-			$user = $db_user['database_user'];
-			$password = $db_user['database_password_mongo'];
-
-			$ro_user = $db_ro_user['database_user'];
-			$ro_password = $db_ro_user['database_password_mongo'];
-
-			$db = $data['new']['database_name'];
-
-			// create the database user if database was disabled before
-			if ($data['new']['active'] == 'y' && $data['old']['active'] == 'n') {
-				// since MongoDB creates DBs on-the-fly we can use the db_insert method which takes care of adding
-				// users to a given DB
-				$this->db_insert($event_name, $data);
-			} else if ($data['new']['active'] == 'n' && $data['old']['active'] == 'y') {
-				$users = $this->getUsers($db);
-
-				if ((bool) $users) {
-					foreach ($users as $user) {
-						$this->dropUser($user, $db);
-					}
-				}
-			} else {
-				// selected user has changed -> drop old one
-				if ($data['new']['database_user_id'] != $data['old']['database_user_id']) {
-					$old_db_user = $app->db->queryOneRecord("SELECT `database_user`, `database_password_mongo` FROM `web_database_user` WHERE `database_user_id` = '" . intval($data['old']['database_user_id']) . "'");
-
-					if ((bool) $old_db_user) {
-						if ($old_db_user['database_user'] == 'root') {
-							$app->log("User root not allowed for client databases", LOGLEVEL_WARNING);
-						} else {
-							$this->dropUser($old_db_user['database_user'], $db);
-						}
-					}
-				}
-
-				// selected read-only user has changed -> drop old one
-				if ($data['new']['database_ro_user_id'] != $data['old']['database_ro_user_id']) {
-					$old_db_user = $app->db->queryOneRecord("SELECT `database_user`, `database_password_mongo` FROM `web_database_user` WHERE `database_user_id` = '" . intval($data['old']['database_ro_user_id']) . "'");
-
-					if ((bool) $old_db_user) {
-						if ($old_db_user['database_user'] == 'root') {
-							$app->log("User root not allowed for client databases",LOGLEVEL_WARNING);
-						} else {
-							$this->dropUser($old_db_user['database_user'], $db);
-						}
-					}
-				}
-
-				// selected user has changed -> add new one
-				if ($data['new']['database_user_id'] != $data['old']['database_user_id']) {
-					if ((bool) $db_user) {
-						if ($user == 'root') {
-							$app->log("User root not allowed for client databases", LOGLEVEL_WARNING);
-						} else {
-							$this->addUser($db, array(
-								'username' => $user,
-								'password' => $password,
-								'roles' => array(
-									"readWrite",
-									"dbAdmin"
-								)
-							));
-						}
-					}
-				}
-
-				// selected read-only user has changed -> add new one
-				if ($data['new']['database_ro_user_id'] != $data['old']['database_ro_user_iduser_id']) {
-					if ((bool) $db_ro_user && $data['new']['database_user_id'] != $data['new']['database_ro_user_id']) {
-						if ($ro_user == 'root') {
-							$app->log("User root not allowed for client databases", LOGLEVEL_WARNING);
-						} else {
-							$this->addUser($db, array(
-								'username' => $ro_user,
-								'password' => $ro_password,
-								'roles' => array(
-									"read"
-								)
-							));
-						}
-					}
-				}
-
-				// renamed?
-				/*
-				if ($data['old']['database_name'] != $data['new']['database_name']) {
-					$old_name = $data['old']['database_name'];
-					$new_name = $data['new']['database_name'];
-
-					if ($this->renameDB($oldName, $newName)) {
-						$app->log("Renamed MongoDB database: ".$old_name." -> ".$new_name, LOGLEVEL_DEBUG);
-					} else {
-						$app->log("Renaming MongoDB database failed: ".$old_name." -> ".$new_name, LOGLEVEL_WARNING);
-					}
-				}
-				*/
-			}
-
-			// switching from MySQL <-> Mongo isn't supported
-			// no idea what we should do here...would be best to permit in interface?
-
-			// remote access isn't supported by MongoDB (limiting to IP),
-			// we therefor don't listen for it's changes
-		}
-
-		$this->disconnect();
-	}
-
-	/**
-	 * This function is called when a DB is deleted from within the ISPConfig interface.
-	 * All we need to do is to delete the database.
-	 *
-	 * @param string $event_name the name of the event (insert, update, delete)
-	 * @param array $data the event data (old and new)
-	 * @return only if something is wrong
-	 */
-	function db_delete($event_name,$data) {
-		global $app, $conf;
-
-		if ($data['old']['type'] == 'mongo') {
-			if ($this->connect() === false) {
-				$app->log("Unable to connect to MongoDB: Connecting using connect() failed.", LOGLEVEL_ERROR);
-				return;
-			}
-
-			$db_to_drop = $data['old']['database_name'];
-
-			if ($this->dropDB($db_to_drop)) {
-				$app->log("Dropping MongoDB database: ".$db_to_drop, LOGLEVEL_DEBUG);
-			} else {
-				$app->log("Error while dropping MongoDB database: ".$db_to_drop, LOGLEVEL_WARNING);
-			}
-
-			$this->disconnect();
-		}
-	}
-
-
-	/**
-	 * This function is called when a user is inserted from within the ISPConfig interface.
-	 * Since users are separated from databases we don't do anything here.
-	 * As soon as an user is associated to a DB, we add him there.
-	 *
-	 * @param string $event_name the name of the event (insert, update, delete)
-	 * @param array $data the event data (old and new)
-	 */
-	function db_user_insert($event_name,$data) {}
-
-	/**
-	 * This function is called when a user is updated from within the ISPConfig interface.
-	 * The only thing we need to listen for here are password changes.
-	 * We than need to change those in all databases the user uses.
-	 *
-	 * @param string $event_name the name of the event (insert, update, delete)
-	 * @param array $data the event data (old and new)
-	 * @return only if something is wrong
-	 */
-	function db_user_update($event_name,$data) {
-		global $app, $conf;
-
-		if ($data['old']['database_user'] == $data['new']['database_user']
-		    && ($data['old']['database_password'] == $data['new']['database_password']
-		    || $data['new']['database_password'] == '')) {
-		    return;
-		}
-
-		if ($this->connect() === false) {
-			$app->log("Unable to connect to MongoDB: Connecting using connect() failed.", LOGLEVEL_ERROR);
-			return;
-		}
-
-		if ($data['old']['database_user'] != $data['new']['database_user']) {
-			// username has changed
-			$dbs = $this->getDBs();
-
-			if ((bool) $dbs) {
-				foreach ($dbs as $db) {
-					if ($this->userExists($db, $data['old']['database_user'])) {
-						if (!$this->userExists($db, $data['new']['database_user'])) {
-							$user = $this->getUser($db, $data['old']['database_user']);
-
-							if ($this->dropUser($data['old']['database_user'], $db)) {
-								if ($this->addUser($db, array(
-									'username' => $data['new']['database_user'],
-									'password' => md5($data['new']['database_password_mongo']),
-									'roles' => $user['roles']
-								))) {
-									$app->log("Created user: ".$data['new']['database_user']." in DB: ".$db, LOGLEVEL_DEBUG);
-								} else {
-									$app->log("Couldn't create user: ".$data['new']['database_user']." in DB: ".$db, LOGLEVEL_WARNING);
-								}
-							} else {
-								$app->log("Couldn't drop user: ".$data['old']['database_user']." in DB: ".$db, LOGLEVEL_WARNING);
-							}
-						} else {
-							$app->log("User: ".$data['new']['database_user']." already exists in DB: ".$db, LOGLEVEL_WARNING);
-						}
-					}
-				}
-			}
-		}
-
-		if ($data['old']['database_password'] != $data['new']['database_password']
-			|| $data['old']['database_user'] != $data['new']['database_user']) {
-			// password only has changed
-			$dbs = $this->getDBs();
-
-			if ((bool) $dbs) {
-				foreach ($dbs as $db) {
-					if ($this->userExists($db, $data['new']['database_user'])) {
-						if ($this->changePassword($db, $data['new']['database_user'], md5($data['new']['database_password_mongo']))) {
-							$app->log("Changed user's: ".$data['new']['database_user']." password in DB: ".$db, LOGLEVEL_DEBUG);
-						} else {
-							$app->log("Couldn't change user's: ".$data['new']['database_user']." password in DB: ".$db, LOGLEVEL_WARNING);
-						}
-					}
-				}
-			}
-		}
-
-		$this->disconnect();
-	}
-
-	/**
-	 * This function is called when a user is deleted from within the ISPConfig interface.
-	 * Since MongoDB uses per-DB user management, we have to find every database where the user is
-	 * activated and delete him there.
-	 *
-	 * @param string $event_name the name of the event (insert, update, delete)
-	 * @param array $data the event data (old and new)
-	 * @return only if something is wrong
-	 */
-	function db_user_delete($event_name, $data) {
-		global $app, $conf;
-
-		if ($this->connect() === false) {
-			$app->log("Unable to connect to MongoDB: Connecting using connect() failed.", LOGLEVEL_ERROR);
-			return;
-		}
-
-		if ($this->dropUser($data['old']['database_user']) === true) {
-			$app->log("Dropped MongoDB user: ".$data['old']['database_user'], LOGLEVEL_DEBUG);
-		} else {
-			$app->log("Error while dropping MongoDB user: ".$data['old']['database_user'], LOGLEVEL_WARNING);
-		}
-
-		$this->disconnect();
-	}
-
-}
diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php
index 181eedb190d8824b916e82d6e663771fa00ad93a..62beafb4276cb806bf581bf379e69c4223905b06 100644
--- a/server/plugins-available/nginx_plugin.inc.php
+++ b/server/plugins-available/nginx_plugin.inc.php
@@ -170,15 +170,15 @@ class nginx_plugin {
 
 			$rand_file = escapeshellcmd($rand_file);
 			$key_file = escapeshellcmd($key_file);
-			if(substr($domain, 0, 2) == '*.' && strpos($key_file, '/ssl/\*.') != false) $key_file = str_replace('/ssl/\*.', '/ssl/*.', $key_file); // wildcard certificate
+			if(substr($domain, 0, 2) == '*.' && strpos($key_file, '/ssl/\*.') !== false) $key_file = str_replace('/ssl/\*.', '/ssl/*.', $key_file); // wildcard certificate
 			$key_file2 = escapeshellcmd($key_file2);
-			if(substr($domain, 0, 2) == '*.' && strpos($key_file2, '/ssl/\*.') != false) $key_file2 = str_replace('/ssl/\*.', '/ssl/*.', $key_file2); // wildcard certificate
+			if(substr($domain, 0, 2) == '*.' && strpos($key_file2, '/ssl/\*.') !== false) $key_file2 = str_replace('/ssl/\*.', '/ssl/*.', $key_file2); // wildcard certificate
 			$ssl_days = 3650;
 			$csr_file = escapeshellcmd($csr_file);
-			if(substr($domain, 0, 2) == '*.' && strpos($csr_file, '/ssl/\*.') != false) $csr_file = str_replace('/ssl/\*.', '/ssl/*.', $csr_file); // wildcard certificate
+			if(substr($domain, 0, 2) == '*.' && strpos($csr_file, '/ssl/\*.') !== false) $csr_file = str_replace('/ssl/\*.', '/ssl/*.', $csr_file); // wildcard certificate
 			$config_file = escapeshellcmd($ssl_cnf_file);
 			$crt_file = escapeshellcmd($crt_file);
-			if(substr($domain, 0, 2) == '*.' && strpos($crt_file, '/ssl/\*.') != false) $crt_file = str_replace('/ssl/\*.', '/ssl/*.', $crt_file); // wildcard certificate
+			if(substr($domain, 0, 2) == '*.' && strpos($crt_file, '/ssl/\*.') !== false) $crt_file = str_replace('/ssl/\*.', '/ssl/*.', $crt_file); // wildcard certificate
 
 			if(is_file($ssl_cnf_file) && !is_link($ssl_cnf_file)) {
 				
diff --git a/server/plugins-available/webserver_plugin.inc.php b/server/plugins-available/webserver_plugin.inc.php
deleted file mode 100644
index 0fcdf13c16144561540590183d8a8c28f8cc0df8..0000000000000000000000000000000000000000
--- a/server/plugins-available/webserver_plugin.inc.php
+++ /dev/null
@@ -1,166 +0,0 @@
-<?php
-
-/*
-  Copyright (c) 2007-2011, Till Brehm, projektfarm Gmbh and Oliver Vogel www.muv.com
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without modification,
-  are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice,
-  this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above copyright notice,
-  this list of conditions and the following disclaimer in the documentation
-  and/or other materials provided with the distribution.
- * Neither the name of ISPConfig nor the names of its contributors
-  may be used to endorse or promote products derived from this software without
-  specific prior written permission.
-
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
-  OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
-  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-class webserver_plugin {
-
-	var $plugin_name = 'webserver_plugin';
-	var $class_name = 'webserver_plugin';
-	
-	/**
-	 * This function is called during ispconfig installation to determine
-	 * if a symlink shall be created for this plugin.
-	 */
-	public function onInstall() {
-		global $conf;
-        
-		if($conf['services']['web'] == true) {
-			return true;
-		} else {
-			return false;
-		}
-	}
-
-	/**
-	 * This function is called when the module is loaded
-	 */
-	public function onLoad() {
-		global $app;
-
-        $app->plugins->registerAction('server_plugins_loaded', $this->plugin_name, 'check_phpini_changes');
-	}
-
-	/**
-	 * This function is called when a change in one of the registered tables is detected.
-	 * The function then raises the events for the plugins.
-	 */
-	public function process($tablename, $action, $data) {
-		// not needed
-	}
-
-	/**
-	 * The method checks for a change of a php.ini file
-	 */
-	public function check_phpini_changes() {
-		global $app, $conf;
-		
-        //** check if the main php.ini of the system changed so we need to regenerate all custom php.inis
-        $app->uses('getconf');
-        
-        //** files to check
-        $check_files = array();
-        
-        $web_config = $app->getconf->get_server_config($conf['server_id'], 'web');
-        $fastcgi_config = $app->getconf->get_server_config($conf['server_id'], 'fastcgi');
-        
-        if($web_config['php_ini_check_minutes'] == 0 || @date('i') % $web_config['php_ini_check_minutes'] != 0) {
-            $app->log('Info: php.ini change checking not enabled or not in this minute: ' . $web_config['php_ini_check_minutes'],LOGLEVEL_DEBUG);
-            return; // do not process
-        }
-        
-        //** add default php.ini files to check
-        $check_files[] = array('file' => $web_config['php_ini_path_apache'],
-                               'mode' => 'mod',
-                               'php_version' => ''); // default;
-        
-        $check_files[] = array('file' => $web_config['php_ini_path_cgi'],
-                               'mode' => '', // all but 'mod' and 'fast-cgi'
-                               'php_version' => ''); // default;
-        
-        if($fastcgi_config["fastcgi_phpini_path"] && $fastcgi_config["fastcgi_phpini_path"] != $web_config['php_ini_path_cgi']) {
-            $check_files[] = array('file' => $fastcgi_config["fastcgi_phpini_path"],
-                                   'mode' => 'fast-cgi',
-                                   'php_version' => ''); // default;
-        } else {
-            $check_files[] = array('file' => $web_config['php_ini_path_cgi'],
-                                   'mode' => 'fast-cgi', // all but 'mod'
-                                   'php_version' => ''); // default;
-        }
-        
-        
-        //** read additional php versions of this server
-        $php_versions = $app->db->queryAllRecords('SELECT server_php_id, php_fastcgi_ini_dir, php_fpm_ini_dir FROM server_php WHERE server_id = ' . intval($conf['server_id']));
-        foreach($php_versions as $php) {
-            if($php['php_fastcgi_ini_dir'] && $php['php_fastcgi_ini_dir'] . '/php.ini' != $web_config['php_ini_path_cgi']) {
-                $check_files[] = array('file' => $php['php_fastcgi_ini_dir'] . '/php.ini',
-                                       'mode' => 'fast-cgi',
-                                       'php_version' => $php['php_fastcgi_ini_dir']);
-            } elseif($php['php_fpm_ini_dir'] && $php['php_fpm_ini_dir'] . '/php.ini' != $web_config['php_ini_path_cgi']) {
-                $check_files[] = array('file' => $php['php_fpm_ini_dir'] . '/php.ini',
-                                       'mode' => 'php-fpm',
-                                       'php_version' => $php['php_fpm_ini_dir']);
-            }
-        }
-        unset($php_versions);
-        
-        //** read md5sum status file
-        $new_php_ini_md5 = array();
-        $php_ini_md5 = array();
-        $php_ini_changed = false;
-        $rewrite_ini_files = false;
-        
-        if(file_exists(SCRIPT_PATH . '/temp/php.ini.md5sum')) {
-            $rewrite_ini_files = true;
-            $php_ini_md5 = unserialize(base64_decode(trim($app->system->file_get_contents(SCRIPT_PATH . '/temp/php.ini.md5sum'))));
-        }
-        if(!is_array($php_ini_md5)) $php_ini_md5 = array();
-        
-        $processed = array();
-        foreach($check_files as $file) {
-            $file_path = $file['file'];
-            if(substr($file_path, -8) !== '/php.ini') $file_path .= (substr($file_path, -1) !== '/' ? '/' : '') . 'php.ini';
-            if(!file_exists($file_path)) continue;
-            
-            //** check if this php.ini file was already processed (if additional php version uses same php.ini)
-            $ident = $file_path . '::' . $file['mode'] . '::' . $file['php_version'];
-            if(in_array($ident, $processed) == true) continue;
-            $processed[] = $ident;
-            
-            //** check if md5sum of file changed
-            $file_md5 = md5_file($file_path);
-            if(array_key_exists($file_path, $php_ini_md5) == false || $php_ini_md5[$file_path] != $file_md5) {
-                $php_ini_changed = true;
-                
-                $app->log('Info: PHP.ini changed: ' . $file_path . ', mode ' . $file['mode'] . ' vers ' . $file['php_version'] . '.',LOGLEVEL_DEBUG);
-                // raise action for this file
-                if($rewrite_ini_files == true) $app->plugins->raiseAction('php_ini_changed', $file);
-            }
-            
-            $new_php_ini_md5[$file_path] = $file_md5;
-        }
-        
-        //** write new md5 sums if something changed
-        if($php_ini_changed == true) $app->system->file_put_contents(SCRIPT_PATH . '/temp/php.ini.md5sum', base64_encode(serialize($new_php_ini_md5)));
-        unset($new_php_ini_md5);
-        unset($php_ini_md5);
-        unset($processed);
-	}
-}
-
-?>
diff --git a/server/plugins-enabled/empty.dir b/server/plugins-enabled/empty.dir
new file mode 100644
index 0000000000000000000000000000000000000000..95ba9ef37cca69318bcba17e67cd44ae84bd41e1
--- /dev/null
+++ b/server/plugins-enabled/empty.dir
@@ -0,0 +1 @@
+This empty directory is needed by ISPConfig.
diff --git a/server/scripts/ispconfig_patch b/server/scripts/ispconfig_patch
new file mode 100644
index 0000000000000000000000000000000000000000..9376ba19fe8584c7ba11a1280041b9d22172d7f8
--- /dev/null
+++ b/server/scripts/ispconfig_patch
@@ -0,0 +1,142 @@
+#!/usr/bin/php
+<?php
+
+/*
+Copyright (c) 2013, Marius Cramer, pixcept KG
+ISPConfig Copyright (c) 2009-2013, Till Brehm, projektfarm Gmbh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * Neither the name of ISPConfig nor the names of its contributors
+      may be used to endorse or promote products derived from this software without
+      specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+function sread() {
+    $input = fgets(STDIN);
+    return rtrim($input);
+}
+
+function swrite($text = '') {
+	echo $text;
+}
+
+function swriteln($text = '') {
+	echo $text."\n";
+}
+
+function simple_query($query, $answers, $default)
+{		
+		$finished = false;
+		do {
+			if(is_array($answers)) {
+                $answers_str = implode(',', $answers);
+                swrite($query.' ('.$answers_str.') ['.$default.']: ');
+            } else {
+                swrite($query.': ');
+            }
+			$input = sread();
+			
+			//* Stop the installation
+			if($input == 'quit') {
+				swriteln("Patch terminated by user.\n");
+				die();
+			}
+			
+			//* Select the default
+			if($input == '') {
+				$answer = $default;
+				$finished = true;
+			}
+			
+            //* Set answer id valid
+			if(!is_array($answers) || in_array($input, $answers)) {
+				$answer = $input;
+				$finished = true;
+			}
+			
+		} while ($finished == false);
+		swriteln();
+		return $answer;
+}
+
+function is_installed($appname) {
+	exec('which '.escapeshellcmd($appname).' 2> /dev/null',$out,$returncode);
+	if(isset($out[0]) && stristr($out[0],$appname) && $returncode == 0) {
+		return true;
+	} else {
+		return false;
+	}
+}
+
+echo "\n\n".str_repeat('-',80)."\n";
+echo " _____ ___________   _____              __ _       
+|_   _/  ___| ___ \ /  __ \            / _(_)      
+  | | \ `--.| |_/ / | /  \/ ___  _ __ | |_ _  __ _ 
+  | |  `--. \  __/  | |    / _ \| '_ \|  _| |/ _` |
+ _| |_/\__/ / |     | \__/\ (_) | | | | | | | (_| |
+ \___/\____/\_|      \____/\___/|_| |_|_| |_|\__, |
+                                              __/ |
+                                             |___/ ";
+echo "\n".str_repeat('-',80)."\n";
+echo "\n\n>> Patch tool  \n\n";
+echo "Please enter the patch id that you want to be applied to your ISPConfig installation.\nPlease be aware that we take NO responsibility that this will work for you.\nOnly use patches if you know what you are doing.\n\n";
+
+if(!is_installed('patch')) {
+	swriteln("The program 'patch' is missing on your server. Please install it and try again.");
+}
+
+$patch_id = simple_query('Enter patch id', false, '');
+if($patch_id == '') {
+    swriteln("Patch terminated by user.\n");
+    die();
+} elseif(preg_match('/^[a-zA-Z0-9_\-]+$/', $patch_id) == false) {
+    swriteln("Invalid patch id.\n");
+    die();
+}
+
+$patch_data = @file_get_contents('http://ispconfig.org/downloads/patches/' . $patch_id . '.diff');
+if(!$patch_data) {
+    swriteln("Patch with id " . $patch_id . " does not exist.\n");
+    die();
+}
+
+$patch_text = @file_get_contents('http://ispconfig.org/downloads/patches/' . $patch_id . '.txt');
+if($patch_text) {
+    $ok = simple_query("Patch description:\n".str_repeat("-", 80)."\n".$patch_text."\n".str_repeat("-", 80)."\nDo you really want to apply this patch now?", array('y','n'), 'y');
+    if($ok != 'y') {
+        swriteln("Patch terminated by user.\n");
+        die();
+    }
+}
+
+$temp_file = tempnam(sys_get_temp_dir(), 'ispc');
+
+file_put_contents($temp_file, $patch_data);
+chdir('/usr/local/ispconfig');
+
+passthru('patch -p0 < ' . escapeshellarg($temp_file));
+
+unlink($temp_file);
+
+exit;
+
+?>
\ No newline at end of file
diff --git a/server/server.php b/server/server.php
index 2ead4904321edc18ad2ad9e7cbf864a4d1a968e5..3415f6e6b933b8ead99434e0c483809df75f755e 100644
--- a/server/server.php
+++ b/server/server.php
@@ -170,9 +170,6 @@ if ($app->db->connect_error == NULL && $app->dbmaster->connect_error == NULL) {
 	$app->modules->loadModules('all');
 	//** Load the plugins that are in the plugins-enabled folder
 	$app->plugins->loadPlugins('all');
-	
-	$app->plugins->raiseAction('server_plugins_loaded', '');
-	
 	if ($tmp_num_records > 0) {
 		$app->log("Found $tmp_num_records changes, starting update process.", LOGLEVEL_DEBUG);
 		//** Go through the sys_datalog table and call the processing functions
diff --git a/server/temp/empty.dir b/server/temp/empty.dir
new file mode 100644
index 0000000000000000000000000000000000000000..95ba9ef37cca69318bcba17e67cd44ae84bd41e1
--- /dev/null
+++ b/server/temp/empty.dir
@@ -0,0 +1 @@
+This empty directory is needed by ISPConfig.