Aleksander Machniak
2013-06-11 c6f0755860b7a08b68375c534d1fae40dbaaf21d
Support string list arguments in filter form (#1489018)
2 files added
55 files modified
499 ■■■■ changed files
plugins/managesieve/Changelog 29 ●●●● patch | view | raw | blame | history
plugins/managesieve/localization/az_AZ.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/be_BE.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/bg_BG.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/bs_BA.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/ca_ES.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/cs_CZ.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/cy_GB.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/da_DK.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/de_CH.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/de_DE.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/el_GR.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/en_GB.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/en_US.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/eo.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/es_AR.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/es_ES.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/et_EE.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/fa_IR.inc 1 ●●●● patch | view | raw | blame | history
plugins/managesieve/localization/fi_FI.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/fr_FR.inc 6 ●●●● patch | view | raw | blame | history
plugins/managesieve/localization/gl_ES.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/he_IL.inc 1 ●●●● patch | view | raw | blame | history
plugins/managesieve/localization/hu_HU.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/hy_AM.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/ia.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/id_ID.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/it_IT.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/ja_JP.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/ko_KR.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/lt_LT.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/lv_LV.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/ml_IN.inc 1 ●●●● patch | view | raw | blame | history
plugins/managesieve/localization/mr_IN.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/nb_NO.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/nl_NL.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/nn_NO.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/pl_PL.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/pt_BR.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/pt_PT.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/ro_RO.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/ru_RU.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/si_LK.inc 1 ●●●● patch | view | raw | blame | history
plugins/managesieve/localization/sk_SK.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/sl_SI.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/sv_SE.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/tr_TR.inc 4 ●●●● patch | view | raw | blame | history
plugins/managesieve/localization/uk_UA.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/vi_VN.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/zh_CN.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/localization/zh_TW.inc 2 ●●● patch | view | raw | blame | history
plugins/managesieve/managesieve.js 126 ●●●● patch | view | raw | blame | history
plugins/managesieve/managesieve.php 81 ●●●●● patch | view | raw | blame | history
plugins/managesieve/skins/classic/images/plus_minus.png patch | view | raw | blame | history
plugins/managesieve/skins/classic/managesieve.css 72 ●●●●● patch | view | raw | blame | history
plugins/managesieve/skins/larry/images/plus_minus.png patch | view | raw | blame | history
plugins/managesieve/skins/larry/managesieve.css 89 ●●●●● patch | view | raw | blame | history
plugins/managesieve/Changelog
@@ -1,5 +1,6 @@
- Add vacation-seconds extension support (RFC 6131)
- Several script parser code improvements
- Support string list arguments in filter form (#1489018)
* version 6.2 [2013-02-17]
-----------------------------------------------------------
@@ -206,18 +207,18 @@
- Added it_IT localization
* version 1.1 [2009-05-27]
-----------------------------------------------------------
-----------------------------------------------------------
- Added new icons
- Added support for headers lists (coma-separated) in rules
- Added de_CH localization
* version 1.0 [2009-05-21]
-----------------------------------------------------------
-----------------------------------------------------------
- Rewritten using plugin API
- Added hu_HU localization (Tamas Tevesz)
* version beta7 (svn-r2300) [2009-03-01]
-----------------------------------------------------------
-----------------------------------------------------------
- Added SquirrelMail script auto-import (Jonathan Ernst)
- Added 'vacation' support (Jonathan Ernst & alec)
- Added 'stop' support (Jonathan Ernst)
@@ -226,47 +227,47 @@
- Small style fixes
* version 0.2-stable1 (svn-r2205) [2009-01-03]
-----------------------------------------------------------
-----------------------------------------------------------
- Fix moving down filter row
- Fixes for compressed js files in stable release package
- Created patch for svn version r2205
* version 0.2-stable [2008-12-31]
-----------------------------------------------------------
-----------------------------------------------------------
- Added ru_RU, fr_FR, zh_CN translation
- Fixes for Roundcube 0.2-stable
* version rc0.2beta [2008-09-21]
-----------------------------------------------------------
* version 0.2-beta [2008-09-21]
-----------------------------------------------------------
- Small css fixes for IE
- Fixes for Roundcube 0.2-beta
* version beta6 [2008-08-08]
-----------------------------------------------------------
-----------------------------------------------------------
- Added de_DE translation
- Fix for Roundcube r1634
* version beta5 [2008-06-10]
-----------------------------------------------------------
-----------------------------------------------------------
- Fixed 'exists' operators
- Fixed 'not*' operators for custom headers
- Fixed filters deleting
* version beta4 [2008-06-09]
-----------------------------------------------------------
-----------------------------------------------------------
- Fix for Roundcube r1490
* version beta3 [2008-05-22]
-----------------------------------------------------------
-----------------------------------------------------------
- Fixed textarea error class setting
- Added pagetitle setting
- Added option 'managesieve_replace_delimiter'
- Fixed errors on IE (still need some css fixes)
* version beta2 [2008-05-20]
-----------------------------------------------------------
-----------------------------------------------------------
- Use 'if' only for first filter and 'elsif' for the rest
* version beta1 [2008-05-15]
-----------------------------------------------------------
-----------------------------------------------------------
- Initial version for Roundcube r1388.
plugins/managesieve/localization/az_AZ.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Sil';
$labels['sender'] = 'Göndərən';
$labels['recipient'] = 'Qəbul edən';
$labels['vacationaddresses'] = 'Əlavə ünvanlarım üçün siyahı (vergüllər ilə ayrılmış):';
$labels['vacationaddr'] = 'Əlavə ünvanlarım üçün siyahı:';
$labels['vacationdays'] = 'Məktub neçə müddətdən bir göndərilsin (gündə):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/be_BE.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Выдаліць';
$labels['sender'] = 'Ад каго';
$labels['recipient'] = 'Каму';
$labels['vacationaddresses'] = 'Дадатковы спіс атрымальнікаў (праз коску):';
$labels['vacationaddr'] = 'Дадатковы спіс атрымальнікаў:';
$labels['vacationdays'] = 'Як часта дасылаць паведамленні (ў днях):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/bg_BG.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Изтриване';
$labels['sender'] = 'Подател';
$labels['recipient'] = 'Получател';
$labels['vacationaddresses'] = 'Допълнителни e-mail адреси (разделени със запетая):';
$labels['vacationaddr'] = 'Допълнителни e-mail адреси:';
$labels['vacationdays'] = 'Колко често пращате съобщения (в дни):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/bs_BA.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Obriši';
$labels['sender'] = 'Pošiljaoc';
$labels['recipient'] = 'Primaoc';
$labels['vacationaddresses'] = 'Moje dodatne email adrese (odvojite zarezima):';
$labels['vacationaddr'] = 'Moje dodatne email adrese:';
$labels['vacationdays'] = 'Frekvencija slanja poruka (u danima):';
$labels['vacationinterval'] = 'Frekvencija slanja poruka:';
$labels['days'] = 'dana';
plugins/managesieve/localization/ca_ES.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Suprimeix';
$labels['sender'] = 'Remitent';
$labels['recipient'] = 'Destinatari/a';
$labels['vacationaddresses'] = 'Altres adreces electròniques meves (separades per coma)';
$labels['vacationaddr'] = 'Altres adreces electròniques meves:';
$labels['vacationdays'] = 'Cada quan enviar un missatge (en dies):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/cs_CZ.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Smaž';
$labels['sender'] = 'Odesílatel';
$labels['recipient'] = 'Příjemce';
$labels['vacationaddresses'] = 'Moje další e-mailové adresy (aliasy) spojené s tímto účtem (oddělené čárkou):';
$labels['vacationaddr'] = 'Moje další e-mailové adresy (aliasy) spojené s tímto účtem:';
$labels['vacationdays'] = 'Počet dnů mezi automatickými odpověďmi:';
$labels['vacationinterval'] = 'Prodleva mezi automatickými odpověďmi:';
$labels['days'] = 'dnů';
plugins/managesieve/localization/cy_GB.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Dileu';
$labels['sender'] = 'Anfonwr';
$labels['recipient'] = 'Derbynnwr';
$labels['vacationaddresses'] = 'Fy chyfeiriadau ebost ychwanegol (gwahanir gyda coma):';
$labels['vacationaddr'] = 'Fy chyfeiriadau ebost ychwanegol:';
$labels['vacationdays'] = 'Pa mor aml i ddanfon negeseuon (mewn dyddiau):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/da_DK.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Fjern';
$labels['sender'] = 'Afsender';
$labels['recipient'] = 'Modtager';
$labels['vacationaddresses'] = 'Mine alternative e-mailadresser (kommasepareret):';
$labels['vacationaddr'] = 'Mine alternative e-mailadresser:';
$labels['vacationdays'] = 'Hvor tit skal besked sendes (i dage):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/de_CH.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Löschen';
$labels['sender'] = 'Absender';
$labels['recipient'] = 'Empfänger';
$labels['vacationaddresses'] = 'Zusätzliche Liste von Empfängern (Komma getrennt):';
$labels['vacationaddr'] = 'Zusätzliche Liste von Empfängern:';
$labels['vacationdays'] = 'Antwort wird erneut gesendet nach (in Tagen):';
$labels['vacationinterval'] = 'Wie oft senden:';
$labels['days'] = 'Tage';
plugins/managesieve/localization/de_DE.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Löschen';
$labels['sender'] = 'Absender';
$labels['recipient'] = 'Empfänger';
$labels['vacationaddresses'] = 'Zusätzliche Liste von E-Mail Empfängern (Komma getrennt):';
$labels['vacationaddr'] = 'Zusätzliche Liste von E-Mail Empfängern:';
$labels['vacationdays'] = 'Wie oft sollen Nachrichten gesendet werden (in Tagen):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/el_GR.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Διαγραφή';
$labels['sender'] = 'Αποστολέας';
$labels['recipient'] = 'Παραλήπτης';
$labels['vacationaddresses'] = 'Πρόσθετη λίστα email παραληπτών (διαχωρισμένη με κόμματα):';
$labels['vacationaddr'] = 'Πρόσθετη λίστα email παραληπτών:';
$labels['vacationdays'] = 'Συχνότητα αποστολής μηνυμάτων (σε ημέρες):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/en_GB.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Delete';
$labels['sender'] = 'Sender';
$labels['recipient'] = 'Recipient';
$labels['vacationaddresses'] = 'Additional list of recipient e-mails (comma separated):';
$labels['vacationaddr'] = 'Additional list of recipient e-mails:';
$labels['vacationdays'] = 'How often send messages (in days):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/en_US.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Delete';
$labels['sender'] = 'Sender';
$labels['recipient'] = 'Recipient';
$labels['vacationaddresses'] = 'My additional e-mail addresse(s) (comma-separated):';
$labels['vacationaddr'] = 'My additional e-mail addresse(s):';
$labels['vacationdays'] = 'How often send messages (in days):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/eo.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Forigi';
$labels['sender'] = 'Sendanto';
$labels['recipient'] = 'Ricevanto';
$labels['vacationaddresses'] = 'My additional e-mail addresse(s) (comma-separated):';
$labels['vacationaddr'] = 'My additional e-mail addresse(s):';
$labels['vacationdays'] = 'How often send messages (in days):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/es_AR.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Eliminar';
$labels['sender'] = 'Remitente';
$labels['recipient'] = 'Destinatario';
$labels['vacationaddresses'] = 'Lista de direcciones de correo de destinatarios adicionales (separados por comas):';
$labels['vacationaddr'] = 'Lista de direcciones de correo de destinatarios adicionales:';
$labels['vacationdays'] = 'Cada cuanto enviar mensajes (en días):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/es_ES.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Eliminar';
$labels['sender'] = 'Remitente';
$labels['recipient'] = 'Destinatario';
$labels['vacationaddresses'] = 'Lista de direcciones de correo de destinatarios adicionales (separados por comas):';
$labels['vacationaddr'] = 'Lista de direcciones de correo de destinatarios adicionales:';
$labels['vacationdays'] = 'Cada cuánto enviar mensajes (en días):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/et_EE.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Kustuta';
$labels['sender'] = 'Saatja';
$labels['recipient'] = 'Saaja';
$labels['vacationaddresses'] = 'Lisanimekiri saaja e-posti aadressidest (komadega eraldatud):';
$labels['vacationaddr'] = 'Lisanimekiri saaja e-posti aadressidest:';
$labels['vacationdays'] = 'Kui tihti kirju saata (päevades):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/fa_IR.inc
@@ -55,7 +55,6 @@
$labels['del'] = 'حذف';
$labels['sender'] = 'فرستنده';
$labels['recipient'] = 'گیرنده';
$labels['vacationaddresses'] = 'آدرس‌های ایمیل دیگر من (جدا شده با ویرگول):';
$labels['vacationdays'] = 'پیغام ها در چه مواقعی فرستاده شدند (در روزهای):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/fi_FI.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Poista';
$labels['sender'] = 'Lähettäjä';
$labels['recipient'] = 'Vastaanottaja';
$labels['vacationaddresses'] = 'My additional e-mail addresse(s) (comma-separated):';
$labels['vacationaddr'] = 'My additional e-mail addresse(s):';
$labels['vacationdays'] = 'How often send messages (in days):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/fr_FR.inc
@@ -55,12 +55,12 @@
$labels['del'] = 'Supprimer';
$labels['sender'] = 'Expéditeur';
$labels['recipient'] = 'Destinataire';
$labels['vacationaddresses'] = 'Liste des destinataires (séparés par une virgule) :';
$labels['vacationdays'] = 'Ne pas renvoyer un message avant (jours) :';
$labels['vacationaddr'] = 'Liste des destinataires:';
$labels['vacationdays'] = 'Ne pas renvoyer un message avant (jours):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
$labels['seconds'] = 'seconds';
$labels['vacationreason'] = 'Corps du message (raison de l\'absence) :';
$labels['vacationreason'] = 'Corps du message (raison de l\'absence):';
$labels['vacationsubject'] = 'Sujet du message:';
$labels['rulestop'] = 'Arrêter d\'évaluer les prochaines règles';
$labels['enable'] = 'Activer/Désactiver';
plugins/managesieve/localization/gl_ES.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Eliminar';
$labels['sender'] = 'Remitente';
$labels['recipient'] = 'Destinatario';
$labels['vacationaddresses'] = 'Lista de enderezos de correo de destinatarios adicionais (separados por comas):';
$labels['vacationaddr'] = 'Lista de enderezos de correo de destinatarios adicionais:';
$labels['vacationdays'] = 'Cada canto enviar mensaxes (en días):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/he_IL.inc
@@ -55,7 +55,6 @@
$labels['del'] = 'מחיקה';
$labels['sender'] = 'השולח';
$labels['recipient'] = 'הנמען';
$labels['vacationaddresses'] = 'כתובות דוא"ל נוספות שלי (מופרדות ע"י פסיקים)';
$labels['vacationdays'] = 'באיזו תדירות ( בימים ) לשלוח הודעות:';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/hu_HU.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Törlés';
$labels['sender'] = 'Feladó';
$labels['recipient'] = 'Címzett';
$labels['vacationaddresses'] = 'További címzettek (vesszővel elválasztva):';
$labels['vacationaddr'] = 'További címzettek:';
$labels['vacationdays'] = 'Válaszüzenet küldése ennyi naponként:';
$labels['vacationinterval'] = 'Milyen gyakran küld üzeneteket:';
$labels['days'] = 'napok';
plugins/managesieve/localization/hy_AM.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Ջնջել';
$labels['sender'] = 'Ուղարկող';
$labels['recipient'] = 'Ստացող';
$labels['vacationaddresses'] = 'Իմ հավելյալ էլփոստի հասցեներ (բաժանված ստորակետներով).';
$labels['vacationaddr'] = 'Իմ հավելյալ էլփոստի հասցեներ.';
$labels['vacationdays'] = 'Ինչ հաճախությամբ ուղարկել հաղորդագրությունները (օրեր)`';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/ia.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Delete';
$labels['sender'] = 'Sender';
$labels['recipient'] = 'Recipient';
$labels['vacationaddresses'] = 'My additional e-mail addresse(s) (comma-separated):';
$labels['vacationaddr'] = 'My additional e-mail addresse(s):';
$labels['vacationdays'] = 'How often send messages (in days):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/id_ID.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Hapus';
$labels['sender'] = 'Pengirim';
$labels['recipient'] = 'Penerima';
$labels['vacationaddresses'] = 'Alamat email tambahan saya (dipisahkan koma):';
$labels['vacationaddr'] = 'Alamat email tambahan saya:';
$labels['vacationdays'] = 'Seberapa sering mengirim pesan (dalam hari):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/it_IT.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Elimina';
$labels['sender'] = 'Mittente';
$labels['recipient'] = 'Destinatario';
$labels['vacationaddresses'] = 'Lista di indirizzi e-mail di destinatari addizionali (separati da virgola):';
$labels['vacationaddr'] = 'Lista di indirizzi e-mail di destinatari addizionali:';
$labels['vacationdays'] = 'Ogni quanti giorni ribadire il messaggio allo stesso mittente';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/ja_JP.inc
@@ -55,7 +55,7 @@
$labels['del'] = '削除';
$labels['sender'] = '送信者';
$labels['recipient'] = '宛先';
$labels['vacationaddresses'] = '電子メールの宛先の(コンマ区切った)追加のリスト:';
$labels['vacationaddr'] = '電子メールの宛先の追加のリスト:';
$labels['vacationdays'] = 'メッセージを(1日に)送信する頻度:';
$labels['vacationinterval'] = 'メッセージを送信する頻度:';
$labels['days'] = '日';
plugins/managesieve/localization/ko_KR.inc
@@ -55,7 +55,7 @@
$labels['del'] = '삭제';
$labels['sender'] = '발신인';
$labels['recipient'] = '수신인';
$labels['vacationaddresses'] = '나의 추가 이메일 주소 (쉼표로 구분됨):';
$labels['vacationaddr'] = '나의 추가 이메일 주소:';
$labels['vacationdays'] = '메시지 발신 주기 (일):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/lt_LT.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Pašalinti';
$labels['sender'] = 'Siuntėjas';
$labels['recipient'] = 'Gavėjas';
$labels['vacationaddresses'] = 'Papildomas gavėjų adresų sąrašas (skirti kableliais):';
$labels['vacationaddr'] = 'Papildomas gavėjų adresų sąrašas:';
$labels['vacationdays'] = 'Kaip dažnai išsiųsti laiškus (dienomis):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/lv_LV.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Dzēst';
$labels['sender'] = 'Sūtītājs';
$labels['recipient'] = 'Saņēmējs';
$labels['vacationaddresses'] = 'Ievadiet vienu vai vairākus e-pastu(s), atdalot tos komatu:';
$labels['vacationaddr'] = 'Ievadiet vienu vai vairākus e-pastu(s):';
$labels['vacationdays'] = 'Cik dienu laikā vienam un tam pašam sūtītājam neatbildēt atkārtoti (piem., 7):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/ml_IN.inc
@@ -55,7 +55,6 @@
$labels['del'] = 'നീക്കം ചെയ്യുക';
$labels['sender'] = 'അയചയാള്‍';
$labels['recipient'] = 'സ്വീകര്‍ത്താവ്';
$labels['vacationaddresses'] = 'സ്വീകര്‍ത്താവിന്റെ ഇമെയില്‍ വിലാസങ്ങളുടെ അധികമുള്ള പട്ടിക (കോമയിട്ട് തിരിച്ച)';
$labels['vacationdays'] = 'എത്ര ഭിവസം കൂടുമ്പോള്‍ സന്ദേശം അയക്കണം:';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/mr_IN.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'नष्ट करा';
$labels['sender'] = 'प्रेषक';
$labels['recipient'] = 'Recipient';
$labels['vacationaddresses'] = 'My additional e-mail addresse(s) (comma-separated):';
$labels['vacationaddr'] = 'My additional e-mail addresse(s):';
$labels['vacationdays'] = 'How often send messages (in days):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/nb_NO.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Slett';
$labels['sender'] = 'Avsender';
$labels['recipient'] = 'Mottaker';
$labels['vacationaddresses'] = 'Liste med mottakeradresser (adskilt med komma):';
$labels['vacationaddr'] = 'Liste med mottakeradresser:';
$labels['vacationdays'] = 'Periode mellom meldinger (i dager):';
$labels['vacationinterval'] = 'Periode mellom meldinger:';
$labels['days'] = 'dager';
plugins/managesieve/localization/nl_NL.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Verwijderen';
$labels['sender'] = 'Afzender';
$labels['recipient'] = 'Ontvanger';
$labels['vacationaddresses'] = 'Aanvullende lijst van geadresseerden (gescheiden met komma\'s):';
$labels['vacationaddr'] = 'Aanvullende lijst van geadresseerden:';
$labels['vacationdays'] = 'Hoe vaak moet een bericht verstuurd worden (in dagen):';
$labels['vacationinterval'] = 'Hoe vaak moet een bericht verstuurd worden:';
$labels['days'] = 'dagen';
plugins/managesieve/localization/nn_NO.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Slett';
$labels['sender'] = 'Avsendar';
$labels['recipient'] = 'Mottakar';
$labels['vacationaddresses'] = 'Liste med mottakaradresser (komma-separert):';
$labels['vacationaddr'] = 'Liste med mottakaradresser:';
$labels['vacationdays'] = 'Periode mellom meldingar (i dagar):';
$labels['vacationreason'] = 'Innhald (grunngjeving for fråvær)';
$labels['vacationsubject'] = 'Meldingsemne:';
plugins/managesieve/localization/pl_PL.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Usuń';
$labels['sender'] = 'Nadawca';
$labels['recipient'] = 'Odbiorca';
$labels['vacationaddresses'] = 'Lista dodatkowych adresów odbiorców (oddzielonych przecinkami):';
$labels['vacationaddr'] = 'Lista dodatkowych adresów odbiorców:';
$labels['vacationdays'] = 'Częstotliwość wysyłania wiadomości (w dniach):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/pt_BR.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Excluir';
$labels['sender'] = 'Remetente';
$labels['recipient'] = 'Destinatário';
$labels['vacationaddresses'] = 'Lista adicional de e-mails destinatários (separado por vírgula):';
$labels['vacationaddr'] = 'Lista adicional de e-mails destinatários:';
$labels['vacationdays'] = 'Enviar mensagens com que frequência (em dias):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/pt_PT.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Eliminar';
$labels['sender'] = 'Remetente';
$labels['recipient'] = 'Destinatário';
$labels['vacationaddresses'] = 'Lista adicional de destinatários de e-mails (separados por vírgula):';
$labels['vacationaddr'] = 'Lista adicional de destinatários de e-mails:';
$labels['vacationdays'] = 'Enviar mensagens com que frequência (em dias):';
$labels['vacationinterval'] = 'Com que frequência envia mensagens:';
$labels['days'] = 'dias';
plugins/managesieve/localization/ro_RO.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Șterge';
$labels['sender'] = 'Expeditor';
$labels['recipient'] = 'Destinatar';
$labels['vacationaddresses'] = 'Adresele mele de e-mail adiționale (împărțite cu virgulă):';
$labels['vacationaddr'] = 'Adresele mele de e-mail adiționale:';
$labels['vacationdays'] = 'Cât de des să trimit mesajele (în zile):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/ru_RU.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Удалить';
$labels['sender'] = 'Отправитель';
$labels['recipient'] = 'Получатель';
$labels['vacationaddresses'] = 'Список моих дополнительных адресов (разделённых запятыми):';
$labels['vacationaddr'] = 'Список моих дополнительных адресов:';
$labels['vacationdays'] = 'Как часто отправлять сообщения (в днях):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/si_LK.inc
@@ -55,7 +55,6 @@
$labels['del'] = 'මකන්න';
$labels['sender'] = 'යවන්නා';
$labels['recipient'] = 'ලබන්නා';
$labels['vacationaddresses'] = 'My additional e-mail addresse(s) (comma-separated):';
$labels['vacationdays'] = 'How often send messages (in days):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/sk_SK.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Zmaž';
$labels['sender'] = 'Odosielateľ';
$labels['recipient'] = 'Adresát';
$labels['vacationaddresses'] = 'Dodatoční príjemcovia správy (oddelení čiarkami):';
$labels['vacationaddr'] = 'Dodatoční príjemcovia správy:';
$labels['vacationdays'] = 'Počet dní medzi odoslaním správy:';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/sl_SI.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Izbriši';
$labels['sender'] = 'Pošiljatelj';
$labels['recipient'] = 'Prejemnik';
$labels['vacationaddresses'] = 'Dodaten seznam naslovov prejemnikov (ločenih z vejico):';
$labels['vacationaddr'] = 'Dodaten seznam naslovov prejemnikov:';
$labels['vacationdays'] = 'Kako pogosto naj bodo sporočila poslana (v dnevih):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/sv_SE.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Ta bort';
$labels['sender'] = 'Avsändare';
$labels['recipient'] = 'Mottagare';
$labels['vacationaddresses'] = 'Ytterligare mottagaradresser (avdelade med kommatecken)';
$labels['vacationaddr'] = 'Ytterligare mottagaradresser:';
$labels['vacationdays'] = 'Antal dagar mellan auto-svar:';
$labels['vacationinterval'] = 'Tid mellan auto-svar:';
$labels['days'] = 'Dagar';
plugins/managesieve/localization/tr_TR.inc
@@ -55,8 +55,8 @@
$labels['del'] = 'Sil';
$labels['sender'] = 'Gönderici';
$labels['recipient'] = 'Alıcı';
$labels['vacationaddresses'] = 'İlave e-posta adreslerim(virgül ile ayrılmış)';
$labels['vacationdays'] = 'Ne sıklıkla mesajlar gönderilir(gün)';
$labels['vacationaddr'] = 'İlave e-posta adreslerim:';
$labels['vacationdays'] = 'Ne sıklıkla mesajlar gönderilir(gün):';
$labels['vacationinterval'] = 'Ne kadar sıklıkla mesaj gönderirsiniz:';
$labels['days'] = 'günler';
$labels['seconds'] = 'saniyeler';
plugins/managesieve/localization/uk_UA.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Видалити';
$labels['sender'] = 'Відправник';
$labels['recipient'] = 'Отримувач';
$labels['vacationaddresses'] = 'Додатковий список адрес отримувачів (розділених комою)';
$labels['vacationaddr'] = 'Додатковий список адрес отримувачів:';
$labels['vacationdays'] = 'Як часто повторювати (у днях):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/vi_VN.inc
@@ -55,7 +55,7 @@
$labels['del'] = 'Xoá';
$labels['sender'] = 'Người gửi';
$labels['recipient'] = 'Người nhận';
$labels['vacationaddresses'] = 'Địa chỉ email bổ sung của tôi ( phân cách bằng dấu phẩy)';
$labels['vacationaddr'] = 'Địa chỉ email bổ sung của tôi';
$labels['vacationdays'] = 'Số lần gửi thư (trong ngày)';
$labels['vacationreason'] = 'Nội dung chính';
$labels['vacationsubject'] = 'Tiêu đề thư';
plugins/managesieve/localization/zh_CN.inc
@@ -55,7 +55,7 @@
$labels['del'] = '删除';
$labels['sender'] = '发件人';
$labels['recipient'] = '收件人';
$labels['vacationaddresses'] = '收件人地址的附加名单(以半角逗号分隔)';
$labels['vacationaddr'] = '收件人地址的附加名单';
$labels['vacationdays'] = '发送邮件频率(单位:天):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/localization/zh_TW.inc
@@ -55,7 +55,7 @@
$labels['del'] = '刪除';
$labels['sender'] = '寄件者';
$labels['recipient'] = '收件者';
$labels['vacationaddresses'] = '其他收件者(用半形逗號隔開):';
$labels['vacationaddr'] = '其他收件者:';
$labels['vacationdays'] = '多久回覆一次(單位:天):';
$labels['vacationinterval'] = 'How often send messages:';
$labels['days'] = 'days';
plugins/managesieve/managesieve.js
@@ -55,6 +55,11 @@
        }
        $('input[type="text"]:first', rcmail.gui_objects.sieveform).focus();
        // initialize smart list inputs
        $('textarea[data-type="list"]', rcmail.gui_objects.sieveform).each(function() {
          smart_field_init(this);
        });
      }
      else {
        rcmail.enable_command('plugin.managesieve-add', 'plugin.managesieve-setadd', !rcmail.env.sieveconnerror);
@@ -469,6 +474,11 @@
    row.className = 'rulerow';
    row.innerHTML = content;
    // initialize smart list inputs
    $('textarea[data-type="list"]', row).each(function() {
      smart_field_init(this);
    });
    this.managesieve_formbuttons(div);
  }
};
@@ -565,7 +575,6 @@
  var obj = document.getElementById('header' + id),
    size = document.getElementById('rule_size' + id),
    op = document.getElementById('rule_op' + id),
    target = document.getElementById('rule_target' + id),
    header = document.getElementById('custom_header' + id),
    mod = document.getElementById('rule_mod' + id),
    trans = document.getElementById('rule_trans' + id),
