From 992797f73c92b413a7fecff02c27c61b7db55b43 Mon Sep 17 00:00:00 2001
From: Marius Cramer <m.cramer@pixcept.de>
Date: Mon, 14 Oct 2013 09:54:49 -0400
Subject: [PATCH] Copied files from svn 3.0.5 stable branch (git migration)

---
 interface/web/sites/lib/lang/de_webdav_user_list.lng                            |    1 
 interface/web/mail/lib/lang/de_spamfilter_whitelist_list.lng                    |    1 
 interface/web/dns/lib/lang/el_dns_mx.lng                                        |    2 
 interface/web/admin/lib/lang/cz_language_add.lng                                |    1 
 interface/web/monitor/lib/module.conf.php                                       |    7 
 interface/web/admin/lib/lang/ja_language_import.lng                             |    1 
 interface/web/mail/lib/lang/el_mail_transport.lng                               |    2 
 interface/lib/classes/plugin_backuplist.inc.php                                 |    7 
 interface/web/login/lib/lang/de.lng                                             |    1 
 interface/web/mail/lib/lang/cz_mail_relay_recipient_list.lng                    |    1 
 interface/web/client/lib/lang/ja_reseller.lng                                   |    5 
 interface/web/mail/lib/lang/cz_mail_forward_list.lng                            |    1 
 interface/web/admin/lib/lang/cz_software_repo.lng                               |    1 
 interface/web/admin/lib/lang/tr_software_package.lng                            |    8 
 interface/web/client/lib/lang/cz_domain_list.lng                                |    1 
 interface/web/dns/lib/lang/el_dns_import.lng                                    |   20 
 interface/web/admin/lib/lang/cz_software_package_install.lng                    |    1 
 interface/ssl/empty.dir                                                         |    1 
 interface/web/mail/lib/lang/de_spamfilter_config.lng                            |    1 
 interface/web/sites/lib/lang/se_database_list.lng                               |    1 
 interface/web/dns/lib/lang/de_dns_aaaa.lng                                      |    1 
 interface/web/mail/lib/lang/de_mail_transport.lng                               |    1 
 interface/web/dashboard/lib/lang/pl_dashlet_mailquota.lng                       |   14 
 interface/web/designer/lib/lang/cz_form_list.lng                                |    1 
 install/sql/incremental/upd_0057.sql                                            |    7 
 interface/web/admin/lib/lang/fi_software_package.lng                            |    8 
 interface/web/admin/templates/language_import.htm                               |    2 
 server/server.php                                                               |    3 
 install/tpl/system.ini.master                                                   |    1 
 interface/web/client/lib/lang/tr_reseller.lng                                   |    5 
 interface/web/tools/lib/lang/el_usersettings.lng                                |   10 
 interface/web/client/lib/lang/ar_reseller.lng                                   |    5 
 interface/web/sites/lib/lang/de_webdav_user.lng                                 |    3 
 interface/web/monitor/lib/lang/cz.lng                                           |    7 
 interface/web/admin/templates/server_config_server_edit.htm                     |   29 
 interface/web/dns/lib/lang/de_dns_mx.lng                                        |    1 
 interface/web/tools/lib/lang/el_import_ispconfig.lng                            |   42 
 interface/web/client/lib/lang/el_domain_list.lng                                |    2 
 interface/web/designer/lib/lang/cz_module_nav_edit.lng                          |    1 
 server/conf-custom/install/empty.dir                                            |    1 
 interface/web/help/lib/lang/cz_help_faq_list.lng                                |    3 
 interface/web/mail/lib/lang/cz_mail_domain_admin_list.lng                       |    1 
 interface/web/tools/lib/lang/de_interface.lng                                   |    1 
 interface/web/admin/lib/lang/br_remote_action.lng                               |    2 
 server/lib/classes/aps_installer.inc.php                                        | 1440 ++--
 interface/web/sites/templates/database_list.htm                                 |    7 
 interface/web/sites/lib/lang/fi_database_admin_list.lng                         |    1 
 interface/web/admin/lib/lang/de_tpl_default_admin.lng                           |    1 
 interface/web/sites/lib/lang/id_database_admin_list.lng                         |    1 
 interface/web/sites/templates/aps_packagedetails_show.htm                       |  280 
 interface/web/vm/lib/lang/de_openvz_action.lng                                  |    1 
 interface/web/admin/lib/lang/en_server_config.lng                               |    9 
 interface/web/dns/lib/lang/el.lng                                               |    4 
 interface/web/dashboard/lib/lang/bg_dashlet_quota.lng                           |   14 
 interface/web/admin/lib/lang/ro_remote_action.lng                               |    2 
 interface/web/admin/lib/lang/el.lng                                             |   12 
 interface/web/dashboard/lib/lang/el_dashlet_mailquota.lng                       |   14 
 interface/web/mail/lib/lang/el_mail_user.lng                                    |   18 
 interface/web/admin/lib/lang/it_remote_action.lng                               |    2 
 interface/web/mail/lib/lang/cz_mail_get.lng                                     |    1 
 interface/web/admin/lib/lang/cz_directive_snippets_list.lng                     |    1 
 interface/web/admin/lib/lang/de_server.lng                                      |    1 
 interface/web/admin/lib/lang/de_language_add.lng                                |    3 
 interface/web/dns/lib/lang/cz_dns_mx.lng                                        |    3 
 interface/web/sites/lib/lang/pl_database_admin_list.lng                         |    1 
 interface/web/dashboard/lib/lang/hu_dashlet_mailquota.lng                       |   14 
 interface/web/mail/lib/lang/de_user_quota_stats_list.lng                        |    1 
 interface/web/admin/lib/lang/de_package_install.lng                             |    1 
 interface/web/admin/lib/lang/hu_software_package.lng                            |    8 
 interface/web/dashboard/form/empty.dir                                          |    1 
 interface/web/mailuser/lib/lang/de_mail_user_autoresponder.lng                  |    1 
 interface/web/admin/lib/lang/cz_login_as.lng                                    |    1 
 interface/web/admin/lib/lang/el_server_config.lng                               |   72 
 interface/web/mailuser/lib/lang/de_mail_user_filter_list.lng                    |    1 
 interface/web/sites/lib/lang/de.lng                                             |    9 
 interface/web/strengthmeter/lib/lang/de_strengthmeter.lng                       |    1 
 interface/web/client/lib/lang/it_client.lng                                     |    5 
 interface/web/vm/lib/lang/cz_openvz_template.lng                                |    1 
 interface/web/sites/web_vhost_subdomain_edit.php                                |  105 
 interface/web/monitor/lib/lang/el_datalog_list.lng                              |   10 
 interface/web/client/lib/lang/pl_reseller.lng                                   |    5 
 interface/web/designer/lib/lang/cz_form_show.lng                                |    3 
 interface/web/mail/lib/lang/cz_mail_forward.lng                                 |    3 
 interface/web/sites/lib/lang/cz_shell_user_list.lng                             |    1 
 interface/web/mail/lib/lang/cz_spamfilter_config_list.lng                       |    1 
 interface/web/sites/lib/lang/de_database_user.lng                               |    5 
 interface/web/dashboard/lib/lang/de_dashlet_limits.lng                          |    3 
 interface/web/mail/lib/lang/de_mail_blacklist.lng                               |    1 
 interface/web/mail/lib/lang/de_mail_content_filter.lng                          |    1 
 interface/lib/classes/custom_datasource.inc.php                                 |    3 
 interface/web/sites/lib/lang/id_database_list.lng                               |    1 
 interface/web/admin/lib/lang/tr_language_import.lng                             |    1 
 interface/web/mail/lib/lang/el_mail_alias.lng                                   |    4 
 interface/web/dashboard/lib/lang/pt_dashlet_mailquota.lng                       |   14 
 interface/web/sites/lib/lang/sk_database_list.lng                               |    1 
 interface/web/dashboard/lib/lang/el_dashlet_limits.lng                          |    6 
 interface/web/client/lib/lang/el_client_template.lng                            |   38 
 interface/web/themes/default-304/css/screen/redmond/jquery-ui-1.8.16.custom.css |  886 +-
 interface/web/admin/lib/lang/en_language_import.lng                             |    1 
 interface/web/sites/lib/lang/el_ftp_user.lng                                    |   14 
 interface/web/sites/lib/lang/el_user_quota_stats_list.lng                       |    2 
 interface/web/admin/lib/lang/de_groups.lng                                      |    1 
 interface/web/dns/lib/lang/cz_dns_txt.lng                                       |    1 
 interface/web/admin/lib/lang/cz_server_ip.lng                                   |    1 
 interface/web/sites/lib/lang/hu_database_list.lng                               |    1 
 interface/web/admin/lib/lang/el_users_list.lng                                  |    2 
 interface/web/designer/lib/lang/cz_form_edit.lng                                |    1 
 interface/web/dns/lib/lang/de_dns_rp.lng                                        |    1 
 interface/web/tools/lib/lang/cz.lng                                             |    1 
 interface/web/admin/lib/lang/cz_directive_snippets.lng                          |    1 
 interface/lib/shelluser_blacklist                                               |    3 
 interface/web/client/lib/lang/cz_client_del.lng                                 |    3 
 interface/web/sites/lib/lang/cz_ftp_user_list.lng                               |    1 
 install/sql/incremental/upd_0049.sql                                            |    3 
 interface/web/admin/lib/lang/ru_remote_action.lng                               |    2 
 interface/web/mail/lib/lang/de_spamfilter_users_list.lng                        |    1 
 interface/web/dns/lib/lang/de_dns_txt.lng                                       |    1 
 interface/web/admin/lib/lang/hr_language_import.lng                             |    1 
 interface/web/mailuser/lib/lang/cz_mail_user_autoresponder.lng                  |    1 
 interface/web/sites/aps_installedpackages_list.php                              |  284 
 interface/web/admin/lib/lang/de_software_repo.lng                               |    5 
 interface/web/dns/lib/lang/de_dns_wizard.lng                                    |    1 
 interface/web/dashboard/lib/lang/de.lng                                         |    1 
 interface/web/sites/aps_install_package.php                                     |  420 
 interface/web/mail/lib/lang/el_spamfilter_users.lng                             |    4 
 interface/web/sites/lib/lang/de_ftp_user_list.lng                               |    1 
 install/sql/incremental/upd_0055.sql                                            |    4 
 interface/web/sites/lib/lang/ja_database_admin_list.lng                         |    1 
 interface/web/sites/lib/lang/de_web_subdomain_list.lng                          |    1 
 interface/web/sites/lib/lang/cz_database_user_admin_list.lng                    |    1 
 interface/web/admin/lib/lang/de_server_config_list.lng                          |    1 
 interface/web/dns/lib/lang/cz_dns_hinfo.lng                                     |    1 
 interface/web/admin/lib/lang/de_remote_user.lng                                 |   29 
 interface/web/mailuser/lib/lang/el_mail_user_autoresponder.lng                  |   22 
 interface/web/mailuser/lib/lang/el_mail_user_filter.lng                         |   36 
 interface/web/sites/lib/lang/en_aps_update_packagelist.lng                      |   12 
 interface/web/sites/lib/lang/de_aps_update_packagelist.lng                      |    3 
 interface/web/mail/lib/lang/cz_mail_aliasdomain_list.lng                        |    1 
 interface/web/client/lib/lang/cz_client_circle.lng                              |    1 
 interface/web/admin/form/system_config.tform.php                                |   36 
 interface/web/mail/lib/lang/de_mail_user.lng                                    |    1 
 interface/web/sites/lib/lang/de_web_domain_list.lng                             |    1 
 interface/web/admin/lib/lang/fr_language_import.lng                             |    1 
 interface/web/admin/lib/lang/fr_system_config.lng                               |    7 
 interface/web/themes/default-304/css/screen/tipsy.css                           |   50 
 interface/web/sites/lib/lang/de_web_domain_admin_list.lng                       |    1 
 interface/web/mail/lib/lang/cz.lng                                              |    3 
 interface/web/admin/lib/lang/ja_remote_action.lng                               |    2 
 server/conf/nginx_vhost.conf.master                                             |    2 
 interface/web/mail/lib/lang/el_mail_spamfilter.lng                              |    6 
 interface/web/mail/lib/lang/cz_spamfilter_config.lng                            |    1 
 interface/web/tools/lib/lang/cz_import_vpopmail.lng                             |    8 
 interface/web/sites/lib/lang/es_database_admin_list.lng                         |    1 
 interface/web/sites/lib/lang/tr_web_domain.lng                                  |    1 
 interface/web/client/lib/lang/de_client_template_list.lng                       |    1 
 interface/web/tools/import_plesk.php                                            |  243 
 interface/web/sites/lib/lang/cz_database_user.lng                               |    3 
 interface/web/dns/lib/lang/de_dns_slave_list.lng                                |    1 
 interface/web/admin/lib/lang/el_server_php_list.lng                             |    8 
 interface/web/sites/lib/lang/el_web_sites_stats_list.lng                        |    2 
 interface/web/designer/lib/lang/de_module_edit.lng                              |    1 
 interface/web/sites/lib/lang/ar_database_admin_list.lng                         |    1 
 interface/web/mail/lib/lang/de_mail_forward_list.lng                            |    1 
 interface/web/mailuser/lib/lang/el.lng                                          |   14 
 interface/web/sites/lib/lang/cz_database.lng                                    |    3 
 interface/web/sites/lib/lang/br_web_domain.lng                                  |    1 
 interface/web/sites/lib/lang/hr_web_domain.lng                                  |    1 
 interface/web/dns/lib/lang/el_dns_slave.lng                                     |    2 
 interface/web/mail/lib/lang/de_mail_aliasdomain.lng                             |    1 
 interface/web/sites/lib/lang/de_aps.lng                                         |    3 
 interface/web/sites/lib/lang/ru_database_admin_list.lng                         |    1 
 interface/web/admin/lib/lang/el_directive_snippets_list.lng                     |    8 
 interface/web/admin/lib/lang/de_directive_snippets_list.lng                     |    1 
 interface/web/client/lib/lang/pt_client.lng                                     |    5 
 interface/web/sites/lib/lang/el_aps_packages_list.lng                           |   12 
 interface/web/admin/lib/lang/fi_remote_action.lng                               |    2 
 interface/web/sites/lib/lang/cz_web_backup_list.lng                             |    1 
 interface/web/sites/lib/lang/cz_web_folder_user.lng                             |    5 
 interface/web/vm/lib/lang/de_openvz_template_list.lng                           |    1 
 interface/web/admin/lib/lang/de_software_repo_list.lng                          |    5 
 interface/web/dns/lib/lang/cz_dns_rp.lng                                        |    1 
 interface/web/admin/lib/lang/cz_software_update_list.lng                        |    1 
 interface/web/admin/lib/lang/br_language_import.lng                             |    1 
 interface/web/mail/lib/lang/cz_spamfilter_whitelist_list.lng                    |    1 
 interface/web/vm/lib/lang/el_openvz_ip_list.lng                                 |    2 
 interface/web/help/lib/lang/de_help_faq_list.lng                                |    1 
 interface/web/sites/lib/lang/cz_web_aliasdomain_list.lng                        |    1 
 interface/web/designer/lib/lang/de_module_show.lng                              |    1 
 interface/web/sites/lib/lang/el_database_admin_list.lng                         |    1 
 interface/web/mail/lib/lang/de_spamfilter_blacklist.lng                         |    1 
 interface/web/dns/form/dns_rp.tform.php                                         |    8 
 interface/web/dns/lib/lang/de_dns_a.lng                                         |    1 
 interface/web/admin/lib/menu.d/tpl_default.menu.php                             |   30 
 server/conf-custom/error/empty.dir                                              |    1 
 interface/web/sites/lib/lang/cz_cron_list.lng                                   |    1 
 interface/lib/classes/idn/empty.dir                                             |    1 
 interface/web/dns/lib/lang/cz_dns_a_list.lng                                    |    1 
 interface/web/admin/lib/lang/tr_system_config.lng                               |    7 
 interface/web/admin/lib/lang/hr_system_config.lng                               |    7 
 interface/web/admin/lib/lang/el_software_package_list.lng                       |    4 
 interface/web/sites/lib/lang/de_web_sites_stats_list.lng                        |   11 
 interface/web/mail/form/mail_user.tform.php                                     |  219 
 interface/web/tools/list/empty.dir                                              |    1 
 interface/web/tools/lib/lang/el.lng                                             |    8 
 interface/lib/lang/cz.lng                                                       |    9 
 interface/web/admin/lib/lang/se_language_import.lng                             |    1 
 interface/web/mail/lib/lang/de_mail_domain_catchall_list.lng                    |    1 
 interface/web/sites/lib/lang/el_aps.lng                                         |  110 
 interface/web/sites/lib/lang/fr_database_admin_list.lng                         |    1 
 interface/web/admin/lib/lang/br_system_config.lng                               |    7 
 interface/web/designer/lib/lang/de_module_nav_item_edit.lng                     |    1 
 interface/web/sites/lib/lang/fi_web_domain.lng                                  |    1 
 interface/web/dns/lib/lang/de_dns_srv.lng                                       |    1 
 interface/web/tools/lib/lang/cz_index.lng                                       |    1 
 interface/web/dashboard/lib/lang/fr_dashlet_quota.lng                           |   14 
 interface/web/sites/lib/lang/el_web_domain.lng                                  |   41 
 interface/web/dashboard/lib/lang/tr_dashlet_quota.lng                           |   14 
 interface/web/help/lib/lang/cz_help_faq_sections_list.lng                       |    1 
 interface/web/admin/templates/system_config_sites_edit.htm                      |   10 
 interface/web/sites/lib/lang/fi_database_list.lng                               |    1 
 interface/web/sites/lib/lang/el_database_list.lng                               |    1 
 interface/web/sites/lib/lang/de_web_subdomain.lng                               |   29 
 interface/web/sites/lib/lang/nl_web_domain.lng                                  |    1 
 interface/web/sites/lib/lang/en_aps_instances_list.lng                          |   24 
 interface/web/admin/lib/lang/cz_package_install.lng                             |    1 
 interface/web/client/lib/lang/de.lng                                            |    3 
 interface/web/dns/lib/lang/cz_dns_soa.lng                                       |    1 
 interface/web/sites/lib/lang/cz_aps_instances_list.lng                          |    1 
 interface/web/mail/lib/lang/cz_mail_aliasdomain.lng                             |    1 
 interface/web/vm/lib/lang/de_openvz_ip_list.lng                                 |    1 
 interface/web/client/lib/lang/sk_reseller.lng                                   |    5 
 interface/web/sites/lib/lang/cz_database_list.lng                               |    2 
 interface/web/mail/lib/lang/de_mail_mailinglist_list.lng                        |    1 
 interface/web/admin/lib/lang/cz_remote_action.lng                               |    1 
 interface/web/admin/lib/lang/cz_firewall.lng                                    |    1 
 interface/web/admin/lib/lang/cz.lng                                             |    1 
 interface/web/client/lib/lang/nl_client.lng                                     |    5 
 interface/web/mail/lib/lang/cz_mail_whitelist.lng                               |    1 
 interface/web/admin/lib/lang/cz_language_import.lng                             |    1 
 interface/web/help/lib/lang/cz.lng                                              |    1 
 interface/web/admin/lib/lang/ru_software_package.lng                            |    8 
 interface/lib/classes/aps_base.inc.php                                          |  204 
 interface/web/mail/lib/lang/cz_mail_domain_catchall_list.lng                    |    1 
 interface/web/mail/lib/lang/el_mail_forward.lng                                 |    2 
 interface/web/admin/lib/lang/pl_remote_action.lng                               |    2 
 interface/web/themes/default/TODO                                               |   14 
 interface/web/client/lib/lang/cz_domain.lng                                     |    7 
 interface/web/designer/lib/lang/cz_module_list.lng                              |    1 
 interface/web/dns/lib/lang/de_dns_ns.lng                                        |    1 
 interface/web/sites/lib/lang/pl_web_domain.lng                                  |    1 
 interface/web/client/lib/lang/es_client.lng                                     |    5 
 interface/web/mail/lib/lang/cz_mail_mailinglist.lng                             |    3 
 interface/web/sites/lib/lang/cz_web_domain_list.lng                             |    1 
 interface/web/mailuser/lib/lang/de.lng                                          |    1 
 interface/web/mail/form/mail_domain.tform.php                                   |   29 
 interface/web/dns/lib/lang/cz_dns_cname.lng                                     |    1 
 interface/web/dns/lib/lang/de_dns_cname.lng                                     |    1 
 interface/web/mailuser/lib/lang/de_mail_user_password.lng                       |    1 
 interface/web/sites/lib/lang/de_web_folder.lng                                  |    1 
 interface/web/admin/lib/lang/cz_server_list.lng                                 |    1 
 interface/web/admin/lib/lang/el_firewall.lng                                    |    2 
 interface/web/dns/lib/lang/de_dns_alias.lng                                     |    1 
 interface/web/admin/lib/lang/el_server_ip.lng                                   |    2 
 interface/web/dns/lib/lang/cz_dns_soa_list.lng                                  |    1 
 interface/web/admin/lib/lang/it_system_config.lng                               |    7 
 interface/web/mail/lib/lang/de_mail_user_filter.lng                             |    1 
 interface/web/dashboard/lib/lang/br_dashlet_mailquota.lng                       |   14 
 interface/web/admin/lib/lang/de_software_package_list.lng                       |    9 
 interface/web/sites/lib/lang/cz_user_quota_stats_list.lng                       |    5 
 interface/web/admin/lib/lang/ro_system_config.lng                               |    7 
 interface/web/mail/lib/lang/el_user_quota_stats_list.lng                        |    2 
 interface/web/sites/lib/lang/de_aps_packages_list.lng                           |    1 
 interface/web/sites/lib/lang/it_database_list.lng                               |    1 
 interface/web/dns/lib/lang/cz_dns_import.lng                                    |    3 
 interface/web/mail/lib/lang/cz_mail_domain_list.lng                             |    1 
 interface/web/sites/lib/lang/bg_database_list.lng                               |    1 
 interface/web/strengthmeter/lib/lang/cz_strengthmeter.lng                       |    1 
 interface/web/dns/lib/lang/el_dns_wizard.lng                                    |   18 
 interface/web/mail/lib/lang/cz_mail_get_list.lng                                |    1 
 interface/web/admin/lib/lang/cz_firewall_list.lng                               |    1 
 interface/web/dns/form/dns_template.tform.php                                   |   27 
 interface/web/sites/lib/lang/fr_database_list.lng                               |    1 
 interface/lib/classes/tform_actions.inc.php                                     |   11 
 interface/tools/empty.dir                                                       |    1 
 interface/web/admin/lib/lang/es_system_config.lng                               |    7 
 interface/web/mail/lib/lang/cz_mail_alias_list.lng                              |    1 
 interface/web/dns/lib/lang/cz_dns_alias.lng                                     |    1 
 interface/web/client/lib/lang/se_reseller.lng                                   |    5 
 interface/web/sites/lib/lang/cz_database_admin_list.lng                         |    2 
 interface/web/sites/lib/lang/br_database_list.lng                               |    1 
 interface/web/mail/lib/lang/de_mail_blacklist_list.lng                          |    1 
 interface/web/mail/lib/lang/el_mail_user_list.lng                               |    2 
 interface/web/client/lib/lang/de_domain_list.lng                                |    1 
 interface/web/sites/lib/lang/se_database_admin_list.lng                         |    1 
 interface/web/admin/templates/server_config_rescue_edit.htm                     |   16 
 interface/web/admin/lib/lang/de_software_package.lng                            |    9 
 interface/web/admin/lib/lang/de_system_config.lng                               |   12 
 interface/web/mailuser/lib/lang/de_mail_user_filter.lng                         |    1 
 install/autoupdate.php                                                          |    2 
 interface/web/mail/lib/lang/cz_mail_mailinglist_list.lng                        |    1 
 interface/web/admin/lib/lang/id_language_import.lng                             |    1 
 interface/lib/classes/simplepie.inc.php                                         |    4 
 interface/web/admin/lib/lang/nl_language_import.lng                             |    1 
 interface/web/sites/lib/lang/de_cron_list.lng                                   |    1 
 interface/web/mailuser/lib/lang/el_mail_user_spamfilter.lng                     |    8 
 interface/web/sites/lib/lang/fr_web_domain.lng                                  |    1 
 interface/web/mail/lib/lang/de_mail_domain_admin_list.lng                       |    1 
 interface/web/mail/lib/lang/cz_spamfilter_policy_list.lng                       |    1 
 interface/web/help/lib/lang/de_faq_form.lng                                     |    1 
 interface/web/admin/lib/lang/nl_system_config.lng                               |   10 
 interface/web/mail/lib/lang/de_spamfilter_users.lng                             |    1 
 interface/web/dns/lib/lang/de_dns_slave.lng                                     |    1 
 interface/web/monitor/lib/lang/de.lng                                           |    4 
 interface/web/tools/lib/lang/cz_usersettings.lng                                |    1 
 interface/web/admin/templates/iptables_list.htm                                 |  146 
 interface/web/admin/form/server_config.tform.php                                |  118 
 interface/web/client/lib/lang/pt_reseller.lng                                   |    5 
 interface/web/admin/lib/lang/cz_system_config.lng                               |    1 
 interface/web/mail/lib/lang/de_mail_spamfilter.lng                              |    1 
 interface/web/mailuser/lib/lang/de_mail_user_cc.lng                             |    1 
 interface/web/admin/lib/lang/de_firewall_list.lng                               |    1 
 server/cron_daily.php                                                           |  275 
 interface/web/admin/lib/lang/cz_language_complete.lng                           |    1 
 interface/web/vm/lib/lang/de_openvz_ostemplate_list.lng                         |    1 
 interface/web/admin/lib/lang/de_iptables.lng                                    |    3 
 interface/web/sites/lib/lang/cz.lng                                             |    1 
 interface/web/sites/lib/lang/cz_shell_user.lng                                  |    1 
 interface/web/admin/lib/lang/cz_groups_list.lng                                 |    1 
 interface/web/sites/lib/lang/el_database.lng                                    |   44 
 interface/web/sites/lib/lang/ru_database_list.lng                               |    1 
 interface/web/mail/templates/mail_domain_edit.htm                               |   30 
 interface/web/admin/lib/lang/cz_server_ip_list.lng                              |    1 
 interface/web/monitor/templates/show_sys_state.htm                              |   48 
 interface/web/mail/lib/lang/el_mail_domain_catchall.lng                         |    4 
 interface/web/mail/lib/lang/de_mail_relay_recipient_list.lng                    |    1 
 interface/web/client/lib/lang/fr_reseller.lng                                   |    5 
 interface/web/mail/lib/lang/cz_mail_user_list.lng                               |    1 
 interface/web/vm/lib/lang/de_openvz_ostemplate.lng                              |    1 
 interface/web/admin/lib/lang/de_login_as.lng                                    |    1 
 server/mods-available/monitor_core_module.inc.php                               |   44 
 interface/web/mail/lib/lang/cz_mail_user.lng                                    |    3 
 server/mods-core/empty.dir                                                      |    1 
 interface/web/dashboard/lib/lang/el_dashlet_quota.lng                           |   14 
 interface/web/client/lib/lang/cz_reseller.lng                                   |   43 
 interface/web/dns/lib/lang/el_dns_srv.lng                                       |   28 
 interface/web/client/lib/lang/de_resellers_list.lng                             |    1 
 interface/web/mail/lib/lang/de_mail_get.lng                                     |    3 
 interface/web/login/lib/lang/el.lng                                             |   14 
 interface/web/client/lib/lang/fi_client.lng                                     |    5 
 interface/web/dns/templates/dns_wizard.htm                                      |   17 
 interface/web/dns/lib/lang/de_dns_hinfo.lng                                     |    1 
 interface/web/sites/aps_do_operation.php                                        |  224 
 interface/web/client/lib/lang/cz_client_message.lng                             |    1 
 interface/web/dashboard/list/empty.dir                                          |    1 
 interface/web/designer/lib/lang/cz_module_show.lng                              |    3 
 interface/web/admin/lib/lang/pl_software_package.lng                            |    8 
 interface/web/admin/lib/lang/cz_iptables_list.lng                               |    1 
 interface/web/vm/lib/lang/el_openvz_ip.lng                                      |    2 
 interface/web/sites/lib/lang/cz_web_domain.lng                                  |   12 
 interface/web/designer/lib/lang/de_module_nav_edit.lng                          |    1 
 interface/web/remote/monitor.php                                                |    5 
 interface/web/tools/lib/lang/de_tpl_default.lng                                 |    1 
 interface/web/dashboard/lib/lang/se_dashlet_quota.lng                           |   14 
 interface/web/admin/lib/lang/de_server_php.lng                                  |    1 
 interface/web/client/lib/lang/hu_client.lng                                     |    5 
 interface/web/admin/lib/lang/br_software_package.lng                            |    8 
 interface/web/mail/lib/lang/de_spamfilter_whitelist.lng                         |    1 
 interface/web/sites/lib/lang/en_web_backup_list.lng                             |   16 
 interface/web/mail/lib/lang/cz_mail_content_filter.lng                          |    1 
 interface/web/admin/lib/lang/fr_remote_action.lng                               |    2 
 interface/web/sites/lib/lang/en_aps_packages_list.lng                           |   14 
 interface/web/help/lib/lang/de_faq_sections_form.lng                            |    1 
 server/plugins-available/mail_plugin.inc.php                                    |    3 
 interface/web/admin/lib/lang/ja_system_config.lng                               |    7 
 interface/web/admin/lib/lang/pt_system_config.lng                               |    7 
 interface/web/mailuser/lib/lang/de_index.lng                                    |    1 
 interface/web/client/lib/lang/br_reseller.lng                                   |    5 
 interface/web/client/lib/lang/de_client_del.lng                                 |    1 
 interface/lib/classes/tform.inc.php                                             | 1830 ++---
 interface/web/mail/lib/lang/cz_mail_transport_list.lng                          |    1 
 interface/web/sites/lib/lang/it_database_admin_list.lng                         |    1 
 interface/web/admin/lib/lang/id_software_package.lng                            |    8 
 interface/web/sites/lib/lang/ru_web_domain.lng                                  |    1 
 interface/web/sites/lib/lang/cz_ftp_user.lng                                    |    1 
 install/tpl/config.inc.php.master                                               |    2 
 interface/web/admin/templates/system_config_branding_edit.html                  |   42 
 interface/web/client/lib/lang/de_client_circle_list.lng                         |    1 
 interface/web/mail/lib/lang/cz_mail_domain.lng                                  |    1 
 interface/web/help/lib/lang/de_support_message.lng                              |   11 
 interface/web/client/lib/lang/es_reseller.lng                                   |    5 
 interface/web/dashboard/lib/lang/sk_dashlet_mailquota.lng                       |   14 
 interface/web/admin/templates/iptables_edit.htm                                 |  132 
 interface/web/vm/lib/lang/el_openvz_vm.lng                                      |    8 
 interface/web/sites/lib/lang/cz_web_sites_stats_list.lng                        |    1 
 interface/web/dashboard/lib/lang/ru_dashlet_quota.lng                           |   14 
 interface/web/sites/form/web_domain.tform.php                                   |    6 
 interface/web/client/lib/lang/cz_client.lng                                     |   41 
 interface/web/mail/lib/lang/el_mail_mailinglist.lng                             |   18 
 interface/web/sites/lib/lang/el_aps_instances_list.lng                          |   22 
 server/temp/empty.dir                                                           |    1 
 interface/web/client/lib/lang/el_client_message.lng                             |   32 
 server/mods-available/rescue_core_module.inc.php                                |  175 
 install/tpl/opensuse_amavisd_conf.master                                        |    6 
 interface/web/sites/lib/lang/de_database_user_admin_list.lng                    |    1 
 interface/web/admin/language_import.php                                         |   94 
 interface/web/sites/lib/lang/de_database_user_list.lng                          |    1 
 interface/web/client/lib/lang/el_clients_list.lng                               |    4 
 install/sql/incremental/upd_0058.sql                                            |    3 
 interface/web/mail/lib/lang/cz_spamfilter_blacklist_list.lng                    |    3 
 interface/web/admin/lib/lang/ar_system_config.lng                               |    7 
 interface/web/client/lib/lang/de_client_circle.lng                              |    1 
 interface/web/sites/lib/lang/ar_web_domain.lng                                  |    1 
 interface/web/admin/lib/lang/de_remote_user_list.lng                            |    1 
 interface/web/help/lib/lang/de_help_faq_sections_list.lng                       |    1 
 interface/web/sites/lib/lang/de_cron.lng                                        |    5 
 interface/web/admin/lib/lang/de_users.lng                                       |    1 
 interface/web/client/lib/lang/el_reseller.lng                                   |   65 
 interface/web/dns/lib/lang/de_dns_ptr.lng                                       |    1 
 interface/web/admin/lib/lang/fi_language_import.lng                             |    1 
 interface/web/sites/lib/lang/hr_database_admin_list.lng                         |    1 
 interface/web/dns/lib/lang/cz_dns_srv.lng                                       |    1 
 interface/web/mail/lib/lang/de_mail_forward.lng                                 |    1 
 interface/web/admin/lib/lang/id_system_config.lng                               |    7 
 interface/web/mail/lib/lang/cz_mail_alias.lng                                   |    1 
 interface/web/client/lib/lang/ro_reseller.lng                                   |    5 
 interface/web/sites/lib/lang/pl_database_list.lng                               |    1 
 interface/web/themes/default-304/templates/sites/aps_packagedetails_show.htm    |  276 
 interface/web/tools/lib/lang/el_interface.lng                                   |   10 
 interface/web/admin/lib/lang/sk_system_config.lng                               |    7 
 interface/web/dns/lib/lang/cz_dns_slave.lng                                     |    1 
 interface/web/sites/templates/aps_instances_list.htm                            |  122 
 install/dist/lib/gentoo.lib.php                                                 |    1 
 interface/web/designer/lib/lang/cz_module_edit.lng                              |   12 
 interface/web/admin/lib/lang/el_remote_user.lng                                 |   10 
 interface/web/dashboard/lib/lang/ru_dashlet_mailquota.lng                       |   14 
 interface/web/dns/lib/lang/en_dns_wizard.lng                                    |   21 
 interface/web/monitor/lib/lang/cz_datalog_list.lng                              |    1 
 interface/web/admin/lib/lang/cz_server.lng                                      |    1 
 interface/web/admin/lib/lang/hu_system_config.lng                               |    7 
 interface/web/sites/lib/lang/el_web_subdomain.lng                               |    8 
 interface/web/admin/lib/lang/cz_remote_user.lng                                 |    1 
 interface/web/sites/lib/lang/el_web_folder_user.lng                             |   10 
 interface/web/designer/lib/lang/cz_module_nav_item_edit.lng                     |    1 
 interface/web/help/lib/lang/cz_faq_manage_questions_list.lng                    |    1 
 interface/web/mail/lib/lang/el_mail_transport_list.lng                          |    4 
 interface/web/vm/lib/lang/cz_openvz_ip_list.lng                                 |    1 
 interface/web/sites/lib/lang/en_aps.lng                                         |  114 
 interface/web/sites/lib/lang/se_web_domain.lng                                  |    1 
 interface/web/themes/default/CHANGELOG                                          |   62 
 interface/web/admin/templates/system_config_mail_edit.htm                       |   20 
 interface/web/admin/lib/lang/de_server_config.lng                               |   30 
 interface/web/client/lib/lang/tr_client.lng                                     |    5 
 server/lib/classes/aps_base.inc.php                                             |  204 
 interface/web/help/lib/lang/cz_faq_form.lng                                     |    1 
 interface/web/mailuser/lib/lang/cz_index.lng                                    |    1 
 interface/web/designer/list/empty.dir                                           |    1 
 interface/web/monitor/lib/lang/cz_syslog_list.lng                               |    1 
 interface/web/admin/lib/lang/el_remote_action.lng                               |    4 
 interface/web/mail/lib/lang/de_mail_content_filter_list.lng                     |    1 
 interface/web/dashboard/lib/lang/cz_dashlet_modules.lng                         |    1 
 interface/web/tools/lib/lang/de_import_ispconfig.lng                            |    1 
 interface/web/vm/lib/lang/cz_openvz_ostemplate_list.lng                         |    1 
 interface/web/tools/lib/lang/de_resync.lng                                      |    1 
 interface/web/sites/lib/lang/de_web_domain.lng                                  |   67 
 interface/web/admin/templates/server_config_mail_edit.htm                       |    6 
 interface/web/designer/lib/lang/de_form_list.lng                                |    1 
 interface/web/mail/lib/lang/de_mail_domain.lng                                  |    1 
 interface/web/vm/lib/lang/de.lng                                                |    7 
 interface/web/client/lib/lang/fr_client.lng                                     |    5 
 interface/web/admin/lib/lang/pl_system_config.lng                               |    7 
 interface/web/admin/lib/lang/cz_software_repo_list.lng                          |    1 
 interface/web/designer/lib/lang/de.lng                                          |    1 
 interface/web/help/lib/lang/el_help_faq_list.lng                                |    2 
 interface/web/client/lib/lang/hr_client.lng                                     |    5 
 interface/web/sites/lib/lang/el_web_vhost_subdomain_list.lng                    |    4 
 interface/web/monitor/lib/lang/en.lng                                           |    3 
 interface/web/client/lib/lang/cz_client_template.lng                            |   43 
 interface/web/mail/lib/lang/de.lng                                              |    1 
 interface/web/themes/default-304/templates/monitor/show_sys_state.htm           |   48 
 interface/web/admin/lib/lang/es_language_import.lng                             |    1 
 interface/web/mail/lib/lang/cz_spamfilter_users.lng                             |    7 
 interface/web/sites/lib/lang/cz_web_folder_list.lng                             |    1 
 interface/web/sites/lib/lang/tr_database_list.lng                               |    1 
 interface/web/admin/language_edit.php                                           |    2 
 interface/web/client/client_message.php                                         |   21 
 interface/web/admin/lib/lang/se_system_config.lng                               |    7 
 interface/web/dashboard/lib/lang/it_dashlet_mailquota.lng                       |   14 
 interface/web/sites/lib/lang/ar_database_list.lng                               |    1 
 interface/web/client/lib/lang/de_clients_list.lng                               |    1 
 interface/web/admin/lib/lang/ja_software_package.lng                            |    8 
 interface/web/client/lib/lang/cz_clients_list.lng                               |    1 
 interface/web/mail/lib/lang/de_mail_whitelist_list.lng                          |    1 
 interface/web/mail/lib/lang/de_spamfilter_policy.lng                            |    1 
 interface/web/js/js.d/empty.dir                                                 |    1 
 interface/web/admin/lib/lang/cz_server_php_list.lng                             |    1 
 interface/web/tools/lib/lang/cz_interface.lng                                   |    1 
 interface/web/client/lib/lang/cz.lng                                            |    1 
 interface/web/vm/lib/lang/el_openvz_template.lng                                |   20 
 interface/web/mail/lib/lang/cz_mail_whitelist_list.lng                          |    1 
 interface/web/mail/lib/lang/de_mail_alias.lng                                   |    1 
 interface/web/admin/lib/lang/de_language_complete.lng                           |    3 
 interface/web/sites/lib/lang/de_web_vhost_subdomain.lng                         |   55 
 interface/web/dashboard/lib/lang/de_dashlet_mailquota.lng                       |    7 
 interface/web/sites/lib/lang/el_database_user_list.lng                          |    6 
 interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng                         |    3 
 interface/web/dashboard/lib/lang/fi_dashlet_quota.lng                           |   14 
 interface/web/mail/lib/lang/cz_mail_transport.lng                               |    3 
 interface/web/admin/lib/lang/se_software_package.lng                            |    8 
 interface/web/mail/lib/lang/de_mail_domain_list.lng                             |    1 
 interface/web/admin/lib/lang/cz_software_package_list.lng                       |    5 
 interface/web/sites/lib/lang/cz_web_folder_user_list.lng                        |    1 
 server/plugins-available/apache2_plugin.inc.php                                 |  131 
 interface/web/sites/lib/lang/cz_web_subdomain_list.lng                          |    1 
 server/conf-custom/index/empty.dir                                              |    1 
 server/conf-custom/empty.dir                                                    |    1 
 interface/web/dns/lib/lang/de_dns_import.lng                                    |    1 
 interface/web/dashboard/lib/lang/hr_dashlet_mailquota.lng                       |   14 
 interface/web/dns/lib/lang/de.lng                                               |    1 
 interface/web/dns/lib/lang/de_dns_a_list.lng                                    |    1 
 interface/web/sites/templates/web_subdomain_advanced.htm                        |   74 
 interface/web/sites/lib/lang/pt_web_domain.lng                                  |    1 
 interface/web/dashboard/lib/lang/cz_dashlet_limits.lng                          |    1 
 interface/web/admin/lib/lang/el_login_as.lng                                    |   18 
 interface/web/tools/lib/lang/el_resync.lng                                      |   22 
 interface/web/admin/lib/lang/bg_software_package.lng                            |    8 
 interface/web/admin/lib/lang/el_software_update_list.lng                        |    2 
 interface/web/mail/lib/lang/cz_mail_blacklist.lng                               |    1 
 interface/web/dashboard/lib/lang/it_dashlet_quota.lng                           |   14 
 interface/web/mailuser/lib/lang/cz.lng                                          |    1 
 interface/web/tools/lib/interface.d/tpl_default.menu.php                        |   16 
 server/plugins-available/nginx_plugin.inc.php                                   |    8 
 interface/web/mail/lib/lang/de_spamfilter_policy_list.lng                       |    1 
 interface/web/mail/lib/lang/el_mail_get.lng                                     |    4 
 interface/web/client/lib/lang/ar_client.lng                                     |    5 
 interface/web/admin/lib/lang/bg_remote_action.lng                               |    2 
 interface/web/sites/lib/lang/el_web_aliasdomain_list.lng                        |    6 
 interface/web/dashboard/lib/lang/pt_dashlet_quota.lng                           |   14 
 interface/web/sites/lib/lang/cz_web_aliasdomain.lng                             |    7 
 interface/web/admin/lib/lang/fi_system_config.lng                               |    7 
 interface/web/mail/lib/lang/de_mail_get_list.lng                                |    1 
 interface/web/admin/lib/lang/bg_language_import.lng                             |    1 
 interface/web/mail/lib/lang/cz_spamfilter_whitelist.lng                         |    1 
 interface/web/sites/lib/lang/de_web_vhost_subdomain_list.lng                    |    1 
 interface/web/client/lib/lang/hr_reseller.lng                                   |    5 
 interface/web/sites/list/aps_availablepackages.list.php                         |  170 
 interface/web/client/lib/lang/el_resellers_list.lng                             |    4 
 interface/web/sites/lib/lang/nl_database_admin_list.lng                         |    1 
 interface/web/admin/lib/lang/hu_remote_action.lng                               |    2 
 interface/web/tools/lib/lang/cz_import_ispconfig.lng                            |    1 
 interface/web/vm/lib/lang/de_openvz_vm_list.lng                                 |    1 
 interface/web/admin/lib/lang/it_language_import.lng                             |    1 
 interface/web/mail/lib/lang/cz_mail_user_filter_list.lng                        |    1 
 interface/web/admin/lib/lang/nl_software_package.lng                            |    8 
 server/mods-enabled/empty.dir                                                   |    1 
 interface/web/admin/lib/lang/fr_software_package.lng                            |    8 
 interface/web/tools/lib/lang/cz_resync.lng                                      |    1 
 interface/web/admin/lib/lang/de_language_import.lng                             |    3 
 interface/web/dashboard/lib/lang/de_dashlet_modules.lng                         |    1 
 interface/web/admin/lib/lang/de_server_list.lng                                 |    1 
 interface/web/mailuser/lib/lang/cz_mail_user_filter_list.lng                    |    1 
 interface/web/sites/lib/lang/el_shell_user.lng                                  |   18 
 interface/web/sites/lib/lang/de_web_folder_list.lng                             |    1 
 interface/web/client/lib/lang/de_client_template.lng                            |    1 
 interface/web/sites/lib/lang/el_database_user.lng                               |   42 
 interface/web/sites/templates/database_admin_list.htm                           |    7 
 interface/web/admin/lib/lang/ru_language_import.lng                             |    1 
 server/conf-custom/mail/empty.dir                                               |    1 
 interface/web/sites/templates/aps_install_package.htm                           |  112 
 interface/web/sites/lib/lang/ja_web_domain.lng                                  |    1 
 interface/web/tools/lib/lang/de_index.lng                                       |    1 
 interface/web/dashboard/lib/lang/pl_dashlet_quota.lng                           |   14 
 interface/web/client/lib/lang/id_client.lng                                     |    5 
 interface/lib/lang/de.lng                                                       |    1 
 interface/web/sites/aps_cron_apscrawler_if.php                                  |  124 
 interface/web/monitor/show_log.php                                              |   15 
 interface/web/sites/templates/web_backup_list.htm                               |   34 
 interface/web/admin/lib/lang/el_tpl_default_admin.lng                           |   26 
 install/dist/lib/opensuse.lib.php                                               |    2 
 interface/web/client/lib/lang/ru_client.lng                                     |    5 
 interface/web/mail/lib/lang/cz_mail_domain_catchall.lng                         |    1 
 interface/web/sites/lib/lang/ja_database_list.lng                               |    1 
 interface/web/sites/web_domain_edit.php                                         |   47 
 interface/web/admin/lib/lang/cz_language_export.lng                             |    1 
 interface/web/admin/lib/lang/cz_server_config.lng                               |    9 
 interface/web/sites/lib/lang/sk_database_admin_list.lng                         |    1 
 interface/web/sites/templates/web_vhost_subdomain_redirect.htm                  |    6 
 interface/web/tools/lib/lang/de.lng                                             |    1 
 interface/web/admin/lib/lang/de_server_php_list.lng                             |    1 
 interface/web/themes/default-304/templates/sites/aps_install_package.htm        |  110 
 interface/web/dashboard/lib/lang/bg_dashlet_mailquota.lng                       |   14 
 interface/web/admin/lib/lang/pl_language_import.lng                             |    1 
 install/dist/lib/fedora.lib.php                                                 |    2 
 interface/web/admin/lib/lang/de_firewall.lng                                    |    1 
 interface/web/sites/form/database_user.tform.php                                |   10 
 interface/web/dashboard/lib/lang/cz.lng                                         |    1 
 interface/web/dashboard/lib/lang/cz_dashlet_mailquota.lng                       |   15 
 interface/web/mailuser/lib/lang/cz_mail_user_password.lng                       |    3 
 interface/web/dns/templates/dns_a_list.htm                                      |   13 
 interface/web/help/lib/lang/de_faq_manage_questions_list.lng                    |    1 
 interface/web/help/lib/lang/de_support_message_list.lng                         |    1 
 interface/web/sites/lib/lang/ro_database_admin_list.lng                         |    1 
 install/lib/installer_base.lib.php                                              |    8 
 interface/web/mail/lib/lang/de_mail_user_filter_list.lng                        |    1 
 interface/web/client/lib/lang/fi_reseller.lng                                   |    5 
 install/sql/incremental/upd_0052.sql                                            |    6 
 interface/web/admin/lib/lang/ro_language_import.lng                             |    1 
 interface/web/sites/lib/lang/br_database_admin_list.lng                         |    1 
 interface/web/admin/lib/lang/de_directive_snippets.lng                          |    3 
 interface/web/sites/lib/lang/el_web_vhost_subdomain.lng                         |  142 
 interface/web/admin/lib/lang/de_users_list.lng                                  |    1 
 interface/web/tools/lib/lang/cz_tpl_default.lng                                 |    1 
 interface/web/designer/lib/lang/de_form_show.lng                                |    1 
 interface/web/client/lib/lang/de_client.lng                                     |   86 
 interface/web/mail/lib/lang/de_mail_relay_recipient.lng                         |    1 
 interface/web/sites/lib/lang/cz_cron.lng                                        |    5 
 interface/web/dns/lib/lang/cz_dns_template_list.lng                             |    1 
 interface/web/monitor/lib/lang/el.lng                                           |   14 
 interface/web/dns/lib/lang/cz_dns_ptr.lng                                       |    1 
 interface/web/admin/lib/lang/it_software_package.lng                            |    8 
 interface/web/designer/lib/lang/el_form_edit.lng                                |   10 
 interface/web/admin/lib/lang/se_remote_action.lng                               |    2 
 interface/web/designer/lib/lang/de_form_edit.lng                                |    1 
 interface/web/admin/lib/lang/cz_server_config_list.lng                          |    1 
 interface/web/admin/lib/lang/de_language_list.lng                               |    1 
 interface/web/mail/lib/lang/cz_mail_spamfilter.lng                              |    1 
 interface/web/mailuser/lib/lang/cz_mail_user_spamfilter.lng                     |    1 
 server/plugins-enabled/empty.dir                                                |    1 
 interface/web/mail/lib/lang/cz_spamfilter_policy.lng                            |    3 
 interface/web/admin/lib/lang/el_server_php.lng                                  |   22 
 interface/web/dashboard/lib/lang/hr_dashlet_quota.lng                           |   14 
 interface/web/sites/lib/lang/es_database_list.lng                               |    1 
 interface/web/client/lib/lang/bg_reseller.lng                                   |    5 
 interface/web/sites/lib/lang/cz_webdav_user.lng                                 |    1 
 interface/web/tools/lib/lang/el_tpl_default.lng                                 |   10 
 interface/web/sites/lib/lang/el_webdav_user.lng                                 |   14 
 interface/web/admin/lib/lang/pt_software_package.lng                            |    8 
 interface/web/client/lib/lang/br_client.lng                                     |    5 
 interface/web/sites/lib/lang/el.lng                                             |   24 
 interface/web/admin/lib/lang/en_system_config.lng                               |    3 
 install/patches/upd_0001.php                                                    |   21 
 interface/web/admin/lib/lang/sk_software_package.lng                            |    8 
 interface/web/vm/lib/lang/cz_openvz_ostemplate.lng                              |    1 
 interface/web/client/lib/lang/el_client_circle.lng                              |   14 
 interface/web/dashboard/lib/lang/br_dashlet_quota.lng                           |   14 
 interface/web/admin/lib/lang/de_iptables_list.lng                               |    1 
 interface/web/client/lib/lang/pl_client.lng                                     |    5 
 interface/web/sites/aps_meta_packages/empty.dir                                 |    1 
 interface/web/sites/lib/lang/es_web_domain.lng                                  |    1 
 interface/web/vm/lib/lang/cz_openvz_ip.lng                                      |    1 
 interface/web/admin/templates/server_config_web_edit.htm                        |   36 
 interface/web/sites/lib/lang/el_aps_update_packagelist.lng                      |    8 
 interface/web/tools/lib/lang/el_index.lng                                       |    4 
 interface/web/admin/lib/lang/cz_language_edit.lng                               |    1 
 interface/web/sites/lib/lang/ro_database_list.lng                               |    1 
 interface/web/vm/lib/lang/de_openvz_ip.lng                                      |    1 
 interface/web/dashboard/lib/lang/hu_dashlet_quota.lng                           |   14 
 interface/web/sites/lib/lang/pt_database_admin_list.lng                         |    1 
 interface/web/mailuser/lib/lang/de_mail_user_spamfilter.lng                     |    1 
 interface/web/mailuser/lib/lang/el_mail_user_filter_list.lng                    |   12 
 interface/web/sites/lib/lang/hu_web_domain.lng                                  |    1 
 interface/web/sites/lib/lang/de_ftp_user.lng                                    |    7 
 interface/web/admin/lib/lang/el_users.lng                                       |   12 
 interface/web/admin/lib/lang/sk_language_import.lng                             |    1 
 server/plugins-available/backup_plugin.inc.php                                  |   66 
 interface/web/admin/lib/lang/hu_language_import.lng                             |    1 
 interface/web/client/lib/lang/el_client.lng                                     |   81 
 interface/web/client/lib/lang/en_client_message.lng                             |    2 
 interface/web/dns/lib/lang/cz_dns_slave_list.lng                                |    1 
 interface/web/admin/lib/lang/es_software_package.lng                            |    8 
 interface/web/admin/lib/lang/el_system_config.lng                               |   63 
 interface/web/dns/lib/lang/cz_dns_template.lng                                  |    1 
 interface/web/dns/lib/lang/cz.lng                                               |    1 
 interface/web/dns/lib/lang/de_dns_soa.lng                                       |    1 
 interface/web/admin/lib/lang/pt_language_import.lng                             |    1 
 server/lib/classes/monitor_tools.inc.php                                        |   61 
 interface/web/client/lib/lang/hu_reseller.lng                                   |    5 
 install/lib/update.lib.php                                                      |   48 
 interface/web/admin/lib/lang/de_language_export.lng                             |    3 
 interface/web/sites/lib/lang/bg_web_domain.lng                                  |    1 
 interface/web/client/lib/lang/bg_client.lng                                     |    5 
 interface/web/client/lib/lang/el.lng                                            |   20 
 interface/web/designer/lib/lang/cz.lng                                          |    1 
 interface/web/client/lib/lang/se_client.lng                                     |    5 
 interface/web/dashboard/lib/lang/nl_dashlet_mailquota.lng                       |   14 
 interface/web/dashboard/lib/lang/de_dashlet_quota.lng                           |    5 
 interface/web/dashboard/lib/lang/nl_dashlet_quota.lng                           |   14 
 interface/web/mail/lib/lang/de_mail_spamfilter_list.lng                         |    1 
 interface/web/dashboard/lib/lang/es_dashlet_mailquota.lng                       |   14 
 interface/web/dns/lib/lang/cz_dns_aaaa.lng                                      |    1 
 interface/web/sites/form/database.tform.php                                     |    9 
 interface/web/mail/lib/lang/de_spamfilter_blacklist_list.lng                    |    1 
 interface/web/dashboard/lib/lang/tr_dashlet_mailquota.lng                       |   14 
 server/lib/classes/system.inc.php                                               |    3 
 interface/web/admin/lib/lang/cz_language_list.lng                               |    1 
 interface/web/mail/lib/lang/de_mail_user_list.lng                               |    1 
 interface/web/sites/form/web_vhost_subdomain.tform.php                          |   14 
 interface/lib/lang/el.lng                                                       |  126 
 interface/web/client/lib/lang/el_client_circle_list.lng                         |   16 
 install/install.php                                                             |   37 
 interface/web/dns/lib/lang/el_dns_hinfo.lng                                     |    2 
 interface/web/mail/lib/lang/de_mail_user_stats_list.lng                         |    1 
 interface/web/dashboard/lib/lang/es_dashlet_quota.lng                           |   14 
 interface/web/vm/lib/lang/cz_openvz_vm.lng                                      |    1 
 server/plugins-available/aps_plugin.inc.php                                     |  234 
 interface/web/sites/lib/lang/de_aps_instances_list.lng                          |    1 
 interface/web/admin/lib/lang/ro_software_package.lng                            |    8 
 interface/web/help/lib/lang/cz_support_message.lng                              |    7 
 interface/web/login/lib/lang/cz.lng                                             |    1 
 interface/web/mail/lib/lang/en_mail_domain.lng                                  |   11 
 install/sql/ispconfig3.sql                                                      |  238 
 interface/web/dns/dns_wizard.php                                                |   47 
 interface/cache/empty.dir                                                       |    1 
 interface/web/sites/database_user_edit.php                                      |   62 
 interface/web/admin/lib/lang/ar_remote_action.lng                               |    2 
 interface/web/client/lib/lang/cz_client_template_list.lng                       |    3 
 interface/web/client/lib/lang/cz_resellers_list.lng                             |    1 
 interface/web/mail/lib/lang/cz_mail_content_filter_list.lng                     |    1 
 interface/web/admin/lib/lang/el_software_package.lng                            |   10 
 interface/web/mailuser/lib/lang/el_mail_user_cc.lng                             |    8 
 interface/web/mailuser/lib/lang/el_index.lng                                    |   18 
 interface/web/admin/lib/lang/el_directive_snippets.lng                          |   10 
 interface/web/admin/lib/lang/tr_remote_action.lng                               |    2 
 interface/web/dns/lib/lang/de_dns_template.lng                                  |    1 
 interface/web/mail/lib/lang/cz_mail_blacklist_list.lng                          |    3 
 interface/web/sites/lib/lang/de_web_folder_user.lng                             |    1 
 interface/web/sites/lib/lang/de_database_admin_list.lng                         |    6 
 interface/web/designer/form/empty.dir                                           |    1 
 interface/web/sites/lib/lang/de_web_backup_list.lng                             |    6 
 interface/web/sites/lib/lang/el_cron.lng                                        |    2 
 interface/lib/classes/aps_crawler.inc.php                                       | 1182 +-
 interface/web/admin/lib/lang/sk_remote_action.lng                               |    2 
 interface/web/themes/default-304/templates/sites/aps_packages_list.htm          |   98 
 interface/web/dns/lib/lang/el_dns_alias.lng                                     |    2 
 server/aps_packages/empty.dir                                                   |    1 
 interface/web/sites/lib/lang/bg_database_admin_list.lng                         |    1 
 interface/web/vm/lib/lang/cz_openvz_template_list.lng                           |    1 
 interface/web/sites/lib/lang/id_web_domain.lng                                  |    1 
 interface/web/admin/lib/lang/cz_tpl_default_admin.lng                           |    1 
 interface/web/dns/lib/lang/cz_dns_a.lng                                         |    1 
 interface/web/dns/lib/lang/el_dns_soa.lng                                       |   14 
 interface/web/admin/lib/lang/cz_server_php.lng                                  |    1 
 interface/web/client/lib/lang/ru_reseller.lng                                   |    5 
 interface/web/client/lib/lang/de_domain.lng                                     |    1 
 interface/web/admin/lib/lang/id_remote_action.lng                               |    2 
 interface/web/mail/lib/lang/de_spamfilter_config_list.lng                       |    1 
 interface/web/themes/default-304/templates/sites/aps_instances_list.htm         |  122 
 interface/web/monitor/lib/lang/de_datalog_list.lng                              |    1 
 interface/web/vm/lib/lang/cz_openvz_vm_list.lng                                 |    1 
 interface/web/monitor/show_data.php                                             |    7 
 interface/web/dashboard/lib/lang/fr_dashlet_mailquota.lng                       |   14 
 server/scripts/ispconfig_patch                                                  |  142 
 interface/web/themes/default/css/jquery-ui-1.8.16.custom.css                    |  890 +-
 interface/web/sites/lib/lang/ro_web_domain.lng                                  |    1 
 interface/web/sites/lib/lang/cz_web_domain_admin_list.lng                       |    1 
 interface/web/client/lib/lang/nl_reseller.lng                                   |    5 
 interface/web/mail/lib/lang/cz_mail_spamfilter_list.lng                         |    1 
 interface/web/mail/lib/lang/de_mail_aliasdomain_list.lng                        |    1 
 interface/web/admin/lib/lang/el_language_import.lng                             |    1 
 interface/web/sites/lib/lang/en_database_list.lng                               |    1 
 interface/web/admin/lib/lang/de_server_ip_list.lng                              |    1 
 interface/web/admin/lib/lang/ar_language_import.lng                             |    1 
 interface/web/sites/lib/lang/cz_webdav_user_list.lng                            |    1 
 interface/web/sites/lib/lang/el_web_backup_list.lng                             |   26 
 interface/web/sites/lib/lang/pt_database_list.lng                               |    1 
 interface/web/sites/lib/lang/cz_web_subdomain.lng                               |    1 
 interface/lib/classes/aps_guicontroller.inc.php                                 |   11 
 interface/web/sites/lib/lang/de_web_aliasdomain.lng                             |   71 
 interface/web/sites/lib/lang/de_database.lng                                    |   13 
 interface/web/mail/lib/lang/cz_spamfilter_users_list.lng                        |    1 
 interface/web/sites/lib/lang/it_web_domain.lng                                  |    1 
 interface/web/sites/templates/aps_packages_list.htm                             |  108 
 interface/web/dashboard/lib/lang/ro_dashlet_quota.lng                           |   14 
 interface/web/mailuser/lib/lang/el_mail_user_password.lng                       |   14 
 interface/lib/classes/remoting_lib.inc.php                                      |    2 
 interface/web/sites/lib/lang/hr_database_list.lng                               |    1 
 interface/web/sites/lib/lang/el_shell_user_list.lng                             |    4 
 interface/web/mail/lib/lang/cz_mail_user_stats_list.lng                         |    1 
 interface/web/client/lib/lang/it_reseller.lng                                   |    5 
 interface/web/sites/lib/lang/de_web_folder_user_list.lng                        |    1 
 interface/lib/classes/tools_monitor.inc.php                                     |   34 
 interface/web/client/lib/lang/cz_client_circle_list.lng                         |    1 
 interface/web/dashboard/lib/lang/se_dashlet_mailquota.lng                       |   14 
 install/tpl/amavisd_user_config.master                                          |    6 
 interface/web/mail/lib/lang/de_mail_mailinglist.lng                             |    1 
 interface/web/sites/lib/lang/cz_aps.lng                                         |    3 
 interface/web/client/lib/lang/ro_client.lng                                     |    5 
 interface/web/dashboard/lib/lang/ro_dashlet_mailquota.lng                       |   14 
 interface/lib/lang/en.lng                                                       |    3 
 interface/web/dns/lib/lang/de_dns_template_list.lng                             |    1 
 interface/web/admin/lib/lang/de_groups_list.lng                                 |    1 
 interface/web/admin/lib/lang/cz_remote_user_list.lng                            |    1 
 interface/web/mail/lib/lang/el.lng                                              |    4 
 interface/web/dashboard/lib/lang/ar_dashlet_mailquota.lng                       |   14 
 interface/web/mail/lib/lang/cz_spamfilter_blacklist.lng                         |    1 
 interface/web/dashboard/lib/lang/cz_dashlet_quota.lng                           |   15 
 interface/web/sites/lib/lang/cz_database_user_list.lng                          |    1 
 interface/web/vm/lib/lang/cz_openvz_action.lng                                  |    1 
 interface/web/help/lib/lang/cz_support_message_list.lng                         |    3 
 interface/web/sites/templates/web_aliasdomain_advanced.htm                      |   72 
 interface/web/dashboard/lib/lang/id_dashlet_mailquota.lng                       |   14 
 interface/web/sites/lib/lang/de_shell_user.lng                                  |   11 
 interface/web/admin/lib/lang/pt_remote_action.lng                               |    2 
 interface/web/sites/aps_packagedetails_show.php                                 |  198 
 interface/web/client/lib/lang/de_reseller.lng                                   |    6 
 interface/web/admin/lib/lang/cz_users.lng                                       |    1 
 interface/web/dns/lib/lang/cz_dns_ns.lng                                        |    1 
 interface/web/sites/lib/lang/el_database_user_admin_list.lng                    |    8 
 interface/web/mail/lib/lang/de_mail_transport_list.lng                          |    1 
 interface/web/mail/lib/lang/cz_mail_relay_recipient.lng                         |    3 
 interface/web/admin/lib/lang/de_language_edit.lng                               |    3 
 interface/web/client/lib/lang/id_reseller.lng                                   |    5 
 interface/web/sites/lib/lang/en_database_admin_list.lng                         |    3 
 interface/web/temp/empty.dir                                                    |    1 
 interface/web/sites/lib/lang/tr_database_admin_list.lng                         |    1 
 interface/web/monitor/form/empty.dir                                            |    1 
 install/update.php                                                              |   14 
 interface/web/sites/lib/lang/cz_web_vhost_subdomain_list.lng                    |    1 
 interface/web/mailuser/lib/lang/cz_mail_user_filter.lng                         |    1 
 interface/web/mail/lib/lang/de_mail_whitelist.lng                               |    1 
 interface/web/admin/lib/lang/cz_groups.lng                                      |    1 
 interface/web/vm/lib/lang/de_openvz_template.lng                                |    1 
 interface/web/sites/lib/lang/el_web_aliasdomain.lng                             |  140 
 interface/web/dns/lib/lang/de_dns_soa_list.lng                                  |    1 
 interface/web/mail/lib/lang/de_mail_alias_list.lng                              |    1 
 interface/web/vm/lib/lang/de_openvz_vm.lng                                      |    1 
 interface/web/admin/lib/lang/cz_users_list.lng                                  |    1 
 interface/web/admin/lib/lang/de_software_package_install.lng                    |    3 
 interface/web/client/lib/lang/ja_client.lng                                     |    5 
 interface/web/admin/lib/lang/de_remote_action.lng                               |    1 
 interface/web/sites/lib/lang/de_shell_user_list.lng                             |    1 
 interface/web/client/lib/lang/de_client_message.lng                             |    1 
 interface/web/sites/lib/lang/hu_database_admin_list.lng                         |    1 
 interface/web/dashboard/lib/lang/id_dashlet_quota.lng                           |   14 
 interface/web/sites/list/database.list.php                                      |   15 
 interface/web/admin/lib/lang/cz_iptables.lng                                    |    1 
 interface/web/admin/lib/lang/de.lng                                             |    1 
 interface/web/admin/lib/lang/de_server_ip.lng                                   |    7 
 interface/web/help/lib/lang/de.lng                                              |    1 
 interface/web/sites/lib/lang/de_user_quota_stats_list.lng                       |    7 
 interface/web/admin/lib/lang/ar_software_package.lng                            |    8 
 interface/web/sites/lib/lang/en_web_vhost_subdomain.lng                         |    4 
 interface/web/sites/lib/lang/cz_web_folder.lng                                  |    1 
 install/tpl/server.ini.master                                                   |   32 
 interface/web/dashboard/lib/lang/ja_dashlet_quota.lng                           |   14 
 interface/web/sites/lib/lang/sk_web_domain.lng                                  |    1 
 interface/web/sites/lib/lang/de_database_list.lng                               |    6 
 interface/web/sites/lib/lang/de_web_aliasdomain_list.lng                        |    9 
 interface/web/admin/lib/lang/de_software_update_list.lng                        |    1 
 interface/web/dashboard/lib/lang/sk_dashlet_quota.lng                           |   14 
 interface/web/vm/lib/lang/cz.lng                                                |    1 
 interface/web/designer/lib/lang/de_module_list.lng                              |    1 
 interface/web/mail/lib/lang/de_mail_domain_catchall.lng                         |    1 
 interface/web/admin/lib/lang/nl_remote_action.lng                               |    2 
 interface/web/sites/lib/lang/nl_database_list.lng                               |    1 
 interface/web/tools/lib/lang/de_usersettings.lng                                |    1 
 interface/lib/classes/listform.inc.php                                          |    7 
 interface/web/admin/lib/lang/bg_system_config.lng                               |    7 
 interface/web/dashboard/lib/lang/ar_dashlet_quota.lng                           |   14 
 interface/web/mail/lib/lang/cz_mail_user_filter.lng                             |    1 
 interface/web/sites/lib/lang/cz_aps_update_packagelist.lng                      |    7 
 interface/web/admin/lib/lang/cz_software_package.lng                            |    9 
 interface/web/mail/lib/lang/cz_user_quota_stats_list.lng                        |    5 
 interface/web/admin/lib/lang/ru_system_config.lng                               |    7 
 interface/web/client/lib/lang/sk_client.lng                                     |    5 
 interface/web/dashboard/lib/lang/fi_dashlet_mailquota.lng                       |   14 
 interface/web/dashboard/lib/lang/ja_dashlet_mailquota.lng                       |   14 
 /dev/null                                                                       |  166 
 interface/web/sites/lib/lang/cz_aps_packages_list.lng                           |    1 
 interface/web/mailuser/lib/lang/cz_mail_user_cc.lng                             |    1 
 interface/web/admin/lib/lang/hr_software_package.lng                            |    8 
 interface/web/dns/lib/lang/cz_dns_wizard.lng                                    |    1 
 871 files changed, 8,964 insertions(+), 8,836 deletions(-)

