From 52983de57cf6d60fbd37b0c8e873aae4f69da10d Mon Sep 17 00:00:00 2001 From: Falko Timme <ft@falkotimme.com> Date: Wed, 05 Mar 2014 20:59:02 -0500 Subject: [PATCH] Merge branch 'stable-3.0.5' of git.ispconfig.org:ispconfig/ispconfig3 into stable-3.0.5 --- install/lib/classes/tpl.inc.php | 1431 +++++++++++++++++++++++++++++++ install/lib/classes/tpl_cache.inc.php | 193 ++++ interface/web/sites/lib/lang/cz_webdav_user_list.lng | 2 install/dist/lib/fedora.lib.php | 38 interface/web/designer/lib/lang/cz_module_nav_item_edit.lng | 2 interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng | 15 interface/web/dashboard/lib/lang/cz_dashlet_mailquota.lng | 2 interface/web/mail/lib/lang/cz_mail_backup_list.lng | 13 install/tpl/apache_apps.vhost.master | 46 install/update.php | 3 interface/web/dns/lib/lang/cz_dns_mx.lng | 1 interface/web/mail/lib/lang/cz_mail_user.lng | 4 interface/web/dns/lib/lang/cz_dns_rp.lng | 1 interface/web/client/lib/lang/cz_reseller.lng | 15 interface/web/login/lib/lang/cz.lng | 4 install/lib/classes/tpl_ini.inc.php | 119 ++ install/lib/installer_base.lib.php | 61 interface/web/mail/lib/lang/cz_mail_alias_list.lng | 2 interface/web/admin/lib/lang/cz_login_as.lng | 12 interface/web/sites/lib/lang/cz_web_subdomain_list.lng | 4 interface/web/admin/lib/lang/cz_language_import.lng | 1 interface/web/dns/lib/lang/cz_dns_alias.lng | 1 interface/web/help/lib/lang/cz.lng | 2 interface/web/sites/lib/lang/cz_database_admin_list.lng | 2 interface/web/tools/lib/lang/cz_resync.lng | 1 interface/web/sites/lib/lang/cz_web_aliasdomain_list.lng | 4 interface/web/mail/lib/lang/cz_mail_domain_catchall_list.lng | 2 interface/web/sites/lib/lang/cz_database_user_admin_list.lng | 2 interface/web/client/lib/lang/cz_client.lng | 9 interface/web/dns/lib/lang/cz_dns_hinfo.lng | 1 interface/web/client/lib/lang/cz_client_message_template_list.lng | 6 interface/web/client/lib/lang/cz_client_message.lng | 2 interface/web/mail/lib/lang/cz_mail_aliasdomain_list.lng | 2 interface/web/sites/lib/lang/cz_shell_user_list.lng | 2 interface/web/mail/lib/lang/cz_mail_blacklist_list.lng | 2 interface/web/sites/lib/lang/cz_cron.lng | 1 interface/lib/config.inc.php | 1 interface/web/designer/lib/lang/cz_module_show.lng | 2 install/lib/classes/tpl_error.inc.php | 95 ++ interface/lib/lang/cz.lng | 6 interface/web/dns/lib/lang/cz_dns_ptr.lng | 1 interface/web/mail/lib/lang/cz.lng | 14 interface/web/sites/lib/lang/cz_web_domain.lng | 7 interface/web/dns/lib/lang/cz_dns_a.lng | 1 interface/web/sites/lib/lang/cz_web_childdomain.lng | 119 ++ install/tpl/apache_ispconfig.vhost.master | 30 interface/web/client/lib/lang/cz_client_template.lng | 2 interface/web/sites/lib/lang/cz_web_vhost_domain_admin_list.lng | 10 interface/web/dns/lib/lang/cz_dns_cname.lng | 1 interface/web/mail/lib/lang/cz_spamfilter_users.lng | 3 interface/web/dns/lib/lang/cz_dns_txt.lng | 1 interface/web/dns/lib/lang/cz_dns_srv.lng | 1 interface/web/mail/lib/lang/cz_spamfilter_blacklist.lng | 3 install/lib/install.lib.php | 25 interface/web/admin/lib/lang/cz_system_config.lng | 16 interface/web/dns/lib/lang/cz_dns_aaaa.lng | 1 interface/web/mail/lib/lang/cz_mail_domain_admin_list.lng | 2 interface/web/client/lib/lang/cz_client_message_template.lng | 12 interface/web/help/lib/lang/cz_help_faq_sections_list.lng | 2 install/tpl/apache_ispconfig.conf.master | 76 + interface/web/sites/lib/lang/cz_web_childdomain_list.lng | 15 interface/web/admin/lib/lang/cz_directive_snippets.lng | 1 install/dist/lib/gentoo.lib.php | 32 install/dist/lib/opensuse.lib.php | 43 interface/web/mail/lib/lang/cz_user_quota_stats_list.lng | 2 interface/web/sites/lib/lang/cz.lng | 12 interface/web/mail/lib/lang/cz_mail_transport_list.lng | 2 interface/web/sites/lib/lang/cz_web_vhost_domain_list.lng | 10 interface/web/admin/lib/lang/cz_users.lng | 1 interface/web/dns/lib/lang/cz_dns_ns.lng | 1 interface/web/sites/lib/lang/cz_shell_user.lng | 2 interface/web/sites/lib/lang/cz_ftp_user_list.lng | 4 install/install.php | 3 interface/web/sites/lib/lang/cz_web_aliasdomain.lng | 10 interface/web/dns/lib/lang/cz_dns_dkim.lng | 10 interface/web/sites/lib/lang/cz_user_quota_stats_list.lng | 2 interface/web/admin/lib/lang/cz_server_config.lng | 4 interface/web/sites/lib/lang/cz_web_vhost_domain.lng | 137 ++ interface/web/client/lib/lang/cz.lng | 4 interface/web/mail/lib/lang/cz_spamfilter_whitelist.lng | 3 interface/web/mailuser/lib/lang/cz_mail_user_cc.lng | 2 interface/web/sites/lib/lang/cz_database_list.lng | 2 interface/web/sites/lib/lang/cz_ftp_user.lng | 2 83 files changed, 2,591 insertions(+), 152 deletions(-) diff --git a/install/dist/lib/fedora.lib.php b/install/dist/lib/fedora.lib.php index a994b66..95f3fec 100644 --- a/install/dist/lib/fedora.lib.php +++ b/install/dist/lib/fedora.lib.php @@ -645,10 +645,12 @@ $vhost_conf_dir = $conf['apache']['vhost_conf_dir']; $vhost_conf_enabled_dir = $conf['apache']['vhost_conf_enabled_dir']; - // copy('tpl/apache_ispconfig.conf.master',$vhost_conf_dir.'/ispconfig.conf'); - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/apache_ispconfig.conf.master', 'tpl/apache_ispconfig.conf.master'); + $tpl = new tpl('apache_ispconfig.conf.master'); + $tpl->setVar('apache_version',getapacheversion()); + $records = $this->db->queryAllRecords('SELECT * FROM '.$conf['mysql']['master_database'].'.server_ip WHERE server_id = '.$conf['server_id']." AND virtualhost = 'y'"); - + $ip_addresses = array(); + if(is_array($records) && count($records) > 0) { foreach($records as $rec) { if($rec['ip_type'] == 'IPv6') { @@ -661,15 +663,17 @@ foreach($ports as $port) { $port = intval($port); if($port > 0 && $port < 65536 && $ip_address != '') { - $content .= 'NameVirtualHost '.$ip_address.":".$port."\n"; + $ip_addresses[] = array('ip_address' => $ip_address, 'port' => $port); } } } } } + + if(count($ip_addresses) > 0) $tpl->setLoop('ip_adresses',$ip_addresses); - $content .= "\n"; - wf($vhost_conf_dir.'/ispconfig.conf', $content); + wf($vhost_conf_dir.'/ispconfig.conf', $tpl->grab()); + unset($tpl); if(!@is_link($vhost_conf_enabled_dir."/000-ispconfig.conf")) { exec("ln -s ".$vhost_conf_dir."/ispconfig.conf ".$vhost_conf_enabled_dir."/000-ispconfig.conf"); @@ -1033,28 +1037,30 @@ // Dont just copy over the virtualhost template but add some custom settings - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/apache_ispconfig.vhost.master', "tpl/apache_ispconfig.vhost.master"); - $content = str_replace('{vhost_port}', $conf['apache']['vhost_port'], $content); + $tpl = new tpl('apache_ispconfig.vhost.master'); + $tpl->setVar('vhost_port',$conf['apache']['vhost_port']); // comment out the listen directive if port is 80 or 443 if($conf['apache']['vhost_port'] == 80 or $conf['apache']['vhost_port'] == 443) { - $content = str_replace('{vhost_port_listen}', '#', $content); + $tpl->setVar('vhost_port_listen','#'); } else { - $content = str_replace('{vhost_port_listen}', '', $content); + $tpl->setVar('vhost_port_listen',''); } - if(is_file('/usr/local/ispconfig/interface/ssl/ispserver.crt') && is_file('/usr/local/ispconfig/interface/ssl/ispserver.key')) { - $content = str_replace('{ssl_comment}', '', $content); + if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key')) { + $tpl->setVar('ssl_comment',''); } else { - $content = str_replace('{ssl_comment}', '#', $content); + $tpl->setVar('ssl_comment','#'); } if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key') && is_file($install_dir.'/interface/ssl/ispserver.bundle')) { - $content = str_replace('{ssl_bundle_comment}', '', $content); + $tpl->setVar('ssl_bundle_comment',''); } else { - $content = str_replace('{ssl_bundle_comment}', '#', $content); + $tpl->setVar('ssl_bundle_comment','#'); } + + $tpl->setVar('apache_version',getapacheversion()); - wf("$vhost_conf_dir/ispconfig.vhost", $content); + wf($vhost_conf_dir.'/ispconfig.vhost', $tpl->grab()); //copy('tpl/apache_ispconfig.vhost.master', "$vhost_conf_dir/ispconfig.vhost"); //* and create the symlink diff --git a/install/dist/lib/gentoo.lib.php b/install/dist/lib/gentoo.lib.php index a47f0d0..d4e5bee 100644 --- a/install/dist/lib/gentoo.lib.php +++ b/install/dist/lib/gentoo.lib.php @@ -495,6 +495,7 @@ //* Copy the ISPConfig configuration include + /* $content = $this->get_template_file('apache_ispconfig.conf', true); $records = $this->db->queryAllRecords("SELECT * FROM server_ip WHERE server_id = ".$conf["server_id"]." AND virtualhost = 'y'"); @@ -507,6 +508,37 @@ } $this->write_config_file($conf['apache']['vhost_conf_dir'].'/000-ispconfig.conf', $content); + */ + + $tpl = new tpl('apache_ispconfig.conf.master'); + $tpl->setVar('apache_version',getapacheversion()); + + $records = $this->db->queryAllRecords('SELECT * FROM '.$conf['mysql']['master_database'].'.server_ip WHERE server_id = '.$conf['server_id']." AND virtualhost = 'y'"); + $ip_addresses = array(); + + if(is_array($records) && count($records) > 0) { + foreach($records as $rec) { + if($rec['ip_type'] == 'IPv6') { + $ip_address = '['.$rec['ip_address'].']'; + } else { + $ip_address = $rec['ip_address']; + } + $ports = explode(',', $rec['virtualhost_port']); + if(is_array($ports)) { + foreach($ports as $port) { + $port = intval($port); + if($port > 0 && $port < 65536 && $ip_address != '') { + $ip_addresses[] = array('ip_address' => $ip_address, 'port' => $port); + } + } + } + } + } + + if(count($ip_addresses) > 0) $tpl->setLoop('ip_adresses',$ip_addresses); + + wf($conf['apache']['vhost_conf_dir'].'/000-ispconfig.conf', $tpl->grab()); + unset($tpl); //* Gentoo by default does not include .vhost files. Add include line to config file. $content = rf($conf['apache']['config_file']); diff --git a/install/dist/lib/opensuse.lib.php b/install/dist/lib/opensuse.lib.php index 657c795..d4cb7cf 100644 --- a/install/dist/lib/opensuse.lib.php +++ b/install/dist/lib/opensuse.lib.php @@ -660,10 +660,12 @@ $vhost_conf_dir = $conf['apache']['vhost_conf_dir']; $vhost_conf_enabled_dir = $conf['apache']['vhost_conf_enabled_dir']; - //copy('tpl/apache_ispconfig.conf.master',$vhost_conf_dir.'/ispconfig.conf'); - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/apache_ispconfig.conf.master', 'tpl/apache_ispconfig.conf.master'); + $tpl = new tpl('apache_ispconfig.conf.master'); + $tpl->setVar('apache_version',getapacheversion()); + $records = $this->db->queryAllRecords('SELECT * FROM '.$conf['mysql']['master_database'].'.server_ip WHERE server_id = '.$conf['server_id']." AND virtualhost = 'y'"); - + $ip_addresses = array(); + if(is_array($records) && count($records) > 0) { foreach($records as $rec) { if($rec['ip_type'] == 'IPv6') { @@ -676,15 +678,17 @@ foreach($ports as $port) { $port = intval($port); if($port > 0 && $port < 65536 && $ip_address != '') { - $content .= 'NameVirtualHost '.$ip_address.":".$port."\n"; + $ip_addresses[] = array('ip_address' => $ip_address, 'port' => $port); } } } } } - - $content .= "\n"; - wf($vhost_conf_dir.'/ispconfig.conf', $content); + + if(count($ip_addresses) > 0) $tpl->setLoop('ip_adresses',$ip_addresses); + + wf($vhost_conf_dir.'/ispconfig.conf', $tpl->grab()); + unset($tpl); if(!@is_link($vhost_conf_enabled_dir."/000-ispconfig.conf")) { exec("ln -s ".$vhost_conf_dir."/ispconfig.conf ".$vhost_conf_enabled_dir."/000-ispconfig.conf"); @@ -1089,31 +1093,30 @@ // Dont just copy over the virtualhost template but add some custom settings - - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/apache_ispconfig.vhost.master', "tpl/apache_ispconfig.vhost.master"); - $content = str_replace('{vhost_port}', $conf['apache']['vhost_port'], $content); + $tpl = new tpl('apache_ispconfig.vhost.master'); + $tpl->setVar('vhost_port',$conf['apache']['vhost_port']); // comment out the listen directive if port is 80 or 443 if($conf['apache']['vhost_port'] == 80 or $conf['apache']['vhost_port'] == 443) { - $content = str_replace('{vhost_port_listen}', '#', $content); + $tpl->setVar('vhost_port_listen','#'); } else { - $content = str_replace('{vhost_port_listen}', '', $content); + $tpl->setVar('vhost_port_listen',''); } - if(is_file('/usr/local/ispconfig/interface/ssl/ispserver.crt') && is_file('/usr/local/ispconfig/interface/ssl/ispserver.key')) { - $content = str_replace('{ssl_comment}', '', $content); + if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key')) { + $tpl->setVar('ssl_comment',''); } else { - $content = str_replace('{ssl_comment}', '#', $content); + $tpl->setVar('ssl_comment','#'); } if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key') && is_file($install_dir.'/interface/ssl/ispserver.bundle')) { - $content = str_replace('{ssl_bundle_comment}', '', $content); + $tpl->setVar('ssl_bundle_comment',''); } else { - $content = str_replace('{ssl_bundle_comment}', '#', $content); + $tpl->setVar('ssl_bundle_comment','#'); } + + $tpl->setVar('apache_version',getapacheversion()); - $content = str_replace('/var/www/', '/srv/www/', $content); - - wf("$vhost_conf_dir/ispconfig.vhost", $content); + wf($vhost_conf_dir.'/ispconfig.vhost', $tpl->grab()); //if(!is_file('/srv/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter')) { $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/apache_ispconfig_fcgi_starter.master', 'tpl/apache_ispconfig_fcgi_starter.master'); diff --git a/install/install.php b/install/install.php index e2d569e..a3393c1 100644 --- a/install/install.php +++ b/install/install.php @@ -65,6 +65,9 @@ define('ISPC_LOG_FILE', '/var/log/ispconfig_install.log'); define('ISPC_INSTALL_ROOT', realpath(dirname(__FILE__).'/../')); +//** Include the templating lib +require_once 'lib/classes/tpl.inc.php'; + //** Check for existing installation /*if(is_dir("/usr/local/ispconfig")) { die('We will stop here. There is already a ISPConfig installation, use the update script to update this installation.'); diff --git a/install/lib/classes/tpl.inc.php b/install/lib/classes/tpl.inc.php new file mode 100644 index 0000000..73ff192 --- /dev/null +++ b/install/lib/classes/tpl.inc.php @@ -0,0 +1,1431 @@ +<?php +/** + * vlibTemplate is a class used to seperate PHP and HTML. + * For instructions on how to use vlibTemplate, see the + * vlibTemplate.html file, located in the 'docs' directory. + * + * @since 07/03/2002 + * @author Kelvin Jones <kelvin@kelvinjones.co.uk> + * @package vLIB + * @access public + * @see vlibTemplate.html + */ + + +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +----------------------------------------------------------------------+ +// | PHP version 4.0 | +// +----------------------------------------------------------------------+ +// | Copyright (c) 2002 Active Fish Group | +// +----------------------------------------------------------------------+ +// | Authors: Kelvin Jones <kelvin@kelvinjones.co.uk> | +// +----------------------------------------------------------------------+ +// +// $Id: class.tpl.inc.php,v 1.1 2003/07/08 12:31:10 platinum Exp $ + +//** check and avoid multiple loading of class +if (!defined('vlibTemplateClassLoaded')) { + + define('vlibTemplateClassLoaded', 1); + include_once ISPC_INSTALL_ROOT.'/install/lib/classes/tpl_error.inc.php'; + include_once ISPC_INSTALL_ROOT.'/install/lib/classes/tpl_ini.inc.php'; + + class tpl{ + + /*-----------------------------------------------------------------------------\ + | ATTENTION | + | Do not touch the following variables. vlibTemplate will not work otherwise. | + \-----------------------------------------------------------------------------*/ + private $OPTIONS = array( + 'MAX_INCLUDES' => 10, + 'TEMPLATE_DIR' => null, + 'GLOBAL_VARS' => null, + 'GLOBAL_CONTEXT_VARS' => null, + 'LOOP_CONTEXT_VARS' => null, + 'SET_LOOP_VAR' => null, + 'DEFAULT_ESCAPE' => null, + 'STRICT' => null, + 'CASELESS' => null, + 'UNKNOWNS' => null, + 'TIME_PARSE' => null, + 'ENABLE_PHPINCLUDE' => null, + 'INCLUDE_PATHS' => array(), + 'CACHE_DIRECTORY' => null, + 'CACHE_LIFETIME' => null, + 'CACHE_EXTENSION' => null + ); + + /** open and close tags used for escaping */ + private $ESCAPE_TAGS = array( + 'html' => array('open' => 'htmlspecialchars(' , 'close'=> ', ENT_QUOTES)'), + 'url' => array('open' => 'urlencode(' , 'close'=> ')'), + 'rawurl' => array('open' => 'rawurlencode(' , 'close'=> ')'), + 'sq' => array('open' => 'addcslashes(' , 'close'=> ", \"'\")"), + 'dq' => array('open' => 'addcslashes(' , 'close'=> ", '\"')"), + '1' => array('open' => 'htmlspecialchars(' , 'close'=> ', ENT_QUOTES)'), + '0' => array('open' => '' , 'close'=> ''), + 'none' => array('open' => '' , 'close'=> ''), + 'hex' => array('open' => '$this->_escape_hex(' , 'close'=> ', false)'), + 'hexentity' => array('open' => '$this->_escape_hex(' , 'close'=> ', true)') + ); + + + + /** open and close tags used for formatting */ + private $FORMAT_TAGS = array( + 'strtoupper' => array('open' => 'strtoupper(', 'close'=> ')'), + 'uc' => array('open' => 'strtoupper(', 'close'=> ')'), + 'strtolower' => array('open' => 'strtolower(', 'close'=> ')'), + 'lc' => array('open' => 'strtolower(', 'close'=> ')'), + 'ucfirst' => array('open' => 'ucfirst(', 'close'=> ')'), + 'lcucfirst' => array('open' => 'ucfirst(strtolower(', 'close'=> '))'), + 'ucwords' => array('open' => 'ucwords(', 'close'=> ')'), + 'lcucwords' => array('open' => 'ucwords(strtolower(', 'close'=> '))') + ); + + /** operators allowed when using extended TMPL_IF syntax */ + private $allowed_if_ops = array('==', '!=', '<>', '<', '>', '<=', '>='); + + + + /** dbs allowed by vlibTemplate::setDbLoop(). */ + private $allowed_loop_dbs = array('MYSQL', 'POSTGRESQL', 'INFORMIX', 'INTERBASE', 'INGRES', + 'MSSQL', 'MSQL', 'OCI8', 'ORACLE', 'OVRIMOS', 'SYBASE'); + + + + /** root directory of vlibTemplate automagically filled in */ + private $VLIBTEMPLATE_ROOT = null; + + + + /** contains current directory used when doing recursive include */ + private $_currentincludedir = array(); + + + + /** current depth of includes */ + private $_includedepth = 0; + + + + /** full path to tmpl file */ + private $_tmplfilename = null; + + + + /** file data before it's parsed */ + private $_tmplfile = null; + + + + /** parsed version of file, ready for eval()ing */ + private $_tmplfilep = null; + + + + /** eval()ed version ready for printing or whatever */ + private $_tmploutput = null; + + + + /** array for variables to be kept */ + private $_vars = array(); + + + + /** array where loop variables are kept */ + private $_arrvars = array(); + + /** array which holds the current namespace during parse */ + private $_namespace = array(); + + + + /** variable is set to true once the template is parsed, to save re-parsing everything */ + private $_parsed = false; + + + + /** array holds all unknowns vars */ + private $_unknowns = array(); + + + + /** microtime when template parsing began */ + private $_firstparsetime = null; + + + + /** total time taken to parse template */ + private $_totalparsetime = null; + + + + /** name of current loop being passed in */ + private $_currloopname = null; + + + + /** rows with the above loop */ + private $_currloop = array(); + + + + /** define vars to avoid warnings */ + private $_debug = null; + private $_cache = null; + + + + /** array which holds the dynamic Includes */ + private $_dyninclude = array(); + + /*-----------------------------------------------------------------------------\ + | public functions | + \-----------------------------------------------------------------------------*/ + + + + + + /** + * Usually called by the class constructor. + * Stores the filename in $this->_tmplfilename. + * Raises an error if the template file is not found. + * @param string $tmplfile full path to template file + * @return boolean true + * @access public + */ + public function newTemplate($tmplfile) + { + if (!$tfile = $this->_fileSearch($tmplfile)){ + vlibTemplateError::raiseError('VT_ERROR_NOFILE', KILL, $tmplfile); + } + + //* make sure that any parsing vars are cleared for the new template + $this->_tmplfile = null; + $this->_tmplfilep = null; + $this->_tmploutput = null; + $this->_parsed = false; + $this->_unknowns = array(); + $this->_firstparsetime = null; + $this->_totalparsetime = null; + + //* reset debug module + if ($this->_debug){ + $this->_debugReset(); + } + $this->_tmplfilename = $tfile; + return true; + } + + /** + * Sets variables to be used by the template + * If $k is an array, then it will treat it as an associative array + * using the keys as variable names and the values as variable values. + * @param mixed $k key to define variable name + * @param mixed $v variable to assign to $k + * @return boolean true/false + * @access public + */ + public function setVar($k, $v = null) + { + if (is_array($k)) { + foreach($k as $key => $value){ + $key = ($this->OPTIONS['CASELESS']) ? strtolower(trim($key)) : trim($key); + if (preg_match('/^[A-Za-z_]+[A-Za-z0-9_]*$/', $key) && $value !== null ) { + $this->_vars[$key] = $value; + } + } + } else { + if (preg_match('/^[A-Za-z_]+[A-Za-z0-9_]*$/', $k) && $v !== null) { + if ($this->OPTIONS['CASELESS']) $k = strtolower($k); + $this->_vars[trim($k)] = $v; + } else { + return false; + } + } + return true; + } + + + + /** + * Sets dynamic includes to be used by the template + * If $k is an array, then it will treat it as an associative array + * using the keys as variable names and the values as variable values. + * @param mixed $k key to define variable name + * @param mixed $v variable to assign to $k + * @return boolean true/false + * @access public + */ + public function setInclude($k, $v = null) + { + if(is_array($k)) { + foreach($k as $key => $val) { + $this->_dyninclude[$key] = $val; + } + } else { + $this->_dyninclude[$k] = $v; + } + return true; + } + + /** + * Unsets a variable which has already been set + * Parse in all vars wanted for deletion in seperate parametres + * @param string var name to remove use: vlibTemplate::unsetVar(var[, var..]) + * @return boolean true/false returns true unless called with 0 params + * @access public + */ + public function unsetVar() + { + $num_args = func_num_args(); + if ($num_args < 1) return false; + + for ($i = 0; $i < $num_args; $i++) { + $var = func_get_arg($i); + if ($this->OPTIONS['CASELESS']) $var = strtolower($var); + if (!preg_match('/^[A-Za-z_]+[A-Za-z0-9_]*$/', $var)) continue; + unset($this->_vars[$var]); + } + return true; + } + + /** + * Gets all vars currently set in global namespace. + * @return array + * @access public + */ + public function getVars() + { + return empty($this->_vars) ? false : $this->_vars; + } + + /** + * Gets a single var from the global namespace + * @return var + * @access public + */ + public function getVar($var) + { + if ($this->OPTIONS['CASELESS']) $var = strtolower($var); + return (empty($var) || !isset($this->_vars[$var])) ? false : $this->_vars[$var]; + } + + /** + * sets the GLOBAL_CONTEXT_VARS + * @return true + * @access public + */ + public function setContextVars() + { + $_phpself = @$GLOBALS['HTTP_SERVER_VARS']['PHP_SELF']; + $_pathinfo = @$GLOBALS['HTTP_SERVER_VARS']['PATH_INFO']; + $_request_uri = @$GLOBALS['HTTP_SERVER_VARS']['REQUEST_URI']; + $_qs = @$GLOBALS['HTTP_SERVER_VARS']['QUERY_STRING']; + + //* the following fixes bug of $PHP_SELF on Win32 CGI and IIS. + $_self = (!empty($_pathinfo)) ? $_pathinfo : $_phpself; + $_uri = (!empty($_request_uri)) ? $_request_uri : $_self.'?'.$_qs; + + $this->setvar('__SELF__', $_self); + $this->setvar('__REQUEST_URI__', $_uri); + return true; + } + + /** + * Builds the loop construct for use with <TMPL_LOOP>. + * @param string $k string to define loop name + * @param array $v array to assign to $k + * @return boolean true/false + * @access public + */ + public function setLoop($k, $v) + { + if (is_array($v) && preg_match('/^[A-Za-z_]+[A-Za-z0-9_]*$/', $k)) { + $k = ($this->OPTIONS['CASELESS']) ? strtolower(trim($k)) : trim($k); + $this->_arrvars[$k] = array(); + if ($this->OPTIONS['SET_LOOP_VAR'] && !empty($v)) $this->setvar($k, 1); + if (($this->_arrvars[$k] = $this->_arrayBuild($v)) == false) { + vlibTemplateError::raiseError('VT_WARNING_INVALID_ARR', WARNING, $k); + } else { + $this->vars['_'.$k.'_num'] = count($v); + } + } + return true; + } + + /** + * [** EXPERIMENTAL **] + * Function to create a loop from a Db result resource link. + * @param string $loopname to commit loop. If not set, will use last loopname set using newLoop() + * @param string $result link to a Db result resource + * @param string $db_type, type of db that the result resource belongs to. + * @return boolean true/false + * @access public + */ + public function setDbLoop($loopname, $result, $db_type = 'MYSQL') + { + /* + $db_type = strtoupper($db_type); + if (!in_array($db_type, $this->allowed_loop_dbs)) { + vlibTemplateError::raiseError('VT_WARNING_INVALID_LOOP_DB', WARNING, $db_type); + return false; + } + + $loop_arr = array(); + // TODO: Are all these necessary as were onyl using mysql and possible postgres ? - pedro + switch ($db_type) { + + case 'MYSQL': + if (get_resource_type($result) != 'mysql result') { + vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); + return false; + } + while($r = mysql_fetch_assoc($result)) { + $loop_arr[] = $r; + } + break; + + case 'POSTGRESQL': + if (get_resource_type($result) != 'pgsql result') { + vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); + return false; + } + + $nr = (function_exists('pg_num_rows')) ? pg_num_rows($result) : pg_numrows($result); + + for ($i=0; $i < $nr; $i++) { + $loop_arr[] = pg_fetch_array($result, $i, PGSQL_ASSOC); + } + break; + + case 'INFORMIX': + if (!$result) { + vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); + return false; + } + while($r = ifx_fetch_row($result, 'NEXT')) { + $loop_arr[] = $r; + } + break; + + case 'INTERBASE': + if (get_resource_type($result) != 'interbase result') { + vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); + return false; + } + while($r = ibase_fetch_row($result)) { + $loop_arr[] = $r; + } + break; + + case 'INGRES': + if (!$result) { + vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); + return false; + } + while($r = ingres_fetch_array(INGRES_ASSOC, $result)) { + $loop_arr[] = $r; + } + break; + + case 'MSSQL': + if (get_resource_type($result) != 'mssql result') { + vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); + return false; + } + while($r = mssql_fetch_array($result)) { + $loop_arr[] = $r; + } + break; + + case 'MSQL': + if (get_resource_type($result) != 'msql result') { + vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); + return false; + } + while($r = msql_fetch_array($result, MSQL_ASSOC)) { + $loop_arr[] = $r; + } + break; + + case 'OCI8': + if (get_resource_type($result) != 'oci8 statement') { + vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); + return false; + } + while(OCIFetchInto($result, &$r, OCI_ASSOC+OCI_RETURN_LOBS)) { + $loop_arr[] = $r; + } + break; + + case 'ORACLE': + if (get_resource_type($result) != 'oracle Cursor') { + vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); + return false; + } + while(ora_fetch_into($result, &$r, ORA_FETCHINTO_ASSOC)) { + $loop_arr[] = $r; + } + break; + + case 'OVRIMOS': + if (!$result) { + vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); + return false; + } + while(ovrimos_fetch_into($result, &$r, 'NEXT')) { + $loop_arr[] = $r; + } + break; + + case 'SYBASE': + if (get_resource_type($result) != 'sybase-db result') { + vlibTemplateError::raiseError('VT_WARNING_INVALID_RESOURCE', WARNING, $db_type); + return false; + } + + while($r = sybase_fetch_array($result)) { + $loop_arr[] = $r; + } + break; + } + $this->setLoop($loopname, $loop_arr); + return true; + */ + } + + /** + * Sets the name for the curent loop in the 3 step loop process. + * @param string $name string to define loop name + * @return boolean true/false + * @access public + */ + public function newLoop($loopname) + { + if (preg_match('/^[a-z_]+[a-z0-9_]*$/i', $loopname)) { + $this->_currloopname[$loopname] = $loopname; + $this->_currloop[$loopname] = array(); + return true; + } else { + return false; + } + } + + /** + * Adds a row to the current loop in the 3 step loop process. + * @param array $row loop row to add to current loop + * @param string $loopname loop to which you want to add row, if not set will use last loop set using newLoop(). + * @return boolean true/false + * @access public + */ + public function addRow($row, $loopname = null) + { + if (!$loopname) $loopname = $this->_currloopname[(count($this->_currloopname)-1)]; + + if (!isset($this->_currloop[$loopname]) || empty($this->_currloopname)) { + vlibTemplateError::raiseError('VT_WARNING_LOOP_NOT_SET', WARNING); + return false; + } + if (is_array($row)) { + $this->_currloop[$loopname][] = $row; + return true; + } else { + return false; + } + } + + /** + * Completes the 3 step loop process. This assigns the rows and resets + * the variables used. + * @param string $loopname to commit loop. If not set, will use last loopname set using newLoop() + * @return boolean true/false + * @access public + */ + public function addLoop($loopname = null) + { + if ($loopname == null) { // add last loop used + if (!empty($this->_currloop)) { + foreach ($this->_currloop as $k => $v) { + $this->setLoop($k, $v); + unset($this->_currloop[$k]); + } + $this->_currloopname = array(); + return true; + } else { + return false; + } + } elseif (!isset($this->_currloop[$loopname]) || empty($this->_currloopname)) { // newLoop not yet envoked + vlibTemplateError::raiseError('VT_WARNING_LOOP_NOT_SET', WARNING); + return false; + } else { // add a specific loop + $this->setLoop($loopname, $this->_currloop[$loopname]); + unset($this->_currloopname[$loopname], $this->_currloop[$loopname]); + } + return true; + } + + /** + * Unsets a loop which has already been set. + * Can only unset top level loops. + * @param string loop to remove use: vlibTemplate::unsetLoop(loop[, loop..]) + * @return boolean true/false returns true unless called with 0 params + * @access public + */ + public function unsetLoop() + { + $num_args = func_num_args(); + if ($num_args < 1) return false; + + for ($i = 0; $i < $num_args; $i++) { + $var = func_get_arg($i); + if ($this->OPTIONS['CASELESS']) $var = strtolower($var); + if (!preg_match('/^[A-Za-z_]+[A-Za-z0-9_]*$/', $var)) continue; + unset($this->_arrvars[$var]); + } + return true; + } + + /** + * Resets the vlibTemplate object. After using vlibTemplate::reset() you must + * use vlibTemplate::newTemplate(tmpl) to reuse, not passing in the options array. + * @return boolean true + * @access public + */ + public function reset() + { + $this->clearVars(); + $this->clearLoops(); + $this->_tmplfilename = null; + $this->_tmplfile = null; + $this->_tmplfilep = null; + $this->_tmploutput = null; + $this->_parsed = false; + $this->_unknowns = array(); + $this->_firstparsetime = null; + $this->_totalparsetime = null; + $this->_currloopname = null; + $this->_currloop = array(); + return true; + } + + /** + * Unsets all variables in the template + * @return boolean true + * @access public + */ + public function clearVars() + { + $this->_vars = array(); + return true; + } + + /** + * Unsets all loops in the template + * @return boolean true + * @access public + */ + public function clearLoops() + { + $this->_arrvars = array(); + $this->_currloopname = null; + $this->_currloop = array(); + return true; + } + + /** + * Unsets all variables and loops set using setVar/Loop() + * @return boolean true + * @access public + */ + public function clearAll() + { + $this->clearVars(); + $this->clearLoops(); + return true; + } + + /** + * Returns true if unknowns were found after parsing. + * Function MUST be called AFTER one of the parsing functions to have any relevance. + * @return boolean true/false + * @access public + */ + public function unknownsExist() + { + return !empty($this->_unknowns); + } + + /** + * Alias for unknownsExist. + * @access public + */ + public function unknowns() + { + return $this->unknownsExist(); + } + + /** + * Returns an array of all unknown vars found when parsing. + * This function is only relevant after parsing a document. + * @return array + * @access public + */ + public function getUnknowns() + { + return $this->_unknowns; + } + + /** + * Sets how you want to handle variables that were found in the + * template but not set in vlibTemplate using vlibTemplate::setVar(). + * @param string $arg ignore, remove, print, leave or comment + * @return boolean + * @access public + */ + public function setUnknowns($arg) + { + $arg = strtolower(trim($arg)); + if (preg_match('/^ignore|remove|print|leave|comment$/', $arg)) { + $this->OPTIONS['UNKNOWNS'] = $arg; + return true; + } + return false; + } + + /** + * function sets the paths to use when including files. + * Use of this function: vlibTemplate::setPath(string path [, string path, ..]); + * i.e. if $tmpl is your template object do: $tmpl->setPath('/web/htdocs/templates','/web/htdocs/www'); + * with as many paths as you like. + * if this function is called without any arguments, it will just delete any previously set paths. + * + * @param string path (mulitple) + * @return bool success + * @access public + */ + public function setPath() + { + $num_args = func_num_args(); + if ($num_args < 1) { + $this->OPTIONS['INCLUDE_PATHS'] = array(); + return true; + } + for ($i = 0; $i < $num_args; $i++) { + $thispath = func_get_arg($i); + array_push($this->OPTIONS['INCLUDE_PATHS'], realpath($thispath)); + } + return true; + } + + /** + * After using one of the parse functions, this will allow you + * access the time taken to parse the template. + * see OPTION 'TIME_PARSE'. + * + * @return float time taken to parse template + * @access public + */ + public function getParseTime() + { + if ($this->OPTIONS['TIME_PARSE'] && $this->_parsed) { + return $this->_totalparsetime; + } + return false; + } + + + /** + * Identical to pparse() except that it uses output buffering w/ gz compression thus + * printing the output directly and compressed if poss. + * Will possibly if parsing a huge template. + * + * @access public + * @return boolean true/false + */ + public function fastPrint() + { + $ret = $this->_parse('ob_gzhandler'); + print($this->_tmploutput); + return $ret; + } + + + /** + * Calls parse, and then prints out $this->_tmploutput + * @access public + * @return boolean true/false + */ + public function pparse() + { + if (!$this->_parsed) $this->_parse(); + print($this->_tmploutput); + return true; + } + + /** + * Alias for pparse() + * @access public + */ + public function pprint() + { + return $this->pparse(); + } + + + /** + * Returns the parsed output, ready for printing, passing to mail() ...etc. + * Invokes $this->_parse() if template has not yet been parsed. + * + * @access public + * @return boolean true/false + */ + public function grab() + { + if (!$this->_parsed) $this->_parse(); + return $this->_tmploutput; + } + + /*-----------------------------------------------------------------------------\ + | private functions | + \-----------------------------------------------------------------------------*/ + + /** + * vlibTemplate constructor. + * if $tmplfile has been passed to it, it will send to $this->newTemplate() + * @param string $tmplfile full path to template file + * @param array $options see above + * @return boolean true/false + * @access private + */ + public function __construct($tmplfile = null, $options = null) + { + if (is_array($tmplfile) && $options == null) { + $options = $tmplfile; + unset($tmplfile); + } + + $this->VLIBTEMPLATE_ROOT = dirname(realpath(__FILE__)); + + if (is_array(vlibIni::vlibTemplate())) { + foreach (vlibIni::vlibTemplate() as $name => $val) { + $this->OPTIONS[$name] = $val; + } + } + + if (is_array($options)) { + foreach($options as $key => $val) { + $key = strtoupper($key); + if ($key == 'PATH') { + $this->setPath($val); + } else { + $this->_setOption($key, strtolower($val)); + } + } + } + if($tmplfile) $this->newTemplate($tmplfile); + if ($this->OPTIONS['GLOBAL_CONTEXT_VARS']) $this->setContextVars(); + return true; + } + + /** + * function returns the text from the file, or if we're using cache, the text + * from the cache file. MUST RETURN DATA. + * @param string tmplfile contains path to template file + * @param do_eval used for included files. If set then this function must do the eval()'ing. + * @access private + * @return mixed data/string or boolean + */ + private function _getData ($tmplfile, $do_eval=false) + { + //* check the current file depth + if ($this->_includedepth > $this->OPTIONS['MAX_INCLUDES'] || $tmplfile == false) { + return; + } else { + if ($this->_debug){ + array_push($this->_debugIncludedfiles, $tmplfile); + } + if ($do_eval) { + array_push($this->_currentincludedir, dirname($tmplfile)); + $this->_includedepth++; + } + } + + + if($this->_cache && $this->_checkCache($tmplfile)) { //* cache exists so lets use it + $data = fread($fp = fopen($this->_cachefile, 'r'), filesize($this->_cachefile)); + fclose($fp); + } else { //* no cache lets parse the file + $data = fread($fp = fopen($tmplfile, 'r'), filesize($tmplfile)); + fclose($fp); + + $regex = '/(<|<\/|{|{\/|<!--|<!--\/){1}\s*'; + $regex.= 'tmpl_([\w]+)\s*'; + $regex.= '((?:(?:'; + $regex.= '(?:'; + $regex.= '(name|format|escape|op|value|file)'; + $regex.= '\s*=\s*'; + $regex.= ')?'; + $regex.= '(?:[\"\'])?'; + $regex.= '((?<=[\"\'])'; + $regex.= '[^\"\']*|[a-z0-9_\.]*)'; + $regex.= '[\"\']?'; + $regex.= ')?\s*)*?)'; + $regex.= '(?:>|\/>|}|-->){1}'; + $regex.= '/i'; + $data = preg_replace_callback($regex, array($this, '_parseTag'), $data); + + if ($this->_cache) { // add cache if need be + $this->_createCache($data); + } + } + + //* now we must parse the $data and check for any <tmpl_include>'s + if ($this->_debug) $this->doDebugWarnings(file($tmplfile), $tmplfile); + + if ($do_eval) { + $success = @eval('?>'.$data.'<?php return 1;'); + $this->_includedepth--; + array_pop($this->_currentincludedir); + return $success; + } else { + return $data; + } + } + + /** + * Searches for all possible instances of file { $file } + * @param string $file path of file we're looking for + * @access private + * @return mixed fullpath to file or boolean false + */ + private function _fileSearch($file) + { + + $filename = basename($file); + $filepath = dirname($file); + + if(isset($_SESSION['s']['module']['name']) && isset($_SESSION['s']['theme'])) { + if(is_file(ISPC_THEMES_PATH.'/'.$_SESSION['s']['theme'].'/templates/'.$_SESSION['s']['module']['name'].'/'.$filename)) { + return ISPC_THEMES_PATH.'/'.$_SESSION['s']['theme'].'/templates/'.$_SESSION['s']['module']['name'].'/'.$filename; + } + } + + //* check fullpath first.. + $fullpath = $filepath.'/'.$filename; + if (is_file($fullpath)) return $fullpath; + + //* ..then check for relative path for current directory.. + if (!empty($this->_currentincludedir)) { + $currdir = $this->_currentincludedir[(count($this->_currentincludedir) -1)]; + $relativepath = realpath($currdir.'/'.$filepath.'/'.$filename); + if (is_file($relativepath)) { + array_push($this->_currentincludedir, dirname($relativepath)); + return $relativepath; + } + } + + //* ..then check for relative path for all additional given paths.. + if (!empty($this->OPTIONS['INCLUDE_PATHS'])) { + foreach ($this->OPTIONS['INCLUDE_PATHS'] as $currdir) { + $relativepath = realpath($currdir.'/'.$filepath.'/'.$filename); + if (is_file($relativepath)) { + return $relativepath; + } + } + } + + //* ..then check path from TEMPLATE_DIR.. + if (!empty($this->OPTIONS['TEMPLATE_DIR'])) { + $fullpath = realpath($this->OPTIONS['TEMPLATE_DIR'].'/'.$filepath.'/'.$filename); + if (is_file($fullpath)) return $fullpath; + } + + //* ..then check relative path from executing php script.. + $fullpath = realpath($filepath.'/'.$filename); + if (is_file($fullpath)) return $fullpath; + + //* ..then check path from template file. + if (!empty($this->VLIBTEMPLATE_ROOT)) { + $fullpath = realpath($this->VLIBTEMPLATE_ROOT.'/'.$filepath.'/'.$filename); + if (is_file($fullpath)) return $fullpath; + } + + return false; // uh oh, file not found + } + + /** + * Modifies the array $arr to add Template variables, __FIRST__, __LAST__ ..etc + * if $this->OPTIONS['LOOP_CONTEXT_VARS'] is true. + * Used by $this->setloop(). + * @param array $arr + * @return array new look array + * @access private + */ + private function _arrayBuild($arr) + { + if (is_array($arr) && !empty($arr)) { + $arr = array_values($arr); // to prevent problems w/ non sequential arrays + for ($i = 0; $i < count($arr); $i++) { + if(!is_array($arr[$i])) return false; + foreach ($arr[$i] as $k => $v) { + unset($arr[$i][$k]); + if ($this->OPTIONS['CASELESS']) $k = strtolower($k); + if (preg_match('/^[0-9]+$/', $k)) $k = '_'.$k; + + if (is_array($v)) { + if (($arr[$i][$k] = $this->_arrayBuild($v)) == false) return false; + } else { // reinsert the var + $arr[$i][$k] = $v; + } + } + if ($this->OPTIONS['LOOP_CONTEXT_VARS']) { + if ($i == 0) $arr[$i]['__FIRST__'] = true; + if (($i + 1) == count($arr)) $arr[$i]['__LAST__'] = true; + if ($i != 0 && (($i + 1) < count($arr))) $arr[$i]['__INNER__'] = true; + if (is_int(($i+1) / 2)) $arr[$i]['__EVEN__'] = true; + if (!is_int(($i+1) / 2)) $arr[$i]['__ODD__'] = true; + $arr[$i]['__ROWNUM__'] = ($i + 1); + } + } + return $arr; + } elseif (empty($arr)) { + return true; + } + } + + /** + * returns a string used for parsing in tmpl_if statements. + * @param string $varname + * @param string $value + * @param string $op + * @param string $namespace current namespace + * @access private + * @return string used for eval'ing + */ + private function _parseIf($varname, $value = null, $op = null, $namespace = null, $format = null) + { + if (isset($namespace)) $namespace = substr($namespace, 0, -1); + $comp_str = ''; // used for extended if statements + + // work out what to put on the end id value="whatever" is used + if (isset($value)) { + + // add the correct operator depending on whether it's been specified or not + if (!empty($op)) { + if (in_array($op, $this->allowed_if_ops)) { + $comp_str .= $op; + } else { + vlibTemplateError::raiseError('VT_WARNING_INVALID_IF_OP', WARNING, $op); + } + } else { + $comp_str .= '=='; + } + + // now we add the value, if it's numeric, then we leave the quotes off + if (is_numeric($value)) { + $comp_str .= $value; + } else { + $comp_str .= '\''.$value.'\''; + } + } + + if (count($this->_namespace) == 0 || $namespace == 'global') return '$this->_vars[\''.$varname.'\']'.$comp_str; + $retstr = '$this->_arrvars'; + $numnamespaces = count($this->_namespace); + for ($i=0; $i < $numnamespaces; $i++) { + if ($this->_namespace[$i] == $namespace || (($i + 1) == $numnamespaces && !empty($namespace))) { + $retstr .= "['".$namespace."'][\$_".$i."]"; + break 1; + } else { + $retstr .= "['".$this->_namespace[$i]."'][\$_".$i."]"; + } + } + if ($this->OPTIONS['GLOBAL_VARS'] && empty($namespace)) { + $retstr = '(('.$retstr.'[\''.$varname.'\'] !== null) ? '.$retstr.'[\''.$varname.'\'] : $this->_vars[\''.$varname.'\'])'; + if(isset($format) && isset($value) && $format == 'version') { + return 'version_compare(' . $retstr . ', \'' . $value . '\', \'' . (!empty($op) ? $op : '==') . '\')'; + } else { + return $retstr.$comp_str; + } + } + else { + if(isset($format) && isset($value) && $format == 'version') { + return 'version_compare(' . $retstr."['".$varname."']" . ', \'' . $value . '\', \'' . (!empty($op) ? $op : '==') . '\')'; + } else { + return $retstr."['".$varname."']".$comp_str; + } + } + } + + + /** + * returns a string used for parsing in tmpl_loop statements. + * @param string $varname + * @access private + * @return string used for eval'ing + */ + private function _parseLoop ($varname) + { + array_push($this->_namespace, $varname); + $tempvar = count($this->_namespace) - 1; + $retstr = "for (\$_".$tempvar."=0 ; \$_".$tempvar." < count(\$this->_arrvars"; + for ($i=0; $i < count($this->_namespace); $i++) { + $retstr .= "['".$this->_namespace[$i]."']"; + if ($this->_namespace[$i] != $varname) $retstr .= "[\$_".$i."]"; + } + return $retstr."); \$_".$tempvar."++) {"; + } + + /** + * returns a string used for parsing in tmpl_var statements. + * @param string $wholetag + * @param string $tag + * @param string $varname + * @param string $escape + * @param string $format + * @param string $namespace + * @access private + * @return string used for eval'ing + */ + private function _parseVar ($wholetag, $tag, $varname, $escape, $format, $namespace) + { + if (!empty($namespace)) $namespace = substr($namespace, 0, -1); + $wholetag = stripslashes($wholetag); + + if (count($this->_namespace) == 0 || $namespace == 'global') { + $var1 = '$this->_vars[\''.$varname.'\']'; + } else { + $var1build = "\$this->_arrvars"; + $numnamespaces = count($this->_namespace); + for ($i=0; $i < $numnamespaces; $i++) { + if ($this->_namespace[$i] == $namespace || (($i + 1) == $numnamespaces && !empty($namespace))) { + $var1build .= "['".$namespace."'][\$_".$i."]"; + break 1; + } else { + $var1build .= "['".$this->_namespace[$i]."'][\$_".$i."]"; + } + } + $var1 = $var1build . "['$varname']"; + if ($this->OPTIONS['GLOBAL_VARS'] && empty($namespace)) { + $var2 = '$this->_vars[\''.$varname.'\']'; + } + } + + $beforevar = ''; + $aftervar = ''; + if (!empty($escape)&& isset($this->ESCAPE_TAGS[$escape])) { + $beforevar .= $this->ESCAPE_TAGS[$escape]['open']; + $aftervar = $this->ESCAPE_TAGS[$escape]['close'] . $aftervar; + } + + if (!empty($format)&& isset($this->FORMAT_TAGS[$format])) { + $beforevar .= $this->FORMAT_TAGS[$format]['open']; + $aftervar = $this->FORMAT_TAGS[$format]['close'] . $aftervar; + } + + //* build return values + $retstr = 'if ('.$var1.' !== null) { '; + $retstr .= 'print('.$beforevar.$var1.$aftervar.'); '; + $retstr .= '}'; + + if (@$var2) { + $retstr .= ' elseif ('.$var2.' !== null) { '; + $retstr .= 'print('.$beforevar.$var2.$aftervar.'); '; + $retstr .= '}'; + } + + switch (strtolower($this->OPTIONS['UNKNOWNS'])) { + case 'comment': + $comment = addcslashes('<!-- unknown variable '.preg_replace('/<!--|-->/', '', $wholetag).'//-->', '"'); + $retstr .= ' else { print("'.$comment.'"); $this->_setUnknown("'.$varname.'"); }'; + return $retstr; + + case 'leave': + $retstr .= ' else { print("'.addcslashes($wholetag, '"').'"); $this->_setUnknown("'.$varname.'"); }'; + return $retstr; + + case 'print': + $retstr .= ' else { print("'.htmlspecialchars($wholetag, ENT_QUOTES).'"); $this->_setUnknown("'.$varname.'"); }'; + return $retstr; + + case 'ignore': + return $retstr; + + case 'remove': + default: + $retstr .= ' else { $this->_setUnknown("'.$varname.'"); }'; + return $retstr; + + } + } + + /** + * takes values from preg_replace in $this->_intparse() and determines + * the replace string. + * + * @param array $args array of all matches found by preg_replace + * @access private + * @return string replace values + */ + private function _parseTag ($args) + { + $wholetag = $args[0]; + $openclose = $args[1]; + $tag = strtolower($args[2]); + + if ($tag == 'else') return '<?php } else { ?>'; + if ($tag == 'tmpl_include') return $wholetag; // ignore tmpl_include tags + + if (preg_match("/^<\/|{\/|<!--\/$/s", $openclose) || preg_match("/^end[if|loop|unless|comment]$/", $tag)) { + if ($tag == 'loop' || $tag == 'endloop') array_pop($this->_namespace); + if ($tag == 'comment' || $tag == 'endcomment') { + return '<?php */ ?>'; + } else { + return '<?php } ?>'; + } + } + + // arrange attributes + $tmp_atts = $args[3]; + $atts = preg_split('/\s+/', $tmp_atts); + foreach($atts as $att) { + $regex = '/(?:'; + $regex.= '(name|format|escape|op|value|file)'; + $regex.= '\s*=\s*'; + $regex.= ')?'; + $regex.= '(?:[\"\'])?'; + $regex.= '((?<=[\"\'])'; + $regex.= '[^\"\']*|[a-z0-9_\.]*)'; + $regex.= '[\"\']?/'; + if(preg_match($regex, $att, $match)) { + $key = (empty($match[1])) ? 'name' : strtolower($match[1]); + if ($key == 'name' && preg_match('/^(php)?include$/', $tag)) $key = 'file'; + $$key = $match[2]; + } + } + + $var = ($this->OPTIONS['CASELESS']) ? strtolower($name) : $name; + + if ($this->_debug && !empty($var)) { + if (preg_match("/^global\.([A-Za-z_]+[_A-Za-z0-9]*)$/", $var, $matches)) $var2 = $matches[1]; + if (empty($this->_debugTemplatevars[$tag])) $this->_debugTemplatevars[$tag] = array(); + if (!isset($var2)) $var2 = $var; + if (!in_array($var2, $this->_debugTemplatevars[$tag])) array_push($this->_debugTemplatevars[$tag], $var2); + } + + if (preg_match("/^([A-Za-z_]+[_A-Za-z0-9]*(\.)+)?([A-Za-z_]+[_A-Za-z0-9]*)$/", $var, $matches)) { + $var = $matches[3]; + $namespace = $matches[1]; + } + + + //* return correct string (tag dependent) + switch ($tag) { + case 'var': + if (empty($escape) && (!empty($this->OPTIONS['DEFAULT_ESCAPE']) && strtolower($this->OPTIONS['DEFAULT_ESCAPE']) != 'none')) { + $escape = strtolower($this->OPTIONS['DEFAULT_ESCAPE']); + } + return '<?php '.$this->_parseVar ($wholetag, $tag, $var, @$escape, @$format, @$namespace)." ?>\n"; + + case 'if': + return '<?php if ('. $this->_parseIf($var, @$value, @$op, @$namespace, @$format) .') { ?>'; + + case 'unless': + return '<?php if (!'. $this->_parseIf($var, @$value, @$op, @$namespace, @$format) .') { ?>'; + + case 'elseif': + return '<?php } elseif ('. $this->_parseIf($var, @$value, @$op, @$namespace, @$format) .') { ?>'; + + case 'loop': + return '<?php '. $this->_parseLoop($var) .'?>'; + + case 'comment': + if (empty($var)) { // full open/close style comment + return '<?php /* ?>'; + } else { // just ignore tag if it was a one line comment + return; + } + + case 'phpinclude': + if ($this->OPTIONS['ENABLE_PHPINCLUDE']) { + return '<?php include(\''.$file.'\'); ?>'; + } + + case 'include': + return '<?php $this->_getData($this->_fileSearch(\''.$file.'\'), 1); ?>'; + + case 'dyninclude': + return '<?php $this->_getData($this->_fileSearch($this->_dyninclude[\''.$name.'\']), 1); ?>'; + + default: + if ($this->OPTIONS['STRICT']) vlibTemplateError::raiseError('VT_ERROR_INVALID_TAG', KILL, htmlspecialchars($wholetag, ENT_QUOTES)); + break; + } + + } + + /** + * Parses $this->_tmplfile into correct format for eval() to work + * Called by $this->_parse(), or $this->fastPrint, this replaces all <tmpl_*> references + * with their correct php representation, i.e. <tmpl_var title> becomes $this->vars['title'] + * Sets final parsed file to $this->_tmplfilep. + * + * @access private + * @return boolean true/false + */ + private function _intParse () + { + //$mqrt = get_magic_quotes_runtime(); + //set_magic_quotes_runtime(0); + $this->_tmplfilep = '?>'.$this->_getData($this->_tmplfilename).'<?php return true;'; + //set_magic_quotes_runtime($mqrt); + return true; + } + + /** + * Calls _intParse, and eval()s $this->tmplfilep + * and outputs the results to $this->tmploutput + * + * @param bool compress whether to compress contents + * @access private + * @return boolean true/false + */ + private function _parse ($compress = '') + { + if (!$this->_parsed) { + if ($this->OPTIONS['TIME_PARSE']) $this->_firstparsetime = $this->_getMicroTime(); + + $this->_intParse(); + $this->_parsed = true; + + if ($this->OPTIONS['TIME_PARSE']) $this->_totalparsetime = ($this->_getMicroTime() - $this->_firstparsetime); + if ($this->OPTIONS['TIME_PARSE'] && $this->OPTIONS['GLOBAL_CONTEXT_VARS']) $this->setVar('__PARSE_TIME__', $this->getParseTime()); + } + + // ob_start($compress); + ob_start(); + + array_push($this->_currentincludedir, dirname($this->_tmplfilename)); + $this->_includedepth++; + $success = @eval($this->_tmplfilep); + $this->_includedepth--; + array_pop($this->_currentincludedir); + + if ($this->_debug) $this->doDebug(); + if (!$success) vlibTemplateError::raiseError('VT_ERROR_PARSE', FATAL); + $this->_tmploutput .= ob_get_contents(); + ob_end_clean(); + return true; + } + + /** + * Sets one or more of the boolean options 1/0, that control certain actions in the template. + * Use of this function: + * either: vlibTemplate::_setOptions(string option_name, bool option_val [, string option_name, bool option_val ..]); + * or vlibTemplate::_setOptions(array); + * with an associative array where the key is the option_name + * and the value is the option_value. + * + * @param mixed (mulitple) + * @return bool true/false + * @access private + */ + private function _setOption() + { + $numargs = func_num_args(); + if ($numargs < 1) { + vlibTemplateError::raiseError('VT_ERROR_WRONG_NO_PARAMS', null, '_setOption()'); + return false; + } + + if ($numargs == 1) { + $options = func_get_arg(1); + if (is_array($options)) { + foreach ($options as $k => $v) { + if ($v != null) { + if(in_array($k, array_keys($this->OPTIONS))) $this->OPTIONS[$k] = $v; + } else { + continue; + } + } + } else { + vlibTemplateError::raiseError('VT_ERROR_WRONG_NO_PARAMS', null, '_setOption()'); + return false; + } + }elseif (is_int($numargs / 2)) { + for ($i = 0; $i < $numargs; $i=($i+2)) { + $k = func_get_arg($i); + $v = func_get_arg(($i+1)); + if ($v != null) { + if(in_array($k, array_keys($this->OPTIONS))) $this->OPTIONS[$k] = $v; + } + } + } else { + vlibTemplateError::raiseError('VT_ERROR_WRONG_NO_PARAMS', null, '_setOption()'); + return false; + } + return true; + } + + /** + * Used during parsing, this function sets an unknown var checking to see if it + * has been previously set. + * @param string var + * @access private + */ + private function _setUnknown($var) + { + if (!in_array($var, $this->_unknowns)) array_push($this->_unknowns, $var); + } + + /** + * Returns microtime as a float number + * @return float microtime + * @access private + */ + private function _getMicrotime() + { + list($msec, $sec) = explode(' ', microtime()); + return (float)$msec + (float)$sec; + } + + /** + * Returns str encoded to hex code. + * @param string str to be encoded + * @param bool true/false specify whether to use hex_entity + * @return string encoded in hex + * @access private + */ + private function _escape_hex($str = '', $entity = false) { + $prestr = $entity ? '&#x' : '%'; + $poststr= $entity ? ';' : ''; + for ($i=0; $i < strlen($str); $i++) { + $return .= $prestr.bin2hex($str[$i]).$poststr; + } + return $return; + } + + /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + The following functions have no use and are included just so that if the user + is making use of vlibTemplateCache functions, this doesn't crash when changed to + vlibTemplate if the user is quickly bypassing the vlibTemplateCache class. + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/ + function clearCache() {vlibTemplateError::raiseError('VT_WARNING_NOT_CACHE_OBJ', WARNING, 'clearCache()');} + + function recache() {vlibTemplateError::raiseError('VT_WARNING_NOT_CACHE_OBJ', WARNING, 'recache()');} + + function setCacheLifeTime() {vlibTemplateError::raiseError('VT_WARNING_NOT_CACHE_OBJ', WARNING, 'setCacheLifeTime()');} + + function setCacheExtension() {vlibTemplateError::raiseError('VT_WARNING_NOT_CACHE_OBJ', WARNING, 'setCacheExtension()');} + + } // << end class Def + + //include_once (ISPC_CLASS_PATH.'/vlibTemplate/debug.php'); + include_once ISPC_INSTALL_ROOT.'/install/lib/classes/tpl_cache.inc.php'; + +} // << end if(!defined()).. +?> diff --git a/install/lib/classes/tpl_cache.inc.php b/install/lib/classes/tpl_cache.inc.php new file mode 100644 index 0000000..4bf75fa --- /dev/null +++ b/install/lib/classes/tpl_cache.inc.php @@ -0,0 +1,193 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +----------------------------------------------------------------------+ +// | PHP version 4.0 | +// +----------------------------------------------------------------------+ +// | Copyright (c) 2002 Active Fish Group | +// +----------------------------------------------------------------------+ +// | Authors: Kelvin Jones <kelvin@kelvinjones.co.uk> | +// +----------------------------------------------------------------------+ +// +// $Id: cache.php,v 1.1 2003/07/08 12:32:06 platinum Exp $ + +/** + * Class uses all of vlibTemplate's functionality but caches the template files. + * It creates an identical tree structure to your filesystem but with cached files. + * + * @author Kelvin Jones <kelvin@kelvinjones.co.uk> + * @since 22/02/2002 + * @package vLIB + * @access public + */ + + +class tplc extends tpl { + + /*-----------------------------------------------------------------------------\ +| DO NOT TOUCH ANYTHING IN THIS CLASS, IT MAY NOT WORK OTHERWISE | +\-----------------------------------------------------------------------------*/ + + var $_cache = 1; // tells vlibTemplate that we're caching + var $_cachefile; // full path to current cache file (even if it doesn't yet exist) + var $_cacheexists; // has this file been cached before + var $_cachefilelocked; // is this file currently locked whilst writing + var $_cachefiledir; // dir of current cache file + var $_clearcache = 0; + + + /** + * FUNCTION: clearCache + * will unset a file, and set $this->_cacheexists to 0. + * + * @access public + * @return boolean + */ + function clearCache() { + $this->_clearcache = 1; + return true; + } + + + /** + * FUNCTION: recache + * alias for clearCache(). + * + * @access public + * @return boolean + */ + function recache() { + return $this->clearCache(); + } + + + /** + * FUNCTION: setCacheLifeTime + * sets the lifetime of the cached file + * + * @param int $int number of seconds to set lifetime to + * @access public + * @return boolean + */ + function setCacheLifeTime($int = null) { + if ($int == null || !is_int($int)) return false; + if ($int == 0) $int = 60; + if ($int == -1) $int = 157680000; // set to 5 yrs time + $this->OPTIONS['CACHE_LIFETIME'] = $int; + return true; + } + + + /** + * FUNCTION: setCacheExtension + * sets the extention of the cache file + * + * @param str $str name of new cache extention + * @access public + * @return boolean + */ + function setCacheExtension($str = null) { + if ($str == null || !preg_match('/^[a-z0-9]+$/', strtolower($str))) return false; + $this->OPTIONS['CACHE_EXTENSION'] = strtolower($str); + return true; + } + + + /*----------------------------------------\ + Private Functions +-----------------------------------------*/ + + + /** + * FUNCTION: _checkCache + * checks if there's a cache, if there is then it will read the cache file as the template. + */ + function _checkCache ($tmplfile) { + $this->_cachefile = $this->_getFilename($tmplfile); + if ($this->_clearcache) { + if (file_exists($this->_cachefile)) unlink($this->_cachefile); + return false; + } + + if (file_exists($this->_cachefile)) { + $this->_cacheexists = 1; + + // if it's expired + if ((filemtime($this->_cachefile) + $this->OPTIONS['CACHE_LIFETIME']) < date('U') + || filectime($this->_cachefile) < filemtime($tmplfile)) { + $this->_cacheexists = 0; + return false; // so that we know to recache + } + else { + return true; + } + + } else { + $this->_cacheexists = 0; + return false; + } + } + + + /** + * FUNCTION: _getFilename + * gets the full pathname for the cached file + * + */ + function _getFilename($tmplfile) { + return $this->OPTIONS['CACHE_DIRECTORY'].'/'.md5('vlibCachestaR'.realpath($tmplfile)).'.'.$this->OPTIONS['CACHE_EXTENSION']; + } + + + /** + * FUNCTION: _createCache + * creates the cached file + * + */ + function _createCache($data) { + $cache_file = $this->_cachefile; + if(!$this->_prepareDirs($cache_file)) return false; // prepare all of the directories + + $f = fopen($cache_file, "w"); + flock($f, 2); // set an EXclusive lock + if (!$f) vlibTemplateError::raiseError('VT_ERROR_NO_CACHE_WRITE', KILL, $cache_file); + fputs($f, $data); // write the parsed string from vlibTemplate + flock($f, 3); // UNlock file + fclose($f); + touch($cache_file); + return true; + } + + + /** + * FUNCTION: _prepareDirs + * prepares the directory structure + * + */ + function _prepareDirs($file) { + if (empty($file)) die('no filename'); //do error in future + $filepath = dirname($file); + if (is_dir($filepath)) return true; + + $dirs = preg_split('/[\\/]/', $filepath); + $currpath; + foreach ($dirs as $dir) { + $currpath .= $dir .'/'; + $type = @filetype($currpath); + + ($type=='link') and $type = 'dir'; + if ($type != 'dir' && $type != false && !empty($type)) { + vlibTemplateError::raiseError('VT_ERROR_WRONG_CACHE_TYPE', KILL, 'directory: '.$currpath.', type: '.$type); + } + if ($type == 'dir') { + continue; + } + else { + $s = @mkdir($currpath, 0775); + if (!$s) vlibTemplateError::raiseError('VT_ERROR_CACHE_MKDIR_FAILURE', KILL, 'directory: '.$currpath); + } + } + return true; + } + +} // -- end vlibTemplateCache class +?> diff --git a/install/lib/classes/tpl_error.inc.php b/install/lib/classes/tpl_error.inc.php new file mode 100644 index 0000000..c2badaa --- /dev/null +++ b/install/lib/classes/tpl_error.inc.php @@ -0,0 +1,95 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +----------------------------------------------------------------------+ +// | PHP version 4.0 | +// +----------------------------------------------------------------------+ +// | Copyright (c) 2002 Active Fish Group | +// +----------------------------------------------------------------------+ +// | Authors: Kelvin Jones <kelvin@kelvinjones.co.uk> | +// +----------------------------------------------------------------------+ +// +// $Id: error.php,v 1.1 2003/07/08 12:32:06 platinum Exp $ + +define('FATAL', E_USER_ERROR); +define('WARNING', E_USER_WARNING); +define('NOTICE', E_USER_NOTICE); +define('KILL', -1); // used for killing inside parsing. + +/** + * Class is used by vlibTemplate. + * It handles all of the error reporting for vlibTemplate. + * + * @author Kelvin Jones <kelvin@kelvinjones.co.uk> + * @since 06/03/2002 + * @package vLIB + * @access private + */ + + +class vlibTemplateError { + + /*-----------------------------------------------------------------------------\ +| DO NOT TOUCH ANYTHING IN THIS CLASS IT MAY NOT WORK OTHERWISE | +\-----------------------------------------------------------------------------*/ + + public static function raiseError ($code, $level = null, $extra=null) { + if (!($level & error_reporting())&& $level != KILL) return; // binary AND checks for reporting level + + $error_codes = array( + 'VT_ERROR_NOFILE' => 'vlibTemplate Error: Template ('.$extra.') file not found.', + 'VT_ERROR_PARSE' => 'vlibTemplate Error: Parse error!<br>To debug this file, use vlibTemplateDebug instead of vlibTemplate in the class instantiation(i.e. new vlibTemplateDebug).', + 'VT_NOTICE_INVALID_TAG' => 'vlibTemplate Notice: Invalid tag ('.$extra.').', + 'VT_ERROR_INVALID_TAG' => 'vlibTemplate Error: Invalid tag ('.$extra.'). To disable this you must turn of the STRICT option.', + 'VT_NOTICE_INVALID_ATT' => 'vlibTemplate Notice: Invalid attribute ('.$extra.').', + 'VT_WARNING_INVALID_ARR' => 'vlibTemplate Warning: Invalid loop structure passed to vlibTemplate::setLoop() (loop name: '.$extra.').', + 'VT_ERROR_INVALID_ERROR_CODE' => 'vlibTemplate Error: Invalid error raised.', + 'VT_ERROR_WRONG_NO_PARAMS' => 'vlibTemplate Warning: Wrond parameter count passed to '.$extra.'.', + 'VT_ERROR_UNKNOWN_VAR' => 'vlibTemplate Error: template var not found.', + 'VT_ERROR_NO_CACHE_WRITE' => 'vlibTemplate Error: unable to write to cache file ('.$extra.').', + 'VT_ERROR_WRONG_CACHE_TYPE' => 'vlibTemplate Error: non-directory file found in cache root with same name as directory ('.$extra.').', + 'VT_ERROR_CACHE_MKDIR_FAILURE' => 'vlibTemplate Error: failed to create directory in cache root ('.$extra.').', + 'VT_WARNING_NOT_CACHE_OBJ' => 'vlibTemplate Warning: called a vlibTemplateCache function ('.$extra.') without instantiating the vlibTemplateCache class.', + 'VT_WARNING_LOOP_NOT_SET' => 'vlibTemplate Warning: called vlibTemplate::addRow() or vlibTemplate::addLoop() with an invalid loop name.', + 'VT_WARNING_INVALID_RESOURCE' => 'vlibTemplate Warning: Invalid resource type passed to vlibTemplate::setDbLoop() for Db "'.$extra.'".', + 'VT_WARNING_INVALID_LOOP_DB' => 'vlibTemplate Warning: Invalid Db type passed to vlibTemplate::setDbLoop(), "'.$extra.'" not currently available.', + 'VT_WARNING_INVALID_IF_OP' => 'vlibTemplate Warning: The Operator "'.$extra.'" is not supported by vlibTemplate.' + ); + + $error_levels = array( + 'VT_ERROR_NOFILE' => FATAL, + 'VT_ERROR_PARSE' => FATAL, + 'VT_NOTICE_INVALID_TAG' => NOTICE, + 'VT_ERROR_INVALID_TAG' => FATAL, + 'VT_NOTICE_INVALID_ATT' => NOTICE, + 'VT_WARNING_INVALID_ARR' => WARNING, + 'VT_ERROR_INVALID_ERROR_CODE' => FATAL, + 'VT_ERROR_WRONG_NO_PARAMS' => WARNING, + 'VT_ERROR_UNKNOWN_VAR' => WARNING, + 'VT_ERROR_NO_CACHE_WRITE' => KILL, + 'VT_ERROR_WRONG_CACHE_TYPE' => KILL, + 'VT_ERROR_CACHE_MKDIR_FAILURE' => KILL, + 'VT_WARNING_NOT_CACHE_OBJ' => WARNING, + 'VT_WARNING_LOOP_NOT_SET' => WARNING, + 'VT_WARNING_INVALID_RESOURCE' => WARNING, + 'VT_WARNING_INVALID_LOOP_DB' => WARNING, + 'VT_WARNING_INVALID_IF_OP' => WARNING + ); + + ($level === null) and $level = $error_levels[$code]; + if ($level == KILL) { + die ($error_codes[$code]); + } + + if ($msg = $error_codes[$code]) { + trigger_error($msg, $level); + } else { + $level = $error_levels['VT_ERROR_INVALID_ERROR_CODE']; + $msg = $error_codes['VT_ERROR_INVALID_ERROR_CODE']; + trigger_error($msg, $level); + } + return; + } + +} + +?> diff --git a/install/lib/classes/tpl_ini.inc.php b/install/lib/classes/tpl_ini.inc.php new file mode 100644 index 0000000..7a8c821 --- /dev/null +++ b/install/lib/classes/tpl_ini.inc.php @@ -0,0 +1,119 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4: */ +// +----------------------------------------------------------------------+ +// | PHP version 4.0 | +// +----------------------------------------------------------------------+ +// | Copyright (c) 2002 Active Fish Group | +// +----------------------------------------------------------------------+ +// | Authors: Kelvin Jones <kelvin@kelvinjones.co.uk> | +// +----------------------------------------------------------------------+ +// +// $Id: vlibIni.php,v 1.1 2003/07/08 12:31:10 platinum Exp $ + +/* +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; This file contains configuration parametres for use ; +; with the vLIB library. [ NOW A CLASS!! ] ; +; ; +; vLIB uses this file so that for future releases, you ; +; will not have to delve through all the php script ; +; again to set your specific variable/properties ..etc ; +; ; +; ---------------------------------------------------- ; +; ATTENTION: Do NOT remove any variable given in the ; +; configurations below as they will probably still be ; +; needed by vLIB. If you do not need a variable simply ; +; let it be. ; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +*/ + +if (!defined('vlibIniClassLoaded')) { + define('vlibIniClassLoaded', 1); + + /** + * vlibIni is a class used to store configuration parameters + * for the vLIB library. + * + * @since 21/07/2002 + * @author Kelvin Jones <kelvin@kelvinjones.co.uk> + * @package vLIB + * @access private + */ + + + class vlibIni { + + /** config vars for vlibTemplate */ + public static function vlibTemplate () { + + global $conf; + + $tpl_dir = ISPC_INSTALL_ROOT."/install/tpl"; + $include_paths = array('/usr/local/ispconfig/server/conf-custom/install'); + + return array( + + 'TEMPLATE_DIR' => $tpl_dir, // Default directory for your template files (full path) + // leave the '/' or '\' off the end of the directory. + 'INCLUDE_PATHS' => $include_paths, // The include path is always searched first for a template file before the template_dir is checked + + 'MAX_INCLUDES' => 10, // Drill depth for tmpl_include's + + 'GLOBAL_VARS' => 1, // if set to 1, any variables not found in a + // loop will search for a global var as well + + 'GLOBAL_CONTEXT_VARS' => 1, // if set to 1, vlibTemplate will add global vars + // reflecting the environment. + + 'LOOP_CONTEXT_VARS' => 1, // if set to 1, vlibTemplate will add loop specific vars + // on each row of the loop. + + 'SET_LOOP_VAR' => 1, // Sets a global variable for each top level loops + + 'DEFAULT_ESCAPE' => 'none', // 1 of the following: html, url, sq, dq, none + + 'STRICT' => 0, // Dies when encountering an incorrect tmpl_* + // style tags i.e. tmpl_vae + + 'CASELESS' => 0, // Removes case sensitivity on all variables + + 'UNKNOWNS' => 'ignore', // How to handle unknown variables. + // 1 of the following: ignore, remove, leave,print, comment + // 1 of the following: ignore, remove, leave, print, comment + + 'TIME_PARSE' => '0', // Will enable you to time how long vlibTemplate takes to parse + // your template. You then use the function: getParseTime(). + + 'ENABLE_PHPINCLUDE' => '1', // Will allow template to include a php file using <TMPL_PHPINCLUDE> + + + /* the following are only used by the vlibTemplateCache class. */ + + 'CACHE_DIRECTORY' => '/tmp', + // Directory where the cached filesystem + // will be set up (full path, and must be writable) + // '/' or '\' off the end of the directory. + + 'CACHE_LIFETIME' => 604800, // Duration until file is re-cached in seconds (604800 = 1 week) + + 'CACHE_EXTENSION' => 'vtc' // extention to be used by the cached file i.e. index.php will become + // index.vtc (vlibTemplate Compiled) + ); + + } // << end function vlibTemplate + + + + /** config vars for vlibDate */ + public function vlibDate () { + + return array( + 'DEFAULT_LANG' => 'de' // default language for the date displays + ); + + }// << end function vlibDate + + + }// << end class vlibIni +} +?> diff --git a/install/lib/install.lib.php b/install/lib/install.lib.php index 5686ac1..5de8777 100644 --- a/install/lib/install.lib.php +++ b/install/lib/install.lib.php @@ -828,5 +828,30 @@ return $timezone; } +function getapacheversion($get_minor = false) { + global $app; + + $cmd = ''; + if(is_installed('apache2ctl')) $cmd = 'apache2ctl -v'; + elseif(is_installed('apachectl')) $cmd = 'apachectl -v'; + else { + $app->log("Could not check apache version, apachectl not found.", LOGLEVEL_WARN); + return '2.2'; + } + + exec($cmd, $output, $return_var); + if($return_var != 0 || !$output[0]) { + $app->log("Could not check apache version, apachectl did not return any data.", LOGLEVEL_WARN); + return '2.2'; + } + + if(preg_match('/version:\s*Apache\/(\d+)(\.(\d+)(\.(\d+))*)?(\D|$)/i', $output[0], $matches)) { + return $matches[1] . (isset($matches[3]) ? '.' . $matches[3] : '') . (isset($matches[5]) && $get_minor == true ? '.' . $matches[5] : ''); + } else { + $app->log("Could not check apache version, did not find version string in apachectl output.", LOGLEVEL_WARN); + return '2.2'; + } + } + ?> diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 6aa4929..507a5d0 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -1251,11 +1251,12 @@ $vhost_conf_dir = $conf['apache']['vhost_conf_dir']; $vhost_conf_enabled_dir = $conf['apache']['vhost_conf_enabled_dir']; - // copy('tpl/apache_ispconfig.conf.master',$vhost_conf_dir.'/ispconfig.conf'); - - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/apache_ispconfig.conf.master', 'tpl/apache_ispconfig.conf.master'); + $tpl = new tpl('apache_ispconfig.conf.master'); + $tpl->setVar('apache_version',getapacheversion()); + $records = $this->db->queryAllRecords('SELECT * FROM '.$conf['mysql']['master_database'].'.server_ip WHERE server_id = '.$conf['server_id']." AND virtualhost = 'y'"); - + $ip_addresses = array(); + if(is_array($records) && count($records) > 0) { foreach($records as $rec) { if($rec['ip_type'] == 'IPv6') { @@ -1268,15 +1269,17 @@ foreach($ports as $port) { $port = intval($port); if($port > 0 && $port < 65536 && $ip_address != '') { - $content .= 'NameVirtualHost '.$ip_address.":".$port."\n"; + $ip_addresses[] = array('ip_address' => $ip_address, 'port' => $port); } } } } } - - $content .= "\n"; - wf($vhost_conf_dir.'/ispconfig.conf', $content); + + if(count($ip_addresses) > 0) $tpl->setLoop('ip_adresses',$ip_addresses); + + wf($vhost_conf_dir.'/ispconfig.conf', $tpl->grab()); + unset($tpl); if(!@is_link($vhost_conf_enabled_dir.'/000-ispconfig.conf')) { symlink($vhost_conf_dir.'/ispconfig.conf', $vhost_conf_enabled_dir.'/000-ispconfig.conf'); @@ -1530,23 +1533,24 @@ } // Dont just copy over the virtualhost template but add some custom settings - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/apache_apps.vhost.master', 'tpl/apache_apps.vhost.master'); - - $content = str_replace('{apps_vhost_ip}', $conf['web']['apps_vhost_ip'], $content); - $content = str_replace('{apps_vhost_port}', $conf['web']['apps_vhost_port'], $content); - $content = str_replace('{apps_vhost_dir}', $conf['web']['website_basedir'].'/apps', $content); - $content = str_replace('{website_basedir}', $conf['web']['website_basedir'], $content); - $content = str_replace('{apps_vhost_servername}', $apps_vhost_servername, $content); + $tpl = new tpl('apache_apps.vhost.master'); + $tpl->setVar('apps_vhost_ip',$conf['web']['apps_vhost_ip']); + $tpl->setVar('apps_vhost_port',$conf['web']['apps_vhost_port']); + $tpl->setVar('apps_vhost_dir',$conf['web']['website_basedir'].'/apps'); + $tpl->setVar('apps_vhost_basedir',$conf['web']['website_basedir']); + $tpl->setVar('apps_vhost_servername',$apps_vhost_servername); + $tpl->setVar('apache_version',getapacheversion()); // comment out the listen directive if port is 80 or 443 if($conf['web']['apps_vhost_ip'] == 80 or $conf['web']['apps_vhost_ip'] == 443) { - $content = str_replace('{vhost_port_listen}', '#', $content); + $tpl->setVar('vhost_port_listen','#'); } else { - $content = str_replace('{vhost_port_listen}', '', $content); + $tpl->setVar('vhost_port_listen',''); } - wf($vhost_conf_dir.'/apps.vhost', $content); + wf($vhost_conf_dir.'/apps.vhost', $tpl->grab()); + unset($tpl); //copy('tpl/apache_ispconfig.vhost.master', "$vhost_conf_dir/ispconfig.vhost"); //* and create the symlink @@ -1926,30 +1930,31 @@ $vhost_conf_enabled_dir = $conf['apache']['vhost_conf_enabled_dir']; // Dont just copy over the virtualhost template but add some custom settings - $content = rfsel($conf['ispconfig_install_dir'].'/server/conf-custom/install/apache_ispconfig.vhost.master', 'tpl/apache_ispconfig.vhost.master'); - $content = str_replace('{vhost_port}', $conf['apache']['vhost_port'], $content); + $tpl = new tpl('apache_ispconfig.vhost.master'); + $tpl->setVar('vhost_port',$conf['apache']['vhost_port']); // comment out the listen directive if port is 80 or 443 if($conf['apache']['vhost_port'] == 80 or $conf['apache']['vhost_port'] == 443) { - $content = str_replace('{vhost_port_listen}', '#', $content); + $tpl->setVar('vhost_port_listen','#'); } else { - $content = str_replace('{vhost_port_listen}', '', $content); + $tpl->setVar('vhost_port_listen',''); } if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key')) { - $content = str_replace('{ssl_comment}', '', $content); + $tpl->setVar('ssl_comment',''); } else { - $content = str_replace('{ssl_comment}', '#', $content); + $tpl->setVar('ssl_comment','#'); } if(is_file($install_dir.'/interface/ssl/ispserver.crt') && is_file($install_dir.'/interface/ssl/ispserver.key') && is_file($install_dir.'/interface/ssl/ispserver.bundle')) { - $content = str_replace('{ssl_bundle_comment}', '', $content); + $tpl->setVar('ssl_bundle_comment',''); } else { - $content = str_replace('{ssl_bundle_comment}', '#', $content); + $tpl->setVar('ssl_bundle_comment','#'); } + + $tpl->setVar('apache_version',getapacheversion()); - wf($vhost_conf_dir.'/ispconfig.vhost', $content); + wf($vhost_conf_dir.'/ispconfig.vhost', $tpl->grab()); - //copy('tpl/apache_ispconfig.vhost.master', $vhost_conf_dir.'/ispconfig.vhost'); //* and create the symlink if($this->is_update == false) { if(@is_link($vhost_conf_enabled_dir.'/ispconfig.vhost')) unlink($vhost_conf_enabled_dir.'/ispconfig.vhost'); diff --git a/install/tpl/apache_apps.vhost.master b/install/tpl/apache_apps.vhost.master index d132b50..6d6d4e2 100644 --- a/install/tpl/apache_apps.vhost.master +++ b/install/tpl/apache_apps.vhost.master @@ -4,40 +4,46 @@ # for the ISPConfig apps vhost ###################################################### -{vhost_port_listen} Listen {apps_vhost_port} -# NameVirtualHost *:{apps_vhost_port} +{tmpl_var name='vhost_port_listen'} Listen {tmpl_var name='apps_vhost_port'} +# NameVirtualHost *:{tmpl_var name='apps_vhost_port'} -<VirtualHost {apps_vhost_ip}:{apps_vhost_port}> +<VirtualHost {tmpl_var name='apps_vhost_ip'}:{tmpl_var name='apps_vhost_port'}> ServerAdmin webmaster@localhost - {apps_vhost_servername} + {tmpl_var name='apps_vhost_servername'} <FilesMatch "\.ph(p3?|tml)$"> SetHandler None </FilesMatch> <IfModule mod_php5.c> - DocumentRoot {apps_vhost_dir} + DocumentRoot {tmpl_var name='apps_vhost_dir'} AddType application/x-httpd-php .php - <Directory {apps_vhost_dir}> - # php_admin_value open_basedir "{apps_vhost_dir}:/usr/share:/tmp" - Options +FollowSymLinks - AllowOverride None - Order allow,deny - Allow from all + <Directory {tmpl_var name='apps_vhost_dir'}> + Options FollowSymLinks + AllowOverride None + <tmpl_if name='apache_version' op='>' value='2.2' format='version'> + Require all granted + <tmpl_else> + Order allow,deny + Allow from all + </tmpl_if> </Directory> </IfModule> <IfModule mod_fcgid.c> - DocumentRoot {apps_vhost_dir} + DocumentRoot {tmpl_var name='apps_vhost_dir'} SuexecUserGroup ispapps ispapps - <Directory {apps_vhost_dir}> - Options +Indexes +FollowSymLinks +MultiViews +ExecCGI - AllowOverride AuthConfig Indexes Limit Options FileInfo - AddHandler fcgid-script .php - FCGIWrapper {website_basedir}/php-fcgi-scripts/apps/.php-fcgi-starter .php - # FcgidBusyTimeout 3600 - Order allow,deny - Allow from all + <Directory {tmpl_var name='apps_vhost_dir'}> + Options +Indexes +FollowSymLinks +MultiViews +ExecCGI + AllowOverride AuthConfig Indexes Limit Options FileInfo + AddHandler fcgid-script .php + FCGIWrapper {tmpl_var name='apps_vhost_basedir'}/php-fcgi-scripts/apps/.php-fcgi-starter .php + <tmpl_if name='apache_version' op='>' value='2.2' format='version'> + Require all granted + <tmpl_else> + Order allow,deny + Allow from all + </tmpl_if> </Directory> </IfModule> diff --git a/install/tpl/apache_ispconfig.conf.master b/install/tpl/apache_ispconfig.conf.master index 0745c28..f9062f5 100644 --- a/install/tpl/apache_ispconfig.conf.master +++ b/install/tpl/apache_ispconfig.conf.master @@ -1,5 +1,4 @@ - ################################################ # ISPConfig Logfile configuration for vlogger ################################################ @@ -9,46 +8,107 @@ <Directory /var/www/clients> AllowOverride None - Order Deny,Allow - Deny from all + <tmpl_if name='apache_version' op='>' value='2.2' format='version'> + Require all deny + <tmpl_else> + Order Deny,Allow + Deny from all + </tmpl_if> </Directory> # Do not allow access to the root file system of the server for security reasons <Directory /> - AllowOverride None - Order Deny,Allow - Deny from all + AllowOverride None + <tmpl_if name='apache_version' op='>' value='2.2' format='version'> + Require all deny + <tmpl_else> + Order Deny,Allow + Deny from all + </tmpl_if> </Directory> <Directory /var/www/conf> AllowOverride None - Order Deny,Allow - Deny from all + <tmpl_if name='apache_version' op='>' value='2.2' format='version'> + Require all deny + <tmpl_else> + Order Deny,Allow + Deny from all + </tmpl_if> </Directory> # Except of the following directories that contain website scripts <Directory /usr/share/phpmyadmin> + <tmpl_if name='apache_version' op='>' value='2.2' format='version'> + Require all granted + <tmpl_else> Order allow,deny Allow from all + </tmpl_if> </Directory> <Directory /usr/share/phpMyAdmin> + <tmpl_if name='apache_version' op='>' value='2.2' format='version'> + Require all granted + <tmpl_else> Order allow,deny Allow from all + </tmpl_if> </Directory> <Directory /usr/share/squirrelmail> + <tmpl_if name='apache_version' op='>' value='2.2' format='version'> + Require all granted + <tmpl_else> Order allow,deny Allow from all + </tmpl_if> +</Directory> + +# Allow access to mailman on OpenSuSE +<Directory /usr/lib/mailman/cgi-bin> + <tmpl_if name='apache_version' op='>' value='2.2' format='version'> + Require all granted + <tmpl_else> + Order allow,deny + Allow from all + </tmpl_if> +</Directory> + +<Directory /usr/lib/mailman/icons> + <tmpl_if name='apache_version' op='>' value='2.2' format='version'> + Require all granted + <tmpl_else> + Order allow,deny + Allow from all + </tmpl_if> +</Directory> + +<Directory /var/lib/mailman/archives/> + Options +FollowSymLinks + <tmpl_if name='apache_version' op='>' value='2.2' format='version'> + Require all granted + <tmpl_else> + Order allow,deny + Allow from all + </tmpl_if> </Directory> # allow path to awstats and alias for awstats icons <Directory /usr/share/awstats> + <tmpl_if name='apache_version' op='>' value='2.2' format='version'> + Require all granted + <tmpl_else> Order allow,deny Allow from all + </tmpl_if> </Directory> Alias /awstats-icon "/usr/share/awstats/icon" NameVirtualHost *:80 NameVirtualHost *:443 +<tmpl_loop name="ip_adresses"> +NameVirtualHost {tmpl_var name="ip_address"}:{tmpl_var name="port"} +</tmpl_loop> + diff --git a/install/tpl/apache_ispconfig.vhost.master b/install/tpl/apache_ispconfig.vhost.master index 7067cda..bf2fe9e 100644 --- a/install/tpl/apache_ispconfig.vhost.master +++ b/install/tpl/apache_ispconfig.vhost.master @@ -4,10 +4,10 @@ # for the ISPConfig controlpanel ###################################################### -{vhost_port_listen} Listen {vhost_port} -NameVirtualHost *:{vhost_port} +<tmpl_var name="vhost_port_listen"> Listen <tmpl_var name="vhost_port"> +NameVirtualHost *:<tmpl_var name="vhost_port"> -<VirtualHost _default_:{vhost_port}> +<VirtualHost _default_:<tmpl_var name="vhost_port">> ServerAdmin webmaster@localhost <FilesMatch "\.ph(p3?|tml)$"> @@ -22,8 +22,12 @@ AllowOverride AuthConfig Indexes Limit Options FileInfo AddHandler fcgid-script .php FCGIWrapper /var/www/php-fcgi-scripts/ispconfig/.php-fcgi-starter .php + <tmpl_if name='apache_version' op='>' value='2.2' format='version'> + Require all granted + <tmpl_else> Order allow,deny Allow from all + </tmpl_if> </Directory> IPCCommTimeout 7200 MaxRequestLen 15728640 @@ -37,8 +41,12 @@ # php_admin_value open_basedir "/usr/local/ispconfig/interface:/usr/share:/tmp" Options +FollowSymLinks AllowOverride None + <tmpl_if name='apache_version' op='>' value='2.2' format='version'> + Require all granted + <tmpl_else> Order allow,deny Allow from all + </tmpl_if> php_value magic_quotes_gpc 0 </Directory> </IfModule> @@ -52,22 +60,30 @@ </IfModule> # SSL Configuration - {ssl_comment}SSLEngine On - {ssl_comment}SSLCertificateFile /usr/local/ispconfig/interface/ssl/ispserver.crt - {ssl_comment}SSLCertificateKeyFile /usr/local/ispconfig/interface/ssl/ispserver.key - {ssl_bundle_comment}SSLCACertificateFile /usr/local/ispconfig/interface/ssl/ispserver.bundle + <tmpl_var name="ssl_comment">SSLEngine On + <tmpl_var name="ssl_comment">SSLCertificateFile /usr/local/ispconfig/interface/ssl/ispserver.crt + <tmpl_var name="ssl_comment">SSLCertificateKeyFile /usr/local/ispconfig/interface/ssl/ispserver.key + <tmpl_var name="ssl_bundle_comment">SSLCACertificateFile /usr/local/ispconfig/interface/ssl/ispserver.bundle </VirtualHost> <Directory /var/www/php-cgi-scripts> AllowOverride None + <tmpl_if name='apache_version' op='>' value='2.2' format='version'> + Require all denied + <tmpl_else> Order Deny,Allow Deny from all + </tmpl_if> </Directory> <Directory /var/www/php-fcgi-scripts> AllowOverride None + <tmpl_if name='apache_version' op='>' value='2.2' format='version'> + Require all denied + <tmpl_else> Order Deny,Allow Deny from all + </tmpl_if> </Directory> diff --git a/install/update.php b/install/update.php index 5cc2f42..08ffcc8 100644 --- a/install/update.php +++ b/install/update.php @@ -66,6 +66,9 @@ define('ISPC_LOG_FILE', '/var/log/ispconfig_install.log'); define('ISPC_INSTALL_ROOT', realpath(dirname(__FILE__).'/../')); +//** Include the templating lib +require_once 'lib/classes/tpl.inc.php'; + //** Check for ISPConfig 2.x versions if(is_dir('/root/ispconfig') || is_dir('/home/admispconfig')) { die('This software cannot be installed on a server wich runs ISPConfig 2.x.'); diff --git a/interface/lib/config.inc.php b/interface/lib/config.inc.php index 12d4b48..3007f24 100644 --- a/interface/lib/config.inc.php +++ b/interface/lib/config.inc.php @@ -139,6 +139,7 @@ //** Default Language $conf['language'] = 'en'; $conf['debug_language'] = false; +$conf['language_file_import_enabled'] = true; // Bool value: true / false //** Default Country $conf['country'] = 'DE'; diff --git a/interface/lib/lang/cz.lng b/interface/lib/lang/cz.lng index 1683c6e..93f6d45 100644 --- a/interface/lib/lang/cz.lng +++ b/interface/lib/lang/cz.lng @@ -133,5 +133,11 @@ $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.'; +$wb['client_you_are_locked'] = 'Nemáte oprávnění měnit žádná nastavení.'; +$wb['gender_m_txt'] = 'Pan'; +$wb['gender_f_txt'] = 'Paní'; +$wb['client_cannot_be_deleted_because_of_billing_module_txt'] = 'This client has records in the billing module, therefore he cannot be deleted.'; +$wb['yes_txt'] = 'Ano'; +$wb['no_txt'] = 'Ne'; ?> diff --git a/interface/web/admin/lib/lang/cz_directive_snippets.lng b/interface/web/admin/lib/lang/cz_directive_snippets.lng index 085aec4..8038176 100644 --- a/interface/web/admin/lib/lang/cz_directive_snippets.lng +++ b/interface/web/admin/lib/lang/cz_directive_snippets.lng @@ -6,5 +6,6 @@ $wb['active_txt'] = 'Aktivní'; $wb['directive_snippets_name_empty'] = 'Please specify a name for the snippet.'; $wb['directive_snippets_name_error_unique'] = 'There is already a directive snippet with this name.'; +$wb['variables_txt'] = 'Proměnné'; ?> diff --git a/interface/web/admin/lib/lang/cz_language_import.lng b/interface/web/admin/lib/lang/cz_language_import.lng index 11e42f8..792cd3b 100644 --- a/interface/web/admin/lib/lang/cz_language_import.lng +++ b/interface/web/admin/lib/lang/cz_language_import.lng @@ -5,5 +5,6 @@ $wb['language_overwrite_txt'] = 'Přepsat soubor, pokud existuje.'; $wb['btn_cancel_txt'] = 'Zpět'; $wb['ignore_version_txt'] = 'Přeskočit kontrolu verze ISPConfigu.'; +$wb['list_desc_txt'] = 'VAROVÁNÍ: Nepoužívejte import souborů jazyku z nedůvěryhodných zdrojů.'; ?> diff --git a/interface/web/admin/lib/lang/cz_login_as.lng b/interface/web/admin/lib/lang/cz_login_as.lng new file mode 100644 index 0000000..0f09d10 --- /dev/null +++ b/interface/web/admin/lib/lang/cz_login_as.lng @@ -0,0 +1,12 @@ +<?php +$wb['login_1_txt'] = 'Chcete se přihlásit jako klient'; +$wb['login_2_txt'] = 'Pokud se přihlásíte jako klient, zpět do sekce Administrátora se vratíte kliknutím na odhlášení klienta.'; +$wb['btn_yes_txt'] = 'Ano, přihlásit se jako klient'; +$wb['btn_back_txt'] = 'Ne, zpět na seznam klientů'; +$wb['udp_port_help_txt'] = 'Odděleny čárkou'; +$wb['active_txt'] = 'Aktivní'; +$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 \\",\\".'; +?> + diff --git a/interface/web/admin/lib/lang/cz_server_config.lng b/interface/web/admin/lib/lang/cz_server_config.lng index 18e833e..6cfc18b 100644 --- a/interface/web/admin/lib/lang/cz_server_config.lng +++ b/interface/web/admin/lib/lang/cz_server_config.lng @@ -173,7 +173,7 @@ $wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.'; $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_onok_txt'] = 'Poslat zprávu klientovi, že kvóta je již v pořádku'; $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'; @@ -188,5 +188,7 @@ $wb['munin_password_txt'] = 'Munin Password'; $wb['munin_url_error_regex'] = 'Invalid Munin URL'; $wb['munin_url_note_txt'] = 'Placeholder:'; +$wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?'; +$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted'; ?> diff --git a/interface/web/admin/lib/lang/cz_system_config.lng b/interface/web/admin/lib/lang/cz_system_config.lng index 4080437..7bc8701 100644 --- a/interface/web/admin/lib/lang/cz_system_config.lng +++ b/interface/web/admin/lib/lang/cz_system_config.lng @@ -49,8 +49,22 @@ $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_error_regex'] = 'Invalid webmail URL'; +$wb['webmail_url_error_regex'] = 'Neplatný 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'; +$wb['customer_no_template_txt'] = 'Zákaznické číslo - šablona'; +$wb['customer_no_template_error_regex_txt'] = 'Zákaznické číslo šablony obsahuje neplatné znaky'; +$wb['customer_no_start_txt'] = 'Zákaznické číslo - počáteční hodnota'; +$wb['customer_no_counter_txt'] = 'Zákaznické číslo - čítač'; +$wb['session_timeout_txt'] = 'Časový limit relace (minuty)'; +$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"'; +$wb['No'] = 'Ne'; ?> diff --git a/interface/web/admin/lib/lang/cz_users.lng b/interface/web/admin/lib/lang/cz_users.lng index 0324f16..16e6882 100644 --- a/interface/web/admin/lib/lang/cz_users.lng +++ b/interface/web/admin/lib/lang/cz_users.lng @@ -30,5 +30,6 @@ $wb['password_mismatch_txt'] = 'Hesla se neshodují.'; $wb['password_match_txt'] = 'Hesla se shodují.'; $wb['username_error_collision'] = 'Uživatelské jméno nesmí být web nebo web a číslo.\\"'; +$wb['client_not_admin_err'] = 'A user that belongs to a client can not be set to type: admin'; ?> diff --git a/interface/web/client/lib/lang/cz.lng b/interface/web/client/lib/lang/cz.lng index 38d1ac8..cf86d1c 100644 --- a/interface/web/client/lib/lang/cz.lng +++ b/interface/web/client/lib/lang/cz.lng @@ -5,8 +5,8 @@ $wb['Add Client'] = 'Přidat klienta'; $wb['Edit Client'] = 'Upravit klienta'; $wb['Clients'] = 'Klienti'; -$wb['Templates'] = 'Templates'; -$wb['Limit-Templates'] = 'Limit-Templates'; +$wb['Templates'] = 'Šablony'; +$wb['Limit-Templates'] = 'Klientské šablony (Limity)'; $wb['Add Reseller'] = 'Přidat distributora'; $wb['Edit Reseller'] = 'Upravit distributora'; $wb['Resellers'] = 'Distributoři (prodejci)'; diff --git a/interface/web/client/lib/lang/cz_client.lng b/interface/web/client/lib/lang/cz_client.lng index e0a57d7..8851aa2 100644 --- a/interface/web/client/lib/lang/cz_client.lng +++ b/interface/web/client/lib/lang/cz_client.lng @@ -144,5 +144,14 @@ $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'; +$wb['locked_txt'] = 'Zamčeno (zakáže všechny weby atd.)'; +$wb['canceled_txt'] = 'Zrušeno (zakáže přihlášení klienta)'; +$wb['gender_txt'] = 'Oslovení'; +$wb['gender_m_txt'] = 'Pan'; +$wb['gender_f_txt'] = 'Paní'; +$wb['added_by_txt'] = 'Kdo vytvořil účet'; +$wb['added_date_txt'] = 'Datum vytvoření účtu'; +$wb['parent_client_id_txt'] = 'Přiřazení klienta k distributorovi (prodejci)'; +$wb['none_txt'] = 'none'; ?> diff --git a/interface/web/client/lib/lang/cz_client_message.lng b/interface/web/client/lib/lang/cz_client_message.lng index 401908d..72ee184 100644 --- a/interface/web/client/lib/lang/cz_client_message.lng +++ b/interface/web/client/lib/lang/cz_client_message.lng @@ -15,5 +15,7 @@ $wb['all_clients_resellers_txt'] = 'Všichni klienti a distributoři (prodejci)'; $wb['all_clients_txt'] = 'Všichni klienti'; $wb['variables_txt'] = 'Výběr (možnosti):'; +$wb['gender_m_txt'] = 'Pan'; +$wb['gender_f_txt'] = 'Paní'; ?> diff --git a/interface/web/client/lib/lang/cz_client_message_template.lng b/interface/web/client/lib/lang/cz_client_message_template.lng new file mode 100644 index 0000000..2892f4d --- /dev/null +++ b/interface/web/client/lib/lang/cz_client_message_template.lng @@ -0,0 +1,12 @@ +<?php +$wb['template_type_txt'] = 'Typ e-mailu'; +$wb['template_name_txt'] = 'Název šablony'; +$wb['subject_txt'] = 'Předmět'; +$wb['message_txt'] = 'Zpráva'; +$wb['Email template'] = 'Šablona e-mailu'; +$wb['Settings'] = 'Nastavení'; +$wb['variables_txt'] = 'Proměnné'; +$wb['variables_description_txt'] = 'Proměnné uživatelské jméno a heslo jsou k dispozici (funkční) jako volba pouze v uvítacím e-mailu.'; +$wb['duplicate_welcome_error'] = 'There can be only one default welcome email template. Please edit the existing template instead of adding a new one.'; +?> + diff --git a/interface/web/client/lib/lang/cz_client_message_template_list.lng b/interface/web/client/lib/lang/cz_client_message_template_list.lng new file mode 100644 index 0000000..f96a284 --- /dev/null +++ b/interface/web/client/lib/lang/cz_client_message_template_list.lng @@ -0,0 +1,6 @@ +<?php +$wb['list_head_txt'] = 'E-mailové šablony'; +$wb['template_type_txt'] = 'Zpráva pro'; +$wb['template_name_txt'] = 'Název šablony'; +?> + diff --git a/interface/web/client/lib/lang/cz_client_template.lng b/interface/web/client/lib/lang/cz_client_template.lng index 22c5301..20f031e 100644 --- a/interface/web/client/lib/lang/cz_client_template.lng +++ b/interface/web/client/lib/lang/cz_client_template.lng @@ -87,5 +87,7 @@ $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['limit_domainmodule_txt'] = 'Domainmodule Limit'; +$wb['client_limits_txt'] = 'Klientské limity'; ?> diff --git a/interface/web/client/lib/lang/cz_reseller.lng b/interface/web/client/lib/lang/cz_reseller.lng index 3ba47ac..3ff3e69 100644 --- a/interface/web/client/lib/lang/cz_reseller.lng +++ b/interface/web/client/lib/lang/cz_reseller.lng @@ -143,5 +143,20 @@ $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'; +$wb['locked_txt'] = 'Zamčený účet'; +$wb['canceled_txt'] = 'Zrušený účet'; +$wb['gender_m_txt'] = 'Pan'; +$wb['gender_f_txt'] = 'Paní'; +$wb['gender_txt'] = 'Oslovení'; +$wb['customer_no_template_txt'] = 'Zákaznické číslo - šablona'; +$wb['customer_no_template_error_regex_txt'] = 'Zákaznické číslo šablony obsahuje neplatné znaky'; +$wb['customer_no_start_txt'] = 'Zákaznické číslo - počáteční hodnota'; +$wb['customer_no_counter_txt'] = 'Zákaznické číslo - čítač'; +$wb['added_by_txt'] = 'Kdo vytvořil účet'; +$wb['added_date_txt'] = 'Datum vytvoření účtu'; +$wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.'; +$wb['limit_domainmodule_txt'] = 'Domainmodule Limit'; +$wb['client_limits_txt'] = 'Klientské limity'; +$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.'; ?> diff --git a/interface/web/dashboard/lib/lang/cz_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/cz_dashlet_mailquota.lng index db6450a..19dc161 100644 --- a/interface/web/dashboard/lib/lang/cz_dashlet_mailquota.lng +++ b/interface/web/dashboard/lib/lang/cz_dashlet_mailquota.lng @@ -1,5 +1,5 @@ <?php -$wb['mailquota_txt'] = 'Kvóta e-mailové schránky'; +$wb['mailquota_txt'] = 'Kvóty e-mailových schránek'; $wb['email_txt'] = 'E-mailové adresy'; $wb['name_txt'] = 'Jméno'; $wb['used_txt'] = 'Využité místo'; 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 39aaae8..0d0d972 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 @@ -1,5 +1,5 @@ <?php -$wb['title_txt'] = 'Title'; +$wb['title_txt'] = 'Oslovení'; $wb['target_txt'] = 'Cíl'; $wb['link_txt'] = 'Link'; $wb['header_txt'] = 'Navi properties'; diff --git a/interface/web/designer/lib/lang/cz_module_show.lng b/interface/web/designer/lib/lang/cz_module_show.lng index 78fdd9c..160d501 100644 --- a/interface/web/designer/lib/lang/cz_module_show.lng +++ b/interface/web/designer/lib/lang/cz_module_show.lng @@ -1,6 +1,6 @@ <?php $wb['header_txt'] = 'Menu editor'; -$wb['title_txt'] = 'Title'; +$wb['title_txt'] = 'Oslovení'; $wb['name_txt'] = 'Module'; $wb['delete_txt'] = 'Smazat'; $wb['properties_txt'] = 'Properties'; diff --git a/interface/web/dns/lib/lang/cz_dns_a.lng b/interface/web/dns/lib/lang/cz_dns_a.lng index 4631836..d059725 100644 --- a/interface/web/dns/lib/lang/cz_dns_a.lng +++ b/interface/web/dns/lib/lang/cz_dns_a.lng @@ -13,5 +13,6 @@ $wb['data_error_empty'] = 'IP adresa je prázdná'; $wb['data_error_regex'] = 'IP adresa má chybný formát'; $wb['data_error_duplicate'] = 'Duplikace A záznamu'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_aaaa.lng b/interface/web/dns/lib/lang/cz_dns_aaaa.lng index 1936207..bff6a41 100644 --- a/interface/web/dns/lib/lang/cz_dns_aaaa.lng +++ b/interface/web/dns/lib/lang/cz_dns_aaaa.lng @@ -12,5 +12,6 @@ $wb['name_error_regex'] = 'Hostname má chybný formát.'; $wb['data_error_empty'] = 'IP adresa je prázdná'; $wb['data_error_regex'] = 'IP adresa má chybný formát'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_alias.lng b/interface/web/dns/lib/lang/cz_dns_alias.lng index a32def2..d9d0d83 100644 --- a/interface/web/dns/lib/lang/cz_dns_alias.lng +++ b/interface/web/dns/lib/lang/cz_dns_alias.lng @@ -12,5 +12,6 @@ $wb['name_error_regex'] = 'Hostname má chybný formát.'; $wb['data_error_empty'] = 'Cílový Hostname je prázdný'; $wb['data_error_regex'] = 'Cílový Hostname má chybný formát'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_cname.lng b/interface/web/dns/lib/lang/cz_dns_cname.lng index 3a7299a..4580376 100644 --- a/interface/web/dns/lib/lang/cz_dns_cname.lng +++ b/interface/web/dns/lib/lang/cz_dns_cname.lng @@ -13,5 +13,6 @@ $wb['data_error_empty'] = 'Cílový hostname je prázdný'; $wb['data_error_regex'] = 'Cílový hostname má chybný formát'; $wb['data_error_duplicate'] = 'Duplikace A záznamu nebo CNAME-záznamu'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_dkim.lng b/interface/web/dns/lib/lang/cz_dns_dkim.lng new file mode 100644 index 0000000..5ffefc4 --- /dev/null +++ b/interface/web/dns/lib/lang/cz_dns_dkim.lng @@ -0,0 +1,10 @@ +<?php +$wb['public_key_txt'] = 'Public-Key'; +$wb['ttl_txt'] = 'TTL'; +$wb['active_txt'] = 'Active'; +$wb['record_exists_txt'] = 'DNS-Record already exists'; +$wb['dkim_disabled_txt'] = 'DKIM disabled for this mail-domain'; +$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/cz_dns_hinfo.lng b/interface/web/dns/lib/lang/cz_dns_hinfo.lng index 636600b..8d0b565 100644 --- a/interface/web/dns/lib/lang/cz_dns_hinfo.lng +++ b/interface/web/dns/lib/lang/cz_dns_hinfo.lng @@ -12,5 +12,6 @@ $wb['name_error_regex'] = 'Hostname má chybný formát.'; $wb['data_error_empty'] = 'Informace o hostovi je prázdná'; $wb['data_error_regex'] = 'Informace o hostovi má chybný formát'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_mx.lng b/interface/web/dns/lib/lang/cz_dns_mx.lng index 49c98ea..cae3eb9 100644 --- a/interface/web/dns/lib/lang/cz_dns_mx.lng +++ b/interface/web/dns/lib/lang/cz_dns_mx.lng @@ -14,5 +14,6 @@ $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'] = 'Duplicitní MX záznam.'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_ns.lng b/interface/web/dns/lib/lang/cz_dns_ns.lng index 73f897b..55b35aa 100644 --- a/interface/web/dns/lib/lang/cz_dns_ns.lng +++ b/interface/web/dns/lib/lang/cz_dns_ns.lng @@ -12,5 +12,6 @@ $wb['name_error_regex'] = 'Zóna má chybný formát.'; $wb['data_error_empty'] = 'Jmenný server je prázdný'; $wb['data_error_regex'] = 'Jmenný server má chybný formát'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_ptr.lng b/interface/web/dns/lib/lang/cz_dns_ptr.lng index 6124f30..c536559 100644 --- a/interface/web/dns/lib/lang/cz_dns_ptr.lng +++ b/interface/web/dns/lib/lang/cz_dns_ptr.lng @@ -12,5 +12,6 @@ $wb['name_error_regex'] = 'Název má chybný formát.'; $wb['data_error_empty'] = 'Kanonický hostname je prázdný'; $wb['data_error_regex'] = 'Kanonického hostname má chybný formát'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_rp.lng b/interface/web/dns/lib/lang/cz_dns_rp.lng index 10218a7..8cdb653 100644 --- a/interface/web/dns/lib/lang/cz_dns_rp.lng +++ b/interface/web/dns/lib/lang/cz_dns_rp.lng @@ -12,5 +12,6 @@ $wb['name_error_regex'] = 'Hostname má chybný formát.'; $wb['data_error_empty'] = 'Odpovědná osoba je prázdná'; $wb['data_error_regex'] = 'Odpovědná osoba má chybný formát'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_srv.lng b/interface/web/dns/lib/lang/cz_dns_srv.lng index 88b1fc1..81692b6 100644 --- a/interface/web/dns/lib/lang/cz_dns_srv.lng +++ b/interface/web/dns/lib/lang/cz_dns_srv.lng @@ -16,5 +16,6 @@ $wb['data_error_regex'] = 'Záznam serveru má chybný formát'; $wb['srv_error_regex'] = 'Neplatný formát záznamu serveru. Záznam serveru musí obsahovat 3 textové řetězce oddělené mezerami.'; $wb['aux_txt'] = 'Priority'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/dns/lib/lang/cz_dns_txt.lng b/interface/web/dns/lib/lang/cz_dns_txt.lng index 0c07487..faf3181 100644 --- a/interface/web/dns/lib/lang/cz_dns_txt.lng +++ b/interface/web/dns/lib/lang/cz_dns_txt.lng @@ -12,5 +12,6 @@ $wb['name_error_regex'] = 'Hostname má chybný formát.'; $wb['data_error_empty'] = 'Text je prázdný'; $wb['data_error_regex'] = 'Text má chybný formát'; +$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.'; ?> diff --git a/interface/web/help/lib/lang/cz.lng b/interface/web/help/lib/lang/cz.lng index 95efe02..a4f7351 100644 --- a/interface/web/help/lib/lang/cz.lng +++ b/interface/web/help/lib/lang/cz.lng @@ -7,7 +7,7 @@ $wb['About ISPConfig'] = 'O ISPConfigu'; $wb['Version'] = 'Verze'; $wb['Frequently Asked Questions'] = 'Často kladené dotazy'; -$wb['FAQ Sections'] = 'Sekce FAQ'; +$wb['FAQ Sections'] = 'Sekce FAQ - Často kladené dotazy'; $wb['Manage Sections'] = 'Spravovat sekce'; $wb['Manage Questions'] = 'Spravovat dotazy'; $wb['Add a Question & Answer Pair'] = 'Přidat otázku a odpověď'; diff --git a/interface/web/help/lib/lang/cz_help_faq_sections_list.lng b/interface/web/help/lib/lang/cz_help_faq_sections_list.lng index 596a9ef..3ddc231 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 @@ -3,7 +3,7 @@ $wb['faq_delete_txt'] = 'Smazat'; $wb['faq_edit_txt'] = 'Upravit'; $wb['faq_sections_txt'] = 'Sekce'; -$wb['faq_faq_sections_txt'] = 'Sekce FAQ'; +$wb['faq_faq_sections_txt'] = 'Sekce FAQ - Často kladené dotazy'; $wb['faq_new_section_txt'] = 'Přidat novou sekci'; ?> diff --git a/interface/web/login/lib/lang/cz.lng b/interface/web/login/lib/lang/cz.lng index 4ce9a3b..2d19673 100644 --- a/interface/web/login/lib/lang/cz.lng +++ b/interface/web/login/lib/lang/cz.lng @@ -21,6 +21,8 @@ $wb['pw_button_txt'] = 'Znovu odeslat heslo'; $wb['email_txt'] = 'E-mail'; $wb['theme_not_compatible'] = 'Zvolené téma není kompatibilní s aktuální verzí ISPConfig. Zkontrolujte prosím, zda není nová verze tématu.<br />Výchozí motiv byl aktivován automaticky.'; -$wb['back_txt'] = 'Back'; +$wb['back_txt'] = 'Zpět'; +$wb['email_error'] = 'E-mail obsahuje nepovolené znaky nebo má neplatný formát.'; +$wb['stay_logged_in_txt'] = 'Zapamatovat si přihlášení'; ?> diff --git a/interface/web/mail/lib/lang/cz.lng b/interface/web/mail/lib/lang/cz.lng index c4b386b..8e9eb34 100644 --- a/interface/web/mail/lib/lang/cz.lng +++ b/interface/web/mail/lib/lang/cz.lng @@ -1,16 +1,16 @@ <?php -$wb['Email Alias'] = 'E-mailový alias'; +$wb['Email Alias'] = 'E-mailové aliasy'; $wb['Email Blacklist'] = 'Email černá listina'; $wb['Blacklist'] = 'Černá listina'; $wb['Mail Content Filter'] = 'Obsahový filtr'; $wb['Filter'] = 'Filtr'; $wb['Mail Domain'] = 'Doména e-mailů'; -$wb['Domain'] = 'Domény'; -$wb['Email Catchall'] = 'E-mailový koš'; +$wb['Domain'] = 'E-mailové domény'; +$wb['Email Catchall'] = 'E-mailové koše'; $wb['Email Forward'] = 'Přesměrování e-mailů'; $wb['Get Email'] = 'Získat externí e-maily'; $wb['Spamfilter'] = 'Spamový filtr'; -$wb['Email Routing'] = 'Směrování'; +$wb['Email Routing'] = 'Pokročilé e-mailové směrování'; $wb['Email transport'] = 'Transport'; $wb['Mailbox'] = 'Mailbox'; $wb['Autoresponder'] = 'Automatická odpověď'; @@ -32,7 +32,7 @@ $wb['Spamfilter Whitelist'] = 'Spamový filtr bílá listina'; $wb['Email'] = 'E-mail'; $wb['Email Mailbox'] = 'E-mailové schránky'; -$wb['Email Accounts'] = 'E-mail účty'; +$wb['Email Accounts'] = 'E-mailové účty'; $wb['User / Domain'] = 'Uživatel / Doména'; $wb['Server Settings'] = 'Nastavení serveru'; $wb['Fetchmail'] = 'Externí získávání e-mailů'; @@ -41,9 +41,9 @@ $wb['Postfix Blacklist'] = 'Postfix černá listina'; $wb['Content Filter'] = 'Obsahový filtr'; $wb['Global Filters'] = 'Globální filtry'; -$wb['Domain Alias'] = 'Alias domény'; +$wb['Domain Alias'] = 'Aliasy e-mailových domén'; $wb['Relay Recipients'] = 'Relay adresáti'; $wb['Statistics'] = 'Statistiky'; -$wb['Mailbox quota'] = 'Kvóta e-mailové schránky'; +$wb['Mailbox quota'] = 'Kvóty pro e-mailové schránky'; ?> 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 db4fb4f..cb1c039 100644 --- a/interface/web/mail/lib/lang/cz_mail_alias_list.lng +++ b/interface/web/mail/lib/lang/cz_mail_alias_list.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'E-mailový alias'; +$wb['list_head_txt'] = 'E-mailové aliasy'; $wb['active_txt'] = 'Aktivní'; $wb['source_txt'] = 'Zdroj'; $wb['destination_txt'] = 'Cíl'; 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 155a87a..ec973d1 100644 --- a/interface/web/mail/lib/lang/cz_mail_aliasdomain_list.lng +++ b/interface/web/mail/lib/lang/cz_mail_aliasdomain_list.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'Doménový alias'; +$wb['list_head_txt'] = 'Aliasy e-mailových domén'; $wb['active_txt'] = 'Aktivní'; $wb['source_txt'] = 'Zdroj'; $wb['destination_txt'] = 'Cíl'; diff --git a/interface/web/mail/lib/lang/cz_mail_backup_list.lng b/interface/web/mail/lib/lang/cz_mail_backup_list.lng new file mode 100644 index 0000000..c5aca48 --- /dev/null +++ b/interface/web/mail/lib/lang/cz_mail_backup_list.lng @@ -0,0 +1,13 @@ +<?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'; +$wb['restore_info_txt'] = 'Restore of the backup has been started. This action takes several minutes to be completed.'; +$wb['restore_confirm_txt'] = 'Restoring may overwrite existing files in your mailbox. 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['filesize_txt'] = 'Filesize'; +?> + 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 ba76a7e..612bf28 100644 --- a/interface/web/mail/lib/lang/cz_mail_blacklist_list.lng +++ b/interface/web/mail/lib/lang/cz_mail_blacklist_list.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'E-mail černá listina'; +$wb['list_head_txt'] = 'E-mailová černá listina'; $wb['active_txt'] = 'Aktivní'; $wb['server_id_txt'] = 'Server'; $wb['source_txt'] = 'Adresy na černé listině'; 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 8277ec4..26fc430 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 @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'E-mail doména'; +$wb['list_head_txt'] = 'E-mailové domény'; $wb['server_id_txt'] = 'Server'; $wb['domain_txt'] = 'Doména'; $wb['add_new_record_txt'] = 'Přidat doménu'; 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 7fd14a7..28b5613 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 @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'E-mailový koš'; +$wb['list_head_txt'] = 'E-mailové koše'; $wb['active_txt'] = 'Aktivní'; $wb['source_txt'] = 'Zdroj'; $wb['destination_txt'] = 'Cílová e-mailová adresa'; 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 584e329..3442e88 100644 --- a/interface/web/mail/lib/lang/cz_mail_transport_list.lng +++ b/interface/web/mail/lib/lang/cz_mail_transport_list.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'Pokročilé e-mail směrování'; +$wb['list_head_txt'] = 'Pokročilé e-mailové směrování'; $wb['active_txt'] = 'Aktivní'; $wb['server_id_txt'] = 'Server'; $wb['domain_txt'] = 'Doména'; diff --git a/interface/web/mail/lib/lang/cz_mail_user.lng b/interface/web/mail/lib/lang/cz_mail_user.lng index 48a9ea3..905426d 100644 --- a/interface/web/mail/lib/lang/cz_mail_user.lng +++ b/interface/web/mail/lib/lang/cz_mail_user.lng @@ -29,7 +29,7 @@ $wb['disablepop3_txt'] = 'Zakázat POP3'; $wb['duplicate_alias_or_forward_txt'] = 'Alias nebo přesměrování s touto adresou již existuje.'; $wb['quota_error_value'] = 'Chybná hodnota kvóty. Povolené hodnoty jsou: 0 pro neomezeno nebo čísla > 1'; -$wb['move_junk_txt'] = 'Přesunout spamové emaily do adresáře Junk'; +$wb['move_junk_txt'] = 'Přesunout e-maily detekované jako spam do adresáře Junk'; $wb['name_txt'] = 'Skutečné jméno'; $wb['name_optional_txt'] = '(volitelné)'; $wb['autoresponder_active'] = 'Povolit automatický odpovídač'; @@ -47,5 +47,7 @@ $wb['repeat_password_txt'] = 'Opakujte heslo'; $wb['password_mismatch_txt'] = 'Hesla se neshodují.'; $wb['password_match_txt'] = 'Hesla se shodují.'; +$wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.'; +$wb['cc_note_txt'] = '(Při přeposílání na více e-mailových adres, oddělte čárkami.)'; ?> diff --git a/interface/web/mail/lib/lang/cz_spamfilter_blacklist.lng b/interface/web/mail/lib/lang/cz_spamfilter_blacklist.lng index 2b92908..a9078b5 100644 --- a/interface/web/mail/lib/lang/cz_spamfilter_blacklist.lng +++ b/interface/web/mail/lib/lang/cz_spamfilter_blacklist.lng @@ -6,5 +6,8 @@ $wb['priority_txt'] = 'Priorita'; $wb['active_txt'] = 'Aktivní'; $wb['limit_spamfilter_wblist_txt'] = 'Dosažen maximální počet záznamů pro bílou / černou listinu pro Váš účet.'; +$wb['10 - highest'] = '10 - highest'; +$wb['5 - medium'] = '5 - medium'; +$wb['1 - lowest'] = '1 - lowest'; ?> diff --git a/interface/web/mail/lib/lang/cz_spamfilter_users.lng b/interface/web/mail/lib/lang/cz_spamfilter_users.lng index 40c0101..055b29b 100644 --- a/interface/web/mail/lib/lang/cz_spamfilter_users.lng +++ b/interface/web/mail/lib/lang/cz_spamfilter_users.lng @@ -7,5 +7,8 @@ $wb['local_txt'] = 'Lokální'; $wb['email_error_notempty'] = 'E-mailová adresa nesmí být prázdná.'; $wb['fullname_error_notempty'] = 'Jméno nesmí být prázdné.'; +$wb['10 - highest'] = '10 - highest'; +$wb['5 - medium'] = '5 - medium'; +$wb['1 - lowest'] = '1 - lowest'; ?> diff --git a/interface/web/mail/lib/lang/cz_spamfilter_whitelist.lng b/interface/web/mail/lib/lang/cz_spamfilter_whitelist.lng index 2b92908..a9078b5 100644 --- a/interface/web/mail/lib/lang/cz_spamfilter_whitelist.lng +++ b/interface/web/mail/lib/lang/cz_spamfilter_whitelist.lng @@ -6,5 +6,8 @@ $wb['priority_txt'] = 'Priorita'; $wb['active_txt'] = 'Aktivní'; $wb['limit_spamfilter_wblist_txt'] = 'Dosažen maximální počet záznamů pro bílou / černou listinu pro Váš účet.'; +$wb['10 - highest'] = '10 - highest'; +$wb['5 - medium'] = '5 - medium'; +$wb['1 - lowest'] = '1 - lowest'; ?> 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 d53237f..2c99357 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,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'Kvóta e-mailové schránky'; +$wb['list_head_txt'] = 'Kvóty pro e-mailové schránky'; $wb['quota_txt'] = 'Kvóta'; $wb['name_txt'] = 'Jméno'; $wb['email_txt'] = 'E-mailová adresa'; 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 ef00aa2..adc49f1 100644 --- a/interface/web/mailuser/lib/lang/cz_mail_user_cc.lng +++ b/interface/web/mailuser/lib/lang/cz_mail_user_cc.lng @@ -4,5 +4,7 @@ $wb['email_txt'] = 'E-mail'; $wb['cc_error_isemail'] = 'Vyplněná e-mailová adresa neplatná'; $wb['email_is_cc_error'] = 'Vyplněná e-mailová adresa a poslat kopii na e-mail adresu, nemůžou být stejné.'; +$wb['name_optional_txt'] = '(Volitelné)'; +$wb['cc_note_txt'] = '(Při přeposílání na více e-mailových adres, oddělte čárkami.)'; ?> diff --git a/interface/web/sites/lib/lang/cz.lng b/interface/web/sites/lib/lang/cz.lng index 3a37df3..21112cd 100644 --- a/interface/web/sites/lib/lang/cz.lng +++ b/interface/web/sites/lib/lang/cz.lng @@ -1,10 +1,10 @@ <?php -$wb['Websites'] = 'Webová stránka'; -$wb['Website'] = 'Webová stránka'; -$wb['Subdomain'] = 'Subdoména pro webovou stránku'; -$wb['Aliasdomain'] = 'Alias doména pro webovou stránku'; +$wb['Websites'] = 'Webové stránky'; +$wb['Website'] = 'Webové stránky'; +$wb['Subdomain'] = 'Subdomény pro webové stránky'; +$wb['Aliasdomain'] = 'Alias domény pro webové stránky'; $wb['Database'] = 'Databáze'; -$wb['Web Access'] = 'Webový přístup'; +$wb['Web Access'] = 'Webové přístupy'; $wb['FTP-User'] = 'FTP uživatelé'; $wb['Webdav-User'] = 'WebDAV uživatelé'; $wb['Folder'] = 'Chráněné adresáře heslem'; @@ -14,7 +14,7 @@ $wb['Cron Jobs'] = 'Cron úlohy'; $wb['Statistics'] = 'Statistiky'; $wb['Web traffic'] = 'Přenesená data'; -$wb['Website quota (Harddisk)'] = 'Webová kvóta (místo na disku)'; +$wb['Website quota (Harddisk)'] = 'Webové kvóty (místo na disku)'; $wb['Cron'] = 'Cron'; $wb['Stats'] = 'Statistiky'; $wb['Shell'] = 'Shell'; diff --git a/interface/web/sites/lib/lang/cz_cron.lng b/interface/web/sites/lib/lang/cz_cron.lng index 9e23b5a..9a22948 100644 --- a/interface/web/sites/lib/lang/cz_cron.lng +++ b/interface/web/sites/lib/lang/cz_cron.lng @@ -18,5 +18,6 @@ $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'] = 'Bylo použito pole neznámého typu.'; +$wb['server_id_error_empty'] = 'ID serveru je prázdné.'; ?> 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 f9aa557..e6c04f3 100644 --- a/interface/web/sites/lib/lang/cz_database_admin_list.lng +++ b/interface/web/sites/lib/lang/cz_database_admin_list.lng @@ -7,6 +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'; +$wb['parent_domain_id_txt'] = 'Webové stránky'; ?> diff --git a/interface/web/sites/lib/lang/cz_database_list.lng b/interface/web/sites/lib/lang/cz_database_list.lng index f76bcf0..62bfe77 100644 --- a/interface/web/sites/lib/lang/cz_database_list.lng +++ b/interface/web/sites/lib/lang/cz_database_list.lng @@ -6,6 +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'; +$wb['parent_domain_id_txt'] = 'Webové stránky'; ?> 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 127be4f..4027225 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 @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'Uživatel databáze'; +$wb['list_head_txt'] = 'Uživatelé databáze'; $wb['database_user_txt'] = 'Uživatel databáze'; $wb['add_new_record_txt'] = 'Vytvořit nového uživatele databáze'; $wb['sys_groupid_txt'] = 'Klient'; diff --git a/interface/web/sites/lib/lang/cz_ftp_user.lng b/interface/web/sites/lib/lang/cz_ftp_user.lng index 494ecda..619cbad 100644 --- a/interface/web/sites/lib/lang/cz_ftp_user.lng +++ b/interface/web/sites/lib/lang/cz_ftp_user.lng @@ -9,7 +9,7 @@ $wb['ul_bandwidth_txt'] = 'Upload šířka pásma'; $wb['dl_bandwidth_txt'] = 'Download šířka pásma'; $wb['server_id_txt'] = 'Server'; -$wb['parent_domain_id_txt'] = 'Webová stránka'; +$wb['parent_domain_id_txt'] = 'Webové stránky'; $wb['username_txt'] = 'Uživatelské jméno'; $wb['password_txt'] = 'Heslo'; $wb['password_strength_txt'] = 'Bezpečnost hesla'; 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 965e1c7..b23e8d0 100644 --- a/interface/web/sites/lib/lang/cz_ftp_user_list.lng +++ b/interface/web/sites/lib/lang/cz_ftp_user_list.lng @@ -1,8 +1,8 @@ <?php -$wb['list_head_txt'] = 'FTP uživatel'; +$wb['list_head_txt'] = 'FTP uživatelé'; $wb['active_txt'] = 'Aktivní'; $wb['server_id_txt'] = 'Server'; -$wb['parent_domain_id_txt'] = 'Webová stránka'; +$wb['parent_domain_id_txt'] = 'Webové stránky'; $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 09377da..d7fc009 100644 --- a/interface/web/sites/lib/lang/cz_shell_user.lng +++ b/interface/web/sites/lib/lang/cz_shell_user.lng @@ -2,7 +2,7 @@ $wb['shell_txt'] = 'Shell'; $wb['dir_txt'] = 'Adresář'; $wb['server_id_txt'] = 'Server'; -$wb['parent_domain_id_txt'] = 'Webová stránka'; +$wb['parent_domain_id_txt'] = 'Webové stránky'; $wb['username_txt'] = 'Uživatelské jméno'; $wb['password_txt'] = 'Heslo'; $wb['password_strength_txt'] = 'Bezpečnost hesla'; 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 cdc729c..5f2b5f5 100644 --- a/interface/web/sites/lib/lang/cz_shell_user_list.lng +++ b/interface/web/sites/lib/lang/cz_shell_user_list.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'Shell uživatel'; +$wb['list_head_txt'] = 'Shell uživatelé'; $wb['active_txt'] = 'Aktivní'; $wb['server_id_txt'] = 'Server'; $wb['parent_domain_id_txt'] = 'Stránka'; 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 efb766b..f7c3b1f 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 @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'Disková kvóta'; +$wb['list_head_txt'] = 'Webové kvóty (místo na disku)'; $wb['domain_txt'] = 'Doména / Webová stránka'; $wb['system_user_txt'] = 'Linuxový uživatel'; $wb['used_txt'] = 'Využité místo'; diff --git a/interface/web/sites/lib/lang/cz_web_aliasdomain.lng b/interface/web/sites/lib/lang/cz_web_aliasdomain.lng index c82c428..8b4414f 100644 --- a/interface/web/sites/lib/lang/cz_web_aliasdomain.lng +++ b/interface/web/sites/lib/lang/cz_web_aliasdomain.lng @@ -1,5 +1,5 @@ <?php -$wb['domain_txt'] = 'Aliasdomain'; +$wb['domain_txt'] = 'Alias domény pro webové stránky'; $wb['backup_interval_txt'] = 'Interval zálohování'; $wb['backup_copies_txt'] = 'Počet kopií zálohy'; $wb['ssl_state_txt'] = 'State'; @@ -16,7 +16,7 @@ $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['parent_domain_id_txt'] = 'Rodičovské webové stránky'; $wb['redirect_type_txt'] = 'Typ přesměrování'; $wb['redirect_path_txt'] = 'Cesta přesměrování'; $wb['active_txt'] = 'Aktivní'; @@ -31,7 +31,7 @@ $wb['cgi_txt'] = 'CGI'; $wb['ssi_txt'] = 'SSI'; $wb['errordocs_txt'] = 'Own Error-Documents'; -$wb['subdomain_txt'] = 'Auto-Subdomain'; +$wb['subdomain_txt'] = 'Automatická subdoména'; $wb['ssl_txt'] = 'SSL'; $wb['suexec_txt'] = 'SuEXEC'; $wb['php_txt'] = 'PHP'; @@ -70,7 +70,7 @@ $wb['stats_type_txt'] = 'Webstatistics program'; $wb['custom_php_ini_txt'] = 'Custom php.ini settings'; $wb['none_txt'] = 'None'; -$wb['disabled_txt'] = 'Disabled'; +$wb['disabled_txt'] = 'Vypnuto'; $wb['no_redirect_txt'] = 'No redirect'; $wb['no_flag_txt'] = 'No flag'; $wb['save_certificate_txt'] = 'Save certificate'; @@ -111,6 +111,6 @@ $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['Domain'] = 'Aliasdomain'; +$wb['Domain'] = 'Alias domény pro webové stránky'; ?> 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 a3ae2a9..54bdc4d 100644 --- a/interface/web/sites/lib/lang/cz_web_aliasdomain_list.lng +++ b/interface/web/sites/lib/lang/cz_web_aliasdomain_list.lng @@ -1,8 +1,8 @@ <?php -$wb['list_head_txt'] = 'Alias doména'; +$wb['list_head_txt'] = 'Alias domény pro webové stránky'; $wb['active_txt'] = 'Aktivní'; $wb['server_id_txt'] = 'Server'; -$wb['parent_domain_id_txt'] = 'Webová stránka'; +$wb['parent_domain_id_txt'] = 'Webové stránky'; $wb['domain_txt'] = 'Alias doména'; $wb['add_new_record_txt'] = 'Přidat alias doménu'; $wb['domain_error_empty'] = 'Doména je prázdná.'; diff --git a/interface/web/sites/lib/lang/cz_web_childdomain.lng b/interface/web/sites/lib/lang/cz_web_childdomain.lng new file mode 100644 index 0000000..a02ac3a --- /dev/null +++ b/interface/web/sites/lib/lang/cz_web_childdomain.lng @@ -0,0 +1,119 @@ +<?php +$wb['ssl_state_txt'] = 'Stát'; +$wb['ssl_locality_txt'] = 'Lokalita'; +$wb['ssl_organisation_txt'] = 'Organizace'; +$wb['ssl_organisation_unit_txt'] = 'Organizační jednotka'; +$wb['ssl_country_txt'] = 'Země'; +$wb['ssl_request_txt'] = 'SSL požadavek'; +$wb['ssl_cert_txt'] = 'SSL certifikát'; +$wb['ssl_bundle_txt'] = 'SSL bundle'; +$wb['ssl_action_txt'] = 'SSL akce'; +$wb['server_id_txt'] = 'Server'; +$wb['domain_txt'] = 'Doména'; +$wb['type_txt'] = 'Typ'; +$wb['parent_domain_id_txt'] = 'Rodičovská web stránka'; +$wb['redirect_type_txt'] = 'Typ přesměrování'; +$wb['redirect_path_txt'] = 'Cesta přesměrování'; +$wb['active_txt'] = 'Aktivní'; +$wb['document_root_txt'] = 'Kořenový adresář dokumentů'; +$wb['system_user_txt'] = 'Linuxový uživatel'; +$wb['system_group_txt'] = 'Linuxová skupina'; +$wb['ip_address_txt'] = 'IP adresa'; +$wb['vhost_type_txt'] = 'VHost typ'; +$wb['hd_quota_txt'] = 'Disková kvóta'; +$wb['traffic_quota_txt'] = 'Přenosová kvóta'; +$wb['cgi_txt'] = 'CGI'; +$wb['ssi_txt'] = 'SSI'; +$wb['ssl_txt'] = 'SSL'; +$wb['suexec_txt'] = 'SuEXEC'; +$wb['php_txt'] = 'PHP'; +$wb['client_txt'] = 'Klient'; +$wb['limit_web_domain_txt'] = 'Dosažen maximální počet web domén pro Váš účet.'; +$wb['limit_web_aliasdomain_txt'] = 'Dosažen maximální počet alias domén pro Váš účet.'; +$wb['limit_web_subdomain_txt'] = 'Dosažen maximální počet subdomén pro Váš účet.'; +$wb['apache_directives_txt'] = 'Apache direktivy'; +$wb['domain_error_empty'] = 'Doména je prázdná.'; +$wb['domain_error_unique'] = 'Webová stránka nebo sub / alias doména s tímto doménovým jménem již existuje.'; +$wb['domain_error_regex'] = 'Neplatné doménové jméno.'; +$wb['host_txt'] = 'Host'; +$wb['redirect_error_regex'] = 'Neplatná cesta přesměrování. Platné přesměrování je například: /test/ nebo http://www.domain.tld/test/'; +$wb['no_redirect_txt'] = 'Žádné přesměrování'; +$wb['no_flag_txt'] = 'Žádný příznak'; +$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; +$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['backup_interval_txt'] = 'Interval zálohování'; +$wb['backup_copies_txt'] = 'Počet kopií zálohy'; +$wb['ssl_key_txt'] = 'SSL Key'; +$wb['ssl_domain_txt'] = 'SSL Domain'; +$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.'; +$wb['ipv6_address_txt'] = 'IPv6-Address'; +$wb['errordocs_txt'] = 'Own Error-Documents'; +$wb['subdomain_txt'] = 'Automatická subdoména'; +$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['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['php_open_basedir_txt'] = 'PHP open_basedir'; +$wb['traffic_quota_exceeded_txt'] = 'Traffic quota exceeded'; +$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['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 přesměrování'; +$wb['non_www_to_www_txt'] = 'Non-www -> www'; +$wb['www_to_non_www_txt'] = 'www -> non-www'; +$wb['php_fpm_use_socket_txt'] = 'Use Socket For 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'; +$wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; +$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers'; +$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers'; +$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers'; +$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0'; +$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive integer value.'; +$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['fastcgi_php_version_txt'] = 'PHP Version'; +$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['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['Domain'] = 'Alias domény pro webové stránky'; +?> + diff --git a/interface/web/sites/lib/lang/cz_web_childdomain_list.lng b/interface/web/sites/lib/lang/cz_web_childdomain_list.lng new file mode 100644 index 0000000..153906d --- /dev/null +++ b/interface/web/sites/lib/lang/cz_web_childdomain_list.lng @@ -0,0 +1,15 @@ +<?php +$wb['list_head_txt'] = 'Subdomény'; +$wb['active_txt'] = 'Aktivní'; +$wb['server_id_txt'] = 'Server'; +$wb['parent_domain_id_txt'] = 'Webové stránky'; +$wb['domain_txt'] = 'Subdoména'; +$wb['add_new_record_txt'] = 'Přidat subdoménu'; +$wb['domain_error_empty'] = 'Doména je prázdná.'; +$wb['domain_error_unique'] = 'Doména musí být unkátní.'; +$wb['domain_error_regex'] = 'Doménové jméno je chybné.'; +$wb['no_redirect_txt'] = 'Žádné přesměrování'; +$wb['no_flag_txt'] = 'Žádný příznak'; +$wb['none_txt'] = 'Žádná'; +?> + diff --git a/interface/web/sites/lib/lang/cz_web_domain.lng b/interface/web/sites/lib/lang/cz_web_domain.lng index ab82df1..04482d9 100644 --- a/interface/web/sites/lib/lang/cz_web_domain.lng +++ b/interface/web/sites/lib/lang/cz_web_domain.lng @@ -120,5 +120,12 @@ $wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules'; $wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:'; $wb['configuration_error_txt'] = 'CONFIGURATION ERROR'; +$wb['variables_txt'] = 'Proměnné'; +$wb['added_by_txt'] = 'Kdo vytvořil účet'; +$wb['added_date_txt'] = 'Datum vytvoření účtu'; +$wb['backup_excludes_txt'] = 'Excluded Directories'; +$wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; +$wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; +$wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings'; ?> 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 d1ad283..b69d75b 100644 --- a/interface/web/sites/lib/lang/cz_web_subdomain_list.lng +++ b/interface/web/sites/lib/lang/cz_web_subdomain_list.lng @@ -1,8 +1,8 @@ <?php -$wb['list_head_txt'] = 'Subdomény'; +$wb['list_head_txt'] = 'Subdomény pro webové stránky'; $wb['active_txt'] = 'Aktivní'; $wb['server_id_txt'] = 'Server'; -$wb['parent_domain_id_txt'] = 'Webová stránka'; +$wb['parent_domain_id_txt'] = 'Webové stránky'; $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_domain.lng b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng new file mode 100644 index 0000000..93407d1 --- /dev/null +++ b/interface/web/sites/lib/lang/cz_web_vhost_domain.lng @@ -0,0 +1,137 @@ +<?php +$wb['ssl_state_txt'] = 'Stát'; +$wb['ssl_locality_txt'] = 'Lokalita'; +$wb['ssl_organisation_txt'] = 'Organizace'; +$wb['ssl_organisation_unit_txt'] = 'Organizační jednotka'; +$wb['ssl_country_txt'] = 'Země'; +$wb['ssl_request_txt'] = 'SSL požadavek'; +$wb['ssl_cert_txt'] = 'SSL certifikát'; +$wb['ssl_bundle_txt'] = 'SSL bundle'; +$wb['ssl_action_txt'] = 'SSL akce'; +$wb['ssl_domain_txt'] = 'SSL doména'; +$wb['server_id_txt'] = 'Server'; +$wb['domain_txt'] = 'Doména'; +$wb['type_txt'] = 'Typ'; +$wb['parent_domain_id_txt'] = 'Rodičovská webová stránka'; +$wb['redirect_type_txt'] = 'Typ přesměrování'; +$wb['redirect_path_txt'] = 'Cesta přesměrování'; +$wb['active_txt'] = 'Aktivní'; +$wb['document_root_txt'] = 'Kořenový adresář dokumentů'; +$wb['system_user_txt'] = 'Linuxový uživatel'; +$wb['system_group_txt'] = 'Linuxová skupina'; +$wb['ip_address_txt'] = 'IP adresa'; +$wb['vhost_type_txt'] = 'VHost typ'; +$wb['hd_quota_txt'] = 'Disková kvóta'; +$wb['traffic_quota_txt'] = 'Přenosová kvóta'; +$wb['cgi_txt'] = 'CGI'; +$wb['ssi_txt'] = 'SSI'; +$wb['subdomain_txt'] = 'Automatická subdoména'; +$wb['ssl_txt'] = 'SSL'; +$wb['suexec_txt'] = 'SuEXEC'; +$wb['php_txt'] = 'PHP'; +$wb['client_txt'] = 'Klient'; +$wb['limit_web_domain_txt'] = 'Dosažen maximální počet web domén pro Váš účet.'; +$wb['limit_web_aliasdomain_txt'] = 'Dosažen maximální počet alias domén pro Váš účet.'; +$wb['limit_web_subdomain_txt'] = 'Dosažen maximální počet subdomén pro Váš účet.'; +$wb['apache_directives_txt'] = 'Apache direktivy'; +$wb['domain_error_empty'] = 'Doména je prázdná.'; +$wb['domain_error_unique'] = 'Webová stránka nebo sub / alias doména s tímto doménovým jménem již existuje.'; +$wb['domain_error_regex'] = 'Neplatné doménové jméno.'; +$wb['hd_quota_error_empty'] = 'Disková kvóta je 0 nebo je prázdná.'; +$wb['traffic_quota_error_empty'] = 'Přenosová kvóta je prázdná.'; +$wb['error_ssl_state_empty'] = 'SSL stav je prázdný.'; +$wb['error_ssl_locality_empty'] = 'SSL lokalita je prázdná.'; +$wb['error_ssl_organisation_empty'] = 'SSL organizace je prázdná.'; +$wb['error_ssl_organisation_unit_empty'] = 'SSL organizační jednotka je prázdná.'; +$wb['error_ssl_country_empty'] = 'SSL země je prázdná.'; +$wb['client_group_id_txt'] = 'Klient'; +$wb['stats_password_txt'] = 'Heslo k webovým statistikám'; +$wb['allow_override_txt'] = 'Povolit přepis (Allow Override)'; +$wb['limit_web_quota_free_txt'] = 'Max. dostupná disková kvóta'; +$wb['ssl_state_error_regex'] = 'Neplatný SSL stav. Platné znaky jsou: a-z, 0-9 a .,-_'; +$wb['ssl_locality_error_regex'] = 'Neplatná SSL lokalita. Platné znaky jsou: a-z, 0-9 a .,-_'; +$wb['ssl_organisation_error_regex'] = 'Neplatná SSL organizace. Platné znaky jsou: a-z, 0-9 a .,-_'; +$wb['ssl_organistaion_unit_error_regex'] = 'Neplatná SSL organizační jednotka. Platné znaky jsou: a-z, 0-9 a .,-_'; +$wb['ssl_country_error_regex'] = 'Neplatná SSL země. Platné znaky jsou: A-Z'; +$wb['limit_traffic_quota_free_txt'] = 'Max. dostupná přenosová kvóta'; +$wb['redirect_error_regex'] = 'Neplatná cesta přesměrování. Platné přesměrování je například: /test/ nebo http://www.domain.tld/test/'; +$wb['php_open_basedir_txt'] = 'PHP open_basedir'; +$wb['traffic_quota_exceeded_txt'] = 'Přenosová kvóta překročena'; +$wb['backup_interval_txt'] = 'Interval zálohování'; +$wb['backup_copies_txt'] = 'Počet kopií zálohy'; +$wb['errordocs_txt'] = 'Vlastní Error (chybové) dokumenty'; +$wb['ruby_txt'] = 'Ruby'; +$wb['stats_user_txt'] = 'Webové statistiky: uživatelské jméno'; +$wb['stats_type_txt'] = 'Webové statistiky: program'; +$wb['custom_php_ini_txt'] = 'Vlastní nastavení php.ini'; +$wb['none_txt'] = 'Žádná'; +$wb['disabled_txt'] = 'Zakázáno'; +$wb['no_redirect_txt'] = 'Žádné přesměrování'; +$wb['no_flag_txt'] = 'Žádný příznak'; +$wb['save_certificate_txt'] = 'Uložit certifikát'; +$wb['create_certificate_txt'] = 'Vytvořit certifikát'; +$wb['delete_certificate_txt'] = 'Smazat certifikát'; +$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty'; +$wb['ipv6_address_txt'] = 'IPv6-Address'; +$wb['nginx_directives_txt'] = 'nginx Directives'; +$wb['seo_redirect_txt'] = 'SEO přesměrování'; +$wb['non_www_to_www_txt'] = 'Non-www -> www'; +$wb['www_to_non_www_txt'] = 'www -> non-www'; +$wb['php_fpm_use_socket_txt'] = 'Use Socket For 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['pm_max_children_txt'] = 'PHP-FPM pm.max_children'; +$wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers'; +$wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers'; +$wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers'; +$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children >= pm.max_spare_servers >= pm.start_servers >= pm.min_spare_servers > 0'; +$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive integer value.'; +$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'] = 'Kvóta pevného disku je neplatná.'; +$wb['traffic_quota_error_regex'] = 'Traffik kvóta je neplatná.'; +$wb['ssl_key_txt'] = 'SSL klíč'; +$wb['perl_txt'] = 'Perl'; +$wb['fastcgi_php_version_txt'] = 'PHP verze'; +$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'] = 'Generovat heslo'; +$wb['repeat_password_txt'] = 'Opakujte heslo'; +$wb['password_mismatch_txt'] = 'Hesla se neshodují.'; +$wb['password_match_txt'] = 'Hesla se shodují.'; +$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['proxy_directives_txt'] = 'Proxy Directives'; +$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:'; +$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'; +$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['host_txt'] = 'Hostname'; +$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.'; +$wb['server_chosen_not_ok'] = 'The selected server is not allowed for this account.'; +$wb['variables_txt'] = 'Variables'; +$wb['added_by_txt'] = 'Added by'; +$wb['added_date_txt'] = 'Added date'; +$wb['backup_excludes_txt'] = 'Excluded Directories'; +$wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; +$wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; +$wb['subdomain_error_empty'] = 'The subdommain field is empty or contains invalid characters.'; +?> + diff --git a/interface/web/sites/lib/lang/cz_web_vhost_domain_admin_list.lng b/interface/web/sites/lib/lang/cz_web_vhost_domain_admin_list.lng new file mode 100644 index 0000000..4a20c10 --- /dev/null +++ b/interface/web/sites/lib/lang/cz_web_vhost_domain_admin_list.lng @@ -0,0 +1,10 @@ +<?php +$wb['sys_groupid_txt'] = 'Klient'; +$wb['list_head_txt'] = 'Webové stránky'; +$wb['domain_id_txt'] = 'ID'; +$wb['active_txt'] = 'Aktivní'; +$wb['server_id_txt'] = 'Server'; +$wb['domain_txt'] = 'Doména'; +$wb['add_new_record_txt'] = 'Přidat webovou stránku'; +?> + diff --git a/interface/web/sites/lib/lang/cz_web_vhost_domain_list.lng b/interface/web/sites/lib/lang/cz_web_vhost_domain_list.lng new file mode 100644 index 0000000..42350f7 --- /dev/null +++ b/interface/web/sites/lib/lang/cz_web_vhost_domain_list.lng @@ -0,0 +1,10 @@ +<?php +$wb['list_head_txt'] = 'Webové stránky'; +$wb['domain_id_txt'] = 'ID'; +$wb['active_txt'] = 'Aktivní'; +$wb['server_id_txt'] = 'Server'; +$wb['domain_txt'] = 'Doména'; +$wb['add_new_record_txt'] = 'Přidat webovou stránku'; +$wb['parent_domain_id_txt'] = 'Webové stránky'; +?> + 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 ab47f26..98618e1 100644 --- a/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng +++ b/interface/web/sites/lib/lang/cz_web_vhost_subdomain.lng @@ -1,5 +1,5 @@ <?php -$wb['parent_domain_id_txt'] = 'Parent Website'; +$wb['parent_domain_id_txt'] = 'Rodičovské webové stránky'; $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.'; @@ -35,7 +35,7 @@ $wb['cgi_txt'] = 'CGI'; $wb['ssi_txt'] = 'SSI'; $wb['errordocs_txt'] = 'Own Error-Documents'; -$wb['subdomain_txt'] = 'Auto-Subdomain'; +$wb['subdomain_txt'] = 'Automatická subdoména'; $wb['ssl_txt'] = 'SSL'; $wb['suexec_txt'] = 'SuEXEC'; $wb['php_txt'] = 'PHP'; @@ -74,7 +74,7 @@ $wb['stats_type_txt'] = 'Webstatistics program'; $wb['custom_php_ini_txt'] = 'Custom php.ini settings'; $wb['none_txt'] = 'None'; -$wb['disabled_txt'] = 'Disabled'; +$wb['disabled_txt'] = 'Vypnuto'; $wb['no_redirect_txt'] = 'No redirect'; $wb['no_flag_txt'] = 'No flag'; $wb['save_certificate_txt'] = 'Uložit certifikát'; @@ -115,5 +115,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['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'; +$wb['variables_txt'] = 'Proměnné'; +$wb['backup_excludes_txt'] = 'Excluded Directories'; +$wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)'; +$wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.'; +$wb['subdomain_error_empty'] = 'The subdommain field is empty or contains invalid characters.'; ?> 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 af8bfea..422ec85 100644 --- a/interface/web/sites/lib/lang/cz_webdav_user_list.lng +++ b/interface/web/sites/lib/lang/cz_webdav_user_list.lng @@ -1,5 +1,5 @@ <?php -$wb['list_head_txt'] = 'Webdav uživatel'; +$wb['list_head_txt'] = 'Webdav uživatelé'; $wb['active_txt'] = 'Aktivní'; $wb['server_id_txt'] = 'Server'; $wb['parent_domain_id_txt'] = 'Webové stránky'; diff --git a/interface/web/tools/lib/lang/cz_resync.lng b/interface/web/tools/lib/lang/cz_resync.lng index ff1e3a5..bb4bf86 100644 --- a/interface/web/tools/lib/lang/cz_resync.lng +++ b/interface/web/tools/lib/lang/cz_resync.lng @@ -10,5 +10,6 @@ $wb['resync_dns_txt'] = 'Resynchronizovat DNS záznamy'; $wb['btn_start_txt'] = 'Zahájit'; $wb['btn_cancel_txt'] = 'Zrušit'; +$wb['resync_client_txt'] = 'Resync Client records'; ?> -- Gitblit v1.9.1