thomascube
2008-04-05 e70d6ea64e711096af36b1234f8545b870ea5f45
Apply changes from trunk to 0.1-stable

4 files added
56 files modified
1 files deleted
1639 ■■■■■ changed files
INSTALL 2 ●●● patch | view | raw | blame | history
SQL/mysql.initial.sql 11 ●●●● patch | view | raw | blame | history
SQL/mysql.update-0.1a.sql 51 ●●●●● patch | view | raw | blame | history
SQL/mysql.update.sql 24 ●●●●● patch | view | raw | blame | history
SQL/mysql5.initial.sql 23 ●●●● patch | view | raw | blame | history
SQL/postgres.initial.sql 14 ●●●● patch | view | raw | blame | history
SQL/postgres.update.sql 24 ●●●●● patch | view | raw | blame | history
SQL/sqlite.initial.sql 16 ●●●●● patch | view | raw | blame | history
SQL/sqlite.update.sql 11 ●●●●● patch | view | raw | blame | history
config/db.inc.php.dist 2 ●●● patch | view | raw | blame | history
config/main.inc.php.dist 12 ●●●●● patch | view | raw | blame | history
index.php 16 ●●●●● patch | view | raw | blame | history
installer/check.php 12 ●●●● patch | view | raw | blame | history
installer/config.php 6 ●●●● patch | view | raw | blame | history
installer/index.php 17 ●●●● patch | view | raw | blame | history
installer/rcube_install.php 4 ●●● patch | view | raw | blame | history
installer/test.php 63 ●●●● patch | view | raw | blame | history
installer/welcome.html 1 ●●●● patch | view | raw | blame | history
program/include/main.inc 27 ●●●●● patch | view | raw | blame | history
program/include/rcube_db.inc 12 ●●●●● patch | view | raw | blame | history
program/include/rcube_imap.inc 63 ●●●●● patch | view | raw | blame | history
program/include/rcube_ldap.inc 16 ●●●● patch | view | raw | blame | history
program/include/rcube_mdb2.inc 52 ●●●●● patch | view | raw | blame | history
program/include/rcube_shared.inc 3 ●●●●● patch | view | raw | blame | history
program/include/rcube_user.inc 4 ●●●● patch | view | raw | blame | history
program/js/app.js 107 ●●●●● patch | view | raw | blame | history
program/js/list.js 7 ●●●● patch | view | raw | blame | history
program/js/tiny_mce/themes/advanced/css/editor_content.css 58 ●●●●● patch | view | raw | blame | history
program/lib/imap.inc 60 ●●●● patch | view | raw | blame | history
program/localization/en_GB/labels.inc 4 ●●●● patch | view | raw | blame | history
program/localization/en_US/labels.inc 4 ●●●● patch | view | raw | blame | history
program/localization/fi/labels.inc 8 ●●●● patch | view | raw | blame | history
program/localization/fr/labels.inc 11 ●●●● patch | view | raw | blame | history
program/localization/fr/messages.inc 5 ●●●●● patch | view | raw | blame | history
program/localization/ge/labels.inc 257 ●●●●● patch | view | raw | blame | history
program/localization/ge/messages.inc 16 ●●●●● patch | view | raw | blame | history
program/localization/hu/messages.inc 118 ●●●● patch | view | raw | blame | history
program/localization/index.inc 1 ●●●● patch | view | raw | blame | history
program/localization/ku/labels.inc 189 ●●●●● patch | view | raw | blame | history
program/localization/ku/messages.inc 79 ●●●●● patch | view | raw | blame | history
program/localization/nl_NL/labels.inc 6 ●●●● patch | view | raw | blame | history
program/localization/pl/labels.inc 4 ●●●● patch | view | raw | blame | history
program/localization/pl/messages.inc 4 ●●●● patch | view | raw | blame | history
program/localization/se/labels.inc 4 ●●●● patch | view | raw | blame | history
program/localization/zh_CN/labels.inc 8 ●●●● patch | view | raw | blame | history
program/localization/zh_CN/messages.inc 5 ●●●●● patch | view | raw | blame | history
program/steps/mail/compose.inc 10 ●●●● patch | view | raw | blame | history
program/steps/mail/func.inc 6 ●●●● patch | view | raw | blame | history
program/steps/mail/sendmail.inc 26 ●●●● patch | view | raw | blame | history
program/steps/mail/show.inc 4 ●●●● patch | view | raw | blame | history
program/steps/mail/viewsource.inc 26 ●●●● patch | view | raw | blame | history
program/steps/settings/func.inc 11 ●●●● patch | view | raw | blame | history
program/steps/settings/manage_folders.inc 8 ●●●● patch | view | raw | blame | history
robots.txt 2 ●●●●● patch | view | raw | blame | history
skins/default/common.css 1 ●●●● patch | view | raw | blame | history
skins/default/editor_content.css 68 ●●●● patch | view | raw | blame | history
skins/default/includes/header.html 2 ●●● patch | view | raw | blame | history
skins/default/mail.css 5 ●●●●● patch | view | raw | blame | history
skins/default/settings.css 25 ●●●● patch | view | raw | blame | history
skins/default/templates/login.html 2 ●●● patch | view | raw | blame | history
skins/default/templates/printmessage.html 2 ●●● patch | view | raw | blame | history
INSTALL
@@ -35,7 +35,7 @@
   - /temp
   - /logs
3. Create a new database and a database user for RoundCube (see DATABASE SETUP)
4. Point your browser to http:///url-to-roundcube/installer/
4. Point your browser to http://url-to-roundcube/installer/
5. Follow the instructions of the install script (or see MANUAL CONFINGURATION)
6. After creating and testing the configuration, remove the installer directory
7. Done!
SQL/mysql.initial.sql
@@ -1,5 +1,5 @@
-- RoundCube Webmail initial database structure
-- Version 0.1-rc1
-- Version 0.1
-- 
-- --------------------------------------------------------
@@ -16,9 +16,7 @@
  `created` datetime NOT NULL default '0000-00-00 00:00:00',
  `data` longtext NOT NULL,
  PRIMARY KEY  (`cache_id`),
  KEY `user_id` (`user_id`),
  KEY `cache_key` (`cache_key`),
  KEY `session_id` (`session_id`)
  INDEX `user_cache_index` (`user_id`,`cache_key`)
);
-- --------------------------------------------------------
@@ -118,10 +116,7 @@
  `size` int(11) unsigned NOT NULL default '0',
  `headers` text NOT NULL,
  `structure` text,
  PRIMARY KEY  (`message_id`),
  KEY `user_id` (`user_id`),
  KEY `idx` (`idx`),
  KEY `uid` (`uid`),
  PRIMARY KEY (`message_id`),
  UNIQUE `uniqueness` (`user_id`, `cache_key`, `uid`)
);
SQL/mysql.update-0.1a.sql
File was deleted
SQL/mysql.update.sql
@@ -1,21 +1,17 @@
-- RoundCube Webmail update script for MySQL databases
-- Updates from version 0.1-beta and 0.1-beta2
-- Updates from version 0.1-stable to 0.1.1
TRUNCATE TABLE `messages`;
ALTER TABLE `messages`
  DROP `body`,
  DROP INDEX `idx`,
  DROP INDEX `uid`
ALTER TABLE `cache`
  DROP INDEX `cache_key`,
  ADD `structure` TEXT,
  ADD UNIQUE `uniqueness` (`user_id`, `cache_key`, `uid`);
  DROP INDEX `session_id`,
  ADD INDEX `user_cache_index` (`user_id`,`cache_key`);
ALTER TABLE `identities`
  ADD `html_signature` tinyint(1) default 0 NOT NULL;
