CHANGELOG | ●●●●● patch | view | raw | blame | history | |
program/include/rcmail_output_html.php | ●●●●● patch | view | raw | blame | history | |
program/js/app.js | ●●●●● patch | view | raw | blame | history | |
program/lib/Roundcube/rcube_imap.php | ●●●●● patch | view | raw | blame | history | |
program/localization/de_CH/csv2vcard.inc | ●●●●● patch | view | raw | blame | history | |
program/localization/de_DE/csv2vcard.inc | ●●●●● patch | view | raw | blame | history |
CHANGELOG
@@ -31,6 +31,7 @@ - Fix so responses menu hides on click in classic skin (#1489915) - Fix unintentional line-height style modification in HTML messages (#1489917) - Fix broken normalize_string(), add support for ISO-8859-2 (#1489918) - Support csv contacts import in German localization (#1489920) RELEASE 1.0.1 ------------- program/include/rcmail_output_html.php
@@ -68,6 +68,7 @@ $this->set_env('task', $task); $this->set_env('x_frame_options', $this->config->get('x_frame_options', 'sameorigin')); $this->set_env('standard_windows', (bool) $this->config->get('standard_windows')); $this->set_env('locale', $_SESSION['language']); // add cookie info $this->set_env('cookie_domain', ini_get('session.cookie_domain')); program/js/app.js
@@ -5898,7 +5898,8 @@ if (!this.gui_objects.subscriptionlist) return false; var row, n, i, tmp, tmp_name, rowid, folders = [], list = [], slist = [], var row, n, i, tmp, tmp_name, rowid, collator, folders = [], list = [], slist = [], tbody = this.gui_objects.subscriptionlist.tBodies[0], refrow = $('tr', tbody).get(1), id = 'rcmrow'+((new Date).getTime()); @@ -5925,24 +5926,32 @@ // add to folder/row-ID map this.env.subscriptionrows[id] = [name, display_name, false]; // sort folders (to find a place where to insert the row) // replace delimiter with \0 character to fix sorting // issue where 'Abc Abc' would be placed before 'Abc/def' var replace_from = RegExp(RegExp.escape(this.env.delimiter), 'g'), replace_to = String.fromCharCode(0); // copy folders data to an array for sorting $.each(this.env.subscriptionrows, function(k, v) { folders.push(v); }); $.each(this.env.subscriptionrows, function(k,v) { if (v.length < 4) { var n = v[0]; n = n.replace(replace_from, replace_to); v.push(n); } folders.push(v); }); try { // use collator if supported (FF29, IE11, Opera15, Chrome24) collator = new Intl.Collator(this.env.locale.replace('_', '-')); } catch (e) {}; // sort folders folders.sort(function(a, b) { var len = a.length - 1; n1 = a[len], n2 = b[len]; return n1 < n2 ? -1 : 1; var i, f1, f2, path1 = a[0].split(ref.env.delimiter), path2 = b[0].split(ref.env.delimiter); for (i=0; i<path1.length; i++) { f1 = path1[i]; f2 = path2[i]; if (f1 !== f2) { if (collator) return collator.compare(f1, f2); else return f1 < f2 ? -1 : 1; } } }); for (n in folders) { program/lib/Roundcube/rcube_imap.php
@@ -4142,19 +4142,15 @@ */ public function sort_folder_list($a_folders, $skip_default = false) { $delimiter = $this->get_hierarchy_delimiter(); $specials = array_merge(array('INBOX'), array_values($this->get_special_folders())); $folders = array_flip($a_folders); $folders = array(); // convert names to UTF-8 and skip folders starting with '.' foreach ($a_folders as $folder) { if ($folder[0] != '.') { // for better performance skip encoding conversion // if the string does not look like UTF7-IMAP $folders[$folder] = strpos($folder, '+') === false ? $folder : rcube_charset::convert($folder, 'UTF7-IMAP'); } else { unset($folders[$idx]); $folders[$folder] = strpos($folder, '&') === false ? $folder : rcube_charset::convert($folder, 'UTF7-IMAP'); } } @@ -4175,7 +4171,7 @@ // place default folders on top foreach ($specials as $special) { $prefix = $special . $delimiter; $prefix = $special . $this->delimiter; foreach ($folders as $idx => $folder) { if ($folder === $special) { @@ -4200,9 +4196,8 @@ */ protected function sort_folder_comparator($str1, $str2) { $delimiter = $this->get_hierarchy_delimiter(); $path1 = explode($delimiter, $str1); $path2 = explode($delimiter, $str2); $path1 = explode($this->delimiter, $str1); $path2 = explode($this->delimiter, $str2); foreach ($path1 as $idx => $folder1) { $folder2 = $path2[$idx]; program/localization/de_CH/csv2vcard.inc
New file @@ -0,0 +1,110 @@ <?php /* +-----------------------------------------------------------------------+ | localization/de_CH/csv2vcard.inc | | | | Localization file of the Roundcube Webmail client | | Copyright (C) 2005-2014, The Roundcube Dev Team | | | | Licensed under the GNU General Public License version 3 or | | any later version with exceptions for skins & plugins. | | See the README file for a full license statement. | | | +-----------------------------------------------------------------------+ | Author: Aleksander Machniak <alec@alec.pl> | +-----------------------------------------------------------------------+ */ // This is a list of CSV column names specified in CSV file header // These must be original texts used in Outlook/Thunderbird exported csv files // Encoding UTF-8 $map = array(); // MS Outlook 2010 $map['anniversary'] = "Jahrestag"; $map['assistants_name'] = "Name Assistent"; $map['assistants_phone'] = "Telefon Assistent"; $map['birthday'] = "Geburtstag"; $map['business_city'] = "Ort geschäftlich"; $map['business_countryregion'] = "Region geschäftlich"; $map['business_fax'] = "Fax geschäftlich"; $map['business_phone'] = "Telefon geschäftlich"; $map['business_phone_2'] = "Telefon geschäftlich 2"; $map['business_postal_code'] = "Postleitzahl geschäftlich"; $map['business_state'] = "Land geschäftlich"; $map['business_street'] = "Straße geschäftlich"; $map['car_phone'] = "Autotelefon"; $map['categories'] = "Kategorien"; $map['company'] = "Firma"; $map['department'] = "Abteilung"; $map['email_address'] = "E-Mail-Adresse"; $map['first_name'] = "Vorname"; $map['gender'] = "Geschlecht"; $map['home_city'] = "Ort privat"; $map['home_countryregion'] = "Region privat"; $map['home_fax'] = "Fax privat"; $map['home_phone'] = "Telefon privat"; $map['home_phone_2'] = "Telefon privat 2"; $map['home_postal_code'] = "Postleitzahl privat"; $map['home_state'] = "Land privat"; $map['home_street'] = "Straße privat"; $map['job_title'] = "Position"; $map['last_name'] = "Nachname"; $map['managers_name'] = "Manager's Name"; $map['middle_name'] = "Weitere Vornamen"; $map['mobile_phone'] = "Mobiltelefon"; $map['notes'] = "Notizen"; $map['other_city'] = "Weiterer Ort"; $map['other_countryregion'] = "Weitere Region"; $map['other_fax'] = "Weiteres Fax"; $map['other_phone'] = "Weiteres Telefon"; $map['other_postal_code'] = "Weitere Postleitzahl"; $map['other_state'] = "Weiteres Land"; $map['other_street'] = "Weitere Straße"; $map['pager'] = "Pager"; $map['primary_phone'] = "Haupttelefon"; $map['spouse'] = "Spouse"; $map['suffix'] = "Suffix"; $map['title'] = "Title"; $map['web_page'] = "Webseite"; // Thunderbird $map['birth_day'] = "Geburtstag"; $map['birth_month'] = "Geburtsmonat"; $map['birth_year'] = "Geburtsjahr"; $map['display_name'] = "Anzeigename"; $map['fax_number'] = "Fax-Nummer"; $map['home_address'] = "Privat: Adresse"; $map['home_country'] = "Privat: Land"; $map['home_zipcode'] = "Privat: PLZ"; $map['mobile_number'] = "Mobil-Tel.-Nr."; $map['nickname'] = "Spitzname"; $map['organization'] = "Organisation"; $map['pager_number'] = "Pager-Nummer"; $map['primary_email'] = "Primäre E-Mail-Adresse"; $map['secondary_email'] = "Sekundäre E-Mail-Adresse"; $map['web_page_1'] = "Webseite 1"; $map['web_page_2'] = "Webseite 2"; $map['work_phone'] = "Tel. dienstlich"; $map['work_address'] = "Dienstlich: Adresse"; $map['work_country'] = "Dienstlich: Land"; $map['work_zipcode'] = "Dienstlich: PLZ"; // Atmail $map['date_of_birth'] = "Date of Birth"; $map['email'] = "Email"; $map['home_mobile'] = "Home Mobile"; $map['home_zip'] = "Home Zip"; $map['info'] = "Info"; $map['user_photo'] = "User Photo"; $map['url'] = "URL"; $map['work_city'] = "Work City"; $map['work_company'] = "Work Company"; $map['work_dept'] = "Work Dept"; $map['work_fax'] = "Work Fax"; $map['work_mobile'] = "Work Mobile"; $map['work_state'] = "Work State"; $map['work_title'] = "Work Title"; $map['work_zip'] = "Work Zip"; program/localization/de_DE/csv2vcard.inc
New file @@ -0,0 +1,110 @@ <?php /* +-----------------------------------------------------------------------+ | localization/de_DE/csv2vcard.inc | | | | Localization file of the Roundcube Webmail client | | Copyright (C) 2005-2014, The Roundcube Dev Team | | | | Licensed under the GNU General Public License version 3 or | | any later version with exceptions for skins & plugins. | | See the README file for a full license statement. | | | +-----------------------------------------------------------------------+ | Author: Aleksander Machniak <alec@alec.pl> | +-----------------------------------------------------------------------+ */ // This is a list of CSV column names specified in CSV file header // These must be original texts used in Outlook/Thunderbird exported csv files // Encoding UTF-8 $map = array(); // MS Outlook 2010 $map['anniversary'] = "Jahrestag"; $map['assistants_name'] = "Name Assistent"; $map['assistants_phone'] = "Telefon Assistent"; $map['birthday'] = "Geburtstag"; $map['business_city'] = "Ort geschäftlich"; $map['business_countryregion'] = "Region geschäftlich"; $map['business_fax'] = "Fax geschäftlich"; $map['business_phone'] = "Telefon geschäftlich"; $map['business_phone_2'] = "Telefon geschäftlich 2"; $map['business_postal_code'] = "Postleitzahl geschäftlich"; $map['business_state'] = "Land geschäftlich"; $map['business_street'] = "Straße geschäftlich"; $map['car_phone'] = "Autotelefon"; $map['categories'] = "Kategorien"; $map['company'] = "Firma"; $map['department'] = "Abteilung"; $map['email_address'] = "E-Mail-Adresse"; $map['first_name'] = "Vorname"; $map['gender'] = "Geschlecht"; $map['home_city'] = "Ort privat"; $map['home_countryregion'] = "Region privat"; $map['home_fax'] = "Fax privat"; $map['home_phone'] = "Telefon privat"; $map['home_phone_2'] = "Telefon privat 2"; $map['home_postal_code'] = "Postleitzahl privat"; $map['home_state'] = "Land privat"; $map['home_street'] = "Straße privat"; $map['job_title'] = "Position"; $map['last_name'] = "Nachname"; $map['managers_name'] = "Manager's Name"; $map['middle_name'] = "Weitere Vornamen"; $map['mobile_phone'] = "Mobiltelefon"; $map['notes'] = "Notizen"; $map['other_city'] = "Weiterer Ort"; $map['other_countryregion'] = "Weitere Region"; $map['other_fax'] = "Weiteres Fax"; $map['other_phone'] = "Weiteres Telefon"; $map['other_postal_code'] = "Weitere Postleitzahl"; $map['other_state'] = "Weiteres Land"; $map['other_street'] = "Weitere Straße"; $map['pager'] = "Pager"; $map['primary_phone'] = "Haupttelefon"; $map['spouse'] = "Spouse"; $map['suffix'] = "Suffix"; $map['title'] = "Title"; $map['web_page'] = "Webseite"; // Thunderbird $map['birth_day'] = "Geburtstag"; $map['birth_month'] = "Geburtsmonat"; $map['birth_year'] = "Geburtsjahr"; $map['display_name'] = "Anzeigename"; $map['fax_number'] = "Fax-Nummer"; $map['home_address'] = "Privat: Adresse"; $map['home_country'] = "Privat: Land"; $map['home_zipcode'] = "Privat: PLZ"; $map['mobile_number'] = "Mobil-Tel.-Nr."; $map['nickname'] = "Spitzname"; $map['organization'] = "Organisation"; $map['pager_number'] = "Pager-Nummer"; $map['primary_email'] = "Primäre E-Mail-Adresse"; $map['secondary_email'] = "Sekundäre E-Mail-Adresse"; $map['web_page_1'] = "Webseite 1"; $map['web_page_2'] = "Webseite 2"; $map['work_phone'] = "Tel. dienstlich"; $map['work_address'] = "Dienstlich: Adresse"; $map['work_country'] = "Dienstlich: Land"; $map['work_zipcode'] = "Dienstlich: PLZ"; // Atmail $map['date_of_birth'] = "Date of Birth"; $map['email'] = "Email"; $map['home_mobile'] = "Home Mobile"; $map['home_zip'] = "Home Zip"; $map['info'] = "Info"; $map['user_photo'] = "User Photo"; $map['url'] = "URL"; $map['work_city'] = "Work City"; $map['work_company'] = "Work Company"; $map['work_dept'] = "Work Dept"; $map['work_fax'] = "Work Fax"; $map['work_mobile'] = "Work Mobile"; $map['work_state'] = "Work State"; $map['work_title'] = "Work Title"; $map['work_zip'] = "Work Zip";