@@ -574,31 +583,30 @@
  if (obj.value == 'size') {
    size.style.display = 'inline';
    op.style.display = 'none';
    target.style.display = 'none';
    header.style.display = 'none';
    mod.style.display = 'none';
    trans.style.display = 'none';
    comp.style.display = 'none';
  }
  else {
    header.style.display = obj.value != '...' ? 'none' : 'inline';
    header.style.display = obj.value != '...' ? 'none' : 'inline-block';
    size.style.display = 'none';
    op.style.display = 'inline';
    comp.style.display = '';
    rule_op_select(id);
    mod.style.display = obj.value == 'body' ? 'none' : 'block';
    trans.style.display = obj.value == 'body' ? 'block' : 'none';
  }
  rule_op_select(op, id, obj.value);
  obj.style.width = obj.value == '...' ? '40px' : '';
};
function rule_op_select(id)
function rule_op_select(obj, id, header)
{
  var obj = document.getElementById('rule_op' + id),
    target = document.getElementById('rule_target' + id);
  var target = document.getElementById('rule_target' + id + '_list'),
    style = obj.value == 'exists' || obj.value == 'notexists' || header == 'size' ? 'none' : 'inline-block';
  target.style.display = obj.value == 'exists' || obj.value == 'notexists' ? 'none' : 'inline';
  target.style.display = style;
};
function rule_trans_select(id)
@@ -677,6 +685,75 @@
  }
};
// Inititalizes smart list input
function smart_field_init(field)
{
  var id = field.id + '_list',
    area = $('<span class="listarea"></span>'),
    list = field.value ? field.value.split("\n") : [''];
  if ($('#'+id).length)
    return;
  // add input rows
  $.each(list, function(i, v) {
    area.append(smart_field_row(v, field.name, i, $(field).data('size')));
  });
  area.attr('id', id);
  field = $(field);
  if (field.attr('disabled'))
    area.hide();
  field.after(area);
  if (field.hasClass('error')) {
    area.addClass('error');
    rcmail.managesieve_tip_register([[id, field.data('tip')]]);
  }
};
function smart_field_row(value, name, idx, size)
{
  // build row element content
  var input, content = '<span class="listelement">'
      + '<span class="actions"><span class="add"></span><span class="reset"></span></span>'
      + '<input type="text"></span>',
    elem = $(content),
    attrs = {value: value, name: name + '[]'};
  if (size)
    attrs.size = size;
  input = $('input', elem).attr(attrs)
    .keydown(function(e) { if (e.which == 13) $('span[class="add"]', elem).click(); });
  // element creation event
  $('span[class="add"]', elem).click(function() {
    var span = $(this.parentNode.parentNode),
      input = $('input', span),
      name = input.attr('name').replace(/\[\]$/, ''),
      dt = (new Date()).getTime(),
      elem = smart_field_row('', name, dt, size);
    span.after(elem);
    $('input', elem).focus();
  });
  // element deletion event
  $('span[class="reset"]', elem).click(function() {
    var span = $(this.parentNode.parentNode);
    if (span.parent().children().length > 1)
      span.remove();
    else
      $('input', span).val('').focus();
  });
  return elem;
}
// Register onmouse(leave/enter) events for tips on specified form element
rcube_webmail.prototype.managesieve_tip_register = function(tips)
{
@@ -685,25 +762,26 @@
  for (var n in tips) {
    $('#'+tips[n][0])
      .bind('mouseenter', {str: tips[n][1]},
        function(e) {
          var offset = $(this).offset(),
            left = offset.left,
            top = offset.top - 12,
            minwidth = $(this).width();
      .data('tip', tips[n][1])
      .bind('mouseenter', function(e) {
        var elem = $(this),
          offset = elem.offset(),
          left = offset.left,
          top = offset.top - 12,
          minwidth = elem.width();
          if (framed) {
            offset = $((rcmail.env.task == 'mail'  ? '#sievefilterform > iframe' : '#filter-box'), parent.document).offset();
            top  += offset.top;
            left += offset.left;
          }
        if (framed) {
          offset = $((rcmail.env.task == 'mail'  ? '#sievefilterform > iframe' : '#filter-box'), parent.document).offset();
          top  += offset.top;
          left += offset.left;
        }
          tip.html(e.data.str)
          top -= tip.height();
        tip.html(elem.data('tip'));
        top -= tip.height();
          tip.css({left: left, top: top, minWidth: (minwidth-2) + 'px'}).show();
        })
      .bind('mouseleave', function(e) { tip.hide(); });
        tip.css({left: left, top: top, minWidth: (minwidth-2) + 'px'}).show();
      })
    .bind('mouseleave', function(e) { tip.hide(); });
  }
};
plugins/managesieve/managesieve.php
@@ -708,8 +708,9 @@
            }
            else {
                foreach ($headers as $idx => $header) {
                    // targets are indexed differently (assume form order)
                    $target     = $this->strip_value(array_shift($targets), true);
                    $header     = $this->strip_value($header);
                    $target     = $this->strip_value($targets[$idx], true);
                    $operator   = $this->strip_value($ops[$idx]);
                    $comparator = $this->strip_value($comparators[$idx]);
@@ -747,10 +748,16 @@
                        $this->form['tests'][$i]['type'] = $type;
                        $this->form['tests'][$i]['arg']  = $target;
                        if ($target == '' && $type != 'exists')
                        if (empty($target) && $type != 'exists') {
                            $this->errors['tests'][$i]['target'] = $this->gettext('cannotbeempty');
                        else if (preg_match('/^(value|count)-/', $type) && !preg_match('/[0-9]+/', $target))
                            $this->errors['tests'][$i]['target'] = $this->gettext('forbiddenchars');
                        }
                        else if (preg_match('/^(value|count)-/', $type)) {
                            foreach ($target as $target_value) {
                                if (!preg_match('/[0-9]+/', $target_value)) {
                                    $this->errors['tests'][$i]['target'] = $this->gettext('forbiddenchars');
                                }
                            }
                        }
                        $this->form['tests'][$i]['part'] = $trans;
                        if ($trans == 'content') {
@@ -809,10 +816,16 @@
                            $this->form['tests'][$i]['arg1'] = $header;
                            $this->form['tests'][$i]['arg2'] = $target;
                            if ($target == '')
                            if (empty($target)) {
                                $this->errors['tests'][$i]['target'] = $this->gettext('cannotbeempty');
                            else if (preg_match('/^(value|count)-/', $type) && !preg_match('/[0-9]+/', $target))
                                $this->errors['tests'][$i]['target'] = $this->gettext('forbiddenchars');
                            }
                            else if (preg_match('/^(value|count)-/', $type)) {
                                foreach ($target as $target_value) {
                                    if (!preg_match('/[0-9]+/', $target_value)) {
                                        $this->errors['tests'][$i]['target'] = $this->gettext('forbiddenchars');
                                    }
                                }
                            }
                            if ($mod) {
                                $this->form['tests'][$i]['part'] = $mod_type;
@@ -893,20 +906,14 @@
                    $interval_type = $interval_types[$idx] == 'seconds' ? 'seconds' : 'days';
                    $this->form['actions'][$i]['reason']    = str_replace("\r\n", "\n", $reason);
                    $this->form['actions'][$i]['subject']   = $subject[$idx];
                    $this->form['actions'][$i]['addresses'] = explode(',', $addresses[$idx]);
                    $this->form['actions'][$i]['addresses'] = array_shift($addresses);
                    $this->form['actions'][$i][$interval_type] = $intervals[$idx];
// @TODO: vacation :mime, :from, :handle
                    if ($this->form['actions'][$i]['addresses']) {
                        foreach($this->form['actions'][$i]['addresses'] as $aidx => $address) {
                            $address = trim($address);
                            if (!$address)
                                unset($this->form['actions'][$i]['addresses'][$aidx]);
                            else if(!rcube_utils::check_email($address)) {
                                $this->errors['actions'][$i]['addresses'] = $this->gettext('noemailwarning');
                                break;
                            } else
                                $this->form['actions'][$i]['addresses'][$aidx] = $address;
                    foreach ((array)$this->form['actions'][$i]['addresses'] as $aidx => $address) {
                        if (!rcube_utils::check_email($address)) {
                            $this->errors['actions'][$i]['addresses'] = $this->gettext('noemailwarning');
                            break;
                        }
                    }
@@ -1406,9 +1413,9 @@
        }
        $tout .= $select_op->show($test);
        $tout .= '<input type="text" name="_rule_target[]" id="rule_target' .$id. '"
            value="' .rcube::Q($target). '" size="20" ' . $this->error_class($id, 'test', 'target', 'rule_target')
            . ' style="display:' . ($rule['test']!='size' && $rule['test'] != 'exists' ? 'inline' : 'none') . '" />'."\n";
        $tout .= $this->list_input($id, 'rule_target', $target,
            $rule['test'] != 'size' && $rule['test'] != 'exists',
            $this->error_class($id, 'test', 'target', 'rule_target')) . "\n";
        $select_size_op = new html_select(array('name' => "_rule_size_op[]", 'id' => 'rule_size_op'.$id));
        $select_size_op->add(rcube::Q($this->gettext('filterover')), 'over');
@@ -1589,10 +1596,9 @@
            .'<input type="text" name="_action_subject['.$id.']" id="action_subject'.$id.'" '
            .'value="' . (is_array($action['subject']) ? rcube::Q(implode(', ', $action['subject']), 'strict', false) : $action['subject']) . '" size="35" '
            . $this->error_class($id, 'action', 'subject', 'action_subject') .' />';
        $out .= '<br /><span class="label">' .rcube::Q($this->gettext('vacationaddresses')) . '</span><br />'
            .'<input type="text" name="_action_addresses['.$id.']" id="action_addr'.$id.'" '
            .'value="' . (is_array($action['addresses']) ? rcube::Q(implode(', ', $action['addresses']), 'strict', false) : $action['addresses']) . '" size="35" '
            . $this->error_class($id, 'action', 'addresses', 'action_addr') .' />';
        $out .= '<br /><span class="label">' .rcube::Q($this->gettext('vacationaddr')) . '</span><br />'
            . $this->list_input($id, 'action_addresses', $action['addresses'], true,
                $this->error_class($id, 'action', 'addresses', 'action_addresses'), 30);
        $out .= '<br /><span class="label">' . rcube::Q($this->gettext($vsec ? 'vacationinterval' : 'vacationdays')) . '</span><br />'
            .'<input type="text" name="_action_interval['.$id.']" id="action_interval'.$id.'" '
            .'value="' .rcube::Q(isset($action['seconds']) ? $action['seconds'] : $action['days'], 'strict', false) . '" size="2" '
@@ -1727,6 +1733,18 @@
    private function strip_value($str, $allow_html = false, $trim = true)
    {
        if (is_array($str)) {
            foreach ($str as $idx => $val) {
                $val = $this->strip_value($val, $allow_html, $trim);
                if ($val === '') {
                    unset($str[$idx]);
                }
            }
            return $str;
        }
        if (!$allow_html) {
            $str = strip_tags($str);
        }
@@ -1764,6 +1782,19 @@
        $this->rc->output->add_script($script, 'foot');
    }
    private function list_input($id, $name, $value, $enabled, $class, $size=null)
    {
        $value = (array) $value;
        $value = array_map(array('rcube', 'Q'), $value);
        $value = implode("\n", $value);
        return '<textarea data-type="list" name="_' . $name . '['.$id.']" id="' . $name.$id . '"'
            . ($enabled ? '' : ' disabled="disabled"')
            . ($size ? ' data-size="'.$size.'"' : '')
            . $class
            . ' style="display:none">' . $value . '</textarea>';
    }
    /**
     * Converts mailbox name from/to UTF7-IMAP from/to internal Sieve encoding
     * with delimiter replacement.
plugins/managesieve/skins/classic/images/plus_minus.png
plugins/managesieve/skins/classic/managesieve.css
@@ -226,6 +226,7 @@
select.operator_selector
{
  width: 200px;
  vertical-align: top;
}
td.rowtargets span,
@@ -308,6 +309,77 @@
  font-size: 11px;
}
/* smart multi-row input field */
.listarea
{
  border: 1px solid #666;
  margin: 0;
  padding: 1px;
  display: inline-block;
  max-height: 67px;
  overflow-y: auto;
}
.listelement
{
  display: block;
  white-space: nowrap;
  background-color: #fff;
  border-top: 1px solid #e2e2e2;
  height: 16px;
  padding: 0;
  margin: 0;
  overflow: hidden;
  line-height: 16px;
}
.listarea.error .listelement
{
  background-color: #FFFFC4;
}
.listelement:first-child
{
  border-top: none;
}
#filter-form .listelement input
{
  border: none;
  border-radius: 0;
  box-shadow: none;
  outline: none;
  vertical-align: top;
  height: 16px;
  padding-top: 0;
  padding-bottom: 0;
  line-height: 16px;
  background-color: transparent;
}
.listelement input:focus
{
  box-shadow: none;
}
.listelement .actions
{
  display: inline-block;
  width: 32px;
  height: 16px;
  background: url(images/plus_minus.png) -1px 0 no-repeat #eee;
}
.actions .add,
.actions .reset
{
  display: inline-block;
  width: 16px;
  height: 16px;
  cursor: pointer;
}
/* fixes for popup window */
body.iframe.mail
plugins/managesieve/skins/larry/images/plus_minus.png
plugins/managesieve/skins/larry/managesieve.css
@@ -175,6 +175,12 @@
  padding-top: 2px;
}
td.rowtargets > div
{
  vertical-align: top;
  margin-top: 2px;
}
td.rowtargets div.adv
{
  padding-top: 3px;
@@ -205,6 +211,7 @@
select.operator_selector
{
  width: 200px;
  vertical-align: top;
}
td.rowtargets span,
@@ -292,6 +299,12 @@
  padding: 1px;
}
html.mozilla #filter-form select
{
  padding-top: 3px;
  padding-bottom: 3px;
}
/* revert larry style button */
#filter-form input.button
{
@@ -306,6 +319,82 @@
  border-radius: 4px;
}
/* smart multi-row input field */
.listarea
{
  border: 1px solid #B2B2B2;
  border-radius: 4px;
  box-shadow: inset 0 0 2px 1px rgba(0,0,0, 0.1);
  -moz-box-shadow: inset 0 0 2px 1px rgba(0,0,0, 0.1);
  -webkit-box-shadow: inset 0 0 2px 1px rgba(0,0,0, 0.1);
  -o-box-shadow: inset 0 0 2px 1px rgba(0,0,0, 0.1);
  margin: 0;
  padding: 2px;
  display: inline-block;
  max-height: 59px;
  overflow-y: auto;
}
.listelement
{
  display: block;
  white-space: nowrap;
  background-color: #fff;
  border-top: 1px solid #e2e2e2;
  height: 14px;
  padding: 0;
  margin: 0;
  overflow: hidden;
  line-height: 14px;
}
.listarea.error .listelement
{
  background-color: #FFFFC4;
}
.listelement:first-child
{
  border-top: none;
}
#filter-form .listelement input
{
  border: none;
  border-radius: 0;
  box-shadow: none;
  outline: none;
  vertical-align: top;
  height: 14px;
  padding-top: 0;
  padding-bottom: 0;
  line-height: 14px;
  background-color: transparent;
}
.listelement input:focus
{
  box-shadow: none;
}
.listelement .actions
{
  display: inline-block;
  width: 32px;
  height: 16px;
  background: url(images/plus_minus.png) -1px -1px no-repeat #eee;
}
.actions .add,
.actions .reset
{
  display: inline-block;
  width: 16px;
  height: 16px;
  cursor: pointer;
}
/* fixes for popup window */
body.iframe.mail