s for printing (#1485787) -- Fix incorrect word wrapping in outgoing plaintext multibyte messages (#1485714) +- Fix messagelist focus issue when modifying status of selected messages (#2134) +- Support STARTTLS in IMAP connection (#1714) +- Fix DEL key problem in search boxes (#1923) +- Support several e-mail addresses per user from virtuser_file (#2036) +- Fix drag&drop with scrolling on IE (#2117) +- Fix adding signature separator in html mode (#1768) +- Fix opening attachment marks message as read (#2131) +- Fix 'temp_dir' does not support relative path under Windows (#1157) +- Fix "Initialize Database" button missing from installer (#2130) +- Fix compose window doesn't fit 1024x768 window (#1807) +- Fix service not available error when pressing back from compose dialog (#1942) +- Fix using mail() on Windows (#2111) +- Fix word wrapping in message-part'ss for printing (#2118) +- Fix incorrect word wrapping in outgoing plaintext multibyte messages (#2062) - Fix double footer in HTML message with embedded images -- Fix TNEF implementation bug (#1485773) -- Fix incorrect row id parsing for LDAP contacts list (#1485784) -- Fix 'mode' parameter in sqlite DSN (#1485772) +- Fix TNEF implementation bug (#2107) +- Fix incorrect row id parsing for LDAP contacts list (#2116) +- Fix 'mode' parameter in sqlite DSN (#2106) RELEASE 0.2.1 ------------------ -- Use US-ASCII as failover when Unicode searching fails (#1485762) -- Fix errors handling in IMAP command continuations (#1485762) -- Fix FETCH result parsing for servers returning flags at the end of result (#1485763) -- Fix datetime columns defaults in mysql's DDL (#1485641) -- Fix attaching more than nine inline images (#1485759) -- Support 'UNICODE-1-1-UTF-7' alias for UTF-7 encoding (#1485758) -- Fix mime-type detection using a hard-coded map (#1485311) -- Don't return empty string if charset conversion failed (#1485757) -- Disable concurrent autocomplete query results display (#1485743) -- Fix new lines stripped from message footer (#1485751) -- Fix IE problem with mouse click autocomplete (#1485739) -- Fix html body washing on reply/forward + fix attachments handling (#1485676) -- Fix multiple recipients input parsing (#1485733) -- Fix replying to message with html attachment (#1485676) -- Use default_charset for messages without specified charset (#1485661, #1484961) -- Support non-standard "GMT-XXXX" literal in date header (#1485729) +- Use US-ASCII as failover when Unicode searching fails (#2097) +- Fix errors handling in IMAP command continuations (#2097) +- Fix FETCH result parsing for servers returning flags at the end of result (#2098) +- Fix datetime columns defaults in mysql's DDL (#2012) +- Fix attaching more than nine inline images (#2094) +- Support 'UNICODE-1-1-UTF-7' alias for UTF-7 encoding (#2093) +- Fix mime-type detection using a hard-coded map (#1735) +- Don't return empty string if charset conversion failed (#2092) +- Disable concurrent autocomplete query results display (#2082) +- Fix new lines stripped from message footer (#2088) +- Fix IE problem with mouse click autocomplete (#2080) +- Fix html body washing on reply/forward + fix attachments handling (#2034) +- Fix multiple recipients input parsing (#2077) +- Fix replying to message with html attachment (#2034) +- Use default_charset for messages without specified charset (#2027, #1484961) +- Support non-standard "GMT-XXXX" literal in date header (#2074) - Added TNEF support to decode MS Outlook attachments (winmail.dat) -- Fix "value continuation" MIME headers by adding required semicolon (#1485727) -- Fix pressing select all/unread multiple times (#1485723) -- Fix selecting all unread does not honor new messages (#1485724) -- Fix some base64 encoded attachments handling (#1485725) -- Support NGINX as IMAP backend: better BAD response handling (#1485720) +- Fix "value continuation" MIME headers by adding required semicolon (#2073) +- Fix pressing select all/unread multiple times (#2069) +- Fix selecting all unread does not honor new messages (#2070) +- Fix some base64 encoded attachments handling (#2071) +- Support NGINX as IMAP backend: better BAD response handling (#2066) - Performance fix: don't fetch attachment parts headers twice to parse filename -- Fix checking for recent messages on various IMAP servers (#1485702) +- Fix checking for recent messages on various IMAP servers (#2055) - Performance fix: Don't fetch quota and recent messages in "message view" mode -- Fix displaying of alternative-inside-alternative messages (#1485713) -- Fix MDNSent flag checking, use arbitrary keywords (asterisk) flag (#1485706) +- Fix displaying of alternative-inside-alternative messages (#2061) +- Fix MDNSent flag checking, use arbitrary keywords (asterisk) flag (#2059) - Fix creation of folders with '&' sign in name -- Fix parsing of email addresses without angle brackets (#1485693) +- Fix parsing of email addresses without angle brackets (#2048) - Save spellcheck corrections when switching from plain to html editor (and spellchecking is on) -- Fix large search results on server without SORT capability (#1485668) -- Get rid of preg_replace() with eval modifier and create_function usage (#1485686) +- Fix large search results on server without SORT capability (#2031) +- Get rid of preg_replace() with eval modifier and create_function usage (#2042) - Bring backand tags in HTML messages - Fix XSS vulnerability through background attributes [CVE-2009-0413] -- Fix problems with backslash as IMAP hierarchy delimiter (#1484467) -- Secure vcard export by getting rid of preg's 'e' modifier use (#1485689) -- Fix authentication when submitting form with existing session (#1485679) -- Allow absolute URLs to images in HTML messages/sigs (#1485666) +- Fix problems with backslash as IMAP hierarchy delimiter (#1116) +- Secure vcard export by getting rid of preg's 'e' modifier use (#2045) +- Fix authentication when submitting form with existing session (#2037) +- Allow absolute URLs to images in HTML messages/sigs (#2029) - Fix message body which contains both inline attachments and emotions -- Fix SQL query execution errors handling in rcube_mdb2 class (#1485509) -- Fix address names with '@' sign handling (#1485654) +- Fix SQL query execution errors handling in rcube_mdb2 class (#1907) +- Fix address names with '@' sign handling (#2022) - Improve messages display performance - Fix messages searching with 'to:' modifier RELEASE 0.2-STABLE ------------------ -- Fix mark popup in IE 7 (#1485369) -- Fix line-break issue when copy & paste in Firefox (#1485425) -- Fix autocomplete "unknown server error" (#1485637) -- Fix STARTTLS before AUTH in SMTP connection (#1484883) -- Support multiple quota values in QUOTAROOT resonse (#1485626) -- Only abbreviate file name for IE < 7 browsers (#1485063) -- Performance: allow setting imap rootdir and delimiter before connect (#1485172) -- Fix sorting of folders with more than 2 levels (#1485569) -- Fix search results page jumps in LDAP addressbook (#1485253) -- Fix empty line before the signature in IE (#1485351) -- Fix horizontal scrollbar in preview pane on IE (#1484633) -- Add Robots meta tag in login page and installer (#1484846) -- Added 'show_images' option, removed 'addrbook_show_images' (#1485597) -- Option to check for new mails in all folders (#1484374) -- Don't set client busy when checking for new messages (#1485276) -- Allow UTF-8 folder names in config (#1485579) -- Add junk_mbox option configuration in installer (#1485579) -- Do serverside addressbook queries for autocompletion (#1485531) +- Fix mark popup in IE 7 (#1785) +- Fix line-break issue when copy & paste in Firefox (#1832) +- Fix autocomplete "unknown server error" (#2008) +- Fix STARTTLS before AUTH in SMTP connection (#1415) +- Support multiple quota values in QUOTAROOT resonse (#1999) +- Only abbreviate file name for IE < 7 browsers (#1548) +- Performance: allow setting imap rootdir and delimiter before connect (#1628) +- Fix sorting of folders with more than 2 levels (#1953) +- Fix search results page jumps in LDAP addressbook (#1689) +- Fix empty line before the signature in IE (#1769) +- Fix horizontal scrollbar in preview pane on IE (#1228) +- Add Robots meta tag in login page and installer (#1385) +- Added 'show_images' option, removed 'addrbook_show_images' (#1977) +- Option to check for new mails in all folders (#1053) +- Don't set client busy when checking for new messages (#1706) +- Allow UTF-8 folder names in config (#1960) +- Add junk_mbox option configuration in installer (#1960) +- Do serverside addressbook queries for autocompletion (#1925) - Allow setting attachment col position in 'list_cols' option -- Allow override 'list_cols' via skin (#1485577) -- Fix 'cache' table cleanup on session destroy (#1485516) +- Allow override 'list_cols' via skin (#1958) +- Fix 'cache' table cleanup on session destroy (#1913) - Increase speed of session destroy and garbage clean up -- Fix session timeout when DB server got clock skew (#1485490) -- Fix handling of some malformed messages (#1484438) +- Fix session timeout when DB server got clock skew (#1890) +- Fix handling of some malformed messages (#1099) - Speed up raw message body handling -- Better HTML entities conversion in html2text (#1485519) +- Better HTML entities conversion in html2text (#1916) - Fix big memory consumption and speed up searching on servers without SORT capability -- Fix setting locale to tr_TR, ku and az_AZ (#1485470) +- Fix setting locale to tr_TR, ku and az_AZ (#1872) - Use SORT for searching on servers with SORT capability - Added message status filter -- Fix empty file sending (#1485389) +- Fix empty file sending (#1801) - Improved searching with many criterias (calling one SEARCH command) -- Fix HTML editor initialization on IE (#1485304) -- Add warning when switching editor mode from html to plain (#1485488) -- Make identities list scrollable (#1485538) -- Fix problem with numeric folder names (#1485527) -- Added BYE response simple support to prevent from endless loops in imap.inc (#1483956) -- Fix unread message unintentionally marked as read if read_when_deleted=true (#1485409) -- Remove port number from SERVER_NAME in smtp_helo_host (#1485518) -- Don't send disposition notification receipts for messages marked as 'read' (#1485523) -- Added 'keep_alive' and 'min_keep_alive' options (#1485360) +- Fix HTML editor initialization on IE (#1731) +- Add warning when switching editor mode from html to plain (#1888) +- Make identities list scrollable (#1930) +- Fix problem with numeric folder names (#1922) +- Added BYE response simple support to prevent from endless loops in imap.inc (#777) +- Fix unread message unintentionally marked as read if read_when_deleted=true (#1819) +- Remove port number from SERVER_NAME in smtp_helo_host (#1915) +- Don't send disposition notification receipts for messages marked as 'read' (#1918) +- Added 'keep_alive' and 'min_keep_alive' options (#1777) - Added option 'identities_level', removed 'multiple_identities' -- Allow deleting identities when multiple_identities=false (#1485435) -- Added option focus_on_new_message (#1485374) -- Fix html2text class autoloading on Windows (#1485505) -- Fix html signature formatting when identity save error occurred (#1485426) -- Add feedback and set busy when moving folder (#1485497) -- Fix 'Empty' link visibility for some languages e.g. Slovak (#1485489) -- Fix messages count bar overlapping (#1485270) -- Fix adding signature in drafts compose mode (#1485484) -- Fix iil_C_Sort() to support very long and/or divided responses (#1485283) -- Fix matching case sensitivity when setting identity on reply (#1485480) +- Allow deleting identities when multiple_identities=false (#1840) +- Added option focus_on_new_message (#1789) +- Fix html2text class autoloading on Windows (#1904) +- Fix html signature formatting when identity save error occurred (#1833) +- Add feedback and set busy when moving folder (#1897) +- Fix 'Empty' link visibility for some languages e.g. Slovak (#1889) +- Fix messages count bar overlapping (#1703) +- Fix adding signature in drafts compose mode (#1884) +- Fix iil_C_Sort() to support very long and/or divided responses (#1713) +- Fix matching case sensitivity when setting identity on reply (#1881) - Prefer default identity on reply -- Fix imap searching on ISMail server (#1485466) -- Add css class for flagged messages (#1485464) -- Write username instead of id in sendmail log (#1485477) -- Fix htmlspecialchars() use for PHP version < 5.2.3 (#1485475) -- Fix js keywords escaping in json_serialize() for IE/Opera (#1485472) -- Added bin/killcache.php script (#1485434) +- Fix imap searching on ISMail server (#1870) +- Add css class for flagged messages (#1868) +- Write username instead of id in sendmail log (#1879) +- Fix htmlspecialchars() use for PHP version < 5.2.3 (#1877) +- Fix js keywords escaping in json_serialize() for IE/Opera (#1874) +- Added bin/killcache.php script (#1839) - Add support for SJIS, GB2312, BIG5 in rc_detect_encoding() -- Fix vCard file encoding detection for non-UTF-8 strings (#1485410) -- Add 'skip_deleted' option in User Preferences (#1485445) -- Minimize "inline" javascript scripts use (#1485433) -- Fix css class setting for folders with names matching defined classes names (#1485355) +- Fix vCard file encoding detection for non-UTF-8 strings (#1820) +- Add 'skip_deleted' option in User Preferences (#1850) +- Minimize "inline" javascript scripts use (#1838) +- Fix css class setting for folders with names matching defined classes names (#1772) - Fix race conditions when changing mailbox -- Fix spellchecking when switching to html editor (#1485362) -- Fix compose window width/height (#1485396) -- Allow calling msgimport.sh/msgexport.sh from any directory (#1485431) -- Localized filesize units (#1485340) -- Better handling of "no identity" and "no email in identity" situations (#1485117) -- Added 'mime_param_folding' option with possibility to choose long/non-ascii attachment names encoding eg. to be readable in MS Outlook/OE (#1485320) +- Fix spellchecking when switching to html editor (#1779) +- Fix compose window width/height (#1807) +- Allow calling msgimport.sh/msgexport.sh from any directory (#1837) +- Localized filesize units (#1760) +- Better handling of "no identity" and "no email in identity" situations (#1592) +- Added 'mime_param_folding' option with possibility to choose long/non-ascii attachment names encoding eg. to be readable in MS Outlook/OE (#1743) - Added "advanced options" feature in User Preferences -- Fix unread counter when displaying cached massage in preview panel (#1485290) -- Fix htmleditor spellchecking on MS Windows (#1485397) -- Fix problem with non-ascii attachment names in Mail_mime (#1485267, #1485096) -- Fix language autodetection (#1485401) -- Fix button label in folders management (#1485405) -- Fix collapsed folder not indicating unread msgs count of all subfolders (#1485403) +- Fix unread counter when displaying cached massage in preview panel (#1720) +- Fix htmleditor spellchecking on MS Windows (#1808) +- Fix problem with non-ascii attachment names in Mail_mime (#1700, #1576) +- Fix language autodetection (#1812) +- Fix button label in folders management (#1816) +- Fix collapsed folder not indicating unread msgs count of all subfolders (#1814) - Fix handling of apostrophes in filenames decoded according to rfc2231 RELEASE 0.2-BETA ---------------- -- Made config files location configurable (#1485215) -- Reduced memory footprint when forwarding attachments (#1485345) -- Allow and use spellcheck attribute for input/textarea fields (#1485060) -- Added icons for forwarded/forwarded+replied messages (#1485257) -- Added Reply-To to forwarded emails (#1485315) -- Display progress message for folders create/delete/rename (#1485357) -- Smart Tags and NOBR tag support in html messages (#1485363, #1485327) -- Redesign of the identities settings (#1484042) -- Add config option to disable creation/deletion of identities (#1484498) -- Added 'sendmail_delay' option to restrict messages sending interval (#1484491) +- Made config files location configurable (#1664) +- Reduced memory footprint when forwarding attachments (#1764) +- Allow and use spellcheck attribute for input/textarea fields (#1545) +- Added icons for forwarded/forwarded+replied messages (#1691) +- Added Reply-To to forwarded emails (#1739) +- Display progress message for folders create/delete/rename (#1774) +- Smart Tags and NOBR tag support in html messages (#1780, #1748) +- Redesign of the identities settings (#836) +- Add config option to disable creation/deletion of identities (#1139) +- Added 'sendmail_delay' option to restrict messages sending interval (#1135) - Added vertical splitter for folders list resizing - Added possibility to view all headers in message view -- Fixed splitter drag/resize on Opera (#1485170) -- Fixed quota img height/width setting from template (#1484857) -- Refactor drag & drop functionality. Don't rely on browser events anymore (#1484453) -- Insert "virtual" folders in subscription list (#1484779) +- Fixed splitter drag/resize on Opera (#1626) +- Fixed quota img height/width setting from template (#1396) +- Refactor drag & drop functionality. Don't rely on browser events anymore (#1108) +- Insert "virtual" folders in subscription list (#1333) - Added link to open message in new window - Enable export of address book contacts as vCard -- Add feature to import contacts from vcard files (#1326103) -- Respect Content-Location headers in multipart/related messages according to RFC2110 (#1484946) -- Allowed max. attachment size now indicated in compose screen (#1485030) -- Also capture backspace key in list mode (#1484566) -- Allow application/pgp parts to be displayed (#1484753) -- Correctly handle options in mailto-links (#1485228) -- Immediately save sort_col/sort_order in user prefs (#1485265) +- Add feature to import contacts from vcard files (#395) +- Respect Content-Location headers in multipart/related messages according to RFC2110 (#1464) +- Allowed max. attachment size now indicated in compose screen (#1523) +- Also capture backspace key in list mode (#1186) +- Allow application/pgp parts to be displayed (#1309) +- Correctly handle options in mailto-links (#1671) +- Immediately save sort_col/sort_order in user prefs (#1698) - Truncate very long (above 50 characters) attachment filenames when displaying -- Allow to auto-detect client language if none set (#1484434) +- Allow to auto-detect client language if none set (#1095) - Auto-detect the client timezone (user configurable) - Add RFC2231 header value continuations support for attachment filenames + hack for servers that not support that feature -- Fix Reply-To header displaying (#1485314) +- Fix Reply-To header displaying (#1738) - Mark form buttons that provide the most obvious operation (mainaction) -- Added option 'quota_zero_as_unlimited' (#1484604) -- Added PRE handling in html2text class (#1484740) +- Added option 'quota_zero_as_unlimited' (#1206) +- Added PRE handling in html2text class (#1301) - Added folder hierarchy collapsing -- Added options to use syslog instead of log file (#1484850) +- Added options to use syslog instead of log file (#1389) - Added Logging & Debugging section in Installer -- Fix In-Reply-To and References headers when composing saved draft message (#1485288) -- Fix html message charset conversion for charsets with underline (#1485287) -- Fix buttons status after contacts deletion (#1485233) -- Fix escaping of To: and From: fields when building message body for reply or forward in the HTML editor (#1484904) -- Use current mailbox name in template (#1485256) -- Better fix for skipping untagged responses (#1485261) -- Added pspell support patch by Kris Steinhoff (#1483960) -- Enable spellchecker for HTML editor (#1485114) -- Respect spellcheck_uri in tinyMCE spellchecker (#1484196) -- Case insensitive contacts searching using PostgreSQL (#1485259) -- Make default imap folders configurable for each user (#1485075) +- Fix In-Reply-To and References headers when composing saved draft message (#1718) +- Fix html message charset conversion for charsets with underline (#1717) +- Fix buttons status after contacts deletion (#1675) +- Fix escaping of To: and From: fields when building message body for reply or forward in the HTML editor (#1432) +- Use current mailbox name in template (#1690) +- Better fix for skipping untagged responses (#1694) +- Added pspell support patch by Kris Steinhoff (#781) +- Enable spellchecker for HTML editor (#1589) +- Respect spellcheck_uri in tinyMCE spellchecker (#941) +- Case insensitive contacts searching using PostgreSQL (#1692) +- Make default imap folders configurable for each user (#1558) - Save outgoing mail to selectable folder (#1324581) -- Fix hiding of mark menu when clicking th button again (#1484944) -- Use long date format in print mode (#1485191) +- Fix hiding of mark menu when clicking th button again (#1463) +- Use long date format in print mode (#1643) - Updated TinyMCE to version 3.1.0.1 -- Re-enable autocomplete attribute for login form (#1485211) -- Check PERMANENTFLAGS before saving $MDNSent flag (#1484963, #1485163) -- Added flag column on messages list (#1484623) +- Re-enable autocomplete attribute for login form (#1661) +- Check PERMANENTFLAGS before saving $MDNSent flag (#1478, #1485163) +- Added flag column on messages list (#1220) - Patched Mail/MimePart.php (http://pear.php.net/bugs/bug.php?id=14232) -- Allow trash/junk subfolders to be purged (#1485085) +- Allow trash/junk subfolders to be purged (#1568) - Store compose parameters in session and redirect to a unique URL -- Fixed CRAM-MD5 authentication (#1484819) -- Fixed forwarding messages with one HTML attachment (#1484442) -- Fixed encoding of message/rfc822 attachments and image/pjpeg handling (#1484914) +- Fixed CRAM-MD5 authentication (#1364) +- Fixed forwarding messages with one HTML attachment (#1103) +- Fixed encoding of message/rfc822 attachments and image/pjpeg handling (#1439) - Added option to select skin in user preferences - Added option to configure displaying of attached images below the message body -- Added option to display images in messages from known senders (#1484601) +- Added option to display images in messages from known senders (#1204) - User preferences grouped in more fieldsets -- Fix corrupted MIME headers of messages in Sent folder (#1485111) +- Fix corrupted MIME headers of messages in Sent folder (#1587) - Fixed bug in MDB2 package: http://pear.php.net/bugs/bug.php?id=14124 -- Use keypress instead of keydown to select list's row (#1484816) -- Don't call expunge and don't remove message row after message move if flag_for_deletion is set to true (#1485002) +- Use keypress instead of keydown to select list's row (#1362) +- Don't call expunge and don't remove message row after message move if flag_for_deletion is set to true (#1505) RELEASE 0.2-ALPHA ----------------- -- Added option to disable autocompletion from selected LDAP address books (#1484922) -- TLS support in LDAP connections: 'use_tls' property (#1485104) -- Fixed removing messages from search set after deleting them (#1485106) +- Added option to disable autocompletion from selected LDAP address books (#1445) +- TLS support in LDAP connections: 'use_tls' property (#1581) +- Fixed removing messages from search set after deleting them (#1583) - imap.inc: Fixed iil_C_FetchStructureString() to handle many - literal strings in response (#1484969) -- Support for subfolders in default/protected folders (#1484665) -- Disallowed delimiter in folder name (#1484803) + literal strings in response (#1483) +- Support for subfolders in default/protected folders (#1250) +- Disallowed delimiter in folder name (#1351) - Support " and \ in folder names -- Escape \ in login (#1484614) -- Better HTML sanitization with the DOM-based washtml script (#1484701) +- Escape \ in login (#1214) +- Better HTML sanitization with the DOM-based washtml script (#1276) - Fixed sorting of folders with non-ascii characters -- Fixed Mysql DDL for default identities creation (#1485070) +- Fixed Mysql DDL for default identities creation (#1554) - In Preferences added possibility to configure 'read_when_deleted', 'mdn_requests', 'flag_for_deletion' options -- Made IMAP auth type configurable (#1483825) -- Fixed empty values with FROM_UNIXTIME() in rcube_mdb2 (#1485055) -- Fixed attachment list on IE 6/7 (#1484807) +- Made IMAP auth type configurable (#683) +- Fixed empty values with FROM_UNIXTIME() in rcube_mdb2 (#1540) +- Fixed attachment list on IE 6/7 (#1355) - Fixed JavaScript in compose.html that shows cc/bcc fields if populated -- Make password input fields of type password in installer (#1484886) -- Don't attempt to delete cache entries if enable_caching is FALSE (#1485051) -- Optimized messages sorting on servers without sort capability (#1485049) +- Make password input fields of type password in installer (#1417) +- Don't attempt to delete cache entries if enable_caching is FALSE (#1537) +- Optimized messages sorting on servers without sort capability (#1535) - Corrected message headers decoding when charset isn't specified and improved - support for native languages (#1485050, #1485048) + support for native languages (#1536, #1534) - Expanded LDAP configuration options to support LDAP server writes. -- Installer: encode special characters in DB username/password (#1485042) -- Fixed management of folders with national characters in names (#1485036, #1485001) -- Fixed identities saving when using MDB2 pgsql driver (#1485032) -- Fixed BCC header reset (#1484997) +- Installer: encode special characters in DB username/password (#1529) +- Fixed management of folders with national characters in names (#1526, #1504) +- Fixed identities saving when using MDB2 pgsql driver (#1525) +- Fixed BCC header reset (#1501) - Improved messages list performance - patch from Justin Heesemann -- Append skin_path to images location only when it starts with '/' sign (#1484859) -- Fix IMAP response in message body when message has no body (#1484964) -- Fixed non-RFC dates formatting (#1484901) -- Fixed typo in set_charset() (#1484991) -- Decode entities when inserting HTML signature to plain text message (#1484990) +- Append skin_path to images location only when it starts with '/' sign (#1398) +- Fix IMAP response in message body when message has no body (#1479) +- Fixed non-RFC dates formatting (#1429) +- Fixed typo in set_charset() (#1498) +- Decode entities when inserting HTML signature to plain text message (#1497) - HTML editing is now working with PHP5 updates and TinyMCE v3.0.6 -- Fixed signature loading on Windows (#1484545) -- Added language support to HTML editing (#1484862) -- Fixed remove signature when replying (#1333167) -- Fixed problem with line with a space at the end (#1484916) -- Fixed tag filtering (#1484391) -- Fixed tag filtering (#1484403) +- Fixed signature loading on Windows (#1169) +- Added language support to HTML editing (#1401) +- Fixed remove signature when replying (#446) +- Fixed problem with line with a space at the end (#1440) +- Fixed tag filtering (#1066) +- Fixed tag filtering (#1075) - Added sections (fieldset+label) in Settings interface -- Mark as read in one action with message preview (#1484972) -- Deleted redundant quota reads (#1484972) -- Added options for empty trash and expunge inbox on logout (#1483863) +- Mark as read in one action with message preview (#1486) +- Deleted redundant quota reads (#1486) +- Added options for empty trash and expunge inbox on logout (#707) - Removed lines wrapping when displaying message - Fixed month localization - Changed codebase to PHP5 with autoloader RELEASE 0.1.1 ------------- -- Clear selection when selecting single item (#1484942) -- Remove hard-coded image size in skin templates (#1484893) +- Clear selection when selecting single item (#1461) +- Remove hard-coded image size in skin templates (#1423) - Database schema improvements (dropped unnecessary indexes) -- Fixed creating a new folder with a comma in its name (#1484681) -- Fixed sorting of messages when default mailbox is empty (#1484317) -- Improve message previewpane - less loading (#1484316) -- Fixed login form autoompletion (#1484839) -- Fixed virtuser_query option for mdb2 backend (#1484874) -- Fixed attachment resoting from Drafts when message body was empty (#1484506) -- Fixed usage of ob_gzhandler (#1484851) -- Fixed message part window in IE6 (#1484610) -- Fixed decoding of mime-encoded strings (#1484191) -- Fixed some iconv/mb_string problems (#1484598) -- Correctly quote mailbox name when using in URL (#1484313) -- Fixed "headers already sent" errors (#1484860) +- Fixed creating a new folder with a comma in its name (#1263) +- Fixed sorting of messages when default mailbox is empty (#1020) +- Improve message previewpane - less loading (#1019) +- Fixed login form autoompletion (#1378) +- Fixed virtuser_query option for mdb2 backend (#1409) +- Fixed attachment resoting from Drafts when message body was empty (#1144) +- Fixed usage of ob_gzhandler (#1390) +- Fixed message part window in IE6 (#1211) +- Fixed decoding of mime-encoded strings (#938) +- Fixed some iconv/mb_string problems (#1202) +- Correctly quote mailbox name when using in URL (#1016) +- Fixed "headers already sent" errors (#1399) RELEASE 0.1-STABLE ------------------ - Added interactive installer script -- Fix folder adding/renaming inspired by #1484800 -- Localize folder name in page title (#1484785) -- Fix code using wrong variable name (#1484018) +- Fix folder adding/renaming inspired by #1349 +- Localize folder name in page title (#1338) +- Fix code using wrong variable name (#818) - Allow to send mail with BCC recipients only -- condense TinyMCE toolbar down to one line, removing table buttons (#1484747) -- Add function to mark the selected messages as read/unread (#1457360) -- Also do charset decoding as suggested in RFC 2231 (fix #1484321) +- condense TinyMCE toolbar down to one line, removing table buttons (#1306) +- Add function to mark the selected messages as read/unread (#641) +- Also do charset decoding as suggested in RFC 2231 (fix #1022) - Show message count in folder list and hint when creating a subfolder -- Distinguish ssl and tls for imap connections (#1484667) -- Added some charset aliases to fix typical mis-labelling (#1484565) -- Remember decision to display images for a certain message during session (#1484754) -- Truncate attachment filenames to 55 characters due to an IE bug (#1484757) +- Distinguish ssl and tls for imap connections (#1252) +- Added some charset aliases to fix typical mis-labelling (#1185) +- Remember decision to display images for a certain message during session (#1310) +- Truncate attachment filenames to 55 characters due to an IE bug (#1313) - Make sending of read receipts configurable -- Respect config when localize folder names (#1484707) +- Respect config when localize folder names (#1280) - Also respect receipt and priority settings when re-opening a draft message -- Remember search results (closes #1483883), patch by the_glu +- Remember search results (closes #722), patch by the_glu - Add Received header on outgoing mail - Upgrade to TinyMCE 2.1.3 -- Allow inserting image attachments into HTML messages while composing (#1484557) +- Allow inserting image attachments into HTML messages while composing (#1179) - Implement Message-Disposition-Notification (Receipts) -- Fix overriding of session vars when register_globals is on (#1484670) -- Fix bug with case-sensitive folder names (#1484245) +- Fix overriding of session vars when register_globals is on (#1255) +- Fix bug with case-sensitive folder names (#973) - Don't create default folders by default - Fixed some potential security risks (audited by Andris) -- Only show new messages if they match the current search (#1484176) -- Switch to/from when searcing in Sent folder (#1484555) -- Correctly read the References header (#1484646) -- Unset old cookie before sending a new value (#1484639) -- Correctly decode attachments when downloading them (#1484645 and #1484642) -- Suppress IE errors when clearing attachments form (#1484356) +- Only show new messages if they match the current search (#925) +- Switch to/from when searcing in Sent folder (#1177) +- Correctly read the References header (#1236) +- Unset old cookie before sending a new value (#1232) +- Correctly decode attachments when downloading them (#1235 and #1484642) +- Suppress IE errors when clearing attachments form (#1043) - Log error when login fails due to auto_create_user turned off -- Filter linked/imported CSS files (closes #1484056) -- Improve message compose screen (closes #1484383) -- Select next row after removing one from list (#1484387) +- Filter linked/imported CSS files (closes #844) +- Improve message compose screen (closes #1060) +- Select next row after removing one from list (#1063) RELEASE 0.1-RC2 --------------- -- Enable drag-&-dropping of folders to a new parent and allow to create subfolders (#1457344) -- Suppress IE errors when clearing attachments form (#1484356) -- Set preferences field in user table to NULL (#1484386) +- Enable drag-&-dropping of folders to a new parent and allow to create subfolders (#637) +- Suppress IE errors when clearing attachments form (#1043) +- Set preferences field in user table to NULL (#1062) - Log error when login fails due to auto_create_user turned off -- Filter linked/imported CSS files (closes #1484056) -- Improve message compose screen (closes #1484383) -- Select next row after removing one from list (#1484387) -- Make smtp HELO/EHLO hostname configurable (#1484067) -- IPv6 Compatability (#1484322), Patch #1484373 -- Unlock interface when message sending fails (#1484570) +- Filter linked/imported CSS files (closes #844) +- Improve message compose screen (closes #1060) +- Select next row after removing one from list (#1063) +- Make smtp HELO/EHLO hostname configurable (#851) +- IPv6 Compatability (#1023), Patch #1484373 +- Unlock interface when message sending fails (#1188) - Eval PHP code in template includes (if configured) -- Show message when folder is empty. Mo more static text in table (#1484395) +- Show message when folder is empty. Mo more static text in table (#1068) - Only display unread count in page title when new messages arrived -- Fixed wrong delete button tooltip (#1483965) -- Fixed charset encoding bug (#1484429) -- Applied patch for LDAP version (#1484552) +- Fixed wrong delete button tooltip (#785) +- Fixed charset encoding bug (#1091) +- Applied patch for LDAP version (#1175) - Improved XHTML validation -- Fix message list selection (#1484550) -- Better fix lowercased usernames (#1484473) -- Update pngbehavior Script as suggested in #1484490 +- Fix message list selection (#1174) +- Better fix lowercased usernames (#1120) +- Update pngbehavior Script as suggested in #1134 - Fixed moving/deleting messages when more than 1 is selected - Applied patch for LDAP contacts listing by Glen Ogilvie -- Applied patch for more address fields in LDAP contacts (#1484402) -- Add alternative for getallheaders() (fix #1484508) +- Applied patch for more address fields in LDAP contacts (#1074) +- Add alternative for getallheaders() (fix #1146) - Identify mailboxes case-sensitive -- Sort mailbox list case-insensitive (closes #1484338) -- Fix display of multipart messages from Apple Mail (closes #1484027) +- Sort mailbox list case-insensitive (closes #1032) +- Fix display of multipart messages from Apple Mail (closes #823) - Protect AJAX request from being fetched by a foreign site (XSS) - Make autocomplete for loginform configurable by the skin template -- Fix compose function from address book (closes #1484426) -- Added //IGNORE to iconv call (patch #1484420, closes #1484023) -- Check if mbstring supports charset (#1484290 and #1484292) -- Prefer iconv over mbstring (as suggested in #1484292) -- Check filesize of template includes (#1484409) +- Fix compose function from address book (closes #1089) +- Added //IGNORE to iconv call (patch #1086, closes #821) +- Check if mbstring supports charset (#1003 and #1004) +- Prefer iconv over mbstring (as suggested in #1004) +- Check filesize of template includes (#1079) - Fixed bug with buttons not dimming/enabling properly after switching folders -- Fixed compose window becoming unresponsive after saving a draft (#1484487) -- Re-enabled "Back" button in compose window now that bug #1484487 is fixed -- Fixed unresponsive interface issue when downloading attachments (#1484496) +- Fixed compose window becoming unresponsive after saving a draft (#1132) +- Re-enabled "Back" button in compose window now that bug #1132 is fixed +- Fixed unresponsive interface issue when downloading attachments (#1138) - Lowered status message time from 5 to 3 seconds to improve responsiveness - Raised .htaccess upload_max_filesize from 2M to 5M to differ from default php.ini -- Increased "mailboxcontrols" mail.css width from 160 to 170px to fix non-english languages (#1484499) -- Fix status message bug #1484464 with regard to #1484353 +- Increased "mailboxcontrols" mail.css width from 160 to 170px to fix non-english languages (#1140) +- Fix status message bug #1114 with regard to #1041 - Fix address adding bug reported by David Koblas - Applied socket error patch by Thomas Mangin - Pass-by-reference workarround for PHP5 in sendmail.inc -- Fixed buggy imap_root settings (closes #1484379) -- Prevent default events on subject links (#1484399) +- Fixed buggy imap_root settings (closes #1056) +- Prevent default events on subject links (#1071) - Use HTTP-POST requests for actions that change state RELEASE 0.1-RC1 --------------- -- Use global filters and bind username/ for Ldap searches (#1484159) +- Use global filters and bind username/ for Ldap searches (#909) - Hide quota display if imap server does not support it - Hide address groups if no LDAP servers configured -- Add link to message subjects (closes #1484257) -- Better SQL query for contact listing/search (closes #1484369) -- Fixed marking as read in preview pane (closes #1484364) +- Add link to message subjects (closes #982) +- Better SQL query for contact listing/search (closes #1051) +- Fixed marking as read in preview pane (closes #1048) - CSS hack to display attachments correctly in IE6 -- Wrap message body text (closes #1484148) -- LDAP access is back in address book (closes #1484087) +- Wrap message body text (closes #901) +- LDAP access is back in address book (closes #864) - Added search function for contacts - New Template parsing and output encoding -- Fixed bugs #1484119 and #1483978 -- Fixed message moving procedure (closes #1484308) -- Fixed display of multiple attachments (closes #1466563) -- Fixed check for new messages (closes #1484310) +- Fixed bugs #884 and #793 +- Fixed message moving procedure (closes #1013) +- Fixed display of multiple attachments (closes #647) +- Fixed check for new messages (closes #1015) - List attachments without filename - New session authentication: Change sessid cookie when login, authentication with sessauth cookie is now configurable. - Should close bugs #1483951 and #1484299 -- Correctly translate mailbox names (closes #1484276) -- Quote e-mail address links (closes #1484300) + Should close bugs #774 and #1484299 +- Correctly translate mailbox names (closes #993) +- Quote e-mail address links (closes #1007) - Updated PEAR::Mail_mime package - Accept single quotes for HTML attributes when modifying message body (thanks Jason) - Sanitize input for new users/identities (thanks Colin Alston) - Don't download HTML message parts - Convert HTML parts to plaintext if 'prefer_html' is off -- Correctly parse message/rfc822 parts (closes #1484045) -- Also use user_id for unique key in messages table (closes #1484074) -- Hide contacts drop down on blur (closes #1484203) +- Correctly parse message/rfc822 parts (closes #838) +- Also use user_id for unique key in messages table (closes #857) +- Hide contacts drop down on blur (closes #946) - Make entries in contacts drop down clickable - Turn off browser autocompletion on login page - Quote in text/html message parts - Hide border around radio buttons -- Applied patch for attachment download by crichardson (closes #1484198) -- Fixed bug in Postgres DB handling (closes #1484068) -- Fixed bug of invalid calls to fetchRow() in rcube_db.inc (closes #1484280) -- Fixed array_merge bug (closes #1484281) -- Fixed flag for deletion in list view (closes #1484264) -- Finally support semicolons as recipient separator (closes ##1484251) +- Applied patch for attachment download by crichardson (closes #943) +- Fixed bug in Postgres DB handling (closes #852) +- Fixed bug of invalid calls to fetchRow() in rcube_db.inc (closes #996) +- Fixed array_merge bug (closes #997) +- Fixed flag for deletion in list view (closes #987) +- Finally support semicolons as recipient separator (closes ##976) - Fixed message headers (subject) encoding -- check if safe mode is on or not (closes #1484269) -- Show "no subject" in message list if subject is missing (closes #1484243) -- Solved page caching of message preview (closes #1484153) -- Only use gzip compression if configured (closes #1484236) -- Fixed priority selector issue (#1484150) -- Fixed some CSS issues in default skin (closes #1484210 and #1484161) -- Prevent from double quoting of numeric HTML character references (closes #1484253) -- Fixed display of HTML message attachments (closes #1484178) -- Applied patch for preview caching (closes #1484186) +- check if safe mode is on or not (closes #990) +- Show "no subject" in message list if subject is missing (closes #971) +- Solved page caching of message preview (closes #905) +- Only use gzip compression if configured (closes #967) +- Fixed priority selector issue (#903) +- Fixed some CSS issues in default skin (closes #951 and #911) +- Prevent from double quoting of numeric HTML character references (closes #978) +- Fixed display of HTML message attachments (closes #927) +- Applied patch for preview caching (closes #933) - Added error handling for attachment uploads -- Use multibyte safe string functions where necessary (closes #1483988) +- Use multibyte safe string functions where necessary (closes #798) - Applied security patch to validate the submitted host value (by Kees Cook) - Applied security patch to validate input values when deleting contacts (by Kees Cook) - Applied security patch that sanitizes emoticon paths when attaching them (by Kees Cook) - Applied a patch to more aggressively sanitize a HTML message - Visualize blocked images in HTML messages -- Fixed wrong message listing when showing search results (closes #1484131) +- Fixed wrong message listing when showing search results (closes #890) - Show remote images when opening HTML message part as attachment -- Improve memory usage when sending mail (closes #1484098) +- Improve memory usage when sending mail (closes #871) - Mark messages as read once the preview is loaded (closes #1484132) -- Include smtp final response in log (closes #1484081) -- Corrected date string in sent message header (closes #1484125) -- Correclty choose "To" column in sent and draft mailboxes (closes #1483943) -- Changed srong tooltips for message browse buttons (closes #1483930) -- Fixed signature delimeter character to be standard (Bug #1484035) -- Fixed XSS vulnerability (Bug #1484109) -- Remove newlines from mail headers (Bug #1484031) -- Selection issues when moving/deleting (Bug #1484044) +- Include smtp final response in log (closes #862) +- Corrected date string in sent message header (closes #887) +- Correclty choose "To" column in sent and draft mailboxes (closes #769) +- Changed srong tooltips for message browse buttons (closes #757) +- Fixed signature delimeter character to be standard (Bug #830) +- Fixed XSS vulnerability (Bug #877) +- Remove newlines from mail headers (Bug #827) +- Selection issues when moving/deleting (Bug #837) - Applied patch of Clement Moulin for imap host auto-selection -- ISO-encode IMAP password for plaintext login (Bugs #1483977 & #1483886) -- Fixed folder name encoding in subscription list (Bug #1484113) -- Fixed JS errors in identity list (Bug #1484120) -- Translate foldernames in folder form (closes #1484113) +- ISO-encode IMAP password for plaintext login (Bugs #792 & #723) +- Fixed folder name encoding in subscription list (Bug #879) +- Fixed JS errors in identity list (Bug #885) +- Translate foldernames in folder form (closes #879) - Added first and last buttons to message list, address book and message detail - Pressing Shift-Del bypasses Trash folder - Enable purge command for Junk folder - Fetch all aliases if virtuser_query is used instead -- Re-enabled multi select of contacts (Bug #1484017) -- Enable contact editing right after creation (Bug #1459641) +- Re-enabled multi select of contacts (Bug #817) +- Enable contact editing right after creation (Bug #644) - Correct UTF-7 to UTF-8 conversion if mbstring is not available -- Fixed IMAP fetch of message body (Bug #1484019) -- Fixed safe_mode problems (Bug #1418381) +- Fixed IMAP fetch of message body (Bug #819) +- Fixed safe_mode problems (Bug #539) - Fixed wrong header encoding (Bug #1483976) - Made automatic draft saving configurable -- Fixed JS bug when renaming folders (Bug #1483989) +- Fixed JS bug when renaming folders (Bug #799) - Added quota display as image (by Brett Patterson) - Corrected creation of a message-id - New indentation for quoted message text - Improved HTML validity -- Fixed URL character set (Ticket #1445501) -- Fixed saving of contact into MySQL from LDAP query results (Ticket #1483820) -- Fixed folder renaming: unsubscribe before rename (Bug #1483920) +- Fixed URL character set (Ticket #616) +- Fixed saving of contact into MySQL from LDAP query results (Ticket #681) +- Fixed folder renaming: unsubscribe before rename (Bug #750) - Finalized new message parsing (+ chaching) -- Fixed wrong usage of mbstring (Bug #1462439) -- Set default spelling language (Ticket #1483938) +- Fixed wrong usage of mbstring (Bug #645) +- Set default spelling language (Ticket #764) - Added support for Nox Spell Server -- Re-built message parsing (Bug #1327068) +- Re-built message parsing (Bug #422) Now based on the message structure delivered by the IMAP server. - Fixed some XSS and SQL injection issues - Fixed charset problems with folder renaming diff --git a/INSTALL b/INSTALL index 06ac1f58..9740554c 100644 --- a/INSTALL +++ b/INSTALL @@ -11,18 +11,19 @@ REQUIREMENTS * The Apache, Lighttpd, Cherokee or Hiawatha web server * .htaccess support allowing overrides for DirectoryIndex -* PHP Version 5.3.7 or greater (but not PHP 7) including - - PCRE, DOM, JSON, Session, Sockets (required) - - PHP Data Objects (PDO) with driver for either MySQL, PostgreSQL or SQLite (required) - - Libiconv, Zip (recommended) - - OpenSSL, Fileinfo, Mcrypt, mbstring (optional) -* PEAR packages distributed with Roundcube or external: - - Mail_Mime 1.9.0 or newer - - Net_SMTP (latest from https://github.com/pear/Net_SMTP/) +* PHP Version 5.3.7 or greater including: + - PCRE, DOM, JSON, Session, Sockets, OpenSSL, Mbstring (required) + - PHP PDO with driver for either MySQL, PostgreSQL, SQL Server, Oracle or SQLite (required) + - Libiconv, Zip, Fileinfo, Intl, Exif (recommended) + - LDAP for LDAP addressbook support (optional) +* PEAR and PEAR packages distributed with Roundcube or external: + - Mail_Mime 1.10.0 or newer + - Net_SMTP 1.7.1 or newer + - Net_Socket 1.0.12 or newer - Net_IDNA2 0.1.1 or newer - Auth_SASL 1.0.6 or newer - Net_Sieve 1.3.2 or newer (for managesieve plugin) - - Crypt_GPG 1.2.0 or newer (for enigma plugin) + - Crypt_GPG 1.4.3 or newer (for enigma plugin) * php.ini options (see .htaccess file): - error_reporting E_ALL & ~E_NOTICE (or lower) - memory_limit > 16MB (increase as suitable to support large attachments) @@ -33,9 +34,8 @@ REQUIREMENTS - magic_quotes_runtime disabled - magic_quotes_sybase disabled - register_globals disabled (PHP < 5.4) -* PHP compiled with OpenSSL to use secure (tls/ssl) connections and to use the spell checker -* A MySQL (4.0.8 or newer), PostgreSQL, MS SQL Server (2005 or newer) database engine - or SQLite support in PHP +* A MySQL (4.0.8 or newer), PostgreSQL, MS SQL Server (2005 or newer), Oracle + database or SQLite support in PHP * One of the above databases with permission to create tables * An SMTP server (recommended) or PHP configured for mail delivery * Composer installed either locally or globally (optional, for plugin installation) @@ -59,6 +59,9 @@ INSTALLATION CONFIGURATION HINTS =================== +IMPORTANT! Read all comments in defaults.inc.php, understand them +and configure your installation to be not surprised by default behaviour. + Roundcube writes internal errors to the 'errors' log file located in the logs directory which can be configured in config/config.inc.php. If you want ordinary PHP errors to be logged there as well, enable the 'php_value error_log' line @@ -74,6 +77,7 @@ DATABASE SETUP ============== Note: Database for Roundcube must use UTF-8 character set. +Note: See defaults.inc.php file for examples of DSN configuration. * MySQL ------- diff --git a/README.md b/README.md index cc6193f3..0837fec0 100644 --- a/README.md +++ b/README.md @@ -72,8 +72,8 @@ For more information visit [roundcube.net/contribute][contrib] CONTACT ------- -For any bug reports or feature requests please refer to the tracking system -at [trac.roundcube.net][tracreport] or subscribe to our mailing list. +For bug reports or feature requests please refer to the tracking system +at [Github][githubissues] or subscribe to our mailing list. See [roundcube.net/support][support] for details. You're always welcome to send a message to the project admin: @@ -90,4 +90,4 @@ hello(at)roundcube(dot)net [license]: http://roundcube.net/license [contrib]: http://roundcube.net/contribute [support]: http://roundcube.net/support -[tracreport]: http://trac.roundcube.net/wiki/Howto_ReportIssues \ No newline at end of file +[githubissues]: https://github.com/roundcube/roundcubemail/issues \ No newline at end of file diff --git a/bin/cleandb.sh b/bin/cleandb.sh index d811c8d0..0bf71ea6 100644 --- a/bin/cleandb.sh +++ b/bin/cleandb.sh @@ -5,7 +5,7 @@ | bin/cleandb.sh | | | | This file is part of the Roundcube Webmail client | - | Copyright (C) 2010, The Roundcube Dev Team | + | Copyright (C) 2010-2015, The Roundcube Dev Team | | | | Licensed under the GNU General Public License version 3 or | | any later version with exceptions for skins & plugins. | @@ -23,56 +23,11 @@ define('INSTALL_PATH', realpath(__DIR__ . '/..') . '/' ); require INSTALL_PATH.'program/include/clisetup.php'; -// mapping for table name => primary key -$primary_keys = array( - 'contacts' => "contact_id", - 'contactgroups' => "contactgroup_id", -); - -// connect to DB -$RCMAIL = rcube::get_instance(); -$db = $RCMAIL->get_dbh(); -$db->db_connect('w'); - -if (!$db->is_connected() || $db->is_error()) { - rcube::raise_error("No DB connection", false, true); -} - if (!empty($_SERVER['argv'][1])) $days = intval($_SERVER['argv'][1]); else $days = 7; -// remove all deleted records older than two days -$threshold = date('Y-m-d 00:00:00', time() - $days * 86400); - -foreach (array('contacts','contactgroups','identities') as $table) { - - $sqltable = $db->table_name($table, true); - - // also delete linked records - // could be skipped for databases which respect foreign key constraints - if ($db->db_provider == 'sqlite' - && ($table == 'contacts' || $table == 'contactgroups') - ) { - $pk = $primary_keys[$table]; - $memberstable = $db->table_name('contactgroupmembers'); - - $db->query( - "DELETE FROM " . $db->quote_identifier($memberstable). - " WHERE `$pk` IN (". - "SELECT `$pk` FROM $sqltable". - " WHERE `del` = 1 AND `changed` < ?". - ")", - $threshold); - - echo $db->affected_rows() . " records deleted from '$memberstable'\n"; - } - - // delete outdated records - $db->query("DELETE FROM $sqltable WHERE `del` = 1 AND `changed` < ?", $threshold); - - echo $db->affected_rows() . " records deleted from '$table'\n"; -} +rcmail_utils::db_clean($days); ?> diff --git a/bin/deluser.sh b/bin/deluser.sh index 1e93793c..06505ef5 100644 --- a/bin/deluser.sh +++ b/bin/deluser.sh @@ -37,7 +37,7 @@ function _die($msg, $usage=false) exit(1); } -$rcmail = rcmail::get_instance(); +$rcmail = rcube::get_instance(); // get arguments $args = rcube_utils::get_opt(array('h' => 'host')); diff --git a/bin/indexcontacts.sh b/bin/indexcontacts.sh index 2844742f..760e5379 100644 --- a/bin/indexcontacts.sh +++ b/bin/indexcontacts.sh @@ -24,31 +24,6 @@ define('INSTALL_PATH', realpath(__DIR__ . '/..') . '/' ); require_once INSTALL_PATH.'program/include/clisetup.php'; ini_set('memory_limit', -1); -// connect to DB -$RCMAIL = rcube::get_instance(); - -$db = $RCMAIL->get_dbh(); -$db->db_connect('w'); - -if (!$db->is_connected() || $db->is_error()) { - rcube::raise_error("No DB connection", false, true); -} - -// iterate over all users -$sql_result = $db->query("SELECT `user_id` FROM " . $db->table_name('users', true) . " ORDER BY `user_id`"); -while ($sql_result && ($sql_arr = $db->fetch_assoc($sql_result))) { - echo "Indexing contacts for user " . $sql_arr['user_id'] . "..."; - - $contacts = new rcube_contacts($db, $sql_arr['user_id']); - $contacts->set_pagesize(9999); - - $result = $contacts->list_records(); - while ($result->count && ($row = $result->next())) { - unset($row['words']); - $contacts->update($row['ID'], $row); - } - - echo "done.\n"; -} +rcmail_utils::indexcontacts(); ?> diff --git a/bin/initdb.sh b/bin/initdb.sh new file mode 100644 index 00000000..fd22007d --- /dev/null +++ b/bin/initdb.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env php + | + +-----------------------------------------------------------------------+ +*/ + +define('INSTALL_PATH', realpath(__DIR__ . '/..') . '/' ); + +require_once INSTALL_PATH . 'program/include/clisetup.php'; + +// get arguments +$opts = rcube_utils::get_opt(array( + 'd' => 'dir', +)); + +if (empty($opts['dir'])) { + rcube::raise_error("Database schema directory not specified (--dir).", false, true); +} + +// Check if directory exists +if (!file_exists($opts['dir'])) { + rcube::raise_error("Specified database schema directory doesn't exist.", false, true); +} + +rcmail_utils::db_init($opts['dir']); + +?> diff --git a/bin/installto.sh b/bin/installto.sh index bd8e97b6..2cc1b255 100644 --- a/bin/installto.sh +++ b/bin/installto.sh @@ -5,7 +5,7 @@ | bin/installto.sh | | | | This file is part of the Roundcube Webmail client | - | Copyright (C) 2014, The Roundcube Dev Team | + | Copyright (C) 2014-2016, The Roundcube Dev Team | | | | Licensed under the GNU General Public License version 3 or | | any later version with exceptions for skins & plugins. | @@ -44,12 +44,20 @@ $input = trim(fgets(STDIN)); if (strtolower($input) == 'y') { $err = false; echo "Copying files to target location..."; + + // Save a copy of original .htaccess file (#1490623) + if (file_exists("$target_dir/.htaccess")) { + $htaccess_copied = copy("$target_dir/.htaccess", "$target_dir/.htaccess.orig"); + } + $dirs = array('program','installer','bin','SQL','plugins','skins'); if (is_dir(INSTALL_PATH . 'vendor') && !is_file(INSTALL_PATH . 'composer.json')) { $dirs[] = 'vendor'; } foreach ($dirs as $dir) { - if (!system("rsync -avC " . INSTALL_PATH . "$dir/* $target_dir/$dir/")) { + // @FIXME: should we use --delete for all directories? + $delete = in_array($dir, array('program', 'installer')) ? '--delete ' : ''; + if (!system("rsync -avC " . $delete . INSTALL_PATH . "$dir/* $target_dir/$dir/")) { $err = true; break; } @@ -60,9 +68,22 @@ if (strtolower($input) == 'y') { break; } } + // remove old (<1.0) .htaccess file @unlink("$target_dir/program/.htaccess"); - echo "done.\n\n"; + echo "done."; + + // Inform the user about .htaccess change + if (!empty($htaccess_copied)) { + if (file_get_contents("$target_dir/.htaccess") != file_get_contents("$target_dir/.htaccess.orig")) { + echo "\n!! Old .htaccess file saved as .htaccess.orig !!"; + } + else { + @unlink("$target_dir/.htaccess.orig"); + } + } + + echo "\n\n"; if (is_dir("$target_dir/skins/default")) { echo "Removing old default skin..."; diff --git a/bin/moduserprefs.sh b/bin/moduserprefs.sh index cbbe138e..94f9ec29 100644 --- a/bin/moduserprefs.sh +++ b/bin/moduserprefs.sh @@ -5,7 +5,7 @@ | bin/moduserprefs.sh | | | | This file is part of the Roundcube Webmail client | - | Copyright (C) 2012, The Roundcube Dev Team | + | Copyright (C) 2012-2015, The Roundcube Dev Team | | | | Licensed under the GNU General Public License version 3 or | | any later version with exceptions for skins & plugins. | @@ -24,59 +24,45 @@ require_once INSTALL_PATH.'program/include/clisetup.php'; function print_usage() { - print "Usage: moduserprefs.sh [--user=user-id] pref-name [pref-value|--delete]\n"; - print "--user User ID in local database\n"; - print "--delete Unset the given preference\n"; + print "Usage: moduserprefs.sh [options] pref-name [pref-value]\n"; + print "Options:\n"; + print " --user=user-id User ID in local database\n"; + print " --config=path Location of additional configuration file\n"; + print " --delete Unset the given preference\n"; + print " --type=type Pref-value type: int, bool, string\n"; } // get arguments -$args = rcube_utils::get_opt(array('u' => 'user', 'd' => 'delete')); +$args = rcube_utils::get_opt(array( + 'u' => 'user', + 'd' => 'delete:bool', + 't' => 'type', + 'c' => 'config', +)); if ($_SERVER['argv'][1] == 'help') { - print_usage(); - exit; + print_usage(); + exit; } -else if (empty($args[0]) || (!isset($args[1]) && !$args['delete'])) { - print "Missing required parameters.\n"; - print_usage(); - exit; +else if (empty($args[0]) || (empty($args[1]) && empty($args['delete']))) { + print "Missing required parameters.\n"; + print_usage(); + exit; } $pref_name = trim($args[0]); $pref_value = $args['delete'] ? null : trim($args[1]); -// connect to DB -$rcmail = rcube::get_instance(); - -$db = $rcmail->get_dbh(); -$db->db_connect('w'); - -if (!$db->is_connected() || $db->is_error()) - die("No DB connection\n" . $db->is_error()); - -$query = '1=1'; - -if ($args['user']) - $query = '`user_id` = ' . intval($args['user']); - -// iterate over all users -$sql_result = $db->query("SELECT * FROM " . $db->table_name('users', true) . " WHERE $query"); -while ($sql_result && ($sql_arr = $db->fetch_assoc($sql_result))) { - echo "Updating prefs for user " . $sql_arr['user_id'] . "..."; - - $user = new rcube_user($sql_arr['user_id'], $sql_arr); - $prefs = $old_prefs = $user->get_prefs(); - - $prefs[$pref_name] = $pref_value; +if ($pref_value === null) { + $args['type'] = null; +} - if ($prefs != $old_prefs) { - $user->save_prefs($prefs, true); - echo "saved.\n"; - } - else { - echo "nothing changed.\n"; - } +if ($args['config']) { + $rcube = rcube::get_instance(); + $rcube->config->load_from_file($args['config']); } +rcmail_utils::mod_pref($pref_name, $pref_value, $args['user'], $args['type']); + ?> diff --git a/bin/update.sh b/bin/update.sh index ea82b958..15a4b572 100644 --- a/bin/update.sh +++ b/bin/update.sh @@ -24,7 +24,7 @@ define('INSTALL_PATH', realpath(__DIR__ . '/..') . '/' ); require_once INSTALL_PATH . 'program/include/clisetup.php'; // get arguments -$opts = rcube_utils::get_opt(array('v' => 'version', 'y' => 'accept')); +$opts = rcube_utils::get_opt(array('v' => 'version', 'y' => 'accept:bool')); // ask user if no version is specified if (!$opts['version']) { @@ -156,10 +156,8 @@ if ($RCI->configured) { // check database schema if ($RCI->config['db_dsnw']) { echo "Executing database schema update.\n"; - system("php " . INSTALL_PATH . "bin/updatedb.sh --package=roundcube --version=" . $opts['version'] - . " --dir=" . INSTALL_PATH . "SQL", $res); - - $success = !$res; + $success = rcmail_utils::db_update(INSTALL_PATH . 'SQL', 'roundcube', $opts['version'], + array('errors' => true)); } // update composer dependencies @@ -171,14 +169,20 @@ if ($RCI->configured) { // update the require section with the new dependencies if (is_array($composer_data['require']) && is_array($composer_template['require'])) { $composer_data['require'] = array_merge($composer_data['require'], $composer_template['require']); - /* TO BE ADDED LATER - $old_packages = array(); - for ($old_packages as $pkg) { - if (array_key_exists($composer_data['require'], $pkg)) { + + // remove obsolete packages + $old_packages = array( + 'pear/mail_mime', + 'pear/mail_mime-decode', + 'pear/net_smtp', + 'pear/net_sieve', + 'pear-pear.php.net/net_sieve', + ); + foreach ($old_packages as $pkg) { + if (array_key_exists($pkg, $composer_data['require'])) { unset($composer_data['require'][$pkg]); } } - */ } // update the repositories section with the new dependencies @@ -192,12 +196,18 @@ if ($RCI->configured) { $existing = false; foreach ($composer_data['repositories'] as $k => $_repo) { if ($rkey == $_repo['type'] . preg_replace('/^https?:/', '', $_repo['url']) . $_repo['package']['name']) { + // switch to https:// + if (isset($_repo['url']) && strpos($_repo['url'], 'http://') === 0) + $composer_data['repositories'][$k]['url'] = 'https:' . substr($_repo['url'], 5); $existing = true; break; } // remove old repos else if (strpos($_repo['url'], 'git://git.kolab.org') === 0) { - unset($composer_data['repositories'][$k]); + unset($composer_data['repositories'][$k]); + } + else if ($_repo['type'] == 'package' && $_repo['package']['name'] == 'Net_SMTP') { + unset($composer_data['repositories'][$k]); } } if (!$existing) { @@ -245,7 +255,7 @@ if ($RCI->configured) { // index contacts for fulltext searching if ($opts['version'] && version_compare(version_parse($opts['version']), '0.6.0', '<')) { - system("php " . INSTALL_PATH . 'bin/indexcontacts.sh'); + rcmail_utils::indexcontacts(); } if ($success) { diff --git a/bin/updatedb.sh b/bin/updatedb.sh index ffeac0ba..7e4f0f52 100644 --- a/bin/updatedb.sh +++ b/bin/updatedb.sh @@ -37,142 +37,6 @@ if (empty($opts['package'])) { rcube::raise_error("Database schema package name not specified (--package).", false, true); } -// Check if directory exists -if (!file_exists($opts['dir'])) { - rcube::raise_error("Specified database schema directory doesn't exist.", false, true); -} - -$RC = rcube::get_instance(); -$DB = rcube_db::factory($RC->config->get('db_dsnw')); - -$DB->set_debug((bool)$RC->config->get('sql_debug')); - -// Connect to database -$DB->db_connect('w'); -if (!$DB->is_connected()) { - rcube::raise_error("Error connecting to database: " . $DB->is_error(), false, true); -} - -// Read DB schema version from database (if 'system' table exists) -if (in_array($DB->table_name('system'), (array)$DB->list_tables())) { - $DB->query("SELECT `value`" - ." FROM " . $DB->table_name('system', true) - ." WHERE `name` = ?", - $opts['package'] . '-version'); - - $row = $DB->fetch_array(); - $version = preg_replace('/[^0-9]/', '', $row[0]); -} - -// DB version not found, but release version is specified -if (!$version && $opts['version']) { - // Map old release version string to DB schema version - // Note: This is for backward compat. only, do not need to be updated - $map = array( - '0.1-stable' => 1, - '0.1.1' => 2008030300, - '0.2-alpha' => 2008040500, - '0.2-beta' => 2008060900, - '0.2-stable' => 2008092100, - '0.2.1' => 2008092100, - '0.2.2' => 2008092100, - '0.3-stable' => 2008092100, - '0.3.1' => 2009090400, - '0.4-beta' => 2009103100, - '0.4' => 2010042300, - '0.4.1' => 2010042300, - '0.4.2' => 2010042300, - '0.5-beta' => 2010100600, - '0.5' => 2010100600, - '0.5.1' => 2010100600, - '0.5.2' => 2010100600, - '0.5.3' => 2010100600, - '0.5.4' => 2010100600, - '0.6-beta' => 2011011200, - '0.6' => 2011011200, - '0.7-beta' => 2011092800, - '0.7' => 2011111600, - '0.7.1' => 2011111600, - '0.7.2' => 2011111600, - '0.7.3' => 2011111600, - '0.7.4' => 2011111600, - '0.8-beta' => 2011121400, - '0.8-rc' => 2011121400, - '0.8.0' => 2011121400, - '0.8.1' => 2011121400, - '0.8.2' => 2011121400, - '0.8.3' => 2011121400, - '0.8.4' => 2011121400, - '0.8.5' => 2011121400, - '0.8.6' => 2011121400, - '0.9-beta' => 2012080700, - ); - - $version = $map[$opts['version']]; -} - -// Assume last version before the 'system' table was added -if (empty($version)) { - $version = 2012080700; -} - -$dir = $opts['dir'] . '/' . $DB->db_provider; -if (!file_exists($dir)) { - rcube::raise_error("DDL Upgrade files for " . $DB->db_provider . " driver not found.", false, true); -} - -$dh = opendir($dir); -$result = array(); - -while ($file = readdir($dh)) { - if (preg_match('/^([0-9]+)\.sql$/', $file, $m) && $m[1] > $version) { - $result[] = $m[1]; - } -} -sort($result, SORT_NUMERIC); - -foreach ($result as $v) { - echo "Updating database schema ($v)... "; - $error = update_db_schema($opts['package'], $v, "$dir/$v.sql"); - - if ($error) { - echo "[FAILED]\n"; - rcube::raise_error("Error in DDL upgrade $v: $error", false, true); - } - echo "[OK]\n"; -} - - -function update_db_schema($package, $version, $file) -{ - global $DB; - - // read DDL file - if ($sql = file_get_contents($file)) { - if (!$DB->exec_script($sql)) { - return $DB->is_error(); - } - } - - // escape if 'system' table does not exist - if ($version < 2013011000) { - return; - } - - $system_table = $DB->table_name('system', true); - - $DB->query("UPDATE " . $system_table - ." SET `value` = ?" - ." WHERE `name` = ?", - $version, $package . '-version'); - - if (!$DB->is_error() && !$DB->affected_rows()) { - $DB->query("INSERT INTO " . $system_table - ." (`name`, `value`) VALUES (?, ?)", - $package . '-version', $version); - } - - return $DB->is_error(); -} +rcmail_utils::db_update($opts['dir'], $opts['package'], $opts['version'], array('errors' => true)); ?> diff --git a/composer.json-dist b/composer.json-dist index 3af2473b..33ae8e31 100644 --- a/composer.json-dist +++ b/composer.json-dist @@ -5,12 +5,16 @@ "repositories": [ { "type": "pear", - "url": "http://pear.php.net/" + "url": "https://pear.php.net/" }, { "type": "composer", "url": "https://plugins.roundcube.net/" }, + { + "type": "vcs", + "url": "https://github.com/roundcube/Net_Sieve.git" + }, { "type": "vcs", "url": "https://git.kolab.org/diffusion/PNL/php-net_ldap.git" @@ -18,20 +22,21 @@ ], "require": { "php": ">=5.3.7", + "pear/pear-core-minimal": "~1.10.1", "roundcube/plugin-installer": "~0.1.6", + "pear-pear.php.net/net_socket": "~1.0.12", "pear-pear.php.net/auth_sasl": "~1.0.6", "pear-pear.php.net/net_idna2": "~0.1.1", - "pear-pear.php.net/net_sieve": "~1.3.4", - "pear-pear.php.net/mail_mime": "~1.9.0", + "pear-pear.php.net/mail_mime": "~1.10.0", "pear-pear.php.net/net_smtp": "~1.7.1", - "patchwork/utf8": "~1.2.3" + "pear-pear.php.net/crypt_gpg": "~1.4.2", + "roundcube/net_sieve": "~1.5.0" }, "require-dev": { - "pear-pear.php.net/crypt_gpg": "*", "phpunit/phpunit": "*" }, "suggest": { - "pear-pear.php.net/net_ldap2": "~2.1.0 required for connecting to LDAP address books", + "pear-pear.php.net/net_ldap2": "~2.2.0 required for connecting to LDAP address books", "kolab/Net_LDAP3": "dev-master required for connecting to LDAP address books" }, "minimum-stability": "dev" diff --git a/config/config.inc.php b/config/config.inc.php index f2c1dae5..50c909fb 100644 --- a/config/config.inc.php +++ b/config/config.inc.php @@ -5,8 +5,6 @@ */ $currentPath = getcwd(); chdir(dirname(__FILE__) . '/../../../../'); -if (!$no_include_config) { - include_once('include/ConfigUtils.php'); -} +include_once('include/ConfigUtils.php'); include_once('config/modules/OSSMail.php'); chdir($currentPath); diff --git a/config/config.inc.php.sample b/config/config.inc.php.sample new file mode 100644 index 00000000..2b72cc6d --- /dev/null +++ b/config/config.inc.php.sample @@ -0,0 +1,86 @@ +/smtp or to syslog $config['smtp_debug'] = false; +// Log Memcache conversation to /memcache or to syslog +$config['memcache_debug'] = false; + +// Log APC conversation to /apc or to syslog +$config['apc_debug'] = false; + + // ---------------------------------- // IMAP // ---------------------------------- @@ -158,6 +166,11 @@ // Otherwise it will be determined automatically $config['imap_delimiter'] = null; +// If you know your imap's folder vendor, you can specify it here. +// Otherwise it will be determined automatically. Use lower-case +// identifiers, e.g. 'dovecot', 'cyrus', 'gmail', 'hmail', 'uw-imap'. +$config['imap_vendor'] = null; + // If IMAP server doesn't support NAMESPACE extension, but you're // using shared folders or personal root folder is non-empty, you'll need to // set these options. All can be strings or arrays of strings. @@ -184,6 +197,11 @@ // Enable this option to force listing of folders in all namespaces $config['imap_force_ns'] = false; +// Some servers return hidden folders (name starting witha dot) +// from user home directory. IMAP RFC does not forbid that. +// Enable this option to hide them and disable possibility to create such. +$config['imap_skip_hidden_folders'] = false; + // List of disabled imap extensions. // Use if your IMAP server has broken implementation of some feature // and you can't remove it from CAPABILITY string on server-side. @@ -288,6 +306,41 @@ // Lifetime of LDAP cache. Possible units: s, m, h, d, w $config['ldap_cache_ttl'] = '10m'; + +// ---------------------------------- +// CACHE(S) +// ---------------------------------- + +// Use these hosts for accessing memcached +// Define any number of hosts in the form of hostname:port or unix:///path/to/socket.file +$config['memcache_hosts'] = null; // e.g. array( 'localhost:11211', '192.168.1.12:11211', 'unix:///var/tmp/memcached.sock' ); + +// Controls the use of a persistent connections to memcache servers +// See http://php.net/manual/en/memcache.addserver.php +$config['memcache_pconnect'] = true; + +// Value in seconds which will be used for connecting to the daemon +// See http://php.net/manual/en/memcache.addserver.php +$config['memcache_timeout'] = 1; + +// Controls how often a failed server will be retried (value in seconds). +// Setting this parameter to -1 disables automatic retry. +// See http://php.net/manual/en/memcache.addserver.php +$config['memcache_retry_interval'] = 15; + +// use these hosts for accessing Redis. +// Currently only one host is supported. cluster support may come in a future release. +// You can pass 4 fields, host, port, database and password. +// Unset fields will be set to the default values host=127.0.0.1, port=6379, database=0, password= (empty) +$config['redis_hosts'] = null; // e.g. array( 'localhost:6379' ); array( '192.168.1.1:6379:1:secret' ); + +// Maximum size of an object in memcache (in bytes). Default: 2MB +$config['memcache_max_allowed_packet'] = '2M'; + +// Maximum size of an object in APC cache (in bytes). Default: 2MB +$config['apc_max_allowed_packet'] = '2M'; + + // ---------------------------------- // SYSTEM // ---------------------------------- @@ -359,6 +412,18 @@ // UPDATE users SET username = LOWER(username); $config['login_lc'] = 2; +// Maximum length (in bytes) of logon username and password. +$config['login_username_maxlen'] = 1024; +$config['login_password_maxlen'] = 1024; + +// Logon username filter. Regular expression for use with preg_match(). +// Example: '/^[a-z0-9_@.-]+$/' +$config['login_username_filter'] = null; + +// Brute-force attacks prevention. +// The value specifies maximum number of failed logon attempts per minute. +$config['login_rate_limit'] = 3; + // Includes should be interpreted as PHP files $config['skin_include_php'] = false; @@ -380,29 +445,17 @@ // Session path. Defaults to PHP session.cookie_path setting. $config['session_path'] = null; -// Backend to use for session storage. Can either be 'db' (default), 'memcache' or 'php' +// Backend to use for session storage. Can either be 'db' (default), 'redis', 'memcache', or 'php' +// // If set to 'memcache', a list of servers need to be specified in 'memcache_hosts' // Make sure the Memcache extension (http://pecl.php.net/package/memcache) version >= 2.0.0 is installed +// +// If set to 'redis', a server needs to be specified in 'redis_hosts' +// Make sure the Redis extension (http://pecl.php.net/package/redis) version >= 2.0.0 is installed +// // Setting this value to 'php' will use the default session save handler configured in PHP $config['session_storage'] = 'db'; -// Use these hosts for accessing memcached -// Define any number of hosts in the form of hostname:port or unix:///path/to/socket.file -$config['memcache_hosts'] = null; // e.g. array( 'localhost:11211', '192.168.1.12:11211', 'unix:///var/tmp/memcached.sock' ); - -// Controls the use of a persistent connections to memcache servers -// See http://php.net/manual/en/memcache.addserver.php -$config['memcache_pconnect'] = true; - -// Value in seconds which will be used for connecting to the daemon -// See http://php.net/manual/en/memcache.addserver.php -$config['memcache_timeout'] = 1; - -// Controls how often a failed server will be retried (value in seconds). -// Setting this parameter to -1 disables automatic retry. -// See http://php.net/manual/en/memcache.addserver.php -$config['memcache_retry_interval'] = 15; - // check client IP in session authorization $config['ip_check'] = false; @@ -417,11 +470,16 @@ // Possible values: sameorigin|deny. Set to false in order to disable sending them $config['x_frame_options'] = 'sameorigin'; -// this key is used to encrypt the users imap password which is stored -// in the session record (and the client cookie if remember password is enabled). -// please provide a string of exactly 24 chars. +// This key is used for encrypting purposes, like storing of imap password +// in the session. For historical reasons it's called DES_key, but it's used +// with any configured cipher_method (see below). $config['des_key'] = 'rcmail-!24ByteDESkey*Str'; +// Encryption algorithm. You can use any method supported by openssl. +// Default is set for backward compatibility to DES-EDE3-CBC, +// but you can choose e.g. AES-256-CBC which we consider a better choice. +$config['cipher_method'] = 'DES-EDE3-CBC'; + // Automatically add this domain to user names for login // Only for IMAP servers that require full e-mail addresses for login // Specify an array with 'host' => 'domain' values to support multiple hosts @@ -448,9 +506,10 @@ // For example %n = mail.domain.tld, %t = domain.tld $config['mail_domain'] = ''; -// Password charset. -// Use it if your authentication backend doesn't support UTF-8. -// Defaults to ISO-8859-1 for backward compatibility +// Password character set. +// If your authentication backend supports it, use "UTF-8". +// Otherwise, use the appropriate character set. +// Defaults to ISO-8859-1 for backward compatibility. $config['password_charset'] = 'ISO-8859-1'; // How many seconds must pass between emails sent by a user @@ -459,7 +518,7 @@ // Maximum number of recipients per message. Default: 0 (no limit) $config['max_recipients'] = 0; -// Maximum allowednumber of members of an address group. Default: 0 (no limit) +// Maximum allowed number of members of an address group. Default: 0 (no limit) // If 'max_recipients' is set this value should be less or equal $config['max_group_members'] = 0; @@ -639,7 +698,7 @@ // NOTE: Use folder names with namespace prefix (INBOX. on Courier-IMAP) $config['trash_mbox'] = 'Trash'; -// automatically create the above listed default folders on first login +// automatically create the above listed default folders on user login $config['create_default_folders'] = false; // protect the default folders from renames, deletes, and subscription changes @@ -652,8 +711,6 @@ $config['quota_zero_as_unlimited'] = false; // 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 $config['enable_spellcheck'] = true; // Enables spellchecker exceptions dictionary. @@ -786,6 +843,10 @@ // DN and password to bind as before searching for bind DN, if anonymous search is not allowed 'search_bind_dn' => '', 'search_bind_pw' => '', + // Base DN and filter used for resolving the user's domain root DN which feeds the %dc variables + // Leave empty to skip this lookup and derive the root DN from the username domain + 'domain_base_dn' => '', + 'domain_filter' => '', // Optional map of replacement strings => attributes used when binding for an individual address book 'search_bind_attrib' => array(), // e.g. array('%udc' => 'ou') // Default for %dn variable if search doesn't return DN value @@ -816,8 +877,11 @@ 'required_fields' => array('cn', 'sn', 'mail'), 'search_fields' => array('mail', 'cn'), // fields to search in // mapping of contact fields to directory attributes - // for every attribute one can specify the number of values (limit) allowed. - // default is 1, a wildcard * means unlimited + // 1. for every attribute one can specify the number of values (limit) allowed. + // default is 1, a wildcard * means unlimited + // 2. another possible parameter is separator character for composite fields + // 3. it's possible to define field format for write operations, e.g. for date fields + // example: 'birthday:date[YmdHis\\Z]' 'fieldmap' => array( // Roundcube => LDAP:limit 'name' => 'cn', @@ -936,6 +1000,10 @@ // Note: For LDAP sources fuzzy_search must be enabled to use 'partial' or 'prefix' mode $config['addressbook_search_mode'] = 0; +// List of fields used on contacts list and for autocompletion searches +// Warning: These are field names not LDAP attributes (see 'fieldmap' setting)! +$config['contactlist_fields'] = array('name', 'firstname', 'surname', 'email'); + // Template of contact entry on the autocompletion list. // You can use contact fields as: name, email, organization, department, etc. // See program/steps/addressbook/func.inc for a list @@ -992,7 +1060,11 @@ $config['compose_extwin'] = false; // compose html formatted messages by default -// 0 - never, 1 - always, 2 - on reply to HTML message, 3 - on forward or reply to HTML message +// 0 - never, +// 1 - always, +// 2 - on reply to HTML message, +// 3 - on forward or reply to HTML message +// 4 - always, except when replying to plain text message $config['htmleditor'] = 0; // save copies of compose messages in the browser's local storage @@ -1079,6 +1151,9 @@ // the signature below the quoted text (sig_below = true). $config['sig_below'] = false; +// Enables adding of standard separator to the signature +$config['sig_separator'] = true; + // Use MIME encoding (quoted-printable) for 8bit characters in message body $config['force_7bit'] = false; diff --git a/index.php b/index.php index 1d40b8b3..c33a84c9 100644 --- a/index.php +++ b/index.php @@ -1,10 +1,10 @@ output->nocacheing_headers(); @@ -62,12 +62,12 @@ rcmail::raise_error(array( 'code' => 603, 'type' => 'db', - 'message' => $err_str), FALSE, TRUE); + 'message' => $err_str), false, true); } // error steps if ($RCMAIL->action == 'error' && !empty($_GET['_code'])) { - rcmail::raise_error(array('code' => hexdec($_GET['_code'])), FALSE, TRUE); + rcmail::raise_error(array('code' => hexdec($_GET['_code'])), false, true); } // check if https is required (for login) and redirect if necessary @@ -155,6 +155,7 @@ RCMAIL::ERROR_COOKIES_DISABLED => 'cookiesdisabled', RCMAIL::ERROR_INVALID_REQUEST => 'invalidrequest', RCMAIL::ERROR_INVALID_HOST => 'invalidhost', + RCMAIL::ERROR_RATE_LIMIT => 'accountlocked', ); $error_message = !empty($auth['error']) && !is_numeric($auth['error']) ? $auth['error'] : ($error_labels[$error_code] ?: 'loginfailed'); @@ -242,7 +243,7 @@ $disabled_actions = (array) $RCMAIL->config->get('disabled_actions'); if (in_array($RCMAIL->task . '.' . ($RCMAIL->action ?: 'index'), $disabled_actions)) { rcube::raise_error(array( - 'code' => 403, 'type' => 'php', + 'code' => 404, 'type' => 'php', 'message' => "Action disabled"), true, true); } } diff --git a/phpunit.php b/phpunit.php deleted file mode 100644 index e3ecc862..00000000 --- a/phpunit.php +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env php -. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * * Neither the name of Sebastian Bergmann nor the names of his - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -define('PHPUnit_MAIN_METHOD', 'PHPUnit_TextUI_Command::main'); - -if (strpos('@php_bin@', '@php_bin') === 0) { - require dirname(__FILE__) . DIRECTORY_SEPARATOR . 'PHPUnit' . DIRECTORY_SEPARATOR . 'Autoload.php'; -} else { - require '@php_dir@' . DIRECTORY_SEPARATOR . 'PHPUnit' . DIRECTORY_SEPARATOR . 'Autoload.php'; -} - -PHPUnit_TextUI_Command::main(); diff --git a/plugins/acl/acl.js b/plugins/acl/acl.js index af52b5b6..36476504 100644 --- a/plugins/acl/acl.js +++ b/plugins/acl/acl.js @@ -344,16 +344,13 @@ rcube_webmail.prototype.acl_init_form = function(id) var buttons = {}, me = this, body = document.body; - buttons[this.gettext('save')] = function(e) { me.command('acl-save'); }; - buttons[this.gettext('cancel')] = function(e) { me.command('acl-cancel'); }; - - var popup_wrapper = $(''); - this.acl_form.appendTo(popup_wrapper).show(); + buttons[this.get_label('save')] = function(e) { me.command('acl-save'); }; + buttons[this.get_label('cancel')] = function(e) { me.command('acl-cancel'); }; // display it as popup this.acl_popup = this.show_popup_dialog( - popup_wrapper, - id ? this.gettext('acl.editperms') : this.gettext('acl.newuser'), + this.acl_form.show(), + id ? this.get_label('acl.editperms') : this.get_label('acl.newuser'), buttons, { button_classes: ['mainaction'], diff --git a/plugins/acl/acl.min.js b/plugins/acl/acl.min.js index a66d8a45..bc18a2e6 100644 --- a/plugins/acl/acl.min.js +++ b/plugins/acl/acl.min.js @@ -11,6 +11,5 @@ rcube_webmail.prototype.acl_remove_row=function(a){var b=this.acl_list;b.remove_ rcube_webmail.prototype.acl_add_row=function(a,b){var c,e,d=[];e=[];var f=a.id,h=this.acl_list,k=this.env.acl_advanced?[]:this.env.acl_items,g=$("thead > tr",this.gui_objects.acltable).clone();$("th",g).map(function(){var b=$(" "),c=$(this).attr("title"),d=this.className.replace(/^acl/,"");c&&b.attr("title",c);k&&k[d]&&(d=k[d]);"user"==d?b.addClass(d).append($("").text(a.username)):b.addClass(this.className+" "+rcmail.acl_class(a.acl,d)).text("");$(this).replaceWith(b)});g.attr("id","rcmrow"+ f);g=g.get(0);this.env.acl[f]=a.acl;for(c in this.env.acl)this.env.acl[c]&&(this.env.acl_specials.length&&0<=$.inArray(c,this.env.acl_specials)?e.push(c):d.push(c));d.sort();d=e.concat(d);c=0;for(e=d.length;c $.inArray(a,this.env.acl_specials)?d=$("td.user",c).text():f=a):b.filter(function(){return this.id.match(/^acl([lrs]|read)$/)}).prop("checked",!0);g.val(d);$("input[value="+f+"]").prop("checked",!0);this.acl_id=a;var d={},l=this,h=document.body;d[this.gettext("save")]=function(a){l.command("acl-save")};d[this.gettext("cancel")]=function(a){l.command("acl-cancel")};b=$('');this.acl_form.appendTo(b).show(); -this.acl_popup=this.show_popup_dialog(b,a?this.gettext("acl.editperms"):this.gettext("acl.newuser"),d,{button_classes:["mainaction"],modal:!0,closeOnEscape:!0,close:function(a,b){(l.is_framed()?parent.rcmail:l).ksearch_hide();l.acl_form.appendTo(h).hide();$(this).remove();window.focus()}});"user"==f?g.focus():$("input:checked",n).focus()}; -rcube_webmail.prototype.acl_class=function(a,b){var c,e,d=0;a=String(a);b=String(b);c=0;for(e=b.length;c $.inArray(a,this.env.acl_specials)?d=$("td.user",c).text():f=a):b.filter(function(){return this.id.match(/^acl([lrs]|read)$/)}).prop("checked",!0);g.val(d);$("input[value="+f+"]").prop("checked",!0);this.acl_id=a;var d={},l=this,h=document.body;d[this.get_label("save")]=function(a){l.command("acl-save")};d[this.get_label("cancel")]=function(a){l.command("acl-cancel")};this.acl_popup=this.show_popup_dialog(this.acl_form.show(),a?this.get_label("acl.editperms"): +this.get_label("acl.newuser"),d,{button_classes:["mainaction"],modal:!0,closeOnEscape:!0,close:function(a,b){(l.is_framed()?parent.rcmail:l).ksearch_hide();l.acl_form.appendTo(h).hide();$(this).remove();window.focus()}});"user"==f?g.focus():$("input:checked",n).focus()};rcube_webmail.prototype.acl_class=function(a,b){var c,e,d=0;a=String(a);b=String(b);c=0;for(e=b.length;c ($prefix ? $prefix : '') . $group_id, 'display' => $group, 'type' => 'group'); + $users[] = array('name' => ($prefix ?: '') . $group_id, 'display' => $group, 'type' => 'group'); $keys[] = $group; } } @@ -563,7 +563,7 @@ private function action_list() $this->mbox = trim(rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_GPC, true)); // UTF7-IMAP $advanced = trim(rcube_utils::get_input_value('_mode', rcube_utils::INPUT_GPC)); - $advanced = $advanced == 'advanced' ? true : false; + $advanced = $advanced == 'advanced'; // Save state in user preferences $this->rc->user->save_prefs(array('acl_advanced_mode' => $advanced)); diff --git a/plugins/acl/composer.json b/plugins/acl/composer.json index a08d211d..aa87f543 100644 --- a/plugins/acl/composer.json +++ b/plugins/acl/composer.json @@ -3,7 +3,7 @@ "type": "roundcube-plugin", "description": "IMAP Folders Access Control Lists Management (RFC4314, RFC2086).", "license": "GPLv3+", - "version": "1.5", + "version": "1.6", "authors": [ { "name": "Aleksander Machniak", diff --git a/plugins/acl/localization/br.inc b/plugins/acl/localization/br.inc index b3ae1c79..409ea485 100644 --- a/plugins/acl/localization/br.inc +++ b/plugins/acl/localization/br.inc @@ -18,31 +18,81 @@ $labels['sharing'] = 'Rannañ'; $labels['myrights'] = 'Aotreoù mont e-barzh'; $labels['username'] = 'Implijer:'; -$labels['newuser'] = 'Ouzhpenan un enporzh'; +$labels['advanced'] = 'Mod kempleshoc\'h'; +$labels['newuser'] = 'Ouzhpennañ un elfenn'; +$labels['editperms'] = 'Embann an aotreoù'; $labels['actions'] = 'Aotreoù mont e-barzh'; $labels['anyone'] = 'An holl implijerien (neb hini)'; -$labels['anonymous'] = 'pedet (dizanv)'; -$labels['aclr'] = 'Kemennadoù lennet'; -$labels['aclc'] = 'Krouiñ isrenkelloù'; -$labels['aclk'] = 'Krouiñ isrenkelloù'; -$labels['acld'] = 'Dilemel kemennadoù'; -$labels['aclt'] = 'Dilemel kemennadoù'; -$labels['aclx'] = 'Dilemel ar renkell'; -$labels['aclread'] = 'Lennet'; +$labels['anonymous'] = 'Kouvidi (dizanv)'; +$labels['identifier'] = 'Naoudi'; +$labels['acll'] = 'Taol sell'; +$labels['aclr'] = 'Kemennadennoù lennet'; +$labels['acls'] = 'Derc\'hel ar stad "Gwelet"'; +$labels['aclw'] = 'Bannieloù skrivañ'; +$labels['acli'] = 'Enlakaat (Eilañ an digoradur)'; +$labels['aclp'] = 'Postañ'; +$labels['aclc'] = 'Krouiñ isteuliadoù'; +$labels['aclk'] = 'Krouiñ isteuliadoù'; +$labels['acld'] = 'Dilemel kemennadennoù'; +$labels['aclt'] = 'Dilemel kemennadennoù'; +$labels['acle'] = 'Skarzhañ'; +$labels['aclx'] = 'Dilemel an teuliad'; +$labels['acla'] = 'Ardeiñ'; +$labels['acln'] = 'Notennaouiñ kemennadennoù'; +$labels['aclfull'] = 'Reoliadur a-bezh'; +$labels['aclother'] = 'All'; +$labels['aclread'] = 'Lenn'; $labels['aclwrite'] = 'Skrivañ'; $labels['acldelete'] = 'Dilemel'; +$labels['shortacll'] = 'Teurel ur sell'; $labels['shortaclr'] = 'Lenn'; -$labels['shortacls'] = 'Gwarezin'; +$labels['shortacls'] = 'Derc\'hel'; $labels['shortaclw'] = 'Skrivañ'; $labels['shortacli'] = 'Enlakaat'; +$labels['shortaclp'] = 'Postañ'; $labels['shortaclc'] = 'Krouiñ'; $labels['shortaclk'] = 'Krouiñ'; $labels['shortacld'] = 'Dilemel'; $labels['shortaclt'] = 'Dilemel'; -$labels['shortacle'] = 'Dilemel pep tra'; -$labels['shortaclx'] = 'Dilemel ar renkell'; -$labels['shortaclother'] = 'traoù all'; +$labels['shortacle'] = 'Skarzhañ'; +$labels['shortaclx'] = 'Dilemel an teuliad'; +$labels['shortacla'] = 'Ardeiñ'; +$labels['shortacln'] = 'Notennaouiñ'; +$labels['shortaclother'] = 'Traoù all'; $labels['shortaclread'] = 'Lenn'; $labels['shortaclwrite'] = 'Skrivañ'; $labels['shortacldelete'] = 'Dilemel'; +$labels['longacll'] = 'Gwelus eo an teuliad-se er rolloù ha gallout a reer bezañ koumanantet dezhañ'; +$labels['longaclr'] = 'Gallout a reer digeriñ an teuliad-mañ evit e lenn'; +$labels['longacls'] = 'Gallout a reer kemmañ ar bannieloù "Kemennadenn gwelet"'; +$labels['longaclw'] = 'Gallout a reer kemmañ an bannieloù kemennadennoù hag ar gerioù-alc\'hwez, war-bouez "Gwelet" ha "Dilamet"'; +$labels['longacli'] = 'Gallout a ra ar c\'hemennadennoù bezañ skrivet be eilet en teuliad'; +$labels['longaclp'] = 'Gallout a reer postañ kemennadennoù d\'an teuliad-mañ'; +$labels['longaclc'] = 'Gallout a reer krouiñ (pe adenvel) teuliadoù en teuliad war-eeun'; +$labels['longaclk'] = 'Gallout a reer krouiñ (pe adenvel) teuliadoù en teuliad war-eeun'; +$labels['longacld'] = 'Gallout a reer kemmañ ar banniel ""Kemennadenn dilamet"'; +$labels['longaclt'] = 'Gallout a reer kemmañ ar banniel ""Kemennadenn dilamet"'; +$labels['longacle'] = 'Gallout a reer skarzhañ ar c\'hemennadennoù'; +$labels['longaclx'] = 'Gallout a ra bezañ dilamet pe adanvet an teuliad'; +$labels['longacla'] = 'Gallout a reer kemmañ aotreoù haeziñ an teuliad'; +$labels['longacln'] = 'Metaroadennoù rannet (notennoù) ar c\'hemennadennoù a c\'hell bezañ kemmet'; +$labels['longaclfull'] = 'Reoliadur a-bezh, ardeiñ an teuliad en o zouez'; +$labels['longaclread'] = 'Gallout a reer digeriñ an teuliad evit e lenn'; +$labels['longaclwrite'] = 'Gallout a reer merkañ, skrivañ pe eilañ kemennadennoù d\'an teuliad'; +$labels['longacldelete'] = 'Gallout a reer dilemel ar c\'hemennadennoù'; +$labels['longaclother'] = 'Aotreoù haeziñ all'; +$labels['ariasummaryacltable'] = 'Roll an aotreoù haeziñ'; +$labels['arialabelaclactions'] = 'Roll ar gweredoù'; +$labels['arialabelaclform'] = 'Aotreoù haeziñ a-berzh'; +$messages['deleting'] = 'O tilemel an aotreoù haeziñ...'; +$messages['saving'] = 'Oc\'h enrollañ an aotreoù haeziñ...'; +$messages['updatesuccess'] = 'Kemmet an aotreoù haeziñ gant berzh'; +$messages['deletesuccess'] = 'Dilamet an aotreoù haeziñ gant berzh'; +$messages['createsuccess'] = 'Ouzhpennet an aotreoù haeziñ gant berzh'; +$messages['updateerror'] = 'N\'haller ket hizivaat an aotreoù haeziñ'; +$messages['deleteerror'] = 'N\'haller ket dilemel an aotreoù haeziñ'; +$messages['createerror'] = 'N\'haller ket ouzhpennañ aotreoù haeziñ'; +$messages['deleteconfirm'] = 'Sur oc\'h e fell deoc\'h dilemel aotreoù haeziñ an arveriaded diuzet?'; +$messages['norights'] = 'Aotre ebet erspizet!'; +$messages['nouser'] = 'Anv arveriad ebet erspizet!'; ?> diff --git a/plugins/acl/localization/de_DE.inc b/plugins/acl/localization/de_DE.inc index 01c33007..3de7b332 100644 --- a/plugins/acl/localization/de_DE.inc +++ b/plugins/acl/localization/de_DE.inc @@ -21,7 +21,7 @@ $labels['username'] = 'Benutzer:'; $labels['advanced'] = 'Erweiterter Modus'; $labels['newuser'] = 'Eintrag hinzufügen'; $labels['editperms'] = 'Zugriffsrechte bearbeiten'; -$labels['actions'] = 'Zugriffsrechte Aktionen...'; +$labels['actions'] = 'Zugriffsrechteaktionen …'; $labels['anyone'] = 'Alle Benutzer (anyone)'; $labels['anonymous'] = 'Gäste (anonymous)'; $labels['identifier'] = 'Bezeichnung'; diff --git a/plugins/acl/localization/es_419.inc b/plugins/acl/localization/es_419.inc index 5fc2be11..3ec167c6 100644 --- a/plugins/acl/localization/es_419.inc +++ b/plugins/acl/localization/es_419.inc @@ -16,10 +16,10 @@ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-acl/ */ $labels['sharing'] = 'Compartiendo'; -$labels['myrights'] = 'Derechos de acceso'; +$labels['myrights'] = 'Permisos de acceso'; $labels['username'] = 'Usuario:'; $labels['advanced'] = 'Modo avanzado'; -$labels['newuser'] = 'Agregar entrada'; +$labels['newuser'] = 'Añadir entrada'; $labels['editperms'] = 'Editar permisos'; $labels['actions'] = 'Acciones de derecho de acceso...'; $labels['anyone'] = 'Todos los usuarios (cualquiera)'; diff --git a/plugins/acl/localization/fo_FO.inc b/plugins/acl/localization/fo_FO.inc index fd56f465..80c233cd 100644 --- a/plugins/acl/localization/fo_FO.inc +++ b/plugins/acl/localization/fo_FO.inc @@ -38,6 +38,7 @@ $labels['aclt'] = 'Strika boð'; $labels['acle'] = 'Strika út'; $labels['aclx'] = 'Strika mappu'; $labels['acla'] = 'Umsit'; +$labels['acln'] = 'Viðmerk boð'; $labels['aclfull'] = 'Full stýring'; $labels['aclother'] = 'Annað'; $labels['aclread'] = 'Les'; @@ -56,6 +57,7 @@ $labels['shortaclt'] = 'Strika'; $labels['shortacle'] = 'Strika út'; $labels['shortaclx'] = 'Strika mappu'; $labels['shortacla'] = 'Umsit'; +$labels['shortacln'] = 'Viðmerk'; $labels['shortaclother'] = 'Annað'; $labels['shortaclread'] = 'Les'; $labels['shortaclwrite'] = 'Skriva'; @@ -73,10 +75,15 @@ $labels['longaclt'] = 'Viðmerki ið vÃsur á strika boð kann broytast'; $labels['longacle'] = 'Boð kunnu verða strika út'; $labels['longaclx'] = 'Mappan kann verða strika ella umdoypt'; $labels['longacla'] = 'Atgongdu-rættindini til hesa mappu kunnu broytast'; +$labels['longacln'] = '"Metadata" (viðmerking) av boðum kann broytast'; $labels['longaclfull'] = 'Full stýring, Ãrokna mappu-umsiting'; $labels['longaclread'] = 'Mappan kann latast upp til lesná'; $labels['longaclwrite'] = 'Boð kunnu verða viðmerkt, skriva ella avritast til mappuna'; $labels['longacldelete'] = 'Boð kunnu verða strikað'; +$labels['longaclother'] = 'Aðrar heimildir'; +$labels['ariasummaryacltable'] = 'Listi yvir brúkara heimildum'; +$labels['arialabelaclactions'] = 'VÃs gerðir'; +$labels['arialabelaclform'] = 'Heimilda frymil'; $messages['deleting'] = 'Strikar atgongu-rættindi...'; $messages['saving'] = 'Goymur atgongu-rættindi...'; $messages['updatesuccess'] = 'Atgongu-rættindi broytt væleyndað'; diff --git a/plugins/acl/localization/fr_FR.inc b/plugins/acl/localization/fr_FR.inc index 5d4934eb..fdfb2054 100644 --- a/plugins/acl/localization/fr_FR.inc +++ b/plugins/acl/localization/fr_FR.inc @@ -65,7 +65,7 @@ $labels['shortacldelete'] = 'Supprimer'; $labels['longacll'] = 'Ce dossier est visible dans les listes et on peut s\'y abonner'; $labels['longaclr'] = 'Le dossier peut-être ouvert en lecture'; $labels['longacls'] = 'Le drapeau Vu des courriels peut-être changée'; -$labels['longaclw'] = 'Les drapeaux et mot-clefs des courriels peuvent-être changés, sauf pour Vu et Supprimé'; +$labels['longaclw'] = 'Les drapeaux et mots-clés des courriels peuvent être changés, sauf pour Vu et Supprimé'; $labels['longacli'] = 'Les courriels peuvent-être écrits ou copiés dans le dossier'; $labels['longaclp'] = 'Les courriels peuvent-être publiés dans ce dossier'; $labels['longaclc'] = 'Les dossiers peuvent-être créés (ou renommés) directement depuis ce dossier'; diff --git a/plugins/acl/localization/hr_HR.inc b/plugins/acl/localization/hr_HR.inc index 83ad4844..1feef241 100644 --- a/plugins/acl/localization/hr_HR.inc +++ b/plugins/acl/localization/hr_HR.inc @@ -19,6 +19,7 @@ $labels['sharing'] = 'Dijeljenje'; $labels['myrights'] = 'Prava pristupa'; $labels['username'] = 'Korisnik:'; $labels['newuser'] = 'Dodaj unos/pravilo'; +$labels['editperms'] = 'Uredi dozvole'; $labels['actions'] = 'Akcije prava pristupa...'; $labels['anyone'] = 'Svi korisnici (anyone)'; $labels['anonymous'] = 'Gosti (anonymous)'; diff --git a/plugins/acl/localization/hy_AM.inc b/plugins/acl/localization/hy_AM.inc index 08126121..62f081fe 100644 --- a/plugins/acl/localization/hy_AM.inc +++ b/plugins/acl/localization/hy_AM.inc @@ -18,7 +18,9 @@ $labels['sharing'] = 'Ô¿Õ«Õ½Õ¾Õ¥Õ¬'; $labels['myrights'] = 'Õ„Õ¸Ö‚Õ¿Ö„Õ« Õ«Ö€Õ¡Õ¾Õ¸Ö‚Õ¶Ö„Õ¶Õ¥Ö€'; $labels['username'] = 'Õ•Õ£Õ¿Õ¡Õ¿Õ¥Ö€`'; +$labels['advanced'] = 'Ô±Õ¼Õ¡Õ»Õ¡Õ¤Õ¥Õ´ Õ¼Õ¥ÕªÕ«Õ´'; $labels['newuser'] = 'Ô±Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬ Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´'; +$labels['editperms'] = 'Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Õ©Õ¸Ö‚ÕµÕ¬Õ¿Õ¾Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨'; $labels['actions'] = 'Õ„Õ¸Ö‚Õ¿Ö„Õ« Õ«Ö€Õ¡Õ¾Õ¸Ö‚Õ¶Ö„Õ¶Õ¥Ö€Õ« գործողություններ…'; $labels['anyone'] = 'Ô²Õ¸Õ¬Õ¸Ö€ Ö…Õ£Õ¿Õ¾Õ¸Õ²Õ¶Õ¥Ö€Õ¨ (ÖÕ¡Õ¶Õ¯Õ¡ÖÕ¡Õ®)'; $labels['anonymous'] = 'Õ€ÕµÕ¸Ö‚Ö€Õ¥Ö€Õ¨ (Õ¡Õ¶Õ¡Õ¶Õ¸Ö‚Õ¶)'; @@ -36,6 +38,7 @@ $labels['aclt'] = 'Õ‹Õ¶Õ»Õ¥Õ¬ Õ°Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨'; $labels['acle'] = 'Õ€Õ¥Õ¼Õ¡ÖÕ¶Õ¥Õ¬'; $labels['aclx'] = 'Õ‹Õ¶Õ»Õ¥Õ¬ ÕºÕ¡Õ¶Õ¡Õ¯Õ¨'; $labels['acla'] = 'Ô¿Õ¡Õ¼Õ¡Õ¾Õ¡Ö€Õ¥Õ¬'; +$labels['acln'] = 'Ô¾Õ¡Õ¶Õ¸Õ©Õ¡Õ£Ö€Õ¥Õ¬ Õ°Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨'; $labels['aclfull'] = 'Ô¼Ö€Õ«Õ¾ Õ¾Õ¥Ö€Õ¡Õ°Õ½Õ¯Õ¸Ö‚Õ´'; $labels['aclother'] = 'Ô±ÕµÕ¬'; $labels['aclread'] = 'Ô¿Õ¡Ö€Õ¤Õ¡Õ¬'; @@ -54,6 +57,7 @@ $labels['shortaclt'] = 'Õ‹Õ¶Õ»Õ¥Õ¬'; $labels['shortacle'] = 'Õ€Õ¥Õ¼Õ¡ÖÕ¶Õ¥Õ¬'; $labels['shortaclx'] = 'ÕŠÕ¡Õ¶Õ¡Õ¯Õ« Õ»Õ¶Õ»Õ¸Ö‚Õ´'; $labels['shortacla'] = 'Ô¿Õ¡Õ¼Õ¡Õ¾Õ¡Ö€Õ¥Õ¬'; +$labels['shortacln'] = 'Ô¾Õ¡Õ¶Õ¸Õ©Õ¡Õ£Ö€Õ¥Õ¬'; $labels['shortaclother'] = 'Ô±ÕµÕ¬'; $labels['shortaclread'] = 'Ô¿Õ¡Ö€Õ¤Õ¡Õ¬'; $labels['shortaclwrite'] = 'Ô³Ö€Õ¥Õ¬'; @@ -71,10 +75,15 @@ $labels['longaclt'] = 'Õ€Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Õ‹Õ¶Õ»Õ¥Õ¬ Õ¶Õ· $labels['longacle'] = 'Õ€Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ¯Õ¡Ö€Õ¸Õ² Õ¥Õ¶ Õ°Õ¥Õ¼Õ¡ÖÕ¾Õ¥Õ¬'; $labels['longaclx'] = 'ÕŠÕ¡Õ¶Õ¡Õ¯Õ¨ Õ¯Õ¡Ö€Õ¸Õ² Õ§ Õ»Õ¶Õ»Õ¾Õ¥Õ¬ Õ¯Õ¡Õ´ Õ¾Õ¥Ö€Õ¡Õ¶Õ¾Õ¡Õ¶Õ¾Õ¥Õ¬'; $labels['longacla'] = 'ÕŠÕ¡Õ¶Õ¡Õ¯Õ« Õ´Õ¸Ö‚Õ¿Ö„Õ« Õ«Ö€Õ¡Õ¾Õ¸Ö‚Õ¶Ö„Õ¶Õ¥Ö€Õ¨ Õ¯Õ¡Ö€Õ¸Õ² Õ¥Õ¶ ÖƒÕ¸ÖƒÕ¸ÕÕ¾Õ¥Õ¬'; +$labels['longacln'] = 'Õ€Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Õ¢Õ¡Õ·ÕÕ¾Õ¡Õ® Õ¿Õ¾ÕµÕ¡Õ¬Õ¶Õ¥Ö€Õ¨ (Õ®Õ¡Õ¶Õ¸Õ©Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨) Õ¯Õ¡Ö€Õ¸Õ² Õ¥Õ¶ ÖƒÕ¸ÖƒÕ¸ÕÕ¾Õ¥Õ¬'; $labels['longaclfull'] = 'Ô¼Ö€Õ«Õ¾ Õ¾Õ¥Ö€Õ¡Õ°Õ½Õ¯Õ¸Ö‚Õ´ Õ¶Õ¥Ö€Õ¡Õ¼ÕµÕ¡Õ¬ ÕºÕ¡Õ¶Õ¡Õ¯Õ¶Õ¥Ö€Õ« Õ¯Õ¡Õ¼Õ¡Õ¾Õ¡Ö€Õ¸Ö‚Õ´Õ¨'; $labels['longaclread'] = 'ÕŠÕ¡Õ¶Õ¡Õ¯Õ¨ Õ¯Õ¡Ö€Õ¸Õ² Õ§ Õ¢Õ¡ÖÕ¾Õ¥Õ¬ Õ¨Õ¶Õ©Õ¥Ö€ÖÕ´Õ¡Õ¶ Õ°Õ¡Õ´Õ¡Ö€'; $labels['longaclwrite'] = 'Õ€Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ¯Õ¡Ö€Õ¸Õ² Õ¥Õ¶ Õ¶Õ·Õ¾Õ¥Õ¬, Õ½Õ¿Õ¥Õ²Õ®Õ¾Õ¥Õ¬ Ö‡ ÕºÕ¡Õ¿Õ³Õ¥Õ¶Õ¾Õ¥Õ¬ Õ¡ÕµÕ½ ÕºÕ¡Õ¶Õ¡Õ¯Õ¸Ö‚Õ´'; $labels['longacldelete'] = 'Õ€Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ¯Õ¡Ö€Õ¸Õ² Õ¥Õ¶ Õ»Õ¶Õ»Õ¾Õ¥Õ¬'; +$labels['longaclother'] = 'Õ„Õ¸Ö‚Õ¿Ö„Õ« Õ¡ÕµÕ¬ Õ«Ö€Õ¡Õ¾Õ¸Ö‚Õ¶Ö„Õ¶Õ¥Ö€Õ¨'; +$labels['ariasummaryacltable'] = 'Õ„Õ¸Ö‚Õ¿Ö„Õ« Õ«Ö€Õ¡Õ¾Õ¸Ö‚Õ¶Ö„Õ¶Õ¥Ö€Õ« ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¨'; +$labels['arialabelaclactions'] = 'Ô³Õ¸Ö€Õ®Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« ÖÕ¸Ö‚ÖÕ¡Õ¯Õ¨'; +$labels['arialabelaclform'] = 'Õ„Õ¸Ö‚Õ¿Ö„Õ« Õ«Ö€Õ¡Õ¾Õ¸Ö‚Õ¶Ö„Õ¶Õ¥Ö€Õ« Õ¢Õ¬Õ¡Õ¶Õ¯'; $messages['deleting'] = 'Õ‹Õ¶Õ»Õ¾Õ¸Ö‚Õ´ Õ¥Õ¶ Õ´Õ¸Ö‚Õ¿Ö„Õ« իրավունքները…'; $messages['saving'] = 'ÕŠÕ¡Õ°ÕºÕ¡Õ¶Õ¾Õ¸Ö‚Õ´ Õ¥Õ¶ Õ´Õ¸Ö‚Õ¿Ö„Õ« իրավունքները…'; $messages['updatesuccess'] = 'Õ„Õ¸Ö‚Õ¿Ö„Õ« Õ«Ö€Õ¡Õ¾Õ¸Ö‚Õ¶Ö„Õ¶Õ¥Ö€Õ¨ Õ¢Õ¡Ö€Õ¥Õ°Õ¡Õ»Õ¸Õ² ÖƒÕ¸ÖƒÕ¸ÕÕ¾Õ¥ÖÕ«Õ¶Ö‰'; diff --git a/plugins/acl/localization/id_ID.inc b/plugins/acl/localization/id_ID.inc index 348ec045..b33597d2 100644 --- a/plugins/acl/localization/id_ID.inc +++ b/plugins/acl/localization/id_ID.inc @@ -80,6 +80,10 @@ $labels['longaclfull'] = 'Kendali penuh penuh termasuk administrasi'; $labels['longaclread'] = 'Folder dapat dibuka untuk dibaca'; $labels['longaclwrite'] = 'Pesan dapat ditandai, ditulis atau disalin kedalam folder'; $labels['longacldelete'] = 'Pesan dapat dihapus'; +$labels['longaclother'] = 'Hak akses lainnya'; +$labels['ariasummaryacltable'] = 'Daftar hak akses'; +$labels['arialabelaclactions'] = 'Aksi daftar'; +$labels['arialabelaclform'] = 'Formulir hak akses'; $messages['deleting'] = 'Menghapus hak akses...'; $messages['saving'] = 'Menyimpan hak akses...'; $messages['updatesuccess'] = 'Hak akses berhasil diubah'; diff --git a/plugins/acl/localization/is_IS.inc b/plugins/acl/localization/is_IS.inc new file mode 100644 index 00000000..df8d40bb --- /dev/null +++ b/plugins/acl/localization/is_IS.inc @@ -0,0 +1,21 @@ +.inc | + | | + | Localization file of the Roundcube Webmail ACL plugin | + | Copyright (C) 2012-2013, 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. | + | | + +-----------------------------------------------------------------------+ + + For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-acl/ +*/ +$labels['aclread'] = 'Lesið'; +$labels['shortaclr'] = 'Lesið'; +$labels['shortaclread'] = 'Lesið'; +?> diff --git a/plugins/acl/localization/ka_GE.inc b/plugins/acl/localization/ka_GE.inc new file mode 100644 index 00000000..064a3946 --- /dev/null +++ b/plugins/acl/localization/ka_GE.inc @@ -0,0 +1,21 @@ +.inc | + | | + | Localization file of the Roundcube Webmail ACL plugin | + | Copyright (C) 2012-2013, 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. | + | | + +-----------------------------------------------------------------------+ + + For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-acl/ +*/ +$labels['aclread'] = 'წáƒáƒ™áƒ˜áƒ—ხვáƒ'; +$labels['shortaclr'] = 'წáƒáƒ™áƒ˜áƒ—ხვáƒ'; +$labels['shortaclread'] = 'წáƒáƒ™áƒ˜áƒ—ხვáƒ'; +?> diff --git a/plugins/acl/localization/lv_LV.inc b/plugins/acl/localization/lv_LV.inc index f092e945..961be910 100644 --- a/plugins/acl/localization/lv_LV.inc +++ b/plugins/acl/localization/lv_LV.inc @@ -18,7 +18,9 @@ $labels['sharing'] = 'DalÄ«Å¡anÄs'; $labels['myrights'] = 'Piekļuves tiesÄ«bas'; $labels['username'] = 'LietotÄjs:'; +$labels['advanced'] = 'PaplaÅ¡inÄtais režīms'; $labels['newuser'] = 'Pievienot ierakstu'; +$labels['editperms'] = 'Rediģēt piejas'; $labels['actions'] = 'DarbÄ«bas ar piekļuves tiesÄ«bÄm...'; $labels['anyone'] = 'Visi lietotÄji (ikviens)'; $labels['anonymous'] = 'Viesi (anonÄ«mie)'; @@ -36,6 +38,7 @@ $labels['aclt'] = 'DzÄ“st ziņojumus'; $labels['acle'] = 'IzdzÄ“st'; $labels['aclx'] = 'DzÄ“st mapi'; $labels['acla'] = 'PÄrvaldÄ«t'; +$labels['acln'] = 'AnotÄ“t e-pastus'; $labels['aclfull'] = 'Pilna kontrole'; $labels['aclother'] = 'Cits'; $labels['aclread'] = 'LasÄ«t'; @@ -52,8 +55,9 @@ $labels['shortaclk'] = 'Izveidot'; $labels['shortacld'] = 'DzÄ“st'; $labels['shortaclt'] = 'DzÄ“st'; $labels['shortacle'] = 'IzdzÄ“st'; -$labels['shortaclx'] = 'Mapju dzÄ“Å¡ana'; +$labels['shortaclx'] = 'Mapes dzÄ“Å¡ana'; $labels['shortacla'] = 'PÄrvaldÄ«t'; +$labels['shortacln'] = 'AnotÄ“t'; $labels['shortaclother'] = 'Cits'; $labels['shortaclread'] = 'LasÄ«t'; $labels['shortaclwrite'] = 'RakstÄ«t'; @@ -71,10 +75,15 @@ $labels['longaclt'] = 'Ziņojumu "DzÄ“st" atzÄ«me var tikt mainÄ«ta'; $labels['longacle'] = 'VÄ“stules var tikt izdzÄ“stas'; $labels['longaclx'] = 'Mape var tikt gan dzÄ“sta, gan pÄrdÄ“vÄ“ta'; $labels['longacla'] = 'Mapes pieejas tiesÄ«bas var tikt izmainÄ«tas'; +$labels['longacln'] = 'E-pastu koplietotie meta dati (anotÄcijas) var tikt mainÄ«ti'; $labels['longaclfull'] = 'Pilna kontrole, iekļaujot arÄ« mapju administrÄ“Å¡anu'; $labels['longaclread'] = 'Mape var tikt atvÄ“rta lasÄ«Å¡anai'; $labels['longaclwrite'] = 'Ziņojumi mapÄ“ var tikt gan atzÄ«mÄ“ti, gan ierakstÄ«ti vai arÄ« pÄrkopÄ“ti uz mapi'; $labels['longacldelete'] = 'VÄ“stules var tikt izdzÄ“stas'; +$labels['longaclother'] = 'Pieejas tiesÄ«bas citiem'; +$labels['ariasummaryacltable'] = 'Pieejas tiesÄ«bu saraksts'; +$labels['arialabelaclactions'] = 'DarbÄ«bu saraksts'; +$labels['arialabelaclform'] = 'Pieejas tiesÄ«bu forma'; $messages['deleting'] = 'DzÄ“Å¡ piekļuves tiesÄ«bas...'; $messages['saving'] = 'SaglabÄ piekļuves tiesÄ«bas...'; $messages['updatesuccess'] = 'Piekļuves tiesÄ«bas tika veiksmÄ«gi samainÄ«tas'; diff --git a/plugins/acl/localization/nl_BE.inc b/plugins/acl/localization/nl_BE.inc new file mode 100644 index 00000000..69d4ad9e --- /dev/null +++ b/plugins/acl/localization/nl_BE.inc @@ -0,0 +1,20 @@ +.inc | + | | + | Localization file of the Roundcube Webmail ACL plugin | + | Copyright (C) 2012-2013, 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. | + | | + +-----------------------------------------------------------------------+ + + For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-acl/ +*/ +$labels['aclother'] = 'Anders'; +$labels['shortaclother'] = 'Anders'; +?> diff --git a/plugins/acl/localization/sl_SI.inc b/plugins/acl/localization/sl_SI.inc index 5fa7ac23..aef0ad58 100644 --- a/plugins/acl/localization/sl_SI.inc +++ b/plugins/acl/localization/sl_SI.inc @@ -38,6 +38,7 @@ $labels['aclt'] = 'IzbriÅ¡i sporoÄila'; $labels['acle'] = 'IzbriÅ¡i'; $labels['aclx'] = 'IzbriÅ¡i mapo'; $labels['acla'] = 'Uredi'; +$labels['acln'] = 'Komentarji'; $labels['aclfull'] = 'Popolno upravljanje'; $labels['aclother'] = 'Ostalo'; $labels['aclread'] = 'Preberi'; @@ -56,6 +57,7 @@ $labels['shortaclt'] = 'IzbriÅ¡i'; $labels['shortacle'] = 'IzbriÅ¡i'; $labels['shortaclx'] = 'IzbriÅ¡i mapo'; $labels['shortacla'] = 'Uredi'; +$labels['shortacln'] = 'Dodaj komentar'; $labels['shortaclother'] = 'Ostalo'; $labels['shortaclread'] = 'Preberi'; $labels['shortaclwrite'] = 'Sestavi'; @@ -73,10 +75,15 @@ $labels['longaclt'] = 'Oznako sporoÄila \'Izbrisano\' je mogoÄe spremeniti'; $labels['longacle'] = 'SporoÄila so lahko izbrisana'; $labels['longaclx'] = 'Mapa je lahko izbrisana ali preimenovana'; $labels['longacla'] = 'Pravice na mapi so lahko spremenjene'; +$labels['longacln'] = 'Metapodatke (komentarjev), ki so v skupni rabi, je mogoÄe spremeniti'; $labels['longaclfull'] = 'Popolno upravljanje, vkljuÄno z urejanjem map'; $labels['longaclread'] = 'Mapa je na voljo za branje'; $labels['longaclwrite'] = 'SporoÄila je mogoÄe oznaÄiti, sestaviti ali kopirati v mapo'; $labels['longacldelete'] = 'SporoÄila so lahko izbrisana'; +$labels['longaclother'] = 'Ostale pravice dostopa'; +$labels['ariasummaryacltable'] = 'Seznam pravic dostopa'; +$labels['arialabelaclactions'] = 'Prikaži možnosti'; +$labels['arialabelaclform'] = 'Obrazec za nastavitve pravic dostopa'; $messages['deleting'] = 'Brisanje pravic'; $messages['saving'] = 'Shranjevanje pravic'; $messages['updatesuccess'] = 'Pravice so bile uspeÅ¡no spremenjene'; diff --git a/plugins/acl/localization/sq_AL.inc b/plugins/acl/localization/sq_AL.inc index ed0d7238..41ecc956 100644 --- a/plugins/acl/localization/sq_AL.inc +++ b/plugins/acl/localization/sq_AL.inc @@ -15,11 +15,82 @@ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-acl/ */ -$labels['aclr'] = 'Lexo mesazhet'; -$labels['aclwrite'] = 'Shkruaj'; +$labels['myrights'] = 'Të drejta Hyrjeje'; +$labels['username'] = 'Përdorues:'; +$labels['advanced'] = 'Mënyra e përparuar'; +$labels['newuser'] = 'Shtoni zë'; +$labels['editperms'] = 'Përpunoni leje'; +$labels['actions'] = 'Veprime të drejtash hyrjeje…'; +$labels['anyone'] = 'Krejt përdoruesit (cilido)'; +$labels['anonymous'] = 'Mysafirë (në mënyrë anonime)'; +$labels['identifier'] = 'Identifikues'; +$labels['acll'] = 'Kërkim'; +$labels['aclr'] = 'Lexoni mesazhe'; +$labels['acls'] = 'Mbaje gjendjen i Parë'; +$labels['acli'] = 'Fut (Kopje te)'; +$labels['aclp'] = 'Postim'; +$labels['aclc'] = 'Krijo nëndosje'; +$labels['aclk'] = 'Krijo nëndosje'; +$labels['acld'] = 'Fshiji mesazhet'; +$labels['aclt'] = 'Fshiji mesazhet'; +$labels['acle'] = 'Spastroje'; +$labels['aclx'] = 'Fshije dosjen'; +$labels['acla'] = 'Administroni'; +$labels['acln'] = 'Shto shënime te mesazhet'; +$labels['aclfull'] = 'Kontroll i plotë'; +$labels['aclother'] = 'Tjetër'; +$labels['aclread'] = 'Leximi'; +$labels['aclwrite'] = 'Shkrimi'; $labels['acldelete'] = 'Fshije'; -$labels['shortaclc'] = 'Krijo'; -$labels['shortaclk'] = 'Krijo'; +$labels['shortacll'] = 'Kërkim'; +$labels['shortaclr'] = 'Leximi'; +$labels['shortacls'] = 'Mbaje'; +$labels['shortaclw'] = 'Shkrimi'; +$labels['shortacli'] = 'Fut'; +$labels['shortaclp'] = 'Posto'; +$labels['shortaclc'] = 'Krijoje'; +$labels['shortaclk'] = 'Krijoje'; $labels['shortacld'] = 'Fshije'; $labels['shortaclt'] = 'Fshije'; +$labels['shortacle'] = 'Spastro'; +$labels['shortaclx'] = 'Fshirje dosjeje'; +$labels['shortacla'] = 'Administro'; +$labels['shortacln'] = 'Shto shënim'; +$labels['shortaclother'] = 'Tjetër'; +$labels['shortaclread'] = 'Leximi'; +$labels['shortaclwrite'] = 'Shkrimi'; +$labels['shortacldelete'] = 'Fshirjeje'; +$labels['longacll'] = 'Dosja është e dukshme në lista dhe në të mund të pajtoheni'; +$labels['longaclr'] = 'Dosja mund të hapet për lexim'; +$labels['longacls'] = 'Mund të ndryshohet shenja Mesazhe të Parë'; +$labels['longaclw'] = 'Mund të ndryshohen shenjat dhe fjalëkyçet për mesazhet, hiq të Parë dhe të Fshirë'; +$labels['longacli'] = 'Mesazhet mund të shkruhen ose kopjohen në dosje'; +$labels['longaclp'] = 'Mesazhet mund të postohen te kjo dosje'; +$labels['longaclc'] = 'Dosjet mund të krijohen (ose riemërtohen) drejt e nën këtë dosje'; +$labels['longaclk'] = 'Dosjet mund të krijohen (ose riemërtohen) drejt e nën këtë dosje'; +$labels['longacld'] = 'Mund të ndryshohet shenja Mesazhe të Fshirë'; +$labels['longaclt'] = 'Mund të ndryshohet shenja Mesazhe të Parë'; +$labels['longacle'] = 'Mesazhet mund të spastrohen'; +$labels['longaclx'] = 'Dosja mund të fshihet ose riemërtohet'; +$labels['longacla'] = 'Mund të ndryshohen të drejta hyrjeje te dosja'; +$labels['longacln'] = 'Mund të ndryshohen tejtëdhëna të përbashkëta (shënime) mesazhesh'; +$labels['longaclfull'] = 'Kontroll i plotë, përfshi administrim dosjesh'; +$labels['longaclread'] = 'Dosja mund të hapet për lexim'; +$labels['longaclwrite'] = 'Mesazheve mund t’u vihet shenjë, shkruhen ose kopjohen te dosja'; +$labels['longacldelete'] = 'Mesazhet mund të fshihen'; +$labels['longaclother'] = 'Të tjera të drejta hyrjesh'; +$labels['ariasummaryacltable'] = 'Listë të drejtash hyrjeje'; +$labels['arialabelaclactions'] = 'Paraqit veprime'; +$labels['arialabelaclform'] = 'Formular të drejtash hyrjeje'; +$messages['deleting'] = 'Po fshihen të drejta hyrjeje…'; +$messages['saving'] = 'Po ruhen të drejtash hyrjeje…'; +$messages['updatesuccess'] = 'U ndryshuan me sukses të drejta hyrjeje'; +$messages['deletesuccess'] = 'U fshinë me sukses të drejta hyrjeje'; +$messages['createsuccess'] = 'U shtuan me sukses të drejta hyrjeje'; +$messages['updateerror'] = 'I pazoti të përditësojë të drejta hyrjeje'; +$messages['deleteerror'] = 'I pazoti të fshijë të drejta hyrjeje'; +$messages['createerror'] = 'I pazoti të shtojë të drejta hyrjeje'; +$messages['deleteconfirm'] = 'Jeni i sigurt, doni t’i hiqni të drejta hyrjeje përdoruesit(ve) të përzgjedhur?'; +$messages['norights'] = 'Nuk janë specifikuar të drejta!'; +$messages['nouser'] = 'Nuk është specifikuar emër përdoruesi!'; ?> diff --git a/plugins/acl/localization/tr_TR.inc b/plugins/acl/localization/tr_TR.inc index 9c1c224e..b13ac855 100644 --- a/plugins/acl/localization/tr_TR.inc +++ b/plugins/acl/localization/tr_TR.inc @@ -16,30 +16,30 @@ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-acl/ */ $labels['sharing'] = 'Paylaşım'; -$labels['myrights'] = 'EriÅŸim Hakları'; +$labels['myrights'] = 'EriÅŸim Ä°zinleri'; $labels['username'] = 'Kullanıcı:'; -$labels['advanced'] = 'GeliÅŸmiÅŸ mod'; -$labels['newuser'] = 'Girdi ekle'; +$labels['advanced'] = 'GeliÅŸmiÅŸ kip'; +$labels['newuser'] = 'Kayıt ekle'; $labels['editperms'] = 'Ä°zinleri düzenle'; -$labels['actions'] = 'EriÅŸim hakları aksiyonları...'; -$labels['anyone'] = 'Tüm kullanıcılar(kim olursa)'; -$labels['anonymous'] = 'Ziyaretçiler(anonim)'; +$labels['actions'] = 'EriÅŸim izinleri iÅŸlemleri...'; +$labels['anyone'] = 'Tüm kullanıcılar (kim olursa)'; +$labels['anonymous'] = 'Ziyaretçiler (isimsiz)'; $labels['identifier'] = 'Tanımlayıcı'; $labels['acll'] = 'Arama'; -$labels['aclr'] = 'Mesajları oku'; -$labels['acls'] = 'Göründü durumunu muhafaza et'; -$labels['aclw'] = 'Yazma bayrakları'; -$labels['acli'] = 'Ekle(kopyala)'; +$labels['aclr'] = 'Ä°letileri oku'; +$labels['acls'] = 'Okundu durumu korunsun'; +$labels['aclw'] = 'Yazma iÅŸaretleri'; +$labels['acli'] = 'Ekle (kopyala)'; $labels['aclp'] = 'Gönder'; -$labels['aclc'] = 'Alt dizinler oluÅŸtur'; -$labels['aclk'] = 'Alt dizinler oluÅŸtur'; -$labels['acld'] = 'Mesajları sil'; -$labels['aclt'] = 'Mesajları sil'; +$labels['aclc'] = 'Alt klasörler oluÅŸtur'; +$labels['aclk'] = 'Alt klasörler oluÅŸtur'; +$labels['acld'] = 'Ä°letileri sil'; +$labels['aclt'] = 'Ä°letileri sil'; $labels['acle'] = 'Sil'; -$labels['aclx'] = 'Dizini sil'; +$labels['aclx'] = 'Klasörü sil'; $labels['acla'] = 'Yönet'; -$labels['acln'] = 'Mesajlara not ekle'; -$labels['aclfull'] = 'Tam kontrol'; +$labels['acln'] = 'Ä°letilere not ekle'; +$labels['aclfull'] = 'Tam denetim'; $labels['aclother'] = 'DiÄŸer'; $labels['aclread'] = 'Oku'; $labels['aclwrite'] = 'Yaz'; @@ -55,7 +55,7 @@ $labels['shortaclk'] = 'OluÅŸtur'; $labels['shortacld'] = 'Sil'; $labels['shortaclt'] = 'Sil'; $labels['shortacle'] = 'Sil'; -$labels['shortaclx'] = 'Dizin sil'; +$labels['shortaclx'] = 'Klasörü sil'; $labels['shortacla'] = 'Yönet'; $labels['shortacln'] = 'Not ekle'; $labels['shortaclother'] = 'DiÄŸer'; @@ -63,36 +63,36 @@ $labels['shortaclread'] = 'Oku'; $labels['shortaclwrite'] = 'Yaz'; $labels['shortacldelete'] = 'Sil'; $labels['longacll'] = 'Klasör listesinde görülebilir ve abone olunabilir'; -$labels['longaclr'] = 'Dizin yazma için okunabilir'; -$labels['longacls'] = 'Mesajların göründü bayrağı deÄŸiÅŸtirilebilir'; -$labels['longaclw'] = 'Görülme ve Silinme bayrakları hariç bayraklar ve anahtar kelimeler deÄŸiÅŸtirilebilir'; -$labels['longacli'] = 'Mesajlar dizini yazılabilir veya kopyalanabilir'; -$labels['longaclp'] = 'Mesajlar bu dizine gönderilebilir'; -$labels['longaclc'] = 'Dizinler doÄŸrudan bu klasör altında oluÅŸturulabilir veya yeniden adlandırılabilir.'; -$labels['longaclk'] = 'Dizinler doÄŸrudan bu klasör altında oluÅŸturulabilir veya yeniden adlandırılabilir.'; -$labels['longacld'] = 'mesajları sil bayrakları deÄŸiÅŸtirilebilir'; -$labels['longaclt'] = 'mesajları sil, bayraklar deÄŸiÅŸtirilebilir'; -$labels['longacle'] = 'Mesajlar silinebilir'; -$labels['longaclx'] = 'Klasörü silinebilir veya yeniden adlandırılabilir'; -$labels['longacla'] = 'Dizin eriÅŸim hakları deÄŸiÅŸtirilebilir'; -$labels['longacln'] = 'Mesajların paylaşılan üst verileri (notlar) deÄŸiÅŸtirilebilir'; -$labels['longaclfull'] = 'Dizin yönetimi de dahil olmak üzere tam kontrol'; -$labels['longaclread'] = 'Dizin yazma için okunabilir'; -$labels['longaclwrite'] = 'Dizin yönetimi de dahil olmak üzere tam kontrol'; -$labels['longacldelete'] = 'Mesajlar silinebilir'; -$labels['longaclother'] = 'DiÄŸer eriÅŸim hakları'; -$labels['ariasummaryacltable'] = 'EriÅŸim hakları listesi'; -$labels['arialabelaclactions'] = 'Aksiyon listesi'; -$labels['arialabelaclform'] = 'EriÅŸim hakları formu'; -$messages['deleting'] = 'EriÅŸim hakları siliniyor...'; -$messages['saving'] = 'EriÅŸim hakları kaydediliyor...'; -$messages['updatesuccess'] = 'EriÅŸim hakları deÄŸiÅŸtirildi'; -$messages['deletesuccess'] = 'EriÅŸim hakları silindi'; -$messages['createsuccess'] = 'EriÅŸim hakları eklendi'; -$messages['updateerror'] = 'EriÅŸim hakları güncellenemedi'; -$messages['deleteerror'] = 'EriÅŸim haklarını silinemedi'; -$messages['createerror'] = 'EriÅŸim hakları eklenemedi'; -$messages['deleteconfirm'] = 'Seçilen kullanıcılar için eriÅŸim haklarını silmek istediÄŸinizden emin misiniz?'; -$messages['norights'] = 'Hiçbir hak belirtilmemiÅŸ!'; -$messages['nouser'] = 'Hiçbir kullanıcı belirtilmemiÅŸ!'; +$labels['longaclr'] = 'Klasör okunmak üzere açılabilir'; +$labels['longacls'] = 'Ä°letilerin Okundu iÅŸareti deÄŸiÅŸtirilebilir'; +$labels['longaclw'] = 'Okundu ve Silindi iÅŸaretleri dışındaki iÅŸaret ve anahtar sözcükler deÄŸiÅŸtirilebilir'; +$labels['longacli'] = 'Klasöre iletiler yazılabilir ya da kopyalanabilir'; +$labels['longaclp'] = 'Ä°letiler bu klasöre gönderilebilir'; +$labels['longaclc'] = 'Klasörler doÄŸrudan bu klasör altında oluÅŸturulabilir (ya da yeniden adlandırılabilir).'; +$labels['longaclk'] = 'Klasörler doÄŸrudan bu klasör altında oluÅŸturulabilir (ya da yeniden adlandırılabilir).'; +$labels['longacld'] = 'Ä°leti Silindi iÅŸareti deÄŸiÅŸtirilebilir'; +$labels['longaclt'] = 'Ä°leti Silindi iÅŸareti deÄŸiÅŸtirilebilir'; +$labels['longacle'] = 'Ä°letiler silinebilir'; +$labels['longaclx'] = 'Klasör silinebilir ya da yeniden adlandırılabilir'; +$labels['longacla'] = 'Klasör eriÅŸim izinleri deÄŸiÅŸtirilebilir'; +$labels['longacln'] = 'Ä°letilerin paylaşılan üst verileri (notlar) deÄŸiÅŸtirilebilir'; +$labels['longaclfull'] = 'Klasör yönetimi dahil tam denetim'; +$labels['longaclread'] = 'Klasör okunmak üzere açılabilir'; +$labels['longaclwrite'] = 'Klasöre iletiler iÅŸaretlenebilir, yazılabilir ya da kopyalanabilir'; +$labels['longacldelete'] = 'Ä°letiler silinebilir'; +$labels['longaclother'] = 'DiÄŸer eriÅŸim izinleri'; +$labels['ariasummaryacltable'] = 'EriÅŸim izinleri listesi'; +$labels['arialabelaclactions'] = 'Ä°ÅŸlem listesi'; +$labels['arialabelaclform'] = 'EriÅŸim izinleri formu'; +$messages['deleting'] = 'EriÅŸim izinleri siliniyor...'; +$messages['saving'] = 'EriÅŸim izinleri kaydediliyor...'; +$messages['updatesuccess'] = 'EriÅŸim izinleri deÄŸiÅŸtirildi'; +$messages['deletesuccess'] = 'EriÅŸim izinleri silindi'; +$messages['createsuccess'] = 'EriÅŸim izinleri eklendi'; +$messages['updateerror'] = 'EriÅŸim izinleri güncellenemedi'; +$messages['deleteerror'] = 'EriÅŸim izinleri silinemedi'; +$messages['createerror'] = 'EriÅŸim izinleri eklenemedi'; +$messages['deleteconfirm'] = 'SeçilmiÅŸ kullanıcılar için eriÅŸim izinlerini silmek istediÄŸinize emin misiniz?'; +$messages['norights'] = 'Herhangi bir izin belirtilmemiÅŸ!'; +$messages['nouser'] = 'Herhangi bir kullanıcı belirtilmemiÅŸ!'; ?> diff --git a/plugins/acl/localization/tzl.inc b/plugins/acl/localization/tzl.inc new file mode 100644 index 00000000..a4841200 --- /dev/null +++ b/plugins/acl/localization/tzl.inc @@ -0,0 +1,24 @@ +.inc | + | | + | Localization file of the Roundcube Webmail ACL plugin | + | Copyright (C) 2012-2013, 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. | + | | + +-----------------------------------------------------------------------+ + + For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-acl/ +*/ +$labels['username'] = 'Uçeir:'; +$labels['anonymous'] = 'Gästs (anonimös)'; +$labels['acldelete'] = 'Zeletarh'; +$labels['shortacld'] = 'Zeletarh'; +$labels['shortaclt'] = 'Zeletarh'; +$labels['shortacldelete'] = 'Zeletarh'; +?> diff --git a/plugins/acl/localization/uk_UA.inc b/plugins/acl/localization/uk_UA.inc index f0522a2c..4b865486 100644 --- a/plugins/acl/localization/uk_UA.inc +++ b/plugins/acl/localization/uk_UA.inc @@ -15,30 +15,84 @@ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-acl/ */ +$labels['sharing'] = 'ПоширеннÑ'; $labels['myrights'] = 'Права доÑтупу'; $labels['username'] = 'КориÑтувач:'; -$labels['anyone'] = 'Ð’ÑÑ– кориÑтувачі (кожен)'; +$labels['advanced'] = 'Розширений режим'; +$labels['newuser'] = 'Додати запиÑ'; +$labels['editperms'] = 'Редагувати дозволи'; +$labels['actions'] = 'Дії з правами доÑтупу…'; +$labels['anyone'] = 'УÑÑ– кориÑтувачі (будь-хто)'; $labels['anonymous'] = 'ГоÑÑ‚Ñ– (аноніми)'; +$labels['identifier'] = 'Ідентифікатор'; +$labels['acll'] = 'Пошук'; +$labels['aclr'] = 'Прочитані повідомленнÑ'; +$labels['acls'] = 'Зберегти ÑÑ‚Ð°Ñ‚ÑƒÑ Â«ÐŸÑ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð¾Â»'; +$labels['aclw'] = 'Прапорці напиÑаннÑ'; +$labels['acli'] = 'Ð’Ñтавити (Копіювати в)'; +$labels['aclp'] = 'ДопиÑ'; $labels['aclc'] = 'Створити підтеки'; $labels['aclk'] = 'Створити підтеки'; $labels['acld'] = 'Вилучити повідомленнÑ'; $labels['aclt'] = 'Вилучити повідомленнÑ'; +$labels['acle'] = 'ВикреÑлити'; $labels['aclx'] = 'Вилучити теку'; +$labels['acla'] = 'ÐдмініÑтрувати'; +$labels['acln'] = 'Ðнотувати повідомленнÑ'; $labels['aclfull'] = 'Повний контроль'; $labels['aclother'] = 'Інше'; $labels['aclread'] = 'Читати'; -$labels['acldelete'] = 'Видалити'; +$labels['aclwrite'] = 'ПиÑати'; +$labels['acldelete'] = 'Вилучити'; +$labels['shortacll'] = 'Пошук'; $labels['shortaclr'] = 'Читати'; $labels['shortacls'] = 'Залишити'; +$labels['shortaclw'] = 'ПиÑати'; $labels['shortacli'] = 'Ð’Ñтавити'; +$labels['shortaclp'] = 'ДопиÑати'; $labels['shortaclc'] = 'Створити'; $labels['shortaclk'] = 'Створити'; -$labels['shortacld'] = 'Видалити'; -$labels['shortaclt'] = 'Видалити'; -$labels['shortaclx'] = 'Видалити теку'; +$labels['shortacld'] = 'Вилучити'; +$labels['shortaclt'] = 'Вилучити'; +$labels['shortacle'] = 'ВикреÑлити'; +$labels['shortaclx'] = 'Вилучити теку'; +$labels['shortacla'] = 'ÐдмініÑтрувати'; +$labels['shortacln'] = 'Ðнотувати'; $labels['shortaclother'] = 'Інше'; -$labels['shortacldelete'] = 'Видалити'; -$labels['longaclfull'] = 'Повний контроль включаючи теку адмініÑтратора'; -$messages['deleting'] = 'Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ð² доÑтупу...'; -$messages['saving'] = 'Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ð² доÑтупу...'; +$labels['shortaclread'] = 'Читати'; +$labels['shortaclwrite'] = 'ПиÑати'; +$labels['shortacldelete'] = 'Вилучити'; +$labels['longacll'] = 'Тека видима у ÑпиÑках Ñ– на неї можна підпиÑатиÑÑŒ'; +$labels['longaclr'] = 'Теку можна відкрити Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ'; +$labels['longacls'] = 'Прапорець «Прочитано» на повідомленнÑÑ… можна змінити'; +$labels['longaclw'] = 'Прапорці Ñ– ключові Ñлова повідомлень можна змінити, окрім «Прочитано» Ñ– «Вилучено»'; +$labels['longacli'] = 'ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ð½Ð° запиÑати або копіювати у теку'; +$labels['longaclp'] = 'ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ð½Ð° публікувати в цю теку'; +$labels['longaclc'] = 'Теки можна Ñтворювати (чи перейменовувати) прÑмо під цією текою'; +$labels['longaclk'] = 'Теки можна Ñтворювати (чи перейменовувати) прÑмо під цією текою'; +$labels['longacld'] = 'Прапорець «Вилучено» на повідомленнÑÑ… можна змінити'; +$labels['longaclt'] = 'Прапорець «Вилучено» на повідомленнÑÑ… можна змінити'; +$labels['longacle'] = 'ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ð½Ð° викреÑлити'; +$labels['longaclx'] = 'Теку можна вилучити чи перейменувати'; +$labels['longacla'] = 'Права доÑтупу до теки можна змінити'; +$labels['longacln'] = 'Поширені метадані (анотації) повідомлень можна змінити'; +$labels['longaclfull'] = 'Повний контроль, включно з адмініÑтруваннÑм тек'; +$labels['longaclread'] = 'Теку можна відкрити Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ'; +$labels['longaclwrite'] = 'ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ð½Ð° позначити, запиÑати або копіювати у теку'; +$labels['longacldelete'] = 'ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ð½Ð° вилучити'; +$labels['longaclother'] = 'Інші права доÑтупу'; +$labels['ariasummaryacltable'] = 'СпиÑок прав доÑтупу'; +$labels['arialabelaclactions'] = 'Перелічити дії'; +$labels['arialabelaclform'] = 'Форма прав доÑтупу'; +$messages['deleting'] = 'Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ð² доÑтупу…'; +$messages['saving'] = 'Ð—Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð°Ð² доÑтупу…'; +$messages['updatesuccess'] = 'Права доÑтупу уÑпішно змінені'; +$messages['deletesuccess'] = 'Права доÑтупу уÑпішно вилучені'; +$messages['createsuccess'] = 'Права доÑтупу уÑпішно додані'; +$messages['updateerror'] = 'Ðе вдалоÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ права доÑтупу'; +$messages['deleteerror'] = 'Ðе вдалоÑÑ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ права доÑтупу'; +$messages['createerror'] = 'Ðе вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ права доÑтупу'; +$messages['deleteconfirm'] = 'Ви дійÑно хочете вилучити права доÑтупу обраного кориÑтувача(-ів)?'; +$messages['norights'] = 'Жодних прав не вказано!'; +$messages['nouser'] = 'Жодного імені кориÑтувача не вказано!'; ?> diff --git a/plugins/acl/localization/zh_CN.inc b/plugins/acl/localization/zh_CN.inc index da69484d..ea6a83c8 100644 --- a/plugins/acl/localization/zh_CN.inc +++ b/plugins/acl/localization/zh_CN.inc @@ -18,7 +18,9 @@ $labels['sharing'] = '共享'; $labels['myrights'] = '访问æƒé™'; $labels['username'] = '用户:'; +$labels['advanced'] = '高级模å¼'; $labels['newuser'] = '新增æ¡ç›®'; +$labels['editperms'] = '编辑æƒé™'; $labels['actions'] = 'æƒé™è®¾ç½®...'; $labels['anyone'] = '所有用户(任何人)'; $labels['anonymous'] = 'æ¥å®¾(匿å)'; @@ -36,6 +38,7 @@ $labels['aclt'] = 'åˆ é™¤æ¶ˆæ¯'; $labels['acle'] = '清除'; $labels['aclx'] = 'åˆ é™¤æ–‡ä»¶å¤¹'; $labels['acla'] = '管ç†'; +$labels['acln'] = '注释消æ¯'; $labels['aclfull'] = '全部控制'; $labels['aclother'] = '其它'; $labels['aclread'] = '读å–'; @@ -54,6 +57,7 @@ $labels['shortaclt'] = 'åˆ é™¤'; $labels['shortacle'] = '清除'; $labels['shortaclx'] = 'åˆ é™¤æ–‡ä»¶å¤¹'; $labels['shortacla'] = '管ç†'; +$labels['shortacln'] = '注释'; $labels['shortaclother'] = '其他'; $labels['shortaclread'] = '读å–'; $labels['shortaclwrite'] = '写入'; @@ -63,14 +67,23 @@ $labels['longaclr'] = '该文件夹å¯è¢«æ‰“开阅读'; $labels['longacls'] = '已读消æ¯æ ‡è¯†å¯ä»¥æ”¹å˜'; $labels['longaclw'] = 'é™¤å·²è¯»å’Œåˆ é™¤è¡¨ç¤ºå¤–å…¶ä»–æ¶ˆæ¯æ ‡è¯†å¯ä»¥æ”¹å˜'; $labels['longacli'] = '消æ¯å¯è¢«æ ‡è®°ï¼Œæ’°å†™æˆ–å¤åˆ¶è‡³æ–‡ä»¶å¤¹ä¸'; -$labels['longaclk'] = '文件夹å¯è¢«åˆ›å»º(或改å)于现有目录下'; +$labels['longaclp'] = '消æ¯å¯ä»¥å‘到æ¤æ–‡ä»¶å¤¹'; +$labels['longaclc'] = '文件夹å¯è¢«åˆ›å»º(或改å)于现有目录下'; +$labels['longaclk'] = '文件夹å¯ç›´æŽ¥åœ¨æ¤ç›®å½•ä¸‹åˆ›å»ºï¼ˆæˆ–改å)'; $labels['longacld'] = '消æ¯å·²åˆ é™¤æ ‡è¯†å¯ä»¥æ”¹å˜'; +$labels['longaclt'] = '消æ¯å·²åˆ é™¤æ ‡è¯†å¯ä»¥æ”¹å˜'; $labels['longacle'] = '消æ¯å¯è¢«æ¸…除'; $labels['longaclx'] = '该文件夹å¯è¢«åˆ 除或é‡å‘½å'; $labels['longacla'] = '文件夹访问æƒé™å¯è¢«ä¿®æ”¹'; +$labels['longacln'] = '消æ¯å…±äº«å…ƒæ•°æ®ï¼ˆæ³¨é‡Šï¼‰å¯ä»¥æ”¹å˜'; +$labels['longaclfull'] = '完全控制,包括文件夹管ç†'; $labels['longaclread'] = '该文件夹å¯è¢«æ‰“开阅读'; $labels['longaclwrite'] = '消æ¯å¯è¢«æ ‡è®°ï¼Œæ’°å†™æˆ–å¤åˆ¶è‡³æ–‡ä»¶å¤¹ä¸'; $labels['longacldelete'] = 'ä¿¡æ¯å¯è¢«åˆ 除'; +$labels['longaclother'] = '其他访问æƒé™'; +$labels['ariasummaryacltable'] = '访问æƒé™åˆ—表'; +$labels['arialabelaclactions'] = '列出æ“作'; +$labels['arialabelaclform'] = '访问æƒé™ä»Ž'; $messages['deleting'] = 'åˆ é™¤è®¿é—®æƒé™ä¸â€¦'; $messages['saving'] = 'ä¿å˜è®¿é—®æƒé™ä¸â€¦'; $messages['updatesuccess'] = 'æˆåŠŸä¿®æ”¹è®¿é—®æƒé™'; diff --git a/plugins/acl/skins/classic/templates/table.html b/plugins/acl/skins/classic/templates/table.html index 5c4d2d8a..f19998cf 100644 --- a/plugins/acl/skins/classic/templates/table.html +++ b/plugins/acl/skins/classic/templates/table.html @@ -24,7 +24,7 @@ - +diff --git a/plugins/acl/skins/larry/templates/table.html b/plugins/acl/skins/larry/templates/table.html index 2854524d..a4399ab9 100644 --- a/plugins/acl/skins/larry/templates/table.html +++ b/plugins/acl/skins/larry/templates/table.html @@ -19,7 +19,7 @@