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> | 
