diff options
57 files changed, 1183 insertions, 311 deletions
@@ -1,6 +1,27 @@ CHANGELOG Roundcube Webmail =========================== +RELEASE 0.5.1 +------------- +- Fix settings UI on IE 6 (#1487724) +- Remove double borders in folder listing (#1487713) +- Separate full message headers UI element from headers table (#1487715) +- Add part MIME ID to message_part_* hooks (#1487718) +- Updated PEAR::Net_Socket to 1.0.10 +- Updated PEAR::Net_IDNA2 to 0.1.1 +- Fix handling of comments inside an email address spec. (#1487673) +- Show full mail subject as title when hovering a cut subject link (#1487128) +- Fix randomly disappearing folders list in IE (#1487704) +- Fix list column add/removal in IE (#1487703) +- Fix login redirect issues (#1487686) +- Require PHP 5.2.1 or greater +- Fix %h/%z variables in username_domain option (#1487701) +- Workaround for setting charset in case of malformed bodystructure response (#1487700) +- Fix impossible to subscribe to protected folders (#1487656) +- Fix setting timezone in Preferences (#1487705) + +RELEASE 0.5 +----------- - Fix double-login/session issue (#1487104) - Wrap HTML parts with <html><body> and add Doctype declaration (#1487098) - Make rcube_autoload silently skip unknown classes (#1487109) @@ -11,7 +11,7 @@ REQUIREMENTS * The Apache or Lighttpd Webserver * .htaccess support allowing overrides for DirectoryIndex -* PHP Version 5.2 or greater including +* PHP Version 5.2.1 or greater including - PCRE, DOM, JSON, XML, Session, Sockets (required) - libiconv (recommended) - mbstring, fileinfo, mcrypt (optional) diff --git a/SQL/mysql.update.sql b/SQL/mysql.update.sql index 2af0a47e6..aaab43fb2 100644 --- a/SQL/mysql.update.sql +++ b/SQL/mysql.update.sql @@ -131,3 +131,5 @@ ALTER TABLE `users` ADD UNIQUE `username` (`username`, `mail_host`); ALTER TABLE `contacts` MODIFY `email` varchar(255) NOT NULL; +TRUNCATE TABLE `messages`; + diff --git a/SQL/postgres.update.sql b/SQL/postgres.update.sql index 444caf6f6..2f4498d36 100644 --- a/SQL/postgres.update.sql +++ b/SQL/postgres.update.sql @@ -88,3 +88,4 @@ DROP INDEX users_username_id_idx; ALTER TABLE users ADD UNIQUE (username, mail_host); ALTER TABLE contacts ALTER email TYPE varchar(255); +TRUNCATE messages; diff --git a/SQL/sqlite.update.sql b/SQL/sqlite.update.sql index 328693944..6f2acf913 100644 --- a/SQL/sqlite.update.sql +++ b/SQL/sqlite.update.sql @@ -180,3 +180,5 @@ INSERT INTO contacts (contact_id, user_id, changed, del, name, email, firstname, CREATE INDEX ix_contacts_user_id ON contacts(user_id, email); DROP TABLE contacts_tmp; +DELETE FROM messages; + @@ -2,9 +2,9 @@ /* +-------------------------------------------------------------------------+ | Roundcube Webmail IMAP Client | - | Version 0.5 | + | Version 0.5.1 | | | - | Copyright (C) 2005-2010, Roundcube Dev. - Switzerland | + | Copyright (C) 2005-2011, Roundcube Dev. - Switzerland | | | | This program is free software; you can redistribute it and/or modify | | it under the terms of the GNU General Public License version 2 | @@ -104,12 +104,17 @@ if ($RCMAIL->task == 'login' && $RCMAIL->action == 'login') { rcmail_log_login(); // restore original request parameters - $query = array('_task' => 'mail'); - if ($url = get_input_value('_url', RCUBE_INPUT_POST)) + $query = array(); + if ($url = get_input_value('_url', RCUBE_INPUT_POST)) { parse_str($url, $query); + + // prevent endless looping on login page + if ($query['_task'] == 'login') + unset($query['_task']); + } // allow plugins to control the redirect url after login success - $redir = $RCMAIL->plugins->exec_hook('login_after', $query); + $redir = $RCMAIL->plugins->exec_hook('login_after', $query + array('_task' => 'mail')); unset($redir['abort']); // send redirect diff --git a/installer/check.php b/installer/check.php index 7fa4d95d3..0ba5f58de 100644 --- a/installer/check.php +++ b/installer/check.php @@ -68,7 +68,7 @@ echo '<input type="hidden" name="_step" value="' . ($RCI->configured ? 3 : 2) . <h3>Checking PHP version</h3> <?php -define('MIN_PHP_VERSION', '5.2.0'); +define('MIN_PHP_VERSION', '5.2.1'); if (version_compare(PHP_VERSION, MIN_PHP_VERSION, '>=')) { $RCI->pass('Version', 'PHP ' . PHP_VERSION . ' detected'); } else { diff --git a/program/include/iniset.php b/program/include/iniset.php index aeb4549fc..ac96880c3 100755 --- a/program/include/iniset.php +++ b/program/include/iniset.php @@ -36,7 +36,7 @@ foreach ($crit_opts as $optname => $optval) { } // application constants -define('RCMAIL_VERSION', '0.5'); +define('RCMAIL_VERSION', '0.5.1'); define('RCMAIL_CHARSET', 'UTF-8'); define('JS_OBJECT_NAME', 'rcmail'); define('RCMAIL_START', microtime(true)); diff --git a/program/include/main.inc b/program/include/main.inc index b61f8aea2..b8d27d68c 100644 --- a/program/include/main.inc +++ b/program/include/main.inc @@ -861,8 +861,8 @@ function rcmail_mod_css_styles($source, $container_id) $replacements = new rcube_string_replacer; // ignore the whole block if evil styles are detected - $stripped = preg_replace('/[^a-z\(:]/', '', rcmail_xss_entity_decode($source)); - if (preg_match('/expression|behavior|url\(|import/', $stripped)) + $stripped = preg_replace('/[^a-z\(:;]/', '', rcmail_xss_entity_decode($source)); + if (preg_match('/expression|behavior|url\(|import[^a]/', $stripped)) return '/* evil! */'; // remove css comments (sometimes used for some ugly hacks) @@ -1771,16 +1771,17 @@ function rcube_sess_unset($var_name=null) * Replaces hostname variables * * @param string $name Hostname + * @param string $host Optional IMAP hostname * @return string */ -function rcube_parse_host($name) +function rcube_parse_host($name, $host='') { // %n - host $n = preg_replace('/:\d+$/', '', $_SERVER['SERVER_NAME']); // %d - domain name without first part, e.g. %d=mail.domain.tld, %m=domain.tld $d = preg_replace('/^[^\.]+\./', '', $n); // %h - IMAP host - $h = $_SESSION['imap_host']; + $h = $_SESSION['imap_host'] ? $_SESSION['imap_host'] : $host; // %z - IMAP domain without first part, e.g. %h=imap.domain.tld, %z=domain.tld $z = preg_replace('/^[^\.]+\./', '', $h); diff --git a/program/include/rcmail.php b/program/include/rcmail.php index e4078a72f..e9f5b5fce 100644 --- a/program/include/rcmail.php +++ b/program/include/rcmail.php @@ -673,9 +673,9 @@ class rcmail // Check if we need to add domain if (!empty($config['username_domain']) && strpos($username, '@') === false) { if (is_array($config['username_domain']) && isset($config['username_domain'][$host])) - $username .= '@'.rcube_parse_host($config['username_domain'][$host]); + $username .= '@'.rcube_parse_host($config['username_domain'][$host], $host); else if (is_string($config['username_domain'])) - $username .= '@'.rcube_parse_host($config['username_domain']); + $username .= '@'.rcube_parse_host($config['username_domain'], $host); } // Convert username to lowercase. If IMAP backend diff --git a/program/include/rcube_html_page.php b/program/include/rcube_html_page.php index 06cb5cb56..9ac03d01f 100644 --- a/program/include/rcube_html_page.php +++ b/program/include/rcube_html_page.php @@ -28,11 +28,13 @@ class rcube_html_page { protected $scripts_path = ''; protected $script_files = array(); + protected $css_files = array(); protected $scripts = array(); protected $charset = RCMAIL_CHARSET; protected $script_tag_file = "<script type=\"text/javascript\" src=\"%s\"></script>\n"; protected $script_tag = "<script type=\"text/javascript\">\n/* <![CDATA[ */\n%s\n/* ]]> */\n</script>"; + protected $link_css_file = "<link rel=\"stylesheet\" type=\"text/css\" href=\"%s\" />\n"; protected $default_template = "<html>\n<head><title></title></head>\n<body></body>\n</html>"; protected $title = ''; @@ -61,6 +63,9 @@ class rcube_html_page if (in_array($file, $sa_files)) { return; } + + $sa_files[] = $file; + if (!is_array($this->script_files[$position])) { $this->script_files[$position] = array(); } @@ -83,6 +88,16 @@ class rcube_html_page } /** + * Link an external css file + * + * @param string File URL + */ + public function include_css($file) + { + $this->css_files[] = $file; + } + + /** * Add HTML code to the page header * * @param string $str HTML code @@ -163,52 +178,53 @@ class rcube_html_page } // replace specialchars in content - $__page_title = Q($this->title, 'show', FALSE); - $__page_header = $__page_body = $__page_footer = ''; + $page_title = Q($this->title, 'show', FALSE); + $page_header = ''; + $page_footer = ''; // include meta tag with charset if (!empty($this->charset)) { if (!headers_sent()) { header('Content-Type: text/html; charset=' . $this->charset); } - $__page_header = '<meta http-equiv="content-type"'; - $__page_header.= ' content="text/html; charset='; - $__page_header.= $this->charset . '" />'."\n"; + $page_header = '<meta http-equiv="content-type"'; + $page_header.= ' content="text/html; charset='; + $page_header.= $this->charset . '" />'."\n"; } // definition of the code to be placed in the document header and footer if (is_array($this->script_files['head'])) { foreach ($this->script_files['head'] as $file) { - $__page_header .= sprintf($this->script_tag_file, $file); + $page_header .= sprintf($this->script_tag_file, $file); } } $head_script = $this->scripts['head_top'] . $this->scripts['head']; if (!empty($head_script)) { - $__page_header .= sprintf($this->script_tag, $head_script); + $page_header .= sprintf($this->script_tag, $head_script); } if (!empty($this->header)) { - $__page_header .= $this->header; + $page_header .= $this->header; } if (is_array($this->script_files['foot'])) { foreach ($this->script_files['foot'] as $file) { - $__page_footer .= sprintf($this->script_tag_file, $file); + $page_footer .= sprintf($this->script_tag_file, $file); } } if (!empty($this->scripts['foot'])) { - $__page_footer .= sprintf($this->script_tag, $this->scripts['foot']); + $page_footer .= sprintf($this->script_tag, $this->scripts['foot']); } if (!empty($this->footer)) { - $__page_footer .= $this->footer; + $page_footer .= $this->footer; } // find page header if ($hpos = stripos($output, '</head>')) { - $__page_header .= "\n"; + $page_header .= "\n"; } else { if (!is_numeric($hpos)) { @@ -220,49 +236,43 @@ class rcube_html_page } $hpos++; } - $__page_header = "<head>\n<title>$__page_title</title>\n$__page_header\n</head>\n"; + $page_header = "<head>\n<title>$page_title</title>\n$page_header\n</head>\n"; } // add page hader if ($hpos) { - $output = substr($output,0,$hpos) . $__page_header . substr($output,$hpos,strlen($output)); + $output = substr($output,0,$hpos) . $page_header . substr($output,$hpos,strlen($output)); } else { - $output = $__page_header . $output; + $output = $page_header . $output; } - // find page body - if ($bpos = stripos($output, '<body')) { - while ($output[$bpos] != '>') { - $bpos++; - } - $bpos++; - } - else { - $bpos = stripos($output, '</head>')+7; - } - - // add page body - if ($bpos && $__page_body) { - $output = substr($output,0,$bpos) . "\n$__page_body\n" . substr($output,$bpos,strlen($output)); - } - - // find and add page footer + // add page footer if (($fpos = strripos($output, '</body>')) || ($fpos = strripos($output, '</html>'))) { - $output = substr($output, 0, $fpos) . "$__page_footer\n" . substr($output, $fpos); + $output = substr($output, 0, $fpos) . "$page_footer\n" . substr($output, $fpos); } else { - $output .= "\n".$__page_footer; + $output .= "\n".$page_footer; } - // reset those global vars - $__page_header = $__page_footer = ''; + // add css files in head, before scripts, for speed up with parallel downloads + if (!empty($this->css_files) && + (($pos = stripos($output, '<script ')) || ($pos = stripos($output, '</head>'))) + ) { + $css = ''; + foreach ($this->css_files as $file) { + $css .= sprintf($this->link_css_file, $file); + } + $output = substr($output, 0, $pos) . $css . substr($output, $pos); + } $this->base_path = $base_path; + // correct absolute paths in images and other tags // add timestamp to .js and .css filename - $output = preg_replace_callback('!(src|href|background)=(["\']?)([a-z0-9/_.-]+)(["\'\s>])!i', - array($this, 'file_callback'), $output); + $output = preg_replace_callback( + '!(src|href|background)=(["\']?)([a-z0-9/_.-]+)(["\'\s>])!i', + array($this, 'file_callback'), $output); $output = str_replace('$__skin_path', $base_path, $output); if ($this->charset != RCMAIL_CHARSET) diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php index 26975044d..bfbf740fd 100644 --- a/program/include/rcube_imap.php +++ b/program/include/rcube_imap.php @@ -2053,7 +2053,7 @@ class rcube_imap return false; } - $struct = &$this->_structure_part($structure); + $struct = &$this->_structure_part($structure, 0, '', $headers); $struct->headers = get_object_vars($headers); // don't trust given content-type @@ -2185,6 +2185,11 @@ class rcube_imap $struct->charset = $struct->ctype_parameters['charset']; } + // #1487700: workaround for lack of charset in malformed structure + if (empty($struct->charset) && !empty($mime_headers) && $mime_headers->charset) { + $struct->charset = $mime_headers->charset; + } + // read content encoding if (!empty($part[5]) && $part[5]!='NIL') { $struct->encoding = strtolower($part[5]); @@ -2233,7 +2238,11 @@ class rcube_imap $mime_headers = $this->conn->fetchPartHeader( $this->mailbox, $this->_msg_id, false, $struct->mime_id); } - $struct->headers = $this->_parse_headers($mime_headers) + $struct->headers; + + if (is_string($mime_headers)) + $struct->headers = $this->_parse_headers($mime_headers) + $struct->headers; + else if (is_object($mime_headers)) + $struct->headers = get_object_vars($mime_headers) + $struct->headers; // get real content-type of message/rfc822 if ($struct->mimetype == 'message/rfc822') { @@ -4691,10 +4700,13 @@ class rcube_imap private function _parse_address_list($str, $decode=true) { // remove any newlines and carriage returns before - $a = rcube_explode_quoted_string('[,;]', preg_replace( "/[\r\n]/", " ", $str)); + $str = preg_replace('/\r?\n(\s|\t)?/', ' ', $str); + + // extract list items, remove comments + $str = self::explode_header_string(',;', $str, true); $result = array(); - foreach ($a as $key => $val) { + foreach ($str as $key => $val) { $name = ''; $address = ''; $val = trim($val); @@ -4736,6 +4748,81 @@ class rcube_imap /** + * Explodes header (e.g. address-list) string into array of strings + * using specified separator characters with proper handling + * of quoted-strings and comments (RFC2822) + * + * @param string $separator String containing separator characters + * @param string $str Header string + * @param bool $remove_comments Enable to remove comments + * + * @return array Header items + */ + static function explode_header_string($separator, $str, $remove_comments=false) + { + $length = strlen($str); + $result = array(); + $quoted = false; + $comment = 0; + $out = ''; + + for ($i=0; $i<$length; $i++) { + // we're inside a quoted string + if ($quoted) { + if ($str[$i] == '"') { + $quoted = false; + } + else if ($str[$i] == '\\') { + if ($comment <= 0) { + $out .= '\\'; + } + $i++; + } + } + // we're inside a comment string + else if ($comment > 0) { + if ($str[$i] == ')') { + $comment--; + } + else if ($str[$i] == '(') { + $comment++; + } + else if ($str[$i] == '\\') { + $i++; + } + continue; + } + // separator, add to result array + else if (strpos($separator, $str[$i]) !== false) { + if ($out) { + $result[] = $out; + } + $out = ''; + continue; + } + // start of quoted string + else if ($str[$i] == '"') { + $quoted = true; + } + // start of comment + else if ($remove_comments && $str[$i] == '(') { + $comment++; + } + + if ($comment <= 0) { + $out .= $str[$i]; + } + } + + if ($out && $comment <= 0) { + $result[] = $out; + } + + return $result; + } + + + /** * This is our own debug handler for the IMAP connection * @access public */ diff --git a/program/include/rcube_plugin_api.php b/program/include/rcube_plugin_api.php index f0fe8c20e..ab5c40686 100644 --- a/program/include/rcube_plugin_api.php +++ b/program/include/rcube_plugin_api.php @@ -395,7 +395,7 @@ class rcube_plugin_api { if ($this->output->type == 'html') { $src = $this->resource_url($fn); - $this->output->add_header(html::tag('link', array('rel' => "stylesheet", 'type' => "text/css", 'href' => $src))); + $this->output->include_css($src); } } @@ -437,4 +437,3 @@ class rcube_plugin_api } } - diff --git a/program/include/rcube_template.php b/program/include/rcube_template.php index 92eddc2d8..5433dc202 100755 --- a/program/include/rcube_template.php +++ b/program/include/rcube_template.php @@ -1229,8 +1229,8 @@ class rcube_template extends rcube_html_page 'UTF-8' => 'UTF-8 ('.rcube_label('unicode').')', 'US-ASCII' => 'ASCII ('.rcube_label('english').')', 'ISO-8859-1' => 'ISO-8859-1 ('.rcube_label('westerneuropean').')', - 'ISO-8859-2' => 'ISO-8895-2 ('.rcube_label('easterneuropean').')', - 'ISO-8859-4' => 'ISO-8895-4 ('.rcube_label('baltic').')', + 'ISO-8859-2' => 'ISO-8859-2 ('.rcube_label('easterneuropean').')', + 'ISO-8859-4' => 'ISO-8859-4 ('.rcube_label('baltic').')', 'ISO-8859-5' => 'ISO-8859-5 ('.rcube_label('cyrillic').')', 'ISO-8859-6' => 'ISO-8859-6 ('.rcube_label('arabic').')', 'ISO-8859-7' => 'ISO-8859-7 ('.rcube_label('greek').')', diff --git a/program/js/app.js b/program/js/app.js index 346f4e44e..38141a92f 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -1006,15 +1006,9 @@ function rcube_webmail() // user settings commands case 'preferences': - this.goto_url(''); - break; - case 'identities': - this.goto_url('settings/identities'); - break; - case 'folders': - this.goto_url('settings/folders'); + this.goto_url('settings/' + command); break; // unified command call (command name == function name) @@ -1701,7 +1695,7 @@ function rcube_webmail() var action = flags.mbox == this.env.drafts_mailbox ? 'compose' : 'show'; var uid_param = flags.mbox == this.env.drafts_mailbox ? '_draft_uid' : '_uid'; cols.subject = '<a href="./?_task=mail&_action='+action+'&_mbox='+urlencode(flags.mbox)+'&'+uid_param+'='+uid+'"'+ - ' onclick="return rcube_event.cancel(event)">'+cols.subject+'</a>'; + ' onclick="return rcube_event.cancel(event)" onmouseover="rcube_webmail.long_subject_title(this,'+(message.depth+1)+')">'+cols.subject+'</a>'; } // add each submitted col @@ -3777,6 +3771,9 @@ function rcube_webmail() this.show_contentframe(false); } + if (this.env.group) + qs += '&_gid='+urlencode(this.env.group); + // also send search request to get the right records from the next page if (this.env.search_request) qs += '&_search='+this.env.search_request; @@ -4309,6 +4306,14 @@ function rcube_webmail() } }; + // disables subscription checkbox (for protected folder) + this.disable_subscription = function(folder) + { + var id = this.get_folder_row_id(folder); + if (id) + $('input[name="_subscribed[]"]', $('#'+id)).attr('disabled', true); + }; + this.folder_size = function(folder) { var lock = this.set_busy(true, 'loading'); @@ -4666,6 +4671,7 @@ function rcube_webmail() } th.appendChild(tr); thead.parentNode.replaceChild(th, thead); + thead = th; } for (n=0, len=this.env.coltypes.length; n<len; n++) { @@ -5288,6 +5294,17 @@ function rcube_webmail() } // end object rcube_webmail + +// some static methods +rcube_webmail.long_subject_title = function(elem, indent) +{ + if (!elem.title) { + var $elem = $(elem); + if ($elem.width() + indent * 15 > $elem.parent().width()) + elem.title = $elem.html(); + } +}; + // copy event engine prototype rcube_webmail.prototype.addEventListener = rcube_event_engine.prototype.addEventListener; rcube_webmail.prototype.removeEventListener = rcube_event_engine.prototype.removeEventListener; diff --git a/program/js/tiny_mce/themes/advanced/langs/sv_dlg.js b/program/js/tiny_mce/themes/advanced/langs/sv_dlg.js index 12a5941a0..a9b93de4f 100755 --- a/program/js/tiny_mce/themes/advanced/langs/sv_dlg.js +++ b/program/js/tiny_mce/themes/advanced/langs/sv_dlg.js @@ -42,8 +42,8 @@ image_align_right:"H\u00F6ger", link_title:"Infoga/redigera l\u00E4nk",
link_url:"L\u00E4nkens URL",
link_target:"M\u00E5l",
-link_target_same:"\u00D6\u0096ppna l\u00E4nken i samma f\u00F6nster",
-link_target_blank:"\u00D6\u0096ppna l\u00E4nken i ett nytt f\u00F6nster",
+link_target_same:"\u00D6ppna l\u00E4nken i samma f\u00F6nster",
+link_target_blank:"\u00D6ppna l\u00E4nken i ett nytt f\u00F6nster",
link_titlefield:"Titel",
link_is_email:"L\u00E4nken du angav verkar vara en e-post adress. Vill du infoga mailto: prefixet p\u00E5 l\u00E4nken?",
link_is_external:"L\u00E4nken du angav verkar vara en extern adress. Vill du infoga http:// prefixet p\u00E5 l\u00E4nken?",
diff --git a/program/lib/Net/IDNA2.php b/program/lib/Net/IDNA2.php index 0c5f3526b..8c366fb8a 100644 --- a/program/lib/Net/IDNA2.php +++ b/program/lib/Net/IDNA2.php @@ -49,11 +49,11 @@ require_once 'Net/IDNA2/Exception/Nameprep.php'; * * ACE input and output is always expected to be ASCII. * + * @package Net * @author Markus Nix <mnix@docuverse.de> * @author Matthias Sommerfeld <mso@phlylabs.de> * @author Stefan Neufeind <pear.neufeind@speedpartner.de> - * @package Net - * @version $Id: IDNA2.php 301175 2010-07-12 03:31:17Z clockwerx $ + * @version $Id: IDNA2.php 305344 2010-11-14 23:52:42Z neufeind $ */ class Net_IDNA2 { @@ -1124,8 +1124,8 @@ class Net_IDNA2 0x33BE => array(0x6B, 0x77), 0x33BF => array(0x6D, 0x77), 0x33C0 => array(0x6B, 0x3C9), - 0x33C1 => array(0x6D, 0x3C9), /* - 0x33C2 => array(0x61, 0x2E, 0x6D, 0x2E), */ + 0x33C1 => array(0x6D, 0x3C9), + /* 0x33C2 => array(0x61, 0x2E, 0x6D, 0x2E), */ 0x33C3 => array(0x62, 0x71), 0x33C6 => array(0x63, 0x2215, 0x6B, 0x67), 0x33C7 => array(0x63, 0x6F, 0x2E), @@ -2194,6 +2194,20 @@ class Net_IDNA2 private $_strict_mode = false; /** + * IDNA-version to use + * + * Values are "2003" and "2008". + * Defaults to "2003", since that was the original version and for + * compatibility with previous versions of this library. + * If you need to encode "new" characters like the German "Eszett", + * please switch to 2008 first before encoding. + * + * @var bool + * @access private + */ + private $_version = '2003'; + + /** * Cached value indicating whether or not mbstring function overloading is * on for strlen * @@ -2210,7 +2224,8 @@ class Net_IDNA2 /** * Constructor * - * @param array $options + * @param array $options Options to initialise the object with + * * @access public * @see setParams() */ @@ -2243,10 +2258,11 @@ class Net_IDNA2 * on failures; false: loose mode, ideal for "wildlife" applications * by silently ignoring errors and returning the original input instead] * - * @param mixed $option Parameter to set (string: single parameter; array of Parameter => Value pairs) - * @param string $value Value to use (if parameter 1 is a string) - * @return boolean true on success, false otherwise - * @access public + * @param mixed $option Parameter to set (string: single parameter; array of Parameter => Value pairs) + * @param string $value Value to use (if parameter 1 is a string) + * + * @return boolean true on success, false otherwise + * @access public */ public function setParams($option, $value = false) { @@ -2278,6 +2294,14 @@ class Net_IDNA2 $this->_strict_mode = ($v) ? true : false; break; + case 'version': + if (in_array($v, array('2003', '2008'))) { + $this->_version = $v; + } else { + throw new InvalidArgumentException('Set Parameter: Invalid parameter '.$v.' for option '.$k); + } + break; + default: return false; } @@ -2289,12 +2313,14 @@ class Net_IDNA2 /** * Encode a given UTF-8 domain name. * - * @param string $decoded Domain name (UTF-8 or UCS-4) - * [@param string $encoding Desired input encoding, see {@link set_parameter}] - * @return string Encoded Domain name (ACE string) - * @return mixed processed string - * @throws Exception - * @access public + * @param string $decoded Domain name (UTF-8 or UCS-4) + * @param string $one_time_encoding Desired input encoding, see {@link set_parameter} + * If not given will use default-encoding + * + * @return string Encoded Domain name (ACE string) + * @return mixed processed string + * @throws Exception + * @access public */ public function encode($decoded, $one_time_encoding = false) { @@ -2305,9 +2331,9 @@ class Net_IDNA2 $decoded = $this->_utf8_to_ucs4($decoded); break; case 'ucs4_string': - $decoded = $this->_ucs4_string_to_ucs4($decoded); + $decoded = $this->_ucs4_string_to_ucs4($decoded); case 'ucs4_array': // No break; before this line. Catch case, but do nothing - break; + break; default: throw new InvalidArgumentException('Unsupported input format'); } @@ -2338,7 +2364,7 @@ class Net_IDNA2 case 0x40: // Neither email addresses nor URLs allowed in strict mode if ($this->_strict_mode) { - throw new InvalidArgumentException('Neither email addresses nor URLs are allowed in strict mode.'); + throw new InvalidArgumentException('Neither email addresses nor URLs are allowed in strict mode.'); } // Skip first char if ($k) { @@ -2377,11 +2403,12 @@ class Net_IDNA2 /** * Decode a given ACE domain name. * - * @param string $encoded Domain name (ACE string) - * @param string $encoding Desired output encoding, see {@link set_parameter} - * @return string Decoded Domain name (UTF-8 or UCS-4) - * @throws Exception - * @access public + * @param string $input Domain name (ACE string) + * @param string $one_time_encoding Desired output encoding, see {@link set_parameter} + * + * @return string Decoded Domain name (UTF-8 or UCS-4) + * @throws Exception + * @access public */ public function decode($input, $one_time_encoding = false) { @@ -2430,7 +2457,7 @@ class Net_IDNA2 if (isset($parsed['scheme'])) { $parsed['scheme'] .= (strtolower($parsed['scheme']) == 'mailto') ? ':' : '://'; } - $return = join('', $parsed); + $return = $this->_unparse_url($parsed); } else { // parse_url seems to have failed, try without it $arr = explode('.', $input); foreach ($arr as $k => $v) { @@ -2449,8 +2476,8 @@ class Net_IDNA2 return $return; break; case 'ucs4_string': - return $this->_ucs4_to_ucs4_string($this->_utf8_to_ucs4($return)); - break; + return $this->_ucs4_to_ucs4_string($this->_utf8_to_ucs4($return)); + break; case 'ucs4_array': return $this->_utf8_to_ucs4($return); break; @@ -2462,11 +2489,49 @@ class Net_IDNA2 // {{{ private /** + * Opposite function to parse_url() + * + * Inspired by code from comments of php.net-documentation for parse_url() + * + * @param array $parts_arr parts (strings) as returned by parse_url() + * + * @return string + * @access private + */ + private function _unparse_url($parts_arr) + { + if (!empty($parts_arr['scheme'])) { + $ret_url = $parts_arr['scheme']; + } + if (!empty($parts_arr['user'])) { + $ret_url .= $parts_arr['user']; + if (!empty($parts_arr['pass'])) { + $ret_url .= ':' . $parts_arr['pass']; + } + $ret_url .= '@'; + } + $ret_url .= $parts_arr['host']; + if (!empty($parts_arr['port'])) { + $ret_url .= ':' . $parts_arr['port']; + } + $ret_url .= $parts_arr['path']; + if (!empty($parts_arr['query'])) { + $ret_url .= '?' . $parts_arr['query']; + } + if (!empty($parts_arr['fragment'])) { + $ret_url .= '#' . $parts_arr['fragment']; + } + return $ret_url; + } + + /** * The actual encoding algorithm. * - * @return string - * @throws Exception - * @access private + * @param string $decoded Decoded string which should be encoded + * + * @return string Encoded string + * @throws Exception + * @access private */ private function _encode($decoded) { @@ -2517,9 +2582,10 @@ class Net_IDNA2 $test = $decoded[$i]; // Will match [0-9a-zA-Z-] if ((0x2F < $test && $test < 0x40) - || (0x40 < $test && $test < 0x5B) - || (0x60 < $test && $test <= 0x7B) - || (0x2D == $test)) { + || (0x40 < $test && $test < 0x5B) + || (0x60 < $test && $test <= 0x7B) + || (0x2D == $test) + ) { $encoded .= chr($decoded[$i]); $codecount++; } @@ -2592,9 +2658,11 @@ class Net_IDNA2 /** * The actual decoding algorithm. * - * @return string - * @throws Exception - * @access private + * @param string $encoded Encoded string which should be decoded + * + * @return string Decoded string + * @throws Exception + * @access private */ private function _decode($encoded) { @@ -2667,7 +2735,12 @@ class Net_IDNA2 /** * Adapt the bias according to the current code point and position. * - * @access private + * @param int $delta ... + * @param int $npoints ... + * @param boolean $is_first ... + * + * @return int + * @access private */ private function _adapt($delta, $npoints, $is_first) { @@ -2684,7 +2757,10 @@ class Net_IDNA2 /** * Encoding a certain digit. * - * @access private + * @param int $d One digit to encode + * + * @return char Encoded digit + * @access private */ private function _encodeDigit($d) { @@ -2694,7 +2770,10 @@ class Net_IDNA2 /** * Decode a certain digit. * - * @access private + * @param char $cp One digit (character) to decode + * + * @return int Decoded digit + * @access private */ private function _decodeDigit($cp) { @@ -2705,10 +2784,11 @@ class Net_IDNA2 /** * Do Nameprep according to RFC3491 and RFC3454. * - * @param array $input Unicode Characters - * @return string Unicode Characters, Nameprep'd - * @throws Exception - * @access private + * @param array $input Unicode Characters + * + * @return string Unicode Characters, Nameprep'd + * @throws Exception + * @access private */ private function _nameprep($input) { @@ -2740,7 +2820,9 @@ class Net_IDNA2 foreach ($this->_hangulDecompose($v) as $out) { $output[] = $out; } - } else if (isset(self::$_np_replacemaps[$v])) { // There's a decomposition mapping for that code point + } else if (($this->_version == '2003') && isset(self::$_np_replacemaps[$v])) { + // There's a decomposition mapping for that code point + // Decompositions only in version 2003 (original) of IDNA foreach ($this->_applyCannonicalOrdering(self::$_np_replacemaps[$v]) as $out) { $output[] = $out; } @@ -2800,10 +2882,11 @@ class Net_IDNA2 * Decomposes a Hangul syllable * (see http://www.unicode.org/unicode/reports/tr15/#Hangul). * - * @param integer $char 32bit UCS4 code point - * @return array Either Hangul Syllable decomposed or original 32bit - * value as one value array - * @access private + * @param integer $char 32bit UCS4 code point + * + * @return array Either Hangul Syllable decomposed or original 32bit + * value as one value array + * @access private */ private function _hangulDecompose($char) { @@ -2829,9 +2912,10 @@ class Net_IDNA2 * Ccomposes a Hangul syllable * (see http://www.unicode.org/unicode/reports/tr15/#Hangul). * - * @param array $input Decomposed UCS4 sequence - * @return array UCS4 sequence with syllables composed - * @access private + * @param array $input Decomposed UCS4 sequence + * + * @return array UCS4 sequence with syllables composed + * @access private */ private function _hangulCompose($input) { @@ -2893,9 +2977,10 @@ class Net_IDNA2 /** * Returns the combining class of a certain wide char. * - * @param integer $char Wide char to check (32bit integer) - * @return integer Combining class if found, else 0 - * @access private + * @param integer $char Wide char to check (32bit integer) + * + * @return integer Combining class if found, else 0 + * @access private */ private function _getCombiningClass($char) { @@ -2905,9 +2990,10 @@ class Net_IDNA2 /** * Apllies the cannonical ordering of a decomposed UCS4 sequence. * - * @param array $input Decomposed UCS4 sequence - * @return array Ordered USC4 sequence - * @access private + * @param array $input Decomposed UCS4 sequence + * + * @return array Ordered USC4 sequence + * @access private */ private function _applyCannonicalOrdering($input) { @@ -2948,9 +3034,10 @@ class Net_IDNA2 /** * Do composition of a sequence of starter and non-starter. * - * @param array $input UCS4 Decomposed sequence - * @return array Ordered USC4 sequence - * @access private + * @param array $input UCS4 Decomposed sequence + * + * @return array Ordered USC4 sequence + * @access private */ private function _combine($input) { @@ -3011,7 +3098,11 @@ class Net_IDNA2 * * Each x represents a bit that can be used to store character data. * - * @access private + * @param string $input utf8-encoded string + * + * @return array ucs4-encoded array + * @throws Exception + * @access private */ private function _utf8_to_ucs4($input) { @@ -3082,10 +3173,13 @@ class Net_IDNA2 } /** - * Convert UCS-4 array into UTF-8 string. + * Convert UCS-4 array into UTF-8 string * - * @throws Exception - * @access private + * @param array $input ucs4-encoded array + * + * @return string utf8-encoded string + * @throws Exception + * @access private */ private function _ucs4_to_utf8($input) { @@ -3138,8 +3232,11 @@ class Net_IDNA2 /** * Convert UCS-4 array into UCS-4 string * - * @throws Exception - * @access private + * @param array $input ucs4-encoded array + * + * @return string ucs4-encoded string + * @throws Exception + * @access private */ private function _ucs4_to_ucs4_string($input) { @@ -3153,10 +3250,13 @@ class Net_IDNA2 } /** - * Convert UCS-4 strin into UCS-4 garray + * Convert UCS-4 string into UCS-4 array * - * @throws InvalidArgumentException - * @access private + * @param string $input ucs4-encoded string + * + * @return array ucs4-encoded array + * @throws InvalidArgumentException + * @access private */ private function _ucs4_string_to_ucs4($input) { @@ -3187,11 +3287,12 @@ class Net_IDNA2 /** * Echo hex representation of UCS4 sequence. * - * @param array $input UCS4 sequence - * @param boolean $include_bit Include bitmask in output - * @return void + * @param array $input UCS4 sequence + * @param boolean $include_bit Include bitmask in output + * + * @return void * @static - * @access private + * @access private */ private static function _showHex($input, $include_bit = false) { @@ -3210,8 +3311,11 @@ class Net_IDNA2 * Gives you a bit representation of given Byte (8 bits), Word (16 bits) or DWord (32 bits) * Output width is automagically determined * + * @param int $octet ... + * + * @return string Bitmask-representation * @static - * @access private + * @access private */ private static function _showBitmask($octet) { @@ -3226,7 +3330,7 @@ class Net_IDNA2 $return = ''; for ($i = $w; $i > -1; $i--) { - $return .= ($octet & (1 << $i))? 1 : '0'; + $return .= ($octet & (1 << $i))? '1' : '0'; } return $return; diff --git a/program/lib/Net/Socket.php b/program/lib/Net/Socket.php index c86ac919c..dd1047c43 100644 --- a/program/lib/Net/Socket.php +++ b/program/lib/Net/Socket.php @@ -1,39 +1,51 @@ <?php -// -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2003 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.0 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Authors: Stig Bakken <ssb@php.net> | -// | Chuck Hagenbuch <chuck@horde.org> | -// +----------------------------------------------------------------------+ -// -// $Id$ +/** + * Net_Socket + * + * PHP Version 4 + * + * Copyright (c) 1997-2003 The PHP Group + * + * This source file is subject to version 2.0 of the PHP license, + * that is bundled with this package in the file LICENSE, and is + * available at through the world-wide-web at + * http://www.php.net/license/2_02.txt. + * If you did not receive a copy of the PHP license and are unable to + * obtain it through the world-wide-web, please send a note to + * license@php.net so we can mail you a copy immediately. + * + * Authors: Stig Bakken <ssb@php.net> + * Chuck Hagenbuch <chuck@horde.org> + * + * @category Net + * @package Net_Socket + * @author Stig Bakken <ssb@php.net> + * @author Chuck Hagenbuch <chuck@horde.org> + * @copyright 1997-2003 The PHP Group + * @license http://www.php.net/license/2_02.txt PHP 2.02 + * @version CVS: $Id$ + * @link http://pear.php.net/packages/Net_Socket + */ require_once 'PEAR.php'; -define('NET_SOCKET_READ', 1); +define('NET_SOCKET_READ', 1); define('NET_SOCKET_WRITE', 2); define('NET_SOCKET_ERROR', 4); /** * Generalized Socket class. * - * @version 1.1 - * @author Stig Bakken <ssb@php.net> - * @author Chuck Hagenbuch <chuck@horde.org> + * @category Net + * @package Net_Socket + * @author Stig Bakken <ssb@php.net> + * @author Chuck Hagenbuch <chuck@horde.org> + * @copyright 1997-2003 The PHP Group + * @license http://www.php.net/license/2_02.txt PHP 2.02 + * @link http://pear.php.net/packages/Net_Socket */ -class Net_Socket extends PEAR { - +class Net_Socket extends PEAR +{ /** * Socket file pointer. * @var resource $fp @@ -79,22 +91,29 @@ class Net_Socket extends PEAR { var $lineLength = 2048; /** + * The string to use as a newline terminator. Usually "\r\n" or "\n". + * @var string $newline + */ + var $newline = "\r\n"; + + /** * Connect to the specified port. If called when the socket is * already connected, it disconnects and connects again. * - * @param string $addr IP address or host name. - * @param integer $port TCP port number. - * @param boolean $persistent (optional) Whether the connection is - * persistent (kept open between requests - * by the web server). - * @param integer $timeout (optional) How long to wait for data. - * @param array $options See options for stream_context_create. + * @param string $addr IP address or host name. + * @param integer $port TCP port number. + * @param boolean $persistent (optional) Whether the connection is + * persistent (kept open between requests + * by the web server). + * @param integer $timeout (optional) How long to wait for data. + * @param array $options See options for stream_context_create. * * @access public * * @return boolean | PEAR_Error True on success or a PEAR_Error on failure. */ - function connect($addr, $port = 0, $persistent = null, $timeout = null, $options = null) + function connect($addr, $port = 0, $persistent = null, + $timeout = null, $options = null) { if (is_resource($this->fp)) { @fclose($this->fp); @@ -121,9 +140,11 @@ class Net_Socket extends PEAR { } $openfunc = $this->persistent ? 'pfsockopen' : 'fsockopen'; - $errno = 0; - $errstr = ''; + $errno = 0; + $errstr = ''; + $old_track_errors = @ini_set('track_errors', 1); + if ($options && function_exists('stream_context_create')) { if ($this->timeout) { $timeout = $this->timeout; @@ -134,22 +155,30 @@ class Net_Socket extends PEAR { // Since PHP 5 fsockopen doesn't allow context specification if (function_exists('stream_socket_client')) { - $flags = $this->persistent ? STREAM_CLIENT_PERSISTENT : STREAM_CLIENT_CONNECT; + $flags = STREAM_CLIENT_CONNECT; + + if ($this->persistent) { + $flags = STREAM_CLIENT_PERSISTENT; + } + $addr = $this->addr . ':' . $this->port; - $fp = stream_socket_client($addr, $errno, $errstr, $timeout, $flags, $context); + $fp = stream_socket_client($addr, $errno, $errstr, + $timeout, $flags, $context); } else { - $fp = @$openfunc($this->addr, $this->port, $errno, $errstr, $timeout, $context); + $fp = @$openfunc($this->addr, $this->port, $errno, + $errstr, $timeout, $context); } } else { if ($this->timeout) { - $fp = @$openfunc($this->addr, $this->port, $errno, $errstr, $this->timeout); + $fp = @$openfunc($this->addr, $this->port, $errno, + $errstr, $this->timeout); } else { $fp = @$openfunc($this->addr, $this->port, $errno, $errstr); } } if (!$fp) { - if ($errno == 0 && isset($php_errormsg)) { + if ($errno == 0 && !strlen($errstr) && isset($php_errormsg)) { $errstr = $php_errormsg; } @ini_set('track_errors', $old_track_errors); @@ -180,6 +209,18 @@ class Net_Socket extends PEAR { } /** + * Set the newline character/sequence to use. + * + * @param string $newline Newline character(s) + * @return boolean True + */ + function setNewline($newline) + { + $this->newline = $newline; + return true; + } + + /** * Find out if the socket is in blocking mode. * * @access public @@ -196,7 +237,8 @@ class Net_Socket extends PEAR { * if there is no data available, whereas it will block until there * is data for blocking sockets. * - * @param boolean $mode True for blocking sockets, false for nonblocking. + * @param boolean $mode True for blocking sockets, false for nonblocking. + * * @access public * @return mixed true on success or a PEAR_Error instance otherwise */ @@ -207,7 +249,7 @@ class Net_Socket extends PEAR { } $this->blocking = $mode; - socket_set_blocking($this->fp, $this->blocking); + stream_set_blocking($this->fp, (int)$this->blocking); return true; } @@ -215,8 +257,9 @@ class Net_Socket extends PEAR { * Sets the timeout value on socket descriptor, * expressed in the sum of seconds and microseconds * - * @param integer $seconds Seconds. - * @param integer $microseconds Microseconds. + * @param integer $seconds Seconds. + * @param integer $microseconds Microseconds. + * * @access public * @return mixed true on success or a PEAR_Error instance otherwise */ @@ -233,7 +276,8 @@ class Net_Socket extends PEAR { * Sets the file buffering size on the stream. * See php's stream_set_write_buffer for more information. * - * @param integer $size Write buffer size. + * @param integer $size Write buffer size. + * * @access public * @return mixed on success or an PEAR_Error object otherwise */ @@ -262,7 +306,8 @@ class Net_Socket extends PEAR { * </p> * * @access public - * @return mixed Array containing information about existing socket resource or a PEAR_Error instance otherwise + * @return mixed Array containing information about existing socket + * resource or a PEAR_Error instance otherwise */ function getStatus() { @@ -276,17 +321,23 @@ class Net_Socket extends PEAR { /** * Get a specified line of data * + * @param int $size ?? + * * @access public * @return $size bytes of data from the socket, or a PEAR_Error if * not connected. */ - function gets($size) + function gets($size = null) { if (!is_resource($this->fp)) { return $this->raiseError('not connected'); } - return @fgets($this->fp, $size); + if (is_null($size)) { + return @fgets($this->fp); + } else { + return @fgets($this->fp, $size); + } } /** @@ -295,7 +346,8 @@ class Net_Socket extends PEAR { * chunk; if you know the size of the data you're getting * beforehand, this is definitely the way to go. * - * @param integer $size The number of bytes to read from the socket. + * @param integer $size The number of bytes to read from the socket. + * * @access public * @return $size bytes of data from the socket, or a PEAR_Error if * not connected. @@ -312,12 +364,13 @@ class Net_Socket extends PEAR { /** * Write a specified amount of data. * - * @param string $data Data to write. - * @param integer $blocksize Amount of data to write at once. - * NULL means all at once. + * @param string $data Data to write. + * @param integer $blocksize Amount of data to write at once. + * NULL means all at once. * * @access public - * @return mixed If the socket is not connected, returns an instance of PEAR_Error + * @return mixed If the socket is not connected, returns an instance of + * PEAR_Error * If the write succeeds, returns the number of bytes written * If the write fails, returns false. */ @@ -334,12 +387,12 @@ class Net_Socket extends PEAR { $blocksize = 1024; } - $pos = 0; + $pos = 0; $size = strlen($data); while ($pos < $size) { $written = @fwrite($this->fp, substr($data, $pos, $blocksize)); - if ($written === false) { - return false; + if (!$written) { + return $written; } $pos += $written; } @@ -349,7 +402,9 @@ class Net_Socket extends PEAR { } /** - * Write a line of data to the socket, followed by a trailing "\r\n". + * Write a line of data to the socket, followed by a trailing newline. + * + * @param string $data Data to write * * @access public * @return mixed fputs result, or an error @@ -360,7 +415,7 @@ class Net_Socket extends PEAR { return $this->raiseError('not connected'); } - return fwrite($this->fp, $data . "\r\n"); + return fwrite($this->fp, $data . $this->newline); } /** @@ -441,7 +496,7 @@ class Net_Socket extends PEAR { } $string = ''; - while (($char = @fread($this->fp, 1)) != "\x00") { + while (($char = @fread($this->fp, 1)) != "\x00") { $string .= $char; } return $string; @@ -481,11 +536,13 @@ class Net_Socket extends PEAR { } $line = ''; + $timeout = time() + $this->timeout; + while (!feof($this->fp) && (!$this->timeout || time() < $timeout)) { $line .= @fgets($this->fp, $this->lineLength); if (substr($line, -1) == "\n") { - return rtrim($line, "\r\n"); + return rtrim($line, $this->newline); } } return $line; @@ -521,9 +578,9 @@ class Net_Socket extends PEAR { * Runs the equivalent of the select() system call on the socket * with a timeout specified by tv_sec and tv_usec. * - * @param integer $state Which of read/write/error to check for. - * @param integer $tv_sec Number of seconds for timeout. - * @param integer $tv_usec Number of microseconds for timeout. + * @param integer $state Which of read/write/error to check for. + * @param integer $tv_sec Number of seconds for timeout. + * @param integer $tv_usec Number of microseconds for timeout. * * @access public * @return False if select fails, integer describing which of read/write/error @@ -535,8 +592,8 @@ class Net_Socket extends PEAR { return $this->raiseError('not connected'); } - $read = null; - $write = null; + $read = null; + $write = null; $except = null; if ($state & NET_SOCKET_READ) { $read[] = $this->fp; @@ -547,7 +604,8 @@ class Net_Socket extends PEAR { if ($state & NET_SOCKET_ERROR) { $except[] = $this->fp; } - if (false === ($sr = stream_select($read, $write, $except, $tv_sec, $tv_usec))) { + if (false === ($sr = stream_select($read, $write, $except, + $tv_sec, $tv_usec))) { return false; } @@ -567,15 +625,17 @@ class Net_Socket extends PEAR { /** * Turns encryption on/off on a connected socket. * - * @param bool $enabled Set this parameter to true to enable encryption - * and false to disable encryption. - * @param integer $type Type of encryption. See - * http://se.php.net/manual/en/function.stream-socket-enable-crypto.php for values. + * @param bool $enabled Set this parameter to true to enable encryption + * and false to disable encryption. + * @param integer $type Type of encryption. See stream_socket_enable_crypto() + * for values. * + * @see http://se.php.net/manual/en/function.stream-socket-enable-crypto.php * @access public - * @return false on error, true on success and 0 if there isn't enough data and the - * user should try again (non-blocking sockets only). A PEAR_Error object - * is returned if the socket is not connected + * @return false on error, true on success and 0 if there isn't enough data + * and the user should try again (non-blocking sockets only). + * A PEAR_Error object is returned if the socket is not + * connected */ function enableCrypto($enabled, $type) { @@ -585,7 +645,8 @@ class Net_Socket extends PEAR { } return @stream_socket_enable_crypto($this->fp, $enabled, $type); } else { - return $this->raiseError('Net_Socket::enableCrypto() requires php version >= 5.1.0'); + $msg = 'Net_Socket::enableCrypto() requires php version >= 5.1.0'; + return $this->raiseError($msg); } } diff --git a/program/localization/az_AZ/labels.inc b/program/localization/az_AZ/labels.inc index ce515e2d4..3d609e33a 100644 --- a/program/localization/az_AZ/labels.inc +++ b/program/localization/az_AZ/labels.inc @@ -36,11 +36,12 @@ $labels['to'] = 'Kimə'; $labels['cc'] = 'Nüsxə'; $labels['bcc'] = 'Gizli'; $labels['replyto'] = 'Cavabla'; +$labels['followupto'] = 'İzlə'; $labels['date'] = 'Tarix'; $labels['size'] = 'Ölçü'; $labels['priority'] = 'Vaciblik'; $labels['organization'] = 'Təşkilat'; -$labels['reply-to'] = 'Cavab ünvanı'; +$labels['readstatus'] = 'Statusu oxu'; $labels['mailboxlist'] = 'Qovluqlar'; $labels['messagesfromto'] = '$count mesajdan $from - $to arası mesajlar'; $labels['threadsfromto'] = 'Müzakirə: $from - $to Toplam: $count'; @@ -95,6 +96,8 @@ $labels['checkmail'] = 'Gələnləri yoxla'; $labels['writenewmessage'] = 'Yeni məktub'; $labels['replytomessage'] = 'Göndərənə cavabla'; $labels['replytoallmessage'] = 'Hamıya cavabla'; +$labels['replyall'] = 'Hamıya cavab'; +$labels['replylist'] = 'Cavab siyahısı'; $labels['forwardmessage'] = 'Yönəlt'; $labels['deletemessage'] = 'Sil'; $labels['movemessagetotrash'] = 'Məktubu səbətə köçür'; @@ -149,7 +152,6 @@ $labels['listmode'] = 'Görünüş rejimi'; $labels['folderactions'] = 'Qovluq işləri...'; $labels['compact'] = 'Sıx'; $labels['empty'] = 'Boşalt'; -$labels['purge'] = 'Təmizlə'; $labels['quota'] = 'Disk istifadəsi'; $labels['unknown'] = 'naməlum'; $labels['unlimited'] = 'limitsiz'; @@ -167,6 +169,8 @@ $labels['addattachment'] = 'Fayl əlavə et'; $labels['charset'] = 'Kodlaşdırma'; $labels['editortype'] = 'Redaktor'; $labels['returnreceipt'] = 'Cavab sorğusu'; +$labels['dsn'] = 'Çatdırılma statusu haqda bildiriş'; +$labels['editidents'] = 'İdentifikasiyanı dəyiş'; $labels['checkspelling'] = 'Orfoqrafiyanı yoxla'; $labels['resumeediting'] = 'Redaktəni davam et'; $labels['revertto'] = 'Dəyişiklikləri ləğv et'; @@ -190,6 +194,7 @@ $labels['maxuploadsize'] = 'Faylın maksimal ölçüsü: $size'; $labels['addcc'] = 'Kopya əlavə et'; $labels['addbcc'] = 'Gizli kopya əlavə et'; $labels['addreplyto'] = 'Yönəltmə əlavə et'; +$labels['addfollowupto'] = '"İzlə" əlavə et'; $labels['mdnrequest'] = 'Məktubu göndərən onu oxuduğunuz haqda sorğu almaq istəyir. Göndərilsin?'; $labels['receiptread'] = 'Oxunulma haqda soğru'; $labels['yourmessage'] = 'Bu məktubunuzun oxunulduğu haqda sorğudur'; @@ -197,14 +202,45 @@ $labels['receiptnote'] = 'Bu sorğu yalnız qəbul edilən tərəfindən məktub $labels['name'] = 'Göstərilən ad'; $labels['firstname'] = 'Adı'; $labels['surname'] = 'Soyadı'; +$labels['middlename'] = 'Orta adı'; +$labels['nameprefix'] = 'Prefiks'; +$labels['namesuffix'] = 'Suffiks'; +$labels['nickname'] = 'Ləqəb'; +$labels['jobtitle'] = 'Vəzifə'; +$labels['department'] = 'Departament'; +$labels['gender'] = 'Cins'; +$labels['maidenname'] = 'Qız adı'; $labels['email'] = 'E-Poçt'; +$labels['phone'] = 'Telefon'; +$labels['address'] = 'Ünvan'; +$labels['street'] = 'Küçə'; +$labels['locality'] = 'Şəhər'; +$labels['zipcode'] = 'ZIP kod'; +$labels['region'] = 'Region'; +$labels['country'] = 'Ölkə'; +$labels['birthday'] = 'Ad günü'; +$labels['anniversary'] = 'İldönümü'; +$labels['website'] = 'Vebsayt'; +$labels['instantmessenger'] = 'IM'; +$labels['notes'] = 'Qeydlər'; +$labels['male'] = 'kişi'; +$labels['female'] = 'qadın'; +$labels['manager'] = 'Menecer'; +$labels['assistant'] = 'Assistent'; +$labels['spouse'] = 'Ər-arvad'; +$labels['addfield'] = 'Sahə əlavə et'; $labels['addcontact'] = 'Ünvanlara əlavə et'; $labels['editcontact'] = 'Ünvanı redaktə et'; $labels['contacts'] = 'Əlaqələr'; +$labels['contactproperties'] = 'Kontakt xüsusiyyətləri'; +$labels['personalinfo'] = 'Şəxsi məlumat'; $labels['edit'] = 'Redaktə et'; $labels['cancel'] = 'Ləğv et'; $labels['save'] = 'Saxla'; $labels['delete'] = 'Sil'; +$labels['rename'] = 'Adlandır'; +$labels['addphoto'] = 'Əlavə et'; +$labels['replacephoto'] = 'Adı dəyiş'; $labels['newcontact'] = 'Yeni ünvan kartı əlavə et'; $labels['deletecontact'] = 'Seçilmiş ünvanları sil'; $labels['composeto'] = 'Seçilmiş ünvanlara məktub yaz'; @@ -248,6 +284,7 @@ $labels['pagesize'] = 'Səhifədə sətrlər'; $labels['signature'] = 'İmza'; $labels['dstactive'] = 'Yay vaxtı'; $labels['htmleditor'] = 'HTML-də mesaj yaz'; +$labels['htmlonreply'] = 'yalnız HTML mesajlar ilə cavab'; $labels['htmlsignature'] = 'HTML imza'; $labels['previewpane'] = 'Prevyu paneli göstər'; $labels['skin'] = 'İnterfeys stili'; @@ -259,6 +296,8 @@ $labels['mailboxview'] = 'Poçt qutusunun görünüşü'; $labels['mdnrequests'] = 'Göndərilmə bildirişi'; $labels['askuser'] = 'göndərilmə zamanı istifadəçidən soruş'; $labels['autosend'] = 'avtomatik göndər'; +$labels['autosendknown'] = 'kontaktlarıma qəbz yolla. Əks halda soruş'; +$labels['autosendknownignore'] = 'kontaktlarıma qəbz yolla. Əks halda iqnor et'; $labels['ignore'] = 'iqnor'; $labels['readwhendeleted'] = 'Məktubu siləndə oxunmuş kimi qeyd et'; $labels['flagfordeletion'] = 'Silmə əvəzi silinmə işarəsilə qeyd et'; @@ -303,6 +342,9 @@ $labels['abovequote'] = 'sitatdan əvvəl'; $labels['insertsignature'] = 'İmza əlavə et'; $labels['previewpanemarkread'] = 'Baxılmış şəkilləri oxunmuş kimi qeyd et'; $labels['afternseconds'] = '$n saniyədən sonra'; +$labels['reqmdn'] = 'Hər zaman çatdırılma bildirişini istə'; +$labels['reqdsn'] = 'Hər zaman çatıdrılma haqda statusu istə'; +$labels['replysamefolder'] = 'Cavab mesajları üçün saxlanılan yer'; $labels['folder'] = 'Qovluq'; $labels['folders'] = 'Qovluqlar'; $labels['foldername'] = 'Qovluq adı'; @@ -312,6 +354,13 @@ $labels['create'] = 'Yarad'; $labels['createfolder'] = 'Yeni qovluq yarad'; $labels['managefolders'] = 'Qovluqlarla iş'; $labels['specialfolders'] = 'Xüsusi qovluqlar'; +$labels['properties'] = 'Xüsusiyyətlər'; +$labels['folderproperties'] = 'Qovluq xüsusiyyətləri'; +$labels['parentfolder'] = 'Ana qovluq'; +$labels['location'] = 'Yerləşmə'; +$labels['info'] = 'Məlumat'; +$labels['getfoldersize'] = 'Qovluq ölçüsünü öyrənmək üçün vur'; +$labels['changesubscription'] = 'Abunəni dəyişmək üçün vurun'; $labels['sortby'] = 'Çeşidlə'; $labels['sortasc'] = 'Azdan çoxa'; $labels['sortdesc'] = 'Çoxdan aza'; diff --git a/program/localization/az_AZ/messages.inc b/program/localization/az_AZ/messages.inc index dcef7c543..950be1a73 100644 --- a/program/localization/az_AZ/messages.inc +++ b/program/localization/az_AZ/messages.inc @@ -21,6 +21,9 @@ $messages['cookiesdisabled'] = 'Sizin brauzer kukiləri qəbul etmir'; $messages['sessionerror'] = 'Sizin sessiya köhnəlib'; $messages['imaperror'] = 'IMAP serverlə bağlantı alınmadı'; $messages['servererror'] = 'Server xətası!'; +$messages['servererrormsg'] = 'Server xətası: $msg'; +$messages['errorreadonly'] = 'Əməliyyatı etmək mümkün deyil. Qovluq yalnız oxunuş üçündür.'; +$messages['errornoperm'] = 'Əməliyyatı etmək mümkün deyil. Giriş qadağandır.'; $messages['invalidrequest'] = 'Səhv sorğu! Məlumat yaddaşda qalmadı.'; $messages['nomessagesfound'] = 'Poçt qutusunda məktub tapılmadı'; $messages['loggedout'] = 'Çıxış uğurlu oldu. Sağ olun!'; @@ -54,6 +57,8 @@ $messages['deletefolderconfirm'] = 'Bu qovluğu silməyə əminsiniz?'; $messages['purgefolderconfirm'] = 'Bu qovluqdakı bütün məktubları silməyə əminsiniz?'; $messages['folderdeleting'] = 'Qovluğ silinir...'; $messages['foldermoving'] = 'Qovluq köçürülür...'; +$messages['foldersubscribing'] = 'Qovluğa abunə...'; +$messages['folderunsubscribing'] = 'Qovluğa abunədən çıx...'; $messages['formincomplete'] = 'Bütün sətrlər doldurulmayıb'; $messages['noemailwarning'] = 'Lütfən, düzgün e-poçt ünvanı daxil edin'; $messages['nonamewarning'] = 'Lütfən, ad daxil edin'; @@ -73,6 +78,10 @@ $messages['searching'] = 'Axtarılır...'; $messages['checking'] = 'Yoxlanılır...'; $messages['nospellerrors'] = 'Orfoqrafik səhvlət tapılmadı'; $messages['folderdeleted'] = 'Qovluq uğurla silindi'; +$messages['foldersubscribed'] = 'Qovluq uğurla abunə oldu'; +$messages['folderunsubscribed'] = 'Qovluq uğurla abunədən çıxdı'; +$messages['folderpurged'] = 'Qovluq uğurla təmizləndi'; +$messages['folderexpunged'] = 'Qovluq uğurla sıxıldı'; $messages['deletedsuccessfully'] = 'Silindi'; $messages['converting'] = 'Məktubun formatlaşması silinir...'; $messages['messageopenerror'] = 'Məktubu serverdən yükləmək alınmır'; @@ -84,6 +93,8 @@ $messages['sourceisreadonly'] = 'Verilən ünvanlar mənbəyi yalnız oxunmaq ü $messages['errorsavingcontact'] = 'Əlaqəni ünvanda saxlamaq mümkün deyil'; $messages['movingmessage'] = 'Məktub köçürülür...'; $messages['copyingmessage'] = 'Məktub kopyalanır...'; +$messages['deletingmessage'] = 'Məktub(lar) silinir...'; +$messages['markingmessage'] = 'Məktub(lar) işarələnir...'; $messages['receiptsent'] = 'Oxunulma haqda bildiriş göndərildi'; $messages['errorsendingreceipt'] = 'Oxunulma haqda bildiriş göndərilmədi'; $messages['nodeletelastidentity'] = 'Siz bu kimliyi silə bilməzsiniz. Bu axırıncıdır. '; @@ -104,10 +115,26 @@ $messages['smtpautherror'] = 'SMTP Error ($code): İdentifikasiya xətası'; $messages['smtpfromerror'] = 'SMTP Error ($code): Göndərəni səlavə etmək mümkün deyil - "$from" ($msg)'; $messages['smtptoerror'] = 'SMTP Error ($code): Qəbul edəni əlavə etmək mümkün deyil - "$to" ($msg)'; $messages['smtprecipientserror'] = 'SMTP Error ($code): Qəbul edənlərin siyahısını emal etmək mümkün deyil'; +$messages['smtpdsnerror'] = 'SMTP xəta: çatdırılma haqda bildiriş dəstəyi yoxdur'; $messages['smtperror'] = 'SMTP Error ($code): $msg'; $messages['emailformaterror'] = 'Səhv ünvan: $email'; $messages['toomanyrecipients'] = 'Qəbul edənlər həddindən artıq çoxdur. Lütfən, $max qədər azaldın.'; $messages['maxgroupmembersreached'] = 'Qrupun ölçüsü imkan verilən maksimumdan artıqdır - $max'; $messages['internalerror'] = 'Daxili xəta baş verdi. Lütfən, bir daha cəhd edin'; +$messages['contactdelerror'] = 'Kontak(lar)ı silmək alınmadı'; +$messages['contactdeleted'] = 'Kontak(lar) uğurla silindi'; +$messages['groupdeleted'] = 'Qrup silindi'; +$messages['grouprenamed'] = 'Qrupun adı dəyişdirildi'; +$messages['groupcreated'] = 'Qrup yaradıldı'; +$messages['messagedeleted'] = 'Məktub(lar) uğurla silindi'; +$messages['messagemoved'] = 'Məktub(lar) uğurla köçürüldü'; +$messages['messagecopied'] = 'Məktub(lar) uğurla kopyalandı'; +$messages['messagemarked'] = 'Məktub(lar) uğurla işarələndi'; +$messages['autocompletechars'] = 'Avtokomplektasiya üçün $min işarə daxil edin'; +$messages['namecannotbeempty'] = 'Ad boş ola bilməz'; +$messages['nametoolong'] = 'Ad çox uzundur'; +$messages['folderupdated'] = 'Qovluq yeniləndi'; +$messages['foldercreated'] = 'Qovluq yaradıldı'; +$messages['invalidimageformat'] = 'Şəkil formatı düzgün deyil'; ?> diff --git a/program/localization/bg_BG/labels.inc b/program/localization/bg_BG/labels.inc index 14ad45aab..bca814f8e 100644 --- a/program/localization/bg_BG/labels.inc +++ b/program/localization/bg_BG/labels.inc @@ -45,9 +45,6 @@ $labels['size'] = 'Размер'; $labels['priority'] = 'Приоритет'; $labels['organization'] = 'Организация'; $labels['readstatus'] = 'Статут (прочетено/непрочетено)'; -$labels['reply-to'] = 'Отговор до'; -$labels['mail-reply-to'] = 'Отговор към'; -$labels['mail-followup-to'] = 'Препращане към'; $labels['mailboxlist'] = 'Папки'; $labels['messagesfromto'] = 'Съобщения $from до $to от $count'; $labels['threadsfromto'] = 'Съобщения $from до $to от $count'; @@ -158,7 +155,6 @@ $labels['listmode'] = 'Кратък списък'; $labels['folderactions'] = 'Десйтвия за папки...'; $labels['compact'] = 'Свий'; $labels['empty'] = 'Изпразни'; -$labels['purge'] = 'Изчисти'; $labels['quota'] = 'Използвано място'; $labels['unknown'] = 'няма информация'; $labels['unlimited'] = 'няма ограничение'; @@ -209,15 +205,45 @@ $labels['receiptnote'] = 'Забележка: Тази разписка потв $labels['name'] = 'Кратко име'; $labels['firstname'] = 'Име'; $labels['surname'] = 'Фамилия'; +$labels['middlename'] = 'Презиме'; +$labels['nameprefix'] = 'Представка (Титла)'; +$labels['namesuffix'] = 'Наставка (Титла)'; +$labels['nickname'] = 'Прякор'; +$labels['jobtitle'] = 'Длъжност'; +$labels['department'] = 'Отдел'; +$labels['gender'] = 'Пол'; +$labels['maidenname'] = 'Бащино име'; $labels['email'] = 'E-Mail'; +$labels['phone'] = 'Телефон'; +$labels['address'] = 'Адрес'; +$labels['street'] = 'Улица'; +$labels['locality'] = 'Град'; +$labels['zipcode'] = 'Пощенски код'; +$labels['region'] = 'Област'; +$labels['country'] = 'Държава'; +$labels['birthday'] = 'Рожден ден'; +$labels['anniversary'] = 'Годишнина'; +$labels['website'] = 'Уебсайт'; +$labels['instantmessenger'] = 'IM'; +$labels['notes'] = 'Бележки'; +$labels['male'] = 'Мъж'; +$labels['female'] = 'Жена'; +$labels['manager'] = 'Мениджър'; +$labels['assistant'] = 'Асистент'; +$labels['spouse'] = 'Съпруг (а)'; +$labels['addfield'] = 'Добави поле'; $labels['addcontact'] = 'Добави'; $labels['editcontact'] = 'Редактирай'; $labels['contacts'] = 'Контакти'; $labels['contactproperties'] = 'Свойства на контакт'; +$labels['personalinfo'] = 'Лична информация'; $labels['edit'] = 'Редактирай'; $labels['cancel'] = 'Отказ'; $labels['save'] = 'Запиши'; $labels['delete'] = 'Изтрий'; +$labels['rename'] = 'Преименувай'; +$labels['addphoto'] = 'Добави'; +$labels['replacephoto'] = 'Замени'; $labels['newcontact'] = 'Нов контакт'; $labels['deletecontact'] = 'Изтрий маркираните контакти'; $labels['composeto'] = 'Напиши писмо до'; @@ -279,7 +305,7 @@ $labels['ignore'] = 'Отхвърли'; $labels['readwhendeleted'] = 'Отбележи като прочетено при изтриване'; $labels['flagfordeletion'] = 'Отбележи съобщението за изтриване'; $labels['skipdeleted'] = 'Не показвай изтритите съобщения'; -$labels['deletealways'] = 'При неуспешн преместване на съобщение в Кошчето, да се изтрие'; +$labels['deletealways'] = 'При неуспешно преместване на съобщение в Кошчето, да се изтрие'; $labels['showremoteimages'] = 'Покажи блокираните изображения'; $labels['fromknownsenders'] = 'Oт познати изпращачи'; $labels['always'] = 'Винаги'; @@ -321,6 +347,7 @@ $labels['previewpanemarkread'] = 'Маркиране на прегледанит $labels['afternseconds'] = 'след $n секунди'; $labels['reqmdn'] = 'Винаги връщай обратна разписка'; $labels['reqdsn'] = 'Винаги изисквай отговор при доставка на съобщение'; +$labels['replysamefolder'] = 'Постави отговора в папката на съобщението, на което се отговаря'; $labels['folder'] = 'Папка'; $labels['folders'] = 'Папки'; $labels['foldername'] = 'Име на папката'; @@ -330,6 +357,13 @@ $labels['create'] = 'Създай'; $labels['createfolder'] = 'Направи нова папка'; $labels['managefolders'] = 'Настройки на папките'; $labels['specialfolders'] = 'Служебни папки'; +$labels['properties'] = 'Свойства'; +$labels['folderproperties'] = 'Свойства на папката'; +$labels['parentfolder'] = 'Родителска папка'; +$labels['location'] = 'Местоположение'; +$labels['info'] = 'Информация'; +$labels['getfoldersize'] = 'Щракни за големина на папката'; +$labels['changesubscription'] = 'Щракни за промяна на абонамент'; $labels['sortby'] = 'Сортирай по'; $labels['sortasc'] = 'Сортирай възходящо'; $labels['sortdesc'] = 'Сортирай низходящо'; diff --git a/program/localization/bg_BG/messages.inc b/program/localization/bg_BG/messages.inc index c5bc90f9e..5777b3b6d 100644 --- a/program/localization/bg_BG/messages.inc +++ b/program/localization/bg_BG/messages.inc @@ -25,6 +25,8 @@ $messages['sessionerror'] = 'Невалидна или изтекла сесия $messages['imaperror'] = 'Неуспешно свързване към IMAP сървъра'; $messages['servererror'] = 'Грешка!'; $messages['servererrormsg'] = 'Сървърна грешка: $msg'; +$messages['errorreadonly'] = 'Операцията не може да бъде изпълнена. Папката е с права само за четене'; +$messages['errornoperm'] = 'Операцията не може да бъде изпълнена. Отказани права за достъп'; $messages['invalidrequest'] = 'Невалидна заявка! Данните не са съхранени.'; $messages['nomessagesfound'] = 'Няма съобщения'; $messages['loggedout'] = 'Довиждане!'; @@ -58,6 +60,8 @@ $messages['deletefolderconfirm'] = 'Искате ли да изтриете та $messages['purgefolderconfirm'] = 'Искате ли да изтриете всички писма в тази папка?'; $messages['folderdeleting'] = 'Изтриване на папка...'; $messages['foldermoving'] = 'Преместване на папка...'; +$messages['foldersubscribing'] = 'Абониране...'; +$messages['folderunsubscribing'] = 'Отписване на папка...'; $messages['formincomplete'] = 'Не сте попълнили всички полета'; $messages['noemailwarning'] = 'Моля, въведете валиден e-mail адрес'; $messages['nonamewarning'] = 'Моля, въведете име'; @@ -77,6 +81,10 @@ $messages['searching'] = 'Търсене...'; $messages['checking'] = 'Проверка...'; $messages['nospellerrors'] = 'Не са открити правописни грешки'; $messages['folderdeleted'] = 'Папката е изтрита'; +$messages['foldersubscribed'] = 'Абонирането успешно'; +$messages['folderunsubscribed'] = 'Отписването успешно'; +$messages['folderpurged'] = 'Папката е изпразнена'; +$messages['folderexpunged'] = 'Уплътняването успешно'; $messages['deletedsuccessfully'] = 'Изтриването е успешно'; $messages['converting'] = 'Премахване форматирането на писмото...'; $messages['messageopenerror'] = 'Писмото не може да бъде заредено от сървъра'; @@ -126,5 +134,10 @@ $messages['messagemoved'] = 'Съобщението беше преместен $messages['messagecopied'] = 'Съобщението беше копирано'; $messages['messagemarked'] = 'Съобщението беше маркирано'; $messages['autocompletechars'] = 'Въведете минимум $min знака, за да започне автоматичното попълване'; +$messages['namecannotbeempty'] = 'Полето за име не може да бъде празно'; +$messages['nametoolong'] = 'Името е прекалено дълго'; +$messages['folderupdated'] = 'Папката е обновена'; +$messages['foldercreated'] = 'Папката е създадена'; +$messages['invalidimageformat'] = 'Невалиден формат на изображението'; ?> diff --git a/program/localization/da_DK/labels.inc b/program/localization/da_DK/labels.inc index 3aa1ae44d..53934f7cf 100644 --- a/program/localization/da_DK/labels.inc +++ b/program/localization/da_DK/labels.inc @@ -39,11 +39,12 @@ $labels['to'] = 'Modtager'; $labels['cc'] = 'Kopi til'; $labels['bcc'] = 'BCC'; $labels['replyto'] = 'Svar til'; +$labels['followupto'] = 'Følg-op til'; $labels['date'] = 'Dato'; $labels['size'] = 'Størrelse'; $labels['priority'] = 'Prioritet'; $labels['organization'] = 'Organisation'; -$labels['reply-to'] = 'Svar til'; +$labels['readstatus'] = 'Læst status'; $labels['mailboxlist'] = 'Mapper'; $labels['messagesfromto'] = 'Besked $from til $to af $count'; $labels['threadsfromto'] = 'Tråd $from til $to af $count'; @@ -98,6 +99,8 @@ $labels['checkmail'] = 'Se efter nye beskeder'; $labels['writenewmessage'] = 'Skriv en ny besked'; $labels['replytomessage'] = 'Svar på denne besked'; $labels['replytoallmessage'] = 'Svar til alle modtagere'; +$labels['replyall'] = 'Svar alle'; +$labels['replylist'] = 'Svar til listen'; $labels['forwardmessage'] = 'Videresend denne besked'; $labels['deletemessage'] = 'Slet besked'; $labels['movemessagetotrash'] = 'Flyt besked til skrald'; @@ -149,14 +152,15 @@ $labels['listcolumns'] = 'Vist kolonne'; $labels['listsorting'] = 'Sorterings kolonne'; $labels['listorder'] = 'Sorter efter'; $labels['listmode'] = 'Listevisningsmode'; +$labels['folderactions'] = 'Mappe handlinger...'; $labels['compact'] = 'Ryd op'; $labels['empty'] = 'Tøm'; -$labels['purge'] = 'Udrens'; $labels['quota'] = 'Disk forbrug'; $labels['unknown'] = 'ukendt'; $labels['unlimited'] = 'ubegrænset'; $labels['quicksearch'] = 'Hurtigsøgning'; $labels['resetsearch'] = 'Nulstil søgning'; +$labels['searchmod'] = 'Søgeparametere'; $labels['msgtext'] = 'Hele beskeden'; $labels['openinextwin'] = 'Åbn i nyt vindue'; $labels['emlsave'] = 'Download (.eml)'; @@ -168,12 +172,15 @@ $labels['addattachment'] = 'Vedhæft en fil'; $labels['charset'] = 'Tegnsæt'; $labels['editortype'] = 'Tekstbehandler'; $labels['returnreceipt'] = 'Anmod om kvittering'; +$labels['dsn'] = 'Notifikation om leveringstatus'; +$labels['editidents'] = 'Ret identiteter'; $labels['checkspelling'] = 'Stavekontrol'; $labels['resumeediting'] = 'Genoptag redigering'; $labels['revertto'] = 'Vend tilbage til'; $labels['attachments'] = 'Vedhæftninger'; $labels['upload'] = 'Upload'; $labels['close'] = 'Luk'; +$labels['messageoptions'] = 'Besked muligheder...'; $labels['low'] = 'Lav'; $labels['lowest'] = 'Lavest'; $labels['normal'] = 'Normal'; @@ -190,6 +197,7 @@ $labels['maxuploadsize'] = 'Maksimale tilladte filstørrelse er $size'; $labels['addcc'] = 'Tilføj Cc'; $labels['addbcc'] = 'Tilføj Bcc'; $labels['addreplyto'] = 'Tilføj Svar-Til adresse'; +$labels['addfollowupto'] = 'Tilføj følg-op adresse'; $labels['mdnrequest'] = 'Afsenderen af denne besked har bedt om at modtage en bekræftelse når du læser beskeden. Vil du sende kvittering for læsning?'; $labels['receiptread'] = 'Send kvittering for læsning'; $labels['yourmessage'] = 'Dette er en kvittering for at din besked er blevet vist'; @@ -197,13 +205,42 @@ $labels['receiptnote'] = 'Bemærk: Denne kvittering bekræfter udelukkende at be $labels['name'] = 'Vist navn'; $labels['firstname'] = 'Fornavn'; $labels['surname'] = 'Efternavn'; +$labels['middlename'] = 'Mellemnavn'; +$labels['nickname'] = 'Alias/Kaldenavn'; +$labels['jobtitle'] = 'Job titel'; +$labels['department'] = 'Afdeling'; +$labels['gender'] = 'Køn'; +$labels['maidenname'] = 'Pigenavn'; $labels['email'] = 'E-mail'; +$labels['phone'] = 'Telefon'; +$labels['address'] = 'Adresse'; +$labels['street'] = 'Vejnavn'; +$labels['locality'] = 'By'; +$labels['zipcode'] = 'Postnr.'; +$labels['region'] = 'Område/region'; +$labels['country'] = 'Land'; +$labels['birthday'] = 'Fødselsdag'; +$labels['anniversary'] = 'Jubilæum'; +$labels['website'] = 'Hjemmeside'; +$labels['instantmessenger'] = 'IM'; +$labels['notes'] = 'Noter'; +$labels['male'] = 'Mand'; +$labels['female'] = 'Kvinde'; +$labels['manager'] = 'Manager'; +$labels['assistant'] = 'Assistent'; +$labels['spouse'] = 'Ægtefælle'; +$labels['addfield'] = 'Tilføj felt...'; $labels['addcontact'] = 'Tilføj en ny kontakt'; $labels['editcontact'] = 'Redigér kontakt'; +$labels['contacts'] = 'Kontakter'; +$labels['contactproperties'] = 'Kontakt egenskaber'; $labels['edit'] = 'Redigér'; $labels['cancel'] = 'Afbryd'; $labels['save'] = 'Gem'; $labels['delete'] = 'Slet'; +$labels['rename'] = 'Omdøb'; +$labels['addphoto'] = 'Tilføj'; +$labels['replacephoto'] = 'Erstat'; $labels['newcontact'] = 'Opret nyt kontaktkort'; $labels['deletecontact'] = 'Slet valgte kontakter'; $labels['composeto'] = 'Skriv brev til'; @@ -247,6 +284,7 @@ $labels['pagesize'] = 'Rækker per side'; $labels['signature'] = 'Signatur'; $labels['dstactive'] = 'Sommertid'; $labels['htmleditor'] = 'Skriv HTML-besked'; +$labels['htmlonreply'] = 'kun når jeg besvarer HTML-beskeder'; $labels['htmlsignature'] = 'HTML-signatur'; $labels['previewpane'] = 'Forhåndsvisning'; $labels['skin'] = 'Interface skin'; @@ -258,6 +296,8 @@ $labels['mailboxview'] = 'Mailbox visning'; $labels['mdnrequests'] = 'Kvitteringer'; $labels['askuser'] = 'spørg brugeren'; $labels['autosend'] = 'send automatisk'; +$labels['autosendknown'] = 'send automatisk til mine kontakter, ellers spørg mig'; +$labels['autosendknownignore'] = 'send automatisk til mine kontakter, ellers ignorér'; $labels['ignore'] = 'ignorér'; $labels['readwhendeleted'] = 'Markér beskeden som læst ved sletning'; $labels['flagfordeletion'] = 'Markér beskeden til sletning istedet for at slette'; @@ -302,6 +342,9 @@ $labels['abovequote'] = 'over det citerede'; $labels['insertsignature'] = 'Indsæt signatur'; $labels['previewpanemarkread'] = 'Markér forhåndsviste beskeder som læst'; $labels['afternseconds'] = 'efter $n sekunder'; +$labels['reqmdn'] = 'Bed altid om at få besked om læsning'; +$labels['reqdsn'] = 'Bed altid om at få en status på levering'; +$labels['replysamefolder'] = 'Placer svar til en besked i samme mappe som beskeden der besvares'; $labels['folder'] = 'Mappe'; $labels['folders'] = 'Mapper'; $labels['foldername'] = 'Mappenavn'; @@ -311,6 +354,13 @@ $labels['create'] = 'Opret'; $labels['createfolder'] = 'Opret ny mappe'; $labels['managefolders'] = 'Administrér mapper'; $labels['specialfolders'] = 'Specielle mapper'; +$labels['properties'] = 'Egenskaber'; +$labels['folderproperties'] = 'Mappe egenskaber'; +$labels['parentfolder'] = 'Mappe et niveau op'; +$labels['location'] = 'Placering'; +$labels['info'] = 'Information'; +$labels['getfoldersize'] = 'Klik for at hente mappestørrelse'; +$labels['changesubscription'] = 'Klik for at ændre abonnement'; $labels['sortby'] = 'Sortér efter'; $labels['sortasc'] = 'Ældste først'; $labels['sortdesc'] = 'Nyeste først'; diff --git a/program/localization/da_DK/messages.inc b/program/localization/da_DK/messages.inc index 74d70b78e..b4bf3db95 100644 --- a/program/localization/da_DK/messages.inc +++ b/program/localization/da_DK/messages.inc @@ -24,6 +24,9 @@ $messages['cookiesdisabled'] = 'Din browser accepterer ikke cookies'; $messages['sessionerror'] = 'Din session er ugyldig eller udløbet'; $messages['imaperror'] = 'Forbindelse til IMAP serveren fejlede'; $messages['servererror'] = 'Server fejl!'; +$messages['servererrormsg'] = 'Server fejl: $msg'; +$messages['errorreadonly'] = 'Kunne ikke udføre den ønskede handling. Mappen er skrivebeskyttet'; +$messages['errornoperm'] = 'Kunne ikke udføre den ønskede handling. Adgang nægtet'; $messages['invalidrequest'] = 'Ugyldig forespørgsel! Ingen data blev gemt.'; $messages['nomessagesfound'] = 'Der blev ikke fundet nogen beskeder i denne postkasse'; $messages['loggedout'] = 'Du er nu logget af webmail. Farvel så længe!'; @@ -57,6 +60,8 @@ $messages['deletefolderconfirm'] = 'Vil du virkelig slette den valgte mappe'; $messages['purgefolderconfirm'] = 'Vil du virkelig slette alle beskeder i denne mappe?'; $messages['folderdeleting'] = 'Sletter mappen...'; $messages['foldermoving'] = 'Flytter mappen...'; +$messages['foldersubscribing'] = 'Abonnere på mappen...'; +$messages['folderunsubscribing'] = 'Fjerner abonnement på mappen...'; $messages['formincomplete'] = 'Formularen var ikke fuldstændig fyldt ud'; $messages['noemailwarning'] = 'Indtast venligst en gyldig e-mail adresse'; $messages['nonamewarning'] = 'Angiv venligst et navn'; @@ -76,6 +81,10 @@ $messages['searching'] = 'Søger...'; $messages['checking'] = 'Tjekker...'; $messages['nospellerrors'] = 'Ingen stavefejl fundet'; $messages['folderdeleted'] = 'Mappen er slettet'; +$messages['foldersubscribed'] = 'Mappe abonnement oprettet'; +$messages['folderunsubscribed'] = 'Mappe abonnement opsagt'; +$messages['folderpurged'] = 'Mappen er tømt'; +$messages['folderexpunged'] = 'Mappen er blevet optimeret'; $messages['deletedsuccessfully'] = 'Slettet'; $messages['converting'] = 'Fjerner formatering fra besked...'; $messages['messageopenerror'] = 'Beskeden kunne ikke hentes fra serveren'; @@ -87,6 +96,8 @@ $messages['sourceisreadonly'] = 'Denne adressekilde er kun til læsning'; $messages['errorsavingcontact'] = 'Kunne ikke gemme kontakt adressen'; $messages['movingmessage'] = 'Flytter besked...'; $messages['copyingmessage'] = 'Kopierer besked...'; +$messages['deletingmessage'] = 'Sletter besked(er)...'; +$messages['markingmessage'] = 'Markerer besked(er)...'; $messages['receiptsent'] = 'Kvittering for læsning er sendt'; $messages['errorsendingreceipt'] = 'Kvitteringen kunne ikke sendes'; $messages['nodeletelastidentity'] = 'Du kan ikke slette denne identitet, da det er den eneste der er tilbage.'; @@ -107,9 +118,26 @@ $messages['smtpautherror'] = 'SMTP fejl ($code): Autenticering fejlede'; $messages['smtpfromerror'] = 'SMTP fejl ($code): Kunne ikke afsende som "$from" ($msg)'; $messages['smtptoerror'] = 'SMTP fejl ($code): Kunne ikke tilføje modtageren "$to" ($msg)'; $messages['smtprecipientserror'] = 'SMTP fejl: kan ikke fortolke listen af modtagere'; +$messages['smtpdsnerror'] = 'SMTP fejl: Ingen understøttelse af leveringsnotifikation'; $messages['smtperror'] = 'SMTP fejl: $msg'; $messages['emailformaterror'] = 'Ugyldig email-adresse: $email'; $messages['toomanyrecipients'] = 'For mange modtagere. Reducer antallet af modtagere til $max'; $messages['maxgroupmembersreached'] = 'Antallet af gruppemedlemmer overstiger maksimum på $max'; +$messages['internalerror'] = 'Der opstod en intern fejl - prøv venligst igen'; +$messages['contactdelerror'] = 'Kunne ikke slette kontakt(er)'; +$messages['contactdeleted'] = 'Kontakt(er) slettet'; +$messages['groupdeleted'] = 'Gruppen er slettet'; +$messages['grouprenamed'] = 'Gruppen er omdøbt'; +$messages['groupcreated'] = 'Gruppen er oprettet'; +$messages['messagedeleted'] = 'Besked(er) slettet'; +$messages['messagemoved'] = 'Besked(er) flyttet'; +$messages['messagecopied'] = 'Besked(er) kopieret'; +$messages['messagemarked'] = 'Besked(er) markeret'; +$messages['autocompletechars'] = 'Du skal min. indtaste $min for at benytte autoopslag'; +$messages['namecannotbeempty'] = 'Navnet kan ikke været tomt'; +$messages['nametoolong'] = 'Navnet er for langt'; +$messages['folderupdated'] = 'Mappen er opdateret'; +$messages['foldercreated'] = 'Mappen er oprettet'; +$messages['invalidimageformat'] = 'Ikke et gyldigt billedformat'; ?> diff --git a/program/localization/de_DE/labels.inc b/program/localization/de_DE/labels.inc index 262127cf4..c88508cfd 100644 --- a/program/localization/de_DE/labels.inc +++ b/program/localization/de_DE/labels.inc @@ -44,9 +44,6 @@ $labels['size'] = 'Größe'; $labels['priority'] = 'Priorität'; $labels['organization'] = 'Organisation'; $labels['readstatus'] = 'Gelesen/Ungelesen'; -$labels['reply-to'] = 'Antwort an'; -$labels['mail-reply-to'] = 'Mail-Reply-To'; -$labels['mail-followup-to'] = 'Mail-Followup-To'; $labels['mailboxlist'] = 'Ordner'; $labels['messagesfromto'] = 'Nachrichten $from bis $to von $count'; $labels['threadsfromto'] = 'Konversationen $from bis $to von $count'; @@ -157,7 +154,6 @@ $labels['listmode'] = 'Anzeigemodus'; $labels['folderactions'] = 'Ordneraktionen...'; $labels['compact'] = 'Packen'; $labels['empty'] = 'Leeren'; -$labels['purge'] = 'Bereinigen'; $labels['quota'] = 'Speicherplatz'; $labels['unknown'] = 'unbekannt'; $labels['unlimited'] = 'unbegrenzt'; @@ -208,15 +204,45 @@ $labels['receiptnote'] = 'Hinweis: Der Empfänger hat den Empfang der Nachricht $labels['name'] = 'Angezeigter Name'; $labels['firstname'] = 'Vorname'; $labels['surname'] = 'Nachname'; +$labels['middlename'] = 'zweiter Vorname'; +$labels['nameprefix'] = 'Anrede'; +$labels['namesuffix'] = 'Namenszusatz'; +$labels['nickname'] = 'Spitzname'; +$labels['jobtitle'] = 'Berufsbezeichnung'; +$labels['department'] = 'Firma'; +$labels['gender'] = 'Geschlecht'; +$labels['maidenname'] = 'Mädchenname'; $labels['email'] = 'E-Mail'; +$labels['phone'] = 'Telefon'; +$labels['address'] = 'Adresse'; +$labels['street'] = 'Straße'; +$labels['locality'] = 'Ort'; +$labels['zipcode'] = 'PLZ'; +$labels['region'] = 'Region'; +$labels['country'] = 'Land'; +$labels['birthday'] = 'Geburtstag'; +$labels['anniversary'] = 'Jahrestag'; +$labels['website'] = 'Webseite'; +$labels['instantmessenger'] = 'IM-Adresse'; +$labels['notes'] = 'Notizen'; +$labels['male'] = 'männlich'; +$labels['female'] = 'weiblich'; +$labels['manager'] = 'Vorgesetze(r)'; +$labels['assistant'] = 'Assistent'; +$labels['spouse'] = 'Partner/in'; +$labels['addfield'] = 'Feld hinzufügen...'; $labels['addcontact'] = 'Kontakt hinzufügen'; $labels['editcontact'] = 'Kontakt bearbeiten'; $labels['contacts'] = 'Kontakte'; $labels['contactproperties'] = 'Kontaktdaten'; +$labels['personalinfo'] = 'Persönliche Informationen'; $labels['edit'] = 'Bearbeiten'; $labels['cancel'] = 'Abbrechen'; $labels['save'] = 'Speichern'; $labels['delete'] = 'Löschen'; +$labels['rename'] = 'umbenennen'; +$labels['addphoto'] = 'Kontaktbild hinzufügen'; +$labels['replacephoto'] = 'Bild ändern'; $labels['newcontact'] = 'Neuen Kontakt erstellen'; $labels['deletecontact'] = 'Gewählte Kontakte löschen'; $labels['composeto'] = 'Nachricht verfassen'; diff --git a/program/localization/de_DE/messages.inc b/program/localization/de_DE/messages.inc index 47e4e017d..1d63591c3 100644 --- a/program/localization/de_DE/messages.inc +++ b/program/localization/de_DE/messages.inc @@ -24,6 +24,8 @@ $messages['sessionerror'] = 'Ihre Session ist ungültig oder abgelaufen'; $messages['imaperror'] = 'Keine Verbindung zum IMAP-Server'; $messages['servererror'] = 'Serverfehler!'; $messages['servererrormsg'] = 'Serverfehler: $msg'; +$messages['errorreadonly'] = 'Die Aktion nicht ausgeführt werden. Der Ordner ist schreibgeschützt.'; +$messages['errornoperm'] = 'Die Aktion nicht ausgeführt werden. Zugriff verweigert.'; $messages['invalidrequest'] = 'Ungültige Anfrage! Es wurden keine Daten gespeichert.'; $messages['nomessagesfound'] = 'Keine Nachrichten in diesem Ordner'; $messages['loggedout'] = 'Sie haben Ihre Session erfolgreich beendet. Auf Wiedersehen!'; @@ -135,7 +137,6 @@ $messages['namecannotbeempty'] = 'Der Name darf nicht leer sein'; $messages['nametoolong'] = 'Der Name ist zu lang'; $messages['folderupdated'] = 'Der Ordner wurde erfolgreich aktualisiert'; $messages['foldercreated'] = 'Der Ordner wurde erfolgreich erstellt'; -$messages['errorreadonly'] = 'Die Aktion nicht ausgeführt werden. Der Ordner ist schreibgeschützt.'; -$messages['errornoperm'] = 'Die Aktion nicht ausgeführt werden. Zugriff verweigert.'; +$messages['invalidimageformat'] = 'Kein gültiges Bildformat'; ?> diff --git a/program/localization/fr_FR/labels.inc b/program/localization/fr_FR/labels.inc index a3e4bc01d..4430de619 100644 --- a/program/localization/fr_FR/labels.inc +++ b/program/localization/fr_FR/labels.inc @@ -40,12 +40,12 @@ $labels['to'] = 'À'; $labels['cc'] = 'Cc'; $labels['bcc'] = 'Cci'; $labels['replyto'] = 'Répondre à'; +$labels['followupto'] = 'Faire suivre à'; $labels['date'] = 'Date'; $labels['size'] = 'Taille'; $labels['priority'] = 'Priorité'; $labels['organization'] = 'Organisation'; $labels['readstatus'] = 'Status de lecture'; -$labels['reply-to'] = 'Répondre à'; $labels['mailboxlist'] = 'Dossiers'; $labels['messagesfromto'] = 'Messages de $from à $to sur $count'; $labels['threadsfromto'] = 'Fil de $from à $to sur $count'; @@ -156,7 +156,6 @@ $labels['listmode'] = 'Mode d\'affichage de la liste'; $labels['folderactions'] = 'Actions du dossier'; $labels['compact'] = 'Compacter'; $labels['empty'] = 'Vider'; -$labels['purge'] = 'Purger'; $labels['quota'] = 'Occupation disque'; $labels['unknown'] = 'inconnue'; $labels['unlimited'] = 'illimitée'; @@ -199,6 +198,7 @@ $labels['maxuploadsize'] = 'La taille maximum autorisée pour un fichier est $si $labels['addcc'] = 'Ajouter Cc'; $labels['addbcc'] = 'Ajouter Cci'; $labels['addreplyto'] = 'Ajouter Répondre à'; +$labels['addfollowupto'] = 'Ajouter Faire suivre à'; $labels['mdnrequest'] = 'L\'expéditeur de ce message a demandé d\'être prévenu quand vous lirez ce message. Souhaitez-vous prévenir l\'expéditeur ?'; $labels['receiptread'] = 'Accusé de réception (lu)'; $labels['yourmessage'] = 'Ceci est un accusé de réception pour votre message'; @@ -215,6 +215,7 @@ $labels['edit'] = 'Modifier'; $labels['cancel'] = 'Annuler'; $labels['save'] = 'Sauvegarder'; $labels['delete'] = 'Supprimer'; +$labels['rename'] = 'Renommer'; $labels['newcontact'] = 'Créer un nouveau contact'; $labels['deletecontact'] = 'Supprimer les contacts sélectionnés'; $labels['composeto'] = 'Écrire un message à'; diff --git a/program/localization/fr_FR/messages.inc b/program/localization/fr_FR/messages.inc index 66239486e..dd91a7a37 100644 --- a/program/localization/fr_FR/messages.inc +++ b/program/localization/fr_FR/messages.inc @@ -26,6 +26,8 @@ $messages['sessionerror'] = 'Votre session est invalide ou a expiré'; $messages['imaperror'] = 'Erreur de connexion au serveur IMAP'; $messages['servererror'] = 'Erreur Serveur !'; $messages['servererrormsg'] = 'Erreur du serveur: $msg'; +$messages['errorreadonly'] = 'Impossible d\'effectuer cette opération. Le dossier est en lecture seule'; +$messages['errornoperm'] = 'Impossible d\'effectuer cette opération. Permission refusée'; $messages['invalidrequest'] = 'Requête invalide ! Aucune donnée n\'a été sauvegardée.'; $messages['nomessagesfound'] = 'Aucun message trouvé dans cette boîte aux lettres'; $messages['loggedout'] = 'Vous venez de vous déconnecter avec succès. Au revoir !'; @@ -59,6 +61,8 @@ $messages['deletefolderconfirm'] = 'Voulez-vous vraiment effacer ce dossier ?'; $messages['purgefolderconfirm'] = 'Voulez-vous vraiment effacer tous les messages de ce dossier ?'; $messages['folderdeleting'] = 'Suppression du dossier...'; $messages['foldermoving'] = 'Déplacement du dossier...'; +$messages['foldersubscribing'] = 'Inscription du dossier...'; +$messages['folderunsubscribing'] = 'Désinscription du dossier...'; $messages['formincomplete'] = 'Le formulaire n\'a pas été entièrement rempli'; $messages['noemailwarning'] = 'Veuillez spécifier un courriel valide'; $messages['nonamewarning'] = 'Veuillez fournir un nom'; @@ -78,6 +82,10 @@ $messages['searching'] = 'En cours de recherche...'; $messages['checking'] = 'Vérification...'; $messages['nospellerrors'] = 'Aucune faute trouvée'; $messages['folderdeleted'] = 'Dossier effacé'; +$messages['foldersubscribed'] = 'Le dossier a bien été inscrit'; +$messages['folderunsubscribed'] = 'Le dossier a bien été désinscrit'; +$messages['folderpurged'] = 'Le dossier a bien été vidé'; +$messages['folderexpunged'] = 'Le dossier a bien été comptacté'; $messages['deletedsuccessfully'] = 'Supprimé(s) avec succès'; $messages['converting'] = 'Suppression de la mise en forme...'; $messages['messageopenerror'] = 'Impossible de charger le message depuis serveur'; @@ -127,5 +135,9 @@ $messages['messagemoved'] = 'Les messages ont bien été déplacés'; $messages['messagecopied'] = 'Les messages ont bien été copiés'; $messages['messagemarked'] = 'Les messages ont bien été marqués'; $messages['autocompletechars'] = 'Entrez au moins $min caractères pour l\'auto-complétion'; +$messages['namecannotbeempty'] = 'Le nom ne peut pas être vide'; +$messages['nametoolong'] = 'Le nom est trop long'; +$messages['folderupdated'] = 'Le dossier a bien été mis à jour'; +$messages['foldercreated'] = 'Le dossier a bien été créé'; ?> diff --git a/program/localization/he_IL/labels.inc b/program/localization/he_IL/labels.inc index 61f27f769..02ea0cf30 100644 --- a/program/localization/he_IL/labels.inc +++ b/program/localization/he_IL/labels.inc @@ -152,7 +152,6 @@ $labels['listmode'] = 'אופן הצגת רשימה'; $labels['folderactions'] = 'פעולות על תיקים'; $labels['compact'] = 'פינוי שטח לא מנוצל'; $labels['empty'] = 'ריקון'; -$labels['purge'] = 'מחיקה'; $labels['quota'] = 'ניצול קיבולת'; $labels['unknown'] = 'לא ידוע'; $labels['unlimited'] = 'ללא הגבלה'; @@ -203,15 +202,45 @@ $labels['receiptnote'] = 'הערה: האישור אינו מבטיח שהנמע $labels['name'] = 'שם להצגה'; $labels['firstname'] = 'שם פרטי'; $labels['surname'] = 'שם משפחה'; +$labels['middlename'] = 'שם אמצעי'; +$labels['nameprefix'] = 'קידומת'; +$labels['namesuffix'] = 'סיומת'; +$labels['nickname'] = 'שם חיבה'; +$labels['jobtitle'] = 'תפקיד באירגון'; +$labels['department'] = 'מחלקה'; +$labels['gender'] = 'מגדר'; +$labels['maidenname'] = 'שם משפחה לפני נישואין'; $labels['email'] = 'כתובת דוא"ל'; +$labels['phone'] = 'מספר טלפון'; +$labels['address'] = 'כתובת'; +$labels['street'] = 'רחוב'; +$labels['locality'] = 'עיר'; +$labels['zipcode'] = 'מיקוד'; +$labels['region'] = 'אישור'; +$labels['country'] = 'מדינה'; +$labels['birthday'] = 'יום הולדת'; +$labels['anniversary'] = 'יום נישואין'; +$labels['website'] = 'אתר אינטרנט'; +$labels['instantmessenger'] = 'כינוי בצ\'ט'; +$labels['notes'] = 'הערות'; +$labels['male'] = 'זכר'; +$labels['female'] = 'נקבה'; +$labels['manager'] = 'מנהל/ת'; +$labels['assistant'] = 'עוזר/ת'; +$labels['spouse'] = 'בן/בת זוג'; +$labels['addfield'] = 'הוסף שדה'; $labels['addcontact'] = 'הוספת איש קשר'; $labels['editcontact'] = 'עריכת איש קשר'; $labels['contacts'] = 'אנשי קשר'; $labels['contactproperties'] = 'מאפייני איש קשר'; +$labels['personalinfo'] = 'מידע אישי'; $labels['edit'] = 'עריכה'; $labels['cancel'] = 'ביטול'; $labels['save'] = 'שמירה'; $labels['delete'] = 'מחיקה'; +$labels['rename'] = 'שינוי שם'; +$labels['addphoto'] = 'הוספה'; +$labels['replacephoto'] = 'החלפה'; $labels['newcontact'] = 'איש קשר חדש'; $labels['deletecontact'] = 'מחיקת אנשי קשר מסומנים'; $labels['composeto'] = 'יצירת הודעה אל'; diff --git a/program/localization/he_IL/messages.inc b/program/localization/he_IL/messages.inc index 9dd3c872b..000fcb957 100644 --- a/program/localization/he_IL/messages.inc +++ b/program/localization/he_IL/messages.inc @@ -136,5 +136,6 @@ $messages['namecannotbeempty'] = 'השם אינו יכול להיות ריק'; $messages['nametoolong'] = 'השם ארוך מדי'; $messages['folderupdated'] = 'התיק עודכן בהצלחה'; $messages['foldercreated'] = 'התיק נוצר בהצלחה'; +$messages['invalidimageformat'] = 'פורמט תמונה לא חוקי'; ?> diff --git a/program/localization/hu_HU/labels.inc b/program/localization/hu_HU/labels.inc index f5622a72a..7b0bac72b 100644 --- a/program/localization/hu_HU/labels.inc +++ b/program/localization/hu_HU/labels.inc @@ -49,7 +49,7 @@ $labels['readstatus'] = 'Olvasott'; $labels['mailboxlist'] = 'Mappák'; $labels['messagesfromto'] = 'Üzenetek: $from - $to / $count'; $labels['threadsfromto'] = 'Témák ($from - $to, összesen $count)'; -$labels['messagenrof'] = '$nr / $coun t üzenet'; +$labels['messagenrof'] = '$nr / $count üzenet'; $labels['copy'] = 'Másolás'; $labels['move'] = 'Áthelyezés'; $labels['moveto'] = 'áthelyezés...'; diff --git a/program/localization/it_IT/labels.inc b/program/localization/it_IT/labels.inc index 7537df59a..a6ec65670 100644 --- a/program/localization/it_IT/labels.inc +++ b/program/localization/it_IT/labels.inc @@ -37,13 +37,14 @@ $labels['subject'] = 'Oggetto'; $labels['from'] = 'Mittente'; $labels['to'] = 'Destinatario'; $labels['cc'] = 'Cc'; -$labels['bcc'] = 'Bcn'; +$labels['bcc'] = 'Bcc'; $labels['replyto'] = 'Rispondi a'; $labels['followupto'] = 'Followup-To'; $labels['date'] = 'Data'; $labels['size'] = 'Dimensione'; $labels['priority'] = 'Priorità'; $labels['organization'] = 'Società'; +$labels['readstatus'] = 'Visualizza lo stato'; $labels['mailboxlist'] = 'Cartelle'; $labels['messagesfromto'] = 'Messaggi da $from a $to di $count'; $labels['threadsfromto'] = 'Thread da $from a $to di $count'; @@ -97,7 +98,7 @@ $labels['today'] = 'Oggi'; $labels['checkmail'] = 'Controlla nuovi messaggi'; $labels['writenewmessage'] = 'Scrivi un nuovo messaggio'; $labels['replytomessage'] = 'Rispondi al mittente'; -$labels['replytoallmessage'] = 'Rispondi a tutti o alla mailing list'; +$labels['replytoallmessage'] = 'Rispondi a l mittente e ai destinatari'; $labels['replyall'] = 'Rispondi a tutti'; $labels['replylist'] = 'Rispondi alla mailing list'; $labels['forwardmessage'] = 'Inoltra il messaggio'; @@ -204,7 +205,33 @@ $labels['receiptnote'] = 'Nota: questa Ricevuta di ritorno attesta solamente che $labels['name'] = 'Nome visualizzato'; $labels['firstname'] = 'Nome'; $labels['surname'] = 'Cognome'; +$labels['middlename'] = 'Secondo nome'; +$labels['nameprefix'] = 'Prefisso'; +$labels['namesuffix'] = 'Suffisso'; +$labels['nickname'] = 'Soprannome'; +$labels['jobtitle'] = 'Titolo'; +$labels['department'] = 'Dipartimento'; +$labels['gender'] = 'Sesso'; +$labels['maidenname'] = 'Cognome da nubile'; $labels['email'] = 'E-Mail'; +$labels['phone'] = 'Telefono'; +$labels['address'] = 'Indirizzo'; +$labels['street'] = 'Via'; +$labels['locality'] = 'Città'; +$labels['zipcode'] = 'CAP'; +$labels['region'] = 'Regione'; +$labels['country'] = 'Stato'; +$labels['birthday'] = 'Compleanno'; +$labels['anniversary'] = 'Anniversario'; +$labels['website'] = 'Sito web'; +$labels['instantmessenger'] = 'IM'; +$labels['notes'] = 'Note'; +$labels['male'] = 'maschio'; +$labels['female'] = 'femmina'; +$labels['manager'] = 'Manager'; +$labels['assistant'] = 'Assistente'; +$labels['spouse'] = 'Coniuge'; +$labels['addfield'] = 'Aggiungi campo...'; $labels['addcontact'] = 'Aggiungi contatto alla rubrica'; $labels['editcontact'] = 'Modifica contatto'; $labels['contacts'] = 'Contatti'; @@ -214,6 +241,8 @@ $labels['cancel'] = 'Annulla'; $labels['save'] = 'Salva'; $labels['delete'] = 'Elimina'; $labels['rename'] = 'Rinomina'; +$labels['addphoto'] = 'Aggiungi'; +$labels['replacephoto'] = 'Sostituisci'; $labels['newcontact'] = 'Crea un nuovo contatto'; $labels['deletecontact'] = 'Elimina i contatti selezionati'; $labels['composeto'] = 'Invia email a'; @@ -330,6 +359,7 @@ $labels['specialfolders'] = 'Cartelle Speciali'; $labels['properties'] = 'Proprietà'; $labels['folderproperties'] = 'Proprietà cartella'; $labels['parentfolder'] = 'Cartella padre'; +$labels['location'] = 'Ubicazione'; $labels['info'] = 'Informazioni'; $labels['getfoldersize'] = 'Click per la dimensione della cartella'; $labels['changesubscription'] = 'Click per cambiare sottoscrizione'; @@ -360,3 +390,5 @@ $labels['korean'] = 'Coreano'; $labels['chinese'] = 'Cinese'; ?> + + diff --git a/program/localization/it_IT/messages.inc b/program/localization/it_IT/messages.inc index fd259abd9..7fdbc161f 100644 --- a/program/localization/it_IT/messages.inc +++ b/program/localization/it_IT/messages.inc @@ -30,7 +30,7 @@ $messages['errornoperm'] = 'Impossibile eseguire l\'operazione. Permesso negato' $messages['invalidrequest'] = 'Richiesta non valida! Nessun dato salvato.'; $messages['nomessagesfound'] = 'Nessun messaggio trovato in questa cartella'; $messages['loggedout'] = 'Sessione chiusa correttamente. Arrivederci!'; -$messages['mailboxempty'] = 'La cartella è vuota'; +$messages['mailboxempty'] = 'La casella è vuota'; $messages['loading'] = 'Caricamento...'; $messages['uploading'] = 'Caricamento file...'; $messages['loadingdata'] = 'Caricamento dati...'; @@ -138,5 +138,8 @@ $messages['namecannotbeempty'] = 'Il nome non può essere vuoto'; $messages['nametoolong'] = 'Nome troppo lungo'; $messages['folderupdated'] = 'Cartella aggiornata correttamente'; $messages['foldercreated'] = 'Cartella creata correttamente'; +$messages['invalidimageformat'] = 'Formato non valido'; ?> + + diff --git a/program/localization/ja_JP/labels.inc b/program/localization/ja_JP/labels.inc index 08ccbb485..06c9fa461 100644 --- a/program/localization/ja_JP/labels.inc +++ b/program/localization/ja_JP/labels.inc @@ -16,7 +16,7 @@ @version $Id$ -EN-Revision: 4353 +EN-Revision: 4441 */ @@ -41,11 +41,11 @@ $labels['to'] = '宛先'; $labels['cc'] = 'コピー'; $labels['bcc'] = 'Bcc'; $labels['replyto'] = 'Reply-To (返信先)'; -$labels['followupto'] = 'Followup-To'; +$labels['followupto'] = 'Followup-To (ML の宛先)'; $labels['date'] = '日付'; $labels['size'] = '容量'; $labels['priority'] = '優先度'; -$labels['organization'] = '所属'; +$labels['organization'] = '企業名'; $labels['readstatus'] = '閲覧の状態'; $labels['mailboxlist'] = 'フォルダー一覧'; $labels['messagesfromto'] = '表示中のメール: $from ~ $to (全: $count 件)'; @@ -157,7 +157,6 @@ $labels['listmode'] = '一覧表示モード'; $labels['folderactions'] = 'フォルダーの操作...'; $labels['compact'] = 'コンパクト'; $labels['empty'] = '空'; -$labels['purge'] = 'ごみ箱を空にする'; $labels['quota'] = 'ディスク使用量'; $labels['unknown'] = '不明'; $labels['unlimited'] = '無制限'; @@ -206,18 +205,47 @@ $labels['receiptread'] = '開封確認 (表示済み)'; $labels['yourmessage'] = 'これはあなたが送信したメールに対する開封確認です。'; $labels['receiptnote'] = '注意: この開封確認はメールが受信者に表示されたことの通知です。受信者がメールを読んだこと、内容を理解したことを保証するものではありません。'; $labels['name'] = '表示名'; -$labels['firstname'] = '名 (ファースト ネーム)'; -$labels['surname'] = '姓 (ラスト ネーム)'; +$labels['firstname'] = '名 (ファーストネーム)'; +$labels['surname'] = '姓 (ラストネーム)'; +$labels['middlename'] = 'ミドルネーム'; +$labels['nameprefix'] = '敬称 (名前の前)'; +$labels['namesuffix'] = '敬称 (名前の後)'; +$labels['nickname'] = 'ニックネーム'; +$labels['jobtitle'] = '肩書き'; +$labels['department'] = '部署名'; +$labels['gender'] = '性別'; +$labels['maidenname'] = '旧姓'; $labels['email'] = 'メールアドレス'; +$labels['phone'] = '電話番号'; +$labels['address'] = '住所'; +$labels['street'] = '通り'; +$labels['locality'] = '都市'; +$labels['zipcode'] = '郵便番号'; +$labels['region'] = '州'; +$labels['country'] = '国'; +$labels['birthday'] = '誕生日'; +$labels['anniversary'] = '記念日'; +$labels['website'] = 'ウェブサイト'; +$labels['instantmessenger'] = 'IM'; +$labels['notes'] = 'Notes'; +$labels['male'] = '男性'; +$labels['female'] = '女性'; +$labels['manager'] = '管理者'; +$labels['assistant'] = 'アシスタント'; +$labels['spouse'] = '配偶者'; +$labels['addfield'] = '項目の追加...'; $labels['addcontact'] = '連絡先の新規追加'; $labels['editcontact'] = '連絡先の編集'; $labels['contacts'] = '連絡先'; $labels['contactproperties'] = '連絡先のプロパティ'; +$labels['personalinfo'] = '個人情報'; $labels['edit'] = '編集'; $labels['cancel'] = 'キャンセル'; $labels['save'] = '保存'; $labels['delete'] = '削除'; $labels['rename'] = '名前の変更'; +$labels['addphoto'] = '追加'; +$labels['replacephoto'] = '置換'; $labels['newcontact'] = '連絡先の新規作成'; $labels['deletecontact'] = '連絡先の削除'; $labels['composeto'] = 'この連絡先へメールの送信'; diff --git a/program/localization/ja_JP/messages.inc b/program/localization/ja_JP/messages.inc index efd9183a2..657a1df2f 100644 --- a/program/localization/ja_JP/messages.inc +++ b/program/localization/ja_JP/messages.inc @@ -16,7 +16,7 @@ @version $Id$ -// EN-Revision: 4321 +// EN-Revision: 4424 */ @@ -140,5 +140,6 @@ $messages['namecannotbeempty'] = '名前は空にできません。'; $messages['nametoolong'] = '名前が長すぎます。'; $messages['folderupdated'] = 'フォルダーの更新に成功しました。'; $messages['foldercreated'] = 'フォルダーの作成に成功しました。'; +$messages['invalidimageformat'] = '画像の形式が正しくありません。'; ?> diff --git a/program/localization/pt_PT/labels.inc b/program/localization/pt_PT/labels.inc index f5380dd1b..c46d4e3a1 100644 --- a/program/localization/pt_PT/labels.inc +++ b/program/localization/pt_PT/labels.inc @@ -208,16 +208,45 @@ $labels['receiptnote'] = 'Nota: este recibo apenas indica que a mensagem foi abe $labels['name'] = 'Nome completo'; $labels['firstname'] = 'Primeiro nome'; $labels['surname'] = 'Apelido'; +$labels['middlename'] = 'Outros nomes/apelidos'; +$labels['nameprefix'] = 'Título'; +$labels['namesuffix'] = 'Sufixo'; +$labels['nickname'] = 'Alcunha'; +$labels['jobtitle'] = 'Cargo'; +$labels['department'] = 'Departamento'; +$labels['gender'] = 'Género'; +$labels['maidenname'] = 'Nome solteiro'; $labels['email'] = 'E-mail'; +$labels['phone'] = 'Telefone'; +$labels['address'] = 'Endereço'; +$labels['street'] = 'Rua'; +$labels['locality'] = 'Cidade'; +$labels['zipcode'] = 'Código postal'; +$labels['region'] = 'Localidade'; +$labels['country'] = 'Pais'; +$labels['birthday'] = 'Data de nascimento'; +$labels['anniversary'] = 'Aniversário'; +$labels['website'] = 'Página web'; +$labels['instantmessenger'] = 'Endereço IM'; +$labels['notes'] = 'Notas'; +$labels['male'] = 'masculino'; +$labels['female'] = 'feminino'; +$labels['manager'] = 'Gerente'; +$labels['assistant'] = 'Assistente'; +$labels['spouse'] = 'Cônjuge'; +$labels['addfield'] = 'Adicionar campo...'; $labels['addcontact'] = 'Criar novo contacto'; $labels['editcontact'] = 'Editar contacto'; $labels['contacts'] = 'Contactos'; $labels['contactproperties'] = 'Propriedades dos contactos'; +$labels['personalinfo'] = 'Informação pessoal'; $labels['edit'] = 'Editar'; $labels['cancel'] = 'Cancelar'; $labels['save'] = 'Guardar'; $labels['delete'] = 'Eliminar'; $labels['rename'] = 'Renomear'; +$labels['addphoto'] = 'Adicionar'; +$labels['replacephoto'] = 'Substituir'; $labels['newcontact'] = 'Criar novo contacto'; $labels['deletecontact'] = 'Eliminar contactos seleccionados'; $labels['composeto'] = 'Escrever mensagem para'; diff --git a/program/localization/pt_PT/messages.inc b/program/localization/pt_PT/messages.inc index 07caaa30d..eb56751c2 100644 --- a/program/localization/pt_PT/messages.inc +++ b/program/localization/pt_PT/messages.inc @@ -140,5 +140,6 @@ $messages['namecannotbeempty'] = 'O nome não pode estar em branco'; $messages['nametoolong'] = 'O nome é demasiado longo'; $messages['folderupdated'] = 'Actualização da pasta concluída com sucesso'; $messages['foldercreated'] = 'Pasta criada com sucesso'; +$messages['invalidimageformat'] = 'Formato de imagem não suportado'; ?> diff --git a/program/localization/ru_RU/labels.inc b/program/localization/ru_RU/labels.inc index d8d050b23..39e3ab54c 100644 --- a/program/localization/ru_RU/labels.inc +++ b/program/localization/ru_RU/labels.inc @@ -156,7 +156,6 @@ $labels['listmode'] = 'Режим просмотра'; $labels['folderactions'] = 'Операции над папкой...'; $labels['compact'] = 'Сжать'; $labels['empty'] = 'Опустошить'; -$labels['purge'] = 'Очистить'; $labels['quota'] = 'Квота'; $labels['unknown'] = 'неизвестно'; $labels['unlimited'] = 'без ограничений'; @@ -207,15 +206,45 @@ $labels['receiptnote'] = 'Это уведомление означает тол $labels['name'] = 'Отображаемое имя'; $labels['firstname'] = 'Имя'; $labels['surname'] = 'Фамилия'; +$labels['middlename'] = 'Отчество'; +$labels['nameprefix'] = 'Префикс'; +$labels['namesuffix'] = 'Суффикс'; +$labels['nickname'] = 'Прозвище'; +$labels['jobtitle'] = 'Должность'; +$labels['department'] = 'Отдел'; +$labels['gender'] = 'Пол'; +$labels['maidenname'] = 'Девичья фамилия'; $labels['email'] = 'E-Mail'; +$labels['phone'] = 'Телефон'; +$labels['address'] = 'Адрес'; +$labels['street'] = 'Улица'; +$labels['locality'] = 'Город'; +$labels['zipcode'] = 'Индекс'; +$labels['region'] = 'Область'; +$labels['country'] = 'Страна'; +$labels['birthday'] = 'День рождения'; +$labels['anniversary'] = 'Годовщина'; +$labels['website'] = 'Веб-сайт'; +$labels['instantmessenger'] = 'IM'; +$labels['notes'] = 'Заметки'; +$labels['male'] = 'мужской'; +$labels['female'] = 'женский'; +$labels['manager'] = 'Менеджер'; +$labels['assistant'] = 'Помощник'; +$labels['spouse'] = 'Супруг'; +$labels['addfield'] = 'Добавить поле...'; $labels['addcontact'] = 'Добавить выбранные контакты в список контактов'; $labels['editcontact'] = 'Редактировать контакт'; $labels['contacts'] = 'Контакты'; $labels['contactproperties'] = 'Свойства контакта'; +$labels['personalinfo'] = 'Личная информация'; $labels['edit'] = 'Правка'; $labels['cancel'] = 'Отмена'; $labels['save'] = 'Сохранить'; $labels['delete'] = 'Удалить'; +$labels['rename'] = 'Переименовать'; +$labels['addphoto'] = 'Добавить'; +$labels['replacephoto'] = 'Заменить'; $labels['newcontact'] = 'Создать новый контакт'; $labels['deletecontact'] = 'Удалить выбранные контакты'; $labels['composeto'] = 'Создать сообщение для выбранных контактов'; diff --git a/program/localization/ru_RU/messages.inc b/program/localization/ru_RU/messages.inc index 26cda0196..83aa8a74e 100644 --- a/program/localization/ru_RU/messages.inc +++ b/program/localization/ru_RU/messages.inc @@ -138,5 +138,6 @@ $messages['namecannotbeempty'] = 'Имя не может быть пустым'; $messages['nametoolong'] = 'Слишком длинное имя'; $messages['folderupdated'] = 'Папка обновлена'; $messages['foldercreated'] = 'Папка создана'; +$messages['invalidimageformat'] = 'Неверный формат изображения'; ?> diff --git a/program/localization/sk_SK/labels.inc b/program/localization/sk_SK/labels.inc index ce93f888f..25c8cb06b 100644 --- a/program/localization/sk_SK/labels.inc +++ b/program/localization/sk_SK/labels.inc @@ -14,6 +14,7 @@ | Lukas Kraic <lukas.kraic@truni.sk> | | Peter Mann <peter.mann@tuke.sk> | | Ales Pospichal <ales@pospichalales.info> | +| Martin Lacina <martin@whistler.sk> | +-----------------------------------------------------------------------+ @version $Id$ @@ -45,7 +46,7 @@ $labels['date'] = 'Dátum'; $labels['size'] = 'Veľkosť'; $labels['priority'] = 'Priorita'; $labels['organization'] = 'Organizácia'; -$labels['reply-to'] = 'Odpovedať na'; +$labels['readstatus'] = 'Čítať stav'; $labels['mailboxlist'] = 'Adresár'; $labels['messagesfromto'] = 'Správy od $from do $to z $count'; $labels['threadsfromto'] = 'Konverzácie od $from do $to z $count '; @@ -100,6 +101,8 @@ $labels['checkmail'] = 'Skontrolovať nové správy'; $labels['writenewmessage'] = 'Vytvoriť novú správu'; $labels['replytomessage'] = 'Odpovedať'; $labels['replytoallmessage'] = 'Odpovedať všetkým'; +$labels['replyall'] = 'Odpovedať všetkým'; +$labels['replylist'] = 'Zoznam odpovedí'; $labels['forwardmessage'] = 'Poslať ďalej'; $labels['deletemessage'] = 'Zmazať správu'; $labels['movemessagetotrash'] = 'Presunúť správu do koša'; @@ -154,7 +157,6 @@ $labels['listmode'] = 'Režim zobrazenia zoznamu'; $labels['folderactions'] = 'Akcie so zložkou...'; $labels['compact'] = 'Zhustiť priečinok'; $labels['empty'] = 'Prázdne'; -$labels['purge'] = 'Vyprázdniť'; $labels['quota'] = 'Zaplnenie schránky'; $labels['unknown'] = 'neznáme'; $labels['unlimited'] = 'neobmedzené'; @@ -172,6 +174,7 @@ $labels['addattachment'] = 'Pridať prílohu'; $labels['charset'] = 'Znaková sada'; $labels['editortype'] = 'Typ editora'; $labels['returnreceipt'] = 'Potvrdenie o doručení'; +$labels['dsn'] = 'Doručenie oznámenia o stave'; $labels['editidents'] = 'Editovať identity'; $labels['checkspelling'] = 'Skontrolovať pravopis'; $labels['resumeediting'] = 'Pokračovať v úpravách'; @@ -207,10 +210,12 @@ $labels['email'] = 'E-Mail'; $labels['addcontact'] = 'Pridať nový kontakt'; $labels['editcontact'] = 'Upraviť kontakt'; $labels['contacts'] = 'Kontakty'; +$labels['contactproperties'] = 'Vlastnosti kontaktu'; $labels['edit'] = 'Upraviť'; $labels['cancel'] = 'Zrušiť'; $labels['save'] = 'Uložiť'; $labels['delete'] = 'Zmazať'; +$labels['rename'] = 'Premenovať'; $labels['newcontact'] = 'Vytvoriť nový kontakt'; $labels['deletecontact'] = 'Zmazať zvolené kontakty'; $labels['composeto'] = 'Vytvoriť správu pre'; @@ -254,6 +259,7 @@ $labels['pagesize'] = 'Riadky na stránku'; $labels['signature'] = 'Podpis'; $labels['dstactive'] = 'Letný čas'; $labels['htmleditor'] = 'Vytvoriť HTML správu'; +$labels['htmlonreply'] = 'len v odpovedi na HTML správy'; $labels['htmlsignature'] = 'HTML podpis'; $labels['previewpane'] = 'Ukázať náhľad'; $labels['skin'] = 'Vzhľad'; @@ -266,6 +272,7 @@ $labels['mdnrequests'] = 'Upozornenia odosielateľovi'; $labels['askuser'] = 'spýtať sa používateľa'; $labels['autosend'] = 'poslať potvrdenie automaticky'; $labels['autosendknown'] = 'poslať potvrdenie iba mojím kontaktom'; +$labels['autosendknownignore'] = 'poslať potvrdenie mojím kontaktom, inak ignorovať'; $labels['ignore'] = 'ignorovať'; $labels['readwhendeleted'] = 'Označiť správu '; $labels['flagfordeletion'] = 'Pri odstránení správy iba označiť správu ako odstránenú'; @@ -311,6 +318,8 @@ $labels['insertsignature'] = 'Vložit podpis'; $labels['previewpanemarkread'] = 'Označiť zobrazenej správy ako prečítané'; $labels['afternseconds'] = 'po $ sekundách'; $labels['reqmdn'] = 'Vždy požadovať doručenku'; +$labels['reqdsn'] = 'Vždy vyžadovať potvrdenie o doručení správy'; +$labels['replysamefolder'] = 'Umietniť odpoveď do adresára, kde je umiestnená správa, na ktorú sa odpovedalo'; $labels['folder'] = 'Priečinok'; $labels['folders'] = 'Priečinky'; $labels['foldername'] = 'Názov priečinku'; @@ -320,6 +329,13 @@ $labels['create'] = 'Vytvoriť'; $labels['createfolder'] = 'Vytvor nový priečinok'; $labels['managefolders'] = 'Spravovať priečinky'; $labels['specialfolders'] = 'Špeciálne priečinky'; +$labels['properties'] = 'Vlastnosti'; +$labels['folderproperties'] = 'Vlastnosti adresára'; +$labels['parentfolder'] = 'Rodičovský adresár'; +$labels['location'] = 'Umiestnenie'; +$labels['info'] = 'Informácia'; +$labels['getfoldersize'] = 'Kliknúť pre získanie leľkosti adresára'; +$labels['changesubscription'] = 'Kliknúť pre zmenu prihlásenia odberu'; $labels['sortby'] = 'Triediť podľa'; $labels['sortasc'] = 'Triediť vzostupne'; $labels['sortdesc'] = 'Triediť zostupne'; @@ -346,4 +362,4 @@ $labels['japanese'] = 'Japončina'; $labels['korean'] = 'Korejčina'; $labels['chinese'] = 'Čínština'; -?>
\ No newline at end of file +?> diff --git a/program/localization/sk_SK/messages.inc b/program/localization/sk_SK/messages.inc index 315038f96..e44c65c64 100644 --- a/program/localization/sk_SK/messages.inc +++ b/program/localization/sk_SK/messages.inc @@ -14,6 +14,7 @@ | Lukas Kraic <lukas.kraic@truni.sk> | | Peter Mann <peter.mann@tuke.sk> | | Ales Pospichal <ales@pospichalales.info> | +| Martin Lacina <martin@whistler.sk> | +-----------------------------------------------------------------------+ @version $Id$ @@ -26,6 +27,9 @@ $messages['cookiesdisabled'] = 'Váš internetový prehliadač nepodporuje cooki $messages['sessionerror'] = 'Vaše prihlásenie je neplatné alebo vypršala jeho platnosť'; $messages['imaperror'] = 'Nepodarilo sa spojiť s IMAP serverom'; $messages['servererror'] = 'Chyba servera!'; +$messages['servererrormsg'] = 'Chyba servera: $msg'; +$messages['errorreadonly'] = 'Nemožno vykonať operáciu. Adresár je len na čítanie'; +$messages['errornoperm'] = 'Nemožno vykonať operáciu. Prístup odmietnutý'; $messages['invalidrequest'] = 'Chybný požiadavek. Žiadne údaje neboli uložené.'; $messages['nomessagesfound'] = 'Vo Vašej schránke nie je žiadna správa'; $messages['loggedout'] = 'Odhlásenie prebehlo úspešne. Dovidenia.'; @@ -59,6 +63,8 @@ $messages['deletefolderconfirm'] = 'Ste si istý, že chcete zmazať tento prie $messages['purgefolderconfirm'] = 'Ste si istý, že chcete zmazať všetky správy v tomto priečinku?'; $messages['folderdeleting'] = 'Odstraňuje sa priečinok ...'; $messages['foldermoving'] = 'Prečinok sa presúva ...'; +$messages['foldersubscribing'] = 'Prihlasujem sa k adresáru...'; +$messages['folderunsubscribing'] = 'Odhlasujem sa z adresára...'; $messages['formincomplete'] = 'Formulár nie je kompletne vyplnený'; $messages['noemailwarning'] = 'Prosím, vložte platnú emailovú adresu'; $messages['nonamewarning'] = 'Prosím, zadajte meno'; @@ -78,6 +84,10 @@ $messages['searching'] = 'Vyhľadáva sa...'; $messages['checking'] = 'Kontroluje sa...'; $messages['nospellerrors'] = 'Pri kontrole pravopisu neboli nájdené chyby'; $messages['folderdeleted'] = 'Priečinok bol zmazaný'; +$messages['foldersubscribed'] = 'Úspešne prihlásený k adresáru'; +$messages['folderunsubscribed'] = 'Úspešne odhlásený z adresára'; +$messages['folderpurged'] = 'Adresár bol vyprázdnený'; +$messages['folderexpunged'] = 'Adresár bol zhustený'; $messages['deletedsuccessfully'] = 'Úspešne zmazané'; $messages['converting'] = 'Odstraňuje sa formátovanie správy...'; $messages['messageopenerror'] = 'Nedá sa načítať správa zo servera'; @@ -89,6 +99,8 @@ $messages['sourceisreadonly'] = 'Tento zdroj adries je len na čítanie'; $messages['errorsavingcontact'] = 'Nedá sa uložiť adresa kontaktu'; $messages['movingmessage'] = 'Správa sa presúva...'; $messages['copyingmessage'] = 'Správa sa kopíruje...'; +$messages['deletingmessage'] = 'Mažem správu(y)...'; +$messages['markingmessage'] = 'Označujem správu(y)...'; $messages['receiptsent'] = 'Potvrdenie o prijatí správy bolo odoslané'; $messages['errorsendingreceipt'] = 'Potvrdenie o prijatí správy sa nedalo odoslať'; $messages['nodeletelastidentity'] = 'Identita sa nedá odstrániť, je posledná a musí zostať.'; @@ -109,10 +121,25 @@ $messages['smtpautherror'] = 'Chyba SMTP: Autorizácie zlyhala'; $messages['smtpfromerror'] = 'Chyba SMTP: Nemožno nastaviť odosielateľa ($msg)'; $messages['smtptoerror'] = 'Chyba SMTP: Nemožno pridať príjemca ($msg)'; $messages['smtprecipientserror'] = 'Chyba SMTP: Nemožno spracovať zoznam príjemcov'; +$messages['smtpdsnerror'] = 'SMTP chyba: Oznámenie o doručení nie je podporované'; $messages['smtperror'] = 'Chyba SMTP: $msg'; $messages['emailformaterror'] = 'Neplatná e-mailová adresa: $email'; $messages['toomanyrecipients'] = 'Príliš veľa príjemcov. Zmenšite počet príjemcov na $max.'; $messages['maxgroupmembersreached'] = 'Počet členov skupiny dosiahol maxima z $max'; $messages['internalerror'] = 'Došlo k internej chybe. Skúste to znova'; +$messages['contactdelerror'] = 'Nemôžem vymazať kontakt(y)'; +$messages['contactdeleted'] = 'Kontakt(y) bol vymazaný'; +$messages['groupdeleted'] = 'Skupina bola vymazaná'; +$messages['grouprenamed'] = 'Skupina bola premenovaná'; +$messages['groupcreated'] = 'Skupina bola vytvorená'; +$messages['messagedeleted'] = 'Správa(y) bola vymazaná'; +$messages['messagemoved'] = 'Správa(y) bola presunutá'; +$messages['messagecopied'] = 'Správa(y) bola skopírovaná'; +$messages['messagemarked'] = 'Správa(y) bola označená'; +$messages['autocompletechars'] = 'Zadajte najmenej $min znamkov pre automatické dopĺňanie'; +$messages['namecannotbeempty'] = 'Meno nemôže byť prázdne'; +$messages['nametoolong'] = 'Meno je príliš dlhé'; +$messages['folderupdated'] = 'Adresár bol aktualizovaný'; +$messages['foldercreated'] = 'Adresár bol vytvorený'; ?> diff --git a/program/localization/sv_SE/labels.inc b/program/localization/sv_SE/labels.inc index 60f7e01ab..64da4c4b4 100644 --- a/program/localization/sv_SE/labels.inc +++ b/program/localization/sv_SE/labels.inc @@ -121,7 +121,7 @@ $labels['markread'] = 'Läst'; $labels['markunread'] = 'Oläst'; $labels['markflagged'] = 'Flaggat'; $labels['markunflagged'] = 'Oflaggat'; -$labels['messageactions'] = 'Hantera meddelanden'; +$labels['messageactions'] = 'Hantera meddelande'; $labels['select'] = 'Välj'; $labels['all'] = 'Alla'; $labels['none'] = 'Ingen'; @@ -156,7 +156,6 @@ $labels['listmode'] = 'Visningsläge'; $labels['folderactions'] = 'Hantera kataloger'; $labels['compact'] = 'Packa'; $labels['empty'] = 'Töm'; -$labels['purge'] = 'Rensa'; $labels['quota'] = 'Diskutrymme'; $labels['unknown'] = 'okänt'; $labels['unlimited'] = 'obegränsat'; @@ -207,7 +206,33 @@ $labels['receiptnote'] = 'Notera: Mottagarkvittot innebär bara att meddelandet $labels['name'] = 'Namn'; $labels['firstname'] = 'Förnamn'; $labels['surname'] = 'Efternamn'; +$labels['middlename'] = 'Mellannamn'; +$labels['nameprefix'] = 'Prefix'; +$labels['namesuffix'] = 'Suffix'; +$labels['nickname'] = 'Smeknamn'; +$labels['jobtitle'] = 'Titel'; +$labels['department'] = 'Avdelning'; +$labels['gender'] = 'Kön'; +$labels['maidenname'] = 'Flicknamn'; $labels['email'] = 'E-post'; +$labels['phone'] = 'Telefon'; +$labels['address'] = 'Adress'; +$labels['street'] = 'Gata'; +$labels['locality'] = 'Ort'; +$labels['zipcode'] = 'Postnummer'; +$labels['region'] = 'Region'; +$labels['country'] = 'Land'; +$labels['birthday'] = 'Födelsedag'; +$labels['anniversary'] = 'Årsdag'; +$labels['website'] = 'Webbplats'; +$labels['instantmessenger'] = 'IM'; +$labels['notes'] = 'Anteckningar'; +$labels['male'] = 'Man'; +$labels['female'] = 'Kvinna'; +$labels['manager'] = 'Chef'; +$labels['assistant'] = 'Assistent'; +$labels['spouse'] = 'Make/Maka'; +$labels['addfield'] = 'Lägg till fält...'; $labels['addcontact'] = 'Lägg till ny kontakt'; $labels['editcontact'] = 'Ändra kontakt'; $labels['contacts'] = 'Kontakter'; @@ -216,6 +241,9 @@ $labels['edit'] = 'Redigera'; $labels['cancel'] = 'Avbryt'; $labels['save'] = 'Spara'; $labels['delete'] = 'Ta bort'; +$labels['rename'] = 'Ändra namn'; +$labels['addphoto'] = 'Lägg till'; +$labels['replacephoto'] = 'Ersätt'; $labels['newcontact'] = 'Ny kontakt'; $labels['deletecontact'] = 'Ta bort vald kontakt'; $labels['composeto'] = 'Nytt meddelande till vald kontakt'; @@ -323,7 +351,7 @@ $labels['replysamefolder'] = 'Placera svar i samma katalog som besvarat meddelan $labels['folder'] = 'Katalog'; $labels['folders'] = 'Kataloger'; $labels['foldername'] = 'Katalognamn'; -$labels['subscribed'] = 'Prenumererad'; +$labels['subscribed'] = 'Prenumererad'; $labels['messagecount'] = 'Meddelanden'; $labels['create'] = 'Skapa'; $labels['createfolder'] = 'Ny katalog'; diff --git a/program/localization/sv_SE/messages.inc b/program/localization/sv_SE/messages.inc index bb0d331fc..07e97f7a9 100644 --- a/program/localization/sv_SE/messages.inc +++ b/program/localization/sv_SE/messages.inc @@ -139,5 +139,6 @@ $messages['namecannotbeempty'] = 'Namnet får inte vara tomt'; $messages['nametoolong'] = 'Namnet är för långt'; $messages['folderupdated'] = 'Katalog uppdaterad'; $messages['foldercreated'] = 'Katalog skapad'; +$messages['invalidimageformat'] = 'Ogiltigt bildfilsformat'; ?> diff --git a/program/localization/zh_TW/labels.inc b/program/localization/zh_TW/labels.inc index 886d3a380..45c706d44 100644 --- a/program/localization/zh_TW/labels.inc +++ b/program/localization/zh_TW/labels.inc @@ -46,9 +46,6 @@ $labels['size'] = '大小'; $labels['priority'] = '優先順序'; $labels['organization'] = '組織'; $labels['readstatus'] = '讀信狀態'; -$labels['reply-to'] = '回覆至'; -$labels['mail-reply-to'] = '信件回覆至'; -$labels['mail-followup-to'] = '信件跟隨至'; $labels['mailboxlist'] = '資料夾'; $labels['messagesfromto'] = '郵件 $from 至 $to,共有 $count 封郵件'; $labels['threadsfromto'] = '郵件串 $from 至 $to,共有 $count 個'; @@ -159,7 +156,6 @@ $labels['listmode'] = '清單檢視模式'; $labels['folderactions'] = '資料夾動作...'; $labels['compact'] = '壓縮'; $labels['empty'] = '清空'; -$labels['purge'] = '清除'; $labels['quota'] = '磁碟使用量'; $labels['unknown'] = '未知'; $labels['unlimited'] = '無限制'; @@ -210,15 +206,45 @@ $labels['receiptnote'] = '注意:此回條只能確認收件者的電腦顯示 $labels['name'] = '顯示名稱'; $labels['firstname'] = '名稱'; $labels['surname'] = '姓氏'; +$labels['middlename'] = '中名'; +$labels['nameprefix'] = '名'; +$labels['namesuffix'] = '姓'; +$labels['nickname'] = '暱稱'; +$labels['jobtitle'] = '職位'; +$labels['department'] = '部門'; +$labels['gender'] = '性別'; +$labels['maidenname'] = '姓'; $labels['email'] = '電子郵件'; +$labels['phone'] = '電話'; +$labels['address'] = '地址'; +$labels['street'] = '街道'; +$labels['locality'] = '城市'; +$labels['zipcode'] = '郵遞區號'; +$labels['region'] = '地區'; +$labels['country'] = '國家'; +$labels['birthday'] = '生日'; +$labels['anniversary'] = '周年纪念日'; +$labels['website'] = '網站'; +$labels['instantmessenger'] = '即時通訊'; +$labels['notes'] = '註解'; +$labels['male'] = '男'; +$labels['female'] = '女'; +$labels['manager'] = '經理'; +$labels['assistant'] = '助理'; +$labels['spouse'] = '配偶'; +$labels['addfield'] = '新增欄位...'; $labels['addcontact'] = '新增聯絡人'; $labels['editcontact'] = '編輯聯絡人'; $labels['contacts'] = '聯絡人'; $labels['contactproperties'] = '聯絡人資訊'; +$labels['personalinfo'] = '個人資訊'; $labels['edit'] = '編輯'; $labels['cancel'] = '取消'; $labels['save'] = '儲存'; $labels['delete'] = '刪除'; +$labels['rename'] = '重新命名'; +$labels['addphoto'] = '新增'; +$labels['replacephoto'] = '取代'; $labels['newcontact'] = '建立新聯絡人資料'; $labels['deletecontact'] = '刪除所選擇的聯絡人'; $labels['composeto'] = '寄信至所選擇的聯絡人'; @@ -332,6 +358,13 @@ $labels['create'] = '建立'; $labels['createfolder'] = '建立新資料夾'; $labels['managefolders'] = '管理資料夾'; $labels['specialfolders'] = '預設資料夾設定'; +$labels['properties'] = '屬性'; +$labels['folderproperties'] = '資料夾屬性'; +$labels['parentfolder'] = '上一層資料夾'; +$labels['location'] = '位置'; +$labels['info'] = '資訊'; +$labels['getfoldersize'] = '點擊顯示資料夾大小'; +$labels['changesubscription'] = '點擊以改變訂閱'; $labels['sortby'] = '排序'; $labels['sortasc'] = '遞增排序'; $labels['sortdesc'] = '遞減排序'; diff --git a/program/localization/zh_TW/messages.inc b/program/localization/zh_TW/messages.inc index 68c543fc2..99816dcfb 100644 --- a/program/localization/zh_TW/messages.inc +++ b/program/localization/zh_TW/messages.inc @@ -26,6 +26,8 @@ $messages['sessionerror'] = '你的工作階段已失效或過期'; $messages['imaperror'] = '連線到 IMAP 伺服器失敗'; $messages['servererror'] = '伺服器錯誤!'; $messages['servererrormsg'] = '伺服器錯誤:$msg'; +$messages['errorreadonly'] = '動作無法完成。資料夾唯讀'; +$messages['errornoperm'] = '動作無法完成。權限不符'; $messages['invalidrequest'] = '要求無效!未儲存任何資料。'; $messages['nomessagesfound'] = '此郵件匣沒有任何郵件'; $messages['loggedout'] = '你已成功地登出並結束工作階段了。再見!'; @@ -59,6 +61,8 @@ $messages['deletefolderconfirm'] = '你確定要刪除這個資料夾嗎?'; $messages['purgefolderconfirm'] = '你確定要刪除這個資料夾裡面所有的郵件嗎?'; $messages['folderdeleting'] = '刪除資料夾中...'; $messages['foldermoving'] = '移動資料夾中...'; +$messages['foldersubscribing'] = '訂閱資料夾...'; +$messages['folderunsubscribing'] = '取消訂閱資料夾...'; $messages['formincomplete'] = '這個表單有部分未填,請完整填寫'; $messages['noemailwarning'] = '請輸入一個有效的電子郵件位址'; $messages['nonamewarning'] = '請輸入名字'; @@ -78,6 +82,10 @@ $messages['searching'] = '搜尋中...'; $messages['checking'] = '檢查中...'; $messages['nospellerrors'] = '沒有找到任何拼字錯誤'; $messages['folderdeleted'] = '資料夾已經成功地被刪除'; +$messages['foldersubscribed'] = '資料夾成功訂閱'; +$messages['folderunsubscribed'] = '資料夾成功取消訂閱'; +$messages['folderpurged'] = '資料夾成功清空'; +$messages['folderexpunged'] = '資料夾成功壓縮'; $messages['deletedsuccessfully'] = '刪除成功'; $messages['converting'] = '移除郵件格式中...'; $messages['messageopenerror'] = '無法從伺服器載入郵件'; @@ -127,5 +135,10 @@ $messages['messagemoved'] = '訊息成功移動'; $messages['messagecopied'] = '訊息成功複製'; $messages['messagemarked'] = '訊息成功標示'; $messages['autocompletechars'] = '輸入至少 $min 字元才能自動完成自動完成'; +$messages['namecannotbeempty'] = '名稱不可空白'; +$messages['nametoolong'] = '名稱太長'; +$messages['folderupdated'] = '資料夾成功更新'; +$messages['foldercreated'] = '資料夾成功建立'; +$messages['invalidimageformat'] = '圖片格式錯誤'; ?> diff --git a/program/steps/addressbook/save.inc b/program/steps/addressbook/save.inc index f074f18a4..1c70b89b6 100644 --- a/program/steps/addressbook/save.inc +++ b/program/steps/addressbook/save.inc @@ -121,6 +121,18 @@ else { if ($insert_id) { + // add new contact to the specified group + if ($CONTACTS->group_id) { + $plugin = $RCMAIL->plugins->exec_hook('group_addmembers', array('group_id' => $CONTACTS->group_id, 'ids' => $insert_id, 'source' => $source)); + + if (!$plugin['abort']) { + if (($maxnum = $RCMAIL->config->get('max_group_members', 0)) && ($CONTACTS->count()->count + 1 > $maxnum)) + $OUTPUT->show_message('maxgroupmembersreached', 'warning', array('max' => $maxnum)); + + $CONTACTS->add_to_group($gid, $plugin['ids']); + } + } + // add contact row or jump to the page where it should appear $CONTACTS->reset(); $result = $CONTACTS->search($CONTACTS->primary_key, $insert_id); diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index abf112212..b62e8a86c 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -273,7 +273,7 @@ function rcmail_js_message_list($a_headers, $insert_top=FALSE, $a_show_cols=null if (in_array($col, array('from', 'to', 'cc', 'replyto'))) $cont = Q(rcmail_address_string($header->$col, 3), 'show'); else if ($col=='subject') { - $cont = abbreviate_string(trim($IMAP->decode_header($header->$col)), 160); + $cont = trim($IMAP->decode_header($header->$col)); if (!$cont) $cont = rcube_label('nosubject'); $cont = Q($cont); } @@ -665,7 +665,8 @@ function rcmail_print_body($part, $p = array()) // trigger plugin hook $data = $RCMAIL->plugins->exec_hook('message_part_before', - array('type' => $part->ctype_secondary, 'body' => $part->body) + $p + array('safe' => false, 'plain' => false, 'inline_html' => true)); + array('type' => $part->ctype_secondary, 'body' => $part->body, 'id' => $part->mime_id) + + $p + array('safe' => false, 'plain' => false, 'inline_html' => true)); // convert html to text/plain if ($data['type'] == 'html' && $data['plain']) { @@ -698,7 +699,8 @@ function rcmail_print_body($part, $p = array()) $body = rcmail_plain_body($body, $part->ctype_parameters['format'] == 'flowed'); // allow post-processing of the message body - $data = $RCMAIL->plugins->exec_hook('message_part_after', array('type' => $part->ctype_secondary, 'body' => $body) + $data); + $data = $RCMAIL->plugins->exec_hook('message_part_after', + array('type' => $part->ctype_secondary, 'body' => $body, 'id' => $part->mime_id) + $data); return $data['type'] == 'html' ? $data['body'] : html::tag('pre', array(), $data['body']); } @@ -827,10 +829,10 @@ function rcmail_washtml_callback($tagname, $attrib, $content) case 'style': // decode all escaped entities and reduce to ascii strings - $stripped = preg_replace('/[^a-zA-Z\(:]/', '', rcmail_xss_entity_decode($content)); + $stripped = preg_replace('/[^a-zA-Z\(:;]/', '', rcmail_xss_entity_decode($content)); // now check for evil strings like expression, behavior or url() - if (!preg_match('/expression|behavior|url\(|import/', $stripped)) { + if (!preg_match('/expression|behavior|url\(|import[^a]/', $stripped)) { $out = html::tag('style', array('type' => 'text/css'), $content); break; } @@ -940,16 +942,25 @@ function rcmail_message_headers($attrib, $headers=NULL) $table->add(array('class' => 'header '.$hkey), Q($row['value'], ($hkey == 'subject' ? 'strict' : 'show'))); } - // all headers division - $table->add(array('colspan' => 2, 'class' => "more-headers show-headers", 'onclick' => "return ".JS_OBJECT_NAME.".command('load-headers','',this)"), ''); - $table->add_row(array('id' => "all-headers")); - $table->add(array('colspan' => 2, 'class' => "all"), html::div(array('id' => 'headers-source'), '')); + return $table->show($attrib); +} + + +/** + * return block to show full message headers + */ +function rcmail_message_full_headers($attrib, $headers=NULL) +{ + global $OUTPUT; + + $html = html::div(array('class' => "more-headers show-headers", 'onclick' => "return ".JS_OBJECT_NAME.".command('load-headers','',this)"), ''); + $html .= html::div(array('id' => "all-headers", 'class' => "all", 'style' => 'display:none'), html::div(array('id' => 'headers-source'), '')); $OUTPUT->add_gui_object('all_headers_row', 'all-headers'); $OUTPUT->add_gui_object('all_headers_box', 'headers-source'); - - return $table->show($attrib); - } + + return html::div($attrib, $html); +} /** @@ -1749,6 +1760,7 @@ $OUTPUT->add_handlers(array( 'quotadisplay' => 'rcmail_quota_display', 'mailboxname' => 'rcmail_mailbox_name_display', 'messageheaders' => 'rcmail_message_headers', + 'messagefullheaders' => 'rcmail_message_full_headers', 'messagebody' => 'rcmail_message_body', 'messagecontentframe' => 'rcmail_messagecontent_frame', 'messagepartframe' => 'rcmail_message_part_frame', diff --git a/program/steps/settings/folders.inc b/program/steps/settings/folders.inc index 7ae4fb35d..3494ba99a 100644 --- a/program/steps/settings/folders.inc +++ b/program/steps/settings/folders.inc @@ -42,8 +42,16 @@ if ($RCMAIL->action == 'subscribe') } } - if ($result) + if ($result) { + // Handle subscription of protected folder (#1487656) + if ($CONFIG['protect_default_folders'] == true + && in_array($mbox, $CONFIG['default_imap_folders']) + ) { + $OUTPUT->command('disable_subscription', $mbox); + } + $OUTPUT->show_message('foldersubscribed', 'confirmation'); + } else rcmail_display_server_error('errorsaving'); } @@ -294,13 +302,16 @@ function rcube_subscription_form($attrib) $noselect = in_array('\\Noselect', $opts); } + $disabled = (($protected && $subscribed) || $noselect); + $table->add_row(array('id' => 'rcmrow'.$idx, 'class' => join(' ', $classes))); $table->add('name', $display_folder); $table->add('subscribed', $checkbox_subscribe->show(($subscribed ? $folder_utf8 : ''), - array('value' => $folder_utf8, 'disabled' => ($protected || $noselect) ? 'disabled' : ''))); + array('value' => $folder_utf8, 'disabled' => $disabled ? 'disabled' : ''))); - $a_js_folders['rcmrow'.$idx] = array($folder_utf8, Q($display_folder), $protected || $folder['virtual']); + $a_js_folders['rcmrow'.$idx] = array($folder_utf8, + Q($display_folder), $protected || $folder['virtual']); } $RCMAIL->plugins->exec_hook('folders_list', array('table' => $table)); diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc index fb48e926b..3a3d690bf 100644 --- a/program/steps/settings/func.inc +++ b/program/steps/settings/func.inc @@ -756,7 +756,6 @@ function rcmail_get_skins() return $skins; } - // register UI objects $OUTPUT->add_handlers(array( 'prefsframe' => 'rcmail_preferences_frame', diff --git a/program/steps/settings/save_prefs.inc b/program/steps/settings/save_prefs.inc index 265c37e90..feeb18341 100644 --- a/program/steps/settings/save_prefs.inc +++ b/program/steps/settings/save_prefs.inc @@ -129,6 +129,8 @@ switch ($CURR_SECTION) if (isset($CONFIG['max_pagesize']) && ($a_user_prefs['pagesize'] > $CONFIG['max_pagesize'])) $a_user_prefs['pagesize'] = (int) $CONFIG['max_pagesize']; + $a_user_prefs['timezone'] = $_SESSION['timezone'] = (string) $a_user_prefs['timezone']; + break; case 'mailbox': diff --git a/skins/default/common.css b/skins/default/common.css index e052552d0..4a45c60b7 100644 --- a/skins/default/common.css +++ b/skins/default/common.css @@ -828,7 +828,7 @@ span.tablink-selected span.tablink a, span.tablink-selected a { - display: block; + display: inline-block; padding: 5px 10px 0 5px; margin-left: 5px; height: 23px; diff --git a/skins/default/ie6hacks.css b/skins/default/ie6hacks.css index 1b8135dfe..aef4f17fb 100644 --- a/skins/default/ie6hacks.css +++ b/skins/default/ie6hacks.css @@ -116,7 +116,7 @@ ul.toolbarmenu li.separator_below height: expression((parseInt(this.parentNode.offsetHeight)-23-parseInt(this.style.top?this.style.top:21))+'px'); } -#directorylistbox +#directorylistbox, #folder-manager { height: expression((parseInt(document.documentElement.clientHeight)-105)+'px'); } diff --git a/skins/default/iehacks.css b/skins/default/iehacks.css index 29ab8cb75..e9b51a796 100644 --- a/skins/default/iehacks.css +++ b/skins/default/iehacks.css @@ -236,3 +236,8 @@ table.records-table thead tr td { margin-top: 2px; } + +#directorylistbox div +{ + min-height: 0; +} diff --git a/skins/default/mail.css b/skins/default/mail.css index 7bb308c06..b5dfb80d0 100644 --- a/skins/default/mail.css +++ b/skins/default/mail.css @@ -383,6 +383,11 @@ border-bottom: 1px solid #EBEBEB; } +#mailboxlist li ul li:last-child +{ + border-bottom: none; +} + #mailboxlist li div { position: absolute; @@ -1007,17 +1012,12 @@ table.headers-table background-color: #EBEBEB; } +#messagebody #full-headers, #messagebody table.headers-table { width: auto; margin: 6px 8px; background-color: #F4F4F4; - border: 1px solid #ccc; -} - -#messageframe table.headers-table -{ - border-bottom: 1px solid #ccc; } table.headers-table tr td @@ -1033,7 +1033,7 @@ table.headers-table tr td.header-title font-weight: bold; text-align: right; white-space: nowrap; - padding: 0 4px; + padding: 0 4px 0 8px; } table.headers-table tr td.header @@ -1046,25 +1046,6 @@ table.headers-table tr td.subject font-weight: bold; } -table.headers-table tr td.all -{ - width: 100%; - color: #666666; - text-align: left; - padding-right: 10px; - text-align: center; - padding: 2px 6px 4px 6px; - border-bottom: 0; -} - -table.headers-table tr td.more-headers -{ - cursor: pointer; - width: 100%; - height: 8px; - border-bottom: 0; -} - #attachment-list { margin: 0; @@ -1075,6 +1056,16 @@ table.headers-table tr td.more-headers background: url(images/icons/attachment.png) 4px 2px no-repeat #DFDFDF; } +#messageframe #attachment-list +{ + border-bottom: 1px solid #ccc; +} + +.messageheaderbox #attachment-list +{ + border-top: 1px solid #ccc; +} + #attachment-list:after { content: "."; @@ -1210,31 +1201,45 @@ div.message-htmlpart div.rcmBody border: 0; } -td.show-headers +#full-headers { - background: url(images/icons/down_small.gif) no-repeat center; + color: #666666; + text-align: center; + padding: 2px 6px; + border-bottom: 1px solid #ccc; + background-color: #EBEBEB; } -td.hide-headers +.messageheaderbox #full-headers { - background: url(images/icons/up_small.gif) no-repeat center; + border-bottom: 0; } -#all-headers +div.more-headers { - height: 150px; - display: none; + cursor: pointer; + height: 8px; + border-bottom: 0; +} + +div.show-headers +{ + background: url(images/icons/down_small.gif) no-repeat center; +} + +div.hide-headers +{ + background: url(images/icons/up_small.gif) no-repeat center; } #headers-source { - margin: 0 5px; + margin: 0 0 2px 0; padding: 0.5em; height: 145px; background: white; overflow: auto; font-size: 11px; - white-space: nowrap; border: 1px solid #999999; display: none; text-align: left; diff --git a/skins/default/templates/addressbook.html b/skins/default/templates/addressbook.html index 668b309a7..d486f2fe7 100644 --- a/skins/default/templates/addressbook.html +++ b/skins/default/templates/addressbook.html @@ -40,6 +40,7 @@ <roundcube:object name="directorylist" id="directorylist" /> <roundcube:object name="groupslist" id="contactgroupslist" /> </div> +<!--[if lte IE 7]><div></div><![endif]--> <div class="boxfooter"> <roundcube:button command="group-create" type="link" title="newcontactgroup" class="buttonPas addgroup" classAct="button addgroup" content=" " /> <roundcube:button name="groupmenulink" id="groupmenulink" type="link" title="groupactions" class="button groupactions" onclick="rcmail_ui.show_popup('groupmenu');return false" content=" " /> diff --git a/skins/default/templates/message.html b/skins/default/templates/message.html index 8e8af931f..d59210c40 100644 --- a/skins/default/templates/message.html +++ b/skins/default/templates/message.html @@ -50,6 +50,7 @@ <div id="messageframe"> <div class="boxlistcontent" style="top:0; overflow-x:auto"> <roundcube:object name="messageHeaders" class="headers-table" cellspacing="0" cellpadding="2" addicon="/images/icons/silhouette.png" summary="Message headers" /> +<roundcube:object name="messageFullHeaders" id="full-headers" /> <roundcube:object name="messageAttachments" id="attachment-list" /> <roundcube:object name="blockedObjects" id="remote-objects-message" /> diff --git a/skins/default/templates/messagepreview.html b/skins/default/templates/messagepreview.html index fbece6bc3..bfd7d7d92 100644 --- a/skins/default/templates/messagepreview.html +++ b/skins/default/templates/messagepreview.html @@ -9,6 +9,7 @@ <div class="messageheaderbox"> <roundcube:button command="permaurl" image="/images/icons/extwin.png" width="15" height="15" title="openinextwin" id="messageviewlink" target="_blank" /> <roundcube:object name="messageHeaders" class="headers-table" cellspacing="0" cellpadding="2" addicon="/images/icons/silhouette.png" summary="Message headers" /> +<roundcube:object name="messageFullHeaders" id="full-headers" /> <roundcube:object name="messageAttachments" id="attachment-list" /> </div> |