diff --git a/install/autoupdate.php b/install/autoupdate.php
index de53b24..e43cd51 100644
--- a/install/autoupdate.php
+++ b/install/autoupdate.php
@@ -285,7 +285,7 @@
 //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 61130a1..99fd2af 100644
--- a/install/dist/lib/fedora.lib.php
+++ b/install/dist/lib/fedora.lib.php
@@ -845,6 +845,7 @@
 		$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 @@
 		$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 382689c..8532088 100644
--- a/install/dist/lib/gentoo.lib.php
+++ b/install/dist/lib/gentoo.lib.php
@@ -725,6 +725,7 @@
 		$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 7a2fa26..e087772 100644
--- a/install/dist/lib/opensuse.lib.php
+++ b/install/dist/lib/opensuse.lib.php
@@ -900,6 +900,7 @@
 		$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 @@
 		$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 c6b85a3..adb1db5 100644
--- a/install/install.php
+++ b/install/install.php
@@ -34,6 +34,8 @@
 
 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 @@
 $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 @@
 	$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($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 @@
 	
 	//** 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 @@
 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 1e8459e..7bf502f 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -132,7 +132,7 @@
 		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 @@
 		exec('chown root:root '.$conf["squid"]["config_dir"].'/'.$configfile);
 	}
 