ALTER TABLE `session` CHANGE `ip` `ip` VARCHAR(40)
-- Uncomment these lines if you're using MySQL 4.1 or higher
-- ALTER TABLE `users`
--  DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci,
--  CHANGE `username` `username` VARCHAR( 128 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
--  CHANGE `alias` `alias` VARCHAR( 128 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
ALTER TABLE `users`
    ADD INDEX `username_index` (`username`),
    ADD INDEX `alias_index` (`alias`);
SQL/mysql5.initial.sql
@@ -1,5 +1,5 @@
-- RoundCube Webmail initial database structure
-- Version 0.1-rc1
-- Version 0.1
-- --------------------------------------------------------
@@ -15,7 +15,7 @@
 `ip` varchar(40) NOT NULL,
 `vars` text NOT NULL,
 PRIMARY KEY(`sess_id`)
) TYPE=MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;
) TYPE=INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;
-- Table structure for table `users`
@@ -29,8 +29,10 @@
 `last_login` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
 `language` varchar(5) NOT NULL DEFAULT 'en',
 `preferences` text,
 PRIMARY KEY(`user_id`)
) TYPE=MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;
 PRIMARY KEY(`user_id`),
 INDEX `username_index` (`username`),
 INDEX `alias_index` (`alias`)
) TYPE=INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;
-- Table structure for table `messages`
@@ -52,14 +54,12 @@
 `headers` text NOT NULL,
 `structure` text,
 PRIMARY KEY(`message_id`),
 INDEX `idx`(`idx`),
 INDEX `uid`(`uid`),
 UNIQUE `uniqueness` (`user_id`, `cache_key`, `uid`),
 CONSTRAINT `user_id_fk_messages` FOREIGN KEY (`user_id`)
   REFERENCES `users`(`user_id`)
     ON DELETE CASCADE
     ON UPDATE CASCADE
) TYPE=MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;
) TYPE=INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;
-- Table structure for table `cache`
@@ -72,13 +72,12 @@
 `data` longtext NOT NULL,
 `user_id` int(10) UNSIGNED NOT NULL DEFAULT '0',
 PRIMARY KEY(`cache_id`),
 INDEX `cache_key`(`cache_key`),
 INDEX `session_id`(`session_id`),
 INDEX `user_cache_index` (`user_id`,`cache_key`),
 CONSTRAINT `user_id_fk_cache` FOREIGN KEY (`user_id`)
   REFERENCES `users`(`user_id`)
     ON DELETE CASCADE
     ON UPDATE CASCADE
) TYPE=MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;
) TYPE=INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;
-- Table structure for table `contacts`
@@ -98,7 +97,7 @@
   REFERENCES `users`(`user_id`)
     ON DELETE CASCADE
     ON UPDATE CASCADE
) TYPE=MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;
) TYPE=INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;
-- Table structure for table `identities`
@@ -120,7 +119,7 @@
   REFERENCES `users`(`user_id`)
     ON DELETE CASCADE
     ON UPDATE CASCADE
) TYPE=MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;
) TYPE=INNODB CHARACTER SET utf8 COLLATE utf8_general_ci;
SET FOREIGN_KEY_CHECKS=1;
SQL/postgres.initial.sql
@@ -26,7 +26,6 @@
);
--
-- Table "session"
-- Name: session; Type: TABLE; Schema: public; Owner: postgres
@@ -61,7 +60,7 @@
CREATE TABLE identities (
    identity_id integer DEFAULT nextval('identity_ids'::text) PRIMARY KEY,
    user_id integer NOT NULL REFERENCES users (user_id),
    user_id integer NOT NULL REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
    del integer DEFAULT 0 NOT NULL,
    standard integer DEFAULT 0 NOT NULL,
    name character varying(128) NOT NULL,
@@ -73,6 +72,7 @@
    html_signature integer DEFAULT 0 NOT NULL
);
CREATE INDEX identities_user_id_idx ON identities (user_id);
--
@@ -94,7 +94,7 @@
CREATE TABLE contacts (
    contact_id integer DEFAULT nextval('contact_ids'::text) PRIMARY KEY,
    user_id integer NOT NULL REFERENCES users (user_id),
    user_id integer NOT NULL REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
    changed timestamp with time zone DEFAULT now() NOT NULL,
    del integer DEFAULT 0 NOT NULL,
    name character varying(128) DEFAULT ''::character varying NOT NULL,
@@ -104,7 +104,7 @@
    vcard text
);
CREATE INDEX contacts_user_id_idx ON contacts (user_id);
--
-- Sequence "cache_ids"
@@ -124,14 +124,14 @@
CREATE TABLE "cache" (
    cache_id integer DEFAULT nextval('cache_ids'::text) PRIMARY KEY,
    user_id integer NOT NULL REFERENCES users (user_id),
    user_id integer NOT NULL REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
    session_id character varying(40) REFERENCES "session" (sess_id),
    cache_key character varying(128) DEFAULT ''::character varying NOT NULL,
    created timestamp with time zone DEFAULT now() NOT NULL,
    data text NOT NULL
);
CREATE INDEX cache_user_id_idx ON "cache" (user_id, cache_key);
--
-- Sequence "message_ids"
@@ -151,7 +151,7 @@
CREATE TABLE "messages" (
    message_id integer DEFAULT nextval('message_ids'::text) PRIMARY KEY,
    user_id integer NOT NULL REFERENCES users (user_id),
    user_id integer NOT NULL REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
    del integer DEFAULT 0 NOT NULL,
    cache_key character varying(128) DEFAULT ''::character varying NOT NULL,
    created timestamp with time zone DEFAULT now() NOT NULL,
SQL/postgres.update.sql
@@ -1,12 +1,16 @@
-- RoundCube Webmail update script for Postres databases
-- Updates from version 0.1-beta and older
-- RoundCube Webmail update script for Postgres databases
-- Updates from version 0.1-stable to 0.1.1
ALTER TABLE "messages" DROP body;
ALTER TABLE "messages" ADD structure TEXT;
ALTER TABLE "messages" ADD UNIQUE (user_id, cache_key, uid);
CREATE INDEX cache_user_id_idx ON cache (user_id, cache_key);
CREATE INDEX contacts_user_id_idx ON contacts (user_id);
CREATE INDEX identities_user_id_idx ON identities (user_id);
ALTER TABLE "identities" ADD html_signature INTEGER;
ALTER TABLE "identities" ALTER html_signature SET DEFAULT 0;
UPDATE identities SET html_signature = 0;
ALTER TABLE "identities" ALTER html_signature SET NOT NULL;
-- added ON DELETE/UPDATE actions
ALTER TABLE messages DROP CONSTRAINT messages_user_id_fkey;
ALTER TABLE messages ADD FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE identities DROP CONSTRAINT identities_user_id_fkey;
ALTER TABLE identities ADD FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE contacts DROP CONSTRAINT contacts_user_id_fkey;
ALTER TABLE contacts ADD FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE cache DROP CONSTRAINT cache_user_id_fkey;
ALTER TABLE cache ADD FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE;
SQL/sqlite.initial.sql
@@ -1,5 +1,5 @@
-- RoundCube Webmail initial database structure
-- Version 0.1-rc1
-- Version 0.1
-- 
-- --------------------------------------------------------
@@ -17,9 +17,7 @@
  data longtext NOT NULL
);
CREATE INDEX ix_cache_user_id ON cache(user_id);
CREATE INDEX ix_cache_cache_key ON cache(cache_key);
CREATE INDEX ix_cache_session_id ON cache(session_id);
CREATE INDEX ix_cache_user_cache_key ON cache(user_id, cache_key);
-- --------------------------------------------------------
@@ -82,7 +80,6 @@
  preferences text NOT NULL default ''
);
-- --------------------------------------------------------
-- 
@@ -115,14 +112,11 @@
  subject varchar(255) NOT NULL default '',
  "from" varchar(255) NOT NULL default '',
  "to" varchar(255) NOT NULL default '',
  cc varchar(255) NOT NULL default '',
  date datetime NOT NULL default '0000-00-00 00:00:00',
  "cc" varchar(255) NOT NULL default '',
  "date" datetime NOT NULL default '0000-00-00 00:00:00',
  size integer NOT NULL default '0',
  headers text NOT NULL,
  structure text
);
CREATE INDEX ix_messages_user_id ON messages(user_id);
CREATE INDEX ix_messages_cache_key ON messages(cache_key);
CREATE INDEX ix_messages_idx ON messages(idx);
CREATE INDEX ix_messages_uid ON messages(uid);
CREATE INDEX ix_messages_user_cache_uid ON messages(user_id,cache_key,uid);
SQL/sqlite.update.sql
@@ -1,5 +1,5 @@
-- RoundCube Webmail update script for SQLite databases
-- Updates from version 0.1-beta2 and older
-- Updates from version 0.1-stable to 0.1.1
DROP TABLE messages;
@@ -14,14 +14,11 @@
  subject varchar(255) NOT NULL default '',
  "from" varchar(255) NOT NULL default '',
  "to" varchar(255) NOT NULL default '',
  cc varchar(255) NOT NULL default '',
  date datetime NOT NULL default '0000-00-00 00:00:00',
  "cc" varchar(255) NOT NULL default '',
  "date" datetime NOT NULL default '0000-00-00 00:00:00',
  size integer NOT NULL default '0',
  headers text NOT NULL,
  structure text
);
CREATE INDEX ix_messages_user_id ON messages(user_id);
CREATE INDEX ix_messages_cache_key ON messages(cache_key);
CREATE INDEX ix_messages_idx ON messages(idx);
CREATE INDEX ix_messages_uid ON messages(uid);
CREATE INDEX ix_messages_user_cache_uid ON messages(user_id,cache_key,uid);
config/db.inc.php.dist
@@ -15,7 +15,7 @@
$rcmail_config = array();
// PEAR database DSN for read/write operations
// format is db_provider://user:password@host/databse
// format is db_provider://user:password@host/database
// currently supported db_providers: mysql, mysqli, pgsql, sqlite, mssql
$rcmail_config['db_dsnw'] = 'mysql://roundcube:pass@localhost/roundcubemail';
config/main.inc.php.dist
@@ -180,6 +180,9 @@
// 0 = ask the user, 1 = send automatically, 2 = ignore (never send or ask)
$rcmail_config['mdn_requests'] = 0;
// Use this charset as fallback for message decoding
$rcmail_config['default_charset'] = 'ISO-8859-1';
// Make use of the built-in spell checker. It is based on GoogieSpell.
// Since Google only accepts connections over https your PHP installatation
// requires to be compiled with Open SSL support
@@ -199,6 +202,9 @@
// path to a text file which will be added to each sent message
// paths are relative to the RoundCube root folder
$rcmail_config['generic_message_footer'] = '';
// add a received header to outgoing mails containing the creators IP and hostname
$rcmail_config['http_received_header'] = false;
// this string is used as a delimiter for message headers when sending
// leave empty for auto-detection
@@ -238,7 +244,11 @@
$rcmail_config['javascript_config'] = array('read_when_deleted', 'flag_for_deletion');
// try to load host-specific configuration
$rcmail_config['include_host_config'] = FALSE;
$rcmail_config['include_host_config'] = false;
// THIS OPTION WILL ALLOW THE INSTALLER TO RUN AND CAN EXPOSE SENSITIVE CONFIG DATA.
// ONLY ENABLE IT IF YOU'RE REALLY SURE WHAT YOU'RE DOING!
$rcmail_config['enable_installer'] = false;
/***** these settings can be overwritten by user's preferences *****/
index.php
@@ -2,9 +2,9 @@
/*
 +-----------------------------------------------------------------------+
 | RoundCube Webmail IMAP Client                                         |
 | Version 0.1-stable                                                    |
 | Version 0.1.1                                                         |
 |                                                                       |
 | Copyright (C) 2005-2007, RoundCube Dev. - Switzerland                 |
 | Copyright (C) 2005-2008, RoundCube Dev. - Switzerland                 |
 | Licensed under the GNU GPL                                            |
 |                                                                       |
 | Redistribution and use in source and binary forms, with or without    |
@@ -41,7 +41,7 @@
*/
// application constants
define('RCMAIL_VERSION', '0.1');
define('RCMAIL_VERSION', '0.1.1');
define('RCMAIL_CHARSET', 'UTF-8');
define('JS_OBJECT_NAME', 'rcmail');
@@ -103,8 +103,12 @@
if ($_action != 'get' && $_action != 'viewsource')
{
  // use gzip compression if supported
  if (function_exists('ob_gzhandler') && !ini_get('zlib.output_compression'))
  if (function_exists('ob_gzhandler')
    && !ini_get('zlib.output_compression')
    && ini_get('output_handler') != 'ob_gzhandler')
  {
    ob_start('ob_gzhandler');
  }
  else
    ob_start();
}
@@ -156,7 +160,7 @@
    $OUTPUT->show_message("cookiesdisabled", 'warning');
  }
  else if ($_SESSION['temp'] && !empty($_POST['_user']) && isset($_POST['_pass']) &&
           rcmail_login(get_input_value('_user', RCUBE_INPUT_POST),
           rcmail_login(trim(get_input_value('_user', RCUBE_INPUT_POST), ' '),
              get_input_value('_pass', RCUBE_INPUT_POST, true, 'ISO-8859-1'), $host))
  {
    // create new session ID
@@ -241,7 +245,7 @@
if (empty($USER->ID))
{
  // check if installer is still active
  if (is_file('./installer/index.php'))
  if ($CONFIG['enable_installer'] && is_readable('./installer/index.php'))
    $OUTPUT->add_footer('
  <div style="background:#ef9398; border:2px solid #dc5757; padding:0.5em; margin:2em auto; width:50em">
  <h2 style="margin-top:0.2em">Installer script is still accessible</h2>
installer/check.php
@@ -1,7 +1,7 @@
<form action="index.php" method="get">
<?php
$required_php_exts = array('PCRE' => 'pcre', 'Session' => 'session', 'Sockets' => 'sockets');
$required_php_exts = array('PCRE' => 'pcre', 'Session' => 'session');
$optional_php_exts = array('FileInfo' => 'fileinfo', 'Libiconv' => 'iconv',
    'Multibyte' => 'mbstring', 'OpenSSL' => 'openssl', 'Mcrypt' => 'mcrypt', 'GD' => 'gd');
@@ -37,13 +37,13 @@
<h3>Checking PHP version</h3>
<?php
if (phpversion() > 4.3) {
    $RCI->pass('Version', 'PHP ' . phpversion() . ' detected');
define('MIN_PHP_VERSION', '4.3.1');
if (version_compare(PHP_VERSION, MIN_PHP_VERSION, '>=')) {
    $RCI->pass('Version', 'PHP ' . PHP_VERSION . ' detected');
}
else {
    $RCI->fail('Version', 'PHP Version 4.3.1 or greater is required');
    $RCI->fail('Version', 'PHP Version ' . MIN_PHP_VERSION . ' or greater is required ' . PHP_VERSION . ' detected');
}
?>
<h3>Checking PHP extensions</h3>
@@ -65,7 +65,7 @@
?>
<p class="hint">These extensions are <em>optional</em> but recommended to get the best performance:</p>
<p class="hint">The next couple of extensions are <em>optional</em> but recommended to get the best performance:</p>
<?php
foreach ($optional_php_exts AS $name => $ext) {
installer/config.php
@@ -20,10 +20,14 @@
  'htmleditor' => 1,
);
// allow the current user to get to the next step
$_SESSION['allowinstaller'] = true;
if (!empty($_POST['submit'])) {
  
  echo '<p class="notice">Copy the following configurations and save them in two files (names above the text box)';
  echo ' within the <tt>config/</tt> directory of your RoundCube installation.</p>';
  echo ' within the <tt>config/</tt> directory of your RoundCube installation.<br/>';
  echo ' Make sure that there are no characters outside the <tt>&lt;?php ?&gt;</tt> brackets when saving the files.</p>';
  
  $textbox = new textarea(array('rows' => 16, 'cols' => 60, 'class' => "configfile"));
  
installer/index.php
@@ -22,12 +22,11 @@
<div id="content">
<h1>RoundCube Webmail Installer</h1>
<?php
  ini_set('error_reporting', E_ALL&~E_NOTICE);
  ini_set('display_errors', 1);
  session_start();
  $docroot = realpath(dirname(__FILE__) . '/../');
  $include_path  = $docroot . '/program/lib' . PATH_SEPARATOR . $docroot . '/program' . PATH_SEPARATOR . ini_get('include_path');
@@ -36,8 +35,19 @@
  require_once 'rcube_install.php';
  $RCI = rcube_install::get_instance();
  $RCI->load_config();
  // exit if installation is complete
  if ($RCI->configured && !$RCI->getprop('enable_installer') && !$_SESSION['allowinstaller']) {
    header("HTTP/1.0 404 Not Found");
    echo '<h2 class="error">The installer is disabled!</h2>';
    echo '<p>To enable it again, set <tt>$rcmail_config[\'enable_installer\'] = true;</tt> in config/main.inc.php</p>';
    echo '</div></body></html>';
    exit;
  }
  
?>
<h1>RoundCube Webmail Installer</h1>
<ol id="progress">
<?php
@@ -51,7 +61,6 @@
</ol>
<?php
$include_steps = array('welcome.html', 'check.php', 'config.php', 'test.php');
if ($include_steps[$RCI->step]) {
installer/rcube_install.php
@@ -171,7 +171,7 @@
        $out);
    }
    
    return $out;
    return trim($out);
  }
  
  
@@ -305,6 +305,8 @@
        if (eregi(';$', trim($line))) {
          $DB->query($buff);
          $buff = '';
          if ($this->get_error())
            break;
        }
      }
    }
installer/test.php
@@ -31,11 +31,38 @@
?>
<h3>Check if directories are writable</h3>
<p>RoundCube may need to write/save files into these directories</p>
<?php
if ($RCI->configured) {
    $pass = false;
    foreach (array($RCI->config['temp_dir'],$RCI->config['log_dir']) as $dir) {
        $dirpath = $dir{0} == '/' ? $dir : $docroot . '/' . $dir;
        if (is_writable(realpath($dirpath))) {
            $RCI->pass($dir);
            $pass = true;
        }
        else {
            $RCI->fail($dir, 'not writeable for the webserver');
        }
        echo '<br />';
    }
    if (!$pass)
        echo '<p class="hint">Use <tt>chmod</tt> or <tt>chown</tt> to grant write privileges to the webserver</p>';
}
else {
    $RCI->fail('Config', 'Could not read config files');
}
?>
<h3>Check configured database settings</h3>
<?php
$db_working = false;
if (!empty($RCI->config)) {
if ($RCI->configured) {
    if (!empty($RCI->config['db_backend']) && !empty($RCI->config['db_dsnw'])) {
        echo 'Backend: ';
@@ -53,7 +80,7 @@
        }
        else {
            $RCI->fail('DSN (write)', $db_error_msg);
            echo '<p class="hint">Make sure that the configured database extists and that the user as write privileges<br />';
            echo '<p class="hint">Make sure that the configured database exists and that the user has write privileges<br />';
            echo 'DSN: ' . $RCI->config['db_dsnw'] . '</p>';
            if ($RCI->config['db_backend'] == 'mdb2')
              echo '<p class="hint">There are known problems with MDB2 running on PHP 4. Try setting <tt>db_backend</tt> to \'db\' instead</p>';
@@ -93,12 +120,12 @@
// more database tests
if ($db_working) {
    // write test
    $db_write = $DB->query("INSERT INTO {$RCI->config['db_table_cache']} (session_id, cache_key, data, user_id) VALUES (?, ?, ?, 0)", '1234567890abcdef', 'test', 'test');
    $insert_id = $DB->insert_id($RCI->config['db_sequence_cache']);
    if ($db_write && $insert_id) {
    $insert_id = md5(uniqid());
    $db_write = $DB->query("INSERT INTO {$RCI->config['db_table_session']} (sess_id, created, ip, vars) VALUES (?, ".$DB->now().", '127.0.0.1', 'foo')", $insert_id);
    if ($db_write) {
      $RCI->pass('DB Write');
      $DB->query("DELETE FROM {$RCI->config['db_table_cache']} WHERE cache_id=?", $insert_id);
      $DB->query("DELETE FROM {$RCI->config['db_table_session']} WHERE sess_id=?", $insert_id);
    }
    else {
      $RCI->fail('DB Write', $RCI->get_error());
@@ -137,11 +164,11 @@
  $pass = $RCI->getprop('smtp_pass', '(none)');
  
  if ($user == '%u') {
    $user_field = new textfield(array('name' => '_user'));
    $user = $user_field->show($_POST['_user']);
    $user_field = new textfield(array('name' => '_smtp_user'));
    $user = $user_field->show($_POST['_smtp_user']);
  }
  if ($pass == '%p') {
    $pass_field = new passwordfield(array('name' => '_pass'));
    $pass_field = new passwordfield(array('name' => '_smtp_pass'));
    $pass = $pass_field->show();
  }
  
@@ -168,8 +195,8 @@
      preg_match('/^' . $RCI->email_pattern . '$/i', trim($_POST['_to']))) {
  
    $headers = array(
      'From' => trim($_POST['_from']),
      'To'  => trim($_POST['_to']),
      'From'    => trim($_POST['_from']),
      'To'      => trim($_POST['_to']),
      'Subject' => 'Test message from RoundCube',
    );
@@ -180,11 +207,13 @@
    if ($RCI->getprop('smtp_server')) {
      $CONFIG = $RCI->config;
      
      if (!empty($_POST['_user']))
        $CONFIG['smtp_user'] = $_POST['_user'];
      if (!empty($_POST['_pass']))
        $CONFIG['smtp_pass'] = $_POST['_pass'];
      if (!empty($_POST['_smtp_user'])) {
        $CONFIG['smtp_user'] = $_POST['_smtp_user'];
      }
      if (!empty($_POST['_smtp_pass'])) {
        $CONFIG['smtp_pass'] = $_POST['_smtp_pass'];
      }
      $mail_object  = new rc_mail_mime();
      $send_headers = $mail_object->headers($headers);
      
installer/welcome.html
@@ -10,7 +10,6 @@
    <ul>
      <li>PCRE (perl compatible regular expression)</li>
      <li>Session support</li>
      <li>Sockets enabled</li>
      <li>Libiconv (recommended)</li>
      <li>OpenSSL (recommended)</li>
      <li>FileInfo (optional)</li>
program/include/main.inc
@@ -74,6 +74,7 @@
  
  $DB = new $dbclass($CONFIG['db_dsnw'], $CONFIG['db_dsnr'], $CONFIG['db_persistent']);
  $DB->sqlite_initials = $INSTALL_PATH.'SQL/sqlite.initial.sql';
  $DB->set_debug((bool)$CONFIG['sql_debug']);
  $DB->db_connect('w');
  // use database for storing session data
@@ -289,6 +290,9 @@
function rcmail_set_imap_prop()
  {
  global $CONFIG, $IMAP;
  if (!empty($CONFIG['default_charset']))
    $IMAP->set_charset($CONFIG['default_charset']);
  // set root dir from config
  if (!empty($CONFIG['imap_root']))
@@ -955,22 +959,23 @@
    'X-USER-DEFINED' => 'ISO-8859-15',
    'ISO-8859-8-I'   => 'ISO-8859-8',
    'KS_C_5601-1987' => 'EUC-KR',
    'GB2312'         => 'GB18030'
  );
  // convert charset using iconv module  
  if (function_exists('iconv') && $from != 'UTF-7' && $to != 'UTF-7')
    {
    $aliases['GB2312'] = 'GB18030';
    return iconv(($aliases[$from] ? $aliases[$from] : $from), ($aliases[$to] ? $aliases[$to] : $to) . "//IGNORE", $str);
    }
  // convert charset using mbstring module  
  if ($MBSTRING)
    {
    $mb_map = $aliases + array('UTF-7' => 'UTF7-IMAP');
    $aliases['UTF-7'] = 'UTF7-IMAP';
    $aliases['WINDOWS-1257'] = 'ISO-8859-13';
    
    // return if convert succeeded
    if (($out = mb_convert_encoding($str, ($mb_map[$to] ? $mb_map[$to] : $to), ($mb_map[$from] ? $mb_map[$from] : $from))) != '')
    if (($out = mb_convert_encoding($str, ($aliases[$to] ? $aliases[$to] : $to), ($aliases[$from] ? $aliases[$from] : $from))) != '')
      return $out;
    }
    
@@ -1372,6 +1377,7 @@
/**
 * Replace all css definitions with #container [def]
 * and remove css-inlined scripting
 *
 * @param string CSS source code
 * @param string Container ID to use as prefix
@@ -1381,6 +1387,10 @@
  {
  $a_css_values = array();
  $last_pos = 0;
  // ignore the whole block if evil styles are detected
  if (stristr($source, 'expression') || stristr($source, 'behavior'))
    return '';
  // cut out all contents between { and }
  while (($pos = strpos($source, '{', $last_pos)) && ($pos2 = strpos($source, '}', $pos)))
@@ -1391,7 +1401,7 @@
    $last_pos = $pos+2;
  }
  // remove html commends and add #container to each tag selector.
  // remove html comments and add #container to each tag selector.
  // also replace body definition because we also stripped off the <body> tag
  $styles = preg_replace(
    array(
@@ -1562,7 +1572,10 @@
function format_email_recipient($email, $name='')
  {
  if ($name && $name != $email)
    return sprintf('%s <%s>', strpos($name, ",") ? '"'.$name.'"' : $name, $email);
    {
    // Special chars as defined by RFC 822 need to in quoted string (or escaped).
    return sprintf('%s <%s>', preg_match('/[\(\)\<\>\\\.\[\]@,;:"]/', $name) ? '"'.addcslashes($name, '"').'"' : $name, $email);
    }
  else
    return $email;
  }
@@ -1786,10 +1799,6 @@
        $foldername = $fname;
        }
      }
    // add unread message count display
    if ($unread_count = $IMAP->messagecount($folder['id'], 'RECENT', ($folder['id']==$mbox_name)))
      $foldername .= sprintf(' (%d)', $unread_count);
    // make folder name safe for ids and class names
    $folder_id = preg_replace('/[^A-Za-z0-9\-_]/', '', $folder['id']);
program/include/rcube_db.inc
@@ -153,8 +153,18 @@
    $this->db_handle = $this->dsn_connect($dsn);
    $this->db_connected = $this->db_handle ? TRUE : FALSE;
    }
  /**
   * Activate/deactivate debug mode
   * (not implemented)
   */
  function set_debug($dbg = true)
  {
    
  }
  /**
   * Getter for error state
   *
program/include/rcube_imap.inc
@@ -51,6 +51,7 @@
  var $sort_order = 'DESC';
  var $delimiter = NULL;
  var $caching_enabled = FALSE;
  var $default_charset = 'ISO-8859-1';
  var $default_folders = array('INBOX');
  var $default_folders_lc = array('inbox');
  var $cache = array();
@@ -200,6 +201,20 @@
    
    if (empty($this->delimiter))
      $this->get_hierarchy_delimiter();
    }
  /**
   * Set default message charset
   *
   * This will be used for message decoding if a charset specification is not available
   *
   * @param  string   Charset string
   * @access public
   */
  function set_charset($cs)
    {
    $this->default_charset = $ch;
    }
@@ -1146,7 +1161,7 @@
      
    // normalize filename property
    if ($filename_mime = $struct->d_parameters['filename'] ? $struct->d_parameters['filename'] : $struct->ctype_parameters['name'])
      $struct->filename = $this->decode_mime_string($filename_mime);
      $struct->filename = rcube_imap::decode_mime_string($filename_mime, $this->default_charset);
    else if ($filename_encoded = $struct->d_parameters['filename*'] ? $struct->d_parameters['filename*'] : $struct->ctype_parameters['name*'])
    {
      // decode filename according to RFC 2231, Section 4
@@ -1154,7 +1169,7 @@
      $struct->filename = rcube_charset_convert(urldecode($filename_urlencoded), $filename_charset);
    }
    else if (!empty($struct->headers['content-description']))
      $struct->filename = $this->decode_mime_string($struct->headers['content-description']);
      $struct->filename = rcube_imap::decode_mime_string($struct->headers['content-description'], $this->default_charset);
      
    return $struct;
    }
@@ -1241,9 +1256,9 @@
      // convert charset (if text or message part)
      if ($o_part->ctype_primary=='text' || $o_part->ctype_primary=='message')
        {
        // assume ISO-8859-1 if no charset specified
        // assume default if no charset specified
        if (empty($o_part->charset))
          $o_part->charset = 'ISO-8859-1';
          $o_part->charset = $this->default_charset;
        $body = rcube_charset_convert($body, $o_part->charset);
        }
@@ -1633,16 +1648,14 @@
  /**
   * Subscribe to a specific mailbox(es)
   *
   * @param string Mailbox name(s)
   * @param array Mailbox name(s)
   * @return boolean True on success
   */ 
  function subscribe($mbox_name)
  function subscribe($a_mboxes)
    {
    if (is_array($mbox_name))
      $a_mboxes = $mbox_name;
    else if (is_string($mbox_name) && strlen($mbox_name))
      $a_mboxes = explode(',', $mbox_name);
    if (!is_array($a_mboxes))
      $a_mboxes = array($a_mboxes);
    // let this common function do the main work
    return $this->_change_subscription($a_mboxes, 'subscribe');
    }
@@ -1651,15 +1664,13 @@
  /**
   * Unsubscribe mailboxes
   *
   * @param string Mailbox name(s)
   * @param array Mailbox name(s)
   * @return boolean True on success
   */
  function unsubscribe($mbox_name)
  function unsubscribe($a_mboxes)
    {
    if (is_array($mbox_name))
      $a_mboxes = $mbox_name;
    else if (is_string($mbox_name) && strlen($mbox_name))
      $a_mboxes = explode(',', $mbox_name);
    if (!is_array($a_mboxes))
      $a_mboxes = array($a_mboxes);
    // let this common function do the main work
    return $this->_change_subscription($a_mboxes, 'unsubscribe');
@@ -2213,6 +2224,9 @@
   */
  function remove_message_cache($key, $index)
    {
    if (!$this->caching_enabled)
      return;
    $this->db->query(
      "DELETE FROM ".get_table_name('messages')."
       WHERE  user_id=?
@@ -2228,6 +2242,9 @@
   */
  function clear_message_cache($key, $start_index=1)
    {
    if (!$this->caching_enabled)
      return;
    $this->db->query(
      "DELETE FROM ".get_table_name('messages')."
       WHERE  user_id=?
@@ -2257,6 +2274,8 @@
    {
    $a = $this->_parse_address_list($input, $decode);
    $out = array();
    // Special chars as defined by RFC 822 need to in quoted string (or escaped).
    $special_chars = '[\(\)\<\>\\\.\[\]@,;:"]';
    
    if (!is_array($a))
      return $out;
@@ -2270,7 +2289,7 @@
      $address = $val['address'];
      $name = preg_replace(array('/^[\'"]/', '/[\'"]$/'), '', trim($val['name']));
      if ($name && $address && $name != $address)
        $string = sprintf('%s <%s>', strpos($name, ',')!==FALSE ? '"'.$name.'"' : $name, $address);
        $string = sprintf('%s <%s>', preg_match("/$special_chars/", $name) ? '"'.addcslashes($name, '"').'"' : $name, $address);
      else if ($address)
        $string = $address;
      else if ($name)
@@ -2297,7 +2316,7 @@
   */
  function decode_header($input, $remove_quotes=FALSE)
    {
    $str = $this->decode_mime_string((string)$input);
    $str = rcube_imap::decode_mime_string((string)$input, $this->default_charset);
    if ($str{0}=='"' && $remove_quotes)
      $str = str_replace('"', '', $str);
    
@@ -2320,6 +2339,10 @@
    $pos = strpos($input, '=?');
    if ($pos !== false)
      {
      // rfc: all line breaks or other characters not found in the Base64 Alphabet must be ignored by decoding software
      // delete all blanks between MIME-lines, differently we can receive unnecessary blanks and broken utf-8 symbols
      $input = preg_replace("/\?=\s+=\?/", '?==?', $input);
      $out = substr($input, 0, $pos);
  
      $end_cs_pos = strpos($input, "?", $pos+2);
@@ -2414,7 +2437,7 @@
      return rcube_charset_convert($body, $ctype_param['charset']);
    // defaults to what is specified in the class header
    return rcube_charset_convert($body,  'ISO-8859-1');
    return rcube_charset_convert($body,  $this->default_charset);
    }
program/include/rcube_ldap.inc
@@ -119,20 +119,20 @@
   */
  function bind($dn, $pass)
  {
    if (!$this->conn)
    if (!$this->conn) {
      return false;
    }
    
    if (@ldap_bind($this->conn, $dn, $pass))
    if (ldap_bind($this->conn, $dn, $pass)) {
      return true;
    else
    {
      raise_error(array(
    }
    raise_error(array(
        'code' => ldap_errno($this->conn),
        'type' => 'ldap',
        'message' => "Bind failed for dn=$dn: ".ldap_error($this->conn)),
      true);
    }
        true);
    return false;
  }
program/include/rcube_mdb2.inc
@@ -48,6 +48,7 @@
  var $db_handle = 0;         // Connection handle
  var $db_error = false;
  var $db_error_msg = '';
  var $debug_mode = false;
  var $a_query_results = array('dummy');
  var $last_res_id = 0;
@@ -94,8 +95,11 @@
  function dsn_connect($dsn)
    {
    // Use persistent connections if available
    $dbh = MDB2::connect($dsn,
      array('persistent' => $this->db_pconn,
    $dbh = MDB2::connect($dsn, array(
        'persistent' => $this->db_pconn,
        'emulate_prepared' => $this->debug_mode,
        'debug' => $this->debug_mode,
        'debug_handler' => 'mdb2_debug_handler',
        'portability' => MDB2_PORTABILITY_ALL ^ MDB2_PORTABILITY_EMPTY_TO_NULL));
    if (MDB2::isError($dbh))
@@ -155,6 +159,21 @@
    $this->db_connected = true;
    }
  /**
   * Activate/deactivate debug mode
   *
   * @param boolean True if SQL queries should be logged
   */
  function set_debug($dbg = true)
  {
    $this->debug_mode = $dbg;
    if ($this->db_connected)
    {
      $this->db_handle->setOption('debug', $dbg);
      $this->db_handle->setOption('emulate_prepared', $dbg);
    }
  }
    
  /**
@@ -413,6 +432,22 @@
    return $this->db_handle->quoteIdentifier($str);
    }
  /**
   * Escapes a string
   *
   * @param  string  The string to be escaped
   * @return string  The escaped string
   * @access public
   * @since  0.1.1
   */
  function escapeSimple($str)
    {
    if (!$this->db_handle)
      $this->db_connect('r');
    return $this->db_handle->escape($str);
    }
  /**
   * Return SQL function for current time and date
@@ -569,4 +604,17 @@
  }  // end class rcube_db
/* this is our own debug handler for the MDB2 connection */
function mdb2_debug_handler(&$db, $scope, $message, $context = array())
{
  if ($scope != 'prepare')
  {
    $debug_output = $scope . '('.$db->db_index.'): ';
    $debug_output .= $message . $db->getOption('log_line_break');
    write_log('sqllog', $debug_output);
  }
}
?>
program/include/rcube_shared.inc
@@ -262,7 +262,10 @@
    header("Etag: $etag");
  
  if ($iscached)
    {
    ob_end_clean();
    exit;
    }
}
program/include/rcube_user.inc
@@ -361,7 +361,7 @@
    // try to resolve user in virtusertable
    if (!empty($CONFIG['virtuser_file']) && !strpos($user, '@'))
      $user_email = self::user2email($user);
      $user_email = rcube_user::user2email($user);
    $DB->query(
      "INSERT INTO ".get_table_name('users')."
@@ -468,7 +468,7 @@
      $arr = preg_split('/\s+/', $data);
      if (count($arr) > 0)
      {
        $email = trim($arr[0]);
        $email = trim(str_replace('\\@', '@', $arr[0]));
        break;
      }
    }
program/js/app.js
@@ -132,7 +132,7 @@
          this.message_list.addEventListener('dblclick', function(o){ p.msglist_dbl_click(o); });
          this.message_list.addEventListener('keypress', function(o){ p.msglist_keypress(o); });
          this.message_list.addEventListener('select', function(o){ p.msglist_select(o); });
          this.message_list.addEventListener('dragstart', function(o){ p.drag_active = true; });
          this.message_list.addEventListener('dragstart', function(o){ p.drag_active = true; if (p.preview_timer) clearTimeout(p.preview_timer); });
          this.message_list.addEventListener('dragend', function(o){ p.drag_active = false; });
          this.message_list.init();
@@ -202,7 +202,7 @@
          }
        if (this.env.messagecount)
          this.enable_command('select-all', 'select-none', 'sort', 'expunge', true);
          this.enable_command('select-all', 'select-none', 'expunge', true);
        if (this.env.messagecount && (this.env.mailbox==this.env.trash_mailbox || this.env.mailbox==this.env.junk_mailbox))
          this.enable_command('purge', true);
@@ -314,7 +314,7 @@
        var input_user = rcube_find_object('rcmloginuser');
        var input_pass = rcube_find_object('rcmloginpwd');
        if (input_user)
          input_user.onkeypress = function(e){ return rcmail.login_user_keypress(e); };
          input_user.onkeyup = function(e){ return rcmail.login_user_keyup(e); };
        if (input_user && input_user.value=='')
          input_user.focus();
        else if (input_pass)
@@ -712,7 +712,7 @@
        break;
      case 'load-attachment':
        var qstring = '_mbox='+this.env.mailbox+'&_uid='+this.env.uid+'&_part='+props.part;
        var qstring = '_mbox='+urlencode(this.env.mailbox)+'&_uid='+this.env.uid+'&_part='+props.part;
        
        // open attachment in frame if it's of a supported mimetype
        if (this.env.uid && props.mimetype && find_in_array(props.mimetype, this.mimetypes)>=0)
@@ -892,7 +892,7 @@
          {
            setTimeout(function(){ ref.printwin.focus(); }, 20);
            if (this.env.action != 'show')
              this.toggle_read_status('read', [uid]);
              this.mark_message('read', uid);
          }
        }
        break;
@@ -1138,7 +1138,7 @@
      }
    // start timer for message preview (wait for double click)
    if (selected && this.env.contentframe)
    if (selected && this.env.contentframe && !list.multi_selecting)
      this.preview_timer = setTimeout(function(){ ref.msglist_get_preview(); }, this.dblclick_time + 10);
    else if (this.env.contentframe)
      this.show_contentframe(false);
@@ -1486,6 +1486,7 @@
  this.mark_message = function(flag, uid)
    {
    var a_uids = new Array();
    var r_uids = new Array();
    var selection = this.message_list ? this.message_list.get_selection() : new Array();
    
    if (uid)
@@ -1496,26 +1497,35 @@
      {
      for (var id, n=0; n<selection.length; n++)
        {
        id = selection[n];
        if ((flag=='read' && this.message_list.rows[id].unread) || (flag=='unread' && !this.message_list.rows[id].unread)
            || (flag=='delete' && !this.message_list.rows[id].deleted) || (flag=='undelete' && this.message_list.rows[id].deleted))
          a_uids[a_uids.length] = id;
          a_uids[a_uids.length] = selection[n];
        }
      }
    for (var id, n=0; n<a_uids.length; n++)
      {
        id = a_uids[n];
        if ((flag=='read' && this.message_list.rows[id].unread)
        || (flag=='unread' && !this.message_list.rows[id].unread)
            || (flag=='delete' && !this.message_list.rows[id].deleted)
        || (flag=='undelete' && this.message_list.rows[id].deleted))
      {
        r_uids[r_uids.length] = id;
      }
      }
    
    // nothing to do
    if (!a_uids.length)
    if (!r_uids.length)
      return;
      
    switch (flag)
      {
        case 'read':
        case 'unread':
          this.toggle_read_status(flag, a_uids);
          this.toggle_read_status(flag, r_uids);
          break;
        case 'delete':
        case 'undelete':
          this.toggle_delete_status(a_uids);
          this.toggle_delete_status(r_uids);
          break;
      }
    };
@@ -1556,7 +1566,7 @@
          rows[uid].icon.src = icn_src;
        }
      }
    this.http_post('mark', '_uid='+a_uids.join(',')+'&_flag='+flag);
  };
  
@@ -1564,7 +1574,7 @@
  this.toggle_delete_status = function(a_uids)
  {
    if (this.env.read_when_deleted)
      this.toggle_read_status('read',a_uids);
      this.mark_message('read',a_uids);
    // if deleting message from "view message" don't bother with delete icon
    if (this.env.action == "show")
@@ -1671,7 +1681,7 @@
  /*********************************************************/
  // handler for keyboard events on the _user field
  this.login_user_keypress = function(e)
  this.login_user_keyup = function(e)
  {
    var key = rcube_event.get_keycode(e);
    var elm;
@@ -2010,7 +2020,7 @@
      // reset vars
      this.env.current_page = 1;
      this.set_busy(true, 'searching');
      this.http_request('search', '_q='+urlencode(value)+(this.env.mailbox ? '&_mbox='+this.env.mailbox : '')+(this.env.source ? '&_source='+urlencode(this.env.source) : ''), true);
      this.http_request('search', '_q='+urlencode(value)+(this.env.mailbox ? '&_mbox='+urlencode(this.env.mailbox) : '')+(this.env.source ? '&_source='+urlencode(this.env.source) : ''), true);
      }
    return true;
    };
@@ -2681,6 +2691,10 @@
      {
      this.http_post('delete-folder', '_mboxes='+urlencode(folder));
      this.set_env('folder', null);
      if (this.gui_objects.createfolderhint)
        this.gui_objects.createfolderhint.innerHTML = '';
      }
    };
@@ -2816,59 +2830,17 @@
  this.subscribe_folder = function(folder)
    {
    var form;
    if ((form = this.gui_objects.editform) && form.elements['_unsubscribed'])
      this.change_subscription('_unsubscribed', '_subscribed', 'subscribe');
    else if (folder)
      this.http_post('subscribe', '_mboxes='+urlencode(folder));
    if (folder)
      this.http_post('subscribe', '_mbox='+urlencode(folder));
    };
  this.unsubscribe_folder = function(folder)
    {
    var form;
    if ((form = this.gui_objects.editform) && form.elements['_subscribed'])
      this.change_subscription('_subscribed', '_unsubscribed', 'unsubscribe');
    else if (folder)
      this.http_post('unsubscribe', '_mboxes='+urlencode(folder));
    if (folder)
      this.http_post('unsubscribe', '_mbox='+urlencode(folder));
    };
    
  this.change_subscription = function(from, to, action)
    {
    var form;
    if (form = this.gui_objects.editform)
      {
      var a_folders = new Array();
      var list_from = form.elements[from];
      for (var i=0; list_from && i<list_from.options.length; i++)
        {
        if (list_from.options[i] && list_from.options[i].selected)
          {
          a_folders[a_folders.length] = list_from.options[i].value;
          list_from[i] = null;
          i--;
          }
        }
      // yes, we have some folders selected
      if (a_folders.length)
        {
        var list_to = form.elements[to];
        var index;
        for (var n=0; n<a_folders.length; n++)
          {
          index = list_to.options.length;
          list_to[index] = new Option(a_folders[n]);
          }
        this.http_post(action, '_mboxes='+urlencode(a_folders.join(',')));
        }
      }
    };
  // helper method to find a specific mailbox row ID
  this.get_folder_row_id = function(folder)
@@ -3491,12 +3463,17 @@
      case 'list':
        if (this.env.messagecount)
          this.enable_command('purge', (this.env.mailbox==this.env.trash_mailbox || this.env.mailbox==this.env.junk_mailbox));
        this.msglist_select(this.message_list);
      this.enable_command('purge', (this.env.mailbox==this.env.trash_mailbox || this.env.mailbox==this.env.junk_mailbox));
    this.msglist_select(this.message_list);
      case 'getunread':
    this.enable_command('sort', (this.env.messagecount > 0));
      case 'expunge':
        this.enable_command('select-all', 'select-none', 'expunge', this.env.messagecount ? true : false);
        break;
      }
    request_obj.reset();
program/js/list.js
@@ -35,6 +35,7 @@
  this.subject_col = -1;
  this.shiftkey = false;
  this.multiselect = false;
  this.multi_selecting = false;
  this.draggable = false;
  this.keyboard = false;
  this.toggleselect = false;
@@ -319,6 +320,7 @@
  {
    this.shift_start = id;
    this.highlight_row(id, false);
    this.multi_selecting = false;
  }
  else
  {
@@ -341,6 +343,7 @@
        this.highlight_row(id, false);
        break;
    }
    this.multi_selecting = true;
  }
  // trigger event if selection changed
@@ -456,6 +459,8 @@
  if (this.selection.join(',') != select_before)
    this.trigger_event('select');
  this.focus();
  return true;
},
@@ -508,7 +513,7 @@
{
  if (this.rows[id] && !multiple)
  {
    if (!this.in_selection(id))
    if (this.selection.length > 1 || !this.in_selection(id))
    {
      this.clear_selection();
      this.selection[0] = id;
program/js/tiny_mce/themes/advanced/css/editor_content.css
New file
@@ -0,0 +1,58 @@
/* This file contains the CSS data for the editable area(iframe) of TinyMCE */
/* You can extend this CSS by adding your own CSS file with the the content_css option */
body, td, pre {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 10px;
}
body {
    background-color: #FFFFFF;
}
.mceVisualAid {
    border: 1px dashed #BBBBBB !important;
}
div.mceVisualAid {
    background-image:url('../images/spacer.gif');
    visibility: visible !important;
}
.mceItemAnchor {
    width: 12px;
    line-height: 6px;
    overflow: hidden;
    padding-left: 12px;
    background-image: url('../images/anchor_symbol.gif');
    background-position: bottom;
    background-repeat: no-repeat;
}
/* Important is needed in Gecko browsers inorder to style links */
/*
a {
    color: green !important;
}
*/
/* Style selection range colors in Gecko browsers */
/*
::-moz-selection {
    background-color: red;
    color: green;
}
*/
/* MSIE specific */
* html body {
    scrollbar-3dlight-color: #F0F0EE;
    scrollbar-arrow-color: #676662;
    scrollbar-base-color: #F0F0EE;
    scrollbar-darkshadow-color: #DDDDDD;
    scrollbar-face-color: #E0E0DD;
    scrollbar-highlight-color: #F0F0EE;
    scrollbar-shadow-color: #F0F0EE;
    scrollbar-track-color: #F5F5F5;
}
program/lib/imap.inc
@@ -161,18 +161,19 @@
}
function iil_ReadLine($fp, $size) {
    $line = '';
    if ($fp) {
        do {
            // FIXME: hardcode size?
            $buffer = fgets($fp, 2048);
            if ($buffer === false) {
                break;
            }
            $line .= $buffer;
        } while ($buffer[strlen($buffer)-1]!="\n");
    }
    return $line;
    $line = '';
    if (!$fp) {
        return $line;
    }
    do {
    // FIXME: hardcode size?
        $buffer = fgets($fp, 2048);
        if ($buffer === false) {
            break;
        }
        $line .= $buffer;
    } while ($buffer[strlen($buffer)-1] != "\n");
    return $line;
}
function iil_MultLine($fp, $line) {
@@ -192,13 +193,16 @@
}
function iil_ReadBytes($fp, $bytes) {
    $data = '';
    $len  = 0;
    do {
        $data.=fread($fp, $bytes-$len);
        $len = strlen($data);
    } while ($len<$bytes);
    return $data;
    $data = '';
    $len  = 0;
    do {
        $data .= fread($fp, $bytes-$len);
        if ($len == strlen($data)) {
            break; //nothing was read -> exit to avoid apache lockups
        }
        $len = strlen($data);
    } while ($len < $bytes);
    return $data;
}
function iil_ReadReply($fp) {
@@ -1596,7 +1600,8 @@
                while ( list($lines_key, $str) = each($lines) ) {
                    list($field, $string) = iil_SplitHeaderLine($str);
                    
                    $field = strtolower($field);
                    $field  = strtolower($field);
                                        $string = ereg_replace("\n[[:space:]]*"," ",$string);
                    
                    switch ($field) {
                    case 'date';
@@ -1607,22 +1612,22 @@
                        $result[$id]->from = $string;
                        break;
                    case 'to':
                        $result[$id]->to = str_replace("\n", " ", $string);
                        $result[$id]->to = $string;
                        break;
                    case 'subject':
                        $result[$id]->subject = str_replace("\n", '', $string);
                        $result[$id]->subject = $string;
                        break;
                    case 'reply-to':
                        $result[$id]->replyto = str_replace("\n", " ", $string);
                        $result[$id]->replyto = $string;
                        break;
                    case 'cc':
                        $result[$id]->cc = str_replace("\n", " ", $string);
                        $result[$id]->cc = $string;
                        break;
                    case 'bcc':
                        $result[$id]->bcc = str_replace("\n", " ", $string);
                        $result[$id]->bcc = $string;
                        break;
                    case 'content-transfer-encoding':
                        $result[$id]->encoding = str_replace("\n", " ", $string);
                        $result[$id]->encoding = $string;
                        break;
                    case 'content-type':
                        $ctype_parts = explode(";", $string);
@@ -1643,7 +1648,7 @@
                    case 'return-receipt-to':
                    case 'disposition-notification-to':
                    case 'x-confirm-reading-to':
                        $result[$id]->mdn_to = str_replace("\n", " ", $string);
                        $result[$id]->mdn_to = $string;
                        break;
                    case 'message-id':
                        $result[$id]->messageID = $string;
@@ -2448,7 +2453,6 @@
    if (fputs($fp, $request)) {
        $line=iil_ReadLine($fp, 100);        
        $sent = fwrite($fp, $message."\r\n");
        flush();
        do {
            $line=iil_ReadLine($fp, 1000);
        } while ($line[0] != 'A');
program/localization/en_GB/labels.inc
@@ -167,7 +167,7 @@
$labels['timezone'] = 'Time zone';
$labels['pagesize'] = 'Rows per page';
$labels['signature'] = 'Signature';
$labels['dstactive'] = 'Daylight savings';
$labels['dstactive'] = 'Summer time';
$labels['htmleditor'] = 'Compose HTML messages';
$labels['htmlsignature'] = 'HTML signature';
$labels['previewpane'] = 'Show preview pane';
@@ -189,4 +189,4 @@
$labels['sortasc'] = 'Sort ascending';
$labels['sortdesc'] = 'Sort descending';
?>
?>
program/localization/en_US/labels.inc
@@ -218,7 +218,7 @@
$labels['timezone']  = 'Time zone';
$labels['pagesize']  = 'Rows per page';
$labels['signature'] = 'Signature';
$labels['dstactive']  = 'Daylight savings';
$labels['dstactive']  = 'Daylight saving time';
$labels['htmleditor'] = 'Compose HTML messages';
$labels['htmlsignature'] = 'HTML signature';
$labels['previewpane'] = 'Show preview pane';
@@ -243,4 +243,4 @@
$labels['sortasc']  = 'Sort ascending';
$labels['sortdesc'] = 'Sort descending';
?>
?>
program/localization/fi/labels.inc
@@ -47,7 +47,7 @@
$labels['mailboxlist'] = 'Kansiot';
$labels['messagesfromto'] = 'Viestit $from-$to/$count';
$labels['messagenrof'] = 'Viesti $nr/$count';
$labels['moveto'] = 'siirrä...';
$labels['moveto'] = 'siirrä kansioon...';
$labels['download'] = 'lataa';
$labels['filename'] = 'Tiedoston nimi';
$labels['filesize'] = 'Tiedoston koko';
@@ -96,7 +96,7 @@
$labels['none'] = 'Ei mitään';
$labels['unread'] = 'Lukemattomat';
$labels['compact'] = 'Tiivistä';
$labels['empty'] = 'Empty';
$labels['empty'] = 'Tyhjennä';
$labels['purge'] = 'Puhdista';
$labels['quota'] = 'Levytila';
$labels['unknown'] = 'tuntematon';
@@ -187,7 +187,7 @@
$labels['deletefolder'] = 'Poista kansio';
$labels['managefolders'] = 'Kansioiden ylläpito';
$labels['sortby'] = 'Järjestä';
$labels['sortasc'] = 'Järjestä nousevasti';
$labels['sortdesc'] = 'Järjestä laskevasti';
$labels['sortasc'] = 'Järjestä nousevasti (a-ö)';
$labels['sortdesc'] = 'Järjestä laskevasti (ö-a)';
?>
program/localization/fr/labels.inc
@@ -10,9 +10,8 @@
 | Licensed under the GNU GPL                                            |
 |                                                                       |
 +-----------------------------------------------------------------------+
 | Author: aldweb <info@aldweb.com>                                      |
 |         Pierre HAEGELI <pierre@haegeli.net>                           |
 |         Mickaël Wolff <rcw@lupusmic.org>                              |
 | Author: Joel S. <joel.s@spijoprod.net>                                |
 |         Jerome Lipowicz <jerome@yayel.com>                            |
 +-----------------------------------------------------------------------+
 @version $Id$
@@ -90,8 +89,8 @@
$labels['backtolist'] = 'Retourner à la liste des messages';
$labels['viewsource'] = 'Voir le source';
$labels['markmessages'] = 'Marquer les messages';
$labels['markread'] = 'comme lus';
$labels['markunread'] = 'comme non lus';
$labels['markread'] = 'Comme lus';
$labels['markunread'] = 'Comme non lus';
$labels['select'] = 'Sélectionner';
$labels['all'] = 'Tous';
$labels['none'] = 'Aucun';
@@ -191,4 +190,4 @@
$labels['sortasc'] = 'Tri ascendant';
$labels['sortdesc'] = 'Tri descendant';
?>
?>
program/localization/fr/messages.inc
@@ -10,9 +10,8 @@
 | Licensed under the GNU GPL                                            |
 |                                                                       |
 +-----------------------------------------------------------------------+
 | Author: aldweb <info@aldweb.com>                                      |
 |         Pierre HAEGELI <pierre@haegeli.net>                           |
 |         Mickaël Wolff <rcw@lupusmic.org>                              |
 | Author: Joel S. <joel.s@spijoprod.net>                                |
 |         Jerome Lipowicz <jerome@yayel.com>                            |
 +-----------------------------------------------------------------------+
 @version $Id$
program/localization/ge/labels.inc
@@ -18,59 +18,42 @@
*/
$labels = array();
// login page
$labels['welcome']   = 'მოგესალმებათ $product';
$labels['username']  = 'მომხმარებელი';
$labels['password']  = 'პაროლი';
$labels['server']    = 'სერვერი';
$labels['login']     = 'შესვლა';
// taskbar
$labels['logout']   = 'გამოსვლა';
$labels['mail']     = 'ელ–ფოსტა';
$labels['welcome'] = 'მოგესალმებათ $product';
$labels['username'] = 'მომხმარებელი';
$labels['password'] = 'პაროლი';
$labels['server'] = 'სერვერი';
$labels['login'] = 'შესვლა';
$labels['logout'] = 'გამოსვლა';
$labels['mail'] = 'ელ–ფოსტა';
$labels['settings'] = 'პარამეტრები';
$labels['addressbook'] = 'მისამართები';
// mailbox names
$labels['inbox']  = 'მიღებული';
$labels['inbox'] = 'მიღებული';
$labels['drafts'] = 'დროებითი';
$labels['sent']   = 'გაგზავნილები';
$labels['trash']  = 'წაშლილები';
$labels['junk']   = 'სპამი';
// message listing
$labels['sent'] = 'გაგზავნილები';
$labels['trash'] = 'წაშლილები';
$labels['junk'] = 'სპამი';
$labels['subject'] = 'სათაური';
$labels['from']    = 'გამგზავნი';
$labels['to']      = 'მიმღები';
$labels['cc']      = 'კოპია';
$labels['bcc']     = 'ფარული';
$labels['from'] = 'გამგზავნი';
$labels['to'] = 'მიმღები';
$labels['cc'] = 'კოპია';
$labels['bcc'] = 'ფარული';
$labels['replyto'] = 'დაბრუნება';
$labels['date']    = 'თარიღი';
$labels['size']    = 'ზომა';
$labels['date'] = 'თარიღი';
$labels['size'] = 'ზომა';
$labels['priority'] = 'პრიორიტეტი';
$labels['organization'] = 'ორგანიზაცია';
// aliases
$labels['reply-to'] = $labels['replyto'];
$labels['reply-to'] = 'დაბრუნება';
$labels['mailboxlist'] = 'საქაღალდეები';
$labels['messagesfromto'] = 'შეტყობინება $from  $to დან $count';
$labels['messagenrof'] = 'შეტყობინება $nr დან $count';
$labels['moveto']   = 'გადატანა...';
$labels['moveto'] = 'გადატანა...';
$labels['download'] = 'გადმოწერა';
$labels['filename'] = 'ფაილის სახელი';
$labels['filesize'] = 'ფაილის ზომა';
$labels['preferhtml'] = 'როგორც HTML';
$labels['htmlmessage'] = 'HTML შეტყობინება';
$labels['prettydate'] = 'კარგი თარიღები';
$labels['addtoaddressbook'] = 'მისამართებში დამატება';
// weekdays short
$labels['sun'] = 'კვ';
$labels['mon'] = 'ორ';
$labels['tue'] = 'სამ';
@@ -78,160 +61,132 @@
$labels['thu'] = 'ხუთ';
$labels['fri'] = 'პარ';
$labels['sat'] = 'შაბ';
// weekdays long
$labels['sunday']    = 'კვირა';
$labels['monday']    = 'ორშაბათი';
$labels['tuesday']   = 'სამშაბათი';
$labels['sunday'] = 'კვირა';
$labels['monday'] = 'ორშაბათი';
$labels['tuesday'] = 'სამშაბათი';
$labels['wednesday'] = 'ოთხშაბათი';
$labels['thursday']  = 'ხუთშაბათი';
$labels['friday']    = 'პარასკევი';
$labels['saturday']  = 'შაბათი';
$labels['thursday'] = 'ხუთშაბათი';
$labels['friday'] = 'პარასკევი';
$labels['saturday'] = 'შაბათი';
$labels['today'] = 'დღეს';
// toolbar buttons
$labels['checkmail']        = 'შემოწმება ახალ შეტყობინებაზე';
$labels['writenewmessage']  = 'ახალი შეტყობინება';
$labels['replytomessage']   = 'პასუხი';
$labels['checkmail'] = 'შემოწმება ახალ შეტყობინებაზე';
$labels['writenewmessage'] = 'ახალი შეტყობინება';
$labels['replytomessage'] = 'პასუხი';
$labels['replytoallmessage'] = 'პასუხი ყველას';
$labels['forwardmessage']   = 'გადაგზავნა';
$labels['deletemessage']    = 'წაშლა';
$labels['forwardmessage'] = 'გადაგზავნა';
$labels['deletemessage'] = 'წაშლა';
$labels['movemessagetotrash'] = 'შეტყობინების წაშლილებში გადატანა';
$labels['printmessage']     = 'შეტყობინების ამობეჭვდა';
$labels['previousmessage']  = 'წინა შეტყობინების ნახვა';
$labels['printmessage'] = 'შეტყობინების ამობეჭვდა';
$labels['previousmessage'] = 'წინა შეტყობინების ნახვა';
$labels['previousmessages'] = 'წინა შეტყობინებების ნახვა';
$labels['firstmessage']     = 'პირველი შეტყობინების ნახვა';
$labels['firstmessages']    = 'პრველი შეტყობინებები';
$labels['nextmessage']      = 'შემდეგი შეტყობინების ნახვა';
$labels['nextmessages']     = 'შემდეგი შეტყობინებების ნახვა';
$labels['lastmessage']      = 'ბოლო შეტყობინების ნახვა';
$labels['lastmessages']     = 'ბოლო შეტყობინებების ნახვა';
$labels['backtolist']       = 'უკან ჩამონათვალში';
$labels['viewsource']       = 'შიგთავსი';
$labels['firstmessage'] = 'პირველი შეტყობინების ნახვა';
$labels['firstmessages'] = 'პრველი შეტყობინებები';
$labels['nextmessage'] = 'შემდეგი შეტყობინების ნახვა';
$labels['nextmessages'] = 'შემდეგი შეტყობინებების ნახვა';
$labels['lastmessage'] = 'ბოლო შეტყობინების ნახვა';
$labels['lastmessages'] = 'ბოლო შეტყობინებების ნახვა';
$labels['backtolist'] = 'უკან ჩამონათვალში';
$labels['viewsource'] = 'შიგთავსი';
$labels['markmessages'] = 'მონიშნეთ შეტყობინებები';
$labels['markread'] = 'როგორც წაკითხული';
$labels['markunread'] = 'როგორც წაუკითხავი';
$labels['select'] = 'მონიშვნა';
$labels['all'] = 'ყველა';
$labels['none'] = 'არცერთი';
$labels['unread'] = 'წაუკითხავი';
$labels['compact'] = 'შეკუმშვა';
$labels['empty'] = 'გაცარიელება';
$labels['purge'] = 'გასუფთავება';
$labels['quota'] = 'შეზღუდვა';
$labels['unknown']  = 'უცნობი';
$labels['unlimited']  = 'შეუზღუდავი';
$labels['quicksearch']  = 'სწრაფი ძიება';
$labels['resetsearch']  = 'ძიების გასუფთავება';
// message compose
$labels['compose']        = 'შეტყობინების დაწერა';
$labels['sendmessage']    = 'შეტყობინების გაგზავნა';
$labels['savemessage']  = 'დროებით შენახვა';
$labels['addattachment']  = 'ფაილის ატვირთვა';
$labels['charset']        = 'კოდირება';
$labels['editortype']     = 'რედაქტორი';
$labels['returnreceipt']  = 'პასუხის მოთხოვნა';
$labels['unknown'] = 'უცნობი';
$labels['unlimited'] = 'შეუზღუდავი';
$labels['quicksearch'] = 'სწრაფი ძიება';
$labels['resetsearch'] = 'ძიების გასუფთავება';
$labels['compose'] = 'შეტყობინების დაწერა';
$labels['savemessage'] = 'დროებით შენახვა';
$labels['sendmessage'] = 'შეტყობინების გაგზავნა';
$labels['addattachment'] = 'ფაილის ატვირთვა';
$labels['charset'] = 'კოდირება';
$labels['editortype'] = 'რედაქტორი';
$labels['returnreceipt'] = 'პასუხის მოთხოვნა';
$labels['checkspelling'] = 'ორთოგრაფიული შემოწმება';
$labels['resumeediting'] = 'რედაქტირების გაგრძელება';
$labels['revertto']      = 'გაუქმება';
$labels['revertto'] = 'გაუქმება';
$labels['attachments'] = 'გზავნილები';
$labels['upload'] = 'ატვირთვა';
$labels['close']  = 'დახურვა';
$labels['low']     = 'დაბალი';
$labels['lowest']  = 'უდაბლესი';
$labels['normal']  = 'საშუალო';
$labels['high']    = 'მაღალი';
$labels['close'] = 'დახურვა';
$labels['low'] = 'დაბალი';
$labels['lowest'] = 'უდაბლესი';
$labels['normal'] = 'საშუალო';
$labels['high'] = 'მაღალი';
$labels['highest'] = 'უმაღლესი';
$labels['nosubject']  = '(უსათაურო)';
$labels['nosubject'] = '(უსათაურო)';
$labels['showimages'] = 'გამოსახულების ჩვენება';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'ტექსტური';
$labels['addcc'] = 'დაამატე კოპიო';
$labels['addbcc'] = 'დაამატე ფარული კოპიო';
$labels['addreplyto'] = 'დაამატე გამომგზავნი';
// address boook
$labels['name']      = 'სრული სახელი';
$labels['mdnrequest'] = 'გამომგზავნს სურს შეიტყოს წერილის მიღება. გსურთ შეატყობინოთ გამომგზავნს?';
$labels['receiptread'] = 'გზავნილის დაბრუნება';
$labels['yourmessage'] = 'ეს არის მიღების დასტური თქვენს შეტყობინებაზე';
$labels['receiptnote'] = 'განმარტება: ეს ნიშნავს რომ ადრესატმა მიიღო შეტყობინება. მაგრამ, არ ნიშნავს რომ წაიკითხა ან გაიგო ტექსტი';
$labels['name'] = 'სრული სახელი';
$labels['firstname'] = 'სახელი';
$labels['surname']   = 'გვარი';
$labels['email']     = 'ელ–ფოსტა';
$labels['surname'] = 'გვარი';
$labels['email'] = 'ელ–ფოსტა';
$labels['addcontact'] = 'კონტაქტებში დამატება';
$labels['editcontact'] = 'კონტაქტის რედაქტირება';
$labels['edit']   = 'რედაქტირება';
$labels['edit'] = 'რედაქტირება';
$labels['cancel'] = 'გაუქმება';
$labels['save']   = 'შენახვა';
$labels['save'] = 'შენახვა';
$labels['delete'] = 'წაშლა';
$labels['newcontact']     = 'კონტაქტის შექმნა';
$labels['deletecontact']  = 'მონიშნელი კონტაქტის წაშლა';
$labels['composeto']      = 'ფოსტის გაგზავნა შერჩეულ ადრესატებთან';
$labels['newcontact'] = 'კონტაქტის შექმნა';
$labels['deletecontact'] = 'მონიშნელი კონტაქტის წაშლა';
$labels['composeto'] = 'ფოსტის გაგზავნა შერჩეულ ადრესატებთან';
$labels['contactsfromto'] = 'კონტაქტები $from დან $to ში $count';
$labels['print']          = 'დაბეჭვდა';
$labels['export']         = 'ექსპორტი';
$labels['previouspage']   = 'წინას ჩვენება';
$labels['firstpage']      = 'პირველის ჩვენება';
$labels['nextpage']       = 'შემდეგის ჩვენება';
$labels['lastpage']       = 'ბოლოს ჩვენება';
$labels['print'] = 'დაბეჭვდა';
$labels['export'] = 'ექსპორტი';
$labels['previouspage'] = 'წინას ჩვენება';
$labels['firstpage'] = 'პირველის ჩვენება';
$labels['nextpage'] = 'შემდეგის ჩვენება';
$labels['lastpage'] = 'ბოლოს ჩვენება';
$labels['groups'] = 'ჯგუფები';
$labels['personaladrbook'] = 'პერსონალური მისამართები';
// settings
$labels['settingsfor']  = 'პარამეტრები';
$labels['preferences']  = 'პარამეტრები';
$labels['userpreferences']  = 'მომხმარებლის პარამეტრები';
$labels['editpreferences']  = 'მომხმარებლის პარამეტრების რედაქტირება';
$labels['identities']  = 'პროფილები';
$labels['manageidentities']  = 'პროფილების მართვა';
$labels['newidentity']  = 'ახალი პროფილი';
$labels['newitem']  = 'ახალი';
$labels['edititem']  = 'რედაქტირება';
$labels['setdefault']  = 'როგორც ზოგაგად';
$labels['language']  = 'ენა';
$labels['timezone']  = 'დროითი ზონა';
$labels['pagesize']  = 'სტრიქონი გვერდზე';
$labels['settingsfor'] = 'პარამეტრები';
$labels['preferences'] = 'პარამეტრები';
$labels['userpreferences'] = 'მომხმარებლის პარამეტრები';
$labels['editpreferences'] = 'მომხმარებლის პარამეტრების რედაქტირება';
$labels['identities'] = 'პროფილები';
$labels['manageidentities'] = 'პროფილების მართვა';
$labels['newidentity'] = 'ახალი პროფილი';
$labels['newitem'] = 'ახალი';
$labels['edititem'] = 'რედაქტირება';
$labels['setdefault'] = 'როგორც ზოგაგად';
$labels['language'] = 'ენა';
$labels['timezone'] = 'დროითი ზონა';
$labels['pagesize'] = 'სტრიქონი გვერდზე';
$labels['signature'] = 'ხელმოწერა';
$labels['dstactive']  = 'დროის გადაყვანა';
$labels['dstactive'] = 'დროის გადაყვანა';
$labels['htmleditor'] = 'შეტყობინების შექმნა HTML –ში';
$labels['htmlsignature'] = 'HTML ხელმოწერა';
$labels['previewpane'] = 'ჩვენება';
$labels['autosavedraft']  = 'ავტომატური შენახვა';
$labels['everynminutes']  = 'ყოველ $n წუთში';
$labels['never']  = 'არასდროს';
$labels['folder']  = 'საქაღალდე';
$labels['folders']  = 'საქაღალდეები';
$labels['foldername']  = 'საქაღალდის დასახელება';
$labels['subscribed']  = 'გამოცერილია';
$labels['create']  = 'შექმნა';
$labels['createfolder']  = 'საქაღალდის შექმნა';
$labels['autosavedraft'] = 'ავტომატური შენახვა';
$labels['everynminutes'] = 'ყოველ $n წუთში';
$labels['never'] = 'არასდროს';
$labels['folder'] = 'საქაღალდე';
$labels['folders'] = 'საქაღალდეები';
$labels['foldername'] = 'საქაღალდის დასახელება';
$labels['subscribed'] = 'გამოცერილია';
$labels['messagecount'] = 'შეტყობინებები';
$labels['create'] = 'შექმნა';
$labels['createfolder'] = 'საქაღალდის შექმნა';
$labels['rename'] = 'სახელის გადარქმევა';
$labels['renamefolder'] = 'სახელის გადარქმევა საქაღალდისთვის';
$labels['deletefolder']  = 'საქაღალდის წაშლა';
$labels['managefolders']  = 'საქაღალდეების მართვა';
$labels['deletefolder'] = 'საქაღალდის წაშლა';
$labels['managefolders'] = 'საქაღალდეების მართვა';
$labels['sortby'] = 'დალაგება';
$labels['sortasc']  = 'დალაგება ზრდადობით';
$labels['sortasc'] = 'დალაგება ზრდადობით';
$labels['sortdesc'] = 'დალაგება კლებადობით';
?>
program/localization/ge/messages.inc
@@ -18,7 +18,7 @@
*/
$messages = array();
$messages['loginfailed']  = 'შესვლა შეუძლებელია';
$messages['loginfailed'] = 'შესვლა შეუძლებელია';
$messages['cookiesdisabled'] = 'თქვენი ბროუზერი კუკიებს არ პასუხობს';
$messages['sessionerror'] = 'თქვენი სესია არის მცდარი ან ვადაგასული';
$messages['imaperror'] = 'IMAP სერვერთან დაკავშირება შეუძლებელია';
@@ -43,16 +43,16 @@
$messages['errorsaving'] = 'შენახვის დროს მოხდა შეცდომა';
$messages['errormoving'] = 'შეტყობინების გადატანა შეუძლებელია';
$messages['errordeleting'] = 'შეტყობინების წაშლა შეუძლებელია';
$messages['deletecontactconfirm']  = 'ნამდვილად გსურთ მონიშნული კონტაქტების წაშლა?';
$messages['deletecontactconfirm'] = 'ნამდვილად გსურთ მონიშნული კონტაქტების წაშლა?';
$messages['deletemessagesconfirm'] = 'ნამდვილად გსურთ მონიშნული შეტყობინებების წაშლა?';
$messages['deletefolderconfirm']  = 'ნამდვილად გსურთ ამ საქაღალდის წაშლა?';
$messages['purgefolderconfirm']  = 'ნამდვილად გსურთ ყველა შეტყობინების წაშლა აღნიშნულ საქაღალდეში?';
$messages['deletefolderconfirm'] = 'ნამდვილად გსურთ ამ საქაღალდის წაშლა?';
$messages['purgefolderconfirm'] = 'ნამდვილად გსურთ ყველა შეტყობინების წაშლა აღნიშნულ საქაღალდეში?';
$messages['formincomplete'] = 'ყველა ველი არ არის შევსებული';
$messages['noemailwarning'] = 'მიუთითეთ სწორი ელ–ფოსტის მისამართი';
$messages['nonamewarning']  = 'მიუთითეთ სახელი';
$messages['nonamewarning'] = 'მიუთითეთ სახელი';
$messages['nopagesizewarning'] = 'მიუთითეთ ფურცლის ზომა';
$messages['norecipientwarning'] = 'მიუთითეთ მიმღები';
$messages['nosubjectwarning']  = 'გსურთ თუ არა შეტყობინების გაგზავნა უსათაუროდ?';
$messages['nosubjectwarning'] = 'გსურთ თუ არა შეტყობინების გაგზავნა უსათაუროდ?';
$messages['nobodywarning'] = 'გსურთ თუ არა შეტყობინების გაგზავნა უტექსტოდ?';
$messages['notsentwarning'] = 'შეტყობინება ვერ იქნა გაგზავნილი. გსურთ თუ არა გზავნილის გაუქმება?';
$messages['noldapserver'] = 'მიუთითეთ LDAP სერვერი ძიებისთვის';
@@ -74,5 +74,9 @@
$messages['sourceisreadonly'] = 'აღნიშნული მისამართის მხოლოდ წაკითხვაა შესაძლებელი';
$messages['errorsavingcontact'] = 'საკონტაქტო მისამართის შენახვა შეუძლებელია';
$messages['movingmessage'] = 'შეტყობინების გადატანა...';
$messages['receiptsent'] = 'წარმატებით გაიგზავნა';
$messages['errorsendingreceipt'] = 'არ გაიგზავნა';
$messages['nodeletelastidentity'] = 'წაშლა შეუძლებელია, ის თქვენთვის ერთადერთია';
$messages['addsubfolderhint'] = 'საქაღალდე შეიქმნება როგორც ქვესაქაღალდე მონიშნულ საქაღალდეში';
?>
program/localization/hu/messages.inc
@@ -11,7 +11,7 @@
 |                                                                       |
 +-----------------------------------------------------------------------+
 | Author: Levente Farkas <lfarkas at lfarkas dot org>                   |
 |         Ervin Hegedüs <airween@damson.hu>                             |
 |         Ervin Hegedüs <airween@damson.hu>                             |
 +-----------------------------------------------------------------------+
 @version $Id$
@@ -19,65 +19,65 @@
*/
$messages = array();
$messages['loginfailed'] = 'Sikertelen belépés';
$messages['cookiesdisabled'] = 'A böngészõ nem támogatja a sütik használatát';
$messages['sessionerror'] = 'Érvénytelen vagy lejárt munkamenet';
$messages['imaperror'] = 'Nem sikerült a kapcsolódás az IMAP szerverhez';
$messages['nomessagesfound'] = 'A fiók nem tartalmaz leveleket';
$messages['loggedout'] = 'Sikeres kijelentkezés. Viszont látásra!';
$messages['mailboxempty'] = 'A fiók üres';
$messages['loading'] = 'Betöltés...';
$messages['loadingdata'] = 'Az adatok betöltése...';
$messages['checkingmail'] = 'Új üzenetek keresése...';
$messages['sendingmessage'] = 'Az üzenet küldése...';
$messages['messagesent'] = 'Az üzenet elküldve';
$messages['savingmessage'] = 'Az üzenet mentése...';
$messages['messagesaved'] = 'Az üzenet elmentve a Sablonokhoz';
$messages['successfullysaved'] = 'A mentés sikerült';
$messages['addedsuccessfully'] = 'A cím hozzáadása a címjegyzékhez megtörtént';
$messages['contactexists'] = 'A kapcsolat már létezik ezzel az e-mail címmel';
$messages['blockedimages'] = 'Biztonsági okokból a távoli képek letöltése tiltott.';
$messages['encryptedmessage'] = 'Az üzenet titkosított, emiatt nem tudom megjeleníteni.';
$messages['loginfailed'] = 'Sikertelen belépés';
$messages['cookiesdisabled'] = 'A böngésző nem támogatja a sütik használatát';
$messages['sessionerror'] = 'Érvénytelen vagy lejárt munkamenet';
$messages['imaperror'] = 'Nem sikerült a kapcsolódás az IMAP szerverhez';
$messages['nomessagesfound'] = 'A fiók nem tartalmaz leveleket';
$messages['loggedout'] = 'Sikeres kijelentkezés. Viszont látásra!';
$messages['mailboxempty'] = 'A fiók üres';
$messages['loading'] = 'Betöltés...';
$messages['loadingdata'] = 'Az adatok betöltése...';
$messages['checkingmail'] = 'Új üzenetek keresése...';
$messages['sendingmessage'] = 'Az üzenet küldése...';
$messages['messagesent'] = 'Az üzenet elküldve';
$messages['savingmessage'] = 'Az üzenet mentése...';
$messages['messagesaved'] = 'Az üzenet elmentve a Sablonokhoz';
$messages['successfullysaved'] = 'A mentés sikerült';
$messages['addedsuccessfully'] = 'A cím hozzáadása a címjegyzékhez megtörtént';
$messages['contactexists'] = 'A kapcsolat már létezik ezzel az e-mail címmel';
$messages['blockedimages'] = 'Biztonsági okokból a távoli képek letöltése tiltott.';
$messages['encryptedmessage'] = 'Az üzenet titkosított, emiatt nem tudom megjeleníteni.';
$messages['nocontactsfound'] = 'Nincs kapcsolat';
$messages['contactnotfound'] = 'A kiválasztott kapcsolat nem található';
$messages['sendingfailed'] = 'Az üzenet elküldése nem sikerült';
$messages['errorsaving'] = 'A mentés során hiba lépett fel';
$messages['errormoving'] = 'Az üzenetet nem sikerült áthelyezni';
$messages['errordeleting'] = 'Az üzenetet nem sikerült törölni';
$messages['deletecontactconfirm'] = 'Biztos, hogy törölni szeretnéd a kijelölt címe(ke)t?';
$messages['deletemessagesconfirm'] = 'Biztos, hogy törölni szeretnéd a kijelölt üzenete(ke)t?';
$messages['deletefolderconfirm'] = 'Biztos, hogy törölni szeretnéd ezt a mappát?';
$messages['purgefolderconfirm'] = 'Biztos vagy benne, hogy az összes üzenet törölhetõ?';
$messages['formincomplete'] = 'Az ûrlap hiányosan lett kitöltve';
$messages['noemailwarning'] = 'Adj meg egy valós e-mail címet';
$messages['contactnotfound'] = 'A kiválasztott kapcsolat nem található';
$messages['sendingfailed'] = 'Az üzenet elküldése nem sikerült';
$messages['errorsaving'] = 'A mentés során hiba lépett fel';
$messages['errormoving'] = 'Az üzenetet nem sikerült áthelyezni';
$messages['errordeleting'] = 'Az üzenetet nem sikerült törölni';
$messages['deletecontactconfirm'] = 'Biztos, hogy törölni szeretnéd a kijelölt címe(ke)t?';
$messages['deletemessagesconfirm'] = 'Biztos, hogy törölni szeretnéd a kijelölt üzenete(ke)t?';
$messages['deletefolderconfirm'] = 'Biztos, hogy törölni szeretnéd ezt a mappát?';
$messages['purgefolderconfirm'] = 'Biztos vagy benne, hogy az összes üzenet törölhető?';
$messages['formincomplete'] = 'Az űrlap hiányosan lett kitöltve';
$messages['noemailwarning'] = 'Adj meg egy valós e-mail címet';
$messages['nonamewarning'] = 'Adj meg egy nevet';
$messages['nopagesizewarning'] = 'Add meg a papír méretét';
$messages['norecipientwarning'] = 'Legalább egy címzettet adj meg';
$messages['nosubjectwarning'] = 'A "Tárgy" mezõ üres. Szeretnéd most kitölteni?';
$messages['nobodywarning'] = 'Elküldöd az üzenetet tárgy nélkül?';
$messages['notsentwarning'] = 'Az üzenet még nem küldtem el. Eldobod az üzenetet?';
$messages['noldapserver'] = 'Adj meg egy LDAP szervert a kereséshez';
$messages['nocontactsreturned'] = 'Nem találtam kapcsolatot';
$messages['nosearchname'] = 'Add meg a kapcsolat nevét vagy e-mail címét';
$messages['searchsuccessful'] = '$nr üzenetet találtam';
$messages['searchnomatch'] = 'Nincs találat';
$messages['searching'] = 'Keresés...';
$messages['checking'] = 'Ellenõrzés...';
$messages['nospellerrors'] = 'Nem találtam helyesírási hibát';
$messages['folderdeleted'] = 'A mappa sikeresen törölve';
$messages['deletedsuccessfully'] = 'Törölve';
$messages['converting'] = 'Formázás eltávolítása az üzenetbõl...';
$messages['messageopenerror'] = 'Nem tudom letölteni a leveleket a szerverrõl';
$messages['fileuploaderror'] = 'Feltöltés sikertelen';
$messages['filesizeerror'] = 'A feltöltött file mérete meghaladja a maximális méretet $size';
$messages['copysuccess'] = 'Sikeresen másoltunk $nr címet';
$messages['copyerror'] = 'Nem tudtunk másolni egyetlen címet sem';
$messages['sourceisreadonly'] = 'Ez a címforrás csak olvasható';
$messages['errorsavingcontact'] = 'Nem tudtuk menteni a kapcsolat címét';
$messages['movingmessage'] = 'Üzenet mozgatása...';
$messages['receiptsent'] = 'Az Olvasási Értesítést elküldtük';
$messages['errorsendingreceipt'] = 'Az Olvasási Értesítést nem sikerült elküldeni';
$messages['nodeletelastidentity'] = 'Nem törölheti ezt a profilt, ez az egyetlen';
$messages['addsubfolderhint'] = 'Az új könyvtárat az aktuálisan kiválasztott alkönyvtáraként fogjuk létrehozni';
$messages['nopagesizewarning'] = 'Add meg a papír méretét';
$messages['norecipientwarning'] = 'Legalább egy címzettet adj meg';
$messages['nosubjectwarning'] = 'A "Tárgy" mező üres. Szeretnéd most kitölteni?';
$messages['nobodywarning'] = 'Elküldöd az üzenetet tárgy nélkül?';
$messages['notsentwarning'] = 'Az üzenet még nem küldtem el. Eldobod az üzenetet?';
$messages['noldapserver'] = 'Adj meg egy LDAP szervert a kereséshez';
$messages['nocontactsreturned'] = 'Nem találtam kapcsolatot';
$messages['nosearchname'] = 'Add meg a kapcsolat nevét vagy e-mail címét';
$messages['searchsuccessful'] = '$nr üzenetet találtam';
$messages['searchnomatch'] = 'Nincs találat';
$messages['searching'] = 'Keresés...';
$messages['checking'] = 'Ellenőrzés...';
$messages['nospellerrors'] = 'Nem találtam helyesírási hibát';
$messages['folderdeleted'] = 'A mappa sikeresen törölve';
$messages['deletedsuccessfully'] = 'Törölve';
$messages['converting'] = 'Formázás eltávolítása az üzenetből...';
$messages['messageopenerror'] = 'Nem tudom letölteni a leveleket a szerverről';
$messages['fileuploaderror'] = 'Feltöltés sikertelen';
$messages['filesizeerror'] = 'A feltöltött file mérete meghaladja a maximális méretet $size';
$messages['copysuccess'] = 'Sikeresen másoltunk $nr címet';
$messages['copyerror'] = 'Nem tudtunk másolni egyetlen címet sem';
$messages['sourceisreadonly'] = 'Ez a címforrás csak olvasható';
$messages['errorsavingcontact'] = 'Nem tudtuk menteni a kapcsolat címét';
$messages['movingmessage'] = 'Üzenet mozgatása...';
$messages['receiptsent'] = 'Az Olvasási Értesítést elküldtük';
$messages['errorsendingreceipt'] = 'Az Olvasási Értesítést nem sikerült elküldeni';
$messages['nodeletelastidentity'] = 'Nem törölheti ezt a profilt, ez az egyetlen';
$messages['addsubfolderhint'] = 'Az új könyvtárat az aktuálisan kiválasztott alkönyvtáraként fogjuk létrehozni';
?>
program/localization/index.inc
@@ -54,6 +54,7 @@
     'it'    => 'Italiano',
     'ja'    => 'Japanese (日本語)',
     'kr'    => 'Korean',
     'ku'    => 'Kurdish (Kurmancî)',
     'lv'    => 'Latvian',
     'lt'    => 'Lithuanian',
     'mk'    => 'Macedonian',
program/localization/ku/labels.inc
New file
@@ -0,0 +1,189 @@
<?php
/*
 +-----------------------------------------------------------------------+
 | language/ku/labels.inc                                                |
 |                                                                       |
 | Language file of the RoundCube Webmail client                         |
 | Copyright (C) 2006, RoundQube Dev. - Switzerland                      |
 | Licensed under the GNU GPL                                            |
 |                                                                       |
 +-----------------------------------------------------------------------+
 | Author: Amed Çeko Jiyan <amedcj@kurdistan.name>                       |
 +-----------------------------------------------------------------------+
*/
$labels = array();
$labels['welcome'] = 'Bixêr hatî $product \\\'ê';
$labels['username'] = 'Bikarhêner';
$labels['password'] = 'Nasnav';
$labels['server'] = 'Pêşkêşkar';
$labels['login'] = 'Têkevê';
$labels['logout'] = 'Derkeve';
$labels['mail'] = 'E-Peyam';
$labels['settings'] = 'Mîhengên Takekesî';
$labels['addressbook'] = 'Lênûska Navnîşanan';
$labels['inbox'] = 'Hatî';
$labels['drafts'] = 'Hilanînî';
$labels['sent'] = 'Şandî';
$labels['trash'] = 'Çop';
$labels['junk'] = 'Biikêrnehatî';
$labels['subject'] = 'Mijar';
$labels['from'] = 'Şandyar';
$labels['to'] = 'Standyar';
$labels['cc'] = 'Kopiya Karbon';
$labels['bcc'] = 'Kopiya karbon a Veşartî';
$labels['replyto'] = 'Navnîşanên Standyar';
$labels['date'] = 'Dîrok';
$labels['size'] = 'Mezinahî';
$labels['priority'] = 'Girîngî';
$labels['organization'] = 'Sazî';
$labels['reply-to'] = 'Navnîşanên Standyar';
$labels['mailboxlist'] = 'Peldank';
$labels['messagesfromto'] = 'Peyam $count ên di navbera $from - $to';
$labels['messagenrof'] = '$nr a peyama $count';
$labels['moveto'] = 'bibe...';
$labels['download'] = 'daxe';
$labels['filename'] = 'Navê pelê';
$labels['filesize'] = 'Mezinahiya pelê';
$labels['preferhtml'] = 'Wekî HTML nîşan bide';
$labels['htmlmessage'] = 'Peyama HTML';
$labels['prettydate'] = 'Kurtenivîsa Dîrokê';
$labels['addtoaddressbook'] = 'Têxe lênûska navnîşanan';
$labels['sun'] = 'Yş';
$labels['mon'] = 'Dş';
$labels['tue'] = 'Sş';
$labels['wed'] = 'Çş';
$labels['thu'] = 'Pş';
$labels['fri'] = 'În';
$labels['sat'] = 'Şe';
$labels['sunday'] = 'Yekşem';
$labels['monday'] = 'Duşem';
$labels['tuesday'] = 'Sêşem';
$labels['wednesday'] = 'Çarşem';
$labels['thursday'] = 'Pêncşem';
$labels['friday'] = 'În';
$labels['saturday'] = 'Şemî';
$labels['today'] = 'Îro';
$labels['checkmail'] = 'Li peyamên nû venihêre';
$labels['writenewmessage'] = 'Peyameke nû biafirîne';
$labels['replytomessage'] = 'Bersivê bide peyamê';
$labels['replytoallmessage'] = 'Bersivê ji bo hemû kesên ku ev peyan standine bişîne';
$labels['forwardmessage'] = 'Bersivê bide peyamê';
$labels['deletemessage'] = 'Peyamê jê bibe';
$labels['movemessagetotrash'] = 'Peyamê dake çopê';
$labels['printmessage'] = 'Vê peyamê çap bike';
$labels['previousmessage'] = 'Peyama berê nîşan bide';
$labels['previousmessages'] = 'Peyamên berê nîşan bide';
$labels['firstmessage'] = 'Peyama yekemîn nîşan bide';
$labels['firstmessages'] = 'Peyamên yekemîn nîşan bide';
$labels['nextmessage'] = 'Peyama di rêzê de nîşan bide';
$labels['nextmessages'] = 'Peyamên di rêzê de nîşan bide';
$labels['lastmessage'] = 'Peyama dawî nîşan bide';
$labels['lastmessages'] = 'Peyamên dawî nîşan bide';
$labels['backtolist'] = 'Vegere lîsteya peyaman';
$labels['viewsource'] = 'Çavkaniyê nîşan bide';
$labels['markmessages'] = 'Peyamê nîşan bike';
$labels['markread'] = 'Wekî xwendî';
$labels['markunread'] = 'Wekî nexwendî';
$labels['select'] = 'Hilbijêre';
$labels['all'] = 'Hemû';
$labels['none'] = 'Ne yek jî';
$labels['unread'] = 'Nexwendî';
$labels['compact'] = 'Kompakt';
$labels['empty'] = 'Vala Bike';
$labels['purge'] = 'Jê bibe';
$labels['quota'] = 'Bikaranîna dîskê';
$labels['unknown'] = 'nayê zanîn';
$labels['unlimited'] = 'bêsînor';
$labels['quicksearch'] = 'Lêgerîna bilez';
$labels['resetsearch'] = 'Lêgerînê reset bike';
$labels['compose'] = 'Peyamekê biafirîne';
$labels['savemessage'] = 'Hilîne';
$labels['sendmessage'] = 'Peyamê niha bişîne';
$labels['addattachment'] = 'Pelekê lê zêde bike';
$labels['charset'] = 'Curetîp';
$labels['editortype'] = 'Cureyê serastkat';
$labels['returnreceipt'] = 'Rapora Vegerînê';
$labels['checkspelling'] = 'Kontrola rastnivîsê';
$labels['resumeediting'] = 'Serastkirinê bidomîne';
$labels['revertto'] = 'Şûnde bîne';
$labels['attachments'] = 'Pêvek';
$labels['upload'] = 'Bar bike';
$labels['close'] = 'Bigire';
$labels['low'] = 'Nizm';
$labels['lowest'] = 'Nizmtirîn';
$labels['normal'] = 'Asayî';
$labels['high'] = 'Bilind';
$labels['highest'] = 'Bilintirîn';
$labels['nosubject'] = '(bê mijar)';
$labels['showimages'] = 'Xuyakirina wêneyan';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Deqa tazî';
$labels['addcc'] = 'Cc Têxê';
$labels['addbcc'] = 'Bcc Têxê';
$labels['addreplyto'] = 'Bibersivîne têxê';
$labels['mdnrequest'] = 'Şandyara/ê vê peyamê xwest dema ku te peyam vekir, jê re hişyarî here. Dixwazî jê re hişyarî here?';
$labels['receiptread'] = 'Rapora Vegerînê (xwendî)';
$labels['yourmessage'] = 'Ev rapora vegerîna peyama te ye';
$labels['receiptnote'] = 'Nîşe: Ev dide zanîn ka peyama te şand hat xwendin an na. Naveroka peyamê bi mîgogerî nayê zanîn.';
$labels['name'] = 'Navê xuya dibe';
$labels['firstname'] = 'Nav';
$labels['surname'] = 'Paşnav';
$labels['email'] = 'E-Peyam';
$labels['addcontact'] = 'Têkiliyeke nû têxê';
$labels['editcontact'] = 'Têkiliyê serast bike';
$labels['edit'] = 'Serast bike';
$labels['cancel'] = 'Betal';
$labels['save'] = 'Tomar bike';
$labels['delete'] = 'Jê Bibe';
$labels['newcontact'] = 'kardeke nû a têkiliyê biafirîne';
$labels['deletecontact'] = 'Têkiliyên hilbijartî jê bibe';
$labels['composeto'] = 'Ji têkiliya hilbijartî re peyam bişîne';
$labels['contactsfromto'] = 'Têkiliyên $count ên di navbera $from - $to de';
$labels['print'] = 'çap bike';
$labels['export'] = 'Derxe';
$labels['previouspage'] = 'Seta berê nîşan bide';
$labels['firstpage'] = 'Seta yekemîn nîşan bide';
$labels['nextpage'] = 'Seta di rêzê de nîşan bide';
$labels['lastpage'] = 'Seta dawî nîşan bide';
$labels['groups'] = 'Kom';
$labels['personaladrbook'] = 'Navnîşanên Takekesî';
$labels['settingsfor'] = 'Mîheng ji bo';
$labels['preferences'] = 'Vebijêrk';
$labels['userpreferences'] = 'Vebijêrkên bikarhêner';
$labels['editpreferences'] = 'Vebijêrkên bikarhêner serast bike';
$labels['identities'] = 'Nasname';
$labels['manageidentities'] = 'Nasnameyên vê hesabê serast bike';
$labels['newidentity'] = 'Nasnameya nû';
$labels['newitem'] = 'Parçeya nû';
$labels['edititem'] = 'Parçeyê serast bike';
$labels['setdefault'] = 'Wekî standard tomar bike';
$labels['language'] = 'Ziman';
$labels['timezone'] = 'Herêma demê';
$labels['pagesize'] = 'Hejmara peyamên her rûpelekê';
$labels['signature'] = 'Şanenav';
$labels['dstactive'] = 'Demjimêra havînî';
$labels['htmleditor'] = 'Peyameke HTML biafirîne';
$labels['htmlsignature'] = 'Şanenava HTML';
$labels['previewpane'] = 'Panela berê nîşan bide';
$labels['autosavedraft'] = 'Xweber hilîne';
$labels['everynminutes'] = 'her $n çirke';
$labels['never'] = 'qet';
$labels['folder'] = 'Peldank';
$labels['folders'] = 'Peldank';
$labels['foldername'] = 'Navê peldankê';
$labels['subscribed'] = 'Ni şanenav';
$labels['messagecount'] = 'Peyam';
$labels['create'] = 'Biafirîne';
$labels['createfolder'] = 'Peldankeke nû biafirîne';
$labels['rename'] = 'Nav biguherîne';
$labels['renamefolder'] = 'Navê peldankê biguherîne';
$labels['deletefolder'] = 'Peldankê jê bibe';
$labels['managefolders'] = 'Rêveberiya peldankan';
$labels['sortby'] = 'Şêweyê rêzkirinê';
$labels['sortasc'] = 'Wekî zêde dibe';
$labels['sortdesc'] = 'Wekî kêm dibe';
?>
program/localization/ku/messages.inc
New file
@@ -0,0 +1,79 @@
<?php
/*
 +-----------------------------------------------------------------------+
 | language/ku/messages.inc                                              |
 |                                                                       |
 | Language file of the RoundCube Webmail client                         |
 | Copyright (C) 2006, RoundQube Dev. - Switzerland                      |
 | Licensed under the GNU GPL                                            |
 |                                                                       |
 +-----------------------------------------------------------------------+
 | Author: Amed çeko Jiyan <amedcj@kurdistan.name>                       |
 +-----------------------------------------------------------------------+
*/
$messages = array();
$messages['loginfailed'] = 'Têketin têk çû';
$messages['cookiesdisabled'] = 'Geroka te destûrê nade çerezan';
$messages['sessionerror'] = 'Danişîna te çewt e an jî bi dawî bûye';
$messages['imaperror'] = 'Girêdana pêşkêşkara IMAP têk çû';
$messages['nomessagesfound'] = 'Di vê peyamdankê de tu peyam nehat dîtin';
$messages['loggedout'] = 'Te danişînî bi dawî anî. Oxir be!';
$messages['mailboxempty'] = 'Peyamdank vala ye';
$messages['loading'] = 'Tê barkirin...';
$messages['loadingdata'] = 'Dane tên barkirin...';
$messages['checkingmail'] = 'Li peyamên nû vedinihêre...';
$messages['sendingmessage'] = 'Peyamê dişîne...';
$messages['messagesent'] = 'Peyam hate şandin';
$messages['savingmessage'] = 'Peyam tê hilanîn...';
$messages['messagesaved'] = 'Peyam di Hilanînî de hat hilanîn';
$messages['successfullysaved'] = 'Hat hilanîn';
$messages['addedsuccessfully'] = 'Têkilî li navnîşanan hat zêdekirin';
$messages['contactexists'] = 'Têkiliyeke bi vê navnîşanê jixwe heye';
$messages['blockedimages'] = 'Ji bo ewlekariya te wêneyên cuda yên vê peyamê hatin astenkirin.';
$messages['encryptedmessage'] = 'Ev peyamenek şîfrekirî ye, bibore, nayê vekirin!';
$messages['nocontactsfound'] = 'Tu têkiliyek nehat dîtin';
$messages['contactnotfound'] = 'Têkiliya dihat xwestin nehat dîtin';
$messages['sendingfailed'] = 'Peyam nehat şandin';
$messages['errorsaving'] = 'Di tomarkirinê de çewtiyek derket';
$messages['errormoving'] = 'Ciyê peyamê nehat guherandin';
$messages['errordeleting'] = 'Peyam nehat jêbirin';
$messages['deletecontactconfirm'] = 'Ji dil dixwazî têkiliya/ên nîşankirî jê bibî?';
$messages['deletemessagesconfirm'] = 'Ji dil dixwazî peya/ên nîşankirî jê bibî?';
$messages['deletefolderconfirm'] = 'Ji dil dixwazî vê peldankê jê bibî?';
$messages['purgefolderconfirm'] = 'Ji dil dixwazî hemû peyamên di vê peldankê de jê bibî?';
$messages['formincomplete'] = 'Form bi temamî nehat tijekirin';
$messages['noemailwarning'] = 'Tika ye, navnîşaneke rast têkevê';
$messages['nonamewarning'] = 'Tika ye, navekî têkevê';
$messages['nopagesizewarning'] = 'Tika ye, mezinahiyeke pelê têkevê';
$messages['norecipientwarning'] = 'Tika ye, herî kêm standyarekê têkevê';
$messages['nosubjectwarning'] = 'Qada "Mijar"ê vala ye. Dixwazî niha tiştekî lê binivîsî?';
$messages['nobodywarning'] = 'Peyamê bê nivîs bişeyînî?';
$messages['notsentwarning'] = 'Peyam nehat şandin. Dixwazî peyamê pişTgo bikî?';
$messages['noldapserver'] = 'Tika ye, ji bo lêgerînê pêşkêşkareke Idap têkevê';
$messages['nocontactsreturned'] = 'Tu têkilî nehat dîtin';
$messages['nosearchname'] = 'Tika ye, nav an jî navnîşaneke têkiliyê têkevê';
$messages['searchsuccessful'] = '$nr peyam hat(in) dîtin';
$messages['searchnomatch'] = 'Di lêgerînê de tu tişt nehat dîtin';
$messages['searching'] = 'Digere...';
$messages['checking'] = 'Vedinihêre...';
$messages['nospellerrors'] = 'Tu şaşiyeke rastnivîsê nehat dîtin';
$messages['folderdeleted'] = 'Peldank hat jêbirin';
$messages['deletedsuccessfully'] = 'Hat jêbirin';
$messages['converting'] = 'Formatkirin ji peyamê tê birin...';
$messages['messageopenerror'] = 'Peyam ji pêşkêşkar nehat barkirin';
$messages['fileuploaderror'] = 'Barkirina pelê têk çû';
$messages['filesizeerror'] = 'Pel pir mezin e. Herî zêde divê $size be';
$messages['copysuccess'] = '$nr navnîşan hat(in) jibergirtin';
$messages['copyerror'] = 'Tu navnîşan nehat jibergirtin';
$messages['sourceisreadonly'] = 'Çavkaniya vê navnîşanê tenê-xwendin e';
$messages['errorsavingcontact'] = 'Navnîşana têkiliyê nehat barkirin';
$messages['movingmessage'] = 'Ciyê peyamê tê guhertin...';
$messages['receiptsent'] = 'Rapora şandina serkeftî';
$messages['errorsendingreceipt'] = 'Rapor nehat şandin';
$messages['nodeletelastidentity'] = 'Nikarî vê nasnameyê jê bibî. Ew ya dawî ye.';
$messages['addsubfolderhint'] = 'Ev peldank wê wekî binepeldanka ya heyî bê afirandin';
?>
program/localization/nl_NL/labels.inc
@@ -22,7 +22,7 @@
$labels['username'] = 'Gebruikersnaam';
$labels['password'] = 'Wachtwoord';
$labels['server'] = 'Server';
$labels['login'] = 'Login';
$labels['login'] = 'Inloggen';
$labels['logout'] = 'Uitloggen';
$labels['mail'] = 'E-Mail';
$labels['settings'] = 'Persoonlijke Instellingen';
@@ -35,7 +35,7 @@
$labels['subject'] = 'Onderwerp';
$labels['from'] = 'Afzender';
$labels['to'] = 'Ontvanger';
$labels['cc'] = 'kopie';
$labels['cc'] = 'Kopie';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Antwoord-aan';
$labels['date'] = 'Datum';
@@ -106,7 +106,7 @@
$labels['savemessage'] = 'Bewaar als concept';
$labels['sendmessage'] = 'Verstuur het bericht nu';
$labels['addattachment'] = 'Voeg een bijlage toe';
$labels['charset'] = 'karakterset';
$labels['charset'] = 'Karakterset';
$labels['editortype'] = 'Opmaak';
$labels['returnreceipt'] = 'Ontvangstbevestiging';
$labels['checkspelling'] = 'Controleer spelling';
program/localization/pl/labels.inc
@@ -131,8 +131,8 @@
$labels['addcc'] = 'Dodaj Cc';
$labels['addbcc'] = 'Dodaj Bcc';
$labels['addreplyto'] = 'Dodaj Reply-To';
$labels['mdnrequest'] = 'Nadawca poprosił o potwierdzenie przeczytania tej wiadomości. Czy chcesz go powiadomić?';
$labels['receiptread'] = 'Potwierdzenie odbioru';
$labels['mdnrequest'] = 'Nadawca zażądał potwierdzenia przeczytania tej wiadomości. Czy chcesz go powiadomić?';
$labels['receiptread'] = 'Potwierdzenie otrzymania';
$labels['yourmessage'] = 'To jest potwierdzenie dostarczenia Twojej wiadomości';
$labels['receiptnote'] = 'Uwaga: To potwierdzenie dostarczenia wiadomości oznacza tylko, że wiadomość została wyświetlona na komputerze adresata. Nie ma żadnej gwarancji, że odbiorca przeczytał czy też zrozumiał treść wiadomości.';
$labels['name'] = 'Nazwa';
program/localization/pl/messages.inc
@@ -52,8 +52,8 @@
$messages['deletefolderconfirm'] = 'Czy na pewno chcesz usunąć wybrany folder?';
$messages['purgefolderconfirm'] = 'Czy na pewno chcesz usunąć wszystkie wiadomości w tym folderze?';
$messages['formincomplete'] = 'Uzupełnij formularz!';
$messages['noemailwarning'] = 'Wpisz poprawny adres e-mail!';
$messages['nonamewarning'] = 'Podaj imię!';
$messages['noemailwarning'] = 'Podaj poprawny adres e-mail!';
$messages['nonamewarning'] = 'Podaj nazwę!';
$messages['nopagesizewarning'] = 'Podaj poprawną wartość!';
$messages['norecipientwarning'] = 'Podaj co najmniej jednego odbiorcę!';
$messages['nosubjectwarning'] = 'Nie podano tematu wiadomości. Czy chcesz go teraz uzupełnić?';
program/localization/se/labels.inc
@@ -136,7 +136,7 @@
$labels['name'] = 'Visa namn';
$labels['firstname'] = 'Förnamn';
$labels['surname'] = 'Efternamn';
$labels['email'] = 'Meddelande';
$labels['email'] = 'E-post';
$labels['addcontact'] = 'Lägg till ny kontakt';
$labels['editcontact'] = 'Redigera kontakt';
$labels['edit'] = 'Redigera';
@@ -191,4 +191,4 @@
$labels['sortasc'] = 'Sortera stigande';
$labels['sortdesc'] = 'Sortera fallande';
?>
?>
program/localization/zh_CN/labels.inc
@@ -30,8 +30,8 @@
$labels['inbox'] = '收件箱';
$labels['drafts'] = '草稿箱';
$labels['sent'] = '已发送邮件';
$labels['trash'] = '垃圾邮件';
$labels['junk'] = '回收箱';
$labels['trash'] = '回收站';
$labels['junk'] = '垃圾邮件';
$labels['subject'] = '主题';
$labels['from'] = '发件人';
$labels['to'] = '收件人';
@@ -99,8 +99,8 @@
$labels['quicksearch'] = '快速查找';
$labels['resetsearch'] = '重新查找';
$labels['compose'] = '写新邮件';
$labels['sendmessage'] = '立即发送';
$labels['savemessage'] = '暂存至草稿箱';
$labels['sendmessage'] = '立即发送';
$labels['addattachment'] = '添加附件';
$labels['charset'] = '字符集';
$labels['editortype'] = '编辑器类型';
@@ -154,7 +154,7 @@
$labels['setdefault'] = '默认值';
$labels['language'] = '语言';
$labels['timezone'] = '时区';
$labels['pagesize'] = '第页邮件数量';
$labels['pagesize'] = '每页邮件数量';
$labels['signature'] = '签名';
$labels['dstactive'] = '夏令时';
$labels['htmleditor'] = '使用HTML编辑器';
program/localization/zh_CN/messages.inc
@@ -73,5 +73,10 @@
$messages['copyerror'] = '无法复制地址';
$messages['sourceisreadonly'] = '源地址为只读';
$messages['errorsavingcontact'] = '无法保存联系人的地址';
$messages['movingmessage'] = '移动邮件到...';
$messages['receiptsent'] = '成功发送了一个已读回执';
$messages['errorsendingreceipt'] = '无法发送回执';
$messages['nodeletelastidentity'] = '无法删除这个身份,这是最后一个。';
$messages['addsubfolderhint'] = '文件夹将被作为所选中文件夹的子目录';
?>
program/steps/mail/compose.inc
@@ -90,7 +90,11 @@
  // similar as in program/steps/mail/show.inc
  $MESSAGE = array('UID' => $msg_uid);
  $MESSAGE['headers'] = &$IMAP->get_headers($msg_uid);
  $MESSAGE['structure'] = &$IMAP->get_structure($msg_uid);
  $MESSAGE['structure'] = &$IMAP->get_structure($msg_uid);
  if (!empty($MESSAGE['headers']->charset))
    $IMAP->set_charset($MESSAGE['headers']->charset);
  $MESSAGE['subject'] = $IMAP->decode_header($MESSAGE['headers']->subject);
  $MESSAGE['parts'] = $IMAP->get_mime_numbers($MESSAGE['structure']);
  
@@ -889,7 +893,7 @@
  {
  while ($sql_arr = $result->iterate())
    if ($sql_arr['email'])
      $a_contacts[] = format_email_recipient($sql_arr['email'], JQ($sql_arr['name']));
      $a_contacts[] = format_email_recipient($sql_arr['email'], $sql_arr['name']);
  }
if (isset($CONFIG['ldap_public']))
  {
@@ -914,7 +918,7 @@
         $email = $results->records[$i]['email']; 
         $name = $results->records[$i]['name']; 
          
         $a_contacts[] = format_email_recipient($email, JQ($name));
         $a_contacts[] = format_email_recipient($email, $name);
         } 
       }
    $LDAP->close(); 
program/steps/mail/func.inc
@@ -695,10 +695,10 @@
      $quotation = '';
      $q = 0;
      
      if (preg_match('/^(>+\s*)/', $line, $regs))
      if (preg_match('/^(>+\s*)+/', $line, $regs))
        {
        $q = strlen(preg_replace('/\s/', '', $regs[1]));
        $line = substr($line, strlen($regs[1]));
        $q    = strlen(preg_replace('/\s/', '', $regs[0]));
        $line = substr($line, strlen($regs[0]));
        if ($q > $quote_level)
          $quotation = str_repeat('<blockquote>', $q - $quote_level);
program/steps/mail/sendmail.inc
@@ -212,12 +212,16 @@
// additional headers
$headers['Message-ID'] = $message_id;
$headers['X-Sender'] = $from;
$headers['Received'] =  wordwrap('from ' .
  (isset($_SERVER['HTTP_X_FORWARDED_FOR']) ?
    gethostbyaddr($_SERVER['HTTP_X_FORWARDED_FOR']).' ['.$_SERVER['HTTP_X_FORWARDED_FOR'].'] via ' : '') .
  gethostbyaddr($_SERVER['REMOTE_ADDR']).' ['.$_SERVER['REMOTE_ADDR'].'] with ' .
  $_SERVER['SERVER_PROTOCOL'].' ('.$_SERVER['REQUEST_METHOD'].'); ' . date('r'),
  69, rcmail_header_delm() . "\t");
if ($CONFIG['http_received_header'])
{
  $nldlm = rcmail_header_delm() . "\t";
  $headers['Received'] =  wordwrap('from ' . (isset($_SERVER['HTTP_X_FORWARDED_FOR']) ?
      gethostbyaddr($_SERVER['HTTP_X_FORWARDED_FOR']).' ['.$_SERVER['HTTP_X_FORWARDED_FOR'].']'.$nldlm.' via ' : '') .
    gethostbyaddr($_SERVER['REMOTE_ADDR']).' ['.$_SERVER['REMOTE_ADDR'].']'.$nldlm.'with ' .
    $_SERVER['SERVER_PROTOCOL'].' ('.$_SERVER['REQUEST_METHOD'].'); ' . date('r'),
    69, $nldlm);
}
if (!empty($CONFIG['useragent']))
  $headers['User-Agent'] = $CONFIG['useragent'];
@@ -245,6 +249,11 @@
  // add a plain text version of the e-mail as an alternative part.
  $h2t = new html2text($message_body);
  $plainTextPart = wordwrap($h2t->get_text(), 998, "\r\n", true);
  if (!strlen($plainTextPart))
    {
    // empty message body breaks attachment handling in drafts
    $plainTextPart = "\r\n";
    }
  $MAIL_MIME->setTXTBody(html_entity_decode($plainTextPart, ENT_COMPAT, 'utf-8'));
  // look for "emoticon" images from TinyMCE and copy into message as attachments
@@ -254,6 +263,11 @@
  {
  $message_body = wordwrap($message_body, 75, "\r\n");
  $message_body = wordwrap($message_body, 998, "\r\n", true);
  if (!strlen($message_body))
    {
    // empty message body breaks attachment handling in drafts
    $message_body = "\r\n";
    }
  $MAIL_MIME->setTXTBody($message_body, FALSE, TRUE);
  }
program/steps/mail/show.inc
@@ -30,6 +30,10 @@
  $MESSAGE = array('UID' => get_input_value('_uid', RCUBE_INPUT_GET));
  $MESSAGE['headers'] = $IMAP->get_headers($MESSAGE['UID']);
  
  // set message charset as default
  if (!empty($MESSAGE['headers']->charset))
    $IMAP->set_charset($MESSAGE['headers']->charset);
  // go back to list if message not found (wrong UID)
  if (!$MESSAGE['headers'])
    {
program/steps/mail/viewsource.inc
@@ -5,7 +5,7 @@
 | program/steps/mail/viewsource.inc                                     |
 |                                                                       |
 | This file is part of the RoundCube Webmail client                     |
 | Copyright (C) 2005-2007, RoundCube Dev. - Switzerland                 |
 | Copyright (C) 2005-2008, RoundCube Dev. - Switzerland                 |
 | Licensed under the GNU GPL                                            |
 |                                                                       |
 | PURPOSE:                                                              |
@@ -22,19 +22,21 @@
// similar code as in program/steps/mail/get.inc
if ($uid = get_input_value('_uid', RCUBE_INPUT_GET))
  {
  header('Content-Type: text/plain');
  //@ob_end_clean();
{
  $headers = $IMAP->get_headers($uid);
  $charset = $headers->charset ? $headers->charset : $IMAP->default_charset;
  header("Content-Type: text/plain; charset={$charset}");
  $IMAP->print_raw_body($uid);
  }
}
else
  {
  raise_error(array('code' => 500,
                    'type' => 'php',
                    'message' => 'Message UID '.$uid.' not found'),
              TRUE,
              TRUE);
  }
{
  raise_error(array(
      'code' => 500,
      'type' => 'php',
      'message' => 'Message UID '.$uid.' not found'),
    true,
    true);
}
exit;
?>
program/steps/settings/func.inc
@@ -67,14 +67,16 @@
    $select_timezone = new select(array('name' => '_timezone', 'id' => $field_id));
    $select_timezone->add('(GMT -11:00) Midway Island, Samoa', '-11');
    $select_timezone->add('(GMT -10:00) Hawaii', '-10');
    $select_timezone->add('(GMT -9:30) Marquesas Islands', '-9.5');
    $select_timezone->add('(GMT -9:00) Alaska', '-9');
    $select_timezone->add('(GMT -8:00) Pacific Time (US/Canada)', '-8');
    $select_timezone->add('(GMT -7:00) Mountain Time (US/Canada)', '-7');
    $select_timezone->add('(GMT -6:00) Central Time (US/Canada), Mexico City', '-6');
    $select_timezone->add('(GMT -5:00) Eastern Time (US/Canada), Bogota, Lima', '-5');
    $select_timezone->add('(GMT -4:00) Atlantic Time (Canada), Caracas, La Paz', '-4');
    $select_timezone->add('(GMT -3:00) Brazil, Buenos Aires, Georgetown', '-3');
    $select_timezone->add('(GMT -4:30) Caracas', '-4.5');
    $select_timezone->add('(GMT -4:00) Atlantic Time (Canada), La Paz', '-4');
    $select_timezone->add('(GMT -3:30) Nfld Time (Canada), Nfld, S. Labador', '-3.5');
    $select_timezone->add('(GMT -3:00) Brazil, Buenos Aires, Georgetown', '-3');
    $select_timezone->add('(GMT -2:00) Mid-Atlantic', '-2');
    $select_timezone->add('(GMT -1:00) Azores, Cape Verde Islands', '-1');
    $select_timezone->add('(GMT) Western Europe, London, Lisbon, Casablanca', '0');
@@ -88,13 +90,18 @@
    $select_timezone->add('(GMT +5:30) Chennai, Kolkata, Mumbai, New Delhi', '5.5');
    $select_timezone->add('(GMT +5:45) Kathmandu', '5.75');
    $select_timezone->add('(GMT +6:00) Almaty, Dhaka, Colombo', '6');
    $select_timezone->add('(GMT +6:30) Cocos Islands, Myanmar', '6.5');
    $select_timezone->add('(GMT +7:00) Bangkok, Hanoi, Jakarta', '7');
    $select_timezone->add('(GMT +8:00) Beijing, Perth, Singapore, Taipei', '8');
    $select_timezone->add('(GMT +8:45) Caiguna, Eucla, Border Village', '8.75');
    $select_timezone->add('(GMT +9:00) Tokyo, Seoul, Yakutsk', '9');
    $select_timezone->add('(GMT +9:30) Adelaide, Darwin', '9.5');
    $select_timezone->add('(GMT +10:00) EAST/AEST: Sydney, Guam, Vladivostok', '10');
    $select_timezone->add('(GMT +10:30) New South Wales', '10.5');
    $select_timezone->add('(GMT +11:00) Magadan, Solomon Islands', '11');
    $select_timezone->add('(GMT +11:30) Norfolk Island', '11.5');
    $select_timezone->add('(GMT +12:00) Auckland, Wellington, Kamchatka', '12');
    $select_timezone->add('(GMT +12:45) Chatham Islands', '12.75');
    $select_timezone->add('(GMT +13:00) Tonga, Pheonix Islands', '13');
    $select_timezone->add('(GMT +14:00) Kiribati', '14');
  
program/steps/settings/manage_folders.inc
@@ -28,8 +28,8 @@
// subscribe to one or more mailboxes
if ($_action=='subscribe')
  {
  if ($mboxes = get_input_value('_mboxes', RCUBE_INPUT_POST))
    $IMAP->subscribe($mboxes);
  if ($mbox = get_input_value('_mbox', RCUBE_INPUT_POST))
    $IMAP->subscribe(array($mbox));
  if ($OUTPUT->ajax_call)
    $OUTPUT->remote_response('// subscribed');
@@ -38,8 +38,8 @@
// unsubscribe one or more mailboxes
else if ($_action=='unsubscribe')
  {
  if ($mboxes = get_input_value('_mboxes', RCUBE_INPUT_POST))
    $IMAP->unsubscribe($mboxes);
  if ($mbox = get_input_value('_mbox', RCUBE_INPUT_POST))
    $IMAP->unsubscribe(array($mbox));
  if ($OUTPUT->ajax_call)
    $OUTPUT->remote_response('// unsubscribed');
robots.txt
New file
@@ -0,0 +1,2 @@
User-agent: *
Disallow: /
skins/default/common.css
@@ -70,6 +70,7 @@
  padding: 1px;
  padding-left: 3px;
  padding-right: 3px;
  color: #333333;
  background-color: #ffffff;
  border: 1px solid #666666;
}
skins/default/editor_content.css
@@ -1,61 +1,15 @@
/* This file contains the CSS data for the editable area(iframe) of TinyMCE */
/* You can extend this CSS by adding your own CSS file with the the content_css option */
body, td, pre {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 12px;
}
body {
/* This file contains the CSS data for the editable area(iframe) of TinyMCE */
/* You can extend this CSS by adding your own CSS file with the the content_css option */
body, td, pre {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 12px;
}
body {
    background-color: #FFFFFF;
    margin-left: 4px;
    margin-right: 4px;
    margin-top: 2px;
}
.mceVisualAid {
    border: 1px dashed #BBBBBB !important;
}
div.mceVisualAid {
    background-image:url('../images/spacer.gif');
    visibility: visible !important;
}
.mceItemAnchor {
    width: 12px;
    line-height: 6px;
    overflow: hidden;
    padding-left: 12px;
    background-image: url('../images/anchor_symbol.gif');
    background-position: bottom;
    background-repeat: no-repeat;
}
/* Important is needed in Gecko browsers inorder to style links */
/*
a {
    color: green !important;
}
*/
/* Style selection range colors in Gecko browsers */
/*
::-moz-selection {
    background-color: red;
    color: green;
}
*/
/* MSIE specific */
* html body {
    scrollbar-3dlight-color: #F0F0EE;
    scrollbar-arrow-color: #676662;
    scrollbar-base-color: #F0F0EE;
    scrollbar-darkshadow-color: #DDDDDD;
    scrollbar-face-color: #E0E0DD;
    scrollbar-highlight-color: #F0F0EE;
    scrollbar-shadow-color: #F0F0EE;
    scrollbar-track-color: #F5F5F5;
}
}
skins/default/includes/header.html
@@ -1,3 +1,3 @@
<div id="header"><roundcube:button command="mail" image="/images/roundcube_logo.png" alt="RoundCube Webmail" width="165" height="55" /></div>
<div id="header"><roundcube:button command="mail" image="/images/roundcube_logo.png" alt="RoundCube Webmail" /></div>
<roundcube:object name="message" id="message" />
skins/default/mail.css
@@ -153,6 +153,9 @@
  left: 20px;
  right: 20px;
  bottom: 20px;
  /* css hack for IE */
  width: expression((parseInt(document.documentElement.clientWidth)-40)+'px');
  height: expression((parseInt(document.documentElement.clientHeight)-100)+'px');
}
#mailcontframe
@@ -202,8 +205,6 @@
  height: 100%;
  border: 1px solid #999999;
  background-color: #F9F9F9;
  /* css hack for IE */
  height: expression(parseInt(document.getElementById('messagepartcontainer').offsetHeight)+'px');
}
skins/default/settings.css
@@ -69,7 +69,7 @@
#folder-manager
{
  width: 540px;
  width: 600px;
  bottom: 140px;
  overflow: auto;
  border: 1px solid #999999;
@@ -119,7 +119,7 @@
#bottomboxes
{
  position: absolute;
  width: 540px;
  width: 600px;
  height: 120px;
  left: 20px;
  bottom: 20px;
@@ -142,7 +142,7 @@
div.settingsbox
{
  width: 540px;
  width: 600px;
  margin-top: 20px;
  margin-bottom: 20px;
  border: 1px solid #999999;
@@ -185,28 +185,15 @@
#subscription-table thead td.name
{
  width: 240px;
  width: 250px;
}
#subscription-table thead td.msgcount
{
  width: 70px;
  width: 90px;
}
#subscription-table thead td.subscribed
{
  width: 60px;
}
#subscription-table tbody td.msgcount,
#subscription-table tbody td.subscribed
{
  padding-left: 18px;
}
#subscription-table thead td.rename,
#subscription-table thead td.delete
{
  width: 20px;
  text-align: center;
  width: 90px;
}
skins/default/templates/login.html
@@ -28,7 +28,7 @@
</head>
<body>
<img src="/images/roundcube_logo.png" width="165" height="55" border="0" alt="<roundcube:object name='productname' />" hspace="12" vspace="2"/>
<img src="/images/roundcube_logo.png" border="0" alt="<roundcube:object name='productname' />" style="margin:2px 12px" />
<roundcube:object name="message" id="message" />
skins/default/templates/printmessage.html
@@ -6,7 +6,7 @@
</head>
<body>
<div id="header"><img src="/images/roundcube_logo_print.gif" width="182" height="50" alt="RoundCube Webmail" /></div>
<div id="header"><img src="/images/roundcube_logo_print.gif" alt="<roundcube:object name="productname" />" /></div>
<div id="messageframe">
<roundcube:object name="messageHeaders" class="headers-table" cellspacing="0" cellpadding="2" />