+	/*
 	public function configure_ufw_firewall()
 	{
 		$configfile = 'ufw.conf';
@@ -1374,8 +1375,9 @@
 		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 @@
 		$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 @@
 		$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 5beca81..b4e73ab 100644
--- a/install/lib/update.lib.php
+++ b/install/lib/update.lib.php
@@ -27,6 +27,15 @@
 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 @@
 		$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').': '.$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();
+				}
+				
 				$current_db_version = $next_db_version;
+				if(isset($php_patch)) unset($php_patch);
 			} else {
 				$found = false;
 			}
@@ -332,4 +368,6 @@
 	unset($new_ini);
 }
 
+
+
 ?>
diff --git a/install/patches/upd_0001.php b/install/patches/upd_0001.php
new file mode 100644
index 0000000..93d6967
--- /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 d55f0da..55eff84 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 d92bc32..7ad62b2 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 3a7c5d5..6f7a2e7 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 0000000..b8452fe
--- /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 0000000..087b499
--- /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 8480e76..24a0a98 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -26,24 +26,24 @@
 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 @@
   `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 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `client_template`
---
+-- 
 
 CREATE TABLE `client_template` (
   `template_id` int(11) unsigned NOT NULL auto_increment,
@@ -266,7 +267,7 @@
   `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 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- 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 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- 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 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `dns_rr`
---
+-- 
 
 CREATE TABLE `dns_rr` (
   `id` int(11) unsigned NOT NULL auto_increment,
@@ -442,9 +443,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `dns_soa`
---
+-- 
 
 CREATE TABLE `dns_soa` (
   `id` int(10) unsigned NOT NULL auto_increment,
@@ -474,9 +475,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `dns_template`
---
+-- 
 
 CREATE TABLE `dns_template` (
   `template_id` int(11) unsigned NOT NULL auto_increment,
@@ -510,9 +511,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `firewall`
---
+-- 
 
 CREATE TABLE `firewall` (
   `firewall_id` int(11) unsigned NOT NULL auto_increment,
@@ -530,9 +531,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `ftp_user`
---
+-- 
 
 CREATE TABLE `ftp_user` (
   `ftp_user_id` int(11) unsigned NOT NULL auto_increment,
@@ -624,9 +625,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `mail_access`
---
+-- 
 
 CREATE TABLE `mail_access` (
   `access_id` int(11) unsigned NOT NULL auto_increment,
@@ -646,9 +647,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- 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 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `mail_domain`
---
+-- 
 
 CREATE TABLE `mail_domain` (
   `domain_id` int(11) unsigned NOT NULL auto_increment,
@@ -681,9 +682,6 @@
   `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 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `mail_forwarding`
---
+-- 
 
 CREATE TABLE `mail_forwarding` (
   `forwarding_id` int(11) unsigned NOT NULL auto_increment,
@@ -715,9 +713,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `mail_get`
---
+-- 
 
 CREATE TABLE `mail_get` (
   `mailget_id` int(11) unsigned NOT NULL auto_increment,
@@ -781,9 +779,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `mail_traffic`
---
+-- 
 
 CREATE TABLE `mail_traffic` (
   `traffic_id` int(11) unsigned NOT NULL auto_increment,
@@ -796,9 +794,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `mail_transport`
---
+-- 
 
 CREATE TABLE `mail_transport` (
   `transport_id` int(11) unsigned NOT NULL auto_increment,
@@ -819,9 +817,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `mail_user`
---
+-- 
 
 CREATE TABLE `mail_user` (
   `mailuser_id` int(11) unsigned NOT NULL auto_increment,
@@ -865,9 +863,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- 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 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- 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 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `server`
---
+-- 
 
 CREATE TABLE `server` (
   `server_id` int(11) unsigned NOT NULL auto_increment,
@@ -1141,9 +1140,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `server_ip`
---
+-- 
 
 CREATE TABLE `server_ip` (
   `server_ip_id` int(11) unsigned NOT NULL auto_increment,
@@ -1217,9 +1216,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `software_package`
---
+-- 
 
 CREATE TABLE `software_package` (
   `package_id` int(11) unsigned NOT NULL auto_increment,
@@ -1240,9 +1239,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `software_repo`
---
+-- 
 
 CREATE TABLE `software_repo` (
   `software_repo_id` int(11) unsigned NOT NULL auto_increment,
@@ -1261,9 +1260,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `software_update`
---
+-- 
 
 CREATE TABLE `software_update` (
   `software_update_id` int(11) unsigned NOT NULL auto_increment,
@@ -1283,9 +1282,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- 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 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `spamfilter_policy`
---
+-- 
 
 CREATE TABLE `spamfilter_policy` (
   `id` int(11) unsigned NOT NULL auto_increment,
@@ -1352,9 +1351,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `spamfilter_users`
---
+-- 
 
 CREATE TABLE `spamfilter_users` (
   `id` int(11) unsigned NOT NULL auto_increment,
@@ -1375,9 +1374,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `spamfilter_wblist`
---
+-- 
 
 CREATE TABLE `spamfilter_wblist` (
   `wblist_id` int(11) unsigned NOT NULL auto_increment,
@@ -1397,9 +1396,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `support_message`
---
+-- 
 
 CREATE TABLE `support_message` (
   `support_message_id` int(11) unsigned NOT NULL auto_increment,
@@ -1432,8 +1431,23 @@
 -- --------------------------------------------------------
 
 --
--- 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,
@@ -1452,9 +1466,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `sys_dbsync`
---
+-- 
 
 CREATE TABLE `sys_dbsync` (
   `id` int(11) unsigned NOT NULL auto_increment,
@@ -1476,9 +1490,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `sys_filesync`
---
+-- 
 
 CREATE TABLE `sys_filesync` (
   `id` int(11) unsigned NOT NULL auto_increment,
@@ -1496,9 +1510,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `sys_group`
---
+-- 
 
 CREATE TABLE `sys_group` (
   `groupid` int(11) unsigned NOT NULL auto_increment,
@@ -1510,9 +1524,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `sys_ini`
---
+-- 
 
 CREATE TABLE `sys_ini` (
   `sysini_id` int(11) unsigned NOT NULL auto_increment,
@@ -1522,9 +1536,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `sys_log`
---
+-- 
 
 CREATE TABLE `sys_log` (
   `syslog_id` int(11) unsigned NOT NULL auto_increment,
@@ -1590,9 +1604,9 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- Table structure for table  `sys_user`
---
+-- 
 
 CREATE TABLE `sys_user` (
   `userid` int(11) unsigned NOT NULL auto_increment,
@@ -1613,7 +1627,7 @@
   `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 @@
   `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 @@
   `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 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- 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 @@
 
 -- --------------------------------------------------------
 
---
+-- 
 -- 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 @@
 --
 -- 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 f377955..c89f875 100644
--- a/install/tpl/amavisd_user_config.master
+++ b/install/tpl/amavisd_user_config.master
@@ -75,12 +75,6 @@
 # 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 8c8bedd..b217603 100644
--- a/install/tpl/config.inc.php.master
+++ b/install/tpl/config.inc.php.master
@@ -148,9 +148,11 @@
 $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 5f9f867..d0d8a87 100644
--- a/install/tpl/opensuse_amavisd_conf.master
+++ b/install/tpl/opensuse_amavisd_conf.master
@@ -778,11 +778,5 @@
 $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 d22a072..b822131 100644
--- a/install/tpl/server.ini.master
+++ b/install/tpl/server.ini.master
@@ -5,13 +5,12 @@
 
 
 [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 @@
 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_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 @@
 [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 @@
 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 abb8931..14a75e4 100644
--- a/install/tpl/system.ini.master
+++ b/install/tpl/system.ini.master
@@ -23,7 +23,6 @@
 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 b7753dc..1999bc0 100644
--- a/install/update.php
+++ b/install/update.php
@@ -34,6 +34,8 @@
 
 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 @@
 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($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($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 0000000..95ba9ef
--- /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 4c1512b..b8f6ad9 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 2c6906e..00b1d76 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 5a5cbe9..5d1c79f 100644
--- a/interface/lib/classes/aps_guicontroller.inc.php
+++ b/interface/lib/classes/aps_guicontroller.inc.php
@@ -728,9 +728,8 @@
             // 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 @@
                 // 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 @@
         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 17aa7a2..35bf7d5 100644
--- a/interface/lib/classes/custom_datasource.inc.php
+++ b/interface/lib/classes/custom_datasource.inc.php
@@ -105,6 +105,9 @@
 			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 0000000..95ba9ef
--- /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 197c406..ef3a52f 100644
--- a/interface/lib/classes/listform.inc.php
+++ b/interface/lib/classes/listform.inc.php
@@ -199,9 +199,10 @@
 			$_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 2e0fdc5..a527f23 100644
--- a/interface/lib/classes/plugin_backuplist.inc.php
+++ b/interface/lib/classes/plugin_backuplist.inc.php
@@ -57,7 +57,12 @@
 					
 					//* 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 0c40a86..7ecc663 100644
--- a/interface/lib/classes/remoting_lib.inc.php
+++ b/interface/lib/classes/remoting_lib.inc.php
@@ -785,7 +785,7 @@
                 } 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 d6d2045..4fcb2c3 100644
--- a/interface/lib/classes/simplepie.inc.php
+++ b/interface/lib/classes/simplepie.inc.php
@@ -9200,7 +9200,7 @@
 		return $return;
 	}
 
-	function element_implode($element)
+	static function element_implode($element)
 	{
 		$full = "<$element[tag]";
 		foreach ($element['attribs'] as $key => $value)
@@ -10879,7 +10879,7 @@
 	 * @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 f4ea0d7..7cefb22 100644
--- a/interface/lib/classes/tform.inc.php
+++ b/interface/lib/classes/tform.inc.php
@@ -7,14 +7,14 @@
 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 @@
 
 class tform {
 
-		/**
-		* Definition of the database table (array)
-		* @var tableDef
-		*/
-		var $tableDef;
+        /**
+        * Definition of the database table (array)
+        * @var tableDef
+        */
+        var $tableDef;
 
-		/**
-		* Private
-		* @var action
-		*/
-		var $action;
+        /**
+        * Private
+        * @var action
+        */
+        var $action;
 
-		/**
-		* Table name (String)
-		* @var table_name
-		*/
-		var $table_name;
+        /**
+        * Table name (String)
+        * @var table_name
+        */
+        var $table_name;
 
-		/**
-		* Debug Variable
-		* @var debug
-		*/
-		var $debug = 0;
+        /**
+        * Debug Variable
+        * @var debug
+        */
+        var $debug = 0;
 
-		/**
-		* name of the primary field of the database table (string)
-		* @var table_index
-		*/
-		var $table_index;
+        /**
+        * name of the primary field of the database table (string)
+        * @var table_index
+        */
+        var $table_index;
 
-		/**
-		* contains the error messages
-		* @var errorMessage
-		*/
-		var $errorMessage = '';
+        /**
+        * contains the error messages
+        * @var errorMessage
+        */
+        var $errorMessage = '';
 
-		var $dateformat = "d.m.Y";
-		var $formDef = array();
-		var $wordbook;
-		var $module;
-		var $primary_id;
+        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;
+        /**
+        * 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;
-		}
-		*/
+                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;
+    function loadFormDef($file,$module = '') {
+                global $app,$conf;
 
-				include($file);
-				$this->formDef = $form;
+                include($file);
+                $this->formDef = $form;
 
-				$this->module = $module;
+                $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 'VARCHAR':
+                                        $new_record[$key] = $record[$key];
+                                break;
 
-								case 'TEXT':
-										$new_record[$key] = $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 '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;
+                                                $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 'INTEGER':
+                                        $new_record[$key] = $app->functions->intval($record[$key]);
+                                break;
 
-								case 'DOUBLE':
-										$new_record[$key] = $record[$key];
-								break;
+                                case 'DOUBLE':
+                                        $new_record[$key] = $record[$key];
+                                break;
 
-								case 'CURRENCY':
-										$new_record[$key] = $app->functions->currency_format($record[$key]);
-								break;
+                                case 'CURRENCY':
+                                        $new_record[$key] = $app->functions->currency_format($record[$key]);
+                                break;
 
-								default:
-										$new_record[$key] = $record[$key];
-								}
-						}
+                                default:
+                                        $new_record[$key] = $record[$key];
+                                }
+                        }
 
-				}
+                }
+				
+        return $new_record;
+        }
 
-		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
+        */
 
-		/**
-		* 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;
 
-		function getDatasourceData($field, $record) {
-				global $app;
+                $values = array();
 
-				$values = array();
+                if($field["datasource"]["type"] == 'SQL') {
 
-				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'];
-
+                        // 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];
+                                }
+                        }
+                }
 
-						$querystring = str_replace("{AUTHSQL}",$this->getAuthSQL('r'),$querystring);
+                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);
+                }
 
-						// 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];
-								}
-						}
-				}
+                return $values;
 
-				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 @@
 					$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 @@
 					//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 @@
 					}
 				} // 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 @@
 				$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') {
+        /**
+        * 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;
+                global $app;
 
-				$this->action = $action;
+                $this->action = $action;
 
-				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(!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).");
 
-				$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])) {
+                $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'])) {
+                                                                $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);
+                                                        // Split
+                                                        $vals = explode($field['separator'],$val);
 
-														// write HTML
-														$out = '';
-														foreach($field['value'] as $k => $v) {
+                                                        // write HTML
+                                                        $out = '';
+                                                        foreach($field['value'] as $k => $v) {
 
-																$selected = '';
-																foreach($vals as $tvl) {
-																		if(trim($tvl) == trim($k)) $selected = ' SELECTED';
-																}
+                                                                $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;
+                                                                $out .= "<option value='$k'$selected>$v</option>\r\n";
+                                                        }
+                                                }
+                                                $new_record[$key] = $out;
+                                        break;
 
-										case 'PASSWORD':
-												$new_record[$key] = '';
-										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 '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'])) {
+                                        case 'CHECKBOXARRAY':
+                                                if(is_array($field['value'])) {
 
-														// aufsplitten ergebnisse
-														$vals = explode($field['separator'],$val);
+                                                        // aufsplitten ergebnisse
+                                                        $vals = explode($field['separator'],$val);
 
-														// 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><br/>\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 == $val)?' 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 == $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;
+                                                                $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;
 
-										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:
+                                        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) {
+                                        }
+                                }
+                        }
+                } 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"])) {
+                                // 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;
+                                                        $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;
 
-								case 'DATETIME':
-										$dt_value = (isset($field['default'])) ? $field['default'] : 0;
-										$display_seconds = (isset($field['display_seconds']) && $field['display_seconds'] == true) ? true : false;
+                                default:
+                                        $new_record[$key] = htmlspecialchars($field['default']);
+                                }
+                        }
 
-										$new_record[$key] = $this->_getDateTimeHTML($key, $dt_value, $display_seconds);
-								break;
+                }
 
-								default:
-										$new_record[$key] = htmlspecialchars($field['default']);
-								}
-						}
+                if($this->debug == 1) $this->dbg($new_record);
 
-				}
+                return $new_record;
+        }
 
-				if($this->debug == 1) $this->dbg($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 @@
 									$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 @@
 													$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;
+                                        //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;
+                                }
 
-								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";
-										}
-								}
-
+                                // 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 @@
 					}
 				}
 			}
-			return $returnval;
-		}
+            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
-		*/
+        /**
+        * 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) {
+        function validateField($field_name, $field_value, $validators) {
 
-				global $app;
-
+                global $app;
+				
 				$escape = '`';
+				
+                // loop trough the validators
+                foreach($validators as $validator) {
 
-				// 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";
+                        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 @@
 										}
 									}
 								}
-								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 @@
 											} 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;
-		}
+                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 = '') {
+        /**
+        * 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;
+                global $app;
 
-				// If there are no data records on the tab, return empty sql string
-				if(count($this->formDef['tabs'][$tab]['fields']) == 0) return '';
+                // 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";
-						}
-				}
+                // 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;
+                $this->action = $action;
+                $this->primary_id = $primary_id;
 
-				$record = $this->encode($record,$tab,true);
-				$sql_insert_key = '';
-				$sql_insert_val = '';
-				$sql_update = '';
+                $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).");
+                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') {
+                // 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 @@
 																$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 @@
 														} 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 @@
 																$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 @@
 														} 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 = '`';
-				}
+                // 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($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($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"];
 
-				// 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;
+            }
 
-				// Generate the template if it does not exist yet.
+                        // Unset unused variables.
+                        unset($tab["fields"]);
+                        unset($tab["plugins"]);
 
+            $frmTab[] = $tab;
+        }
 
+        // setting form tabs
+        $app->tpl->setLoop("formTab", $frmTab);
 
-				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;
-			}
+                // Set form action
+                $app->tpl->setVar('form_action',$this->formDef["action"]);
+                $app->tpl->setVar('form_active_tab',$active_tab);
 
-						// Unset unused variables.
-						unset($tab["fields"]);
-						unset($tab["plugins"]);
+                // 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);
 
-			$frmTab[] = $tab;
-		}
+                // Set Wordbook for this form
 
-		// 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);
-		}
+                $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 .= ')';
+                	$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;
+                	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;
+        /*
+        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 = '`';
-						}
+                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;
+                        $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;
+                        // 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;
+                        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"];
-				}
+        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;
-		}
+                return $active_tab;
+        }
 
-		function getCurrentTab() {
-				return $_SESSION["s"]["form"]["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 @@
 				$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 @@
 					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 @@
 					}
 				}
 			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 @@
 			$_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 @@
 			 			}
 			 			$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 @@
 						$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 d60ecbf..b181be0 100644
--- a/interface/lib/classes/tform_actions.inc.php
+++ b/interface/lib/classes/tform_actions.inc.php
@@ -77,7 +77,16 @@
 
         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 42defa0..121ab93 100644
--- a/interface/lib/classes/tools_monitor.inc.php
+++ b/interface/lib/classes/tools_monitor.inc.php
@@ -453,40 +453,6 @@
         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 12c0945..0000000
--- 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 0c30719..1683c6e 100644
--- a/interface/lib/lang/cz.lng
+++ b/interface/lib/lang/cz.lng
@@ -71,7 +71,7 @@
 $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_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 328b520..a528176 100644
--- a/interface/lib/lang/de.lng
+++ b/interface/lib/lang/de.lng
@@ -134,3 +134,4 @@
 $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 b633c1b..580f737 100644
--- a/interface/lib/lang/el.lng
+++ b/interface/lib/lang/el.lng
@@ -69,68 +69,68 @@
 $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 47b6115..1d689f0 100644
--- a/interface/lib/lang/en.lng
+++ b/interface/lib/lang/en.lng
@@ -135,4 +135,7 @@
 $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 4913b64..c49d825 100644
--- a/interface/lib/shelluser_blacklist
+++ b/interface/lib/shelluser_blacklist
@@ -31,5 +31,4 @@
 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 0000000..95ba9ef
--- /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 0000000..95ba9ef
--- /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 0bc490f..c2adbdc 100644
--- a/interface/web/admin/form/server_config.tform.php
+++ b/interface/web/admin/form/server_config.tform.php
@@ -83,20 +83,22 @@
 					'errmsg' => 'netmask_error_wrong'),
 			),
 			'value' => '',
-			'width' => '15',
-			'maxlength' => '255'
+			'width' => '15',
+			'maxlength' => '255'
 		),
-		'v6_prefix' => array(
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
-						'validators' => array(0 => array('type' => 'ISV6PREFIX',
-										'errmsg' => 'v6_prefix_wrong'),
-						),
-		'default' => ''
+		/*
+		'v6_prefix' => array(
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+                        'validators' => array(0 => array('type' => 'ISV6PREFIX',
+                                        'errmsg' => 'v6_prefix_wrong'),
+                        ),
+		'default' => ''
 		),
-		'gateway' => array(
-			'datatype' => 'VARCHAR',
-			'formtype' => 'TEXT',
+		*/
+		'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 @@
 			'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 @@
 			'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 @@
 			'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 @@
 			'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 @@
 			'formtype' => 'TEXT',
 			'default' => '7',
 			'value' => '',
-			'width' => '20',
-			'maxlength' => '255'
+            'width' => '20',
+            'maxlength' => '255'
 		),
 		'overquota_notify_onok' => array(
 			'datatype' => 'VARCHAR',
@@ -517,20 +506,20 @@
 			'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 @@
 			'formtype' => 'TEXT',
 			'default' => '7',
 			'value' => '',
-			'width' => '20',
-			'maxlength' => '255'
+            'width' => '20',
+            'maxlength' => '255'
 		),
 		'overquota_notify_onok' => array(
 			'datatype' => 'VARCHAR',
@@ -816,17 +805,6 @@
 			'value' => '',
 			'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',
@@ -1301,12 +1279,6 @@
 			'value' => array(0 => 'n', 1 => 'y')
 		),
 		'do_not_try_rescue_httpd' => array(
-			'datatype' => 'VARCHAR',
-			'formtype' => 'CHECKBOX',
-			'default' => 'n',
-			'value' => array(0 => 'n', 1 => 'y')
-		),
-		'do_not_try_rescue_mongodb' => array(
 			'datatype' => 'VARCHAR',
 			'formtype' => 'CHECKBOX',
 			'default' => 'n',
diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php
index f09d4db..d04923b 100644
--- a/interface/web/admin/form/system_config.tform.php
+++ b/interface/web/admin/form/system_config.tform.php
@@ -160,12 +160,6 @@
 			'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 @@
 	##################################
 	# 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 208f1ac..ffba65d 100644
--- a/interface/web/admin/language_edit.php
+++ b/interface/web/admin/language_edit.php
@@ -85,7 +85,7 @@
 $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 285be11..c25406a 100644
--- a/interface/web/admin/language_import.php
+++ b/interface/web/admin/language_import.php
@@ -30,12 +30,94 @@
 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');
 
 //* This is only allowed for administrators
 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');
 
@@ -58,7 +140,9 @@
 			$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 @@
 					$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 4c31ec3..a5831fc 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['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 3fc3eaf..f268527 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['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 62ef734..faffe38 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 11604d3..a534fa7 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['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 0cd38ee..40e0633 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['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 48f3505..e9aa121 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['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 62ef734..faffe38 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 e3c6678..282ab42 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['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 290335b..ba519c5 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['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 420f2cc..d6578c9 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['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 62ef734..faffe38 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 3bc0172..544fcc1 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['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 bc1c9bb..23a64d8 100644
--- a/interface/web/admin/lib/lang/cz.lng
+++ b/interface/web/admin/lib/lang/cz.lng
@@ -48,3 +48,4 @@
 $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 c6a8909..085aec4 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['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 c6f444b..c8cedfe 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['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 c6146ae..abe744f 100644
--- a/interface/web/admin/lib/lang/cz_firewall.lng
+++ b/interface/web/admin/lib/lang/cz_firewall.lng
@@ -9,3 +9,4 @@
 $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 aecc4cf..76ee5c0 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['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 a6281be..b7bb634 100644
--- a/interface/web/admin/lib/lang/cz_groups.lng
+++ b/interface/web/admin/lib/lang/cz_groups.lng
@@ -3,3 +3,4 @@
 $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 c1d7ef9..9bc2c9e 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['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 a40fc04..b7d736e 100644
--- a/interface/web/admin/lib/lang/cz_iptables.lng
+++ b/interface/web/admin/lib/lang/cz_iptables.lng
@@ -11,3 +11,4 @@
 $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 65cef75..02177f6 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['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 285dff2..3af00bf 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['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 f1e6f49..5f1b2f7 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['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 2a71ed0..086e166 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['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 7998eea..54f138a 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['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 838c325..11e42f8 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['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 b2a7863..49614e0 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['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 3f8e849..0f09d10 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['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 64a190d..843bab6 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_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 e1908e2..536ccfb 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['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 17c4f05..c75c165 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['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 66b6494..c466a2a 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['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 a087656..ced7e5f 100644
--- a/interface/web/admin/lib/lang/cz_server.lng
+++ b/interface/web/admin/lib/lang/cz_server.lng
@@ -13,3 +13,4 @@
 $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 049da22..18e833e 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['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_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 2118c35..9a56c34 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 43a382a..4f013b5 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['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 93b0b77..3aaa3ab 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_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 ecddbf2..437f376 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['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 10aba05..fc8f7ad 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_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 36b28fe..25b95f9 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['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 62ef734..b6421ba 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 0d079ef..77941a0 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['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 9d227ac..ec1b967 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['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 6e200d8..572d331 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['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 5c82d4c..d45b792 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['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 c48ad8c..467fd5f 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['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 167b933..4080437 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['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 480d504..efecb6d 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_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 16f4812..0324f16 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_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 e5a7d1e..37b0e7e 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['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 0a7af75..152c829 100644
--- a/interface/web/admin/lib/lang/de.lng
+++ b/interface/web/admin/lib/lang/de.lng
@@ -48,3 +48,4 @@
 $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 7a9b756..9c93c4c 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['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 a19d5e8..d3109a1 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['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 92b7327..a475290 100644
--- a/interface/web/admin/lib/lang/de_firewall.lng
+++ b/interface/web/admin/lib/lang/de_firewall.lng
@@ -9,3 +9,4 @@
 $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 aefad61..77172d0 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['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 80abd65..b29c099 100644
--- a/interface/web/admin/lib/lang/de_groups.lng
+++ b/interface/web/admin/lib/lang/de_groups.lng
@@ -3,3 +3,4 @@
 $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 2447431..23492f1 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['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 3e55532..9d0a395 100644
--- a/interface/web/admin/lib/lang/de_iptables.lng
+++ b/interface/web/admin/lib/lang/de_iptables.lng
@@ -6,8 +6,9 @@
 $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 378db79..467368f 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['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 118bdee..7d7234a 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_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 1376e0c..015bd17 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_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 30ab21b..139b679 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['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 70eb466..2674634 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 29ee030..bd79ce6 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['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 bf75420..6d4a7ae 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['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 1edec36..2388e2e 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['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 bbacc85..f54fbfe 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_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 786f03e..3fdfbb8 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['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 9e7d2a0..9f2bdf5 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_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 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 4a3c6fe..a0485a9 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['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 50f8090..12d2ba7 100644
--- a/interface/web/admin/lib/lang/de_server.lng
+++ b/interface/web/admin/lib/lang/de_server.lng
@@ -13,3 +13,4 @@
 $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 acb6b3d..612efe7 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['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['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 191b2c8..9ff7f9b 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 5757b16..26aff5d 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 37f237c..9b36a5a 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_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 e38a5db..193dbc9 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['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 9b26ea3..30f527a 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_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 d775fc6..712beda 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['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 4c3431b..7f15045 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 1ef69d1..842846d 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 75b7504..3d05553 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 2a8cf15..50e5019 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 db6f49f..133ef3a 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 cf31e88..e5a3ca7 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['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 217b95d..2490768 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['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 9767400..fda3af0 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_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 413a402..fd09475 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_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 c635ba7..8cb2a46 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['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 010a550..4926ef2 100644
--- a/interface/web/admin/lib/lang/el.lng
+++ b/interface/web/admin/lib/lang/el.lng
@@ -26,13 +26,14 @@
 $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['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 d836ab0..3bdc1e2 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 4124ea3..1461c4e 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 ff31bab..a0003f4 100644
--- a/interface/web/admin/lib/lang/el_firewall.lng
+++ b/interface/web/admin/lib/lang/el_firewall.lng
@@ -5,7 +5,7 @@
 $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 4bb61c4..8350469 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['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 c660ff1..b93f01b 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 fc0e448..4d94878 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_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 ddffd70..8b79d61 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['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 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 99bdf6f..169a560 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['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 212f432..c858124 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['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 addbfa4..be99452 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 b402fd1..06c17a3 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 62ef734..16be47e 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 1553ea1..515dbb7 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_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 42100d0..69c7026 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['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 f69e58a..1660f18 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['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 eee3af5..88053db 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 3323424..201d831 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_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['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 b61af25..a1b33ca 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['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 a554c6c..0314af1 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 1f1ad0d..36a6791 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["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_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["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_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 7c5fe6e..1b370b4 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["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 7f2b25b..dd10346 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['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 62ef734..faffe38 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 118a0df..a4d878c 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['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 d8e5eac..b7da40e 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['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 3fc3eaf..f268527 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['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 62ef734..faffe38 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 c2c1dab..75658ee 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['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 710847c..a7298a4 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['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 58fb499..3df14f3 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['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 62ef734..faffe38 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 561a5d7..262bbe3 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['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 6a31f39..3f20305 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['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 62ef734..faffe38 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 2ff0cbc..63f816b 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['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 fe83344..a90f3ee 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['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 6ef0ebe..8fe6314 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['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 62ef734..faffe38 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 ee5f429..5008284 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['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 5a1b302..e5e2b06 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['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 bfe758a..3a1b851 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['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 62ef734..faffe38 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 ecbf3c7..81997b7 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['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 9762557..a6ce438 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['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 3fc3eaf..f268527 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['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 62ef734..faffe38 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 8ba0b9f..bc26da2 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['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 4c55514..eab1229 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['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 3fc3eaf..f268527 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['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 62ef734..faffe38 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 842b65f..df99e6e 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['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 cee58cb..ae407ef 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['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 ae286d9..c0046ff 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['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 62ef734..faffe38 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 fe3b85e..b49eb07 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['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['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 077d0c0..5fd3212 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['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 83fbc9e..7d03089 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['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 62ef734..faffe38 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 9d4f6f5..a3cd3c6 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['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 440cee5..919014d 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['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 3fc3eaf..f268527 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['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 62ef734..faffe38 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 32ed93f..49bd93e 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['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 fefae80..4b36072 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['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 3fc3eaf..f268527 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['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 62ef734..faffe38 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 d237d63..e2b701a 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['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 c63cc14..29b5cbf 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['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 3fc3eaf..f268527 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['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 62ef734..faffe38 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 ee0fc50..612fe50 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['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 4c31ec3..a5831fc 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['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 3fc3eaf..f268527 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['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 62ef734..faffe38 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 d237d63..e2b701a 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['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 d842fc6..5dacacf 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['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 3fc3eaf..f268527 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['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 62ef734..faffe38 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 3b8b683..1340eee 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['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 2caaa07..77173d5 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['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 3fc3eaf..f268527 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['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 62ef734..faffe38 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 e538a31..8a5fd3a 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['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 d6d071a..5444002 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 23228d4..283c5e7 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 523ec67..e374705 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 85ea2a9..d674b20 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 6ab03eb..752bc22 100644
--- a/interface/web/admin/templates/server_config_mail_edit.htm
+++ b/interface/web/admin/templates/server_config_mail_edit.htm
@@ -20,10 +20,6 @@
                 <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">
                     <select name="pop3_imap_daemon" id="pop3_imap_daemon" class="selectInput">
@@ -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 28b5cb4..778225b 100644
--- a/interface/web/admin/templates/server_config_rescue_edit.htm
+++ b/interface/web/admin/templates/server_config_rescue_edit.htm
@@ -18,12 +18,6 @@
                 </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">
                     {tmpl_var name='do_not_try_rescue_mysql'}
@@ -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 6dab52f..93158d7 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 6656634..7e75f50 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 2c4c2e1..80ab5a5 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 e9c0c0e..3c8cf2b 100644
--- a/interface/web/admin/templates/system_config_mail_edit.htm
+++ b/interface/web/admin/templates/system_config_mail_edit.htm
@@ -12,24 +12,6 @@
                 </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">
                     {tmpl_var name='mailboxlist_webmail_link'}
@@ -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 65f37b7..78c51b0 100644
--- a/interface/web/admin/templates/system_config_sites_edit.htm
+++ b/interface/web/admin/templates/system_config_sites_edit.htm
@@ -45,16 +45,10 @@
                     {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>
@@ -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 fc9de0b..73c43bb 100644
--- a/interface/web/client/client_message.php
+++ b/interface/web/client/client_message.php
@@ -91,10 +91,15 @@
 				//* 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 @@
 $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 0c1d0f6..ab6fb94 100644
--- a/interface/web/client/lib/lang/ar_client.lng
+++ b/interface/web/client/lib/lang/ar_client.lng
@@ -144,4 +144,9 @@
 $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 32c9bb1..53c9071 100644
--- a/interface/web/client/lib/lang/ar_reseller.lng
+++ b/interface/web/client/lib/lang/ar_reseller.lng
@@ -143,4 +143,9 @@
 $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 229dace..032b0e3 100644
--- a/interface/web/client/lib/lang/bg_client.lng
+++ b/interface/web/client/lib/lang/bg_client.lng
@@ -144,4 +144,9 @@
 $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 857e4a8..c028748 100644
--- a/interface/web/client/lib/lang/bg_reseller.lng
+++ b/interface/web/client/lib/lang/bg_reseller.lng
@@ -143,4 +143,9 @@
 $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 ae2c122..1155955 100644
--- a/interface/web/client/lib/lang/br_client.lng
+++ b/interface/web/client/lib/lang/br_client.lng
@@ -144,4 +144,9 @@
 $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 2fa5368..6d248b7 100644
--- a/interface/web/client/lib/lang/br_reseller.lng
+++ b/interface/web/client/lib/lang/br_reseller.lng
@@ -143,4 +143,9 @@
 $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 8efa987..fa1c78d 100644
--- a/interface/web/client/lib/lang/cz.lng
+++ b/interface/web/client/lib/lang/cz.lng
@@ -23,3 +23,4 @@
 $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 d5980d1..e0a57d7 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_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_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_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['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 f26e2d6..c47f934 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['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 e827605..5895f82 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['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 ca1a13f..255b542 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['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 d980d55..401908d 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_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 5c84069..22c5301 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_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_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_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['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 675da95..d560efb 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 9657cb7..bceac34 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['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 34ba70c..eabdb6d 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 6cf7376..88df838 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['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 07af2a4..3ba47ac 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_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_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_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_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 8e72797..859c97f 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['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 ba66401..9e28df2 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_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 4aa8abd..985be6d 100644
--- a/interface/web/client/lib/lang/de_client.lng
+++ b/interface/web/client/lib/lang/de_client.lng
@@ -37,7 +37,7 @@
 $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_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['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_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['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 b6aee46..c13e9a2 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['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 f69b755..2e7e25e 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['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 d13fcfa..54a9621 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_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 f4def30..457cf6c 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_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 506c61e..c67a423 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['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 552035f..5e62e72 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_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 a6bdd6a..65604d8 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['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 eb4276a..339c6ff 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_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 b066bff..4198e90 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['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 9bc4d53..ee35eda 100644
--- a/interface/web/client/lib/lang/de_reseller.lng
+++ b/interface/web/client/lib/lang/de_reseller.lng
@@ -143,9 +143,5 @@
 $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 0f688c5..890b484 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['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 6fe28b2..7d4f4fa 100644
--- a/interface/web/client/lib/lang/el.lng
+++ b/interface/web/client/lib/lang/el.lng
@@ -10,16 +10,16 @@
 $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 ba5c682..d66de25 100644
--- a/interface/web/client/lib/lang/el_client.lng
+++ b/interface/web/client/lib/lang/el_client.lng
@@ -17,7 +17,7 @@
 $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['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['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 f98a144..54aa0bc 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 00fd0b3..cb7ef18 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 12f491e..ea48006 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 8829657..2560fc0 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_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['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 56abc62..bda0870 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['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 507f895..b152f93 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 c920ab6..4746719 100644
--- a/interface/web/client/lib/lang/el_reseller.lng
+++ b/interface/web/client/lib/lang/el_reseller.lng
@@ -16,7 +16,7 @@
 $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['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['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 74edc05..73e3527 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['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 ab37d76..c04bd6c 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["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 d38b0b9..1df85c6 100644
--- a/interface/web/client/lib/lang/es_client.lng
+++ b/interface/web/client/lib/lang/es_client.lng
@@ -144,4 +144,9 @@
 $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 ea07f21..98a171c 100644
--- a/interface/web/client/lib/lang/es_reseller.lng
+++ b/interface/web/client/lib/lang/es_reseller.lng
@@ -143,4 +143,9 @@
 $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 317c024..791f7c0 100755
--- a/interface/web/client/lib/lang/fi_client.lng
+++ b/interface/web/client/lib/lang/fi_client.lng
@@ -144,4 +144,9 @@
 $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 ed9ebd1..4948475 100644
--- a/interface/web/client/lib/lang/fi_reseller.lng
+++ b/interface/web/client/lib/lang/fi_reseller.lng
@@ -143,4 +143,9 @@
 $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 84400ca..b6ecfba 100644
--- a/interface/web/client/lib/lang/fr_client.lng
+++ b/interface/web/client/lib/lang/fr_client.lng
@@ -144,4 +144,9 @@
 $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 f00be20..6090bff 100644
--- a/interface/web/client/lib/lang/fr_reseller.lng
+++ b/interface/web/client/lib/lang/fr_reseller.lng
@@ -143,4 +143,9 @@
 $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 ed38e03..31c8293 100644
--- a/interface/web/client/lib/lang/hr_client.lng
+++ b/interface/web/client/lib/lang/hr_client.lng
@@ -144,4 +144,9 @@
 $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 1de56c7..f014052 100644
--- a/interface/web/client/lib/lang/hr_reseller.lng
+++ b/interface/web/client/lib/lang/hr_reseller.lng
@@ -143,4 +143,9 @@
 $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 7bcaccc..dca88c9 100644
--- a/interface/web/client/lib/lang/hu_client.lng
+++ b/interface/web/client/lib/lang/hu_client.lng
@@ -144,4 +144,9 @@
 $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 019bbc1..eaeae52 100644
--- a/interface/web/client/lib/lang/hu_reseller.lng
+++ b/interface/web/client/lib/lang/hu_reseller.lng
@@ -143,4 +143,9 @@
 $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 339a310..1788f87 100644
--- a/interface/web/client/lib/lang/id_client.lng
+++ b/interface/web/client/lib/lang/id_client.lng
@@ -144,4 +144,9 @@
 $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 3c49f04..2d63f50 100644
--- a/interface/web/client/lib/lang/id_reseller.lng
+++ b/interface/web/client/lib/lang/id_reseller.lng
@@ -143,4 +143,9 @@
 $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 bb6b4e9..8042eef 100644
--- a/interface/web/client/lib/lang/it_client.lng
+++ b/interface/web/client/lib/lang/it_client.lng
@@ -144,4 +144,9 @@
 $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 32c9bb1..53c9071 100644
--- a/interface/web/client/lib/lang/it_reseller.lng
+++ b/interface/web/client/lib/lang/it_reseller.lng
@@ -143,4 +143,9 @@
 $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 85e35b9..d436726 100644
--- a/interface/web/client/lib/lang/ja_client.lng
+++ b/interface/web/client/lib/lang/ja_client.lng
@@ -144,4 +144,9 @@
 $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 9f3251d..79bd2aa 100644
--- a/interface/web/client/lib/lang/ja_reseller.lng
+++ b/interface/web/client/lib/lang/ja_reseller.lng
@@ -143,4 +143,9 @@
 $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 42bea64..22d2c11 100644
--- a/interface/web/client/lib/lang/nl_client.lng
+++ b/interface/web/client/lib/lang/nl_client.lng
@@ -144,4 +144,9 @@
 $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 cf87157..9495601 100644
--- a/interface/web/client/lib/lang/nl_reseller.lng
+++ b/interface/web/client/lib/lang/nl_reseller.lng
@@ -143,4 +143,9 @@
 $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 3f8ac0c..342312a 100644
--- a/interface/web/client/lib/lang/pl_client.lng
+++ b/interface/web/client/lib/lang/pl_client.lng
@@ -144,4 +144,9 @@
 $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 63e4c23..c1bf221 100644
--- a/interface/web/client/lib/lang/pl_reseller.lng
+++ b/interface/web/client/lib/lang/pl_reseller.lng
@@ -143,4 +143,9 @@
 $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 9e43b0f..18d2e62 100644
--- a/interface/web/client/lib/lang/pt_client.lng
+++ b/interface/web/client/lib/lang/pt_client.lng
@@ -144,4 +144,9 @@
 $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 d2f34e9..2e00895 100644
--- a/interface/web/client/lib/lang/pt_reseller.lng
+++ b/interface/web/client/lib/lang/pt_reseller.lng
@@ -143,4 +143,9 @@
 $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 50dd005..c2a4f11 100644
--- a/interface/web/client/lib/lang/ro_client.lng
+++ b/interface/web/client/lib/lang/ro_client.lng
@@ -144,4 +144,9 @@
 $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 32c9bb1..53c9071 100644
--- a/interface/web/client/lib/lang/ro_reseller.lng
+++ b/interface/web/client/lib/lang/ro_reseller.lng
@@ -143,4 +143,9 @@
 $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 1bd8e59..cafaf6b 100644
--- a/interface/web/client/lib/lang/ru_client.lng
+++ b/interface/web/client/lib/lang/ru_client.lng
@@ -144,4 +144,9 @@
 $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 29975f2..f95786f 100644
--- a/interface/web/client/lib/lang/ru_reseller.lng
+++ b/interface/web/client/lib/lang/ru_reseller.lng
@@ -143,4 +143,9 @@
 $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 c2a31de..78cecfa 100644
--- a/interface/web/client/lib/lang/se_client.lng
+++ b/interface/web/client/lib/lang/se_client.lng
@@ -144,4 +144,9 @@
 $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 32c9bb1..53c9071 100644
--- a/interface/web/client/lib/lang/se_reseller.lng
+++ b/interface/web/client/lib/lang/se_reseller.lng
@@ -143,4 +143,9 @@
 $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 42e0f3c..d033ab8 100644
--- a/interface/web/client/lib/lang/sk_client.lng
+++ b/interface/web/client/lib/lang/sk_client.lng
@@ -144,4 +144,9 @@
 $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 ab95430..c5aeabc 100644
--- a/interface/web/client/lib/lang/sk_reseller.lng
+++ b/interface/web/client/lib/lang/sk_reseller.lng
@@ -143,4 +143,9 @@
 $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 e3c5c53..fda0dc7 100644
--- a/interface/web/client/lib/lang/tr_client.lng
+++ b/interface/web/client/lib/lang/tr_client.lng
@@ -144,4 +144,9 @@
 $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 f04edbf..83abc60 100644
--- a/interface/web/client/lib/lang/tr_reseller.lng
+++ b/interface/web/client/lib/lang/tr_reseller.lng
@@ -143,4 +143,9 @@
 $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 0000000..95ba9ef
--- /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 2c2b6cd..1ab1e66 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 8b2e3d4..de7b5a8 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 2c2b6cd..1ab1e66 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 8b2e3d4..de7b5a8 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 2c2b6cd..1ab1e66 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 8b2e3d4..de7b5a8 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 9d2a321..15063c0 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 bedb98f..ac3266e 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_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 2c2b6cd..db6450a 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 66275f1..be21791 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 8b2e3d4..0e3db11 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 debf754..896b1f1 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 e50ff27..746b38b 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_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 9216881..02a3fff 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 3d2c6c6..d898ac6 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 c694f1e..daed0db 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 13940bd..4fcf6cf 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_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 2c2b6cd..0bea37b 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 8b2e3d4..d56647b 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 2c2b6cd..1ab1e66 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 8b2e3d4..de7b5a8 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 2c2b6cd..1ab1e66 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 8b2e3d4..de7b5a8 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 2c2b6cd..1ab1e66 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 8b2e3d4..de7b5a8 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 2c2b6cd..1ab1e66 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 8b2e3d4..de7b5a8 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 2c2b6cd..1ab1e66 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 8b2e3d4..de7b5a8 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 2c2b6cd..1ab1e66 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 8b2e3d4..de7b5a8 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 2c2b6cd..1ab1e66 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 8b2e3d4..de7b5a8 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 2c2b6cd..1ab1e66 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 8b2e3d4..de7b5a8 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 2c2b6cd..1ab1e66 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 8b2e3d4..de7b5a8 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 2c2b6cd..1ab1e66 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 8b2e3d4..de7b5a8 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 2c2b6cd..1ab1e66 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 8b2e3d4..de7b5a8 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 2c2b6cd..1ab1e66 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 8b2e3d4..de7b5a8 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 2c2b6cd..1ab1e66 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 8b2e3d4..de7b5a8 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 2c2b6cd..1ab1e66 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 8b2e3d4..de7b5a8 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 2c2b6cd..1ab1e66 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 8b2e3d4..de7b5a8 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 2c2b6cd..1ab1e66 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 8b2e3d4..de7b5a8 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 0000000..95ba9ef
--- /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 0000000..95ba9ef
--- /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 acb6c35..29f4a51 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 75bf5a5..00eeb20 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_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 1e677f2..edaa422 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['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 381414b..678d5eb 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['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['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 847896d..cc83c99 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['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 b568f69..6617c8c 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['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 01f5df6..58d5773 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['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 17e3131..39aaae8 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['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 95c2d85..78fdd9c 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['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['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 acb6c35..29f4a51 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 74bf458..4eb8e93 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_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 998a64f..853ce10 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['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 b19fd34..c4b2c1d 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['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 6eacd64..09d9f39 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['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 6040630..a09b513 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['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 d5142f0..25e2085 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['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 8c0c33c..6353a73 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['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 f4b2ad1..d0c4d4b 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['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 04ebc02..2c2673a 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['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 0000000..95ba9ef
--- /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 61b0bd7..0000000
--- 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 6b8b90b..0000000
--- 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 fb73e1a..ad26c43 100644
--- a/interface/web/dns/dns_wizard.php
+++ b/interface/web/dns/dns_wizard.php
@@ -132,6 +132,25 @@
 	
 	$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 @@
 	$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 @@
 $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 ffeee58..0000000
--- 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 f6a6ef5..5a7ff83 100644
--- a/interface/web/dns/form/dns_rp.tform.php
+++ b/interface/web/dns/form/dns_rp.tform.php
@@ -75,16 +75,16 @@
 			'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 b676d1a..1f020da 100644
--- a/interface/web/dns/form/dns_template.tform.php
+++ b/interface/web/dns/form/dns_template.tform.php
@@ -71,18 +71,13 @@
 		),
 		'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 @@
 	##################################
 	)
 );
-
-
-
-?>
+
+
+
+?>
\ 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 f143b0b..126fb7a 100644
--- a/interface/web/dns/lib/lang/cz.lng
+++ b/interface/web/dns/lib/lang/cz.lng
@@ -20,3 +20,4 @@
 $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 8b8c206..4631836 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_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 a61265a..2fde770 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_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 26c6ae9..1936207 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['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 572478a..a32def2 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['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 8494b7c..3a7299a 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_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 5f67d5e..636600b 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['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 8b25eba..7c6c887 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_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 228d9d6..49c98ea 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_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 ba38e2a..73f897b 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['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 9617ea5..6124f30 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['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 8b1e7e4..10218a7 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['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 16617f6..2870562 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['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 1e0a3d0..3f801f9 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['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 c98cb6d..521ea3c 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['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 beba8a2..05834d4 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['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 6b6708f..88b1fc1 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['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 be4ac0e..82e207a 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['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 bdd6e18..10c3fcf 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['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 76047b0..0c07487 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['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 1b2e5f7..493d0bc 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['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 822fcd6..65f6646 100644
--- a/interface/web/dns/lib/lang/de.lng
+++ b/interface/web/dns/lib/lang/de.lng
@@ -20,3 +20,4 @@
 $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 4098649..dd809c3 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_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 6e8f195..0fc4419 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_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 854d623..c2d0e35 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['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 e950909..48da14f 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['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 a074194..48efdef 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_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 5fb182c..e0393c6 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['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 183809d..e6ca3bb 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['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 4920806..63f99c6 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_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 01662d2..0f61c16 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['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 020c7a3..5ff80e3 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['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 8a398d4..e7cd528 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['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 1b58088..de3411f 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['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 dc60207..50b8369 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['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 8ff7141..41570e2 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['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 8281fbd..a6df1ee 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['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 91eba84..7dbeb8e 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['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 33d1090..77cf996 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['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 a0f2d9a..3557292 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['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 c063867..39a5dbf 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['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 bb90167..3b247b1 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_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 f76afed..3b3bfe8 100644
--- a/interface/web/dns/lib/lang/el.lng
+++ b/interface/web/dns/lib/lang/el.lng
@@ -17,6 +17,6 @@
 $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 9d29354..2ca9f3b 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['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 457213e..f725ddc 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['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 2d1fe08..84608d1 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 37c967b..4e779c4 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_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 64db975..979c466 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['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 87d5fc7..045270a 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['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 4452d6b..53dc3dd 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 764e4fa..0c59b25 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_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 526257e..0000000
--- 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 8759159..f7057b4 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['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['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 06c3f94..549f0c3 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 cbf8db9..0000000
--- 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 81eb265..849c5b4 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 18f8f21..95efe02 100644
--- a/interface/web/help/lib/lang/cz.lng
+++ b/interface/web/help/lib/lang/cz.lng
@@ -12,3 +12,4 @@
 $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 73feee6..c71ddfa 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_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 a948844..7a4a2fd 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_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 b6c7b46..0dcf23b 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 967b0ab..596a9ef 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_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 a6afd5a..1d06da3 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['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 c4c43eb..f31449c 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['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 f9deb20..606b4f0 100644
--- a/interface/web/help/lib/lang/de.lng
+++ b/interface/web/help/lib/lang/de.lng
@@ -12,3 +12,4 @@
 $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 35042fa..90c6a44 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_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 b47a695..f3be08c 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_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 873dab2..f9f7cd4 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 3a240f4..66fd26c 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 190f85a..5d52ec8 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_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 67d68f9..48a66b9 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['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 74fbeb2..f6265d2 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['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 b6c7b46..30405c5 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 1294fd0..0000000
--- 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 0000000..95ba9ef
--- /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 b07abc4..0000000
--- 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 f789b21..4ce9a3b 100644
--- a/interface/web/login/lib/lang/cz.lng
+++ b/interface/web/login/lib/lang/cz.lng
@@ -23,3 +23,4 @@
 $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 439fa02..744643b 100644
--- a/interface/web/login/lib/lang/de.lng
+++ b/interface/web/login/lib/lang/de.lng
@@ -23,3 +23,4 @@
 $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 00646c6..6fdfc5e 100644
--- a/interface/web/login/lib/lang/el.lng
+++ b/interface/web/login/lib/lang/el.lng
@@ -14,12 +14,12 @@
 $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 caf48d5..506f934 100644
--- a/interface/web/mail/form/mail_domain.tform.php
+++ b/interface/web/mail/form/mail_domain.tform.php
@@ -98,33 +98,6 @@
 			'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 @@
 );
 
 
-?>
+?>
\ 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 ddccdbf..5ec0cbc 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 @@
 	)
 );
 
-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
-		##################################
-		)
-	);
-}
-
-
-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"]['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'
 		),
-		'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"
-					)
+		'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"]['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
+	##################################
+	),
+	'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 6a5afe0..c4b386b 100644
--- a/interface/web/mail/lib/lang/cz.lng
+++ b/interface/web/mail/lib/lang/cz.lng
@@ -44,5 +44,6 @@
 $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 605e06b..119b849 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['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 de8cc2e..db4fb4f 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['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 74611c2..7c74fb6 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_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 fd850d6..155a87a 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['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 e1e6dab..93978c7 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['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 0ef1d34..ba76a7e 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 459ca22..240de67 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['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 da9709e..68acaf7 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['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 026a2f1..d497e05 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['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 b579d2d..8277ec4 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['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 488d0d5..635091c 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['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 3b24645..7fd14a7 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['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 2abb05c..141e9e8 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['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 a59bd9b..054650a 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 e5381fe..6cf1f88 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['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 51b9f34..b73ddfd 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_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 9ca8b86..55df9d2 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['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 2d22785..7723f1f 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_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 db31273..abd9737 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['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 0c07059..fbbdc48 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['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 1af9599..19f4682 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['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 4b6cc2b..b538ad0 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['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 7560b57..fa5924f 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['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 dfe1855..6a195f3 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['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 e833293..584e329 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['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 2c441f2..48a9ea3 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['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['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 6cd8ed7..0fdd4ba 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['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 60229ce..f5de2b2 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_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 e6dfd00..b4adbdb 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['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 50cbc31..9c7602d 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['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 db55c18..31dfd75 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['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 7fae368..bab3022 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['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 5e0c6b7..2b92908 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['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 83a732d..71685de 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['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 0f878cc..7eae43e 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['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 fe2ee8d..348fe9b 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['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 54d0155..2740272 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_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['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 9a0c361..0ff38e1 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['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 4f5c0e8..40c0101 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 36bf340..f4dd015 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['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 5e0c6b7..2b92908 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['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 ad13897..65ac333 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['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 f60e616..d53237f 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 9141897..12b6ba7 100644
--- a/interface/web/mail/lib/lang/de.lng
+++ b/interface/web/mail/lib/lang/de.lng
@@ -46,3 +46,4 @@
 $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 c11499e..572c09a 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['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 e741d02..7c0c114 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['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 f75bd16..38d775f 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_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 c386d42..d7ae9ae 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['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 4611dad..474d1ad 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['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 b169909..03b1b46 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['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 9ea5422..48348b2 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['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 126f23c..930f1e5 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['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 ff6da2a..85028d9 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['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 403bb90..3f5bde4 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['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 9f37e56..6c63bf2 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['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 558cb5c..7ce05d3 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['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 ff25a58..3a7a393 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['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 a392ac4..56a82af 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['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 99b6ab5..01b2950 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['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 e6064ca..4100c38 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['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 d192358..a0ee458 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['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 1d143b6..04320e0 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['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 3eee785..c9959f0 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['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 37a2401..1ab7da8 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['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 fc5d6f4..ec6574a 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['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 b133a41..f8c0778 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['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 95c7d40..7ccd9f5 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['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 873036f..578afe8 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['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 6c9f865..213b3d2 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['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 87a5563..d97af7b 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['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 38c324e..9a8d7dc 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['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 003ed0e..695e404 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_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 a56fb6d..50580a9 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['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 e9a1983..3291ae4 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['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 1506deb..d09be9a 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['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 bcd4ccb..cf511a5 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['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 1dd4c6e..9be7f06 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['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 7ba623b..a0fe072 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['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 2cf2232..d00b2b1 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['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 db92a4b..579d315 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['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 32acca4..60f8b86 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['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 b5ec8e9..02083ef 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['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 b7f6cd4..cf9f0cd 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['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 8e53193..89a5983 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['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 d388432..bb82781 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['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 4d7769d..ed8a220 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['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 beb9c18..372c7b3 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['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 f8cadc6..74c51a8 100644
--- a/interface/web/mail/lib/lang/el.lng
+++ b/interface/web/mail/lib/lang/el.lng
@@ -11,7 +11,7 @@
 $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['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 7915af4..48d35a0 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['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 43c0bdf..fc5c0d7 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['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 ba16617..78ce691 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['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 500b16a..1ba5c20 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['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['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 1942ea5..6384e11 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 48c4eaa..5c6d904 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 1b1a5c7..8f6c290 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['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 249eee9..d809edf 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['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 528e35c..9d2fcda 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['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_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 7e3f57b..09613b4 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['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 0a896b1..e838bb4 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['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 8c40407..2e8651f 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['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 5ae48ba..ad93100 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 aab83a6..0000000
--- 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 6426e67..5a1b613 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 8b4b58b..4c947bd 100644
--- a/interface/web/mailuser/lib/lang/cz.lng
+++ b/interface/web/mailuser/lib/lang/cz.lng
@@ -7,3 +7,4 @@
 $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 45af56e..cb39d65 100644
--- a/interface/web/mailuser/lib/lang/cz_index.lng
+++ b/interface/web/mailuser/lib/lang/cz_index.lng
@@ -10,3 +10,4 @@
 $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 ef3aeb4..5ed9a1f 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['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 36f11a9..ef00aa2 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['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 3df9d38..60bd664 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['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 3c2593d..c7198af 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_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 36555a2..2d09b75 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['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 2a53036..00720f8 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['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 b373d45..7a40aa4 100644
--- a/interface/web/mailuser/lib/lang/de.lng
+++ b/interface/web/mailuser/lib/lang/de.lng
@@ -7,3 +7,4 @@
 $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 522ddbc..d8eec65 100644
--- a/interface/web/mailuser/lib/lang/de_index.lng
+++ b/interface/web/mailuser/lib/lang/de_index.lng
@@ -10,3 +10,4 @@
 $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 f8d4e46..ce28da0 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['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 b85077e..6292bb5 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['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 fd93e64..53cd51e 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['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 9abd40d..a0b80bd 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_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 5e5fe5e..062ba6b 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['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 47ac53a..019679a 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['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 114dec9..fae2ad9 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 29fe9ea..b182b45 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 79f386a..529ba60 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 dc2165a..7b2080b 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 2e74ffd..bec79e6 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 fb6b9df..dd2ae1d 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 cdf9674..61b9761 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 be4bad9..15ea90c 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 0000000..95ba9ef
--- /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 2379533..662d73a 100644
--- a/interface/web/monitor/lib/lang/cz.lng
+++ b/interface/web/monitor/lib/lang/cz.lng
@@ -145,11 +145,12 @@
 $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 c9e9a86..29d8cbb 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['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 9906625..864232e 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['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 a46050e..304ac73 100644
--- a/interface/web/monitor/lib/lang/de.lng
+++ b/interface/web/monitor/lib/lang/de.lng
@@ -122,7 +122,6 @@
 $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_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_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['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 0b6bf9a..8939cab 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['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 d840b6b..eb91a59 100644
--- a/interface/web/monitor/lib/lang/el.lng
+++ b/interface/web/monitor/lib/lang/el.lng
@@ -145,11 +145,11 @@
 $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 8ad63ff..f2a5d32 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 ec5ca73..20cf1fb 100644
--- a/interface/web/monitor/lib/lang/en.lng
+++ b/interface/web/monitor/lib/lang/en.lng
@@ -46,7 +46,6 @@
 $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_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_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 c019b84..1d4e5e1 100644
--- a/interface/web/monitor/lib/module.conf.php
+++ b/interface/web/monitor/lib/module.conf.php
@@ -190,11 +190,6 @@
                   '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 @@
 $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 92c66a4..1cd4baf 100644
--- a/interface/web/monitor/show_data.php
+++ b/interface/web/monitor/show_data.php
@@ -124,13 +124,6 @@
         $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 cb9e4c1..ec10a98 100644
--- a/interface/web/monitor/show_log.php
+++ b/interface/web/monitor/show_log.php
@@ -125,20 +125,7 @@
 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 ceb4195..55aeeb2 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 ae138d5..f49b169 100644
--- a/interface/web/remote/monitor.php
+++ b/interface/web/remote/monitor.php
@@ -29,6 +29,11 @@
 	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 caa9b02..d1e15cc 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 ada193c..ad165f3 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 ccad334..b7bed71 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 e3c318f..00d7b25 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 0000000..95ba9ef
--- /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 94f5eaa..737bd54 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 4f6979f..1b71196 100644
--- a/interface/web/sites/database_user_edit.php
+++ b/interface/web/sites/database_user_edit.php
@@ -57,17 +57,17 @@
 		 * 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 @@
 			}
 			$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 @@
 		$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 @@
 		$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 @@
 		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 @@
 			$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 4cbfa12..e390f72 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 @@
 			'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 @@
 );
 
 
-?>
+?>
\ 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 d2a2def..fa2b2d3 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
@@ -103,14 +103,6 @@
 			'datatype'	=> 'VARCHAR',
 			'formtype'	=> 'PASSWORD',
 			'encryption' => 'MYSQL',
-			'default'	=> '',
-			'value'		=> '',
-			'width'		=> '30',
-			'maxlength'	=> '255'
-		),
-		'database_password_mongo' => array (
-			'datatype'	=> 'VARCHAR',
-			'formtype'	=> 'PASSWORD',
 			'default'	=> '',
 			'value'		=> '',
 			'width'		=> '30',
diff --git a/interface/web/sites/form/web_domain.tform.php b/interface/web/sites/form/web_domain.tform.php
index 233b464..f2c6fa7 100644
--- a/interface/web/sites/form/web_domain.tform.php
+++ b/interface/web/sites/form/web_domain.tform.php
@@ -72,9 +72,6 @@
     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 @@
 
 // }
 
-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 3aa3049..116428c 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($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 @@
 			'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 @@
 
 // }
 
-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 3f05f65..27e62b9 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_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 e56806e..6039a9e 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['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 8bdb312..3148cbb 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['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 c4cff50..ce68876 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_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 3683aa3..01d4d83 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['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 dc2d3ff..dfc1dd0 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['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 3f05f65..27e62b9 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_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 449baa8..51c43bf 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['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 b2abb2a..4feeb04 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['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 71ccd16..3a37df3 100644
--- a/interface/web/sites/lib/lang/cz.lng
+++ b/interface/web/sites/lib/lang/cz.lng
@@ -33,3 +33,4 @@
 $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 176d76d..69887b5 100644
--- a/interface/web/sites/lib/lang/cz_aps.lng
+++ b/interface/web/sites/lib/lang/cz_aps.lng
@@ -54,5 +54,6 @@
 $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 7b7b6dd..16e863e 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['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 52ef6eb..cf0d2b6 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['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 91a6ed4..edf9c2a 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 d4e6c17..9e23b5a 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_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 f50dee2..dfabfa4 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['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 c316f0a..a13b779 100644
--- a/interface/web/sites/lib/lang/cz_database.lng
+++ b/interface/web/sites/lib/lang/cz_database.lng
@@ -42,5 +42,6 @@
 $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 a006940..f9aa557 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_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 9bb80dd..f76bcf0 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['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 8a64cb5..127d1a3 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_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 8703e71..127be4f 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['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 42cf36d..5fc1fc3 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['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 876ad51..494ecda 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['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 41649df..965e1c7 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['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 711475e..09377da 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['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 1d6bc19..cdc729c 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['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 4531944..efb766b 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['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 3a5d150..c82c428 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_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['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 22a4ffe..a3ae2a9 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_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 3c9cfc8..ae06162 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['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 49ee278..ab82df1 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_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 e52a794..4a20c10 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['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 cbf025e..7829679 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['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 f9f623d..0d1090f 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['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 b75c0e8..74b4d32 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['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 d55cb29..d3d3709 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['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 99fe620..c462125 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['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 ed93596..a70ccfb 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['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 de1445f..b40c927 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['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 8a0bafe..d1ad283 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['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 c76dffd..ab47f26 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_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['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 a54e19a..e15402b 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['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 3e89a1e..c21555e 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['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 0c1148b..af8bfea 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['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 4ef7509..7f956ef 100644
--- a/interface/web/sites/lib/lang/de.lng
+++ b/interface/web/sites/lib/lang/de.lng
@@ -10,12 +10,12 @@
 $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['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['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 aab6f4e..b97d0a0 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_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 e5f8b7b..753ba3b 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['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 6cada81..ab21a14 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['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 e0326cb..4ca36cf 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 8cebfa9..8fd1958 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_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['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 687505b..029cd59 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['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 716fd7a..a38dd8d 100644
--- a/interface/web/sites/lib/lang/de_database.lng
+++ b/interface/web/sites/lib/lang/de_database.lng
@@ -10,20 +10,20 @@
 $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_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 f77b4ca..ad742ff 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 d355181..93dc277 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 78884bc..d81bc52 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_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 82c09fc..4cbdc9d 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['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 7ee8222..d746d2f 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['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 c367fff..897f700 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['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['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 8d1b081..d39ff1f 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['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 9de369f..8a825b4 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['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['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 c953cf6..176a4e5 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['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 74a0b17..c207ad7 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 ccb3bdf..d568bd2 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_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['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['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_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_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 df8ebc6..1fe7f84 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['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 499fb4f..87fb0aa 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['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 15bbcfd..18fd6db 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_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['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['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_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_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['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 d9dc65c..276696c 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['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 ce56a1c..b722783 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['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 8defc36..615e340 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['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 5491202..2ac8f03 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['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 6983dc1..6ab959c 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_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 5357760..cd41dbf 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['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 f7d8d42..84a2676 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 d0c7b30..29de073 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['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 042b9f0..9197076 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['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 e41b717..d128a5e 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_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['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['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['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_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_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 042b9f0..9197076 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['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 eeefda8..25c7b09 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['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['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 927bfbb..84b9fad 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['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 2d72614..f7d1e4f 100644
--- a/interface/web/sites/lib/lang/el.lng
+++ b/interface/web/sites/lib/lang/el.lng
@@ -4,17 +4,17 @@
 $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['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 29fb7b6..ee6105e 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 052d834..55e0aba 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 68c3780..4226d90 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 ce9fcf6..ffe73d0 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 3e8f7eb..291ab1f 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_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 14f05ea..4776b59 100644
--- a/interface/web/sites/lib/lang/el_database.lng
+++ b/interface/web/sites/lib/lang/el_database.lng
@@ -4,7 +4,7 @@
 $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['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_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 f414200..c5d1992 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_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 ce54134..2468275 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['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 66a0718..e6d8e13 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 d7f88c4..02a4c41 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 8c22649..b1bb376 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 2f89d27..d65aef5 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['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_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 3c3ea31..6513f99 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['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 5468905..d0b7a16 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 a4b080e..5b83022 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['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 4149c71..ba8c690 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_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_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 b12aba2..6ea60e8 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['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 9a10ca6..2fa2a77 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 6cdc3d7..e515e59 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['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_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_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_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['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 6835eaa..ae89825 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['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 9916646..dc58324 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['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 8f5148b..6183fba 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['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['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 b87c788..7381df6 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['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_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 1c16bcd..a4426cf 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 b33b553..bf7e10f 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['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_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 bd33c18..e240d57 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 611c37e..3b9c7e9 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 ed6303a..12cc30d 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 20a7360..1a40a33 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 e68d993..fdafd68 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 13bb304..e87ad2a 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 aea21f8..74bcbd9 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 82a3d25..ae88738 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_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 511a457..b6f4cb3 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_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 19bb110..157cdd5 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['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 b3f4660..37695c5 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['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 3f05f65..27e62b9 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_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 2ce0989..cf5e75c 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['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 1c4055a..b910463 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['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 d6be240..651aa20 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_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 b530a6e..3ff3eac 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['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 d96e6ad..10c52ee 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['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 aee3160..19c9956 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_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 dcfe205..baec9d4 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['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 8c47934..b14d67a 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['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 77f27e8..d844905 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_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 bafb548..db4bd2b 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['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 0060787..0e53fae 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['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 782e4e4..6f81d66 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_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 9b44571..1221632 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['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 5bcfb28..0d240c9 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['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 3f05f65..27e62b9 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_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 0ce261e..7e66ceb 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['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 d605e88..eb60687 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['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 3f05f65..27e62b9 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_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 9a0ad45..afbda1b 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['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 a6dbbf6..e0402c0 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['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 3ad586e..e49d882 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_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 aa6dc3c..c2af647 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['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 e2bb5cb..2d35781 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['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 5785a77..4795a90 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_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 2162a15..60e1ecf 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['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 c08113e..ae5c3e1 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['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 3f05f65..27e62b9 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_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 40e888b..9e88692 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['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 787e1c7..e7f3fd2 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['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 3f05f65..27e62b9 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_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 6e1597f..3b835ce 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['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 31e0112..4ff6a0d 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['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 3f05f65..27e62b9 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_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 0d737de..4647c0c 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['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 5f6aafd..964d9f4 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['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 3f05f65..27e62b9 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_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 59f563d..b05ba12 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['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 3e309ed..2d9e432 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['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 3f05f65..27e62b9 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_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 f8acec2..98422c4 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['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 952216f..40b00bd 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['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 3f05f65..27e62b9 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_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 5e9d258..c3b3eb4 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['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 23a5374..1b33005 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['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 b6f52cf..d07b85a 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 76dbec5..56bf15d 100644
--- a/interface/web/sites/list/database.list.php
+++ b/interface/web/sites/list/database.list.php
@@ -70,19 +70,6 @@
 							'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 @@
                             '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 c911ced..4e0c9bd 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 2d9c50f..48da523 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 5456a89..a09c26f 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 1042e71..4765f2e 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 e4aefdb..a702165 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 15a8ae7..ec2d55f 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 4c605ca..293b871 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 5594473..3248812 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 3924362..d2beb42 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 5f44146..c00b866 100644
--- a/interface/web/sites/templates/web_vhost_subdomain_redirect.htm
+++ b/interface/web/sites/templates/web_vhost_subdomain_redirect.htm
@@ -21,6 +21,10 @@
                     {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>
 
         <input type="hidden" name="id" value="{tmpl_var name='id'}">
@@ -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 062529fda..ffc29e8 100644
--- a/interface/web/sites/web_domain_edit.php
+++ b/interface/web/sites/web_domain_edit.php
@@ -259,53 +259,6 @@
             // 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 97e84f4..0322726 100644
--- a/interface/web/sites/web_vhost_subdomain_edit.php
+++ b/interface/web/sites/web_vhost_subdomain_edit.php
@@ -164,53 +164,6 @@
             // 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 @@
 				$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 @@
 $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 cff29d5..136f5e2 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_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 52f1018..dbfdce3 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_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 0000000..95ba9ef
--- /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 e3e05d1..88353fe 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 ea735c7..3d62954 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 9a5830c..740141b 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 eeed54f..e6ce02a 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 6f4ab80..640c0bb 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 18a6fc9..351d3ac 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 fe99743..e7db3e8 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 4549642..cae152a 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 177a863..b39fb99 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 cf52f36..54dfd65 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 de8fe7a..a06505c 100644
--- a/interface/web/tools/import_plesk.php
+++ b/interface/web/tools/import_plesk.php
@@ -122,21 +122,6 @@
     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 @@
             $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($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 @@
         
         $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 @@
                 $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 @@
                 $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 @@
             }
         }
         
+        // 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 @@
              * 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 @@
                 $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 @@
                             '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 @@
             $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 @@
         $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 @@
                     $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 @@
                 $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 @@
                     $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 @@
                 $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 @@
             $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 @@
         
         $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($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 @@
                             '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));
@@ -1351,9 +1148,6 @@
             } else {
                 $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 @@
         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 cb99794..0000000
--- 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 f55b480..7b8555c 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 66bcaf4..2379ffb 100644
--- a/interface/web/tools/lib/lang/cz.lng
+++ b/interface/web/tools/lib/lang/cz.lng
@@ -11,3 +11,4 @@
 $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 8ebf717..97d213a 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_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 0000000..c794425
--- /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 5ebf1ec..c3db96e 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 507b7c3..1ac22ec 100644
--- a/interface/web/tools/lib/lang/cz_interface.lng
+++ b/interface/web/tools/lib/lang/cz_interface.lng
@@ -5,3 +5,4 @@
 $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 96d622e..ff1e3a5 100644
--- a/interface/web/tools/lib/lang/cz_resync.lng
+++ b/interface/web/tools/lib/lang/cz_resync.lng
@@ -11,3 +11,4 @@
 $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 0f037f1..fb77e7c 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['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 dec46b7..eb3599b 100644
--- a/interface/web/tools/lib/lang/cz_usersettings.lng
+++ b/interface/web/tools/lib/lang/cz_usersettings.lng
@@ -10,3 +10,4 @@
 $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 5a1c501..62e0deb 100644
--- a/interface/web/tools/lib/lang/de.lng
+++ b/interface/web/tools/lib/lang/de.lng
@@ -11,3 +11,4 @@
 $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 d8ae6cf..eb3a8cf 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_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 8cde045..0bfbcc7 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 2af008f..4ec5d9d 100644
--- a/interface/web/tools/lib/lang/de_interface.lng
+++ b/interface/web/tools/lib/lang/de_interface.lng
@@ -5,3 +5,4 @@
 $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 0387ae6..cf858b7 100644
--- a/interface/web/tools/lib/lang/de_resync.lng
+++ b/interface/web/tools/lib/lang/de_resync.lng
@@ -11,3 +11,4 @@
 $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 45de148..40cfdc0 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['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 908bbf6..167a0f7 100644
--- a/interface/web/tools/lib/lang/de_usersettings.lng
+++ b/interface/web/tools/lib/lang/de_usersettings.lng
@@ -10,3 +10,4 @@
 $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 0f44f70..80e6295 100644
--- a/interface/web/tools/lib/lang/el.lng
+++ b/interface/web/tools/lib/lang/el.lng
@@ -4,10 +4,10 @@
 $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 ce47c4d..1c80ac6 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 a3ef38f..ce794cc 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 aab4fc8..9b53146 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 ed94767..74b2a46 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 c062463..45c78e9 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 d2321b0..55f24e9 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 1e4dd28..0000000
--- 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 0000000..95ba9ef
--- /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 ade9476..0000000
--- 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 4167e14..5c1ab58 100644
--- a/interface/web/vm/lib/lang/cz.lng
+++ b/interface/web/vm/lib/lang/cz.lng
@@ -5,3 +5,4 @@
 $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 3e2e3e0..84682fc 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_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 6016681..67f6885 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_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 e6a3a68..37c1d62e 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['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 72838a2..9774110 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_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 7705a4d..930b33f 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['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 12c80bd..cf926f6 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['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 89c11ef..353e760 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['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 adfa56f..b9043e4 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['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 1371c4b..9fa15b9 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['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 474d2ac..a68f43f 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 f40d2f2..c0a5c0e 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_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 48c9a52..b7b1498 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_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 f4302d8..d214e95 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['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 8e4cfcb..e0fb939 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_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 dff6bd2..09a174e 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['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 329a106..9e76eca 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['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 9e32b34..682f2cc 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['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 c773885..b45a79f 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['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 0b3ac30..aecb462 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['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 8aecd92..a602f6d 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 5af2ea0..168100c 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 afe2bcd..9442546 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['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['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 4c7950a..37c7ce0 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['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 0000000..95ba9ef
--- /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 0000000..95ba9ef
--- /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 0000000..95ba9ef
--- /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 0000000..95ba9ef
--- /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 0000000..95ba9ef
--- /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 0000000..95ba9ef
--- /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 02ea5af..6e3d853 100644
--- a/server/conf/nginx_vhost.conf.master
+++ b/server/conf/nginx_vhost.conf.master
@@ -121,7 +121,7 @@
             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 029c4f3..3342cee 100644
--- a/server/cron_daily.php
+++ b/server/cron_daily.php
@@ -55,7 +55,7 @@
 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 @@
     $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(!$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 @@
             }
         }
     }
-
+    
     $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($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 @@
                     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 @@
         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($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 @@
                     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 @@
     }
     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 @@
             //echo $sql;
         }
     }
-
+    
     unset($mailbox_traffic);
     if($last_line) file_put_contents($state_file, $last_line);
 }
@@ -279,7 +279,7 @@
 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 @@
 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 @@
 
 	//* 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 @@
         $log_folder .= '/' . $subdomain_host;
         unset($tmp);
     }
-
+    
     $logfile = $rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log';
 	$total_bytes = 0;
 
@@ -647,10 +647,10 @@
 #########
 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 @@
     } else {
         $lines = file($conf['rootpath'].'/conf/mail/' . $template . '_en.txt');
     }
-
+    
     //* get mail headers, subject and body
     $mailHeaders = '';
     $mailBody = '';
@@ -681,12 +681,12 @@
         }
     }
     $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 @@
     unset($mailHeaders);
     unset($mailBody);
     unset($lines);
-
+    
     return true;
 }
 
@@ -707,7 +707,7 @@
 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($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 @@
 							$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 @@
 	$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 @@
 				$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 (!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 @@
 			} else {
 				$rec['soft'] .= ' KB';
 			}
-
+		
 			if($rec['hard'] > 1024) {
 				$rec['hard'] = round($rec['hard'] / 1024,2).' MB';
 			} elseif($rec['hard'] == 0){
@@ -852,12 +853,12 @@
 			} 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 @@
                                           '{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 @@
                     }
                     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 @@
                                       '{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 @@
 	$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 @@
 				}
 			}
 		}
-
+		
 		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 @@
 				$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 @@
                               '{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 @@
                             $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 @@
                         $recipients[] = $client['email'];
                     }
                 }
-
+                
                 send_notification_email('mail_quota_notification', $placeholders, $recipients);
-			}
+			}	
 		}
 	}
 }
@@ -1076,17 +1077,12 @@
 
 }
 
-#######################################################################################################
-// 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 @@
 					$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 @@
 				} 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 @@
 				//* 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 @@
 					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 @@
 				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);
 
-				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));
 
-					//* 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);
+					//* 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);
 
-					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);
-							}
-
-							//* 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 @@
 				$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 @@
 		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 4c1512b..b8f6ad9 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 39f71ce..6cb922f 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 6b93e1e..0b1caa6 100644
--- a/server/lib/classes/monitor_tools.inc.php
+++ b/server/lib/classes/monitor_tools.inc.php
@@ -755,13 +755,6 @@
 				$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 @@
 			/*
 			 * 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 @@
 				/* 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
@@ -1285,51 +1278,6 @@
 		} else {
 			/*
 			 * fail2ban 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 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.
@@ -1797,9 +1745,6 @@
 					$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 @@
 
 }
 
-?>
+?>
\ No newline at end of file
diff --git a/server/lib/classes/system.inc.php b/server/lib/classes/system.inc.php
index f6b52cf..57b1e1f 100644
--- a/server/lib/classes/system.inc.php
+++ b/server/lib/classes/system.inc.php
@@ -780,7 +780,8 @@
 		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 88e994d..2e66d64 100644
--- a/server/mods-available/monitor_core_module.inc.php
+++ b/server/mods-available/monitor_core_module.inc.php
@@ -89,7 +89,7 @@
 		$this->_tools = new monitor_tools();
 
 		/*
-		 * Calls the single Monitoring steps
+		 * Calls the single Monitoring steps 
 		 */
 		$this->_monitorEmailQuota();
 		$this->_monitorHDQuota();
@@ -117,7 +117,6 @@
 		$this->_monitorRaid();
 		$this->_monitorRkHunter();
 		$this->_monitorFail2ban();
-		$this->_monitorMongoDB();
 		$this->_monitorIPTables();
 		$this->_monitorSysLog();
 	}
@@ -130,12 +129,12 @@
 		 */
 		$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 @@
 		 * 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');
@@ -537,31 +536,6 @@
          * First we get the Monitoring-data from the tools
          */
         $res = $this->_tools->monitorFail2ban();
-
-        /*
-         * 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 _monitorMongoDB() {
-	global $app;
-
-        /*
-         * First we get the Monitoring-data from the tools
-         */
-        $res = $this->_tools->monitorMongoDB();
 
         /*
          * Insert the data into the database
@@ -738,7 +712,7 @@
 		 * 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 @@
 		// $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 @@
 
 }
 
-?>
+?>
\ 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 050d32f..49012d5 100644
--- a/server/mods-available/rescue_core_module.inc.php
+++ b/server/mods-available/rescue_core_module.inc.php
@@ -35,7 +35,7 @@
 	/* 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 @@
 		 * 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 @@
 		 * 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 @@
 	 */
 	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 @@
 		} 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 @@
 		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 @@
 
 		/*
 		 * 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 @@
 		} else {
 			$data = array();
 		}
-
+		
 		/* Thats it */
 		return $data;
 	}
@@ -227,14 +222,14 @@
 	 */
 	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 @@
 			$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 @@
 				$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 @@
 			$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 @@
 		} 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 @@
 		 * 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 0000000..95ba9ef
--- /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 0000000..95ba9ef
--- /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 5bc4407..2e1e80c 100644
--- a/server/plugins-available/apache2_plugin.inc.php
+++ b/server/plugins-available/apache2_plugin.inc.php
@@ -88,97 +88,8 @@
 		
 		$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 @@
 
 			$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 @@
 			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 e529b12..dbbbfb9 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 bc91a91..78be959 100644
--- a/server/plugins-available/backup_plugin.inc.php
+++ b/server/plugins-available/backup_plugin.inc.php
@@ -29,48 +29,48 @@
 */
 
 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 @@
 					$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 @@
 				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 @@
 					}
 				}
 			}
-
+			
 		} 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 e557202..5d4fd98 100644
--- a/server/plugins-available/mail_plugin.inc.php
+++ b/server/plugins-available/mail_plugin.inc.php
@@ -193,7 +193,8 @@
 		$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 1a50cee..0000000
--- 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 545fe9e..0000000
--- 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 181eedb..62beafb 100644
--- a/server/plugins-available/nginx_plugin.inc.php
+++ b/server/plugins-available/nginx_plugin.inc.php
@@ -170,15 +170,15 @@
 
 			$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 0fcdf13..0000000
--- 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 0000000..95ba9ef
--- /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 0000000..9376ba1
--- /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 2ead490..3415f6e 100644
--- a/server/server.php
+++ b/server/server.php
@@ -170,9 +170,6 @@
 	$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 0000000..95ba9ef
--- /dev/null
+++ b/server/temp/empty.dir
@@ -0,0 +1 @@
+This empty directory is needed by ISPConfig.

--
Gitblit v1.9.1