Compare commits

...

3985 Commits

Author SHA1 Message Date
johndoh 279ae66120
Move all message list entry generation to client side (#7287)
Always return cols required for widescreen message list and control layout only on JS side
4 years ago
johndoh 13a066b24f
Elastic: small improvement to splitter code (#7435) 4 years ago
William Rankin 40250563e3
Specify 13px font-size for .html-editor > textarea (#7447)
This is a followup to PR #7375 which set the plaintext message area from 14px to 13px for greater consistency with Classic and Larry skins. With that PR I neglected to consider the font size in the compose screen, which should probably match the 13px of the message area, but currently inherits 14px from the html element which causes an odd jump in font size when replying to a message.

Reference #7375
4 years ago
Aleksander Machniak b22f1c9a1b Add skip-empty option to get_edit_field() (#7444) 4 years ago
Aleksander Machniak ec2e713ecb Fix problem with forwarding inline images attached to messages with no HTML part (#7414) 4 years ago
Gianluca Giacometti 4ada2c3f13
Use more strict selector (#7452) 4 years ago
Aleksander Machniak 98881a0cbd Small code simplification 4 years ago
Aleksander Machniak 1c76c8440f Elastic: Remove unused color variables 4 years ago
Aleksander Machniak 731be15d46 Elastic: Fix context menu (paste) on the recipient input (#7431) 4 years ago
Aleksander Machniak 9ee1f4b636 Merge branch 'master' of github.com:roundcube/roundcubemail 4 years ago
Aleksander Machniak 51eb8a6a68 Update changelog
[skip ci]
4 years ago
Aleksander Machniak 9508acf249 Update changelog
[skip ci]
4 years ago
Aleksander Machniak 30610e867e Merge branch 'fix_encode' of https://github.com/shirosaki/roundcubemail into shirosaki-fix_encode
Refactor the new code
4 years ago
johndoh 9dbe666d4c
Allow skins to define which layout options they support (#7235) 4 years ago
Aleksander Machniak 86d34960c8 Optimize image size 4 years ago
Théo 61185b9362
Update roundcube_logo.png (#7357) 4 years ago
William Rankin 13b03c3953
Specify 13px font-size for .message-part div.pre (#7375)
Default monospace fonts are larger than proportional fonts and so make the plain text message look oddly large, upsetting the aesthetics of the page.
4 years ago
Kent Varmedal b4dabff26c
Add newline when writing logs to stdout (#7418)
Add newline on the end of the line when printing to stdout.
4 years ago
Aleksander Machniak 278cf3c18e Increase maximum size of contact jobtitle and department fields to 128 characters
[skip ci]
4 years ago
Aleksander Machniak e9c592a6e8 Fix bug where subfolders of special folders could have been duplicated on folder list 4 years ago
Aleksander Machniak bb06645b8f Update changelog
[skip ci]
4 years ago
Aleksander Machniak 9b8ed0dfeb Update changelog
[skip ci]
4 years ago
Aleksander Machniak 218cd2ab4a Elastic: Support space-separated email addresses in recipient input (#6529) 4 years ago
Aleksander Machniak 4e00237cc4 Allow opening application/octet-stream attachments according to filename extension (#6821) 4 years ago
Aleksander Machniak eaebae1e54 Fix bug where activation of forward/vacation rule could activate a wrong script (#7423)
Also should fix bug where forward/vacation rule could end up being duplicated (#7349)
4 years ago
Aleksander Machniak 77174ff9ff Fix test after change for #7413 4 years ago
Aleksander Machniak 25772702ac Fix so anchor tags without href attribute are not modified (#7413) 4 years ago
Aleksander Machniak af0e98759d Installer: Fix regression in SMTP test section (#7417) 4 years ago
Aleksander Machniak cd76046237 Update changelog
[skip ci]
4 years ago
Aleksander Machniak 46d3cae2ff Security: Fix cross-site scripting (XSS) via malicious XML attachment 4 years ago
Aleksander Machniak bda02002de Security: Better fix for CVE-2020-12641 4 years ago
Aleksander Machniak ecabb1e667 Security: Fix XSS issue in template object 'username' (#7406) 4 years ago
Aleksander Machniak 31249d932d Security: Fix couple of XSS issues in Installer (#7406) 4 years ago
Aleksander Machniak e05c69afab Fix bug where PDF attachments marked as inline could have not been attached on mail forward (#7382) 4 years ago
Aleksander Machniak 6436c22d2d Elastic: Fix aspect ratio of a contact photo in mail preview (#7339) 4 years ago
Aleksander Machniak da2bb8af6d Fix error when user-configured skin does not exist anymore (#7271)
We fallback to the system skin not the default one.
4 years ago
Aleksander Machniak f6586c7cf7 Fix PHP warning: count(): Parameter must be an array or an object... in ID command handler (#7392) 4 years ago
Aleksander Machniak 82ee69df15 Update changelog
[ci skip]
4 years ago
johndoh 34a0af8964
Allow array in smtp_host config (#7296) 4 years ago
Aleksander Machniak 30d31c323b Improve UX on custom header input (#7207) 4 years ago
Aleksander Machniak a47c558df4 Fix typo 4 years ago
Aleksander Machniak 14a8a99ee2 Update changelog
[ci skip]
4 years ago
Christopher Gurnee 40ecd47f90 Show Encrypt button w/Mailvelope, even if disabled
Before the Elastic skin would keep it hidden until enabled, closes #7353
4 years ago
Aleksander Machniak 06a1964ef6 Fix changelog
[ci skip]
4 years ago
Christopher Gurnee 24d0cf5d34 Let Mailvelope use sender's address to find pubkeys to check signatures 4 years ago
Christopher Gurnee c3d4598985 Add missing \'s to regexes in rcube_check_email() 4 years ago
Aleksander Machniak 7dcba95605 Update changelog
[ci skip]
4 years ago
vaaguirre 9bec8dd506
Fix issue with Modoboa driver for password plugin (#7372)
Was having trouble with updating a password with the Modoboa API (1.9.1). API responded with an error message but 200 HTTP status code, so roundcube displayed a success message even though the password wasn't being updated. Added a line to include a required field in the update request.
4 years ago
Aleksander Machniak 663f7a8c58 Fix default keyservers (use keys.openpgp.org), add note about CORS (#7373, #7367) 4 years ago
johndoh 3af6303ad7
Remove depreciated jquery.trim function (#7371) 4 years ago
Aleksander Machniak 35c29be9b2 Remove use of ext-iconv 4 years ago
Aleksander Machniak 87f42677c2 Don't resize alert and confirm dialogs 4 years ago
Aleksander Machniak 7ead0bb227 Fix empty attachment size handling (#7370) 4 years ago
Aleksander Machniak 014659b600 CS fixes, mostly around undefined variables 4 years ago
Aleksander Machniak f0f6234a1a Use merge instead of append (#7341) 4 years ago
Aleksander Machniak 87ca7a09dc Fix missing flag indication on collapsed thread in Larry and Elastic (#7366) 4 years ago
Aleksander Machniak 377239fa8e Display a warning and do not try to open empty attachments (#7332) 4 years ago
Aleksander Machniak a2ee9f7eab Merge branch 'master' of github.com:roundcube/roundcubemail 4 years ago
Aleksander Machniak 1aebb1985c Fix recipient rename/delete after drag'n'drop, also keep the order 4 years ago
Aleksander Machniak 09848515fe Merge branch 'master' of https://github.com/chilek/roundcubemail into chilek-master 4 years ago
Sander Nilsen 0efa899d6c
Grammar correction (#7346) 4 years ago
Aleksander Machniak 55343ffd7d Update changelog
[ci skip]
4 years ago
johndoh ec86e3cb7f
Markasjunk: Fix regression in jsevent driver #7361 (#7365) 4 years ago
Aleksander Machniak 8fac36e2c2 Fix so the database setup description is compatible with MySQL 8 (#7340)
[ci skip]
4 years ago
Aleksander Machniak 3d2bb47f8d Clarify des_key length requirement (#7350)
[ci skip]
4 years ago
Aleksander Machniak c39081b6a1 Fix bug in extracting required plugins from composer.json that led to spurious error in log (#7364) 4 years ago
Aleksander Machniak 12d4705935 Update changelog
[ci skip]
4 years ago
Tomasz Chiliński 0b09b24a55
enhancement: elastic skin: allow to drag & drop addresses between address input fields during compose message (code simplification) 4 years ago
Aleksander Machniak 8344f07d7f Fix CSRF bypass that could be used to log out an authenticated user (#7302) 4 years ago
Aleksander Machniak 219e353ac1 Fix local file inclusion (and code execution) via crafted 'plugins' option 4 years ago
Aleksander Machniak 4951d6603a Fix remote code execution via crafted 'im_convert_path' or 'im_identify_path' settings 4 years ago
Aleksander Machniak 87e4cd0cf2 Fix XSS issue in handling of CDATA in HTML messages 4 years ago
Tomasz Chiliński 8db9b8b6e2
enhancement: elastic skin: allow to drag & drop addresses between address input fields during compose message (code simplification) 4 years ago
Tomasz Chiliński 682cea5cc5
enhancement: elastic skin: allow to drag & drop addresses between address input fields during compose message (code simplification) 4 years ago
Tomasz Chiliński aae1189dbf
enhancement: elastic skin: allow to drag & drop addresses between address input fields during compose message (update source list address input field to) 4 years ago
Tomasz Chiliński 6f8663f7ef
enhancement: elastic skin: allow to drag & drop addresses between address input fields during compose message 4 years ago
Aleksander Machniak 6b5fc8db95 Fix so Print button for PDF attachments works on Firefox >= 75 (#5125) 4 years ago
Aleksander Machniak b35b5a1a26 Fix typo 4 years ago
Aleksander Machniak bf34e8cf9c Fix performance issue of parsing big HTML messages by disabling HTML5 parser for these (#7331) 4 years ago
Aleksander Machniak 36532345df Make install-jsdeps.sh script working without the 'file' program installed (#7325) 4 years ago
Aleksander Machniak 30b5803ee4 Fix bug where some message/rfc822 parts could not be attached on forward (#7323) 4 years ago
Aleksander Machniak cb9b22dcc1 Fix characters encoding in group rename input after group creation/rename (#7330) 4 years ago
Aleksander Machniak 3e9aefceef Mailvelope: Fix bug where recipients with name were not handled properly in mail compose (#7312) 4 years ago
Aleksander Machniak 15ee34a438 Revert "Fix bug where session was destoryed with window close (#7251)"
This reverts commit 32fac136db.
4 years ago
Aleksander Machniak 4a5efe09f9 Fix bug where a special folder couldn't be created if a special-use flag is not supported (#7147) 4 years ago
Aleksander Machniak 43456db922 Fix so imap error message is displayed to the user on folder create/update (#7245) 4 years ago
Aleksander Machniak 32fac136db Fix bug where session was destoryed with window close (#7251) 4 years ago
Aleksander Machniak 9ddb57f5bb Elastic: Restrict logo size in print view (#7275) 4 years ago
Aleksander Machniak 679cb1833c Merge branch 'zipdownload' of https://github.com/johndoh/roundcubemail into johndoh-zipdownload 4 years ago
Aleksander Machniak ae687d7a7a Update changelog 4 years ago
Aleksander Machniak cb8c07843b Fix marking as spam/ham on moving messages with Move menu (#7189) 4 years ago
PhilW ace991946f zipdownload: enable menu options when menu is opened 4 years ago
Aleksander Machniak e0b56aeb4d Fix PHP warning for real (#7206) 4 years ago
Aleksander Machniak 7d97c5b215 Merge branch 'markasjunk-select' of https://github.com/johndoh/roundcubemail into johndoh-markasjunk-select 4 years ago
johndoh 77e2ee9c9e
Add some public methods to elastic ui.js (#7240) 4 years ago
Aleksander Machniak c2b12d2b2b Elastic: Fix color of a folder with recent messages (#7281) 4 years ago
Aleksander Machniak e84dc4c385 Fix literals handling again 4 years ago
Aleksander Machniak b771cccbaa Update changelog
[skip ci]
4 years ago
dessert1 e66ffae856
Fix handling keyservers configured with protocol prefix (#7295)
`|^[a-z]://|` matches only single-character protocol shortnames, to correctly exclude e.g. `hkps://` the expression should be `|^[a-z]+://|` instead.
4 years ago
Aleksander Machniak 3d4a02a3a6 Fix bug where multiple images in a message were replaced by the first one on forward/reply/edit (#7293) 4 years ago
Aleksander Machniak 2965e60c1f Support many string literals in a "line response", deduplicate code 4 years ago
Aleksander Machniak f9c84e2646 Fix string literals handling in IMAP STATUS (and various other) responses (#7290) 4 years ago
Aleksander Machniak 7df358d64e Fix internal cache use in rcube_imap::get_message()
Two folders, personal and shared, can contain the same UIDs, so
we should check UID and folder name when dealing with internally
cached message.
4 years ago
Aleksander Machniak f0ec65ee70 Fix labels again 4 years ago
Christoph Langguth 81839093bb
Bugfix in password/pwned driver result parsing (#7288) 4 years ago
Aleksander Machniak 005da225f6 Merge branch 'master' of github.com:roundcube/roundcubemail 4 years ago
Aleksander Machniak c26ba1ee5d Improve some labels 4 years ago
johndoh 81dcf4a7de
Allow possibility to define the container of a table with a fixed header (#7239) 4 years ago
Aleksander Machniak 84505edac5 Update changelog
[ci skip]
4 years ago
johndoh 11aa9633b1
Improvements to options menu link template object (#7237) 4 years ago
Aleksander Machniak 623a642457 Update changelog, fix some localization labels 4 years ago
Aleksander Machniak 68350bd385 Merge branch 'master' of https://github.com/mildred/roundcubemail into mildred-master 4 years ago
Aleksander Machniak 3c8b270d8d Small code improvements, update changelog 4 years ago
Aleksander Machniak be7770b5a9 Merge branch 'password_pwned' of https://github.com/clangguth/roundcubemail into clangguth-password_pwned 4 years ago
Christoph Langguth a70baca3ae Refactoring of pwned passwords plugin, taking into account alecpl's comment. 4 years ago
johndoh 97732d5de7
Add selection element to theads as well as tbodies (#7238) 4 years ago
Aleksander Machniak dc1ce546b9 Fix sql syntax error introduced in last commit 4 years ago
Aleksander Machniak 2c1a22d283 Bring back BINARY for some columns after switch to utf8mb4 charset (#7277) 4 years ago
Aleksander Machniak 0fbd184294 Fix cursor position after inserting a group to a recipient input using autocompletion (#7267)
... for larry and classic skins.
4 years ago
Aleksander Machniak b3b5b9665d Fix regression in testing database schema on MSSQL (#7227) 4 years ago
Aleksander Machniak a748214595 Fix so button label in Select image/media dialogs is "Close" not "Cancel" (#7246) 4 years ago
Aleksander Machniak e5247e855e Fix missing contact display name in QR Code data (#7257) 4 years ago
Aleksander Machniak d194b238c7 Support RFC8438: IMAP STATUS=SIZE - for faster folder size calculation (#7269) 4 years ago
Christoph Langguth 370789c8c9 password plugin: add pwned passwords strength driver 4 years ago
Mildred Ki'Lya 88577119d7 Add new archival types to keep the folder structure
Add archival type folderyear and foldermonth to keep the original folder
structure after a YYYY or a YYYY/MM prefix.
4 years ago
Aleksander Machniak 088714619e Fix scroll-jump in MS Edge when using autoresizeable textarea (#7230) 4 years ago
Aleksander Machniak f452d33d44 Update changelog for #7261 4 years ago
Aleksander Machniak b2391417b3 Tests: Add browser test for #7231 4 years ago
Aleksander Machniak 68c8ee0a2b Elastic: Fix recipient input bug when using click to select a contact from autocomplete list (#7231) 4 years ago
Aleksander Machniak b7410ffe89 Use mySQL charset in connection string instead of SET NAMES (#7232)
And switch to utf8mb4 as it is what we're using right now in db schema.
4 years ago
Aleksander Machniak 80a244756d Tests: Add couple of HTML editor tests (including bug #7230) 4 years ago
Aleksander Machniak 38d6659384 Elastic: Fix text selection with Shift+PageUp and Shift+PageDown in plain text editor when using Chrome (#7230) 4 years ago
Aleksander Machniak e58c6547ca Add release mark
[skip ci]
4 years ago
Aleksander Machniak 770d818dd9 Fix undefined variable 4 years ago
Aleksander Machniak 4b219792a7 Tests: Add browser tests for attachment_reminder plugin 4 years ago
Aleksander Machniak f94b871aa6 Tests: Add browser tests for Markasjunk plugin 4 years ago
Aleksander Machniak db5ab6d3f6 Fix identity selection on reply when both sender and recipient addresses are included in identities (#7211) 4 years ago
PhilW 65a6a511a6 markasjunk: handle select all case (#7206) 4 years ago
Aleksander Machniak f2328bbe6b Add note about innodb_large_prefix=true requirement (#7212)
[skip ci]
4 years ago
Aleksander Machniak b80171f37b Fix bug where original attachments with Content-Id were attached to the message on reply (#7122)
All Content-Disposition:inline parts that aren't used in the body are ignored on reply/forward/edit.
4 years ago
Aleksander Machniak 4e2e876101 Update changelog 4 years ago
Paul J. Dorn 305c9355ee
Fix using unix:///path/to/socket.file in memcached driver (#7210)
off by one when stripping the memcache (sans d) compatible AF_UNIX prefix
4 years ago
Aleksander Machniak 32b37fba33 Update localization 4 years ago
Aleksander Machniak ea2d0ad458 Enigma: Fix bug where "Send unencrypted" button didn't work in Elastic skin (#7205) 4 years ago
Aleksander Machniak b606d81cdf MySQL: Use utf8mb4 charset and utf8mb4_unicode_ci collation (#6535, #7113)
Fixes support for utf8 emoji in html signature.
4 years ago
MrSorcus 706912e534
Fix typo (#7203) 4 years ago
Aleksander Machniak 50d6ea30e0 Support for language codes up to 16 chars long (e.g. es-419) in database schema (#6851) 4 years ago
Aleksander Machniak 60c8dd2e23 Fix regression where using an absolute path to SQLite database file on Windows didn't work (#7196) 4 years ago
Aleksander Machniak 0b02e87afe Fix some strict mode warnings 4 years ago
Aleksander Machniak fe796d4040 Remove useless pass-by-reference 4 years ago
Aleksander Machniak 3478b002f8 Enigma: Fix incorrect encrypted mail structure (boundary) with Mail_Mime >= 1.10.5 4 years ago
Aleksander Machniak 4114dc932d Fix bug where it wasn't possible to save flag actions (#7188)
Display proper error when no flag is selected.
4 years ago
Aleksander Machniak a075616fb2 Tests: Add browser tests for Zipdownload plugin 4 years ago
Aleksander Machniak d594ce2483 Tests: Add browser tests for Server Settings section 4 years ago
Aleksander Machniak d340f18295 Fix display issues with mail subject that contains line-breaks (#7191) 4 years ago
Aleksander Machniak 8080eb2c71 Tests: Fix database locking bug 4 years ago
Aleksander Machniak 84aa5d93f1 Tests: Added browser tests for Archive plugin 4 years ago
Aleksander Machniak c6392f2168 Markasjunk: Fix bug where marking as spam/ham didn't work on moving messages with drag-and-drop (#7137) 4 years ago
Aleksander Machniak 6c1e8e1efe Tests: Add Identities tests 4 years ago
Aleksander Machniak cbcebad9c1 Tests: Add Responses edit test 4 years ago
Eli Schiff b6db3e4ad7 Fixed incorrect typeof comparison (#7186) 4 years ago
Aleksander Machniak bdf0a6539e Relaxed domain name validation for extended TLDs support (#5588) 4 years ago
Aleksander Machniak 8793baa006 Update changelog
[skip ci]
4 years ago
Aleksander Machniak 97e6065897
Extract RFC2231 attachment name from message headers (#6729) (#6783)
* Extract RFC2231 attachment name from message headers (#6729)
* Workaround for attachments with invalid content type (e.g. PDF) (#6816)
4 years ago
Aleksander Machniak 1613f3ab4c
INSERT OR REPLACE implementation (#6771)
For now with support in postgres and mysql databases.
For now used in rcube_cache, rcube_imap_cache and enigma plugin
4 years ago
Aleksander Machniak e4281ae6d4 Tests: Try to fix timing issue 4 years ago
Aleksander Machniak d1b61410fc Tests: Add Dialog component 4 years ago
Aleksander Machniak d979aa0584 Tests: Add more browser tests for Responses 4 years ago
Aleksander Machniak 1376b5a647 Fix bug where message parts with no Content-Disposition header and no name were not listed on attachments list (#7117) 4 years ago
Aleksander Machniak b536e18d97 Tests: Add contacts print test 4 years ago
Aleksander Machniak 2f20f43cbb Tests: Change structure of tests 4 years ago
Aleksander Machniak 93519df826 Elastic: Fix disappearing sidebar in mail compose after clicking Mail button
Elastic: Fix incorrect aria-disabled attribute on Mail taskmenu button in mail compose
4 years ago
Aleksander Machniak 689c761026 Enigma: Simplify and fix handling of IDN with not all parts being punny-coded 4 years ago
Aleksander Machniak e89376709c Enigma: Display IDN domains of key users and identities in UTF8 4 years ago
Aleksander Machniak 6e63db6487 Merge branch 'enigma_idn_fix' of https://github.com/MaxBosse/roundcubemail into MaxBosse-enigma_idn_fix 4 years ago
Aleksander Machniak c2c85b0a76 Tests: Fix Print test on mobile, make GreenMail quiet on folder deletion 4 years ago
Aleksander Machniak 2037f2612b Tests: Fix testing with create_default_folders=true 4 years ago
Aleksander Machniak b6e75ebea7 Travis: Use bigger GreenMail startup timeout 4 years ago
Aleksander Machniak c138567ab5 Support 'greenmail' as an imap vendor label, don't call ID when not supported 4 years ago
Aleksander Machniak 4258acf57f Tests: Return proper exit code on error from bootstrap 4 years ago
Max Bosse 3faa976fc8 Fix creation of pgp-keys for IDN emails 4 years ago
Aleksander Machniak 5005c6c3e3 Travis: Fix/Update greenmail download location 4 years ago
Aleksander Machniak 5a6606a245 Tests: Add folder creation test 4 years ago
Aleksander Machniak 4f47ac0405 Fix bug where files in skins/ directory were listed on skins list (#7180) 4 years ago
Aleksander Machniak 700031b3b7 Elastic: Fix non-working folder subscription checkbox for newly added folders (#7174) 4 years ago
Aleksander Machniak 62fb938260 Tests: Add browser test for mail print and bug #7169 4 years ago
Aleksander Machniak 38116c1ae5 Merge branch 'master' of https://github.com/ssodk/roundcubemail into ssodk-master 4 years ago
Aleksander Machniak 5c73848499 Tests: Add Browser::assertElementsCount() helper 4 years ago
Aleksander Machniak c2e348067e Add browser tests for "more recipients" dialog 4 years ago
Aleksander Machniak 47089e9265 Elastic: Fix missing Close button in "more recipients" dialog 4 years ago
Aleksander Machniak f93857fbab Elastic: Fix text selection in recipient inputs (#7129) 4 years ago
ssodk 10ec313034
Update func.inc
Remove duplicates in print-view when the recipient list is expanded
4 years ago
Aleksander Machniak 9311c49cf4 Fix unexpected error message when mail refresh involves folder auto-unsubscribe (#6923) 4 years ago
Aleksander Machniak 470e91e615 Tests: Add forgotten data file 4 years ago
Aleksander Machniak c4f114fa84 Add browser tests for mail preview 4 years ago
Aleksander Machniak 7d2b4f8d15 Enigma: Add missing localization labels used in Larry skin 4 years ago
Aleksander Machniak d8ebf290b2 Add note about Windows and symlinks (#7151) 4 years ago
Aleksander Machniak b26340c271 Fix typo 4 years ago
Aleksander Machniak 646e0b99ea Enigma: Fix so using list checkbox selection does not load the key preview frame 4 years ago
Aleksander Machniak e3556986a1 Fix PHP Warning: array_filter() expects parameter 1 to be array, null given in subscription_options plugin (#7165)
.. when IMAP connection fails
4 years ago
Aleksander Machniak 355ff138fd Enigma: Fix so key list selection is reset when opening key creation form (#7154) 4 years ago
Aleksander Machniak 5d025609d3 Tests: Add browser tests for contact groups 4 years ago
Aleksander Machniak a646b13715 Try to fix flaky test 4 years ago
Aleksander Machniak 31b0275573 Add basic browser tests for message menu and open in new window feature 4 years ago
Aleksander Machniak a9abe62d58 Fix regression where "Open in new window" action didn't work (#7155) 4 years ago
Aleksander Machniak fded360d84 Fix so messages in threads with no root aren't displayed separately (#4999) 4 years ago
Aleksander Machniak 3cab0ad493 Update changelog
[skip ci]
4 years ago
Aleksander Machniak 0eb4674216
Managesieve: Allow display name with email address in vacation :from field (#6760) (#6763) 4 years ago
Aleksander Machniak 1b376517e8 Update changelog
[skip ci]
4 years ago
johndoh 51a9dd631f Add support for SameSite cookie attribute (req PHP >= 7.3.0) (#6772) 4 years ago
Aleksander Machniak 5236f40823 Update changelog
[skip ci]
4 years ago
Aleksander Machniak e8e8c31eb3
Improve namespace roots presentation (#5012) (#6789)
- Display a special icon for other users and shared namespace roots (Elastic)
- Change folders sorting so shared/other users namespaces are listed last

Fixes #5012.
4 years ago
Aleksander Machniak 245e1aa9f9 Update changelog
[skip ci]
4 years ago
johndoh d51352b9cb Add support for nested if conditions (#6829)
* add support for nested if conditions
* add tests for condition parsing in templates
* make [space][slash] ending of condition objects optional (#6954)
4 years ago
Aleksander Machniak 530b53d92f Update changelog 4 years ago
jelle van der Waa 11e5c1af4f Password: Make chpass-wrapper.py Python 3 compatible (#7135)
Remove the ", e" as the exception is never printed and this makes it
Python 3 compatible as well

Closes: #7118
4 years ago
Théo 5a1a33752e Updte copyright year in About (#7138) 4 years ago
Aleksander Machniak 094da1e653 Elastic: Fix bug where it was possible to switch editor mode when 'htmleditor' was in 'dont_override' (#7143) 4 years ago
Aleksander Machniak e2bd4548ed Tests: Move logon helpers to the App component 4 years ago
Aleksander Machniak 2c0dd762ed Update changelog
[skip ci]
4 years ago
Aleksander Machniak cf8277ea3e Tests: Try to fix test that fails on Travis, but not on my setup 4 years ago
Aleksander Machniak f72054e761 Tests: Create Browser and Components for better code structure 4 years ago
Aleksander Machniak 1edd7a4b3f Tests: Add functional tests for contacts export 4 years ago
Aleksander Machniak 57162ef481 Make install.php accept long Chrome version string
[skip ci]
4 years ago
Aleksander Machniak 421dbf5271 Tests: Mantion TESTS_MODE in README
[skip ci]
4 years ago
Aleksander Machniak 564287d6c8 Tests: Try to fix failing toolbar menu tests in phone mode 4 years ago
Aleksander Machniak accb5f63e2 Travis: Fix run.sh 4 years ago
Aleksander Machniak 9a0e71ddee Travis: Enable in-browser tests in phone and tablet mode 4 years ago
Aleksander Machniak 934382c91f Make testing in all phone/tablet/desktop modes of Elastic possible 4 years ago
Aleksander Machniak a32e2b4c6f Addressbook -> Contacts 4 years ago
Aleksander Machniak 59e1efb595 Add more in-browser tests 4 years ago
Aleksander Machniak 7abd4f2c15 Travis: Cleanup 4 years ago
Aleksander Machniak 5defccb919 Travis: Run browser tests on bionic with node-less 4 years ago
Aleksander Machniak 7911c75b1e Travis: Corrected paths 4 years ago
Aleksander Machniak ef0d23241a Travis: Run in-browser tests not in devel_mode 4 years ago
Aleksander Machniak f32b9ae51d Travis: Move install commands to .ci/install.sh 4 years ago
Aleksander Machniak 581bc6886b Travis: Install js deps for in-browser tests 4 years ago
Aleksander Machniak 724f5c740c Travis: Install proper version of WebDriver 4 years ago
Aleksander Machniak 31b33c0f39 Don't require config.inc.php when only config-<env>.inc.php exists 4 years ago
Aleksander Machniak 15885055ca Travis: Try to debug why in-browser tests do not work 4 years ago
Aleksander Machniak 9d1e4b4828 Travis: Fix syntax error 4 years ago
Aleksander Machniak 87304c29d1 Travis: Fix in-browser tests setup 4 years ago
Aleksander Machniak 53a111f8c3 Travis: Debugging setup.sh script 4 years ago
Aleksander Machniak 1f656e5a07 Travis: In-browser tests with GreenMail server 4 years ago
Aleksander Machniak 895b6f54f3 Add more in-browser tests 4 years ago
Aleksander Machniak a88798ab18 We don't need index-test.php anymore 4 years ago
Aleksander Machniak 7ebc159780 Travis: Remove in-browser tests
Yeah, we'd need to setup a test account on some IMAP server which
would be publicly available. I'm not sure we can do that.
Also, we'd need to add config-tests.inc.php file and maybe use sqlite database.
4 years ago
Aleksander Machniak 0ea8e9c289 Travis: Try in-browser tests on PHP 7.3
as PHP 7.4 does not yet have php-zip extension
4 years ago
Aleksander Machniak dd7b51bcd3 Travis: Fix syntax error 4 years ago
Aleksander Machniak d67b288cbc Travis: Fix syntax error 4 years ago
Aleksander Machniak eac409ac4a Travis: Enable in-browser tests 4 years ago
Aleksander Machniak 0b9ff6426e Rewrite Selenium tests with use of laravel/dusk 4 years ago
Aleksander Machniak 47d9ed6d0c Add support for PHPUnit 6 and 7 (#6870)
Fixes composer dependencies: Package phpunit/phpunit-mock-objects is abandoned

We cannot support v8 yet because of errors like:
Declaration of MailFunc::setUp() must be compatible with PHPUnit\Framework\TestCase::setUp(): void
It would require dropping PHP < 7.1 support.
4 years ago
Aleksander Machniak ad84b2df3f Update localization 5 years ago
Aleksander Machniak f610707554 Skip install-jsdeps.sh execution when using "complete" package to update "custom" installation (#7087) 5 years ago
Aleksander Machniak df2acc5eb8 Elastic: Fix hidden list widget on mobile/tablet when selecting folder while search menu is open (#7120) 5 years ago
Aleksander Machniak 9bb95471bf Merge branch 'master' of github.com:roundcube/roundcubemail 5 years ago
Aleksander Machniak 226097fc3f Markasjunk: Fix marking more than one message as spam/ham with email_learn driver (#7121) 5 years ago
Aleksander Machniak 52caed0d66 Remove optional argument leftover 5 years ago
Aleksander Machniak 37cfa0a43b Fix malformed characters in HTML message with charset meta tag not in head (#7116) 5 years ago
Aleksander Machniak 5f30dc68a3 Fix so number of contacts in a group is not limited to 200 when redirecting to mail composer from Contacts (#6972)
Use max_group_members with fallback to 999 if unset.
5 years ago
Aleksander Machniak eadbe91c92 Elastic: Simple search in pretty selects (#7072) 5 years ago
Aleksander Machniak 29defb82e9 Fix bug where next message wasn't displayed after delete in List mode (#7096) 5 years ago
Aleksander Machniak cf90c69ad7 Fix bug where 'text' attribute on body tag was ignored when displaying HTML message (#7109) 5 years ago
Aleksander Machniak 545ea62dfc Fix bug where listing tables in PostgreSQL database with db_prefix didn't work (#7093) 5 years ago
Aleksander Machniak 34e2507aac Fix so contact's organization field accepts up to 128 characters (it was 50)
Also assistant, manager, spouse, website and im
5 years ago
Aleksander Machniak 93c0e02f07 Plugin API: Make actionbefore, before<action>, actionafter and after<action> events working with plugin actions (#7106) 5 years ago
Aleksander Machniak d8d29241a6 Remove redundant spellcheck_langs env variable 5 years ago
Aleksander Machniak 0aa5eca1fd Fix bug where 'skins_allowed' option didn't enforce user skin preference (#7080) 5 years ago
Aleksander Machniak db4bf5573e Travis: Ignore endroid/qr-code in a try to make PHP 7.4 tests working
Travis' PHP 7.4 build does not have php-gd available yet.
5 years ago
Aleksander Machniak a5b15da155 Fix so displayed maximum attachment size depends also on 'max_message_size' (#7105) 5 years ago
Aleksander Machniak 0b45c3c6b0 Fix matching multiple X-Forwarded-For addresses with 'proxy_whitelist' (#7107) 5 years ago
Aleksander Machniak df7b76b023 Travis: Add PHP 7.4 5 years ago
Aleksander Machniak a51beef56c Travis: Remove ppc64le 5 years ago
Aleksander Machniak f3381f12d3 Travis: Move ppc64le arch to the matrix, test it only with the most recent PHP version 5 years ago
Aleksander Machniak 3fda927858 Try tests on different cpu architectures 5 years ago
Sebastiaan Lokhorst 259b7fa065 Explain difference between ssl:// and tls:// for default_host (#7099) 5 years ago
Hiroshi Shirosaki a335102e47 Fix email address name encoding with ISO-2022-JP
Convert to UTF-8 to split addresses correctly.
Base64 encode ISO-2022-JP name.
Add a unit test.
5 years ago
Hiroshi Shirosaki d9667295d8 Fix wordwrap with ISO-2022-JP
A message with ISO-2022-JP-MS characters currupts by wordwrap.
Use ISO-2022-JP-MS charset in wordwrap.
Add a unit test.
5 years ago
Hiroshi Shirosaki 869d1d1eaf Fix ISO-2022-JP-MS encoding convert
ISO-2022-JP-MS characters are removed by iconv on sending mail.
Use mbstring functions on sending.
Add a unit test.
5 years ago
Aleksander Machniak 8471930652 Add 'filter' to required extensions 5 years ago
Aleksander Machniak 5b253fb498 Elastic: Fix contrast of warning toasts (#7058)
Add some color variables and slightly make bg-color stronger on "box" messages.
5 years ago
Aleksander Machniak 90781bff3b Add aria-label to list navigation toolbars 5 years ago
Aleksander Machniak 58aea024b4 Improve style tag handling in TinyMCE (#7088) 5 years ago
Aleksander Machniak 94c795b539 Fix bug where HTML reply could add an empty line with extra indentation above the original message (#7088) 5 years ago
Aleksander Machniak e7cb9bf604 Password: Fix kpasswd and smb drivers' double-escaping bug (#7092) 5 years ago
Aleksander Machniak e3c6989494 Log X-Real-IP only when it's different than REMOTE_ADDR 5 years ago
Aleksander Machniak 3b3dd0cf7a Add note about URI format of hostnames in ldap config (#7082) 5 years ago
Aleksander Machniak 35101ca44a Fix filter selection after removing a first filter (#7079) 5 years ago
Aleksander Machniak 57476c09f9 Fix bug where cancelling switching from HTML to plain text didn't set the flag properly (#7077) 5 years ago
Aleksander Machniak 604e814898 Fix/remove useless keyup event handler on username input in logon form (#6970) 5 years ago
Aleksander Machniak 9219f4cd65 Fix so use of Ctrl+A does not scroll the list (#7020) 5 years ago
Christian Weiske 1c1a73e4d5 Set the content-type of JSON responses to application/json, not text/plain (#6573) 5 years ago
Sebastiaan Lokhorst 511e99ee1a Update SMTP TLS/STARTTLS explanation in config.php (#7066)
Implicit TLS (port 465) is no longer deprecated since RFC 8314.
5 years ago
Aleksander Machniak 2321bce469 Add notes about file ownership (#7009) 5 years ago
Aleksander Machniak 04aff2efa3 Fix so install-jsdeps.sh removes Bootstrap's sourceMappingURL (#7035) 5 years ago
Aleksander Machniak 2f928a516d Fix DB Write test on SQLite database ("database is locked" error) (#7064)
Also fix so SQLite DSN with a relative path to the database file works in Installer
5 years ago
Aleksander Machniak fa34e5ebcd Fix bug where a new saved search added after removing all searches wasn't added to the list (#7061) 5 years ago
Aleksander Machniak 006f7d1087 Fix so modifier type select wasn't hidden after hiding modifier select on header change 5 years ago
Aleksander Machniak ffeebff3f9 Fix bug where Ctype extension wasn't required in Installer and INSTALL file (#7049) 5 years ago
Aleksander Machniak 45546508d2 Replace "Filter disabled" with "Filter enabled" (#7028) 5 years ago
Aleksander Machniak 8d81df7dc3 Fix bug where a new contact group added after removing all groups from addressbook wasn't added to the list 5 years ago
Aleksander Machniak dbc2b5e11c Fix bug where deleting a saved search in addressbook caused display issue on sources/groups list (#7061)
also remove dead code.
5 years ago
Aleksander Machniak 4485940d0e Fix bug where Enter key didn't work on messages list in "List" layout (#7052)
with some code improvements and better checking if selected message is a draft.
5 years ago
Aleksander Machniak 4cf2363f43 Update changelog 5 years ago
johndoh b68c141e1d Always update folder count after purge command (#7051)
... not only when it is the current folder.
5 years ago
Aleksander Machniak e0574d909e Merge branch 'johndoh-html5' 5 years ago
Aleksander Machniak 8a25ddbf53 Update changelog, CS improvements 5 years ago
Aleksander Machniak feb4ecdf51 Elastic: Fix language icon (#6624) 5 years ago
Aleksander Machniak 022a1b683f Enigma: Add script to import keys from filesystem to the db storage (for multihost) 5 years ago
Aleksander Machniak d4a8642d5a Code simplification and style fixes 5 years ago
Aleksander Machniak d2738d1e8b Remove spaces from 'accept' attribute 5 years ago
Aleksander Machniak ba83042b1a Elastic: Remove redundant listmenulink elements 5 years ago
Aleksander Machniak ea3ad31ce0 Fix bug where the Installer would not warn about required schema upgrade (#7042) 5 years ago
Aleksander Machniak 47f72303ac Small correction 5 years ago
Aleksander Machniak 4b607e2ed3 Fix so Elastic is also a default in jqueryui plugin (#7039) 5 years ago
Aleksander Machniak fecff809fe Elastic: Fix data-fab-task handling (#7038)
Since the code is executed before rcmail init event, we have to use rcmail.env.task
instead of rcmail.task.
5 years ago
Aleksander Machniak 0113ea9602 Fix tables listing routine when DSN contained a database with unsupported suffix (#7034) 5 years ago
Aleksander Machniak 2e2028ae78 Elastic: Fix position of mobile floating action button (#7038) 5 years ago
Aleksander Machniak b6810cc163 Mention required min. version of lessc (#7031) 5 years ago
Aleksander Machniak f4722cb451 Fixed typo 5 years ago
Aleksander Machniak d0dd042b73 Fix so update.sh script warns about changed defaults (#7011) 5 years ago
Aleksander Machniak b63bc1ae22 Fix misleading comment 5 years ago
Aleksander Machniak 81bccd00ad Larry: Fix html editor toolbar background in Identities 5 years ago
Aleksander Machniak 22d629a0e9 Elastic: Fix regression in the new editor widget (#7021) 5 years ago
Aleksander Machniak 110eebdd1b Fix db_prefix handling in queries with `TRUNCATE TABLE <name>` and `UNIQUE <name>` (#7013) 5 years ago
Aleksander Machniak ee1f01a0df Fix so 401 error is returned only on failed logon requests (#7010) 5 years ago
Aleksander Machniak 157edd72bb Elastic: Fix Edit responses button state in Mailvelope mode 5 years ago
Aleksander Machniak b4b400c91d Fix invalid Signature button state after escaping Mailvelope mode (#7015) 5 years ago
Aleksander Machniak 1eb50c7cd3 Remove unused variables 5 years ago
Aleksander Machniak 71bcf2e245 Fix regexp for version input to accept rcX releases 5 years ago
Aleksander Machniak b63d549834 Elastic: Change HTML editor widget to improve form flow (#6992) 5 years ago
Aleksander Machniak 4b24ba1372 Fix bug where cache keys could exceed length limit specified in db schema (#7004) 5 years ago
Aleksander Machniak 4cf8952afa Fix PHP warning: "array_merge(): Expected parameter 2 to be an array, null given in sendmail.inc (#7003) 5 years ago
Aleksander Machniak 338b25dec9 Managesieve: Fix locked UI after opening filter frame (#7007) 5 years ago
Aleksander Machniak 03cee8f554 Add a release mark 5 years ago
Aleksander Machniak 8aaf7d35c1 Fix displaying version number for rcX versions 5 years ago
Aleksander Machniak 30af42be87 Remove a note about Larry being default 5 years ago
Aleksander Machniak 757d5fc1b1 Correct file permissions 5 years ago
Thomas Bruederli 9ebba7c2ce Set default skin to 'elastic' in sample config 5 years ago
Aleksander Machniak 6aab238773 Small code improvements 5 years ago
Aleksander Machniak c5c5a9325c Elastic: Fix regression where recipient input didn't update internal input state (#6988) 5 years ago
Aleksander Machniak 508e83470c Master is 1.5-git now 5 years ago
Aleksander Machniak f768ff1464 Update changelog and cleanup 5 years ago
PhilW 75125cbac1 add unit tests for rcmail_output_html::get_template_logo 5 years ago
PhilW 97001e9221 rewrite skin_logo config 5 years ago
Aleksander Machniak 727f8f04d8 Elastic: Fix regression where Encrypt button wasn't displayed in mail compose toolbar (#6982)
Also fix Reply-All button handling
5 years ago
Aleksander Machniak 52c755207d Enigma: Fix bug where signing option was set to disabled after saving a draft in Elastic skin (#6515) 5 years ago
Aleksander Machniak 3a097e6836 Fix bug where inline images could have been ignored if Content-Id header contained redundant spaces (#6980) 5 years ago
Aleksander Machniak df414aa30c Elastic: Fix unread filter icon and search state on folder change (#6978) 5 years ago
Aleksander Machniak 5543240e67 Elastic: Fix language icon (#6624) 5 years ago
Aleksander Machniak 5a0843de4b Enigma: Add script to import keys from filesystem to the db storage (for multihost) 5 years ago
Aleksander Machniak 5b6a50a4e4 Code simplification and style fixes 5 years ago
Aleksander Machniak 6f4c2cf231 Remove spaces from 'accept' attribute 5 years ago
Aleksander Machniak bdce0ba3f2 Elastic: Remove redundant listmenulink elements 5 years ago
Aleksander Machniak 3cd3d8eecb Fix bug where the Installer would not warn about required schema upgrade (#7042) 5 years ago
Aleksander Machniak bd21d43ac9 Small correction 5 years ago
Aleksander Machniak 90738d7a36 Fix so Elastic is also a default in jqueryui plugin (#7039) 5 years ago
Aleksander Machniak 40aef395bb Elastic: Fix data-fab-task handling (#7038)
Since the code is executed before rcmail init event, we have to use rcmail.env.task
instead of rcmail.task.
5 years ago
Aleksander Machniak 67898b23e4 Fix tables listing routine when DSN contained a database with unsupported suffix (#7034) 5 years ago
Aleksander Machniak 2e26aee2b6 Elastic: Fix position of mobile floating action button (#7038) 5 years ago
Aleksander Machniak f2c878c82b Mention required min. version of lessc (#7031) 5 years ago
Aleksander Machniak 814db5a33e Fixed typo 5 years ago
Aleksander Machniak 294683b390 Fix so update.sh script warns about changed defaults (#7011) 5 years ago
Aleksander Machniak a269e7c106 Fix misleading comment 5 years ago
Aleksander Machniak 4d54074ad2 Larry: Fix html editor toolbar background in Identities 5 years ago
Aleksander Machniak c2bd60f1aa Elastic: Fix regression in the new editor widget (#7021) 5 years ago
Aleksander Machniak a80d73602f Fix db_prefix handling in queries with `TRUNCATE TABLE <name>` and `UNIQUE <name>` (#7013) 5 years ago
Aleksander Machniak b8555ce4f3 Fix so 401 error is returned only on failed logon requests (#7010) 5 years ago
Aleksander Machniak 4e840c7669 Elastic: Fix Edit responses button state in Mailvelope mode 5 years ago
Aleksander Machniak 7f6dd16479 Fix invalid Signature button state after escaping Mailvelope mode (#7015) 5 years ago
Aleksander Machniak 98c71ee62e Remove unused variables 5 years ago
Aleksander Machniak c734f3e1ab Fix regexp for version input to accept rcX releases 5 years ago
Aleksander Machniak 3c01f472e0 Elastic: Change HTML editor widget to improve form flow (#6992) 5 years ago
Aleksander Machniak 4cc20eef72 Fix bug where cache keys could exceed length limit specified in db schema (#7004) 5 years ago
Aleksander Machniak 700cc5a055 Fix PHP warning: "array_merge(): Expected parameter 2 to be an array, null given in sendmail.inc (#7003) 5 years ago
Aleksander Machniak 58850f0b93 Managesieve: Fix locked UI after opening filter frame (#7007) 5 years ago
Aleksander Machniak 5677b2fc9d Add a release mark 5 years ago
Aleksander Machniak 8a726316bb Fix displaying version number for rcX versions 5 years ago
Aleksander Machniak 57aa69206a Remove a note about Larry being default 5 years ago
Aleksander Machniak 358f647273 Correct file permissions 5 years ago
Thomas Bruederli 8db933e440 Set default skin to 'elastic' in sample config 5 years ago
Aleksander Machniak 0e2d3789ce Small code improvements 5 years ago
Aleksander Machniak 959654c0c2 Elastic: Fix regression where recipient input didn't update internal input state (#6988) 5 years ago
Aleksander Machniak 9f1d185c44 Master is 1.5-git now 5 years ago
Aleksander Machniak 902d3cd0bb Merge branch 'johndoh-6981' 5 years ago
Aleksander Machniak 1656bbcfaa Update changelog and cleanup 5 years ago
Aleksander Machniak 95aac7c0b6 Elastic: Fix regression where Encrypt button wasn't displayed in mail compose toolbar (#6982)
Also fix Reply-All button handling
5 years ago
PhilW 714ea7b128 add unit tests for rcmail_output_html::get_template_logo 5 years ago
PhilW 0ae3823853 rewrite skin_logo config 5 years ago
Aleksander Machniak 12967485a3 Elastic: Fix regression where Encrypt button wasn't displayed in mail compose toolbar (#6982)
Also fix Reply-All button handling
5 years ago
Aleksander Machniak ad5a22b9c1 Enigma: Fix bug where signing option was set to disabled after saving a draft in Elastic skin (#6515) 5 years ago
Aleksander Machniak c1c534d67c Fix bug where inline images could have been ignored if Content-Id header contained redundant spaces (#6980) 5 years ago
Aleksander Machniak 30b5d4ef64 Elastic: Fix unread filter icon and search state on folder change (#6978) 5 years ago
PhilW 32775f0e43 remove redundant type attrib in script tag 5 years ago
Aleksander Machniak 8bcb1e801c Switch default skin to Elastic 5 years ago
Aleksander Machniak 92fbe4c3b8 Update localization 5 years ago
Aleksander Machniak 3527461d83 Elastic: Add cursor:pointer to a.toolbar-button 5 years ago
Aleksander Machniak da2ebb272a Add basic test for attachment_reminder plugin 5 years ago
Aleksander Machniak cc1a1d95fe Correct property name 5 years ago
Aleksander Machniak 1b8e01e324 Cleanup unused code 5 years ago
Aleksander Machniak ce70166d9e Elastic: Fix inserting responses at cursor position (#6971)
Don't check if the field has focus for text selection.
5 years ago
johndoh 57960b1cab add messages for in_array_nocase tests (#6957) 5 years ago
Aleksander Machniak 425724bb35 Fix testing rcube_sieve_vacation protected methods 5 years ago
Aleksander Machniak 2213efc850 Archive: Fix missing Archive icon in folder selector popup in Elastic 5 years ago
Aleksander Machniak 46ee823fd9 Archive: Fix bug where next email was not displayed after Archive button use (#6965) 5 years ago
Aleksander Machniak 199afedb96 Elastic: Improve splitter element identifier
so e.g. in Settings sidebar's width is constant for all Settings pages.
5 years ago
Aleksander Machniak 1d9ddf9d33 Fix PHP Fatal error: Uncaught Error: Using $this when not in object (#6959) 5 years ago
Aleksander Machniak a3c491d5cb Elastic: Fix initial focus on recipients input in mail compose screen
Also remove some redundant duplicated code
5 years ago
Aleksander Machniak 66fab8cdb2 CS fixes, Avoid usused variables, fixed minor bugs 5 years ago
Aleksander Machniak 20e25582e7 Fix so an error is loogged when encryption fails (#6948) 5 years ago
Aleksander Machniak ed085db9e0 Elastic: Fix position and style of auto-complete dropdown on small screens (#6951) 5 years ago
Aleksander Machniak e7ebff56df PHPDoc fixes 5 years ago
Aleksander Machniak 3841f63fbd Make cache keys case-sensitive on MySQL/MSSQL (#6942) 5 years ago
Aleksander Machniak 213a7cadc2 Enigma: Fix encryption menu width in larry and classic 5 years ago
Aleksander Machniak 54799b9b19 Elastic: Set height for pretty checkbox inside of .listing on touch screen 5 years ago
Aleksander Machniak d10c44c441 Elastic: Fix regression after column resizer was added 5 years ago
Aleksander Machniak 17296b39cb Fix infinite loading message on iframe loading errors
The loading message was not stopped on "hard" errors, i.e. when
the page was blank, e.g. on 500 error.
5 years ago
Aleksander Machniak c6de97c5a8 Redis: Improve error handling and phpredis 5.X support (#6888) 5 years ago
Aleksander Machniak 4d7ce46fc0 Elastic: Resizeable columns (#6929) 5 years ago
Thomas Bruederli 2d9b318c82 Add release 1.4-rc2 5 years ago
Aleksander Machniak b0aa130edf Fix wrong password requirement description with zxcvbn driver (#6922) 5 years ago
Aleksander Machniak 70d342a436 Fix language selection for spellchecker in html mode (#6915)
Also fix so the language is not reset when switching from html to plain
text and vice-versa.
5 years ago
Aleksander Machniak c60a30c780 Use "NOTICE:" instead of "NOTE:" for consistency 5 years ago
Aleksander Machniak 5040009f9c Fix array offset access syntax with curly braces 5 years ago
Aleksander Machniak de4a6068e6 Mention Masterminds/HTML5 in INSTALL/README 5 years ago
johndoh 4d66547034 Elastic: Fix border radius in popovers on small screens (#6911) 5 years ago
Aleksander Machniak b10a0dbb7e Reset internal $skins property is set_skin() 5 years ago
Aleksander Machniak 5373f1839d Fix googiespell popup in all skins 5 years ago
Aleksander Machniak bdd1b94d78 Fix PHP 7.4 warning: "Creating default object from empty value" 5 years ago
Aleksander Machniak 48f0f11807 Elastic: Fix color of input placeholder in Edge and some older browsers 5 years ago
Aleksander Machniak 707e070a77 Fix some popover menu regressions, simplify some styles 5 years ago
Aleksander Machniak 0d631491b4 Merge branch 'elastic_menus' of https://github.com/johndoh/roundcubemail into johndoh-elastic_menus 5 years ago
Aleksander Machniak fcf5a12e30 Password: Support INSERT ... ON DUPLICATE KEY UPDATE queries 5 years ago
PhilW 69e09b12d2 (Elasitc) also support no-icon class on entire menu 5 years ago
PhilW 538b124f13 a few tweaks to elastic popup menus 5 years ago
Aleksander Machniak 27bfd0884e Drop rcube_browser::$lang property
You should use Accept-Language header instead, as we do in other place
5 years ago
Aleksander Machniak 1a10074b85 Add Edge browser detection 5 years ago
Aleksander Machniak f5d6a242a8 Remove useless properties from rcube_browser 5 years ago
Aleksander Machniak 0786ab8187 Update localization 5 years ago
Aleksander Machniak 4096739322 Fix including assets that exist only in minified version 5 years ago
Aleksander Machniak bdd1b2054f Elastic: Add indicator for popover menu items that open a submenu (#6868) 5 years ago
Aleksander Machniak 21ebf3ff5a Fix bug where it was possible to bypass href URI check with data:application/xhtml+xml URIs (#6896) 5 years ago
Aleksander Machniak 63730cf842 Fix security issue where it was possible to bypass the CSS jail in HTML messages using :root pseudo-class (#6897) 5 years ago
Aleksander Machniak 057fb69bb9 Fix bug where some strict remote URIs in url() style were unintentionally blocked (#6899) 5 years ago
Aleksander Machniak 7bf868767e Fix security issue where it was possible to bypass the position:fixed CSS check in received messages (#6898) 5 years ago
Aleksander Machniak 14cb21c87e Elastic: Fix select/selection button in some places 5 years ago
Aleksander Machniak 3b4d9f3fb5 PHPDoc updates 5 years ago
Aleksander Machniak 1afa46d28d PHPDoc and CS fixes 5 years ago
Aleksander Machniak cc21eac9b9 Update changelog 5 years ago
Aleksander Machniak 0dacbc8e0f Merge branch 'thomascube-pr-elastic-icons' 5 years ago
Aleksander Machniak c5b844e235 Elastic: (Imho) better icon for Collapse All action 5 years ago
Aleksander Machniak 2691fe1cf0 Elastic: Slightly better icon for Invert action 5 years ago
Aleksander Machniak b07f7212be Elastic: Fix selection button icon in Enigma 5 years ago
Aleksander Machniak 53ccce4be9 Merge branch 'pr-elastic-icons' of https://github.com/thomascube/roundcubemail into thomascube-pr-elastic-icons 5 years ago
Aleksander Machniak 6ec3217f1e Use kolab/net_ldap3 1.1.x 5 years ago
Aleksander Machniak b35c9c1fdc Apply image preview centering styles only if there's an image
For cases when we display a security warning about the image attachment
the image centering styles would make the warning centered, which
we do not want.
5 years ago
Aleksander Machniak d36ea2aa86 Elastic: Fix bg color of .rcmail-inline-message warning 5 years ago
Aleksander Machniak f7832a1a26 Removed 'delete_always' option (#6782) 5 years ago
Thomas Bruederli 7661fa6711 Use the same icon for select/expand unread 5 years ago
Thomas Bruederli 65735a6f94 Add accept option (-y) to installto.sh script 5 years ago
Jack Cherng f5d4c80e71 Elastic: fix a undefined color (#6810)
It's referenced in the widgets/jqueryui.less.

Signed-off-by: Jack Cherng <jfcherng@gmail.com>
5 years ago
johndoh 3a40f6cd91 Add expand_all/collapse_all treelist methods (#6860)
* add expand_all()/collapse_all() treelist methods
* prevent possible race condition in rcmail.folder_collapsed()
5 years ago
Aleksander Machniak e88e0c16c9 Move rcmail (and future rcmail_*) class tests to tests/Rcmail directory 5 years ago
Aleksander Machniak 04ff1feec3 Improve wording: record -> list entry 5 years ago
Aleksander Machniak 5db4b3f5ea Fix '\n' visible when identity has multiple GPG keys (#6885) 5 years ago
Aleksander Machniak 4062c64acd Update changelog 5 years ago
Aleksander Machniak 902c264cf0 PHPRedis 5 compat. fix in session handler 5 years ago
Jack Cherng 198585d8a0 Fix implode() wrong parameter order (#6866)
It has been deprecated in PHP 7.4.

Such as PHP deprecated:  implode(): Passing glue string after array is deprecated. Swap the parameters in /var/www/roundcubemail/program/lib/Roundcube/rcube_db.php on line 917

Signed-off-by: Jack Cherng <jfcherng@gmail.com>
5 years ago
Sandor Takacs adcfa53532 Redis::delete() is deprecated in phpredis 5.0.0 (#6883)
Redis::delete() is deprecated in phpredis 5.0.0
5 years ago
Jack Cherng 17d8423299 Fix PHP 7.4 deprecation: array/string curly braces access (#6884)
Signed-off-by: Jack Cherng <jfcherng@gmail.com>
5 years ago
Aleksander Machniak 9a225bd3fe Use Left/Right Arrow keys to faster move over threaded messages list (#6399)
Fixed some inconsistencies in list widget expand/collapse code.

Made the arrow keys behavior like in Thunderbird, i.e.:
- Right Arrow expands thread or selects closest child if already expanded,
- Left Arrow collapses thread or jumps to closest parent,
- Left Arrow + Ctrl selects top-most parent,
- Up/Down Arrow keys behavior didn't change.
5 years ago
Aleksander Machniak dc5be05a5f Select all records on the current list page with CTRL + A (#6813) 5 years ago
Aleksander Machniak 7e8f9da64b Elastic: Add "Show unread messages" button to the search bar (#6587) 5 years ago
Aleksander Machniak 9b88e9e5c2 Correct vendor string for GMail is 'gimap' 5 years ago
Thomas B 53130c08ef Make propform column sizing variable (#6867)
Allow to specify the preferred column sizes with a propform table class.
5 years ago
Aleksander Machniak be4341663c Merge branch 'pr-elastic-icons' of https://github.com/thomascube/roundcubemail into thomascube-pr-elastic-icons 5 years ago
johndoh 91398c858a Add KOI8-R to charset_selector (#6861) 5 years ago
Aleksander Machniak b3b0c5efe2 Remove redundant rcmail_ prefix 5 years ago
johndoh 18a4d63be8 Fix deleting original message in some markasjunk drivers (#6862) 5 years ago
Thomas Bruederli 52f360a994 Fix export selected menu icon 5 years ago
Aleksander Machniak 900c6813e3 Merge branch 'pr-elastic-icons' of https://github.com/thomascube/roundcubemail into thomascube-pr-elastic-icons 5 years ago
Aleksander Machniak fbe36c7f5a Elastic: Fix bug where use of Tab key on autocomplete causes double insertion into a recipient input (#6850) 5 years ago
Aleksander Machniak 5baa8981ea Elastic: Fix bug in handling pasting text into a recipient input 5 years ago
Aleksander Machniak 7a854f1b56 Fix removing acl entries (regression) 5 years ago
Thomas Bruederli 07b67fe20e Elastic: icons cleanup
- Distinct icons for settings and options
- Distinct icons for expand actions (threads)
- Consistent icon to enable select checkboxes
5 years ago
Aleksander Machniak a80c5569ab Added flag to disable server certificate validation via Mysql DSN argument (#6848) 5 years ago
Aleksander Machniak 6daefc3d45 Elastic: Fix so search is not reset when returning from the message preview page (#6847) 5 years ago
Aleksander Machniak 786bde62f2 Fix wrong messages order after returning to a multi-folder search result (#6836) 5 years ago
Aleksander Machniak 0e4bf6fda8 Fix bug where unread count wasn't updated after moving multi-folder result (#6846) 5 years ago
Aleksander Machniak d9e3218025 Fix bug where handling multiple messages from multi-folder search result could not work (#6845) 5 years ago
Aleksander Machniak d39d49b7a6 Fix keyboard navigation (tabindex) on attachments list in compose 5 years ago
Aleksander Machniak 1e365b4d9d Elastic: Remove border from attachments list in upload widget 5 years ago
Aleksander Machniak 14849be400 Merge branch 'pr-elastic-attachments' of https://github.com/thomascube/roundcubemail into thomascube-pr-elastic-attachments 5 years ago
Aleksander Machniak 7fe99bdcb1 Elastic: Small fix and improvement for .sidebar-right 5 years ago
Aleksander Machniak e9ff423a94 Merge branch 'pr-elastic-compose' of https://github.com/thomascube/roundcubemail into thomascube-pr-elastic-compose 5 years ago
Thomas Bruederli 00a867a05f Make attachment list :empty selector work 5 years ago
Thomas Bruederli cf862fbd6f Elastic: draw box around attachments list 5 years ago
Thomas Bruederli 9717fde456 Elastic: small improvements to compose screen
- Move attachments panel to the right
- Use pen icon for floating compose button
5 years ago
Aleksander Machniak 44bdca4ab9 Enigma: Fix bug where signature verification could have been skipped for some message structures (#6838) 5 years ago
Aleksander Machniak c1344643a1 Fix bug in miemetype name comparator
The code was removing the first matching prefix (x- or x-ms-), which
caused 'x-ms-bmp' to end up as 'ms-bmp'. It should be 'bmp'. Fixed by
reverting the order of tokens in the regexp.
5 years ago
Aleksander Machniak bfe2bc17d7 Fix css styles leak from replied/forwarded message to the rest of the composed text (#6831)
Generally do the same with styles what we do on message preview.

This also fixes small bugs in handling styles:
- fix so <style> tag on the start of the HTML content is not ignored
- fix so body's background/bgcolor attributes are applied to the container (regression)
5 years ago
Aleksander Machniak 598cc5f42f Elastic: Add default icon on Settings/Preferences lists for external plugins (#6814) 5 years ago
Aleksander Machniak 8f895cb17f Replace function alias: getallheaders() -> apache_request_headers() 5 years ago
Aleksander Machniak 042b954fd0 Elastic: Roboto Font v19 5 years ago
Jack Cherng 20bf625733 Remove a unused variable in rcube_plugin::include_stylesheet() (#6832)
Signed-off-by: Jack Cherng <jfcherng@gmail.com>
5 years ago
Aleksander Machniak b7b2ce7b91 Small code improvement 5 years ago
Aleksander Machniak 446ff50c57 Merge branch 'dev/display_next' of https://github.com/alecpl/roundcubemail into alecpl-dev/display_next 5 years ago
Aleksander Machniak 6d17e58380 Add basic test for password drivers 5 years ago
Aleksander Machniak 9d5e2219f8 Make ldap_ppolicy to log debug into 'ldap.log' file 5 years ago
Aleksander Machniak 4e9aca2f27 Fix visibility of rcube_ldap_exop_password::$debug (#6828) 5 years ago
Aleksander Machniak 881c0ec0da Avoid empty entry in rule selector 5 years ago
Aleksander Machniak a991e3181c Put charset meta specification before a title tag, add page title automatically (#6811)
I.e. templates should not specify <title>
5 years ago
Aleksander Machniak 84c4d062c6 Unified and simplified keypress event handling on a list widget 5 years ago
Aleksander Machniak b25699d2ac Elastic: Improve show-content event handler 5 years ago
Aleksander Machniak 14d8ac3585 Elastic: Make @color-list-deleted the same as disabled buttons, etc.
i.e. semi-transparent @font-color
5 years ago
Jack Cherng e449f30eff Simplify jQuery DOM ready at the footer (#6825)
https://api.jquery.com/ready/#entry-longdesc

Signed-off-by: Jack Cherng <jfcherng@gmail.com>
5 years ago
Aleksander Machniak 0869f02b7c Fix bug in converting multi-page Tiff images into Jpeg (#6824)
When using 'convert' binary we have to use -flatten argument (the same
as we do with thumbnails) otherwise it will produce multiple output files
with -0, -1, etc. suffix. This way we make sure to generate only one image
until we support multi-page Tiff properly.
5 years ago
Aleksander Machniak ed8beee5ff Elastic: Unify margin on #compose-attachments 5 years ago
Aleksander Machniak d3b468d330 Elastic: Remove wrong min-height on .ui.alert on mobile 5 years ago
Aleksander Machniak f181cdfd39 Elastic: Remove height from .iframe-wrapper
It fixes some iframed dialogs by making the footer bar not hidden in Chrome.
5 years ago
Aleksander Machniak 404995ef95 Elastic: Execute screen_resize_headers() in framed mode 5 years ago
Jack Cherng 26fd266496 Fix variables defined in variable.less cannot be overwritten (#6819)
Signed-off-by: Jack Cherng <jfcherng@gmail.com>
5 years ago
Aleksander Machniak ae3eb57fe8 Update changelog 5 years ago
Johannes Prösl 4644e3404f Adding ssha512 password_algorithm (#6805)
* Added SSHA512 method to the hash_password function

Basically a copy of the ssha method this case is compatible with the dovecot ssha512 settings so there is no doveadm needed alongside with roundcube to update ssha512 passwords.
5 years ago
johndoh f99c16432a fix failing travis-ci checks (#6815) 5 years ago
Aleksander Machniak 2d8c396b6e Fix bug where selection of columns on messages list wasn't working 5 years ago
Aleksander Machniak 6196278869 Fix bug where title text on a treelist record (folder) could include unread count number
Add skip-content class to unreadcount elements
5 years ago
Aleksander Machniak be2e3f2154 Elastic: Fix handling new-line in text pasted to a recipient input 5 years ago
Aleksander Machniak 7fa5180fcc ACL: Display user/group names (from ldap) instead of acl identifier 5 years ago
Aleksander Machniak 7846505fa4 Don't expand groups without id
Skipping redundant request for cases like ACL plugin where we may deal
with groups that may have no mail, id nor source assigned in acl identifier
autocompletion.
5 years ago
Aleksander Machniak 0a0ad2c9b7 Switch to IDNA2008 variant (#6806)
After switching IDNA_NONTRANSITIONAL_TO_ASCII on, switch to
IDNA2008 variant in Net_LDAP2. Add test, update changelog.
5 years ago
Max Bosse f1d3f9ee44 Fix: Use IDNA_NONTRANSITIONAL_TO_UNICODE for idn_to_utf8 call 5 years ago
Max Boße 70c20740e7
Set 'IDNA_NONTRANSITIONAL_TO_ASCII' idn-option 5 years ago
Aleksander Machniak 89a342a03a Elastic: Fix visual issue with long buttons in .boxwarning (#6797) 5 years ago
Aleksander Machniak 037bc3c94f Fix code indentation 5 years ago
Aleksander Machniak a97822eb8b Remove importgettext.sh and exportgettext.sh scripts 5 years ago
Aleksander Machniak 8e63309203 CS fixes, tabs to spaces 5 years ago
Aleksander Machniak f7b4ce0412 Remove dumpschema.sh
Usefulness of this script is very low, and MDB2 is not our dependency anymore
5 years ago
Aleksander Machniak f6807bcc4c Added 'keyservers' option to define list of HKP servers for Enigma/Mailvelope (#6326) 5 years ago
Aleksander Machniak 1423536ce0 Plugin API: Add 'render_folder_selector' hook 5 years ago
Aleksander Machniak 1e5284d245 Elastic: Improve #contactpic color/size 5 years ago
Aleksander Machniak 22a47cced6 Changes in `display_next` setting (#6795)
- Move it to Preferences > User Interface > Main Options
- Make it apply to Contacts interface too
- Make it apply only if deleting/moving a previewed message/contact
5 years ago
Aleksander Machniak 940e500c1f Enigma: For verified signatures, display the user id associated with the sender address (#5958) 5 years ago
Aleksander Machniak 0e4156ea83 Fix bug where Next/Prev button in mail view didn't work with multi-folder search result (#6793) 5 years ago
Aleksander Machniak 4b415c356c Elastic: Better Spellcheck icon (#6792) 5 years ago
Aleksander Machniak da678873b7 Elastic: FontAwesome 5.9.0 5 years ago
Aleksander Machniak 7af72e82fc Elastic: Fix some jumping effect in Chrome (#6677) 5 years ago
Aleksander Machniak c8bec34f8f Properly apply assets_path to contact photo placeholder 5 years ago
Aleksander Machniak 8932abd2e7 CS fixes 5 years ago
Aleksander Machniak 24913e51d3 Mention Kolab/Net_LDAP3 as a dependency 5 years ago
Aleksander Machniak 2351fc13a6 Remove pear/net_ldap2
We don't have to suggest a dependency of kolab/net_ldap3.
5 years ago
Aleksander Machniak 40f38221af Elastic: Remove unused png images 5 years ago
Aleksander Machniak 7e2e92909e Elastic: Optimize svg images for size 5 years ago
Aleksander Machniak 204a2c2d5b Elastic: Fix missing delete button in image upload widget in some browsers 5 years ago
Aleksander Machniak d19377d276 Elastic: Fix image in #contactpic element on iOS 9
Looks like some svg in a flex container issue. Changed technique to center the image.
5 years ago
Aleksander Machniak 183c62451a Elastic: Fix iframe height on iOS 9 5 years ago
Aleksander Machniak ed9da6cb7f Memcached: Don't add the same server to the pool many times when using persistent connections 5 years ago
Aleksander Machniak 668ca02c3f Larry: Fix some TinyMCE buttons 5 years ago
Aleksander Machniak e0792c3287 Skip RSET after authentication failure and QUIT 5 years ago
Aleksander Machniak b39c5aaaec Exit immediately after http redirect
This is needed since we use 401 on logout
5 years ago
Aleksander Machniak fdac30e544 Support PECL memcached extension as a session and cache storage driver (experimental) 5 years ago
Aleksander Machniak 2a25f1778b Make sure managesieve_default is not a dir (#6773) 5 years ago
Aleksander Machniak 4ef87fe856 Support $HasAttachment/$HasNoAttachment keywords (#6201)
We use these only to display the attachment icon on the messages list.
5 years ago
Aleksander Machniak f8ca8d1b63 Fix invalid path to "add contact" icon when using assets_path setting
This and a few other icons
5 years ago
Aleksander Machniak 8cc0848d03 Elastic: Fix toolbar regressions in IE11 (#6765) 5 years ago
Aleksander Machniak 3194ca235b Update comment 5 years ago
Aleksander Machniak 9f11289e34 Fix toolbar on iOS (#6765) 5 years ago
Aleksander Machniak 6e5027ba24 Fix so userlogins and sendmail logs are never put into the per_user_logging folder 5 years ago
Aleksander Machniak d646a10217 Add in_selection() to rcube_treelist_widget
So code working on all lists doesn't have to check widget type
to work with selection.
5 years ago
Aleksander Machniak 4bce2c4389 Elastic: Small visual fix in vacation form 5 years ago
Aleksander Machniak 9a8f4cb13d Elastic: Fix border radius on messages (again) 5 years ago
Aleksander Machniak 7f999ab13f Bump version number 5 years ago
Aleksander Machniak 6cddb6c5d0 Bump version number, use pear/net_sieve 5 years ago
Aleksander Machniak 9022d427b1 Add emoticons plugin localization 5 years ago
Aleksander Machniak c6fc417fe9 Add emoticons plugin to transifex config 5 years ago
Aleksander Machniak c287dad54e Add dialog-open event (#6748) 5 years ago
Aleksander Machniak 2dccbf2879 Redis: Support connection to unix socket
Also handle exceptions thrown on connection and remove support for
specifying hosts with redis:// scheme.
5 years ago
Aleksander Machniak a8f3d46bb9 Merge branch 'master' of github.com:roundcube/roundcubemail 5 years ago
Aleksander Machniak ce52b04051 Update changelog, add some tests for rcube_utils::parse_host() 5 years ago
Amir Caspi 6b5fa52ec1 Update rcube_utils::parse_host, fixes #6746
Updated regexps used in parse_host to ensure that %t, %d, %z do not cut off domain and return only tld when underlying host has no subdomain (i.e., is just domain.tld rather than mail.domain.tld).  Update fixes #6746, now returns nothing shorter than domain.tld.

Also removed backslash from character class, period does not need to be escaped within character class.
5 years ago
Peter Dey 92602734b1 Elastic: Add infrastructure to apply CSS styles to specific action dialogs/screens (#6749)
Examples:
* action-headers - The headers popup
* action-plugin-managesieve-action - The managesieve filter creation screen
5 years ago
Aleksander Machniak 7c8ce07e8c Fix bug where bold/strong text was converted to upper-case on html-to-text conversion (6758) 5 years ago
Aleksander Machniak 5c131aff54 Elastic: Fix pretty select list height on mobile 5 years ago
Aleksander Machniak 14265248ce Elastic: Fix regression where on mobile scrollbar could have been missing in some pages 5 years ago
Aleksander Machniak 35b12620eb Elastic: Fix Firefox sub-pixel positioning issues
... by using size values rounded in less - in most prominent places.
There's still problem with form controls padding, but we'll work on this
when really needed.
5 years ago
Aleksander Machniak 0feb46574c Update languages list 5 years ago
Aleksander Machniak a1301a78d6 Localization update 5 years ago
Aleksander Machniak b24869b0cd Elastic: Fix bug where Enigma options in mail compose could sometimes be ignored (#6515) 5 years ago
Aleksander Machniak 910505a361 Fix regression where drafts were not deleted after sending the message (#6756) 5 years ago
Aleksander Machniak b8800c5b9a Elastic: Bring back border-radius for #messagestack objects 5 years ago
Aleksander Machniak 516a88e49d Elastic: Simplify some styles for .ui.alert 5 years ago
Aleksander Machniak 918c8859b6 Remove redundant rule
It actually broke some plugins after commit 5fb8e8cb86 (#6739).
5 years ago
Aleksander Machniak 0c4d78aa11 Remove language code from charset name as per the RFC2231.5 5 years ago
Aleksander Machniak 86a9788083 Fix invalid path to blocked.gif when using assets_path setting (#6752) 5 years ago
Aleksander Machniak 8db00c6265 Elastic: Fix handling mailto: URL parameters in contact menu (#6751)
Also fix keyboard navigation in some menus, e.g. contact menu
5 years ago
Aleksander Machniak 51c9bab005 Small cleanup and mention that Elastic requires IE 11+ 5 years ago
Aleksander Machniak 9391a531ff Fix regexp 5 years ago
Aleksander Machniak 8fe12e2fad Enigma: Fix "decryption oracle" bug [CVE-2019-10740] (#6638)
When composing mail (on reply/forward/edit) we decrypt content only
in the first "content part" of the message.
5 years ago
Aleksander Machniak 1ee7253ff2 Enigma: Fix error message when trying to encrypt with a revoked private key (#6607) 5 years ago
Aleksander Machniak 6efa88f049 Enigma: Fix bug where revoked users/keys were not greyed out in key info
The 'deleted' class was assigned to the wrong (next) row in a table.
It also didn't work in Elastic skin at all because of the missing style.
5 years ago
Aleksander Machniak b89031e335 Fix PHP Deprecated: idn_to_ascii(): INTL_IDNA_VARIANT_2003 is deprecated
Use rcube_utils::idn_to_ascii() instead of idn_to_ascii().
5 years ago
Aleksander Machniak fe90903fa1 Fix bug in parsing vCard data using PHP 7.3 due to an invalid regexp (#6744)
Looks like \R is not allowed in character class, but \r\n is fine.
On PHP 7.3.5 it throws warnings and empty result from preg_replace(),
though I couldn't reproduce.
5 years ago
Aleksander Machniak f3d16240f2 Fix bug where bmp images couldn't be displayed on some systems (#6728) 5 years ago
Aleksander Machniak e3014de2ce Simplify code around detected mimetype string 5 years ago
Aleksander Machniak 3f351697c3 Elastic: Fix non-working @color-taskmenu-button-selected-hover 5 years ago
Aleksander Machniak 232d4be561 Elastic: Add text aligning for toolbar items
For very short button text e.g. "Add" the text has to be centered.
5 years ago
Aleksander Machniak cf51aead63 Larry: Fix regression where menu actions didn't work with keyboard (#6740)
For Elastic remove Space/Enter key handler on menus, so we use
default browser behaviour. Triggering a onclick programatically
causes popup window warning sometimes.
5 years ago
Aleksander Machniak 3719ce0653 Don't use :has selector 5 years ago
Aleksander Machniak 2c38460b09 Make sure an event triggered by Enter key press on a link is treated as a keyboard event 5 years ago
Aleksander Machniak 5fb8e8cb86 Elastic: Fix issue with absolute positioned mail content (#6739) 5 years ago
Aleksander Machniak c42be24fd3 Update changelog 5 years ago
Aleksander Machniak 8c471478f7 Merge branch 'dev/elastic' 5 years ago
Aleksander Machniak f76d9e0c09 Small fix 5 years ago
Aleksander Machniak 67f9f504a3 key ring -> keyring
...for consistence with other places
5 years ago
Aleksander Machniak f3c9699817 Fix so advanced search dialog is not automatically displayed on searchonly addressbooks (#6679) 5 years ago
Aleksander Machniak 68256be600 Bump CodeMirror version to 5.46.0 5 years ago
Aleksander Machniak 487052cb5c jQuery-3.4.1 5 years ago
Aleksander Machniak 45a6ad1ba7 Fix so an error is logged when more than one attachment plugin has been enabled, initialize the first one (#6735) 5 years ago
Aleksander Machniak 593188559a Fix regression where non-terminating errors were sent to the browser 5 years ago
Aleksander Machniak e67765b863 Fix bug where flag change could have been passed to a preview frame when not expected 5 years ago
Aleksander Machniak 55cca61134 Workaround more invalid HTML cases parsed incorrectly by Mastermind/HTML5 (#6713) 5 years ago
Aleksander Machniak 00ef5d05ef Merge branch 'master' into dev/elastic 5 years ago
Peter Dey 07d4996825 Elastic: Make header title in message view slightly wider, so we can fit the string "X-Original-To" (#6731) 5 years ago
Aleksander Machniak 68f4566b0f Get rid of widgets/mail.less
Move .image-tools to widgets/common.less, and the rest to styles.less.
5 years ago
Aleksander Machniak ce9c52e65a Merge branch 'master' into dev/elastic 5 years ago
Aleksander Machniak 00f94a47bb Rephrase cookiesmismatch text 5 years ago
Aleksander Machniak 850d414443 Don't allow dragging .custom-control elements on folders list 5 years ago
Aleksander Machniak 7457829c49 Elastic: Don't use cursor:pointer on disabled switches 5 years ago
Aleksander Machniak 187b51fd82 Fix bug where parent entry could be selected when clicking on a virtual entry 5 years ago
Aleksander Machniak 70a0976be1 Remove redundant error message 5 years ago
Aleksander Machniak fbb5a5bc4f Small code simplification in raise_error() 5 years ago
Aleksander Machniak e3d3add48a installto.sh: Add possibility to run the update even on the up-to-date installation (#6533) 5 years ago
Aleksander Machniak 02dc6ce41c Don't init the session in CLI mode
This prevents from PHP warnings when using CLI scripts e.g. installto.sh.
5 years ago
Aleksander Machniak 72ad567db6 Add new line at the end of error message in CLI mode 5 years ago
Aleksander Machniak 00173a7622 Update some code documentation 5 years ago
Aleksander Machniak 521e0c048c Managesieve: Bump version number 5 years ago
Aleksander Machniak 3562d7ffa6 Fix so "Create filter" option does not show up when Filters menu is disabled (#6723) 5 years ago
Aleksander Machniak ccb70116f1 Managesieve: Use RFC-compliant line endings, CRLF instead of LF (#6686) 5 years ago
Aleksander Machniak d8470c6c2b Remove useless "..." suffix 5 years ago
Aleksander Machniak 9c4e2eacab Don't log full session identifiers in userlogins log (#6625)
Log only 16-char prefix.
5 years ago
Aleksander Machniak 32612f0b8f Log some more info with session_debug 5 years ago
Aleksander Machniak f3948a26b8 Use .log suffix in options descriptions as it's the default 5 years ago
Aleksander Machniak c87ac075ae Renamed 'log_session' option to 'session_debug' 5 years ago
Aleksander Machniak f1a83f923d Added cookie mismatch detection, display an error message informing the user to clear cookies 5 years ago
Aleksander Machniak 5218b0193a Clarified 'address_book_type' option behavior (#6680) 5 years ago
Aleksander Machniak 22694665d9 Fix code indentation 5 years ago
Aleksander Machniak 57c67db029 Remove year(s) from copyright headers + some cleanup 5 years ago
Aleksander Machniak 69080457b1 Code simplification 5 years ago
Aleksander Machniak 92ed0154d5 Followup fix on handling HTML content w/o html/head/body tag (#6713) 5 years ago
Aleksander Machniak 03d56926d8 Fix bug in HTML parser that could cause missing text fragments when there was no head/body tag (#6713) 5 years ago
Aleksander Machniak 1078d8df16 Fix cpanel_webmail driver 5 years ago
Aleksander Machniak 711e46a018 Force HIGHESTMODSEQ use on dovecot
This may fix some messages cache issues. Dovecot does not return
HIGHESTMODSEQ nor NOMODSEQ metadata on SELECT until it is "forced"
to switch to "permanent mod-seq mode". It can be done either by
ENABLE QRESYNC/CONDSTORE or by requesting the metadata explicitely
on SELECT/STATUS. We'll use STATUS for that.
5 years ago
Aleksander Machniak 3ec6a60ad1 Fix PHP Warning: in_array() expects parameter 2 to be array, null given 5 years ago
Aleksander Machniak f0811f6f50 DOn't use deprecated (and slow) selectors 5 years ago
Aleksander Machniak 0c419e4dd1 Elastic: .compact-table fixes 5 years ago
Aleksander Machniak 8b74fd73da Update to jQuery 3.4.0 5 years ago
Aleksander Machniak cd4c756322 CS fixes 5 years ago
Aleksander Machniak 4674ac59b8 Fix bug where global includes were requested for vacation (#6716) 5 years ago
Aleksander Machniak a78f91f5dc Small code de-duplication 5 years ago
Aleksander Machniak fd167152e1 jqueryui plugin is already required by core 5 years ago
Aleksander Machniak 8036bfafab Fix setting button state when registering it after onload
Also get rid of uibutton support, it's not used anymore.
5 years ago
Aleksander Machniak 9ab932d9ba Remove redundant "ERROR: " prefix 5 years ago
Aleksander Machniak 706313bdeb Elastic: Fix setting pretty select popup width
In some cases the min_width was set to value bigger than max_width.
5 years ago
Aleksander Machniak b8f27af8cb Elastic: Fix non-working pretty selects in Chrome browser (#6705) 5 years ago
Aleksander Machniak 23978006da Add note about IIS and woff fonts (#6710) 5 years ago
Aleksander Machniak 6fd2366a94 Merge branch 'dsoares-wash-xml-namespace' 5 years ago
Aleksander Machniak a07c44804a Update changelog 5 years ago
Aleksander Machniak 6f479096d5 Merge branch 'wash-xml-namespace' of https://github.com/dsoares/roundcubemail into dsoares-wash-xml-namespace 5 years ago
Aleksander Machniak fc44e4612f Merge branch 'nuxwin-#6704' 5 years ago
Aleksander Machniak 2f05533710 Small code improvements 5 years ago
Aleksander Machniak 0cc1ec0131 Merge branch '#6704' of https://github.com/nuxwin/roundcubemail into nuxwin-#6704 5 years ago
Aleksander Machniak f045812fcc Bump masterminds/html5 version up 5 years ago
Aleksander Machniak b304782cbc Elastic: Various cross-browser fixes and improvements 5 years ago
Laurent Declercq ae59269f27
Make use of rcube::raise_error() function for error handling in bin/install-jsdeps.sh (#6704) 5 years ago
Aleksander Machniak 4d1b3e263a Elastic: Fix folders list scrolling on touch devices (#6706) 5 years ago
Aleksander Machniak a35699637d Fix PHP error when using Net_LDAP3 from master
get_entry() method signature has changed. We don't really needed
that override in rcube_ldap_generic, so it's now removed.
5 years ago
Aleksander Machniak 347b92f8cf Update tinymce languages url 5 years ago
dsoares 00cc13a1b9 Fix bug where HTML messages with a xml:namespace tag were not rendered. 5 years ago
Aleksander Machniak b667f1ec02 Elastic: Better buttons alignment in .menu.footer .buttons 5 years ago
Aleksander Machniak c2a5ffeecb Elastic: Fix inactive options in #mailto-menu (regression) 5 years ago
Aleksander Machniak a75ad5e9b1 Elastic: Remove redundant styles 5 years ago
Aleksander Machniak b86472badf Elastic: Fix scrollbar issue in jQuery-UI dialogs
Bootstrap's box-sizing:border-box on everything does not work nice with jQuery-UI.
5 years ago
Aleksander Machniak 1a68fe25c0 Elastic: Fix padding in jQuery-UI dialogs 5 years ago
Aleksander Machniak 96df04b020 Elastic: Small spacing fix 5 years ago
Aleksander Machniak e8ff189627 Use simpler code 5 years ago
Aleksander Machniak 77439f9772 Add missing role=menuitem 5 years ago
Aleksander Machniak 79ca8bc40a Elastic: Small regression in .menu.footer 5 years ago
Aleksander Machniak ddef3926aa Fix TinyMCE download location (#6694) 5 years ago
Aleksander Machniak 4524156a3d Merge branch 'dev/elastic' of github.com:roundcube/roundcubemail into dev/elastic 5 years ago
Aleksander Machniak f1e911ec03 Elastic: Toolbar/menus/layout refactoring
Refactoring for better consistency and simplicity.

5KB less in size of (minified) styles.css file.

Layout changes:
- body > #layout > .menu       -> #layout-menu
- body > #layout > .list       -> #layout-list
- body > #layout > .sidebar    -> #layout-sidebar
- body > #layout > .content    -> #layout-content

Toolbar/menu changes:
- .toolbar           -> .toolbar.menu
- .toolbarmenu       -> .menu.listing
- .menu-button       -> .task-menu-button
- .pagenav.toolbar   -> .pagenav.menu
- #taskmenu          -> #taskmenu.menu.toolbar
- .image-tools .menu -> .image-tools .menu.toolbar
- required .disabled class to de-activate menu items
- .button class is not required on .menu children
- merge toolbar.less and taskmenu.less into menu.less
- @color-toolbarmenu-hover            -> @color-menu-hover
- @color-toolbarmenu-hover-background -> @color-menu-hover-background

Also cleaned/removed some code in spellchecker.js. Made .googie_list a list not table.
5 years ago
Aleksander Machniak e8a332e628 Elastic: Toolbar/menus/layout refactoring
Refactoring for better consistency and simplicity.

5KB less in size of (minified) styles.css file.

Layout changes:
- body > #layout > .menu       -> #layout-menu
- body > #layout > .list       -> #layout-list
- body > #layout > .sidebar    -> #layout-sidebar
- body > #layout > .content    -> #layout-content

Toolbar/menu changes:
- .toolbar           -> .toolbar.menu
- .toolbarmenu       -> .menu.listing
- .menu-button       -> .task-menu-button
- .pagenav.toolbar   -> .pagenav.menu
- #taskmenu          -> #taskmenu.menu.toolbar
- .image-tools .menu -> .image-tools .menu.toolbar
- required .disabled class to de-activate menu items
- .button class is not required on .menu children
- merge toolbar.less and taskmenu.less into menu.less
- @color-toolbarmenu-hover            -> @color-menu-hover
- @color-toolbarmenu-hover-background -> @color-menu-hover-background

Also cleaned/removed some code in spellchecker.js. Made .googie_list a list not table.
5 years ago
Aleksander Machniak dbf6e0a81d Improve display_message() for sophisticated 'loading' messages
So it's possible to display more than one message of type 'loading'
at a time and define custom timeout.
5 years ago
Aleksander Machniak fae26eab13 Elastic: Add Prev/Next buttons on message page toolbar (#6648) 5 years ago
Aleksander Machniak f1c40c8aa9 Fix bug where attachment preview didn't work with x_frame_options=deny (#6688) 5 years ago
Aleksander Machniak 27408182b9 Expect skin thumbnails to be in assets 5 years ago
Aleksander Machniak ab7eeb3daa CS fixes 5 years ago
Aleksander Machniak d8488aae32 Disable spellcheker (hide button) if the list of languages is empty
Better handling of uninitialized (not installed) spellchecker engine.
Also prevent from PHP fatal error if enchant ext is not installed.
5 years ago
Aleksander Machniak 844ec53612 Elastic: Fix bug where toolbar disappears on attachment menu use in Chrome (#6677) 5 years ago
Aleksander Machniak c827925051 Fix so "Open in new window" consistently displays "external window" interface (#6659)
Both 'show' and 'extwin' will use _extwin=1 argument.
5 years ago
Aleksander Machniak b15e61a17f Elastic: Remove incorrect .proplist padding 5 years ago
Aleksander Machniak 3eebe8da56 Elastic: Fix overflow issues in ACL form 5 years ago
Aleksander Machniak 3b4d07a055 Elastic: Close search options on Enter key press in quick-search input (#6660) 5 years ago
Cedric Girard c7677a5722 Follow redirection when downloading with curl (#6681) 5 years ago
Aleksander Machniak 982919582c Add zh_MO and zh_HK as aliases of zh_TW (#6666)
with CS fixes
5 years ago
Aleksander Machniak 53c37a1321 WS and CS fixes 5 years ago
Boris Rybalkin 2d85dad0cc Support ROUNDCUBE_CONFIG_DIR env variable (#6112) 5 years ago
Aleksander Machniak 2bd039c9b5 Merge branch 'master' of github.com:roundcube/roundcubemail 5 years ago
Aleksander Machniak ab28c4ae26 Fix bug where external content (e.g. mail body) was passed to templates parsing code (#6640)
It should have been part of "Fix so templating system does not mess with external (e.g. email)
content (#5499)" (d02e6ea45e), but it wasn't.
5 years ago
Peter Kubica b2ffe58f9d Fix for: Password: De-duplicate ldap drivers code (#6669) 5 years ago
Aleksander Machniak 9d19d5b5d5 Merge branch 'army1349-master' 5 years ago
Aleksander Machniak 0751c1c8eb Password: De-duplicate ldap drivers code 5 years ago
Aleksander Machniak 2ea9d4fe80 Merge branch 'master' of https://github.com/army1349/roundcubemail into army1349-master 5 years ago
Aleksander Machniak 0ac2747293 Elastic: Add missing filter drag-n-drop indicators 5 years ago
Aleksander Machniak d88fb7e4ff Elastic: Fix displaying (.invalid-feedback) error messages in forms 5 years ago
Aleksander Machniak 78070441de Elastic: Move Actions button from filters list footer to header 5 years ago
Aleksander Machniak 939ca63a59 Filters set -> Filter set, consistently 5 years ago
Aleksander Machniak 4fff3315d0 Elastic: Changed read/unread icons (#6636) 5 years ago
Aleksander Machniak 7387bfcd0c Elastic: Changed "Move to..." icon (#6637) 5 years ago
Aleksander Machniak 0f6f20c629 Elastic: Improve selector for table.propform content 5 years ago
Aleksander Machniak b232886488 Properly cleanup on drag end in treelist widget 5 years ago
Peter Kubica 07d7ec83a0 ldap_exop - move function exist check to the start 5 years ago
Aleksander Machniak 743794f1d8 Treelist: Add possibility to not reset selection on reset() 5 years ago
Peter Kubica 772dad8805 ldap_exop - add PHP version requirement 5 years ago
Peter Kubica 51abe31f1a ldap_exop - fix issue #4992 5 years ago
Aleksander Machniak 3c760092a0 Merge branch 'johndoh-less_cleanup' 5 years ago
Aleksander Machniak 43e540f72f Elastic: Fix edit icon regression 5 years ago
Aleksander Machniak 5fb08eeb3f Elastic: Fix next/prev icons in toolbar 5 years ago
Aleksander Machniak 34ee036efc Merge branch 'less_cleanup' of https://github.com/johndoh/roundcubemail into johndoh-less_cleanup 5 years ago
Aleksander Machniak 5058d36581 Fix bug where next row wasn't selected after deleting a collapsed thread (#6655) 5 years ago
PhilW 98f0abf9dd fix css selector 5 years ago
Aleksander Machniak ad4ea7e62e Merge branch 'master' of github.com:roundcube/roundcubemail 5 years ago
Aleksander Machniak 950512dce1 Update changelog 5 years ago
Aleksander Machniak 0acb53cde6 Merge branch 'johndoh-adv_options' 5 years ago
Aleksander Machniak c0b9c222fc Merge branch 'adv_options' of https://github.com/johndoh/roundcubemail into johndoh-adv_options 5 years ago
dchisolm b0f7e4207c Parse abook entries more reliably (#6646)
* Update the squirrelmail_user_copy plugin to use the same method of parsing abook entries
as squirrelmail uses. If a user has entered something that has been quoted such as double quotes or pipes, this will parse the address book entry better than exploding on the pipe alone
* Noticed undefined variable $sig in convert charset
5 years ago
Aleksander Machniak b313295e45 Merge branch 'less_cleanup' of https://github.com/johndoh/roundcubemail into johndoh-less_cleanup 5 years ago
johndoh 8957f496db fix tiny typo (#6654) 5 years ago
PhilW 9543e6af7e remove some duplicate code in toolbar.less 5 years ago
Aleksander Machniak e3e9573391 Fix small issue when quota object does not specify 'title' 5 years ago
Thomas Bruederli 0c01dad398 Add margin to buttons inside alert boxes 5 years ago
Aleksander Machniak cc20de329d Elastic: Use Bootstrap's custom file input
... with localization and some js logic to display selected file(s) in the input.
5 years ago
Aleksander Machniak ede90c1f8c Elastic: Fix adding Cc/Bcc fields in Bounce dialog 5 years ago
Aleksander Machniak bca1397927 Fix links to Identities/Responses 5 years ago
PhilW fbc052e5df (Elastic) hide advanced settings sections 5 years ago
Aleksander Machniak e7816ccd36 Elastic: Keep original line wrapping in Message headers dialog 5 years ago
Aleksander Machniak 9b553aa2e0 Elastic: Improve "Mark all as read" dialog style (use .proplist) 5 years ago
Aleksander Machniak 147a2c8611 Elastic: Use appropriate icon for Mark button in "Mark all as read" dialog 5 years ago
Aleksander Machniak 553f83618e Elastic: Custom switch improvements 5 years ago
Aleksander Machniak 88c5507f29 Elastic: Replace .icon-checkbox with Bootstrap's custom switch 5 years ago
Aleksander Machniak 26bce22bff Fix bug when aborting dragging with ESC key didn't stop the move action (#6623)
+ small code improvements
+ focus the list on drag start to make sure it's focused state is up-to-date
  which is needed for proper keypress handling (e.g. ESC key on drag action)
5 years ago
Aleksander Machniak b2b39ade23 Bootstrap 4.3.1 5 years ago
Aleksander Machniak 2373aea95c Elastic: Add style for .part-notice elements (like e.g. .boxwarning) 5 years ago
Aleksander Machniak 167c9aee6f Update changelog 5 years ago
Aleksander Machniak 04fef18459 Merge branch 'mharjac-master' 5 years ago
Aleksander Machniak 7a4aed8320 Move common code to a function 5 years ago
Aleksander Machniak 79c1135052 Merge branch 'master' of https://github.com/mharjac/roundcubemail into mharjac-master 5 years ago
Athanasios Douitsis 2427b0967b Add icon for language selection form (#6624)
Trying to fix the appearance of the login-language selector for the new elastic theme.

This is a small addition which makes the login-language plugin present an icon, like the rest of the login form fields. I have also issued a request for the login form selector to drop the custom styles attribute: https://github.com/hassansin/roundcube-login-language/issues/11. These two (small) enhancements make the login form appear perfectly when the login-language plugin is used.

Here is the corrected result with these changes applied: https://imgur.com/a/5clC67e
5 years ago
Mario Harjac 136175e445 Fix missing CSRF token in message download (#6621) 5 years ago
Aleksander Machniak 641a67fe75 Elastic: Fix unintentional layout preference overwrite (#6613)
This is actually skin-independent mechanism that prevents overwriting
of skin-specific preferences by ajax requests (that until now were
not aware of skin config).
5 years ago
Aleksander Machniak 77fc589974 Fix regression where operator/comparator were not reset on submit (#6614) 5 years ago
johndoh d0c7e8d7c3 Remove favicon template object from template files (#6612) 5 years ago
Aleksander Machniak 43499432a5 Elastic: Fix height of select elements inside of composite fields
also make them pretty when added programatically.
5 years ago
Aleksander Machniak 9a757aa688 Keep meta and links together 5 years ago
Aleksander Machniak 9d51e40f9e Code cleanup 5 years ago
Aleksander Machniak 0492b1f6e5
HTML5 Upload Progress (#6177) (#6583)
Replaced all old upload progress code in favour of ajax upload progress.
Instead of posting a hidden iframe, we now use AJAX (as we did for drag-n-drop).
Removed code for old browsers. Now we support IE >= 10, Firefox > 4.
Upload progress may not work in some more, but support is quite good.
5 years ago
johndoh 8f62aed866 Create new meta and links template objects, replace favicon (#6611) 5 years ago
Aleksander Machniak fbdaab714b Merge branch 'master' of github.com:roundcube/roundcubemail 5 years ago
Aleksander Machniak c66199ffd2 Add cache busters also to images used by templates (#6610) 5 years ago
Aleksander Machniak db61f39e89 Add note about possible SELINUX issue (#6601) 5 years ago
Aleksander Machniak 6e74498656 Fix so mime_content_type check in Installer uses files that should always be available (i.e. from program/resources) (#6599) 5 years ago
Aleksander Machniak 74fe74bf7d Make "0.9 or newer" a default selection for db schema update box 5 years ago
Aleksander Machniak 1473522928 Keep .diff instead of .orig files 5 years ago
Aleksander Machniak b6a3df2824 Update to jQuery-MiniColors 2.3.4
Fixes color picker issue when using Roundcube in an iframe.
5 years ago
johndoh fa754c4ebc Elastic: remove hover effect on dropbuttons when primary action is disabled (#6597) 5 years ago
Aleksander Machniak 9fe46a4a9a Update to OpenPGP.js 4.4.6 5 years ago
Aleksander Machniak 834266c469 Elastic: Close popups when switching tabs 5 years ago
Aleksander Machniak 82974289b9 Fix typo 5 years ago
Aleksander Machniak 6dce805221 Improve last fix so it also remove temp file if Mail_Mime returned an error 5 years ago
Aleksander Machniak 1767b256e4 Fix bug where big messages could not be saved to imap folder in low memory mode 5 years ago
Aleksander Machniak fe5b4fd81d fputs() -> fwrite() 5 years ago
Aleksander Machniak d392e2d72a Elastic: Fix too small height of mailvelope mail preview frame (#6600) 5 years ago
Aleksander Machniak 0cd1e9d01b Merge branch 'johndoh-contact_selection' 5 years ago
Aleksander Machniak 82c495e6b4 PR cleanup 5 years ago
PhilW e5f5e6576d add some selection options to contacts list 5 years ago
Aleksander Machniak 99ad249f6d Elastic: Add title with full folder name on folders list elements
if displayed folder name is truncated because of overflow.
5 years ago
Aleksander Machniak db780a2db5 Fix small regression after last commit 5 years ago
Aleksander Machniak fe35b38c28 Managesieve: Fix bug where custom header or variable could be lost on form submission (#6594) 5 years ago
Aleksander Machniak e876e7b861 Add no-bs class to search form inputs
... so they don't get form-control assigned by Elastic logic
5 years ago
Aleksander Machniak 61eb78ad64 Fix so ANY record is not used for email domain validation, use A, MX, CNAME, AAAA instead (#6581) 5 years ago
Thomas Bruederli 3c6998d94e Slightly increase task menu width to better fit labels in other languages 5 years ago
Aleksander Machniak 823dc2eaac Fix PHP 7.2 compatibility in debug_logger plugin (#6586) 5 years ago
Victor Benincasa 2bf75060e9
Update DirectAdmin socket communication class to v. 3.0.2
Socket communication class from the official repository: http://files.directadmin.com/services/all/httpsocket/
5 years ago
Aleksander Machniak e69d1e7f04 Fix so max_message_size limit is checked also when forwarding messages as attachments (#6580) 5 years ago
Aleksander Machniak d7b510978e Fix regressions in attachment rename and attachment title attribute setting 5 years ago
Aleksander Machniak a859bd43a0 Elastic: Fix buttons in filters form 5 years ago
Aleksander Machniak 8e24761815 Elastic: Fix button regressions
I give up. The text is still about 2px up, but this
is because of how the font is rendered and that in latin languages
we end up with most letters not having descending parts.
Also, it's slightly better in Chrome than in Firefox.
5 years ago
Aleksander Machniak 5fafae7b2d Elastic: Move aboutcontent object inside div.frame-content 5 years ago
Aleksander Machniak c14371efdc Elastic: Fix buttons (again)
Last change make the button height too small, imo. Also in broke
slightly dialog buttons on mobile. The change also improves some
specific button styles, e.g. dialog Close button.
5 years ago
Aleksander Machniak 829395ed13 Improvements in contact import dialog
- Fix Import button state on import errors
- Focus Cancel button on form submission
- Don't reload contacts list when import failed
5 years ago
Thomas Bruederli 2f9ea5e078 Update localizations from Transifex 5 years ago
Thomas Bruederli 3b779a64be Update copyright year 5 years ago
Thomas Bruederli 117bba6d2a Add SVG version of contact/group pictures
Artwork derived from free fontawesome icons
5 years ago
Thomas Bruederli a62479a311 Display small buttons in message-objects box 5 years ago
Thomas Bruederli 6b2def23e2 Improve button text and icon alignment 5 years ago
Aleksander Machniak 5693b4f31c Fix bug in parsing some IMAP command responses that include unsolicited replies (#6577) 5 years ago
Aleksander Machniak a7df28093f Make rcube_session::unserialize() public method 5 years ago
Aleksander Machniak a7721facdf Elastic: Fix recipient input on paste event 5 years ago
Evertiro ce0eb318f4 Password: Better handling for Plesk errors (#6575) 5 years ago
Kevin Puetz 0dc37ed5fa Update passwd-expect -ssh to allow for ECDSA (#6574)
fingerprint_string could have different wording on a modern installation if the server key is not RSA
6 years ago
Aleksander Machniak 881b344fba Fix regression in vcard parser 6 years ago
Aleksander Machniak 35e2bffb90 Support simple field labels (e.g. LetterHub examples) in csv imports (#6541) 6 years ago
Aleksander Machniak 8caf3b659c Password: Add support for Plesk >= 17.8 (#6526) 6 years ago
Aleksander Machniak 32a0ad6778 Force session.gc_probability=1 when using custom session handlers (#6560) 6 years ago
Aleksander Machniak 5c1154a4ba Elastic: Fix selected state colors in datepicker 6 years ago
Aleksander Machniak 58fd5bc060 Fix get_skin_path() so it always returns main skin path not plugin's 6 years ago
Aleksander Machniak 3c89599890 Elastic: Add style for login-footer addons 6 years ago
Aleksander Machniak 96c769143a Get rid of (localized) units for memory stats 6 years ago
Aleksander Machniak 8a04d3f993 Fix so performance stats are logged to the main console log also when per_user_logging=true 6 years ago
Aleksander Machniak d3c65d752b Remove useless "return null;" at the end of function block 6 years ago
Aleksander Machniak 0e640e95c9 Enigma: Fixed multi-host syncronization of private and deleted keys and pubring.kbx file
Added context column to filestore table for easier listing of stored files.
6 years ago
Aleksander Machniak 81337b7f31 Elastic: Remove clear icon from recipient input in IE11 6 years ago
Aleksander Machniak d6184ab516 Elastic: Small IE11 fix 6 years ago
Aleksander Machniak de386b9614 Elastic: Fix login form in IE11 (#6565) 6 years ago
Aleksander Machniak 5d0a9a51e2 Elastic: Use Bootstrap's spinner (and spinner-border instead of custom fa-spin) 6 years ago
Aleksander Machniak 8337db6b53 Upgrade to Bootstrap 4.2.1 6 years ago
Stuart Henderson 98349c19f6 Fix typo LOG_EMERGE (#6566) 6 years ago
Aleksander Machniak 7a49b48dc1 Fix handling of empty entries in vCard import (#6564) 6 years ago
Aleksander Machniak 35a0909e06 Elastic: Revert form-control:invalid border changes (#6565) 6 years ago
Aleksander Machniak 01faf9060c Update localization 6 years ago
Aleksander Machniak b85c5b3b7a Elastic: FontAwesome 5.6.3, use fire-alt instead of fire icon for Junk 6 years ago
Aleksander Machniak b0c83111de Fix rcube_imap_cache in mode set to MESSAGE only 6 years ago
Aleksander Machniak 328c32402d Elastic: Improve .form-control:invalid style (at least for Firefox) 6 years ago
Aleksander Machniak aa7e2febd1 Add 'required' to the list of boolean attributes 6 years ago
Aleksander Machniak d3da7fad5a Set type attribute for created button 6 years ago
Aleksander Machniak 72ef71097e Elastic: Add missing type attribute on buttons and remove href 6 years ago
Aleksander Machniak 36485dfc34 Prevent from using deprecated timezone names from jsTimezoneDetect
For better interoperability of plugins such as Calendar, for example
issue see: https://git.kolab.org/T2666.
6 years ago
Aleksander Machniak a32d72b661 Password: Disallow control characters in passwords (#6547) 6 years ago
Aleksander Machniak 1a5708eb23 Elastic: Change compact and signature icons (#6556) 6 years ago
Aleksander Machniak 39e81d4710 Elastic: FontAwesome 5.6.1 6 years ago
Aleksander Machniak 0676e04e1a Enable tests on PHP 7.3 6 years ago
Aleksander Machniak 45618273e0 Fix dummy Message-Id when resuming a draft without Message-Id header (#6548) 6 years ago
Aleksander Machniak 708ceb2ba0 Elastic: Add style for HTML editor content (use embed.css for this) 6 years ago
Aleksander Machniak 943de28d2a Log IMAP/SMTP connection time in debug mode 6 years ago
Aleksander Machniak 00e53fac53 Elastic: Fix toolbar removal when using Advanced options and Add button in filter rules form in Chrome 6 years ago
Aleksander Machniak 4a896b46a7 When requesting a plugin template ignore global skin path(s) 6 years ago
johndoh 03425d1d2b Add 'listoptions' container element (#6540) 6 years ago
Aleksander Machniak e4b5dc6a41 Remove old fallback to the 'default' skin 6 years ago
Aleksander Machniak 6f6b741cde Update changelog 6 years ago
Aleksander Machniak 5063d9bfd9 Elastic: Fix various issues with datepicker in parent window 6 years ago
Aleksander Machniak 3502d9cb2b Elastic: Displat datepicker in parent window 6 years ago
Aleksander Machniak 890aedb29b Elastic: Add missing style of current position for keyboard navigation in datepicker 6 years ago
Aleksander Machniak 58ffbe2a83 Elastic: Datepicker improvements
- Added real background overlay, to fix issues with clicking outside
  of the datepicker element
- Use better positioning technique
- Re-styling on calendar update
6 years ago
Aleksander Machniak 5e4590ce55 Add CVE ID 6 years ago
Aleksander Machniak c1aa2169f6 Plugin API: Added 'ldap_connected' hook 6 years ago
Aleksander Machniak 394dacc1ae Merge branch 'master' of github.com:roundcube/roundcubemail 6 years ago
Aleksander Machniak cf05a924de Fix inconsistent offset for various time zones - always display Standard Time offset (#6531) 6 years ago
Aleksander Machniak edd9c31d6c Skip registering session handlers when session already exists
.. for a specific use case when I want to create additional rcube_session object
for discrete operations on another session.
6 years ago
Aleksander Machniak 6d19d1466e Elastic: Fix disabled floating action buttons (#6530) 6 years ago
Aleksander Machniak 9b1d5f9eeb Elastic: Cleanup some styles + fixed small regression 6 years ago
Aleksander Machniak 3aac86eca7 Elastic: Add @color-list-unread-status var 6 years ago
Aleksander Machniak 3116c81ec6 Elastic: Small code cleanup 6 years ago
Aleksander Machniak 356e6c09f7 Elastic: Improve ui messages' colors, make loading message dark again 6 years ago
Aleksander Machniak 725a531420 Elastic: Remove unused @color-message-shadow 6 years ago
Aleksander Machniak 8ff4fbadb1 Add option to delete users who have not logged in for more than X days (#6340) 6 years ago
Aleksander Machniak 07c5e178de Add some localization files 6 years ago
Aleksander Machniak 281a6135e3 Enigma: Update to OpenPGPjs 4.2.1 - fixes user name encoding issues in key generation (#6524) 6 years ago
Aleksander Machniak cb4b1443c8 Update localization 6 years ago
Aleksander Machniak 11216a1925 Changed 'password_charset' default to 'UTF-8' (#6522) 6 years ago
Aleksander Machniak 4935213fc6 Elastic: Remove hacks not needed since Bootstrap 4.1.3 6 years ago
Aleksander Machniak 084d47526f Elastic: Make the watermark logo gray (at least in browsers supporting background-blend-mode:luminosity) 6 years ago
Aleksander Machniak 5bb05680ac Elastic: Fix regression where "Select" option is disabled on mobile (#6523) 6 years ago
Aleksander Machniak 4480909db4 Elastic: Display full subject in mail preview (#6518) 6 years ago
Aleksander Machniak bba6c7e702 Elastic: Fix selection background on messages list 6 years ago
Aleksander Machniak c805f7eb42 Elastic: Visual improvements on logon screen 6 years ago
Aleksander Machniak e694b0f4cc Elastic: Fix some messages list icons in Chrome and IE 6 years ago
Aleksander Machniak 9babe138af Password: Change API for password checking
... for simpler implementation of strength indicator in future.

Also simplified configuration by removing password_check_strength and
adding password_minimum_score.
6 years ago
Andrius Štikonas 9c4e2c9abe Fix spelling. (#6517) 6 years ago
Aleksander Machniak 2b89713d06 Update changelog 6 years ago
Aleksander Machniak cb6c79e2dd
Integrate markasjunk2 features into markasjunk - marking as non-junk + learning engine (#6504) 6 years ago
Aleksander Machniak 70657e34b0 Remove unused 'login' command 6 years ago
Rotzbua f8b6493ecf Change http to https for plugins.roundcube.net (#6405) 6 years ago
Aleksander Machniak 0048be10a9 Ignore 'Sender' header on Reply-All action (#6506) 6 years ago
Aleksander Machniak cd9ec7983b Password: README, Style, CS improvements, bump version, update changelog 6 years ago
Aleksander Machniak 75d6687cac Merge branch 'password_plugin' of https://github.com/johndoh/roundcubemail into johndoh-password_plugin 6 years ago
Aleksander Machniak 224dd78ad3 Bump managesieve version number 6 years ago
Aleksander Machniak cec626a12f Use 'thumb' prefix, instead of '.thumb' suffix, for consistency 6 years ago
Aleksander Machniak afc68aae63 FIx temp_filename() regressions, update changelog, add note in UPGRADING 6 years ago
Aleksander Machniak 07d889f805 Merge branch 'temp_names' of https://github.com/johndoh/roundcubemail into johndoh-temp_names 6 years ago
Aleksander Machniak 2289642908 Elastic: Add .sso icon for buttons 6 years ago
PhilW e024f133fa give all temp files a constant prefix 6 years ago
Aleksander Machniak 316d52c924 Elastic: Add title attribute to "open in new window" button 6 years ago
Aleksander Machniak 947d78432e Elastic: Fix border radius on first/last popup menu item 6 years ago
Aleksander Machniak dbd115d0d1 Elastic: Reset margin-top on .contact-head 6 years ago
Aleksander Machniak 802ed0dc6d
Create autocomplete popup in a parent window when invoked from an iframe (#6503) 6 years ago
Aleksander Machniak 619ddfed3d CS fixes and consistence, update changelog 6 years ago
Aleksander Machniak 999845d3b2 Merge branch 'limit-skins' of https://github.com/dhoffend/roundcubemail into dhoffend-limit-skins 6 years ago
Aleksander Machniak 5542e91b21 Elastic: Fix small regression 6 years ago
Aleksander Machniak b3063b518f Elastic: Add some devel_mode known issues to the README 6 years ago
Aleksander Machniak 0389ffdbab Elastic: On touch devices display attachment icons on messages list (#6296) 6 years ago
Aleksander Machniak 42cb98149c Close autocomplete list on scroll event 6 years ago
Aleksander Machniak daf46075d0 Merge branch 'menu_buttons' of https://github.com/johndoh/roundcubemail into johndoh-menu_buttons 6 years ago
Aleksander Machniak 2d172126e7 Elastic: Remove redundant code 6 years ago
PhilW d2c2ddb9a0 code improvement, avoid empty menu_button array entries 6 years ago
PhilW f028ff0c48 remove redundant var 6 years ago
PhilW 99fc4cd387 support multiple buttons for the same menu 6 years ago
Aleksander Machniak f85a33f150 Elastic: Fix TypeError: Argument 1 of MutationObserver.observe is not an object 6 years ago
Aleksander Machniak 2935b3a66a Fix malformed message saved into Sent folder when using big attachments and low memory limit (#6498) 6 years ago
PhilW 30fb7fc552 store menu buttos by menu id 6 years ago
Aleksander Machniak 19a818a8b7 Elastic: Add "status bar" for mobile in mail composer 6 years ago
Aleksander Machniak 7b203cbc52 Fix bug where a message/rfc822 part without a filename wasn't listed on the attachments list (#6494) 6 years ago
Aleksander Machniak 09c9443a54 Fix disabled acl table menu button (regression) 6 years ago
Aleksander Machniak 2940e2f948 Elastic: Fix blur and mouse selection on the recipient-input 6 years ago
Aleksander Machniak c93d11b473 Merge branch 'master' of github.com:roundcube/roundcubemail 6 years ago
Aleksander Machniak ab6b651ac9 - Make menu button inactive if all subactions are inactive (#6444)
Elastic skin only (for now)
6 years ago
Aleksander Machniak 3dad8c5908 Fix incorrect IMAP SASL GSSAPI negotiation (#6308) 6 years ago
Aleksander Machniak c4916a8fe3 Simplify code that uses setError() followed by return 6 years ago
Aleksander Machniak a86d9cd5aa Fix so unicode in local part of the email address is also supported in recipient inputs (#6490)
Relax javascript email address checker.
6 years ago
Aleksander Machniak 288a0fa137 Elastic: Fix js error when accessing page jumper input with a Tab key 6 years ago
Thomas Bruederli e8daccfe57 Add 1.3.8 release milestone 6 years ago
Aleksander Machniak 90a203fbbe Fix .recipient-input height regression 6 years ago
Aleksander Machniak 186f21c4c1 Avoid Referer leaking by using Referrer-Policy:same-origin header (#6385)
Added 'common_headers' hook
6 years ago
Aleksander Machniak cf7e4f12b2 Stop adding some localization to ajax responses 6 years ago
Aleksander Machniak bec67c29b4 Display storage errors on refresh/check-recent action (#6474) 6 years ago
Aleksander Machniak 0fa9ad11d6 Remove useless href=# on menu items 6 years ago
Daniel Hoffend 8b2e466c00 limit skins available/shown in the settings section 6 years ago
Aleksander Machniak 0551b0f9c4 Elastic: Increase popup windows' size 6 years ago
Aleksander Machniak e282b11d25 Elastic: Fix various small css issues 6 years ago
Aleksander Machniak 5b6e983abf Upgrade to Bootstrap 4.1.3 6 years ago
Aleksander Machniak a4ebec90d6 Merge branch 'dev/elastic' 6 years ago
Aleksander Machniak dc3652f891 Elastic: Make sure pretty-select has also form-control and custom-select class assigned 6 years ago
Aleksander Machniak f28971c95c The localization label can also contain underscore char 6 years ago
Aleksander Machniak f1ee6d7906 Plugin API: Add possibility to specify HTTP return code via 'unauthenticated' hook 6 years ago
Aleksander Machniak 0816e14125 Elastic: Workaround for recipient input and autocompletion on mobile 6 years ago
Aleksander Machniak 33bf85f75c Elastic: Fix recipient input from autocomplete list using Enter key 6 years ago
Aleksander Machniak 49c66e3805 Elastic: Fix autocomplete list height 6 years ago
Aleksander Machniak e97848eada Elastic: Fix leftover comma characters after inserting multiple recipients at once 6 years ago
Aleksander Machniak 3a212b5be0 Update changelog 6 years ago
Aleksander Machniak 43baa575de Elastic: On mobile/tablet jump to the list on folder selection (#6415) 6 years ago
Aleksander Machniak ccff7c8313 Support returning jqXHR object from request* event handler 6 years ago
PhilW 1bf6dc3de8 Password: add Zxcvbn strength driver 6 years ago
PhilW 00946f1f57 give password plugin drivers more power
Allow password drivers more control over the entire password changeing
processes not just the save action. Allow them to perform old/new
password comparisons and also password strength checking.

*) allow password drivers override default password comparisons (eg
   new is not same as current) #6473
*) allow password drivers override default strength checks (eg allow
   for 'not the same as last x passwords')
*) allow separate password saving and strength drivers for use of
   strength checking services eg HaveIBeenPwned.com #5040
*) allow drivers to define password strength rules displayed to the
   user
*) rename password_require_nonalpha config option to
   password_check_strength to reflect new strength checking
   possibilities (added backwards compatibility)
6 years ago
Aleksander Machniak b8a0a6c57a Elastic: Align focus on some TinyMCE input group buttons 6 years ago
Aleksander Machniak 93748d0698 Elastic: Remove outline in Chrome on html editor mode switch 6 years ago
Aleksander Machniak ec61705441 Elastic: Improve keyboard navigation on html editor mode switch 6 years ago
Aleksander Machniak c8d133a6a0 Merge branch 'master' into dev/elastic 6 years ago
Aleksander Machniak 38255ff52a Elastic: Fix duplicate recipient after using Tab key in recipient input (regression) 6 years ago
Aleksander Machniak b126941846 Fix session issue on long running requests (#6470) 6 years ago
Aleksander Machniak 02ddb8d535 Use RCUBE_VERSION in defaults.inc.php, RCMAIL_VERSION is undefined when using Framework only 6 years ago
Aleksander Machniak 511ecd095c Add $protocol to the error message 6 years ago
urusha 4920f3ef23 krb_authentication fixes (#6471)
* krb_authentication: remove default principal

krb_authentication_context must be set to the right value to make GSSAPI work, we should not have any default for it outside config files, it could confuse users. We already handle empty/bad context in rcube_imap_generic.php, Net_Sieve, Net_SMTP.

* krb_authentication: config.php.dist fix

GSSAPI is better for searching, since GSS API is not used widely.
host.fqdn@REALM.NAME is actually never used without service-prefix, on the other side it may be valid to use 'computername$' or 'username' with Samba/Active Directory, the common name for all these - 'principal'.

* krb_authentication: raise error on empty context
6 years ago
Aleksander Machniak 9284d4a8c9 Update changelog 6 years ago
Stefanos Petrakis 8ab1e4fbc3 Fix multiple VCard field search (#6466) 6 years ago
Aleksander Machniak 4ad028677b Elastic: Make the HTML editor toolbar always visible on scroll (#6413) 6 years ago
Aleksander Machniak 645a3b0690 Elastic: Focus style on links inside of an .input-group 6 years ago
Aleksander Machniak 15c6a1754d Elastic: Shift+Tab on mail compose editor scrolls the page to the top (#6413) 6 years ago
Aleksander Machniak 91b5bffd3c Fix bug where autocomplete list could be displayed out of screen (#6469) 6 years ago
Aleksander Machniak 0a0ac045fe Fix bug where valid content between HTML comments could have been skipped in some cases (#6464) 6 years ago
Aleksander Machniak c1e8bd75c2 krb_authentication: Support per-protocol contexts 6 years ago
Aleksander Machniak 6dfb475a26 Elastic: Redesign mail compose page - use recipient selection dialog (#6413) 6 years ago
Aleksander Machniak b2961742ef Elastic: Support new-line char as a separator for pasted recipients (#6460) 6 years ago
Aleksander Machniak 255638cc44 Update changelog, require Net_SMTP 1.8.1 for GSSAPI support 6 years ago
urusha 75f37f8b0f SMTP GSSAPI support (#6417)
* krb_authentication support for smtp_connect
* smtp GSSAPI support
6 years ago
Aleksander Machniak 2dcf50019c Merge branch 'master' into dev/elastic 6 years ago
Aleksander Machniak e38b477b99 Fix including plugin scripts (regression) 6 years ago
Aleksander Machniak 2c12274d38 Fix style/navigation on error page depending on authentication state (#6362) 6 years ago
Aleksander Machniak e5c6c4f3f3 Elastic: Improved folder name input for special folders 6 years ago
Aleksander Machniak 29c3a404c3 Merge branch 'master' of github.com:roundcube/roundcubemail 6 years ago
Aleksander Machniak 2bf80b180c Update changelog 6 years ago
Fedor A. Fetisov ced00f9dd8 Fix support for "allow-from X" in "x_frame_options" config option (#6449) 6 years ago
Aleksander Machniak 4310046993 Remove redundant trim() 6 years ago
Aleksander Machniak a8542e9c08 Elastic: Add title to taskmenu entries with too long labels (#6392) 6 years ago
Aleksander Machniak b7d51573e4 Password: Fix bug where new users could skip forced password change (#6434) 6 years ago
Aleksander Machniak c28242f63c Log errors caused by low pcre.backtrack_limit when sending a mail message (#6433) 6 years ago
Aleksander Machniak adbff69852 Elastic: Fix unwanted thread expanding when selecting a collapsed thread in non-mobile mode (#6445) 6 years ago
Aleksander Machniak c01f322d10 Elastic: Fix menu labels overflow in Edge 6 years ago
Aleksander Machniak 03fef0d6ca New_user_identity: Fix %fu/%u vars substitution in user specific LDAP params (#6419) 6 years ago
Aleksander Machniak 796e5a17e6 Removed referer_check option (#6440) 6 years ago
Aleksander Machniak d868297a0a Elastic: Improved UX of search dialogs (#6416)
No onchange event handlers on selects, start searching only on Search button click.
6 years ago
Aleksander Machniak 68a018f147 Elastic: Fix small regression 6 years ago
Aleksander Machniak fe420a4e9e Update to TinyMCE 4.8.2 6 years ago
Aleksander Machniak c3fa3ff64f Elastic: Fix contact form fields in Edge on small screen 6 years ago
Aleksander Machniak 8f1405d569 Throw error when using deleteheader with :last but no :index 6 years ago
Aleksander Machniak 471234b4a1 Elastic: Small IE11 fix 6 years ago
Aleksander Machniak b8fa3ed836 Elastic: Fix logo image in IE11 6 years ago
Aleksander Machniak bae58951bf Fix bug where password_dovecotpw_with_method setting could be ignored (#6436) 6 years ago
Aleksander Machniak 6d37f3b6ef Bump Net_SMTP version 6 years ago
Aleksander Machniak 829f3ec0d6 Fix small issues in 'editheader' implementation 6 years ago
Aleksander Machniak 53017eb87d Managesieve: Added support for 'editheader' extension - RFC5293 (#5954) 6 years ago
Aleksander Machniak eaa81a5b61 Fix so invalid smtp_helo_host is never used, fallback to localhost (#6408) 6 years ago
Aleksander Machniak 85046cdea4 Cleanup modoboa driver 6 years ago
Stéphane 95a9080958 modoboa driver for password plugin (#6361) 6 years ago
Aleksander Machniak 4aea6c586a Update changelog 6 years ago
Allan Klaus 6a49ba5aa2 Added exec_hook to send error to an external error tracking tool (#6198) 6 years ago
Aleksander Machniak f306db930e Elastic: Fix tablet-mode logo size in Chrome 6 years ago
Aleksander Machniak ff819c56ba Fix custom logo size in Elastic (#6424) 6 years ago
Aleksander Machniak e9ea2f2aeb Managesieve: Fix bug where show_real_foldernames setting wasn't respected (#6422) 6 years ago
Aleksander Machniak 5cdb54221f Fix listing the same attachment multiple times on forwarded messages 6 years ago
urusha 2537697693 Fix krb_authentication for managesieve connection (#6414) 6 years ago
Aleksander Machniak 94f8e4607d Elastic: Fix jQuery-UI menus positioning 6 years ago
Rotzbua 4a6a494f27 Add again charset .. (#6406)
.. just to prevent from a warning in browser console
first commit: f8800e75fd
6 years ago
Rotzbua d8e1d11b8f Fix tiny typo (#6407) 6 years ago
Aleksander Machniak 72a3fb764b Fix compatibility with MySQL 8 - error on 'system' table use 6 years ago
Thomas Bruederli 728c186943 Deprecate debug_level config option 6 years ago
Aleksander Machniak dab4b5da67 Fix typo 6 years ago
Aleksander Machniak 0dee528adb Add test for #6410 6 years ago
Aleksander Machniak adcac3b9de Fix CSS issue in handling invalid style tag content (#6410) 6 years ago
Aleksander Machniak ef4596d7ce Elastic: Fix TinyMCE menus on mobile 6 years ago
Aleksander Machniak 5643b6315e Small improvements 6 years ago
Aleksander Machniak 1e6c8e1e3d Merge branch 'master' of github.com:roundcube/roundcubemail 6 years ago
Aleksander Machniak dbfb610d26 Elastic: Fix missing icon on 'uploading' message 6 years ago
Thomas Bruederli e6ca513bb1 Add 1.4-beta milestone to changelog 6 years ago
Thomas Bruederli c5a7b6aa4e Add browser support section to README
+ remove washtml reference
6 years ago
Aleksander Machniak 75fd0a73cb Register 'uploading' label globally 6 years ago
johndoh bf45373531 Update favicon to latest logo (#6395) 6 years ago
Aleksander Machniak 4633efb3df Fix so Classic skin splitter does not escape out of window (#6397) 6 years ago
Aleksander Machniak 24e3977d74 Fix invalid regular expressions that throw warnings on PHP 7.3 (#6398) 6 years ago
Aleksander Machniak aefdbdbfa1 Elastic: Display "the list is empty" on empty pgp keys list 6 years ago
Aleksander Machniak 4b0a2852e8 Elastic: Fix .proplist padding 6 years ago
Aleksander Machniak ada2570099 Elastic: Fix input-group height inside of .proplist 6 years ago
Rotzbua 6b930e136e [doc] Update links to gone projects (#6388)
Link to archived site.
6 years ago
Rotzbua 7a848bc56a [doc] Update links from http to https (#6387) 6 years ago
Aleksander Machniak ac9936e578 Elastic: Improve adding Select button in some additional/corner cases 6 years ago
Aleksander Machniak 19c0d48267 Enigma: Skip encryption if the message has been already encrypted by Mailvelope 6 years ago
Aleksander Machniak 1b1a22fdac Merge branch 'master' of github.com:roundcube/roundcubemail 6 years ago
Aleksander Machniak 412c5ab75b Enigma: Fix deleting keys with authentication subkeys (#6381) 6 years ago
Aleksander Machniak b233bc9d64 Elastic: Support .input-group-combo with just two select elements 6 years ago
Aleksander Machniak 477931eceb Elastic: Add background for .special-buttons element in the menu (#6376)
So overlapping other buttons looks better
6 years ago
Aleksander Machniak 19332495b0 Fix so fallback from BINARY to BODY FETCH is used also on [PARSE] errors in dovecot 2.3 (#6383) 6 years ago
Aleksander Machniak 988ed7e565 Fix PHP warnings on dummy QUOTA responses in Courier-IMAP 4.17.1 (#6374) 6 years ago
Aleksander Machniak b615c22c61 Elastic: Fix menu width on 768px width in iPad 2 6 years ago
Aleksander Machniak 27c1026e99 Add 1.3.7 mark 6 years ago
Aleksander Machniak ca6324afb7 Add note about purpose of the defaults.inc.php file 6 years ago
Thomas Bruederli f42aa2cb23 Updated elastic logo from @drudesign 6 years ago
Aleksander Machniak 843afea2d5 Elastic: Close search options form on 'list' request (#6345) 6 years ago
Aleksander Machniak 22ad707b8c Make 'messageerror' template optional, remove it for Elastic 6 years ago
Aleksander Machniak 46a13a8d77 Elastic: Fix focus on dialog buttons in mobile mode 6 years ago
Aleksander Machniak be675bb4a5 Make copyright and license notice a template objects 6 years ago
Aleksander Machniak abfb7ce2ff Elastic: Logo related fixes/improvements
- Use only one image for logo and watermark
- Fix watermark.html in devel_mode (no generated styles.css file)
6 years ago
Aleksander Machniak c9010fec02 Elastic: Fix managesieve forward email field size - use new input-group-combo widget (#6359) 6 years ago
Thomas Bruederli 0c9494cede Apply new logo design for elastic
Integrate new logo by @drudesign as SVG graphic using <roundcube:object name="logo"> for easy customization.
6 years ago
Aleksander Machniak c6e6ed36f2 Don't use nested if blocks - they do not work properly 6 years ago
Aleksander Machniak 93965fa79c Get rid of outdated supported browsers list in the error page
We anyway check only for javascript and xmlhttprequest support
6 years ago
Aleksander Machniak eefbbb6749 Fix detecting the opener window (#6319) 6 years ago
Aleksander Machniak 246b1ef02c Elastic: Fix buttons box-shadow in :active and :focus state 6 years ago
Aleksander Machniak 1841f17879 Bootstrap 4.1.2 6 years ago
Aleksander Machniak 4f2b795cd2 Fix doc for 3rd argument of rcube::deliver_message() (#6353) 6 years ago
Aleksander Machniak c6f16c4b20 Elastic: New skin thumbnail image 6 years ago
Aleksander Machniak 5712af8388 Elastic: Use bold font for folders with unread messages (#6349) 6 years ago
Aleksander Machniak 8161b7c970 Elastic: Fix search scope selection (#6346) 6 years ago
Aleksander Machniak f5f9defa75 Elastic: Support messages of type chat notice (or any subtype notices) 6 years ago
Aleksander Machniak bfba7e5d03 Elastic: Corrected .select.unread icons 6 years ago
Aleksander Machniak da5ef62bf0 Elastic: Don't display "No contact selected" warning when clicking on pagenav buttons 6 years ago
Aleksander Machniak 70ffc252bf Merge branch 'dev/elastic' 6 years ago
Aleksander Machniak cba1605949 Add http_only argument to rcube_utils::setcookie() 6 years ago
Aleksander Machniak 7e8299cd53 Remove debug code 6 years ago
Aleksander Machniak 8cf9b02d42 Elastic: Add possibility to bypass dialog-mode for new windows 6 years ago
Aleksander Machniak 0f24dde2dd Elastic: Add data-hidden=lbs to hide elements everywhere except phones 6 years ago
Aleksander Machniak fc29b2089a Elastic: Use dot instead of star for unread status icon
and fix some issues with .unreadchildren class
6 years ago
Aleksander Machniak 4b560bf2a0 Elastic: Add chat icon for taskmenu and prefs section entries 6 years ago
Aleksander Machniak 631ae17ee3 Allow plugins to set class attribute for preferences section 6 years ago
Aleksander Machniak 18f252a63b Elastic: Fix datepicker z-index 6 years ago
Aleksander Machniak bbb0b5b5b0 Elastic: Fix pretty select so it works after being cloned 6 years ago
Aleksander Machniak 03af7e47e3 Elastic: Small alignment fix 6 years ago
Aleksander Machniak 944f0790a2 Elastic: Fix quota tooltip
Bootstrap allows hover+click but does not work properly with such
setting. We use hover on desktop and click on mobile
6 years ago
Aleksander Machniak 713562de83 Elastic: Make quota bar height smaller 6 years ago
Aleksander Machniak 2e1367c7b2 Elastic: Fix various corner-cases in pretty select 6 years ago
Aleksander Machniak 9eba51e23b Merge branch 'master' into dev/elastic 6 years ago
Aleksander Machniak 34dc62b9e9 Elastic: FontAwesome 5.1 6 years ago
Aleksander Machniak 086e781b8f Fix bug where some HTML comments could have been malformed by HTML parser (#6333) 6 years ago
Aleksander Machniak 78d808aaf7 Elastic: Use non-white background in footers/headers on mobile, other improvements 6 years ago
Aleksander Machniak fa5023f8f6 Update changelog 6 years ago
johndoh 4ea790ba37 Extend skin_logo allowing per skin logos (#6273) 6 years ago
Aleksander Machniak 4224ccdaa9 Elastic: Add some .keylist style 6 years ago
Aleksander Machniak c826fd502d Fix focus on the editor when switching modes 6 years ago
Aleksander Machniak 338486348e Fix adding uploaded images to image selector list 6 years ago
Aleksander Machniak 4d2d59f14f Elastic: Fixes to TinyMCE dialogs on mobile 6 years ago
Aleksander Machniak 6b02daba1d Elastic: Fix menu header height sometimes too small on phones 6 years ago
Aleksander Machniak d9864a616e Elastic: Hide page navigation input on phones 6 years ago
Aleksander Machniak 76c55e8263 Elastic: Fix .pagenav (e.g. in Filters) 6 years ago
Aleksander Machniak 10b85656d5 Add fake argument to TinyMCE languages download URL to force .zip extension 6 years ago
Aleksander Machniak 15650a4f2d Elastic: Small HTML editor style fixes 6 years ago
Aleksander Machniak 8ed053ccb7 Merge branch 'master' into dev/elastic 6 years ago
Aleksander Machniak e57582baf0 Fix image upload dialog for signatures 6 years ago
Aleksander Machniak 006fed33d3 Elastic: Completed TinyMCE styling 6 years ago
Aleksander Machniak 00acb46411 Update to TinyMCE 4.7.13, refactor image selector dialog, add style for Elastic skin 6 years ago
Aleksander Machniak 3f03502b2c Elastic: Fix reseting of folders search filter 6 years ago
Aleksander Machniak 44d0824585 Merge branch 'master' into dev/elastic
Conflicts:
	skins/elastic/styles/widgets/mail.less
6 years ago
Aleksander Machniak fd7d7faabd Improve checking folder delete rights according to RFC 4314 6 years ago
Aleksander Machniak 728e5c6cc4 Don't wrap attachment size (#6321) 6 years ago
Aleksander Machniak b816569a83 Improve description of imap_ns_* options, add note about FALSE value 6 years ago
Aleksander Machniak 58e514970e Add option to hide folders in share/other-user namespace or outside of the personal namespace root (#5073) 6 years ago
Aleksander Machniak 5e3868eb10 Fix so attachment without Content-ID is not an inline attachment (#5905) 6 years ago
Aleksander Machniak 5fd1b52f01 Update de_DE localization 6 years ago
Aleksander Machniak 19be9bdc36 Fix toolbars in Safari on desktop, fix Refresh button padding 6 years ago
Aleksander Machniak e9d38e847c Re-add setting error_log=syslog when log_driver=syslog 6 years ago
Aleksander Machniak 4d47fb6f0b Replace Save with Import button in messages import form 6 years ago
Aleksander Machniak 2fa112bd83 [EFAIL] Don't decrypt PGP messages with no MDC protection (#6289) 6 years ago
Aleksander Machniak 28145a707c Compat. fix 6 years ago
Aleksander Machniak c611ace9a2 Update German localization 6 years ago
Aleksander Machniak 6d0b30d456 Fix bug where messages list was not updated after moving ALL messages (#6310) 6 years ago
Aleksander Machniak d20197577e Elastic: On mobile display quota details on click 6 years ago
Aleksander Machniak 3d0b2cd3ce Pass PEAR errors to rcube::raise_error(), small CS improvements 6 years ago
Aleksander Machniak 12b1b54792 Fix bug where after "mark all folders as read" action message counters were not reset (#6307)
also fixed one PHP 7.2 warning
6 years ago
Aleksander Machniak 2275df3bca Fix js error when flagging a message as unread 6 years ago
Aleksander Machniak 9e289982ac Add "Disk usage: " prefix to the quota element title 6 years ago
Aleksander Machniak 6691756ea1 Fix bug where unicode contact names could have been broken/emptied or caused DB errors (#6299) 6 years ago
Aleksander Machniak 30ab2eec5f Remove function_exists() checks for mbstring functions 6 years ago
Aleksander Machniak 01f331e303 Merge branch 'master' of github.com:roundcube/roundcubemail 6 years ago
Aleksander Machniak 3ede8e5404 Show message flagged status in message view (#5080)
for Larry and Elastic
6 years ago
Aleksander Machniak e05be853da Enigma: Add hint about max upload size in key import form 6 years ago
Aleksander Machniak e9a189fb57 Merge branch 'master' into dev/elastic 6 years ago
Aleksander Machniak 8e27190865 Update some localizations 6 years ago
Aleksander Machniak aace65f9e2 Merge branch 'master' of github.com:roundcube/roundcubemail 6 years ago
Aleksander Machniak 23da29d28a managesieve: Rename "Vacation" to "Out of Office" 6 years ago
Aleksander Machniak 9e129c93d7 Fix blankpage compat. with assets_path setting 6 years ago
Aleksander Machniak 199761ad12 Fix blankpage compat. with assets_path setting 6 years ago
Aleksander Machniak 0a50b94fb9 Elastic: Remove redundant searchbar.less file
Searchbar styles has been moved to toolbar.less some time ago
6 years ago
Aleksander Machniak 23898c8afe Elastic: Fix inconsistent focus on custom-select
That's a Bootstrap bug, but we override colors anyway.
6 years ago
Aleksander Machniak 13ad9e6593 Merge branch 'master' into dev/elastic 6 years ago
Aleksander Machniak 9d3d600a25 Display a dialog for mail import with supported format description and upload size hint 6 years ago
Aleksander Machniak 594d33588c Update changelog 6 years ago
Caio Nardi 43fcf5bce7 Fix checking duplicated names in the zip file (#6302) 6 years ago
Aleksander Machniak 130b70e464 Use array() instead of [] 6 years ago
Aleksander Machniak 4b97f40af9 Get rid of debug_level (#6298) 6 years ago
Aleksander Machniak d0205f613d Fix redundant empty option in mailbox selector 6 years ago
Aleksander Machniak 253fb9bbd7 Elastic: Fix width of some select fields in sieve filter form
Not working properly since we use .custom-select without .form-control
6 years ago
Aleksander Machniak c4e65a61fe Fix empty 'for' attribute 6 years ago
Aleksander Machniak 1e9d262bbc Elastic: Fix page scrolling when using keyboard in menus 6 years ago
Aleksander Machniak 5843d8cdcd Elastic: Small improvements in message headers layout 6 years ago
Aleksander Machniak b08a5e7873 Display a hint about max file size for contacts import 6 years ago
Aleksander Machniak a235002ca1 Elastic: Unify min width for iframe'd dialogs
Make sure dialog is min 576px on desktop so the form inside
also uses desktop layout.
6 years ago
Aleksander Machniak 5de427e18b Elastic: Small improvements 6 years ago
Aleksander Machniak 79d3e03827 Elastic: Support forcing a jump to the list in show-list event 6 years ago
Aleksander Machniak 32ffe336a8 Elastic: On mobile don't go to list on folder selection
We have a menu for folders list, so we should not jump immediately
to the list. On the other hand that might have been an expected
behaviour for simple cases. So, this requires some more UX thinking.
6 years ago
Aleksander Machniak b873dc7185 Elastic: Remove redundant menu button in Preferences on phones 6 years ago
Aleksander Machniak d6c19431be Elastic: .proplist improvements 6 years ago
Aleksander Machniak 750827ad65 Merge branch 'master' into dev/elastic 6 years ago
Aleksander Machniak 339121b121 Fix bug where managesieve_allowed_hosts config wasn't respected on mail screen (#6295) 6 years ago
Aleksander Machniak 53fe9d7048 Bump managesieve version number, cs improvements 6 years ago
Athanasios Douitsis b497908040 Managesieve allowed hosts (#6292)
* Introduce managesieve_allowed_hosts setting

If managesieve_allowed_hosts has been set, then check that the array contains the current mail_host for the user session. If not, just return. This will cause the managesieve plugin to not appear under the settings menu.

* Include managesieve_allowed_hosts example

An example of the managesieve_allowed_hosts setting is included. By default, it is left commented to preserve existing behaviour.
6 years ago
Aleksander Machniak 71eec07d25 Fix regression where some non-inline attachments could be not listed (#6291) 6 years ago
johndoh 647a7e91c6 Unify content frame (watermark) template objects (#6285)
* unify content frame (watermark) template objects
* several improvements, use existing env var for watermark url
* tighten up var parsing for contentframe template object
6 years ago
Aleksander Machniak 5e9dd80c47 Elastic: Fix corner-case for closing pretty select options list 6 years ago
Aleksander Machniak 19d644879e Elastic: Fix datepicker z-index issue on .input-group elements 6 years ago
Aleksander Machniak a284f567d3 Elastic: Don't use .toolbar-button class in sidebar 6 years ago
Aleksander Machniak b6a10acfbe Elastic: Fix popup initialization on cloned buttons 6 years ago
Aleksander Machniak 9746de23e8 Elastic: Small improvements in searchbar 6 years ago
Aleksander Machniak 0d62450efc Add easy way to change skin via GET param, for developers only 6 years ago
Aleksander Machniak fa8ee68861 Elastic: Fix redundant scrollbars on some toolbar icon-buttons in Chrome 6 years ago
Aleksander Machniak 211c5444e5 Merge branch 'master' into dev/elastic 6 years ago
Aleksander Machniak 1e21832ae2 Elastic: Keyboard navigation in popup menus 6 years ago
Aleksander Machniak 34a280ef89 Fix regression where Edit identities link wasn't working
Extend switch-task command to accept argument in form of task/action.
6 years ago
Aleksander Machniak ec3b0f58c5 Elastic: Align mobile taskmenu to the left and close on outside touch 6 years ago
Aleksander Machniak 14cc3ec188 Add EFAIL-related warning in the code 6 years ago
Aleksander Machniak 6fbf88d6ba Elastic: Fix pretty select entries with no label 6 years ago
Aleksander Machniak f0cf4e3f2e Elastic: Toolbar variations 6 years ago
Aleksander Machniak da5080a980 Merge branch 'master' into dev/elastic
Conflicts:
	skins/elastic/ui.js
6 years ago
Aleksander Machniak 15f0a1e8e6 Elastic: Pretty select dropdown 6 years ago
Aleksander Machniak 2548a7c55e Elastic: Fix focus after adding/removing recipient input in mail compose 6 years ago
Graymanflo b1ea91c161 Fix typo in English translations. (#6287) 6 years ago
Aleksander Machniak 36d98110c2 Elastic: Fix margin on fieldsets inside tabbed form 6 years ago
Aleksander Machniak fc88c5b1f6 Elastic: Use select.custom-select instead of select.form-control
It's just better looking.
6 years ago
Aleksander Machniak 430c000e32 Support skin localization (#5853) 6 years ago
Aleksander Machniak 48cb0a2c0f Elastic: Fix various issues with the new toolbars layout 6 years ago
Aleksander Machniak 66550f65ae Support enabling checkbox selection on list after intialization and existing records 6 years ago
Aleksander Machniak 67b5ba67dd Show confirm dialog when moving folders using drag and drop (#6119)
As it was very easy to accidentally move a folder tree by dragging & dropping
we now ask the user to confirm the action.
6 years ago
Aleksander Machniak 526f4ddbb4 Elastic: Fix interface "jump" after folder rename (#6283) 6 years ago
Aleksander Machniak f0fc42b3c4 Elastic: Try a new design for some toolbars (work in progress) 6 years ago
Aleksander Machniak 1247a8dd7d Fix bug where some forbidden characters on Cyrus-IMAP were not prevented from use in folder names 6 years ago
Aleksander Machniak 0716d499bc Fix bug where some escape sequences in html styles could bypass security checks 6 years ago
Aleksander Machniak 78e84a5c79 Update changelog 6 years ago
Edgaras L c236c22c41 Parse all quotas from GETQUOTAROOT (#6280) 6 years ago
Aleksander Machniak e04d5313bd Elastic: Make options button in dialogs always on left 6 years ago
Aleksander Machniak d37d9be3e7 Elastic: FontAwesome 5.0.11 6 years ago
Aleksander Machniak e44308693c Elastic: Small color improvements 6 years ago
Aleksander Machniak 02c0072706 Elastic: Fix compatibility with attachment_reminder 6 years ago
johndoh 5caab079fa Make settings list html more consistent (#6204) 6 years ago
Aleksander Machniak d49eb1889b Fix selecting jQuery-UI styles for skins that extend Elastic 6 years ago
Aleksander Machniak 7f1f6849d7 Elastic: Add forgoten custom style files
Note: We could make them optional, but we need to support less < 2.x for now.
6 years ago
Aleksander Machniak e857ba9b42 Elastic: Added logo image support, taskmenu improvements
TODO: Roundcube logo re-design
6 years ago
johndoh 8eebbbfba4 Use timer to differentiate touch or touch + hold events (#6259) 6 years ago
Aleksander Machniak 58bdf72300 Improve installto.sh script output 6 years ago
Helmut K. C. Tessarek 5c78b8471b Improve installto.sh (follow-up to PR #6261) (#6263)
If the contents `file` and `file.new` are the same, `file.new` should be removed.
6 years ago
Aleksander Machniak ba9ee7e212 Elastic: Fix menu_destroy() 6 years ago
Aleksander Machniak 89715b040b Pass an element index to the list_callback in entity_selector() 6 years ago
Aleksander Machniak ad425aa3e0 Elastic: Make attachment properties table scrollable 6 years ago
Helmut K. C. Tessarek ae9f79e155 Improve installto.sh to minimize downtime for an upgrade (#6261)
- do not overwrite .htaccess and .user.ini (create .new files instead)
- do not copy installer directory, if it does not exist on target
- notify user to delete the 'installer' dir after upgrade
6 years ago
Aleksander Machniak d246b5bbd2 Fix typos 6 years ago
Aleksander Machniak 35a3abd3de Fix skin extending for assets (#5115) - take two 6 years ago
Aleksander Machniak 8355ba62fb Revert "Fix skin extending for assets (#5115)" 6 years ago
Aleksander Machniak 60922dc3d5 Password: Added password_username_format option (#5766) 6 years ago
Aleksander Machniak c5f91540f2 Elastic: Close menus also on touch inside an iframe 6 years ago
Aleksander Machniak b87ecb4fa3 Re-arranged changelog entries 6 years ago
Aleksander Machniak c0b9025215 Remove sample PHP configuration from .htaccess and .user.ini files (#5850)
Moved to https://github.com/roundcube/roundcubemail/wiki/Installation#php-configuration
6 years ago
Aleksander Machniak 63d3ad11fb Use Masterminds/HTML5 parser for HTML5 support (#5761) 6 years ago
johndoh 2f7aaca342 Allow plugins to prevent multiple execution of getselection JS event (#6256) 6 years ago
Aleksander Machniak 3e241d728c Remove IE7 hack 6 years ago
Aleksander Machniak ee9f16f5a5 Elastic: Small improvements in attachment preview 6 years ago
Aleksander Machniak d509f6a5b0 Elastic: Remove redundant styles 6 years ago
Aleksander Machniak acfd335f14 Simplify code to set/change a skin
When changing skin in Preferences we do not use the new skin immediately,
we do this after redirect.
6 years ago
Aleksander Machniak 3e0e12227e Use default skin on login page, also after logout
Before we stored user skin in session to keep user skin on logon after logout.
After more thinking... imho it's better to always present the same logon look.
6 years ago
Aleksander Machniak e79838aaac Enigma: Disable autofill for new keypair password 6 years ago
Aleksander Machniak 06f31461c6 Elastic: Support multi-selection lists inside of .content (and .list and .sidebar) 6 years ago
Aleksander Machniak 5809c57eb3 Elastic: Support floating action buttons also on 'content' element not only 'list' 6 years ago
Aleksander Machniak 3f53acb64a Fix regression in skin extending for assets (commit ecde98729b)
It could have been possible that core template loaded plugin files
by mistake (if file with the same name existed), we don't want that.
6 years ago
Aleksander Machniak f9a5d03e5a Fix bug where new_user_dialog email check could have been circumvented by deleting / abandoning session (#5929) 6 years ago
Aleksander Machniak 2faf7185db Archive: Create archive folder automatically if it's configured, but does not exist (#6076) 6 years ago
Aleksander Machniak 1eaeb9e686 Elastic: Fix searchbar input finding for forms with hidden inputs 6 years ago
Aleksander Machniak c1774b6e1d Put additional footer content before "footer scripts" (for Elastic) 6 years ago
Aleksander Machniak ecde98729b Fix skin extending for assets (#5115)
Remove redundant is_file() calls.
6 years ago
Aleksander Machniak 5ce5f9a8bc Use Github API as a fallback to fetch js dependencies to workaround throttling issues (#6248) 6 years ago
Aleksander Machniak dd3ea4ed2b Fix extracting codepage 6 years ago
Aleksander Machniak 9e426d2427 Merge branch 'master' of github.com:roundcube/roundcubemail 6 years ago
Aleksander Machniak 8a6a9e86ae Fix handling of forwarded messages inside of a TNEF message (#5632) 6 years ago
Aleksander Machniak f89fafb781 Elastic: Handle more corner cases of hide-menu event 6 years ago
Aleksander Machniak 38bda972c1 Add composer.json for krb_authentication plugin 6 years ago
Aleksander Machniak 0366d40bf9 Elastic: Add possibility to assign classes to .nav-link elements when converting fieldsets to tabs 6 years ago
Aleksander Machniak a889f55c31 Fix PHP Warning: Use of undefined constant IDNA_DEFAULT on systems without php-intl (#6244) 6 years ago
Aleksander Machniak 9cd0c6e805 Add 1.3.6 release 6 years ago
Aleksander Machniak f94ad22458 Elastic: Small form spacing fix 6 years ago
Aleksander Machniak 50312af17e Fix fatal error on asset_exists() use 6 years ago
Aleksander Machniak 273973e2a4 Elastic: Don't convert tables inside of .raw-tables element 6 years ago
Aleksander Machniak 3f985c35d1 Elastic: Small form fixes 6 years ago
Aleksander Machniak 2584ed8bd7 Elastic: Bump up z-index value on #messagestack 6 years ago
Aleksander Machniak 3ddadf84ae Use Bootstrap 4.1.0 6 years ago
Aleksander Machniak 418c72137e Improve search_form() for external use 6 years ago
Aleksander Machniak ff55fa622f Fix jqueryui plugin compatibility with assets_dir setting 6 years ago
Aleksander Machniak 459c3845be Elastic: Fix checkbox selection on enigma keys list 6 years ago
Aleksander Machniak 379c3111d1 Elastic: Remove redundant data: prefix in data-uri() 6 years ago
Aleksander Machniak 8373b3b3f0 Enigma: Enable keypair generation on Internet Explorer 11 6 years ago
Aleksander Machniak 2b425a8b12 Use 'OK' instead of 'Save' label for thr button in enigma password prompt 6 years ago
Aleksander Machniak 408d985f38 Small spacing improvement in enigma password prompt 6 years ago
Aleksander Machniak b2bebe531a Fix bug where usernames without domain part could be malformed or converted to lower-case on logon (#6224) 6 years ago
Aleksander Machniak d51fdaa2ee Replace last occurrence of RCMAIL_CHARSET with RCUBE_CHARSET 6 years ago
Aleksander Machniak db5802b134 Archive: Skip early the request to move to archive folder from archive folder
... which may happen in multi-folder search results.
6 years ago
Aleksander Machniak 8e543f843e Fix check_request() bypass in places using get_uids() [CVE-2018-9846] (#6238) 6 years ago
Aleksander Machniak 915e50af9f Elastic: Make Cancel/Close button in a mobile dialog be the last one 6 years ago
Aleksander Machniak 051a82ef03 Elastic: Fix so closing mobile popup menu does not close dialogs below, plus some css improvements 6 years ago
Aleksander Machniak 431f89f9b7 Fix "Mark all as read" dialog (#6235) 6 years ago
Aleksander Machniak 8df6d7c3e4 Fix regression in compressMessageSet() (#6235) 6 years ago
Aleksander Machniak 5832eca405 RCMAIL_CHARSET -> RCUBE_CHARSET (#6236) 6 years ago
Aleksander Machniak db24050215 Fix regression in identities list style 6 years ago
Aleksander Machniak 662363c7e2 Enigma: Add positiblity to modify list of identities for key generation by other plugins 6 years ago
Aleksander Machniak 9d262402db Elastic: Avoid double checkbox convertion to icon-checkbox 6 years ago
Aleksander Machniak 809b3d4abe Elastic: Support quick-search form in content frame header 6 years ago
Aleksander Machniak f63150b256 Enigma: Fix key selection for signing
In some cases a public key of other user could be selected instead
of the sender's private key
6 years ago
Aleksander Machniak 8b0540d402 Fix possible IMAP command injection and type juggling vulnerabilities (#6229) 6 years ago
Aleksander Machniak 891d01a4ef Ignore enigma home dir 6 years ago
Aleksander Machniak df3878501c Fix PHP 7.2: count(): Parameter must be an array in enchant-based spellchecker (#6234) 6 years ago
Aleksander Machniak 08454fb951 Add Close button to the keys export dialog 6 years ago
Aleksander Machniak 73ea8f94d0 Use htmlspecialchars() with charset argument, simplify some code 6 years ago
Aleksander Machniak 6a347f36db Elastic: Skip tables with .table class already applied 6 years ago
Aleksander Machniak 73b1948c38 Elastic: Small fix on icon-checkbox 6 years ago
Aleksander Machniak a31c76292e Elastic: Fix .btn.active colors 6 years ago
Aleksander Machniak 8c6d87542b Acl: get rid of addressbook_form and calendar_form_kolab hooks handlers
- the plugin is called "manually" by Kolab plugins now
6 years ago
Aleksander Machniak 5ae8c938d2 Elastic: Changed icon for "Manage folders" menu item 6 years ago
Aleksander Machniak f1077063e6 Elastic: Fix small issues in forms 6 years ago
Aleksander Machniak da35bf64f5 Elastic: Fix data-label-msg handling on <ul> lists 6 years ago
Aleksander Machniak d067869ff1 Elastic: Make all input.pretty-checkbox elements pretty 6 years ago
Aleksander Machniak daa268658c Elastic: Set non-white background on .navlist 6 years ago
Aleksander Machniak e9de02920a Elastic: Remove folder type icons (Kolab-specific) 6 years ago
Aleksander Machniak d423139ac8 Elastic: Fix datepicker position on 320px width (and less) 6 years ago
johndoh 548f286686 add Elastic deps folder to .gitignore (#6227) 6 years ago
Aleksander Machniak ac275caebb Elastic: Support .text-only forms also when they are not a table 6 years ago
Aleksander Machniak 8b610e1d9f Elastic: Set z-index for frame-loader 6 years ago
Aleksander Machniak f1450a34d2 Elastic: Fix navlist border (when it is with scrollbar) 6 years ago
Aleksander Machniak f289b6767f Elastic: Don't set form-control class on input[type=button] 6 years ago
Aleksander Machniak df30d71e5a Elastic: Improvements to .ui-menu and z-index fix in the slider 6 years ago
Aleksander Machniak f36e23b778 Fix parsing date strings (e.g. from a Date: mail header) with comments (#6216) 6 years ago
Aleksander Machniak a02fafa542 zipdownload: Added option to define size limit for multiple messages download (#5696)
Default limit set to 50MB.
6 years ago
Aleksander Machniak 2428be488e Allow style tags in HTML editor on composed/reply messages (#5751) 6 years ago
Aleksander Machniak 6e7afe5360 Support Redis cache in redundant_attachments plugin 6 years ago
Aleksander Machniak 5410c6112b Elastic: Make .nav-tabs non-wrappable 6 years ago
Aleksander Machniak 2cd40707e2 Add last release mark to the changelog 6 years ago
Aleksander Machniak 61ce7ef99e Elastic: Fix attachments list buttons inside a .popupmenu 6 years ago
Aleksander Machniak e972f1118b Elastic: Small fix for image-tools on mobile 6 years ago
Aleksander Machniak 3cba692ae1 Elastic: Fix z-index on date picker, improve dialog options button 6 years ago
Aleksander Machniak adaa3bc898 Elastic: Support "options" button in dialog footer 6 years ago
Aleksander Machniak a9c7ef17bd Add a way to not append attachment menu to attachment list entry 6 years ago
Aleksander Machniak 7fb568a569 Elastic: Don't replace already-existing id attribute of a nav-tab, small improvements in .file-upload 6 years ago
Thomas Bruederli 6c881745d6 Remove deprecated composer package 'endroid/qrcode' on update 6 years ago
Thomas Bruederli c973f003e5 Synchronized localizations with Transifex 6 years ago
Aleksander Machniak 2196f50437 Support redis_debug in the redis session driver 6 years ago
Thomas Bruederli 8679566766 Add toolbar icons for image zoom/rotate in larry (#6111) 6 years ago
Aleksander Machniak d4ced14455 Elastic: Added style for .ui-slider 6 years ago
Aleksander Machniak e4ccc2bb48 Update copyright year in few places 6 years ago
Aleksander Machniak 501e7e3c29 Elastic: Create fake rcube_browser object on error page to prevent from js errors 6 years ago
Aleksander Machniak 0f3ad342f7 Fix bug where some unix timestamps were not handled correctly by rcube_utils::anytodatetime() (#6212) 6 years ago
Aleksander Machniak 3e8ffa0c8d Don't add form-control class to file inputs, fix padding on .popupmenu.formcontent 6 years ago
Aleksander Machniak 752a20aa57 Fix height of a button in .table-widget footer 6 years ago
Aleksander Machniak dd4e0cc31e Prevent from a rare error 6 years ago
Aleksander Machniak a451ad6599 Fix handling encoding of HTML tags in "inline" JSON output (#6207) 6 years ago
Aleksander Machniak 981cd8726d Remove holes in cache index keys - makes the serialized representation shorter 6 years ago
Aleksander Machniak 866bf959b7 Use document.body consistently 6 years ago
Aleksander Machniak eb91daf00d Added 9pt and 11pt to the list of font sizes in HTML editor 6 years ago
Aleksander Machniak 264da42fa5 Use 0775 permission, it's needed for e.g. skins/elastic/deps folder 6 years ago
Aleksander Machniak 8eb4ae1b17 Elastic: Make .treetoggle transparent
On some lists it overlaps with focus indicator.
6 years ago
Aleksander Machniak c99f6e4db1 Add note about Elastic in changelog 6 years ago
Aleksander Machniak 4224ae81d3 Elastic: Make treetoggle icon smaller 6 years ago
Aleksander Machniak 4a7603a207 Install Bootstrap and LessJS with install-jsdeps.sh 6 years ago
Aleksander Machniak 997f317654 Add notes about css compilation for Elastic skin 6 years ago
Aleksander Machniak 52dc193865 Cleanup README.md after merging Elastic code 6 years ago
Aleksander Machniak 94ee0094b1 Merge remote-tracking branch 'elastic/master' 6 years ago
Aleksander Machniak 48417c5fc9 Remove default for enigma_pgp_homedir (#6173)
To make the default installation more secure force users to set the folder.
Added notes that it should be secured or not accessible from the web browser.
6 years ago
Aleksander Machniak 640429c7d2 Require Net_Sieve 1.4.3 (for GSSAPI support) 6 years ago
Aleksander Machniak 26211fa4ac Fix indentation 6 years ago
Aleksander Machniak 9752e26162 Merge branch 'master' of https://github.com/neilmunday/roundcubemail into neilmunday-master 6 years ago
Aleksander Machniak 91d4d4bf34 Fix compatibility with contextmenu plugin
https://github.com/johndoh/roundcube-contextmenu/issues/103
6 years ago
Aleksander Machniak 1058924e21 Move some framework classes to sub-directories 6 years ago
Aleksander Machniak d07b032bcd Refactor cache code with separate engine-specific classes 6 years ago
Aleksander Machniak fa06d37901 Merge branch 'feature/add_redis_as_cache' of https://github.com/ledgr/roundcubemail into ledgr-feature/add_redis_as_cache 6 years ago
Aleksander Machniak f35e9dc4c8 Fix var scope 6 years ago
Aleksander Machniak 31ffef67ad Skip _lang param if not set (#6203) 6 years ago
Aleksander Machniak 6bfebc5e32 Add sanity check when auto-unsubscribing non-existing folders 6 years ago
Aleksander Machniak 656f979831 Fix column type (#6200) 6 years ago
Aleksander Machniak 157eb531b8 Also do not convert tables inside of the .boxinformation 6 years ago
Aleksander Machniak 7b1f0f020b Enigma: Multi-host support 6 years ago
Thomas Bruederli d42b51a1f3 Removed Docker files
These are now maintained in a seprarate repository at
https://github.com/roundcube/roundcubemail-docker
6 years ago
neilmunday 57fa665db1 Updated to use latest Net_Sieve Sieve class 6 years ago
neilmunday 7abcc5a2cc Added hook for managesieve_connect to set up GSSAPI authentication 6 years ago
neilmunday 0b12721a77 Merge branch 'master' of https://github.com/roundcube/roundcubemail 6 years ago
Aleksander Machniak 7e0844d229 Add support for Mailvelope's encrypt and sign feature 6 years ago
Aleksander Machniak 51cf1c5935 Fix setting contacts copy action state, CS fixes 6 years ago
Aleksander Machniak ba77da4b37 Unify .virtual entries' opacity in folder selector and other lists 6 years ago
Aleksander Machniak 9ccf7c01c8 Move @listing-treetoggle-width var to variables.less 6 years ago
johndoh b01e5ae192 Trigger getselection in get_single_selection() (#6180)
Make it so that the event getselection is triggered when either rcube_list_widget::get_selection() or rcube_list_widget::get_single_selection() is called
6 years ago
johndoh 8877c1589e fix tiny typo (#6196) 6 years ago
Aleksander Machniak 20a81c2a0a Small alignment fix for treetoggle icon 6 years ago
Aleksander Machniak 6e763fe02c CS fixes 6 years ago
Aleksander Machniak 9dae592948 Merge pull request #146 from johndoh/data_hidden_parsing
check for valid values in data-hidden attr
6 years ago
PhilW e92c130386 check for valid values in data-hidden attr 6 years ago
Aleksander Machniak 1556eb01c7 Use JSON_UNESCAPED_UNICODE only on PHP >= 7.1.0 (#6187) 6 years ago
Aleksander Machniak b46ee5626b Unify opacity value on disabled buttons in toolbar and menus 6 years ago
Aleksander Machniak 7b282f637f Remove debug code 6 years ago
Aleksander Machniak 6df53c1642 Call resize() twice to workaround timing issues 6 years ago
Aleksander Machniak f301823130 Move resize() call to init callback
Fixes list header title alignment
6 years ago
Aleksander Machniak b45c009e37 Fix mobile menu header colors (#113) 6 years ago
Aleksander Machniak 3fe16de335 Code de-duplication 6 years ago
Aleksander Machniak 5f5f5f98e9 Merge branch 'movecopy' of https://github.com/johndoh/roundcubemail into johndoh-movecopy 6 years ago
laodc 672e57ea48 Patched bug where rcube_db::quote() was causing an infinite connection loop. (#6175)
As rcube_db::quote() checks to see if the connection is up before quoting, this would cause the class to try connect again, as rcube_db::$dbh was not being set until AFTER conn_configure was completed, causing a loop.

So updated rcube_db::$dbh in the rcube::conn_create() function instead allowing access to the new object straight away.

It's needed for edeb5d7.
6 years ago
johndoh 3c47323eec Correct ids for responses temaplate in classic and larry skin (#6185) 6 years ago
Aleksander Machniak 2df91d9ab6 Merge branch 'master' of github.com:roundcube/elastic 6 years ago
Aleksander Machniak 84d9d95f35 Re-worked expand/collapse in folder list (#50) 6 years ago
Thomas Bruederli ea913da346 Remove /var/www/html volume as suggested in #6148 6 years ago
Thomas Bruederli 2da2043c28 Log to stdout from docker container (#6148) 6 years ago
PhilW 964a690987 simplify delete execution in managesieve plugin 6 years ago
neilmunday b4298bc096 Added GSSAPI support for issue #5779 - requires updated Net_Sieve class. See https://github.com/neilmunday/Net_Sieve/Sieve.php 6 years ago
Aleksander Machniak fd0f404c32 Improvements in pgp keys search dialog 6 years ago
PhilW 8c734977de simplify execution of grop_delete 6 years ago
Aleksander Machniak c9555506b3 Fix using display_message() with a localization label from inside an iframe
We have to localize the label before we redirect execution to parent window.
6 years ago
Aleksander Machniak a1be62b19d Remove redundant trim() 6 years ago
Aleksander Machniak 0f1e5b3293 Change wording 6 years ago
Aleksander Machniak 9d2b303b51 Fix bug in remote content blocking on HTML image and style tags (#6178) 6 years ago
Aleksander Machniak ce9ee39fa9 Fix cut icon for expanded thread 6 years ago
Aleksander Machniak f211fcf254 Elastic: Use .boxconfirmation 6 years ago
Aleksander Machniak 2dc0ad07a0 Add .boxconfirmation style 6 years ago
Aleksander Machniak f52fc4317f Improve info-boxes for Enigma plugin 6 years ago
Aleksander Machniak 0f21488ce2 Elastic: Fix enigma information boxes 6 years ago
Aleksander Machniak 7ccf2752da Add CodeMirror styles 6 years ago
Aleksander Machniak 2d99e32beb Elastic: Enable raw script editing on mobile 6 years ago
Aleksander Machniak 58bd066c6d Upgrade to CodeMirror 5.34.0 6 years ago
Aleksander Machniak bbc19ac084 Elastic: Fix CodeMIrror editor display 6 years ago
Aleksander Machniak 674eac1c1c Enigma: Fix key generation in Safari by upgrade to OpenPGP 2.6.2 (#6149) 6 years ago
Aleksander Machniak b46cd5de1d Fix PHP Warning: exif_read_data(...): Illegal IFD size (#6169) 6 years ago
Aleksander Machniak 332cdf62fb Fix disabling filters in skins other than Elastic (#6170) 6 years ago
Aleksander Machniak 4d44070fc6 Fix duplicated labels in Test SMTP Config section (#6166) 6 years ago
Aleksander Machniak cf32fdab3f Update changelog 6 years ago
Jan Ehrhardt 01d81faa82 Fix seteditraw classic save button (#6164)
Fixes https://github.com/roundcube/roundcubemail/issues/6154
6 years ago
Aleksander Machniak 84ecae7a53 Define button classes for keys export dialog 6 years ago
Aleksander Machniak ea6614a498 Define .btn.export icon 6 years ago
Aleksander Machniak 4c8736755f Fix typo 6 years ago
Aleksander Machniak 295fec1e21 Fix forward icon on messages list 6 years ago
Thomas B 128587d0d5
Merge pull request #6155 from simongreen-net/issue6147
Issue 6147: Docker ROUNDCUBEMAIL_DB_TYPE not properly managed
6 years ago
Simon Green aa544a725f Issue 6147: Docker ROUNDCUBEMAIL_DB_TYPE not properly managed 6 years ago
Edgaras Lukoševičius e371469664 Add Redis as cache backend 6 years ago
PhilW dba7134201 small fix after last commit 6 years ago
Aleksander Machniak 33256ec030 Fix menu items state on hover 6 years ago
Aleksander Machniak 869b4202c5 A better workaround for Popper issue 6 years ago
Aleksander Machniak 15cf12db1d Fallback to default compose action if addressbook is selected but has no members 6 years ago
Aleksander Machniak ea492869cd Allow editing of recipients input (#125) 6 years ago
Aleksander Machniak 9066ed4fa3 Add two labels, use consistent spacing 6 years ago
Aleksander Machniak f3c7b979b0 Remove redundant code
A first input in a dialog is focused automatically, no need to add code for this
6 years ago
PhilW 4f1da97af2 Merge branch 'master' into movecopy 6 years ago
Aleksander Machniak 50677633c0 Small fixes in .tagedit-list 6 years ago
Aleksander Machniak dfc835eb38 Fix add-contact and contact-delete actions 6 years ago
laodc edeb5d7ab4 Add support for PostgreSQL schemas in DSN (#6150)
If schema is set in the dsn, set search_path to the schema value.

Example:

$config['db_dsnw'] = 'pgsql://user:pass@localhost/dbname?schema=exampleschema';
6 years ago
Aleksander Machniak 2186c49ba9 Use theme colors for focused form controls 6 years ago
Aleksander Machniak 4b0e396440 Don't use blue for dialog buttons on mobile 6 years ago
Aleksander Machniak 1c8cf824be Small improvements 6 years ago
Aleksander Machniak 204480c63d Fix scrolling in message headers dialog (#142) 6 years ago
Aleksander Machniak 7853ae25c6 Better "identity" icon (#81) 6 years ago
Aleksander Machniak 880592b8a5 Fix image tools on mobile (and move it to left side) 6 years ago
Aleksander Machniak f53f3182d7 Merge pull request #141 from madmath03/login-form
Fix login form display on IE and Chrome
6 years ago
Aleksander Machniak f7dcc4c353 Support image tools 6 years ago
Aleksander Machniak 59a63c95a4 Add possibility to scale/rotate image attachments for preview (#6111) 6 years ago
Mathieu Brunot 3cfabadb55 Fix login form display on IE and Chrome
Use viewport height for defining the margin-top.
6 years ago
Thomas Bruederli 0f7cdcc846 Updated CHANGELOG 6 years ago
Thomas Bruederli 95298fa428 Add option to encrypt & sign with Mailvelope > 2.0
UI elements added to larry and classic skin
6 years ago
PhilW 43dcb3bdd9 simplify execution of group_assign_selected JS 6 years ago
PhilW f15c2eb777 simplify execution of move+copy JS commands 6 years ago
Aleksander Machniak b7e5567f1b Update copyright year 6 years ago
Aleksander Machniak fdc52f2325 Re-wroked UI messages colors 6 years ago
johndoh a8b16031bd add originalEvent param to actionafter event (#6144) 6 years ago
Aleksander Machniak 18adf0239a Improvements to .ui-menu 6 years ago
Aleksander Machniak 1b102859f5 Add focus style for tagedit widget 6 years ago
Aleksander Machniak d7963c3c90 Fix regression in contact print 6 years ago
Aleksander Machniak 38d9407d04 Set .table-responsive-sm class on table parents 6 years ago
Aleksander Machniak 489920a361 Small improvements in recipient-input 6 years ago
Aleksander Machniak 23854b3bf2 Fix recipient boxes in recipient-input 6 years ago
Aleksander Machniak abf98762f1 Box shadow for focused recipient-input 6 years ago
Aleksander Machniak d4f71ec4f4 Change icons for View Source, Edit as New and Open in New Window buttons (#140) 6 years ago
Aleksander Machniak 7abaab3098 Fix bug where text: syntax was forced for strings longer than 1024 characters (#6143) 6 years ago
Aleksander Machniak 64bde77717 Fix popup menus
We need to use Popper 1.12.6 until there's a remedy to
https://github.com/FezVrasta/popper.js/issues/532
6 years ago
Aleksander Machniak d5b1fc4598 Fix js error 6 years ago
Aleksander Machniak 76933f1c07 Elastic: Bootstrap 4.0.0 compat. 6 years ago
Aleksander Machniak befea99ab7 Update to Bootstrap 4.0.0 6 years ago
Aleksander Machniak a1a933cb5c Fix filterbar icon status 6 years ago
Aleksander Machniak 3cb91290b5 Improve .webkit-scroller class use 6 years ago
Aleksander Machniak 3dcbc616a4 s/unicode/Unicode/ 6 years ago
Aleksander Machniak 4f6079833a Fix PHP 7.2 warning: count(): Parameter must be an array or an object that implements Countable 6 years ago
Aleksander Machniak 6316fe054c Refactored taskmenu
- Eliminate grey color
- On mobile display menu using style of other menus
- Fix Close button on iOS (#82)
6 years ago
Thomas Bruederli e457cff08b Add space between buttons + trigger update event for skins 6 years ago
Thomas Bruederli 1a2a2d2cb2 Listen to identity-encryption-* events to update UI styles 6 years ago
Thomas Bruederli b9a68b516a Make editity encryption view appear correctly in classic skin 6 years ago
Thomas Bruederli c4f9bd994e Hook into 'identity_form' plugin hook and add list of matching private keys 6 years ago
Thomas Bruederli 1cb97c7efd Add 'encryption' block to identity settings
If Mailvelope is installed, this box will become visible and offer
functions to generate a key pair for the selected identity or list
existing private keys.
6 years ago
Aleksander Machniak b38bb43630 Update to jQuery-3.3.1 6 years ago
Aleksander Machniak 17d3ad4ecc Disable auto-zoom on form elements in iOS (#132) 6 years ago
Aleksander Machniak cf711d1ce2 Elastic: Fix jumping UI when clicking on filtersets expand button 6 years ago
Aleksander Machniak 1332d2e793 Add some localization messages for Elastic 6 years ago
Aleksander Machniak 1e82066d7e Add "List is empty..." element (#76) 6 years ago
Aleksander Machniak 019b542c58 Elastic: Add data-label-* attribs 6 years ago
Aleksander Machniak b00d5c3836 Automatically localize data-label-* attributes of a template object 6 years ago
Aleksander Machniak 39a6c69a3d Automatically localize the first argument of display_message() 6 years ago
Aleksander Machniak f2b64779cc Display confirmation message when inserting a response or signature 6 years ago
Aleksander Machniak 2f2b6c186e Enable Copy menu-item also when there's one writeable addressbook and any readonly addressbook 6 years ago
Aleksander Machniak 7a719d203d Fix addressbook selector, show copy menu-item also when there's one readonly and one writeable addressbook 6 years ago
Aleksander Machniak ae4616ce85 Update changelog 6 years ago
Aleksander Machniak 372fdbf9f2 Optimize listicons.png (after new icon has been added) 6 years ago
Aleksander Machniak add89b68eb Make qrcode also available on mobile 6 years ago
Aleksander Machniak eb0228ba86 Merge branch 'move_addressbook' of https://github.com/johndoh/roundcubemail into johndoh-move_addressbook 6 years ago
Aleksander Machniak 100204ea9c Merge branch 'move_addressbook' of https://github.com/johndoh/elastic into johndoh-move_addressbook 6 years ago
Aleksander Machniak a6ad0283d0 Validate ACL identifiers
... e.g. to prevent cyrus imap issues
6 years ago
Vanav dbc7892c4a Fix warning "strtolower() expects parameter 1 to be string, array given" (#6136)
* Fix warning "strtolower() expects parameter 1 to be string, array given"
6 years ago
Aleksander Machniak e6356ddd63 Overwrite jQuery-UI icon to resize dialog - prevents from loading the whole image sprite 6 years ago
Aleksander Machniak 0a01ccc00d Remove redundant datepicker localization 6 years ago
Aleksander Machniak ea4ce5129c FontAwesome 5.0.4 6 years ago
Aleksander Machniak 2059a92e89 Diaplay datepicker widget always centered (#62)
Fixes widget on mobile.
6 years ago
Aleksander Machniak 65f514ee10 Don't assign .table.table-responsive-sm to datepicker popup 6 years ago
Aleksander Machniak ec25fa857b Improve layout of contact import form
Move the file input to the .propform table.
6 years ago
Thomas Bruederli 34301505c9 Update Dockerfile to build version 1.3.4 6 years ago
Thomas Bruederli a6408b952b Update assignments to release 1.3.4 6 years ago
Aleksander Machniak 4793ec753a Remove double-quotes in filename* parameter of the Content-Disposition of downloads (#5857) 6 years ago
PhilW 4548646410 small correction to label 6 years ago
Aleksander Machniak c03add5bf9 Fix login form alignment in Chrome
It looks that margin-top with percent value does not work the same as in Firefox.
6 years ago
Aleksander Machniak 07c1760a19 Fix padding of search button in sidebar header 6 years ago
PhilW cb01f05588 small JS cleanup 6 years ago
PhilW 5497d30232 update for addressbook toolbar changes in core 6 years ago
Aleksander Machniak 55e99398e1 Fix possible information leak - add more strict sql error check on user creation (#6125) 6 years ago
PhilW 04d371b88f fix plugin compatibility in addressbook toolbar 6 years ago
Aleksander Machniak a17c123903 Fix drop action (using jquery-ui draggable) on rcube_list_widget 6 years ago
PhilW d5071fedba vcard_attachments: add link to contact actions menu
*) add 'forward vcard' link to contact actions manu
*) fix bug when a contact with a secondary email address is selected
*) improve support for multiple address books in contact list widget on compose screen
6 years ago
Aleksander Machniak 8094753e6f Add .text-only style for "native" Bootstrap forms (that aren't .propform) 6 years ago
PhilW abbb832c6f move qrcode link to new contact actions menu 6 years ago
johndoh 0218c14c08 Update composer reference to endroid/qr-code (#6132) 6 years ago
PhilW 489da28dab add move/copy contact widget 6 years ago
Aleksander Machniak 07dc726aa7 Elastic: Remove redundant menu button 6 years ago
Aleksander Machniak 734fcb4c73 Make sidebar navigation less confusing, move selection button to list header 6 years ago
Aleksander Machniak 20a0ca6b16 Elastic: Remove tagedit.css, these styles are handled by the skin now 6 years ago
Aleksander Machniak 0cb876b788 Support tagedit widget (from jqueryui plugin) 6 years ago
Aleksander Machniak ce338164e3 Fix bug where contacts search could skip some records (#6130) 6 years ago
Aleksander Machniak 64ad87468a Update changelog 6 years ago
Aleksander Machniak adf9ec4962 Simplify some rewrite rules 6 years ago
Aleksander Machniak 83bd85677b Remove x_frame_options env 6 years ago
Aleksander Machniak 8de9fa707b Fix X-Frame-Options:ALLOW-FROM support, remove custom click-jacking protection (#6057) 6 years ago
Richard Hillmann 59bbf6c081 Fix preg_match in guess_type function (#6123) 6 years ago
Aleksander Machniak 10356a0230 Attachments list improvements 6 years ago
Aleksander Machniak e4c7e8ac7c Fix bug where attachment size wasn't visible when the filename was too long (#6033)
Uses flexbox, so works in recent browsers only. I don't plan to support olders.
6 years ago
Aleksander Machniak 2efab3d446 Add style for disabled links that are not buttons 6 years ago
Aleksander Machniak af9550251e Display an error when clicking disabled link to register protocol handler (#6079) 6 years ago
Aleksander Machniak c2199c5101 Cleanup folder subscriptions "form" 6 years ago
Aleksander Machniak 10b01f33b3 Remove useless code 6 years ago
Aleksander Machniak f3602c676f Update to less 2.7.3 6 years ago
Aleksander Machniak ad90cc52f5 Fix list selection indicator (again) 6 years ago
Aleksander Machniak 34068ac445 Remove some Kolab plugin icons, they're now handled by libkolab plugin 6 years ago
Aleksander Machniak 6e24ebca6b Display icons on identities/responses/filters lists 6 years ago
Aleksander Machniak e926162767 Support for .boxinformation without the icon 6 years ago
Thomas Bruederli 430237171b Add env variable to adjust upload_max_filesize (#6083) 7 years ago
Aleksander Machniak 647e0bd2f6 Fix .boxinformation elements handling 7 years ago
Aleksander Machniak 12a2e47b9b Improve vcardattachments addon in Elastic 7 years ago
Aleksander Machniak 5f2c23e601 Display iframe loader in show-content handler only on mobile 7 years ago
Aleksander Machniak 61c458b085 Disable dragging also on list widgets for small devices 7 years ago
Aleksander Machniak 9bc4b97071 Content frame/list handling for plugins 7 years ago
Aleksander Machniak 0d8afd2b01 Fallback to document element if an event (maybe custom) has no target nor srcElement specified 7 years ago
Aleksander Machniak 946599acda Close page selector when leaving the input with keyboard 7 years ago
Aleksander Machniak 230fc1203d Disable tabIndex on selection checkboxes 7 years ago
Rotzbua 8bd55ea549 [security] deny access to composer.lock (#6117) 7 years ago
Aleksander Machniak b172fb505c Improve trusted_host_patterns code 7 years ago
Aleksander Machniak 4a5ca74724 Merge branch 'trusted-host-patterns' of https://github.com/dsoares/roundcubemail into dsoares-trusted-host-patterns 7 years ago
Daniel Kesselberg a8d5547163 Update idn convertion methods (#6115)
* Add more test cases
* Update phpdoc
7 years ago
Aleksander Machniak 869882f8db Update changelog 7 years ago
Aleksander Machniak 63a7d2313f Improve SMTPUTF8 support and fix relaxed email validation issues 7 years ago
Aleksander Machniak 5665344673 Merge branch 'smtputf8' of https://github.com/jprjr/roundcubemail into jprjr-smtputf8 7 years ago
Daniel Kesselberg a3504cb3b8 Add unit test for IDN (#6114) 7 years ago
Aleksander Machniak 8b0109d81c Add set_content() method to the editor widget 7 years ago
Thomas Bruederli 4255b21ca0 Do not send docker container config to stdout (#6083) 7 years ago
Aleksander Machniak f362acb254 Improve icons size/color on messages list 7 years ago
Aleksander Machniak 3bed1067d1 Better icon for Junk folder (#136) 7 years ago
Aleksander Machniak 90b0cd814a Add editor-load event and enable shift-click on links in HTML editor 7 years ago
Aleksander Machniak a6bc845e39 Display hint to the user when using To/Cc/Bcc/vCard buttons and no contact is selected (#129)
Also display an information message after attaching vCard in phone mode.
7 years ago
Aleksander Machniak 52864ef885 Add some localization messages, remove one unused message 7 years ago
Aleksander Machniak fbc4486881 Fix so Shift selection also works on list selection checkboxes 7 years ago
Aleksander Machniak 307d682ad2 Code simplification 7 years ago
Aleksander Machniak e891e486fd Elastic: Add mobile FAB button for filter creation 7 years ago
Aleksander Machniak ac95db6516 Small margin fix 7 years ago
Aleksander Machniak 5f26d9bf34 Prevent "calling draggable before initailization" errors
Elastic skin disables dragging on folders list, so we have to check
if it's still draggable before we call draggable() again. Otherwise
it will throw an error.
7 years ago
Aleksander Machniak a2875cdda9 - Fix searching contacts by address in LDAP source (#6084) 7 years ago
Aleksander Machniak cdbfc475fd Add support for Get Support button 7 years ago
Aleksander Machniak 42660db531 Logon screen improvements 7 years ago
Aleksander Machniak fb2f213d6f Add id attribute to the installer warning 7 years ago
Aleksander Machniak 9f030c3390 Display confirmation message when adding a recipient in mobile mode (#86) 7 years ago
Aleksander Machniak dcbb4ec125 Add localization message for Elastic 7 years ago
Aleksander Machniak 31907c3ff7 Small padding fix for buttons 7 years ago
Aleksander Machniak e1ad2a1936 Refacor recipient input so it is a <ul> element, improve input handling 7 years ago
Timotheus Pokorra ba5c396774 Managesieve, forward dialog using the right existing simple forwarding rules (#6102)
fixes #6101
7 years ago
Aleksander Machniak 05a67898eb Fix adding groups to the recipient input 7 years ago
Aleksander Machniak 528e82f6c5 There's no Dockerfile file anymore 7 years ago
Aleksander Machniak 55a1d6ef1b Make search form's aria label to also support plugin localization (via label-domain property) 7 years ago
Aleksander Machniak bbb63c49c7 Make .input-group an inline element in Larry 7 years ago
Aleksander Machniak 3e0edd98c9 Update changelog 7 years ago
Aleksander Machniak ac13669de5 Fix PHP 7.2: count(): Parameter must be an array or an object that implements Countable (#6098) 7 years ago
Aleksander Machniak 77cc9688c8 Fix bug where contacts export by selection returned no more than 10 entries (#6103) 7 years ago
Aleksander Machniak a1ba8773d7 Change calendar icon 7 years ago
Aleksander Machniak cc4b18f3f1 Set font size and center text on mobile dialog title 7 years ago
Aleksander Machniak 43d1adbe6e Add icons for contacts list on mail compose page 7 years ago
Aleksander Machniak 0c1642b2ad Stop propagation on pretty checkbox click
Fixes issue where changing folder subscription in Folder Manager
would cause the folder frame loading.
7 years ago
Aleksander Machniak 75f9c103ee Fix syntax error in mssql.initial.sql (#6097) 7 years ago
Aleksander Machniak c2f34ee0ad Small fix in plain-text rows detection 7 years ago
Aleksander Machniak 975612581d A .propform table with more plain text rows than input rows is considered .text-only 7 years ago
Aleksander Machniak 35f7d2862f Improve displaying of .propform tables with no form controls, but only text 7 years ago
Aleksander Machniak 38d275445d Plugin API: Add 'write' argument to 'render_page' hook 7 years ago
Thomas B a5b01105a7
Merge pull request #6085 from mcnesium/master
Fix sed command to separate multiple plugins with quotes each
7 years ago
Aleksander Machniak f0cf2b1e6c Various fixes for pretty checkboxes in lists 7 years ago
Aleksander Machniak 575b8c2cc5 Add contactgroup image (from Larry) 7 years ago
Aleksander Machniak 604f84e1fb Execute clickjacking prevention code only when framed 7 years ago
Aleksander Machniak 5153d25cc9 Use less.pageLoadFinished promise to execute final resize callback 7 years ago
Aleksander Machniak 1e923500b1 Add style for .virtual entries on treelist, remove redundant border 7 years ago
Aleksander Machniak 096ee4c7a6 Make Filter icon smaller to look better a side of Search icon
https://github.com/FortAwesome/Font-Awesome/issues/11873
7 years ago
Aleksander Machniak 4120aca6b4 Fix bug where recipient input initialization didn't display non-empty Cc/Bcc inputs (#123) 7 years ago
Aleksander Machniak 058037f31d Small padding improvement for form labels on mobile 7 years ago
Aleksander Machniak c0959bd619 Sanity checks for header data length in FETCH (#6087)
Where we know what expected data length is we truncate the input.
7 years ago
Aleksander Machniak 3cdc8af297 Fix possible performance issue when parsing malformed and long Date header (#6087) 7 years ago
johndoh 05d1b1947e Check for minified CSS files (#6089) 7 years ago
Aleksander Machniak fec8cf2682 Add floating action button for main item create action on mobile (#107) 7 years ago
Aleksander Machniak 83edea21b1 Use user-plus icon for To+/Cc+/Bcc+ buttons (#121) 7 years ago
Aleksander Machniak 0c89d32909 In devel mode wait some more time with "resize reflow" to make sure all is in place 7 years ago
Aleksander Machniak 7e90274d31 Option to toggle checkboxes on message list (#60) 7 years ago
Aleksander Machniak 0a3dbbb76f Add 'list' argument to listupdate event, trigger listupdate also on contacts list in mail compose 7 years ago
Aleksander Machniak 35a0a50274 Add note about FontAwesome and Bootstrap 7 years ago
Aleksander Machniak 6ccc8cc020 The "it is a draft" message is more an information than a warning 7 years ago
Aleksander Machniak e7f3338178 Fix and improve boxwarnings 7 years ago
Aleksander Machniak 72362a2470 Fix iframe scroll on Android tablets, add scrollbar (#117) 7 years ago
johndoh 5dbe1f2a5e A device can't be a tablet and a mobile (#6086) 7 years ago
Aleksander Machniak 08f27316ee Fix bug where Archive folder wasn't auto-created on login with create_default_folders=true 7 years ago
Aleksander Machniak 4a5941c24b Fix get_next() for case when the node is last in the tree branch 7 years ago
Aleksander Machniak cd7505083e Fix js error after folder delete in phone mode, causing the view is not returned to the folders list 7 years ago
Aleksander Machniak 7f2092c35c Fix bug where tapping the search function in contact menu while composing a new e-mail led back to the composing interface on Android phone (#109) 7 years ago
Aleksander Machniak 02864e546b Fix color palette on disabled buttons 7 years ago
mcnesium ef688172d5
Merge pull request #1 from mcnesium/mcnesium-sed-fix
separate multiple plugins with quotes each
7 years ago
mcnesium fd4b76ef56
separate multiple plugins with quotes each
envvar: `ROUNDCUBEMAIL_PLUGINS=archive,enigma,jqueryui,managesieve,markasjunk,identity_smtp,carddav`

resulting config.inc.php included `$config['plugins'] = ['archive', 'enigma,jqueryui,managesieve,markasjunk,identity_smtp,carddav'];`

now it includes `$config['plugins'] = ['archive', 'enigma', 'jqueryui', 'managesieve', 'markasjunk', 'identity_smtp', 'carddav'];`
7 years ago
Aleksander Machniak 2800445a93 FA4 -> FA5 in embed.less 7 years ago
Aleksander Machniak c6c1f5985d Upgrade to Font Awesome 5 7 years ago
Aleksander Machniak 5d26de4467 Add 'datepicker' class also to dinamically generated date inputs 7 years ago
Aleksander Machniak cfc408488d Add date format placeholder only to inputs with 'datepicker' class 7 years ago
Aleksander Machniak c4aaa22d24 Add date format placeholder to datepicker inputs (#101) 7 years ago
Aleksander Machniak 0b40c3db16 Merge branch 'master' of github.com:roundcube/roundcubemail 7 years ago
Aleksander Machniak de544cc905 Add possibility to use localized date format as datepicker input placeholder
Need to be supported by skin. Elastic support is comming.
7 years ago
Thomas Bruederli 400066c2eb Extend Dockerfile with volumes for shared temp data and custon config files 7 years ago
Aleksander Machniak bf9998b697 Make search/filter bars use full width of the container, simplify js code 7 years ago
Aleksander Machniak d55e04a617 Completed styles for embedded inline warnings 7 years ago
Aleksander Machniak 8e2f6275a4 Prevent from empty 'class' attribute in generated html 7 years ago
Aleksander Machniak 00cb440a07 Inline warnings can contain HTML code (regression fix) 7 years ago
Aleksander Machniak db382fa19c Change remote images to remote resources warning also in html attachment preview 7 years ago
Aleksander Machniak 3488531b26 Fix PHP Warning: Use of undefined constant INTL_IDNA_VARIANT_UTS46 on servers without php-intl extension 7 years ago
Aleksander Machniak 46e2e7e16c CS fix 7 years ago
Aleksander Machniak 0b0adf7bd1 Deactivate Mark button when no email is selected (#94) 7 years ago
Aleksander Machniak f52b185dc4 Move Refresh button to the list footer, make Compose button appear also on Compose page 7 years ago
Aleksander Machniak f49df60328 Add also overflow:hidden to form labels
As hyphens:auto does not work in all browsers/for all languages.
7 years ago
Aleksander Machniak 17b9bb4ec6 Use hyphens:auto for form labels (#69) 7 years ago
Aleksander Machniak d0711b6e94 Hide Attach menu item on phones (#102)
... as it's redundant because of Options and Attachments entry.
7 years ago
Aleksander Machniak 92346a3e69 Add back overflow:hidden on <body>
It's needed to prevent from appearing scrollbar when e.g.
a hidden iframe is added to the body for file uploads or draft saving.
7 years ago
Aleksander Machniak 09c8b33439 Code deduplication 7 years ago
Aleksander Machniak 5650d1a2d0 Increase dialog width for case when there's many buttons
We don't want the button text truncation
7 years ago
Georgeto 161038ee87 Support additional connect parameters in PostgreSQL database wrapper (#6071)
Most notably this change enables you to specify whether or with what
priority a secure SSL TCP/IP connection will be negotiated with the
database server.
7 years ago
Aleksander Machniak b60bf73aeb Fix so .notice message is .alert-info not .alert-warning 7 years ago
Aleksander Machniak 78aa0efa15 Use confirmation (not notice) message for some successful actions 7 years ago
Aleksander Machniak 608e23c9c0 Merge branch 'master' of github.com:roundcube/roundcubemail 7 years ago
Aleksander Machniak 895948f7fe Elastic: Add iframe wrappers 7 years ago
Aleksander Machniak aa542a35c1 Fix iframe scrolling in iOS (#87)
Also some other small fixes for iOS/Android.
7 years ago
Thomas B 6b76b04112
Merge pull request #6061 from J0WI/docker-pgsql
Docker PostgreSQL support
7 years ago
Aleksander Machniak 842d57e779 Fix setting height of a dialog without buttons pane 7 years ago
Aleksander Machniak 61a6666eee Small CS fixes 7 years ago
Aleksander Machniak d76f255c3b Improve iPad/iPhone detection
Some devices do not set iPhone/Ipad string in User-Agent, so we
have to check also navigator.platform.
7 years ago
Aleksander Machniak 92d6673bb5 Add 'signature' identifier to signature element in sent HTML message (#6073) 7 years ago
Aleksander Machniak ca39a4e093 Fix PHP warning "idn_to_utf8(): INTL_IDNA_VARIANT_2003 is deprecated" with PHP 7.2 (#6075) 7 years ago
Aleksander Machniak d04d0a3078 Fix toolbar when vieweing message in an external window 7 years ago
Aleksander Machniak fe2a9654d1 Mailvelope support 7 years ago
Aleksander Machniak 489ad88617 Small code de-duplication 7 years ago
Aleksander Machniak 59c4db6e6f Fix invalid HTML element name 7 years ago
Aleksander Machniak ff835c3b9b Add menu_destroy method
It is needed to call .popover('dispose') when a menu content is to be replaced.
So, we make this possible, but in future we should consider remiving this
requirement. Maybe even re-work the whole menu system.
7 years ago
Aleksander Machniak 9d1b3dcf29 Remove dead code 7 years ago
Aleksander Machniak f3af650445 Add an icon for .btn.create buttons 7 years ago
Aleksander Machniak 758044d69e Add skin config options to dont_override list
... so e.g. options in user preferences will be hidden.
7 years ago
Aleksander Machniak dd4e68335c Fix tabindex on filter icon 7 years ago
Aleksander Machniak a5c920153f Fix font size in toolbarmenu separator 7 years ago
Aleksander Machniak 2990a0bded Make pretty_checkbox method public, set cursor:pointer on the icon-checkbox 7 years ago
Aleksander Machniak 3b0e3deb21 Fix js error on servers without 'mime' extension 7 years ago
Aleksander Machniak a587e7a7dc Support data-hidden attribute on multi-input field 7 years ago
Aleksander Machniak 550e2fc6aa Support 'mime' extension tests - RFC5703 (#5832) 7 years ago
Aleksander Machniak ddb8e579f8 Merge pull request #70 from johndoh/buttons
skip buttons which already have the Bootstrap class
7 years ago
Aleksander Machniak 87eee9198f Ignore .css output files 7 years ago
Aleksander Machniak 7c6bbd81b0 Fix PHP 7.2 Warning: count(): Parameter must be an array or an object that implements Countable 7 years ago
Aleksander Machniak 68e2dca13a Fix so it is possible to have two searchbars on the same page 7 years ago
Aleksander Machniak 5a63e52380 Add class attribute to the pushgroup action button 7 years ago
Aleksander Machniak 11b39f555d Bring back the list titles in desktop mode, style .pushgroup action on contacts list
There's one reason we want list titles also in desktop mode. In Addressbook
when using filter_groups feature the title provides an option to navigate
to previous level of the list.
7 years ago
Thomas Bruederli 062d4a4060 Fix typos in Docker readme 7 years ago
Thomas Bruederli 20a511a8d3 Update dockerfile to version 1.3.3 and include php-ldap (#6058) 7 years ago
Thomas Bruederli cdecaf5ac7 Remove localization files that do not belong here 7 years ago
Aleksander Machniak 44ca3d9136 Fix label with checkbox inside of an .input-group 7 years ago
J0WI 5a315c47d9 Add documenation for more database providers 7 years ago
J0WI 4919043b73 Add support for linked PostgreSQL container 7 years ago
Aleksander Machniak eb23be2660 Add icon for Settings > Forwarding, small forms improvement 7 years ago
Aleksander Machniak 4fee0b22d8 Elastic: Support forwarding interface, added missing labels 7 years ago
PhilW e58ed633b4 skip buttons which already have the Bootstrap class 7 years ago
Aleksander Machniak e933bed60e Merge branch 'managesieve_forward_settings' of https://github.com/TBits/roundcubemail into TBits-managesieve_forward_settings 7 years ago
Aleksander Machniak ef304747f6 Fix missing pretty checkboxes in new filter record (managesieve) 7 years ago
Aleksander Machniak 1fbe6cef00 Fix initial value for custom flag input, update changelog 7 years ago
Aleksander Machniak bae1f1d41c Merge branch 'master' of https://github.com/daniele-athome/roundcubemail into daniele-athome-master 7 years ago
Aleksander Machniak 5d3f394ade Small improvements 7 years ago
Aleksander Machniak 13dab18652 Add minicolors config to the client env 7 years ago
Aleksander Machniak 12c5328dbb hide_blockquote: Fix counting of lines in multi-level quoted text 7 years ago
Aleksander Machniak e3b1bf4896 Small improvements 7 years ago
Aleksander Machniak 9b4678ed65 Limit number of used shades of gray, make them "inherit" from the main black 7 years ago
Aleksander Machniak b9249554a8 Quota indicator (#35) 7 years ago
Aleksander Machniak 55cd6b190b Apply skin colors to buttons, and other small improvements 7 years ago
Aleksander Machniak 52b252ea26 Also stop propagation on keyup event in dialogs 7 years ago
Aleksander Machniak c5db84262e Don't propagate keyboard events to the UI below the dialog (#6055) 7 years ago
Aleksander Machniak 6dbdf9dedd Skip empty blocks in contact form 7 years ago
Aleksander Machniak 196ce5d251 Fix so clicking pushgroup link on contacts list does not load group information page
Added a general way to mark all such links with data-action-link attribute.
7 years ago
Aleksander Machniak 32917f5944 Keep common variables in one place (file)
... to make plugin authors life simpler, so they don't have to
include all less files
7 years ago
Aleksander Machniak 36638ec0c2 Fix untagged COPYUID responses handling - again (#5982) 7 years ago
Aleksander Machniak 39e0b0e456 Fix so temp_dir misconfiguration prints an error to the log (#6045) 7 years ago
Aleksander Machniak ae688138ca Fix table widget 7 years ago
Aleksander Machniak 9ce8948294 Get rid of the 2nd argument of include_stylesheet()
.. make the optional behavior default now.
7 years ago
Aleksander Machniak 1cf72fa2b6 Allow plugins to include Less files (#6051) 7 years ago
Aleksander Machniak 8cfe461dea Improve printing styles (#58) 7 years ago
Aleksander Machniak 3ed6418d55 Use attributes of the template object 7 years ago
Thomas Bruederli 4b4c4633bc Refactored Dockerfile as suggested in #5874
It's now based on a php:7.1-apache image and pre-configures Roundcube
from the given environment variables to either connect to a MySQL server
or to use a local SQLite database.

Added a README file with some basic information and description of the
most important denv variables. More configuration options are yet to come.

This is a pre-requisite for #5827.
7 years ago
Aleksander Machniak 04a5ccdd49 We use master branch now 7 years ago
Aleksander Machniak 9fc1c0bce0 Update changelog 7 years ago
Aleksander Machniak 49825f2786 Bump version of some plugins 7 years ago
Aleksander Machniak c6b2d8bead Merge branch 'dev-elastic' 7 years ago
Aleksander Machniak c6e6f50de1 Simplify confirm_dialog and alert_dialog code and use 7 years ago
Aleksander Machniak a4ee367e1c Merge pull request #66 from JohnDoh/pretty_confirms
style buttons in pretty confirmation boxes
7 years ago
Aleksander Machniak 43c210f04d Merge branch 'pretty_confirms' of https://github.com/JohnDoh/roundcubemail into JohnDoh-pretty_confirms 7 years ago
PhilW 8c250a27f8 improvements for plugins and frames 7 years ago
Aleksander Machniak 01e3cf23e0 Fix PHP Warning: Use of undefined constant 'href' 7 years ago
Aleksander Machniak a98fb374a7 Small visual improvement 7 years ago
Aleksander Machniak fd373aa0e2 Fix PHP 7.2 warning on undefined constant RCMAIL_VERSION 7 years ago
PhilW e7311e0e5e more consistent function names 7 years ago
PhilW af52df68bf use skinned alert and confirm boxes in plugins 7 years ago
Aleksander Machniak bb9fa55f00 Add check for optional zip extension 7 years ago
Aleksander Machniak 4cb7713520 Fix checking table columns when there's more schemas/databases in postgres/mysql (#6047) 7 years ago
Aleksander Machniak a6c37b7735 Fix broken long filenames when using imap4d server - workaround server bug (#6048) 7 years ago
Aleksander Machniak f6733a5d9e Add id attribute to the reply-intro para (#6049) 7 years ago
Aleksander Machniak eed4be3ba6 Display value of the SMTP message size limit in the error message (#6032) 7 years ago
Aleksander Machniak 39415c52ba Center sidebar and list footers 7 years ago
Aleksander Machniak 0dfb92cb4f Move "Download all attachments" button from below the attachments list to .header-links 7 years ago
PhilW 26f1b0770c use skinned alert boxes 7 years ago
PhilW b897fe9349 use skined confirmation boxes where possible 7 years ago
Aleksander Machniak e6398f8786 Assign attachment type classes also in print mode 7 years ago
Aleksander Machniak e995682ba3 Small fix 7 years ago
Aleksander Machniak e7533ae02c My take on image thumbnails display 7 years ago
Aleksander Machniak 828f73a4b9 Small improvements to .image-attachment contents strusture 7 years ago
Aleksander Machniak 4c7612e8ae Use monospace font for plain text messages, fix some spacing 7 years ago
Aleksander Machniak 892b788f5a Add a way to display mail message headers in a table ("envelope") 7 years ago
Aleksander Machniak 96d3553c79 Add some labels for Elastic 7 years ago
Aleksander Machniak 375d648917 Improve minicolors widget style for Elastic 7 years ago
Aleksander Machniak 54806e053d Support minicolors widget styles 7 years ago
Aleksander Machniak adc9df803b Fix var scope (#6042) 7 years ago
Aleksander Machniak 552a851d6c Append "..." to draglayer as div, the same as other drag entries 7 years ago
Aleksander Machniak 1025724e52 Improve #rcmdraglayer element 7 years ago
Aleksander Machniak 1ffd2aa7ca Attachments list improvements for upload-form 7 years ago
Aleksander Machniak 8fcd014040 Small improvement to .cancelupload button 7 years ago
Aleksander Machniak 56ee8e812b Small improvements in addressbook UI 7 years ago
PhilW 9ef99ad707 style buttons in pretty confirmation boxes 7 years ago
Aleksander Machniak 0385eca50e Add tmplate option to place contact source inside the contact head element 7 years ago
Aleksander Machniak ff1b994ece More precise dialog height calculation - that works with various skins 7 years ago
Aleksander Machniak 5adf484939 Fix nevbar text on contacts list when the list is empty 7 years ago
Aleksander Machniak 73b2161e30 Fix folders list scroll on touch devices (#45) 7 years ago
Aleksander Machniak c776f4e569 Remove redundant brackets 7 years ago
Aleksander Machniak d5b58495a8 Use inline comments 7 years ago
Aleksander Machniak 60f738db6c Fix .listing records height to be the same for td and li 7 years ago
Aleksander Machniak 4dc1f3b757 Use configured log_file_ext also for errors thrown by PHP (#6035) 7 years ago
James White b9687ca345 Fix typos on optional security header comment (#6036) 7 years ago
Aleksander Machniak d9197c3bca Update to Roboto v18 7 years ago
Aleksander Machniak eb4991ef2b Improve .treelist 7 years ago
Thomas Bruederli 4a5099dc3e Updated Changelog 7 years ago
Timotheus Pokorra 65b645f6e1 adding template file for forwarding dialog for the classic skin
related to #6021
7 years ago
Aleksander Machniak 910c735b87 Merge branch 'master' into dev-elastic 7 years ago
Aleksander Machniak d7be2f1946 Merge branch 'dev-elastic' of github.com:roundcube/roundcubemail into dev-elastic 7 years ago
Aleksander Machniak a0374f3c45 Fix mangled non-ASCII characters in links in HTML messages (#6028) 7 years ago
Aleksander Machniak 968e20c5e5 Update changelog 7 years ago
Aleksander Machniak 2a32f51c91 Fix file disclosure vulnerability caused by insuficient input validation in relation with attachment plugins (#6026) 7 years ago
Aleksander Machniak ade0deca8e Make "external window" dialogs bigger on tablets 7 years ago
Aleksander Machniak 408c8dfe76 Fix mailto menu invoked from (.eml) attachment preview 7 years ago
Aleksander Machniak 274a86c20b Add thumbnail.png (definitely not a final version) 7 years ago
Aleksander Machniak 2f053c402d Add .overflow-ellipsis mixin 7 years ago
Aleksander Machniak 58e709f6e7 Cleanup unused styles 7 years ago
Aleksander Machniak e32f4a0976 Fix .message-partheaders element 7 years ago
Aleksander Machniak 311d8c7f56 Improve label 7 years ago
Aleksander Machniak 7a7ef7b687 Don't treat .eml attachments to drafts as drafts 7 years ago
Aleksander Machniak 35a59b97a1 Add some labels for Elastic 7 years ago
Aleksander Machniak 5ae662c198 Improvements for mobile attachment preview
- Hide More menu item as we do not support submenus yet
- Make sure .eml attachment preview has filename in the title bar
7 years ago
Aleksander Machniak f28b59e48b Fix missing filename in header of mobile preview for plain text attachments 7 years ago
Aleksander Machniak a394eae190 Update Bootstrap 7 years ago
Aleksander Machniak 5cb1541abd Fix/improve mailto menu 7 years ago
Aleksander Machniak 23af0b7f36 Merge branch 'master' into dev-elastic 7 years ago
Aleksander Machniak c63a232107 Fix so attachment and mailto menu actions close the menu 7 years ago
Aleksander Machniak 1b87ec3144 Don't stop propagation in folder-selector click handler 7 years ago
dsoares 5282cbaff9 Check against trusted_host_patterns in rcube_utils::parse_host() 7 years ago
Aleksander Machniak a869a68513 Make the attachments list item overflowing when the filename is long 7 years ago
Aleksander Machniak 680f827739 Refactored .attachmentslist 7 years ago
Daniele Ricci 1d3ab398c2 Allow for free-form flag filter action
Signed-off-by: Daniele Ricci <daniele@casaricci.it>
7 years ago
Aleksander Machniak 1158c35c4b Merge branch 'master' of github.com:roundcube/elastic 7 years ago
Aleksander Machniak 8960ca33f1 Attachment preview on mobile (#61) 7 years ago
Aleksander Machniak bf36ccd0ed Various improvements, mostly forms 7 years ago
Aleksander Machniak 662cbfb805 Fix add_url() so it works properly with fragment identifier (#element) at the end of the original url 7 years ago
Aleksander Machniak 0f4f85e097 Skip redundant INSERT query on successful logon when using PHP7
Since PHP 7.0 session_regenerate_id() will cause the old session data update.
This is redundant INSERT query and also produces a record for the session
we don't need anymore.
7 years ago
JohnDoh c4aadca1c0 Add charset to watermark.html (#6022) 7 years ago
Aleksander Machniak f8800e75fd Specify charset in watermark.html
.. just to prevent from a warning in browser console
7 years ago
Aleksander Machniak 239a590a29 Improve error template plus some small improvements here and there 7 years ago
Aleksander Machniak 80ea6ec3eb Small improvements in error page content 7 years ago
Aleksander Machniak 29b8f600c4 Hide "loading" message also when iframe loading fails with the error page 7 years ago
Aleksander Machniak ce594a4405 Support simple dialog's save button to be a label with domain 7 years ago
Aleksander Machniak 41ebae1dfb Support .boxinformation element and table with .checkbox-cell 7 years ago
Aleksander Machniak 30beaf6631 Update changelog 7 years ago
Nathan Rennie-Waldock c7b6efdd47 installto.sh: Fix false reporting of failed upgrade (#6019)
system() returns the last line of output (or false on failure)
rsync will have no output if the file being copied hasn't changed

Signed-off-by: Nathan Rennie-Waldock <nathan.renniewaldock@gmail.com>
7 years ago
Aleksander Machniak 671d53e4f4 Fix initial value of recipient input 7 years ago
Aleksander Machniak 1f9ac5c18f Style Archive folder (icon) also in folder selector 7 years ago
Aleksander Machniak 13ddd70f53 Fix left padding in #folder-selector 7 years ago
Aleksander Machniak 28d3dc9c8f Small fix for dialog buttons 7 years ago
Aleksander Machniak a61f2fdd3c Fix decoding of mailto: links with + character in HTML messages (#6020) 7 years ago
Timotheus Pokorra d222c3136c remove log message used for debugging 7 years ago
Timotheus Pokorra e853b1798a managesieve: new settings dialog for simple forwarding of emails
this hides the complexity of the filters from the user, similar to the vacation settings dialog.
related to #6021
7 years ago
Aleksander Machniak c085cf968d Display frame menus in full height (of the parent window) and other improvements to menus (#33) 7 years ago
Aleksander Machniak a4776d05e6 Fix attachment menu in message preview 7 years ago
Aleksander Machniak f96fd0b169 Merge branch 'dev-elastic' of github.com:roundcube/roundcubemail into dev-elastic 7 years ago
Aleksander Machniak e9571e8d0e Fix invalid HTML output 7 years ago
Thomas Bruederli f038784dac Also rm empty timezone localization files 7 years ago
Thomas Bruederli 342b049841 Update localization files from Transifex 7 years ago
Aleksander Machniak fb12d983d4 Use short legend labels in contact search form 7 years ago
Aleksander Machniak 6be122352d Support short-legend-labels in contact search form 7 years ago
Aleksander Machniak 7195204865 Use input-group for default_font and default_font_size 7 years ago
Aleksander Machniak 3885bfa29b Small forms improvements, added some icons for Kolab plugins 7 years ago
Aleksander Machniak 238ec1ecdf Archive: Style folder icon also in Settings > Folders 7 years ago
Thomas Bruederli 90859c5ea8 Update CHANGELOG 7 years ago
Aleksander Machniak 29dbcdb5ae Small fix for attachments list 7 years ago
Aleksander Machniak c65b4de161 Improve simple dialogs like group creation/rename or qr-code 7 years ago
Aleksander Machniak 60876bd38c Fix (pretty) checkboxes padding in lists 7 years ago
Aleksander Machniak 1109cd1150 Elastic: Fix checkbox state in advanced mode switch 7 years ago
Aleksander Machniak bd254b66c7 Set min-height for header/footer element
Fixes height issue on these elements when the screen height is very small
e.g. when using a phone keyboard appears
7 years ago
Aleksander Machniak b1d79900ed Fix invalid/partial merge of 3196d656db 7 years ago
Aleksander Machniak ef0982f1b8 Merge branch 'master' into dev-elastic 7 years ago
Aleksander Machniak fd9517655f Fix password form 7 years ago
Aleksander Machniak e85c95eb1b Hide navbar when it has no buttons, e.g. Help plugin UI 7 years ago
Aleksander Machniak 4ea094c80f Fix setting frame title, unify some title to use short label 7 years ago
Aleksander Machniak e00dd60c25 Elastic: Unify some frame titles 7 years ago
Aleksander Machniak e8b51553ec Don't use title object for frame title 7 years ago
Aleksander Machniak 96851b94ec Small fix to forms 7 years ago
Aleksander Machniak e6fd3982f6 Elastic: set some checkbox classes 7 years ago
Aleksander Machniak db5c06ab76 Improve buttons of mobile dialogs 7 years ago
Aleksander Machniak f9a2771a40 Improve content frame buttons setup 7 years ago
Aleksander Machniak 12ee7990ee Skip redundant resize code in iframe, cleanup 7 years ago
Aleksander Machniak e9047fc446 Fix setting status of content frame buttons 7 years ago
Aleksander Machniak ad8cba30db 1em -> 1rem for .formcontrol padding 7 years ago
Aleksander Machniak 6f977c5cae Fix scrolling issue in iframe'd forms with tabs 7 years ago
Aleksander Machniak db6048ad5d Use "Personal" instead of "Personal Information" in contact forms 7 years ago
Aleksander Machniak 7a95b148f8 Add option to use "Personal" instead of "Personal Information" label in contact form
We want short labels so tabs aren't wrapped on mobile
7 years ago
Aleksander Machniak 0f0340a940 Don't set form-check class for a row with .proplist element 7 years ago
Aleksander Machniak a346eb9717 Add localization label for "Personal" 7 years ago
Aleksander Machniak d9bf9e148b Don't use colon at the end of form field label 7 years ago
Aleksander Machniak e75e011f6e Unify navigation handling for content creation frames 7 years ago
Aleksander Machniak 25270cccca Elastic: hide mobile navigation when creating objects
.. i.e. filters, filter sets, enigma keys
7 years ago
Aleksander Machniak a8aa559fa1 Use action=add-folder when creating a new folder 7 years ago
Aleksander Machniak 25a7df7f4b Use action=add-folder when creating a new folder 7 years ago
Aleksander Machniak ffb2de5505 Fix bug where compose options could be added to wrong form 7 years ago
Aleksander Machniak 626010ed3b Fix width of items in popupmenus 7 years ago
Aleksander Machniak 551612ea1c Small padding fix in popupmenus 7 years ago
Aleksander Machniak 3d3a21492d Remove unused style 7 years ago
Aleksander Machniak 205ea5d0c2 Don't select settings sections list item when it's not initially visible 7 years ago
Aleksander Machniak 6291d03786 Small improvements in contact form 7 years ago
Aleksander Machniak 5031028d48 Elastic: Support more compact contact frame (info and form)
... plus some CS fixes
7 years ago
Aleksander Machniak f0b09608cf Contact form support 7 years ago
Aleksander Machniak fe542437a8 Add field labels in Advanced search form, CS fixes 7 years ago
Aleksander Machniak f0bc2cb50e Always position inputs in the middle 7 years ago
Aleksander Machniak 72a410503a Use simple list instead of table for groups list in contact info 7 years ago
Aleksander Machniak 197aacd86d Fix dropbutton after recent changes 7 years ago
Aleksander Machniak 752b1a1aea Fix treelist in Chrome 7 years ago
Aleksander Machniak 93fa140f04 Improve messages list using flexbox 7 years ago
dsoares 50a9c8f777 Add option trusted_host_patterns 7 years ago
Aleksander Machniak c26c85629c Added option managesieve_default_headers 7 years ago
Richard de Boer a1cbbf09c1 newmail_notifier plugin: don't notify for junked messages. (#5767)
When the mail server filters spam directly into the junk folder.
7 years ago
Aleksander Machniak e4fe0f69c6 Support display_product_info option 7 years ago
Aleksander Machniak cf0a1d6c11 Merge branch 'master' of github.com:roundcube/roundcubemail 7 years ago
Aleksander Machniak d269bd645b Update changelog 7 years ago
JohnDoh 515d496808 Replace display_version with display_product_info (#5904) 7 years ago
JohnDoh a8f0d35ebc Extend disabled_actions config so it accepts also button names (#5903) 7 years ago
Aleksander Machniak e19ebecc16 Improve pagejump-selector styling 7 years ago
Aleksander Machniak 80e76c962e Don't hide dialog window for show source dialog in mobile mode 7 years ago
Aleksander Machniak e21ab984bc Skip <span> wrappers in html_table that is a <ul> list 7 years ago
Aleksander Machniak d497e2aef0 Fix tabindex on compose options 7 years ago
Aleksander Machniak 0d51afb707 Fix padding in some form labels 7 years ago
Aleksander Machniak 560d194449 Add Save button to footer toolbar in mail compose on mobile 7 years ago
Aleksander Machniak 4d63cb41cc Fix setting form-check class 7 years ago
Aleksander Machniak d739036eda Improve identities list structure in key create form 7 years ago
Aleksander Machniak afa9f64d4b Small code unification 7 years ago
Aleksander Machniak 52256ba56b Display content buttons in footer toolbar 7 years ago
Aleksander Machniak 315f78a65a Elastic: Use btn.submit instead of button.save classes for Save button in forms 7 years ago
Aleksander Machniak d815525c6a Merge branch 'master' into dev-elastic 7 years ago
Aleksander Machniak f9644ea217 Update changelog 7 years ago
Aleksander Machniak 5e671885e4 Prevent from ghost messages on list after fast delete of multiple messages one-by-one (#5941) 7 years ago
Aleksander Machniak d9f3f17f96 Bootstrap 4.0.0-beta2 7 years ago
Aleksander Machniak 459cc7ab6d Fix bug where removing the last subfolder did not hide toggle button on its parent record (#6007) 7 years ago
Aleksander Machniak ce0592e1fc Fix truncated folder name on messages list in multi-folder mode, for folders with non-ascii characters (#6004) 7 years ago
Aleksander Machniak 9a5c66417a Improve checkboxes padding 7 years ago
Aleksander Machniak 0c1dde361c Improvements in resizeable textarea 7 years ago
Aleksander Machniak 968041aecd Update changelog 7 years ago
Brendan Braybrook 4574870adc fix: unknown content-disposition type should be treated as attachment (#6002) 7 years ago
Aleksander Machniak a3c72417f6 Small improvements 7 years ago
Aleksander Machniak 6d0ba0e50c A 'notice' is more a 'warning' than 'info' 7 years ago
Aleksander Machniak da15d55665 Fix regression in qsearch() that skipped execution when called with no args
Some plugins would like to do search without value,
so we keep value != '' check to allow that use-case.
7 years ago
Aleksander Machniak 7b5be0b631 Change icon for HTML mode 7 years ago
Aleksander Machniak ee32a25c2e Html/Plain mode switch for mail preview 7 years ago
Aleksander Machniak 3017ed1ed2 Fix extwin command state setting in a frame 7 years ago
Aleksander Machniak c559222d82 Implement 'message headers' and 'open in new window' buttons
TODO: fix 'open in new window' feature, by not disabling extwin command
in a frame that has a parent window that is not 'small'.
7 years ago
Aleksander Machniak 1c4e5a585f Support displaying all message headers in a dialog, use GET instead of POST 7 years ago
Aleksander Machniak dbecd3c8b5 Elastic: Fix padding for dialog buttons 7 years ago
Aleksander Machniak 1d2450c4a4 Fix focus indicator on list and some buttons spacing 7 years ago
Aleksander Machniak 000a607d71 Fixed some regressions 7 years ago
Aleksander Machniak 849fb6a197 Add style for mail signature 7 years ago
Aleksander Machniak 9d1c8aff83 Elastic skin support for managesieve (part II) 7 years ago
Aleksander Machniak 43fc74333b Update Bootstrap 7 years ago
Aleksander Machniak 6753d763ae A few more features from managesieve plugin 7 years ago
Aleksander Machniak 5e08a6ac59 Handle remote stylesheets the same as remote images, ask the user to allow them (#5994)
Fixes the issue where remote stylesheet could have been blocked
if the message contained no remote images and user have no way to
allow that content.
7 years ago
Aleksander Machniak 944013207c Remove cache-busters unintentionally added in e499a14e1 7 years ago
Aleksander Machniak 72aedd368b Fix Edge encoding bug when pasting text into the HTML editor, update to TinyMCE 4.5.8 (#5885) 7 years ago
Aleksander Machniak 3196d656db Fix css conflicts in user interface and e-mail content (#5891)
... by adding prefix to element/class identifiers
Also cleaned up some code and removed global variable use.
7 years ago
Aleksander Machniak 74e0e5141a Merge branch 'master' of github.com:roundcube/elastic 7 years ago
Aleksander Machniak c33d458d2a Support for variuos widgets used in managesieve plugin 7 years ago
Aleksander Machniak 6d8e2ad312 Elastic skin support for managesieve plugin (partial) 7 years ago
Aleksander Machniak 403d8453c8 Fix issue caused by non-default session.cookie_lifetime setting (#5961) 7 years ago
Aleksander Machniak 71c22a1b22 Merge pull request #55 from JohnDoh/menu-open
Add property to menu-open event to prevent skinning
7 years ago
PhilW 52222b325e add property to menu-open event to prevent skinning 7 years ago
Aleksander Machniak 1b08b9de4b Fix header-title alignment calculation, remove redundant style 7 years ago
Aleksander Machniak f6c7f6b7f5 Make some font-size bigger on touch devices 7 years ago
Aleksander Machniak 8782b70506 Added some widgets to support acl plugin 7 years ago
Aleksander Machniak 1347e2e868 Elastic skin support in acl plugin 7 years ago
Aleksander Machniak 1464c6d777 Various improvements 7 years ago
Aleksander Machniak 385512983c Add 'unlock' class to Save button in key passphrase dialog 7 years ago
Aleksander Machniak 86a641cf1c Don't style tables in an external content 7 years ago
Aleksander Machniak 22061cd38b Support flexbox display for remote objects element 7 years ago
Aleksander Machniak f8fc01b800 Fix so untagged COPYUID responses are also supported according to RFC6851 (#5982) 7 years ago
Aleksander Machniak 6e02950c70 Merge branch 'dev-elastic' of github.com:roundcube/roundcubemail into dev-elastic 7 years ago
Aleksander Machniak 85db9e77b8 Enable keyboard support on enigma keys list 7 years ago
Aleksander Machniak fb3e20e848 Cleanup searchbar 7 years ago
Aleksander Machniak 032625e696 Refactor/restyle search bars
Generally we don't use the animation effect it didn't work in all browsers
TODO: cleanup and test with IE
7 years ago
Aleksander Machniak 00a7caf7c6 Enable autoresizing of plain text areas of editor widget 7 years ago
Aleksander Machniak 67d4ffa4a8 Fix 'for' attribute on "Parent folder" label 7 years ago
Aleksander Machniak 7f462045a4 .table-responsive -> .table-responsive-sm 7 years ago
Aleksander Machniak b1b708408b Improve calendar widget style 7 years ago
Aleksander Machniak b92ef16339 Simplify messages list menu - selects instead of radios 7 years ago
Aleksander Machniak b1fcd0d0b1 Better legend text style 7 years ago
Aleksander Machniak 2a0f1475b7 Move UI messages above dialog overlay 7 years ago
Aleksander Machniak fadd5dd319 Implemented .pgpkeyimport 7 years ago
Aleksander Machniak 797696346e Not all tables should be of .table class 7 years ago
Aleksander Machniak 22b30de5d9 Fix bug where assets_path wasn't added to some watermark frames 7 years ago
Aleksander Machniak 95360ef8ab Use button instead of input.button in PGP keys search dialog 7 years ago
Aleksander Machniak 0d3b61a022 Elastic: propforms should use labels even if there are no inputs 7 years ago
Aleksander Machniak 9e2023ec91 Elastic: Add checkboxes to the keys list 7 years ago
Aleksander Machniak 6ca864ff9a Make tables pretier and responsive 7 years ago
Aleksander Machniak 182aa52ab9 Enigma: Key search and import in dialogs (for better Elastic integration) 7 years ago
Aleksander Machniak 5d3add78aa Add Message-ID to the sendmail log (#5871) 7 years ago
Aleksander Machniak 5d08580b86 Enigma: Add options to set PGP cipher/digest algorithms (#5645) 7 years ago
Aleksander Machniak 117c150b2f Fix bug where mail search could return empty result on servers without SORT capability (#5973) 7 years ago
Aleksander Machniak 3c1b78af48 Merge branch 'master' into dev-elastic 7 years ago
Aleksander Machniak 56b5eced08 Merge branch 'JohnDoh-managesieve-actions' 7 years ago
Aleksander Machniak e54e484a40 Fix "PHP Warning: array_search() expects parameter 2 to be array, null given" 7 years ago
Aleksander Machniak 2683d1d8df Update changelog 7 years ago
Aleksander Machniak 490aa70bd5 Merge branch 'managesieve-actions' of https://github.com/JohnDoh/roundcubemail into JohnDoh-managesieve-actions 7 years ago
Aleksander Machniak f805da20cc Remove unwanted outline on select in Firefox 7 years ago
Thomas B 13ee305aa0 Fix travis-ci status image url 7 years ago
Aleksander Machniak 5d24851cb9 Display the popup for Move button on bottom 7 years ago
Aleksander Machniak c8f72fafa8 Fix icon margin on toolbar buttons 7 years ago
Aleksander Machniak f769d532be Update Bootstrap 7 years ago
Aleksander Machniak cdd616744a Initial Elastic skin support for Enigma 7 years ago
Aleksander Machniak fb02d4a747 Fix error when calling show_popup_dialog() with no 4th argument 7 years ago
Aleksander Machniak 4223bed7e8 Add html_button class 7 years ago
Aleksander Machniak c02b638a3b Small improvements 7 years ago
Aleksander Machniak 5d16751ed8 Fix (again) bug where image data URIs in css style were treated as evil/remote in mail preview (#5580) 7 years ago
Aleksander Machniak bf40676749 Fix color of a link button in .ui.alert 7 years ago
Aleksander Machniak b0936ff631 Fix bug where on mobile list/sidebar could appear on window resize 7 years ago
Aleksander Machniak a0ed055ad7 Various style improvements 7 years ago
Aleksander Machniak 951d6e0e32 Assign dialog button classes before displaying the dialog 7 years ago
Aleksander Machniak 49fb73a979 Widgets: Info messages (#38)
and fixed spinning icons
7 years ago
Thomas Bruederli 3723f3f178 Fix rcube_utils::random_bytes() to not throw exception for length=0 7 years ago
Thomas B c56c9c5e40 Merge pull request #5935 from Slamdunk/travis
Add Travis CI config
7 years ago
Thomas B b0697e5f9a Merge pull request #5960 from duk3luk3/auth-log-server
Add host to IMAP login error
7 years ago
Aleksander Machniak f844dd7262 Support hide_blockquote plugin 7 years ago
Aleksander Machniak 6ff9628ed4 Set 'collapsed' class on hide_blockquote button when blockquote is collapsed 7 years ago
Aleksander Machniak 2754a621f3 Elastic skin support for hide_blockquote plugin 7 years ago
Aleksander Machniak 0a81fbb6e6 Support for userinfo plugin 7 years ago
Aleksander Machniak 509ef13a27 Elastic skin support in userinfo plugin 7 years ago
Aleksander Machniak 79ea526d65 Fix missing cursor in HTML editor on mail reply (#5969) 7 years ago
Aleksander Machniak 6bbdc2ee11 Small dialog improvements for new_user_dialog plugin 7 years ago
Aleksander Machniak d99f2e0569 Elastic skin support for new_user_dialog
Small refactoring, removed newuserdialog.css.
7 years ago
Aleksander Machniak 7b5f27741c Merge pull request #52 from JohnDoh/mixins
move font-icons to mixins file
7 years ago
PhilW 83cbafc22f move font-icons to mixins file 7 years ago
Aleksander Machniak f10eac8b17 Make sure inputs in dialogs always get form-control class, fix context handling in bootstrap_style() 7 years ago
Aleksander Machniak 5660489759 Fix decryption of messages encoded with non-ascii charset (#5962) 7 years ago
Aleksander Machniak 65a7c1eb34 Small fix in update_func of recipient-input 7 years ago
Aleksander Machniak 96b21c5df3 Remove contentEditable element support as autocomplete input 7 years ago
Aleksander Machniak 8826cd3fb5 Rewrite recipient-input not using contentEditable elements 7 years ago
Aleksander Machniak 81f76bf826 Fix corner-case for reading contentEditable element for autocomplete 7 years ago
Aleksander Machniak 757423373d Bootstrap'ize contact search form 7 years ago
Aleksander Machniak ef5583d9db Some fixes for IE11 7 years ago
Aleksander Machniak cbf80fb744 Rework layout/navigation
- list/sidebar footer buttons with text also on mobile
- fix UI with screen width = 768px
7 years ago
Aleksander Machniak 52e96f8d1b Improvements in autocomplete and googiespell menus 7 years ago
Aleksander Machniak 28526a73f1 Merge branch 'master' of github.com:roundcube/elastic 7 years ago
Aleksander Machniak 6780fcb95b Replace "Add to addressbook" icon with a menu (#47) 7 years ago
Aleksander Machniak 5afda409aa Add has_writeable_addressbook flag to client env in mail preview 7 years ago
Lukas Erlacher 130f0cde3e Add host to IMAP login error
This simplifies debugging authentication failures in multi-host setups.
7 years ago
Aleksander Machniak 65fd828a43 Merge branch 'master' of github.com:roundcube/elastic 7 years ago
Aleksander Machniak 2c53d903df HTML editor with integrated mode switch (#41) 7 years ago
Aleksander Machniak cd7ca6014f Describe html editor textarea with data-html-editor attribute 7 years ago
Aleksander Machniak 1efc77481b Use iframe loader for loading frame content on Prev/Next button use 7 years ago
Aleksander Machniak 68e3350c3f Small fix for .short-header 7 years ago
Aleksander Machniak 0d57714713 Don't reset classes of the textarea in HTML mode, just append 'mce_editor' class 7 years ago
Aleksander Machniak 0c345b66cf Style search menus 7 years ago
Aleksander Machniak 5e14533422 vcard_attachments plugin support 7 years ago
Aleksander Machniak 4ade7acdac Elastic skin support for vcard_attachments plugin (with some refactorings) 7 years ago
Aleksander Machniak a2856493b8 Icons in Responses menu, and other menu improvements 7 years ago
Aleksander Machniak d1c3955cc3 Some improvements in the message preview (contact photo, summary text, fixed alerts) 7 years ago
Aleksander Machniak 83fe734460 Move some functions from func.inc to show.inc where they belong to.
Add MessageSummary object for message template.
7 years ago
Aleksander Machniak 27377e29dc Trim text in subject_text(), so title attribute is displayed without unwanted spacing
Looks like at least Firefox does not trim i automatically.
7 years ago
Aleksander Machniak e76b3f27f2 Fix handling checkboxes in compose form 7 years ago
Aleksander Machniak c478985097 Improvements in forms (spacing, alignment, pretty checkboxes) 7 years ago
Aleksander Machniak b599f887d1 Pretty checkboxes (#22) 7 years ago
Aleksander Machniak 0ffd5463d8 Fix wording of "Mark previewed messages as read" to "Mark messages as read" (#5952)
Since we use the option not only for the preview frame the "previewed" word was confusing.
7 years ago
Aleksander Machniak 72fe97ddfc Fix bug where HTML messages could have been rendered empty on some systems (#5957)
Consistently use $nodeName instead of $tagName property.
7 years ago
Aleksander Machniak ee6b5e9e58 Fix PHP 7.2 error: count(): Parameter must be an array or an object that implements Countable 7 years ago
Aleksander Machniak fa3eb6813f Ignore rewind() warnings (#5950) 7 years ago
Aleksander Machniak 148ccda88a Password: Support host variables in password_db_dsn option (#5955) 7 years ago
Aleksander Machniak 3986f18190 Small improvements 7 years ago
Aleksander Machniak e1571ce4c4 Remove Cancel button from contact form 7 years ago
Aleksander Machniak 409f0bd729 Better .header-title 7 years ago
Aleksander Machniak 0fb56d14ab Align toolbar to center - on big screen 7 years ago
Aleksander Machniak 2f08cc8250 Messages list filter, improvements to search form 7 years ago
Aleksander Machniak e476582208 Fix switching list mode to "list" 7 years ago
Aleksander Machniak 19ad6b15e8 Add (unified) get_next/get_prev/get_single_selection methods for list and treelist widgets 7 years ago
Aleksander Machniak 852e931c5d Enable content frame navigation for Settings > Folders 7 years ago
Aleksander Machniak 003bec2ccb Fix checkbox rows in forms, fix toggle icon position on folders list 7 years ago
Aleksander Machniak 41c2ce2e82 Small improvements for lists 7 years ago
Aleksander Machniak 93111b3bd7 Make possible to use thread padding value other than 15px 7 years ago
Aleksander Machniak 1bd327ecda Add possibility to select first/last record after the list is loaded
.. for contacts and messages lists
7 years ago
Aleksander Machniak 420aff4544 Content frame navigation 7 years ago
Aleksander Machniak 3a77c906a1 Merge branch 'master' into dev-elastic 7 years ago
Aleksander Machniak 91cd42ceea Hide li.root element on folders list, temp. hide quota widget 7 years ago
Aleksander Machniak bac37a4213 Added icons for addressbook Actions menu 7 years ago
Aleksander Machniak a3ace80cef Update searchbar state on init 7 years ago
Aleksander Machniak 77ba38a63e Get rid of Back button in mail compose, use Mail button in task menu 7 years ago
Aleksander Machniak 3be86313fd CS fixes and some security checks 7 years ago
Aleksander Machniak d67d52a1d8 Support 'label' attribute in listmenulink object 7 years ago
Aleksander Machniak e71cb1dd31 List options... -> Options 7 years ago
Aleksander Machniak a0ef47e3bf Add some labels for elastic 7 years ago
Aleksander Machniak 797cc112d5 Compose list/sidebar navigation in phone/tablet mode 7 years ago
Aleksander Machniak 20f8a20ec8 Floating form buttons 7 years ago
Aleksander Machniak 6ecf87b5bd Support 'class' attribute in ComposeFormHead object 7 years ago
Aleksander Machniak eb46e6f430 Fix updatecss.sh command 7 years ago
Aleksander Machniak afa03008c7 Code simplification 7 years ago
Aleksander Machniak 51c76c9bac Add missing variable declaration 7 years ago
Aleksander Machniak 508ae47534 Merge branch 'master' of github.com:roundcube/roundcubemail 7 years ago
Aleksander Machniak 3210f11892 Fix invalid template loading on a message error in preview frame (#5941)
Broken in 1b4fa60a90.
7 years ago
Aleksander Machniak 8491271dd2 Toolbar buttons that will display inner text only on mobile. (e.g. To+, Cc+, Bcc+ buttons) 7 years ago
Aleksander Machniak 23fbeab062 Add note about common ssl certificate validation issues 7 years ago
Aleksander Machniak 5200d82381 Fix so files size/count limit is verified (client-side) also on drag-n-drop uploads (#5940) 7 years ago
Aleksander Machniak 7fc626d527 Changed defaults for smtp_user (%u), smtp_pass (%p) and smtp_port (587) 7 years ago
Aleksander Machniak 93d0ba2beb List navigation bar 7 years ago
Aleksander Machniak cb57720e8c Improvements in list/sidebar footers
List navigation will be next...
7 years ago
Aleksander Machniak 8eea3a842b Move some buttons from list footer to toolbar
Now it's more consistent with what we had in Mail UI.
List footer will be a place for selection/settings features.
7 years ago
Aleksander Machniak df5f1a114a An icon for the Junk button 7 years ago
Aleksander Machniak 625c3c3942 Elastic: Set innerClass for Junk button 7 years ago
Aleksander Machniak 155d7b1900 Update Bootstrap, use bundle with popper included 7 years ago
Aleksander Machniak f33ea8d798 Fix compatibility with PHP 5.4 7 years ago
Aleksander Machniak 131071b4c0 Add icon for Mark button in "mark all as read" dialog 7 years ago
Aleksander Machniak b2cf1ada41 Options menu for mail folders list 7 years ago
Aleksander Machniak cdcbad1879 Handle inline images also inside multipart/mixed messages (#5905) 7 years ago
Aleksander Machniak b1a3d46f89 Fix bug where pink image was used instead of a thumbnail when image resize fails (#5933)
Note GD and Imagick in INSTALL file and optional installer checks.
7 years ago
Thomas Bruederli e3d75663ec Update changelog and copyright year 7 years ago
Filippo Tessarotto e5e37928d4 Add Travis CI 7 years ago
Aleksander Machniak 8ab382a3f6 Some work on list navigation 7 years ago
Aleksander Machniak 45aff25c66 Fix passing event argument when hiding the pagejump-selector menu
and fix keyboard event detection.
7 years ago
Aleksander Machniak 19cf2790f6 Remove innerclass for menus 7 years ago
Aleksander Machniak 9c1dafba08 Add icons for Select and Threads menus 7 years ago
Aleksander Machniak 4a5aa6e83f [data-content-button] A way to move a button to content frame header for small screens
we place Reply button in the header when we preview a mail message
we place Send button in the header when we compose a message
7 years ago
Aleksander Machniak 3542858e39 Style jquery-ui's datepicker widget 7 years ago
Aleksander Machniak 91826a755b Elastic: Cleanup datepicker styles 7 years ago
Aleksander Machniak 5c1f508bf7 Use only classes for layout elements 7 years ago
Aleksander Machniak 663384c429 Get rid of redundant menu/list/sidebar/content identifiers 7 years ago
Aleksander Machniak ed734336dc Fix toolbar menu in 1024px > width > 768px 7 years ago
Aleksander Machniak 2b61a1ea58 Don't hide the searchbar on click in a dialog 7 years ago
Aleksander Machniak a5869ba543 Add toolbar menu to the list header on small screens 7 years ago
Aleksander Machniak e61121dc2f Composer: Fix certificate validation errors by using packagist only (#5148)
.. switched for the last dependency i.e. kolab/net_ldap3
7 years ago
Aleksander Machniak 999cfe9f82 Enigma: Add button to send mail unencrypted if no key was found (#5913) 7 years ago
Aleksander Machniak 9672642479 Cleanup compose input checks (small improvement to the last commit) 7 years ago
Aleksander Machniak b77cce8d3e Fix sending message with "Too many public recipients" dialog buttons (#5924) 7 years ago
Aleksander Machniak 2d608a799c Fix decoding message/rtf822 part body/size
When e.g. an encrypted message has one of it's sub-parts a part that is message/rfc822
part we need it's body and size, because it will be listed on the attachments list
and also can be downloaded.
7 years ago
Aleksander Machniak d4478c4ff7 Enigma: Fix decrypting an encrypted+signed message when signature verification fails (#5914) 7 years ago
Aleksander Machniak 902eaa1f78 Remove height definition for "mark all as read" dialog 7 years ago
Aleksander Machniak 52158aa3c7 Fix height of dialogs that do not have a predefined height
This fixes e.g. "no subject" dialog or enigma passphrase dialog.
7 years ago
JohnDoh 5cb380f23a managesieve: only float buttons on long pages (#5921) 7 years ago
Aleksander Machniak e7cd4bacdd Bring back rcmail_html_container_id global 7 years ago
Aleksander Machniak 52228ecb08 Bring back border-top on mail preview frame, remove some redundant border-radius 7 years ago
Aleksander Machniak 1235dcf321 Encode JSON with JSON_UNESCAPED_SLASHES and JSON_UNESCAPED_UNICODE options 7 years ago
Aleksander Machniak cf9019e462 Fix savetarget frame use (#5897) 7 years ago
Aleksander Machniak 3f6ca2cffc Add --get and --extract arguments and CACHEDIR env-variable support to install-jsdeps.sh (#5882) 7 years ago
Aleksander Machniak 73de455058 Small improvements to buttons in managesieve forms 7 years ago
Aleksander Machniak 81f7cc6b8f Merge branch 'managesieve-larry' of https://github.com/JohnDoh/roundcubemail into JohnDoh-managesieve-larry 7 years ago
Aleksander Machniak dbc7e5b7c3 Fix bug where 'exists' operator was reset to 'contains' (#5899) 7 years ago
Aleksander Machniak 1a1137f020 Add missing type="link" for some buttons 7 years ago
buborh 4f400ab7aa password plugin ldap driver: use full %login as %name/%n when no @ in username. (#5902) 7 years ago
Thomas Bruederli 04d9e8addc Remove pointless code + improve comment 7 years ago
Thomas Bruederli 0463a9ab2f Update changelog 7 years ago
Thomas Bruederli 1cfc024036 Modify links in html messages during Washtml DOM traversal
This is a more safe approach than using regex and mitigates
possible vulnerabilities using malformed html markup.
7 years ago
Thomas Bruederli 919338d4ba Escape textarea contents in Washtml 7 years ago
PhilW 16acef1749 managesieve: larry skin tweaks 7 years ago
PhilW 2aee340cbb support disabling of specific actions in managesieve plugin 7 years ago
Thomas Bruederli 3918cb1d32 Update Changelog 7 years ago
Thomas Bruederli 8d882639d9 Bring back double-click behavior on the message list when preview pane is on (#5823)
This reverts commit 28741ed03 as requested in #5199 and implements an
approach inspired by @bostjan in that ticket.
7 years ago
Aleksander Machniak 1c24c69a3b Fix path for css file existence check in include_stylesheet() 7 years ago
Aleksander Machniak 4cef4169db Add some labels for elastic skin 7 years ago
Aleksander Machniak 9f4d11a131 Focus/hover for buttons in toolbar 7 years ago
Aleksander Machniak a63cef3f84 Fix some typos 7 years ago
Aleksander Machniak 15121f41b5 Move list/threads mode selection to the list options popup 7 years ago
Aleksander Machniak 216e9fb5ae Small color fixes on messages list 7 years ago
Aleksander Machniak 4a71847c98 Fix bug where last character of a filename extracted from TNEF could be truncated (#5799) 7 years ago
Aleksander Machniak 7d76dd9400 Improved toolbar 7 years ago
Aleksander Machniak 75f623c62f Make the Preferences item as selected when visiting Settings without _action 7 years ago
Aleksander Machniak 8ae39e2b58 Fix some colors 7 years ago
Aleksander Machniak 7d4896c3af Fix setting 'touch' class on an iframe's html element 7 years ago
Aleksander Machniak 3fb565b1f3 Some more color vars 7 years ago
Aleksander Machniak 3ec7697ccf Fix title "leaking" to parent window from dialog frames 7 years ago
Aleksander Machniak e411bd62d6 Modify tinymce toolbar on touch devices, not only on small screen 7 years ago
Aleksander Machniak 8a9126575f Focus recipient-input after it's been unhidden 7 years ago
Aleksander Machniak e8680257b3 Varius css improvements 7 years ago
Aleksander Machniak 830a50f1ce Add (elastic-compatible) classes for zipdownload menu items 7 years ago
Aleksander Machniak 69f50b122d Add a way to include plugin stylesheets optionally only if the file exists 7 years ago
Aleksander Machniak 3c8357f5af Taskmenu improvements, applied colors by John Jackson 7 years ago
Aleksander Machniak f3ce401def Set 'propform' class for password change form table 7 years ago
Aleksander Machniak 3309a7fe76 Fix password plugin on mobile 7 years ago
Aleksander Machniak 6d1c162253 Refactored #taskmenu and improved for mobile 7 years ago
Aleksander Machniak be70a37424 Various fixes for the attachment preview in mobile mode 7 years ago
Aleksander Machniak a7f814e135 BUG: After deleting an open message the view does not go back to the list (#34) 7 years ago
Aleksander Machniak d2909ed20e Display fullscreen dialogs for width <= 480px 7 years ago
Aleksander Machniak 2bafa39dd7 Refactored some layout classes, consider screen <= 1024px to be a touch device 7 years ago
Aleksander Machniak 13d203303e Refactored Help plugin to use frames, added Elastic skin support 7 years ago
Aleksander Machniak bba6b2f273 Reset content frame title on frame unload 7 years ago
Aleksander Machniak 302e34f5d2 Fix some typos 7 years ago
Aleksander Machniak 9fb943ada1 Don't set display:flex in js
We'll use -webkit- and -ms- prefixes in css, it will not work well in js.
7 years ago
Aleksander Machniak 2b3ab9635b README -> README.md 7 years ago
Aleksander Machniak 9533d25a15 Some improvements for phones layout 7 years ago
Aleksander Machniak 188e75f775 Support moving sidebar entries to toolbar menu on mobile 7 years ago
Aleksander Machniak 04b8f6b9d9 Use dialogs instead of new windows on mobile, e.g. for View source feature (#13) 7 years ago
Aleksander Machniak 24be0ea1cd Add missing type="link" for buttons in ACL tables 7 years ago
Aleksander Machniak 24454eb730 Disable extwindows and printing functionality on mobile (#13) 7 years ago
Aleksander Machniak 4dfb00796d Mobile popup menus (#33) 7 years ago
Aleksander Machniak 5d398d4d00 Add version number to the client environment 7 years ago
Aleksander Machniak 467d8daabb Disable help_open_extwin in mobile mode 7 years ago
Aleksander Machniak 1af88865e9 Support external content in content frames 7 years ago
JohnDoh afaaa7764b Use list_widget.get_selection() rather than list_widget.selection (#5879) 7 years ago
Aleksander Machniak e98c651ae1 Map also 'button-selected' to 'selected' class on taskmenu items 7 years ago
Aleksander Machniak c66d3c877e Better spacing in taskmenu 7 years ago
Aleksander Machniak 32759e2fcf Support Help plugin
... and some other plugins that add an entry to the taskmenu
7 years ago
Aleksander Machniak f359144423 Small fixes 7 years ago
Aleksander Machniak ebfc8448aa Small correction in dialog size calculation 7 years ago
Aleksander Machniak 9cdab037a0 Small dialog improvements 7 years ago
Aleksander Machniak 10d0480d6c Some work on jquery-ui dialogs and some other small improvements 7 years ago
Aleksander Machniak 0940370ccd Support elastic skin in jqueryui plugin
For now only dialogs covered.
7 years ago
Aleksander Machniak e9eb87d6f4 Add 'getselection' event to the list widget 7 years ago
Aleksander Machniak c2068070df Fix path to minicolors image 7 years ago
Aleksander Machniak b54a0b86b1 Update to jquery-minicolors 2.2.6 7 years ago
Aleksander Machniak 06323ddef4 Support _filter and _scope as GET arguments for opening mail UI (#5825) 7 years ago
Aleksander Machniak 913066dd3b Merge branch 'master' into dev-elastic 7 years ago
Aleksander Machniak 78e43cf4a6 Fix some redundant paddings in forms and unwanted horizontal scrollbar 7 years ago
Aleksander Machniak 92d5406b4e Better dialog size setting 7 years ago
Aleksander Machniak 8bcecf52cb Fix closing forward-menu when opening Bounce dialog 7 years ago
Aleksander Machniak fc1a0a1f65 Fix bug where messages count was not updated after delete when imap_cache is set (#5872) 7 years ago
Aleksander Machniak 040a71e76c Make public class rcmail_bounce_mail (now rcmail_resend_mail) (#5861) 7 years ago
Aleksander Machniak 43161325d6 Add missing type="link" 7 years ago
JohnDoh 7993b032fb Add basic styles for <button> to classic skin (#5863)
Improve display of password plugin by adding styles to Classic skin
7 years ago
Aleksander Machniak 08de22413d Update bootstrap to the most recent build 7 years ago
Aleksander Machniak 8e126e8648 Fix duplicate messages on the list after deleting messages on the next to the last page (#5862)
... also when deleting via 'mark' and 'archive' actions
7 years ago
Aleksander Machniak b99eed5c56 Fix duplicate messages on the list after deleting messages on the next to the last page (#5862) 7 years ago
Aleksander Machniak 0fa4b75f78 Managesieve: Partial support for mime extension [RFC5703] - parser only (#5832) 7 years ago
JohnDoh 6b90d56e56 update message icon colours (#5859) 7 years ago
Aleksander Machniak d191bc52a5 Add mail bounce dialog 7 years ago
Aleksander Machniak 429a1694b6 Fix various errors in mail bounce dialog 7 years ago
Aleksander Machniak f76f6dcb01 Fix various errors in mail bounce dialog 7 years ago
Aleksander Machniak 76adb49454 Support for IMAP folders that cannot contain both folders and messages (#5057) 7 years ago
Aleksander Machniak cfed954a46 Fix bug where Chrome could not upload the same file that was selected before (#5854)
... and removed the cancel hack that is not needed anymore.
7 years ago
Aleksander Machniak 69795ebd1d Simplify some css selectors 7 years ago
Aleksander Machniak f6df78435e Fix duplicated signature when using Back button in Chrome (#5809) 7 years ago
Aleksander Machniak 46c96bf0c0 Detach savetarget frame in onload or onerror
.. because before it was detached too early causing some code
from the iframe to be not executed.
7 years ago
Aleksander Machniak 58cae2ae5b Better workaround for history issues
Before we used history.back() in mail compose to workaround
history issues related to hidden iframe use. This again stopped
working as we switched to about:blank instead of blank.gif href.
A better solution is to detach the iframe after use and re-append
again when needed.
7 years ago
Aleksander Machniak b7e42de7ac Fix regressions in check_compose_input() 7 years ago
Aleksander Machniak 5ea0d5bfbb Support .user.ini in installto.sh 7 years ago
Aleksander Machniak ca6f5ebd5b Update changelog 7 years ago
Aleksander Machniak b9b14e4532 Use .log suffix also in .htaccess/.user.ini 7 years ago
Helmut K. C. Tessarek 4071c8ba92 .user.ini for php-fpm (CGI/FastCGI SAPI) (#5847)
This file is read and processed by the CGI/FastCGI SAPI
PHP settings in .htaccess are only available to the PHP Apache module
also see: http://php.net/manual/en/configuration.file.per-user.php
7 years ago
Aleksander Machniak 4ff33f12ec Update changelog 7 years ago
Aleksander Machniak a60c81d1b1 Managesieve: Fix AM/PM suffix in vacation time selectors 7 years ago
Aleksander Machniak f75553dee8 Use "Resend (bounce)" instead of "Bounce" as the menu item label 7 years ago
Aleksander Machniak 118367ce64 Merge branch 'master' of github.com:roundcube/roundcubemail 7 years ago
Aleksander Machniak 1b2d3c0ac2 Email Resent (Bounce) feature (#4985) 7 years ago
Aleksander Machniak b97e3b5cd7 Don't ignore (global) userlogins/sendmail logs in per_user_logging mode 7 years ago
Aleksander Machniak 16f84cc9c0 Fix font-weight of mainaction buttons in hover state 7 years ago
Aleksander Machniak e04f72d018 Fix PHP 7.2 warnings on count() use (#5845) 7 years ago
Aleksander Machniak 97bf251dc6 Don't use create_function() deprecated in PHP 7.2 7 years ago
Aleksander Machniak 73482dc8b2 Update changelog 7 years ago
JohnDoh 5edfd5722e improve detection for Egde browser and add pointer event support (#5783)
add support for pointer events on list widget, use either pointer or touch events, not both
7 years ago
Aleksander Machniak 46a569d692 Add nice loader for dialogs with an iframe 7 years ago
Aleksander Machniak 69cde0e2cc Remove backface-visibility on font-icons, this fixes "distortion" on animated icons (e.g. loading icon) in Firefox 54. 7 years ago
Aleksander Machniak bbab99811d Fix assigning .form-control-plaintext to form cells with select element 7 years ago
Aleksander Machniak ee25ea4c5d Get rid of recipients_(separator|delimiter) use, support both (;,) 7 years ago
Aleksander Machniak 1b4fa60a90 Fix header position in messageerror when in extwin mode 7 years ago
Aleksander Machniak 41ef0398ab Fix watermark position in messageerror template 7 years ago
Aleksander Machniak 4b2f2b6b3b Use about:blank instead of blank.gif for empty iframes 7 years ago
Aleksander Machniak 84a79ee8db Move common mail composing/sending code to new rcmail_sendmail class
This is needed to make simpler an implementation of e.g.
- Mail Bounce feature (#4985),
- Direct Draft sending (#4998),
- Fast reply from mail preview (#5129).
7 years ago
Aleksander Machniak 3ab58e9201 Merge branch 'Philippe23-make-qrcode-optional' 7 years ago
Aleksander Machniak b5e5e2d12a CS fix 7 years ago
Philippe 'Peep' Chaintreuil 333d7556af Disable qrcode if Endroid QrCode library is missing
Treat a missing QrCode library the same as roundcube treats a missing
php-gd library.  Hide the button to disallow access.

Requested by distributions that don't use composer and don't yet have
packages for the QrCode library.
7 years ago
Aleksander Machniak e9716503a2 Move "cursor" position on \r\n sequence after single-dot in a line (#5838) 7 years ago
Aleksander Machniak 8b61d6a2d1 Fix parsing dot-staffed lines in multiline text (#5838) 7 years ago
Aleksander Machniak 86a4d78369 Merge branch 'dev-elastic' 7 years ago
Aleksander Machniak 05ea5a5548 Add ignore_errors option to rcube_db, so error logging can be disabled temporarily
Use ignore_errors to make sure the DDL upgrade errors are printed only once.
7 years ago
Aleksander Machniak 9d63b80873 Fix bug where errors were not printed when using bin/update.sh (#5834)
Don't pass errors to rcmail_install::raise_error() in CLI mode.
7 years ago
Aleksander Machniak 3cd8783227 Fix c/p issue 7 years ago
Aleksander Machniak 8993059875 Add Preferences > Mailbox View > Main Options > Layout (#5829) 7 years ago
Aleksander Machniak a1117c5bcb Merge branch 'remicollet-issue-logfilename' 7 years ago
Aleksander Machniak a8278d61cf Update changelog, CS fixes 7 years ago
Aleksander Machniak 8b7c7dd5a9 Merge branch 'issue-logfilename' of https://github.com/remicollet/roundcubemail into remicollet-issue-logfilename 7 years ago
Aleksander Machniak bf4326c834 Bump archive version number, update changelog 7 years ago
Aleksander Machniak 19133769e5 Fix archiving by sender address on cyrus-imap
Cyrus-IMAP does not allow @-character in folder names
7 years ago
Aleksander Machniak 402a463448 Use base64 for headers encoding in ISO-2022-JP 7 years ago
Aleksander Machniak 21e7d873ce Fix so links over images are not removed in plain text signatures converted from HTML (#4473) 7 years ago
Aleksander Machniak 6f87a32052 Use 7bit encoding for ISO-2022-* charsets in sent mail (#5640) 7 years ago
Aleksander Machniak 6a83c3cc18 Fix fatal error when using DMY- or MDY-based date format in PostgreSQL (#5808) 7 years ago
Aleksander Machniak fc12b6574e Fix position of selected icon for (Mailvelope) Encrypt button 7 years ago
Aleksander Machniak 207c6b8a6b Fix bug where a.button style from managesieve plugin could impact other elements (#5800) 7 years ago
Aleksander Machniak a3a43d3218 Remove useless box-shadows 7 years ago
Aleksander Machniak 57fe976679 Fix style issue on selected and unfocused message that is part of a thread (#5798) 7 years ago
Aleksander Machniak 1fcf7bfab3 Fix bug where HTML messages with @media styles could moddify style of page body (#5811) 7 years ago
Aleksander Machniak 18279e01b8 Merge branch 'master' of github.com:roundcube/roundcubemail 7 years ago
Aleksander Machniak 05d7fcc698 Cleanup 7 years ago
Aleksander Machniak 792fd57b09 Merge branch 'master' of https://github.com/HarrySmallbones/roundcubemail into HarrySmallbones-master 7 years ago
Felix Eckhofer 37d3710574 Fix regression when JAR_DIR is a relative path (#5815) 7 years ago
Aleksander Machniak 5597ff2107 Skip js deps installation if there's no jsdeps.json and install-jsdeps.sh 7 years ago
Kai Ren 9a6ab3dc86 Fix absent directory error in `install-jsdeps.sh` when processing `maps` section (#5819) 7 years ago
Aleksander Machniak f0431c7475 Fix uninitialized string offset in rcube_utils::bin2ascii() and make sure rcube_utils::random_bytes() result has always requested length (#5788) 7 years ago
Aleksander Machniak 0bef84c410 Fix decoding non-ascii attachment names from TNEF attachments (#5646, #5799) 7 years ago
Remi Collet 6ca4eab399 add 'log_file_ext' configuration option 7 years ago
Aleksander Machniak 257ed36065 Update changelog 7 years ago
Remi Collet ff256b7bb9 Drop ereg dependency, fix compat with PHP 7 (#5820) 7 years ago
Thomas Bruederli f86154349d Add milestone to changelog 7 years ago
Aleksander Machniak 2cb9de358b Return "401 Unauthorized" status when login fails (#5663) 7 years ago
Aleksander Machniak 6dee73a0ec Support both comma and semicolon as recipient separator, drop recipients_separator option (#5092) 7 years ago
Aleksander Machniak bcc6405552 Fix various issues when downloading files with names containing non-ascii chars, use RFC 2231 (#5772) 7 years ago
Aleksander Machniak a4f46d3735 Fix alignment of static text entries in .propform 7 years ago
Aleksander Machniak 7b4b36b16c Plugin API: Added 'show_bytes' hook (#5001) 7 years ago
Aleksander Machniak b629372db1 Cosmetic improvements in #composeoptions 7 years ago
Aleksander Machniak 8a29c2a5f7 Update bootstrap to latest build 7 years ago
Aleksander Machniak e5bc7b85e0 Cleanup target /vendor directory from old dependencies
- also slightly fixed rsync command syntax
7 years ago
Thomas Bruederli 109ca4dfc2 Fix js-deps check and installation 7 years ago
Thomas Bruederli 0a68b93e73 Update the list of obsolete composer dependencies 7 years ago
Thomas Bruederli 3bc8a30314 Translate old 'preview_pane' setting into new 'layout' property 7 years ago
Thomas Bruederli cbef314d69 Run bin/install-jsdeps.sh from installto.sh script 7 years ago
Aleksander Machniak 27a621818d Make sure rcube_utils::resolve_url() does not add port 80 to the url
...which might have happened with reverse proxies
7 years ago
Aleksander Machniak 98a0c1a07e Fix attachment options menu 7 years ago
Aleksander Machniak f9e53d9574 Localize "Options" label on attachments list options button 7 years ago
Aleksander Machniak 7c001260fa Simplified code to parse METADATA responses 7 years ago
Aleksander Machniak 3fbda34a51 subscriptions_option: show \\Noselect folders greyed out (#5621) 7 years ago
Aleksander Machniak e51fa197bb Remove unused variable 7 years ago
Aleksander Machniak 76170baac0 Fix bug where it wasn't possible to set timezone to auto-detected value (#5782) 7 years ago
Aleksander Machniak f8537d0221 Code optimization, update changelog 7 years ago
Lucas Stevanelli Marin c5da225179 Fix bug where zipdownload ignored files with the same name (#5777)
Adding a counter before .(extension) to files with same name on zip.
Before only the last file on message with equals names was added on zip
7 years ago
Aleksander Machniak b82c767590 More general approach to validate setting options on preferences save 7 years ago
Aleksander Machniak c856b4ee06 Add missing timezone labels (there may be more than one slash in the timezone name) 7 years ago
Aleksander Machniak 997c4d3de4 Update bootstrap to lastest build 7 years ago
Aleksander Machniak fe2f553688 Add option to not indent quoted text on top-posting reply (#5105)
by setting reply_mode = 2
7 years ago
Aleksander Machniak 6ad4ebe431 Fix SQL syntax error on MariaDB 10.2 (#5774) 7 years ago
Aleksander Machniak 5016252cc3 Improve popups style 7 years ago
Aleksander Machniak 2b4887b75d Improve HTML editor style and enable autoresize in every screen size 7 years ago
Aleksander Machniak 2ba2b1828c Trigger onchange in ksearch_input_replace() on both supported input types 7 years ago
Aleksander Machniak 20aef011f2 Fix hidin spellcheck menu on language selection, small code improvements 7 years ago
Aleksander Machniak f81112de95 Fix disappearing toolbar after switching from mobile to desktop mode
by appending the menu back to the header box
7 years ago
Aleksander Machniak bf842acc21 Small improvements to popups 7 years ago
Aleksander Machniak b6fe9c0f06 Stop propagation on menu items that have popups so a click on them does not hide their parent menu(s) 7 years ago
Aleksander Machniak e6bae1f86f Display labels in task menu until screen width < 1024px 7 years ago
Aleksander Machniak d207d49347 Fix compose form layout 7 years ago
Aleksander Machniak bb67757b5c Removed global $CONFIG variable 7 years ago
Aleksander Machniak 872e6e647b Don't use global $CONFIG variable 7 years ago
Aleksander Machniak 8fff21deb5 Fix POST parameter reflection in default_charset selector (#5768) 7 years ago
Aleksander Machniak df6aa90e2f Implement drag-n-drop menu 7 years ago
Aleksander Machniak 73d77511ce Popup menus with Bootstrap popover (#17) 7 years ago
Aleksander Machniak 4c409fe27e Optimize images size 7 years ago
Aleksander Machniak 9a63e40faf Accept an array as $input argument of decode_address_list()
... to support a common case and to prevent from PHP warnings.
7 years ago
Aleksander Machniak 6bd349b7e6 Bump version number 7 years ago
Aleksander Machniak 7647612f0c Performance: Skip redundant LISTSCRIPTS command 7 years ago
Aleksander Machniak feb8e99062 Set aria-haspopup=true for Download menu item when using zipdownload submenu 7 years ago
Aleksander Machniak 7456d7fbc6 CS fixes 7 years ago
Aleksander Machniak b1748700e2 Use pear/net_sieve instead of our fork as it's up-to-date and maintained by us now 7 years ago
Aleksander Machniak 7090058b9f Enigma: Fix compatibility with assets_dir 7 years ago
Aleksander Machniak b997d87f75 Update Bootstrap4 to the lastest build (pre-beta?) 7 years ago
Aleksander Machniak 0e3623e87a Fix setting Cancel button classes in simple_dialog() 7 years ago
Aleksander Machniak 336fb756ba Merge branch 'ElpyDE-password-driver-virtualmin' 7 years ago
Aleksander Machniak 982d211ec0 Update changelog, CS fixes 7 years ago
Aleksander Machniak aacf1eb3bd Merge branch 'password-driver-virtualmin' of https://github.com/ElpyDE/roundcubemail into ElpyDE-password-driver-virtualmin 7 years ago
Aleksander Machniak 336a0cd87b strncasecmp() -> strcasecmp() 7 years ago
Aleksander Machniak ffdd7cedb6 Remove redundant border in About dialog 7 years ago
Aleksander Machniak 4f48202f90 Add test for #5657 7 years ago
Aleksander Machniak f7809af6e4 Support AUTHENTICATE LOGIN for IMAP connections (#5563)
Add imap_auth_type=IMAP to force use of LOGIN instead of AUTHENTICATE LOGIN.
In imap_auth_type=CHECK mode prefer LOGIN over AUTHENTICATE LOGIN (for performance reasons).
7 years ago
Thomas Bruederli cfc8b60fde Highlight listmenu button when focused + better button style 7 years ago
Aleksander Machniak 253aac5d9e Fix var name 7 years ago
Aleksander Machniak 30f9839b46 Remove redundant code 7 years ago
Aleksander Machniak 0a7a95b714 Support LDAP GSSAPI authentication (#5703)
Requires https://git.kolab.org/rPNL1d87f98d300645e15b7ad2819fcffb19010a060f
7 years ago
Aleksander Machniak 9537761be2 Add timezones.inc to transifex config 7 years ago
Aleksander Machniak 682e88710b Display loading message when going to another page (#5541) 7 years ago
Aleksander Machniak 6dccbbd637 Add some accents and make some timezone names userfriendly 7 years ago
Aleksander Machniak c51a35665d Fix typo: s/UTC+/UTC/ 7 years ago
Aleksander Machniak 59e5cef08c Allow contacts without an email address (#5079) 7 years ago
Aleksander Machniak 4098c94503 Update changelog 7 years ago
AndrolGenhald 496ee4a92d Fix prevention from using % and * characters in folder name (#5762) 7 years ago
Aleksander Machniak 5af38a45cf Localized timezone selector (#4983) 7 years ago
Aleksander Machniak 3e1c542c64 Update changelog 7 years ago
Aleksander Machniak 5101cfc67a Bump version to 1.4-git 7 years ago
Aleksander Machniak 9858c2a294 Merge branch 'master' into dev-elastic 7 years ago
Aleksander Machniak 616f86342a Merge branch 'master' of github.com:roundcube/elastic 7 years ago
Aleksander Machniak 4a0facf1ad Add image upload widget for contact photos (#29) 7 years ago
ElpyDE 73db885647 Virtualmin driver for password plugin now uses virtualmin to ask for the domain 7 years ago
Aleksander Machniak d151afd229 Fix addressbook searching by gender (#5757) 7 years ago
Aleksander Machniak 5804ef8aa2 Fix folders list sorting on Windows - if php-intl is available (#5732) 7 years ago
Aleksander Machniak 836f938e1a Fix bug where it wasn't possible to scroll folders list in Edge (#5750) 7 years ago
Aleksander Machniak f7b6d6ecd1 Fix input fields in Edge browser (the same as for IE) 7 years ago
Aleksander Machniak 955090ef1e Add Edge browser detection with 'edge' class for <html> element
Additional 'ms' class for both IE and Edge.
7 years ago
Aleksander Machniak 8f22c3287d Fix bug where comment notation within style tag would cause the whole style to be ignored (#5747) 7 years ago
Aleksander Machniak 715e8bf8bd Print error from CLI scripts when system/exec function is disabled (#5744) 7 years ago
Aleksander Machniak 533d32e991 Update to TinyMCE 4.5.7 7 years ago
Aleksander Machniak 9ff7b78c7e Fix conflict with _gid cookie of Google Analytics (#5748)
TODO: Review the whole code base and don't use INPUT_GPC when it's not really needed,
      in most cases we should not read $_COOKIE.
7 years ago
Aleksander Machniak 02d4489df7 Replace new line characters from the response name
...when the name was derived from the response text.
7 years ago
Aleksander Machniak 7d81b6166a Copy compose options into the main compose form 7 years ago
Aleksander Machniak ef141e73fa Support adding compose form elements outside of the form by noform=true 7 years ago
Aleksander Machniak c142b13377 Move compose options and attachments list into the middle box of page layout (#25) 7 years ago
Aleksander Machniak 6171545407 Fix typo 7 years ago
Aleksander Machniak 78c54c128d Fix bug where invalid recipients could be silently discareded (#5739) 7 years ago
Aleksander Machniak e800fb5a19 Bring back unintentionally removed .SILENT suffix in STORE FLAGS command 7 years ago
Aleksander Machniak d1cf69562f CS fixes and return values fixes 7 years ago
Aleksander Machniak f1ec339893 Add CVE ident 7 years ago
Aleksander Machniak 89987ee1e0 Password: Fix security issue in virtualmin and sasl drivers 7 years ago
Thomas Bruederli dbaa2f374a Improve wording 7 years ago
Aleksander Machniak 2618e953d1 Bump version number also here 7 years ago
Thomas Bruederli 6dc1047348 Update changelog 7 years ago
Thomas Bruederli 502f0758f6 Remove unused theme images 7 years ago
Thomas Bruederli 7ead152445 Remove gradient from record-table headers 7 years ago
Thomas Bruederli d4e4cfef92 More flattening of jQuery UI styles 7 years ago
Aleksander Machniak d774c00b72 Improve pagenav buttons 7 years ago
Thomas Bruederli 7969981320 Flattened buttons and icons, removed gradients and box shadows 7 years ago
Aleksander Machniak ce61c8210e Added test for rcube_db::parse_dsn() 7 years ago
Aleksander Machniak 757ba8b81a Fix typo 7 years ago
Aleksander Machniak a00b0e97a5 Define some more dialog button icons 7 years ago
Aleksander Machniak 542a817214 Define more classes for dialog buttons 7 years ago
Torkel Bjørnson-Langen 278b46a99d password plugin: better error message on constraint violation (#5727)
If the password policy on the ldap server is violated when changing
password, report error as "constraint violation" instead of the
misleading "connection error".

Only tested with OpenLDAP (v2.4).
7 years ago
Aleksander Machniak 045cc38ebe Recommend document root change after installation to /public_html (#5707) 7 years ago
Aleksander Machniak cc0defce86 Fix failing database schema check in all engines except mysql (#5730) 7 years ago
Aleksander Machniak 9a670b9c1b Move includes into templates directory 7 years ago
Aleksander Machniak 51fb3bfa58 Support including files with path relative to templates dir 7 years ago
Aleksander Machniak 59951548a9 Fix sidemenu in iOS/Android (#32) 7 years ago
Aleksander Machniak 139ed088f5 Fix rounded border on search input in iOS 7 years ago
Aleksander Machniak 01656221a4 Update localization 7 years ago
Aleksander Machniak 5dff5f6aad Don't support IE10 (#30) 7 years ago
Aleksander Machniak d5edcc4224 Don't output .animated-icon-class mixin 7 years ago
Aleksander Machniak 622b6e490b Fix searchbar animation in IE (#30) 7 years ago
Aleksander Machniak 1ed27f6bd2 Fix blinking search icon when clicking an iframe in Chrome 7 years ago
Aleksander Machniak 380087b2f4 Fix forms in IE (#30) 7 years ago
Aleksander Machniak b5695514bd Fix cursor:pointer on delete button in recipient box in Internet Explorer (#30 [2]) 7 years ago
Aleksander Machniak ecd52b951d Fix button icons position in Internet Explorer (#30 [1,2,5]) 7 years ago
Aleksander Machniak 0d8b3675f3 Add missing <label>s in Preferences > Special Folders 7 years ago
Aleksander Machniak ebb5d95288 Add also String.endsWith() polyfill 7 years ago
Torkel Bjørnson-Langen 3bbe218b83 Password plugin: Added missing default values (#5726)
* Added correct default values for password plugin (ldap backends only)
* Sync default values in config.inc.php.dist with code.
7 years ago
Aleksander Machniak ce5ed4f45c Add emoticon button to tinymce toolbar when the plugins is enabled 7 years ago
Aleksander Machniak de6c95ead6 Assign .form-control class to textareas 7 years ago
Aleksander Machniak 11fe113f8d Add some hacks to make checkbox alignment correct in propforms 7 years ago
Aleksander Machniak bfa7556e90 Make #message-objects to look as alerts 7 years ago
Aleksander Machniak 7bdd9fc263 Fix icon alignment for <button> buttons 7 years ago
Aleksander Machniak 9da6c9e2f9 Added license headers to .js and .less files 7 years ago
Aleksander Machniak d3c11d0db8 Fix redundant form tag 7 years ago
Aleksander Machniak 67b575aa4f Add composeFormHead object for templates to return form tag with hidden inputs 7 years ago
Aleksander Machniak bf73922307 Move .skinselection to forms.less 7 years ago
Aleksander Machniak 46f8c0de04 Make possible to add more recipient inputs via a popup menu 7 years ago
Aleksander Machniak ce2b445efd Make mail compose headers more pretty with some Bootstrap styles 7 years ago
Aleksander Machniak 1fea5b531b Small improvements on forms 7 years ago
Aleksander Machniak 4f2fe99bcd Hide .smart-upload elements 7 years ago
Aleksander Machniak ab368a7ec1 First take on Bootstrap Tabs (contact info/edit frame) 7 years ago
Aleksander Machniak 129f5e347b Fix search mods setting 7 years ago
Aleksander Machniak c0dc8e13a1 Style buttons in restore message dialog (#27) 7 years ago
Aleksander Machniak 5a61e3487e Set more classes to buttons in restore message dialog 7 years ago
Aleksander Machniak c80dc79598 Finished logic on recipient input widget 7 years ago
Aleksander Machniak 3e53ac7491 Remove note about mail() function 7 years ago
Aleksander Machniak 68396698ec Update changelog 7 years ago
Aleksander Machniak 6ba41836b6 Revert "extend plugin password to avoid sudo (use ssh instead calling chpasswd) (#5654)"
This reverts commit 938dd4670b.
7 years ago
Aleksander Machniak 503cdc4b0d Add missing .googie_link style 7 years ago
Aleksander Machniak 34ca4741d7 Contact search in compose has no options 7 years ago
Aleksander Machniak 5e6e878cf1 Various scripting improvements and fixes to the recipient input widget 7 years ago
Joel Gerber 40b51b9dc9 Add Log to STDOUT Feature (#5721)
Primarily useful for PHP applications running under PHP-FPM which in
turn is running within a Docker container. But also it is generally
useful in any situation where you want to be able to send the logs
directly to your terminal when debugging &etc.
7 years ago
Kay Marquardt 938dd4670b extend plugin password to avoid sudo (use ssh instead calling chpasswd) (#5654)
Use proc_open() instead of popen() to catch error messages from called wrapper.
Create new wrapper chpass-wrapper-expect.py
7 years ago
Aleksander Machniak 712875bde1 Fix bug where base_dn setting was ignored inside group_filters (#5720) 7 years ago
Aleksander Machniak 99fb6bce8d Bump Net_Socket version 7 years ago
Aleksander Machniak 2e4eb30e5a Smart recipient input widget (to be improved) 7 years ago
Aleksander Machniak d430903f6b Support contentEditable elements for autocomplete 7 years ago
Aleksander Machniak 72f19c079f Installer: Fix DB schema initialization on MS SQL Server 7 years ago
Aleksander Machniak 1d35d1a20c Small fix for autocomplete list 7 years ago
Aleksander Machniak 1cee35e229 Fix TinyMCE buttons box-shadow after last change 7 years ago
Aleksander Machniak 17bcc8c705 Add icon to submit button(s) 7 years ago
Aleksander Machniak 559254d6ee Use <button> instead of <input> for submit button on logon screen 7 years ago
Aleksander Machniak 065b16df12 Update to TinyMCE 4.5.6 7 years ago
Aleksander Machniak 528404ff96 Support embed style for attachment preview 7 years ago
Aleksander Machniak b1be7fca51 Unify inline warnings in rcmail_html_page 7 years ago
Aleksander Machniak a7c43c6e38 Merge branch 'master' of github.com:roundcube/roundcubemail 7 years ago
Aleksander Machniak e160e48069 Fix undesired effects when postgres database uses different timezone than PHP host (#5708)
Allow passing DateTime variables as query arguments. Their value will
be converted to date/time input string in format specific to the database type
(with timezone on postgres).
7 years ago
Aleksander Machniak 5c95771fc3 Add favicon.ico (the version from Larry) 7 years ago
Aleksander Machniak 34446e00ca Fix bug where namespace prefix could not be truncated on folders list if show_real_foldernames=true (#5695) 7 years ago
Aleksander Machniak 0ebe11a5a9 Make login form inputs prettier 7 years ago
Aleksander Machniak b314dfc548 Fix (restore) Tab key behaviour in autocomplete popup (#5659)
And make it to jump to the next field after inserting selected autocomplete entry.
7 years ago
Aleksander Machniak 19fcc35a55 Fix regression in LDAP fuzzy search where it always used prefix search instead (#5713) 7 years ago
Aleksander Machniak 60d525d27a Focus indicator for ul listings 7 years ago
Aleksander Machniak 607204acb6 Apply some Bootstrap style for forms
For now we do this programatically on page load, more likely we want
this in the PHP code so classes are assigned when HTML is generated.
7 years ago
Aleksander Machniak 4a7d7128a3 Hide focus indicator on touch devices (small screen) 7 years ago
Aleksander Machniak 3d3b1c2f9a Support .boxwarning and .boxerror widgets 7 years ago
Aleksander Machniak 4951ac639d Add .droptarget color on listings 7 years ago
Aleksander Machniak c4598d378b Unify color variable names 7 years ago
Aleksander Machniak 4617402688 Improve .skinselection for small screen 7 years ago
Aleksander Machniak fce19b8e3b Various additions mostly for attachments list in compose 7 years ago
Aleksander Machniak 7e935ece0d Various fixes in treelist widget 7 years ago
Aleksander Machniak 9b801e063a Some icons improvements and style for dropbutton in a popupmenu 7 years ago
Aleksander Machniak 51dffcda86 Skip <script> element if it has no content 7 years ago
Aleksander Machniak 3c78faaf4a Some improvements here and there 7 years ago
Aleksander Machniak f9ac9a8aad Add some missing/new labels for aria elements 7 years ago
Aleksander Machniak 35f5337175 Varius code improvements 7 years ago
Aleksander Machniak 36b691f813 Small style additions 7 years ago
Aleksander Machniak 8293d5d3eb Bring back .popupmenu (instead of .ui.popup) 7 years ago
Aleksander Machniak 40f883289b Fix message.html template for use as non-frame 7 years ago
Aleksander Machniak cdfe1d207d Attachment menu 7 years ago
Aleksander Machniak 9f81603afb Set 'iframe' class to <html> instead of <body>, cleanup some font-sizes 7 years ago
Aleksander Machniak 3e0ac3bfb8 Keep all lists style in lists.less 7 years ago
Aleksander Machniak fbf5dc22ba Copied some common css rules from Larry (with big number of TODO comments) 7 years ago
Aleksander Machniak 3ab4e214f7 Add #message-objects styling 7 years ago
Aleksander Machniak af9817ff37 Add contactprint.html and messageprint.html templates 7 years ago
Aleksander Machniak f03839b24b Add support for 'link' objects in templates (with conditions)
.. to simplify conditional <link> tags injection while nested 'if' objects do not work
7 years ago
Aleksander Machniak 13ae4d7969 Ignore js deps (#5704) 7 years ago
Aleksander Machniak 9256688038 Update changelog 7 years ago
dfukagaw28 89a4134064 Add support for DelSp=Yes messages (#5702) 7 years ago
Aleksander Machniak 5a53d521c8 Fix permission of temporary files and removal of them when generating thumbnails 7 years ago
Aleksander Machniak 306c901a15 Remove redundant entry 7 years ago
Aleksander Machniak 9374599c3c Fix require entry for crypt_gpg also in Enigma's composer.json 7 years ago
Aleksander Machniak 0b41da158d Use jQuery 3.2.1 7 years ago
Aleksander Machniak 2de6444478 Use nested rules in toolbar.less 7 years ago
Aleksander Machniak 160bc07e2e Small searchbar improvements 7 years ago
Aleksander Machniak 836ed74d01 Added messagepart.html template, some fixes 7 years ago
Aleksander Machniak 71ff264b02 Support conditional include 7 years ago
Aleksander Machniak 57b9425556 Small improvements 7 years ago
Aleksander Machniak 9b554cd3d5 Remove redundant spaces from generated contact names 7 years ago
Aleksander Machniak 3fddd4a505 Small improvements 7 years ago
Aleksander Machniak f1e5d5114d Added messageerror.html template 7 years ago
Aleksander Machniak b0bebbd022 Update less 7 years ago
Aleksander Machniak b1688a60ad Add CVE identifier 7 years ago
Aleksander Machniak 056b08fce0 Use nested rules in less files 7 years ago
Aleksander Machniak bb2b7e001c Refactored less files structure 7 years ago
Aleksander Machniak f69807674a Rephrase log entry 7 years ago
Aleksander Machniak 6271b88bab Fix so settings/upload.inc could not be used by plugins (#5694) 7 years ago
Aleksander Machniak 9eefa47e45 Fix codemirror re-installation
When re-installing a dependency with 'map' entries containing * character
these dest folders were not properly cleaned up before moving new files
to them. It's because path with * does not work in is_dir().
7 years ago
Aleksander Machniak 7347c22af8 Update to TinyMCE 4.5.5 7 years ago
Aleksander Machniak 3a3fdde196 Use jQuery 3.2.0 7 years ago
Aleksander Machniak a77b81e3df Split widgets.less into separate files 7 years ago
Aleksander Machniak b206b13a9d Add some basic style for autocomplete and googiespell popups 7 years ago
Aleksander Machniak 6c11825a0d Improve googiespell widget for better styling capabilities
.. it is possible to style it with css, no images are required
7 years ago
Aleksander Machniak 8706d7fb0c Merge branch 'dev-elastic' of github.com:roundcube/roundcubemail into dev-elastic 7 years ago
Aleksander Machniak 1d0cecb41a Add autocomplete_create event so plugins/skins can do something on the autocomplete popup element 7 years ago
Aleksander Machniak 8533a43707 Fix hidden toolbars in desktop mode 7 years ago
Aleksander Machniak e48fddb5b5 Enable checkbox selection on contacts list in mail compose 7 years ago
Aleksander Machniak 431b9d6b75 Fix update_row() for lists with checkbox selection 7 years ago
Aleksander Machniak 642e2a47a9 Add icons for selectable listings, other fixes 7 years ago
Aleksander Machniak ef89af3248 Added supported browsers list (#6) 7 years ago
Aleksander Machniak 2b472f65cb Modify TinyMCE editor setup for mobile (#10) 7 years ago
Aleksander Machniak a928c3f988 Add editor-init event 7 years ago
Aleksander Machniak 6c4e86d816 JS code refactor to make setup code easier to read 7 years ago
Aleksander Machniak d4eace8285 show_list() refactoring 7 years ago
Aleksander Machniak d0e3b97dc5 Refactor search menu 7 years ago
Aleksander Machniak 1b4a8c7020 Add some icons for messages list 7 years ago
Aleksander Machniak 12850f4b86 Added compose.html template 7 years ago
Aleksander Machniak f412b4b6df Unify taskmenu buttons 7 years ago
Aleksander Machniak 8a0d504682 Indent fixes 7 years ago
ka7 9a35768c26 spelling fixes (#5690) 7 years ago
Aleksander Machniak 4eff947103 Convert tabs to spaces in less files 7 years ago
Aleksander Machniak 6b3ae24683 Make sure toolbar-menu-button is always last on right side of the header 7 years ago
Aleksander Machniak 67170c0d97 Select sidebar when visiting Settings without action specified 7 years ago
Aleksander Machniak e00d8cdd61 Generalize content frame handling 7 years ago
Aleksander Machniak 570a0547a0 Added content frame title for mobile devices 7 years ago
Thomas Bruederli 522565b400 Add tests for XSS vulnerabilities in style tags 7 years ago
Aleksander Machniak 0541b2ff86 Various improvements 7 years ago
Remi Collet 132a807dff add .log suffix to all log file names 7 years ago
Aleksander Machniak 4b9a08657f Set save button css class in simple dialog according to its label 7 years ago
Aleksander Machniak 8e6eb9fa72 Define 'save' class for password form button 7 years ago
Thomas Bruederli bf21557873 Better fix for XSS in style tags (b59ff5ca) 7 years ago
Aleksander Machniak 11f5560d35 Fix mail download menu 7 years ago
Aleksander Machniak 05aae4711c Replace xss_entity_decode_callback() method with lambda function 7 years ago
Aleksander Machniak b59ff5cafb Fix XSS issue in handling of a style tag inside of an svg element 7 years ago
Aleksander Machniak 8953c7a257 Fix possible defect in handling \r\n in scripts (#5685) 7 years ago
Aleksander Machniak 69fb773fac Move pear/net_ldap2 back to 'suggests" section
It requires php-ldap extension which might be problematic when
someone does not need to use LDAP.
7 years ago
Aleksander Machniak 91e36f2ffe Use packagist instead of pear 7 years ago
Aleksander Machniak 8f6c35c271 Search menus initialization and varius other fixes 7 years ago
Aleksander Machniak ae8ff966b5 Fix (again) context of close function in simple dialog 7 years ago
Aleksander Machniak 29668f4c97 Fix context in close function of simple dialogs 7 years ago
Aleksander Machniak edc114247d Fix some regressions 7 years ago
Aleksander Machniak 5929dc2ac8 Use Bootstrap 4, forget about Semantic UI 7 years ago
Aleksander Machniak 38067f61da Get rid of data-popup-pos 7 years ago
Aleksander Machniak fa32c2c471 Plugin API: Call message_part_structure hook for sub-parts of multipart/alternative message (#5678) 7 years ago
Aleksander Machniak 51dbc2e438 Merge branch 'master' of github.com:roundcube/roundcubemail 7 years ago
Aleksander Machniak 9028e77290 Enigma: Set micalg parameter to real hash algorithm used for signing 7 years ago
Shin Kojima 0b385dc946 Skip iconv for problematic ISO-2022-JP strings (#5668)
We sometimes get broken character encodings such as:
Subject: =?iso-2022-jp?B?GyRCLWo7M3l1OSk2SBsoQgo=?=
This actually is not a strict ISO-2022-JP string, but a CP50220 string
that is a variant of ISO-2022-JP with extended characters proposed by
Microsoft. Iconv can not handle these encodings well.
7 years ago
Aleksander Machniak f2ab7ec929 Lock phpunit to version 5.7.x 7 years ago
Aleksander Machniak 8ee2b96a3d Add some icons for messages list, update font-awesome icons 7 years ago
Aleksander Machniak 840a1ec4e6 Add some style for folder-selector 7 years ago
Aleksander Machniak 4525388337 More unified style of folder-selector 7 years ago
Aleksander Machniak aba37bfcaf Make 'compose' command always enabled 7 years ago
Aleksander Machniak ba03bc2950 Add Refresh and Compose buttons in taskmenu and some fixes 7 years ago
Aleksander Machniak bc3de6494f Add tree toggle icons 7 years ago
Aleksander Machniak 2095a26ff1 Enable checkbox selection on list widgets (#15) 7 years ago
Aleksander Machniak adbab9d3e2 Merge branch 'master' into dev-elastic 7 years ago
Aleksander Machniak ba11e844f7 Added optional checkbox selection for the list widget 7 years ago
Aleksander Machniak 821d449d86 Fix/rephrase "unsaved changes" warning when cancelling a draft (#5610) 7 years ago
Aleksander Machniak dd8637350b Use stable release of Crypt_GPG 1.6 7 years ago
Aleksander Machniak 9057e77e28 More fixes for command state 7 years ago
Aleksander Machniak 670090fd3a Fix style for menu items state (active/disabled) 7 years ago
Aleksander Machniak c73597da89 Add some more icons 7 years ago
Aleksander Machniak 424a42b2fd Add attachments list icons 7 years ago
Aleksander Machniak 1bd101d09a Implement "Add contact" icon 7 years ago
Aleksander Machniak f8a30526de Add possibility to use "Add contact" link without an image element inside 7 years ago
Aleksander Machniak ba7082bd96 Force widescreen mode 7 years ago
Aleksander Machniak e2d80479d6 Make possible to set (some) config options from a skin 7 years ago
Aleksander Machniak cc8bee636f Improved error.html template 7 years ago
Aleksander Machniak 089bc0f297 Disable ext-windows on mobile (#13) 7 years ago
Aleksander Machniak 774765b67b Don't use <i> elements, use font-icons in css with :before 7 years ago
Aleksander Machniak 4ac7cf0fca Add localization label 7 years ago
Aleksander Machniak b4e311ceb1 Move widgets and icons style to separate less files 7 years ago
Aleksander Machniak b2d315459a Fix listmenulink in Larry 7 years ago
Aleksander Machniak 3dd24bce75 Merge pull request #5658 from JohnDoh/group-rename
small amendment to #5652
7 years ago
JohnDoh d379dc897a small fix for current group detection and add similar rules for group-delete 7 years ago
Aleksander Machniak 13b98199ed Managesieve: Fix parser issue with empty lines between comments (#5657) 7 years ago
Aleksander Machniak 4d663c477c Merge pull request #5635 from joebordes/patch-1
Pass full message object on message_sent event
7 years ago
Aleksander Machniak ec98aa5b52 Merge pull request #5652 from JohnDoh/group-rename
don't use env for group-rename action
7 years ago
Aleksander Machniak cd61d7ebd0 Minimize unwanted message loading in preview frame on drag (#5616)
also remove dummy_select flag which is not needed anymore.
7 years ago
Aleksander Machniak 3294a41b3b Small code simplification 7 years ago
Aleksander Machniak dae5ffd07a Fix bug where it was too easy accidentally move a folder when using the subscription checkbox (#5655) 7 years ago
JohnDoh 336e937946 also fix source in group create function 7 years ago
JohnDoh 82d049f1a2 check group id matches current one before changing the title 7 years ago
PhilW e6f18ba6a6 Merge branch 'master' 7 years ago
Aleksander Machniak 364e887b32 Add rewrite rule to disable access to /vendor/bin folder in .htaccess (#5630) 7 years ago
Aleksander Machniak 95a7ece543 Fix update of group name in the contacts list header on group rename (#5648) 7 years ago
JohnDoh f40e515cb2 don't use env for group-rename action 7 years ago
Aleksander Machniak 4d2236965f Use Roboto font (#12) 7 years ago
Aleksander Machniak e2a8fb799e Add note about PinEntry issues with SELinux (#5620) 7 years ago
Aleksander Machniak dd53a3d486 Enigma: Fix handling of messages with nested PGP encrypted parts (#5634) 7 years ago
Aleksander Machniak b7e4c94972 Bring back lists buttons in TinyMCE toolbar 7 years ago
Aleksander Machniak 240e56c8c0 Fix #taskmenu.special-buttons in small screens 7 years ago
Aleksander Machniak f0ce5ddba7 Implemented About dialog 7 years ago
Aleksander Machniak df88d10f13 simple_dialog() improvements 7 years ago
Aleksander Machniak 3e427b4a42 Fix double http request regression (#5633)
Removed 'click' event handler on messages list which was used only
to allow message re-selection. As this feature was broken since 0.9
it looks like we don't really need it. When you're in ctrl-selection
state you can easily ctrl-unselect the message.
7 years ago
Aleksander Machniak 8efd2003aa Add note about install-jsdeps.sh to upgrade procedure 7 years ago
Aleksander Machniak ad83610a5e Rename $sql_arr variable to $record as it's not about sql only 7 years ago
Aleksander Machniak 61bec3efa4 Fix regression where groups with email address were resolved to its members' addresses 7 years ago
Joe Bordes 3c1d951d84 feat(Hook) full message object on message_sent event 7 years ago
Aleksander Machniak 81f67a4de2 Don't use each() deprecated in PHP 7.2 7 years ago
Aleksander Machniak f29fd706cf Get back to eval()
We used create_function() before but it's deprecated in PHP 7.2
and really it was just a wrapper on eval().
7 years ago
Aleksander Machniak dfd19206a4 sizeof() -> count() 7 years ago
Aleksander Machniak ce336f487e Add contactimport and contactsearch templates 7 years ago
Aleksander Machniak 2d9444bef0 Display contact import and advanced search in popup dialogs 7 years ago
Aleksander Machniak d04cc14018 Enigma: Always use detached signatures (#5624) 7 years ago
Aleksander Machniak a426f66785 Fix fatal error when accessing PGP keys list using classic skin 7 years ago
Aleksander Machniak 46e3b94826 Fix bug where signature couldn't be added above the quote in Firefox 51 (#5628) 7 years ago
Aleksander Machniak 750df96163 Fix listing saved searches 7 years ago
Aleksander Machniak b79586a557 Various code improvements 7 years ago
Harry Smallbones 5665c7455b Archive: Add Thunderbird compatible Month option 7 years ago
Aleksander Machniak fb5cc64e9d Don't focus search button when not needed 7 years ago
Aleksander Machniak 8cf64eb758 Move layout style to layout.less 7 years ago
Aleksander Machniak f84edd168a Use less (#4) and font-awesome variables (#9) 7 years ago
Aleksander Machniak bae3b2ac9b Update changelog 7 years ago
Aleksander Machniak 9cf1e83d7a Fix autocomplete popup closing (#5606)
1. Tab key does not work as Enter. Now it works as Escape and jumps to another input.
2. Click on document (outside of the autocomplete input and popup) closes the popup.
7 years ago
Aleksander Machniak 79950630fa Increase limit of group members when expanding a group from autocomplete (#5604) 7 years ago
Aleksander Machniak b4d7b41a6f Update changelog 7 years ago
Aleksander Machniak 20da7f1539 Copy jsdeps.json file on update (#5598) 7 years ago
Aleksander Machniak 15d0c55b20 Throw error if one of required programs is not installed (#5598) 7 years ago
Aleksander Machniak 73d53051cd Fix bug where some classic skin images were not displayed in IE/Edge (#5614)
Converted from png to gif according to file extension.
7 years ago
Aleksander Machniak dc76c674d4 Menu button should be displayed only in phone mode 7 years ago
Aleksander Machniak 500cf5ff65 Implement messages list options popup 7 years ago
Aleksander Machniak 879f1dd2a0 Register some labels, add one localization label 7 years ago
Aleksander Machniak 3cc5eb158a Add event argument to button function in simple_dialog() 7 years ago
Aleksander Machniak 7323f633f7 Fix bug where re-selection of messages list record didn't work
A regression in old commit 24fa5d3154
7 years ago
Aleksander Machniak f789cb53b2 Fix bug where drag-n-drop element could be empty after check-recent action 7 years ago
Aleksander Machniak e830fedf90 Remove redundant style 7 years ago
Aleksander Machniak 48d9ee4f1f A better way of intercepting dialog position in larry 7 years ago
Aleksander Machniak f4b57bad31 Fix missing thread expand icon on search result in widescreen mode (#5613) 7 years ago
Aleksander Machniak b06dd7b204 Small fixes 7 years ago
Aleksander Machniak 7ef975490b Unified and simplified code for loading content frame for responses and identities 7 years ago
Aleksander Machniak 44bb2026a8 Support screen width down to 240px (#5) 7 years ago
Aleksander Machniak 01031d0ced Reset onerror on images if placeholder does not exist to prevent from requests storm 7 years ago
Aleksander Machniak ec3a65b6a5 Fix search bar issue in Chrome 7 years ago
Aleksander Machniak afb1cedc81 Fix js error 7 years ago
Aleksander Machniak 6d4c94d131 Add Back button for mail content frame + some small fixes 7 years ago
Aleksander Machniak 61cfb35d0b Css cleanup, use em units 7 years ago
Aleksander Machniak 5e1ca13ec3 Fix popups 7 years ago
Aleksander Machniak 5393c61f22 Content Back button uses history.back() if there's no list and no sidebar 7 years ago
Aleksander Machniak 96d3fedde3 Smart toolbar that scales down to a button and popup menu on small screen 7 years ago
Aleksander Machniak 7ab57b1428 Fix popups 7 years ago
Aleksander Machniak 564ccdf4d8 Implemented smart search boxes 7 years ago
Aleksander Machniak 8131629c6e Extended unified searchform object for templates engine 7 years ago
Aleksander Machniak 53c327b49d Elastic skin - initial commit 7 years ago
Aleksander Machniak 2803a58152 Use innerclass for Archive button in taskbar 7 years ago
Aleksander Machniak 19ae87957f Use type="link" for help task button 7 years ago
Aleksander Machniak debb6e3a30 Add missing type="link" for some buttons 7 years ago
Aleksander Machniak c0f0fb67e4 Add missing type="link" for some buttons 7 years ago
Aleksander Machniak 5ba3f2f596 Various small improvements for templating engine and skin behaviours 7 years ago
Aleksander Machniak cc10cbe039 Make button object to be a <button> by default 7 years ago
Aleksander Machniak 5b57043cbf Small code improvements 7 years ago
Aleksander Machniak 700fbd4066 Fix PHP error on update of a contact with multiple email addresses when using PHP 7.1 (#5587) 7 years ago
Aleksander Machniak a9feb8675c Merge pull request #5586 from slokhorst/config-clarify
Put back line removed accidentally in previous commit
7 years ago
Sebastiaan Lokhorst d3380b6052 Put back line removed accidentally in 5db83ee04d 7 years ago
Aleksander Machniak 8e63574dd9 Merge pull request #5585 from slokhorst/config-clarify
Clarify options in config file
7 years ago
Sebastiaan Lokhorst b9cf2755ce In the config, note that 'default_host' refers to the IMAP server 7 years ago
Sebastiaan Lokhorst 5db83ee04d Clarify tls:// and ssl:// settings for connecting to SMTP server 7 years ago
Aleksander Machniak 78237c84b4 Fix bug where mail content frame couldn't be reset in some corner cases (#5608) 7 years ago
Aleksander Machniak e08f22ef28 Fix bug where external content in src attribute of input/video tags was not secured (#5583) 8 years ago
Aleksander Machniak cb58d37bbc Avoid closure compiler suspicious code warning (#5584) 8 years ago
Aleksander Machniak 3bb12e75f7 Add class attribute for preferences sections list 8 years ago
Aleksander Machniak 6eb8f89b4d Remove redundant code 8 years ago
Aleksander Machniak 7340360e79 Fix bug where image data URIs in css style were treated as evil/remote in mail preview (#5580) 8 years ago
Aleksander Machniak f65f4bbca8 Fix pdf object visibility 8 years ago
Aleksander Machniak 9d6aa00a44 Hide QR-Code button if PHP-GD is not installed
Keep it as an optional dependency.
8 years ago
Thomas Bruederli f78e2a4367 Add 1.3-beta milestone + update copyright year 8 years ago
Aleksander Machniak 8086099621 Small code improvements in PDF capability checker 8 years ago
Aleksander Machniak 25de39d444 Merge branch 'dev-remove-js-deps' 8 years ago
Aleksander Machniak d28a96e857 Remove old jsdeps.sh script 8 years ago
Aleksander Machniak 3679cb7c34 Add --delete argument to install-jsdeps.sh 8 years ago
Aleksander Machniak c761f5b6e3 Fix function name 8 years ago
Aleksander Machniak cefe72dcd2 Fix required OpenPGP version 8 years ago
Aleksander Machniak cb09ff0ffc Make it working with wget when curl is not installed, mark --force argument as boolean 8 years ago
Thomas Bruederli 40cd8d3bdd Add --force option + update install insructions (#5535) 8 years ago
Thomas Bruederli 10f6fb4cc7 Install script to fetch javascript dependencies defined in jsdeps.json (#5535) 8 years ago
Aleksander Machniak 9d45ef20cc Fix so group/addressbook selection is retained on page refresh 8 years ago
Aleksander Machniak eec77c1a99 Fix some advanced search issues with multiple addressbooks (#5572) 8 years ago
Aleksander Machniak 369b44d94a Fix unsetting template objects
Fixes compatibility with some plugins e.g. kolab_addressbook which
call parse() method (for sub-templates) while parsing the main template
8 years ago
Aleksander Machniak 2418f07985 Nicely handle contact deletion on contact edit (#5522) 8 years ago
Aleksander Machniak ab429dbef2 Fix rsync error handling in installto.sh script (#5562) 8 years ago
Aleksander Machniak 68c9b669e4 Fix adding images to new identity signatures
It already worked only on edits, because the image data for new identity
was stored in the wrong session item.
8 years ago
Aleksander Machniak 15bd0b51a4 Improve mailvelope decryption errors handling, hide encrypted part attachment on successful decryption (#5279)
+ small style improvements
8 years ago
Aleksander Machniak a487055c5a Add possibility to attach contact vCard to composed message (#4997) 8 years ago
Aleksander Machniak 692cb9c63b Update localization 8 years ago
Aleksander Machniak 930c921bed Disable Print button for pdf attachments in Firefox (#5125)
Mozilla's PDF.js viewer does not allow printing from host page.
We try to detect such situation and disable the button to minimize
user confusion.
8 years ago
Aleksander Machniak c183463a6e Fix visual glitch when using disabled_actions for items in Settings menu 8 years ago
Aleksander Machniak 2e97728d06 Enigma: Add some notes to Known issues section (#5561) 8 years ago
Aleksander Machniak 21732eb250 "Bad password" -> "Invalid password" 8 years ago
Aleksander Machniak f6e5085a73 Merge branch 'mkllnk-password-cpanel-webmail' 8 years ago
Aleksander Machniak be49c2e1cd Code improvements, replace exception thrown with rcube::raise_error() 8 years ago
Aleksander Machniak 2af5ea4a9c Merge branch 'password-cpanel-webmail' of https://github.com/mkllnk/roundcubemail into mkllnk-password-cpanel-webmail 8 years ago
Jens Carl de82576134 Add mime type detection under FreeBSD and Apache 2.4 (#5560) 8 years ago
Aleksander Machniak 945a22572d Update changelog 8 years ago
Aleksander Machniak 8d1e0eb574 Preserve message internal/received date on import in mbox format (#5559) 8 years ago
Aleksander Machniak d45692131b Zipdownload: Fix date format in mbox "From line" 8 years ago
Aleksander Machniak 2733258d2b Load 'close' label for dialogs by default 8 years ago
Aleksander Machniak 2482088a76 Possibility to display QR code for contacts data (#5030) 8 years ago
Aleksander Machniak 279e11a45d jsdeps.sh: Store downloaded files in cache folder, add option to install deps from it
When in git-master you install deps and then want to switch to an older branch
you'll get a conflict. In such a case you can just call `jsdeps.sh cleanup`
and when you're back in master `jsdeps.sh from-cache` which will be much faster
and do not require re-downloading everything.
8 years ago
Maikel Linke bd5eaf98aa Handle null or non-JSON result of cPanel UAPI
More unit testing. More documentation.
8 years ago
Aleksander Machniak 29d0b80449 Enigma: Fix PHP fatal error when decrypting a message with invalid signature (#5555) 8 years ago
Aleksander Machniak 5bae3ca6f5 jsdeps.sh: Add 'cleanup' argument 8 years ago
Aleksander Machniak 12a49437d2 Upgrade to TinyMCE 4.5.1 8 years ago
Maikel Linke dd29ca1ee8 Correct decoding of JSON response
The old version assumed `json_decode` would return an associative array.
While it can do so if an extra option is specified, the default
behaviour is to return an object. Therefore, a successful password
change resulted in an error while parsing the response.

The new code is accessing the response as object instead. The method
is now covered by a unit test.
8 years ago
Aleksander Machniak f351b48771 Update changelog, CS fixes 8 years ago
Maikel adbc9b1889 Add cPanel Webmail driver (#5549)
This driver does not use an admin account. It uses the user's account to
authenticate at the Webmail API. It uses the recommended UAPI and does
not rely on third-party classes.
8 years ago
Aleksander Machniak 4f5ec65a36 Close SMTP connection ASAP after the message has been sent
We should not keep the connection open until the script shuts down.
It may take long time e.g. to save the message in IMAP.
8 years ago
Aleksander Machniak bd76a921ac Simplified/unified key info frame 8 years ago
Aleksander Machniak 7cbade1ade Cleanup tinymce.zip with localizations 8 years ago
Aleksander Machniak 062328e42f Describe bin/jsdeps.sh in INSTALL 8 years ago
Aleksander Machniak 5e1da48d0c Remove external javascript code from the git repo, add jsdeps.sh script (#5535) 8 years ago
Aleksander Machniak bbab6a6db7 Identicon plugin
https://kolabian.wordpress.com/2016/12/02/contact-identicons/
8 years ago
Aleksander Machniak 8fc488afa0 Parse error and CS fixes after PR merge 8 years ago
Paolo Asperti 815b79df7f Added replacement variables support in password_pop_host (#5539)
Use rcube_utils::parse_host() on a hostname
8 years ago
Aleksander Machniak a99e479cb4 Fix variable substitution in ldap host for some use-cases, e.g. new_user_identity (#5544) 8 years ago
Aleksander Machniak 2eede31561 Fix handling of scripts with nested rules (#5540) 8 years ago
Aleksander Machniak 47750b9b06 Bump up Enigma version number 8 years ago
Aleksander Machniak b2c4cf3c09 Update changelog with 1.2.3 release 8 years ago
Aleksander Machniak e240e5f8dd CS fixes and update changelog 8 years ago
KaloNK d41db75d82 Do not store passwords on disk - use proc_open instead of popen (#5531) 8 years ago
Aleksander Machniak 581c41ca67 Make sure subject is always on proper place in widescreen mode 8 years ago
Aleksander Machniak 833fceb357 Remove redundant padding in textarea for raw editor 8 years ago
Aleksander Machniak c845343916 Shrink CodeMirror code 8 years ago
Aleksander Machniak d2b1941ad5 Release managesieve 8.8 8 years ago
Aleksander Machniak 4452a16f7f Cleanup and improve CodeMirror integration
Fixed some issues, improved css/layout, added autoscroll to invalid line on error
8 years ago
Aleksander Machniak ae4d3d0f65 Merge branch 'master' of https://github.com/hansmaulwurf23/roundcubemail into hansmaulwurf23-master 8 years ago
Aleksander Machniak 32b68959b2 Merge branch 'master' of github.com:roundcube/roundcubemail 8 years ago
Aleksander Machniak a1f679adca Fixed redundancy in sql caching system and compatibility with Galera Cluster (#5439)
- Removed redundant 'created' column from cache and cache_shared tables
- Removed use of redundant data records
- Added missing primary keys (dictionary, cache, cache_shared tables)
8 years ago
Aleksander Machniak 940a27400e Use GSSAPI only if configured (#5530) 8 years ago
Aleksander Machniak 5cca1988b6 Fix write_log() return value when using syslog() and it fails 8 years ago
Aleksander Machniak a044338d9c Fix alignment of error icon 8 years ago
Aleksander Machniak dad1852126 Fix _from argument validation 8 years ago
Aleksander Machniak fe212cc080 A better alignment/positioning of icons on widescreen list 8 years ago
Aleksander Machniak 47d2943717 Update changelog 8 years ago
Aleksander Machniak a844db6a27 Merge branch 'dev-layouts' 8 years ago
Aleksander Machniak 793a8aad7a Revert some style changes to correctly position status icon in threaded messages view of widescreen mode 8 years ago
Thomas Bruederli 32cd762278 Always send columns list as array (unsetting items makes it an object with numeric keys) 8 years ago
Thomas Bruederli 2d45879469 Adjust sizes and spacings in new 3-column layout 8 years ago
Aleksander Machniak ad9a55f8cb Support hostname and hostname:port in force_https option (#5511) 8 years ago
Aleksander Machniak c344f60d75 Fix displaying attached images with wrong Content-Type specified (#5527) 8 years ago
Aleksander Machniak 6287227fff Fix missing content check when image resize fails on attachment thumbnail generation (#5485) 8 years ago
Aleksander Machniak 8a76bf3783 Make sure $prefs property is an array (#5523) 8 years ago
Aleksander Machniak e306328340 Fix storing "empty" values in rcube_cache/rcube_cache_shared (#5519) 8 years ago
Martin Fischer 7f8d0be3b3 handles multiple errors and shows error messages in editor tooltips 8 years ago
Martin Fischer 67c910da78 syntax highlighted raw editor for sieve filter sets(codemirror) 8 years ago
JohnDoh dd714b33a8 replace old trac links (#5514) 8 years ago
Aleksander Machniak 62bcda35df Enigma: Don't log bad-passphrase errors 8 years ago
Aleksander Machniak 5522e6fd68 Require Crypt_GPG 1.6.0 8 years ago
Aleksander Machniak c95292b912 Update README with some GnuPG 2.1 support info 8 years ago
Aleksander Machniak ed44a73ca5 GnuPG 2.1: Fix secret keys export 8 years ago
Aleksander Machniak 7e90de4ef5 write_record() should return boolean value 8 years ago
Aleksander Machniak b26dcb64c3 Code simplification 8 years ago
Aleksander Machniak 68221ed4ae Improve uppercase/lowercase/ucfirst attrib handling in rcube::gettext()
- Make ucfirst mode compatible with UTF-8
- Fix bug which made uppercase=FIRST non-working
- Replace \n with real line-break before converting char case
8 years ago
Aleksander Machniak 322f443d17 Merge branch 'master' of github.com:roundcube/roundcubemail 8 years ago
Aleksander Machniak 6e0effa54c Fix "Illegal string offset" warning in rcube::log_bug() on PHP 7.1 (#5508) 8 years ago
Raoul Bhatia c5a16e72d7 password: Add missing quote in password_ldap_ppolicy_uri in config.inc.php.dist (#5507)
This was introduced in 5322e91825
8 years ago
Aleksander Machniak e17fcf1649 Support ALLOW-FROM in x_frame_options (#5122) 8 years ago
Aleksander Machniak 115aadca82 Properly handle connection errors in vacation UI 8 years ago
Aleksander Machniak 39cceb2f89 Managesieve: Various improvement to raw script editor 8 years ago
Martin Fischer 7215013b53 implemented raw editor for sieve filter sets (#5473)
* implemented raw editor for sieve filter sets

Signed-off-by: Martin Fischer <martin.fischer@fau.de>

* updated according to comments
8 years ago
Aleksander Machniak 0e5a167cd2 Fix recognizing Sent folder on search if current folder has been changed by plugins in meantime 8 years ago
Aleksander Machniak e17e8851f1 CS improvements, _xor() method replaced with an anonymous function 8 years ago
Aleksander Machniak d59bf988e3 Fix style of Save button in password form (larry) 8 years ago
Aleksander Machniak d02e6ea45e Fix so templating system does not mess with external (e.g. email) content (#5499) 8 years ago
Aleksander Machniak c3e7d93c43 Make "Add contact" image/text ignored when copying/selecting recipients in main headers (#5103) 8 years ago
Aleksander Machniak 386af483ce Fix redundant keep-alive/refresh after session error on compose page (#5500) 8 years ago
Aleksander Machniak 0a4e3b2d3f Icons alignment fix 8 years ago
Aleksander Machniak cf866990f2 Get rid of "popupmessage" class
It wasn't widely used and made the dialogs look inconsistent
8 years ago
Aleksander Machniak 2dbbaf7739 Warn about too many disclosed recipients in composed email [max_disclosed_recipients] (#5132)
Allow to omit a subject when sending an email (#5068)
8 years ago
Aleksander Machniak 059dc8b635 identity_select: Support Received header (#5085) 8 years ago
Aleksander Machniak 485c50a5f3 Fix error checking on get_script() result + some CS fixes 8 years ago
Aleksander Machniak bd12d94fae Fix missing contact ID for contacts from non-sql addressbooks 8 years ago
Aleksander Machniak 391d0d2039 Remove "@version @package_version@" 8 years ago
Aleksander Machniak 28741ed032 Disable double-click on the list when preview pane is on (#5199)
This eliminates delay when opening a message in preview pane.
8 years ago
Aleksander Machniak 556c1725a7 Unify automatic marking as \Seen in preview pane, full-page and extwin views (#5071)
We now have one 'mail_read_time' option that works for all cases.
Option 'preview_pane_mark_read' has been removed and marked as an alias.
8 years ago
Aleksander Machniak 04f2d139bf Fix splitter dragging over messages list
Mouseup event on messages list is not propagated to document.
We workaround this by setting drag_active flag, in such case
the event will be propagated.
8 years ago
Aleksander Machniak c42d447a55 Removed unused moxieplayer.swf 8 years ago
Aleksander Machniak ecfe177173 CS fixes, use $this instead of local variable 8 years ago
Aleksander Machniak e3b61cd487 Plugin API: Added get_compose_responses hook (#5457) 8 years ago
Aleksander Machniak 1618387de7 Enigma: Support GnuPG 2.1 (#5313) 8 years ago
Aleksander Machniak 2ae1da4b1d Merge branch 'dev/gnupg21' 8 years ago
Aleksander Machniak 1727071816 Better handling of rcube_text_editor.replace()'s input argument, some simplification 8 years ago
Aleksander Machniak b6c061656f GnuPG 2.1: Support password prompt on private key import 8 years ago
Aleksander Machniak ecefdca21d GnuPG 2.1: Support password input on private key export 8 years ago
Aleksander Machniak edea8732a6 Fix regression where UI object could be not created on some pages (#5484) 8 years ago
Aleksander Machniak 571a10751f Display error when trying to upload more files than specified in max_file_uploads (#5483) 8 years ago
Aleksander Machniak f43f5bf93f Use JSON_PRETTY_PRINT in devel_mode
This effectively makes PHP 5.4 a real requirement
8 years ago
Aleksander Machniak 1a8bdf554a Fix "DB Write" test (#5479) 8 years ago
Aleksander Machniak 4e0532808d Fix bug where it wasn't possible to store more that 2MB objects in memcache/apc (#5452)
Added memcache_max_allowed_packet and apc_max_allowed_packet settings
8 years ago
Aleksander Machniak 33addff305 assword: Added possibility to nicely handle password epiration from other plugins (#5468)
Squashed commit of the following:

commit 41283ecab18321201c3adfef8e964e2aa0dc2032
Author: Aleksander Machniak <alec@alec.pl>
Date:   Sat Oct 15 08:37:31 2016 +0200

    CS fixes after PR merge, renamed session variable

commit b4440a0c4d15c194619c003683ff0d36787f82a8
Merge: cf9f0d8 5dee181
Author: Aleksander Machniak <alec@alec.pl>
Date:   Sat Oct 15 08:26:04 2016 +0200

    Merge branch 'master' of https://github.com/ZiBiS/roundcubemail into ZiBiS-master

commit 5dee1812e7
Author: Zbigniew Szmyd <zbigniew.szmyd@linseco.pl>
Date:   Thu Oct 13 14:20:14 2016 +0200

    passing by session

commit 6ccb7e7d1d
Author: Zbigniew Szmyd <zbigniew.szmyd@linseco.pl>
Date:   Thu Oct 13 11:45:43 2016 +0200

    formatted passwdexpdatetime should be set in session data

commit a43f30fdfc
Author: Zbigniew Szmyd <zbigniew.szmyd@linseco.pl>
Date:   Thu Oct 13 11:10:06 2016 +0200

    _passwdexpwarning removed and expdatetime object is stored in session

commit 62ef852a11
Author: Zbigniew Szmyd <zbigniew.szmyd@linseco.pl>
Date:   Thu Oct 13 10:24:39 2016 +0200

    String concatenation is removed and expdatetime is passed via session
    data.

commit 2aea3a4e85
Author: Zbigniew Szmyd <zbigniew.szmyd@linseco.pl>
Date:   Wed Oct 12 10:20:58 2016 +0200

    Removing ppolicy plugin from my repository.

commit 8848c944ab
Author: Zbigniew Szmyd <zbigniew.szmyd@linseco.pl>
Date:   Tue Oct 11 11:32:37 2016 +0200

    little correction of variables names

commit 5266c89da9
Author: Zbigniew Szmyd <zbigniew.szmyd@linseco.pl>
Date:   Tue Oct 11 11:14:17 2016 +0200

    little corrections

commit c665b5c607
Author: Zbigniew Szmyd <zbigniew.szmyd@linseco.pl>
Date:   Tue Oct 11 10:31:05 2016 +0200

    A plugin to check LDAP password for expiration
8 years ago
Aleksander Machniak cf9f0d8829 Fix bug where IMAP password could be exposed via error message (#5472) 8 years ago
Aleksander Machniak b8f9ba7d47 Fix bug where deleting folders with subfolders could fail in some cases (#5466) 8 years ago
Aleksander Machniak 20086193eb Support HTML input to rcube_text_editor.replace() (#5456) 8 years ago
Aleksander Machniak 4a84744cbb Set smtp options in sample config as they are required now 8 years ago
Aleksander Machniak ff25ba6fbd Optimize image size 8 years ago
Aleksander Machniak 32ffc4e637 Bump database version 8 years ago
Aleksander Machniak a2f5226363 Merge branch 'master' of https://github.com/gradator/roundcubemail into gradator-master 8 years ago
Thomas Bruederli c6307d78a5 Better icon and CSS styles for PGP-related attachments (#5301 and #5279) 8 years ago
Thomas Bruederli db05b52a4b Add icons for pgp-keys and php-encrypted attachments (#5301 and #5279) 8 years ago
Thomas Bruederli 7d0cb785a1 Update changelog 8 years ago
Thomas Bruederli ea816a062a Fix flickering of header topline in min-mode (#5426) 8 years ago
Aleksander Machniak b258b91560 Do not show inline images of unsupported mimetype (#5463) 8 years ago
Aleksander Machniak affec47eab CS fixes, updated changelog 8 years ago
Aleksander Machniak 7f4ab8c14a Merge pull request #5364 from ZiBiS/master
Password: LDAP PPolicy driver
8 years ago
Aleksander Machniak a7c824418e Merge pull request #5464 from xm74/patch-1
Update ru_RU.inc
8 years ago
Zbigniew Szmyd fa533a4a01 Revert "Correction to work good with the Net_LDAP2 2.2.0"
This reverts commit acbc67ea1c.
8 years ago
Zbigniew Szmyd 06956572ec Change parameters names to the standard. 8 years ago
Aleksander Machniak d305f4f0fd Separate action to mark all messages in a folder as \Seen (#5006)
with possibility to do this in all folders or in a folder and its subfolders (#5076)
8 years ago
Sylvain Rochet 492b181d51 SQL, upgrade: increase session table ip field size for IPv6 addresses
Commit 84d06edb06 introduced IPv6 support on SQL session table but
failed at providing upgrade SQL scripts, this commit fixes it.

Fixes: 84d06edb06 ("IPv6 Compatability")
Signed-off-by: Sylvain Rochet <gradator@gradator.net>
8 years ago
Max Kostikov f0a8e06c56 Update ru_RU.inc
Misprint corrected
8 years ago
Aleksander Machniak 4936159f31 Require Crypt_GPG 1.4.3 8 years ago
Aleksander Machniak 1621fe52b1 Update changelog 8 years ago
Aleksander Machniak bf95300b29 Update changelog 8 years ago
Aleksander Machniak ca8b1e0b78 Merge pull request #5461 from jpope777/master
Fix class in keys list
8 years ago
Aleksander Machniak 40fe66b71e Fix reference to non-existing blank.tif file in mime_content_type check 8 years ago
Aleksander Machniak e85cfa6281 Don't use bc.php anymore, this time in the Installer 8 years ago
jpope 5d17bf113f Fix class in keys list
The last few keys were being cut off due to a typo.
8 years ago
Aleksander Machniak 7203d151ec Enigma: Fix encoding of a key search phrase (#5459) 8 years ago
Aleksander Machniak 8a51607671 Fix regression where creation of default folders wasn't functioning without prefix (#5460) 8 years ago
Aleksander Machniak 638afafbd2 Make so rcmail.log() depends on devel_mode (#5193) 8 years ago
Zbigniew Szmyd 7254a89e7f get log_dir from config 8 years ago
Zbigniew Szmyd c22d4bc642 The correction of the script path and log_dir from the rc
config.
8 years ago
Aleksander Machniak d85f30bec4 Archive: Don't reload messages list when it's not needed (#5225)
Archive: Add option to automatically mark archived messages as \Seen (#5142)
8 years ago
Aleksander Machniak 9e129383a1 Improve randomness of password salts and random hashes (#5266) 8 years ago
Aleksander Machniak ea8c7efae8 Merge branch 'master' of github.com:roundcube/roundcubemail 8 years ago
Aleksander Machniak c614381e9e Merge branch 'NETLINK-master' 8 years ago
Aleksander Machniak e9d70648dd Fix CS and obvious mistakes, update changelog after PR merge 8 years ago
Aleksander Machniak 4e26cd7691 Merge branch 'master' of https://github.com/NETLINK/roundcubemail into NETLINK-master 8 years ago
Zbigniew Szmyd 191396db17 The error log is redirected to logs/ldap_ppolicy.err 8 years ago
Aleksander Machniak c253aac7d4 Merge pull request #5450 from smares/patch-1
Fixed spelling
8 years ago
Aleksander Machniak 195dc11855 Support host-specific imap_conn_options/smtp_conn_options/managesieve_conn_options (#5136) 8 years ago
Sebastian Mares 64df1c0f71 Fixed spelling 8 years ago
Aleksander Machniak 8c75dd3aa8 Add convenient method to create new session records 8 years ago
Aleksander Machniak 5c5f9c381c Merge pull request #5449 from raoulbhatia/master
Remove dangling robots.txt symlink
8 years ago
Raoul Bhatia e64da8fe53 Remove dangling robots.txt symlink
Bugfix for commit cce4994b97
8 years ago
Aleksander Machniak ba025f4f5f Update changelog 8 years ago
Aleksander Machniak c13119b81c Fix bug where folders list would scroll to top when clicking on subscription checkbox (#5447) 8 years ago
Thomas Bruederli e76acb8f0c Add 1.2.2 milestone to changelog 8 years ago
Aleksander Machniak 42ddfe5ec9 Simplify mbstring code path in rcube_charset::convert() 8 years ago
Aleksander Machniak 7829da358d GnuPG 2.1: Fix importing newly generated (secret) keys using GnuPG 2.1 8 years ago
Aleksander Machniak fba3e1ae0c GnuPG 2.1: Add option to configure gpgconf binary location 8 years ago
Aleksander Machniak a70faaa692 Merge branch 'master' of github.com:roundcube/roundcubemail 8 years ago
Aleksander Machniak cce4994b97 Control search engine crawlers via X-Robots-Tag header instead of <meta> and robots.txt (#5098)
This gives one central place to control these settings and really
makes the page will not be listed in Google search results.
8 years ago
Aleksander Machniak 7f5abc51b8 Control search engine crawlers via X-Robots-Tag header instead of <meta> and robots.txt (#5098)
This gives one central place to control these settings and really
makes the page will not be listed in Google search results.
8 years ago
Aleksander Machniak 462faace73 Enigma: Support key generation for multiple identities (#5383)
Update OpenPGP.js to version 1.6.2.
Get rid of server-side key generation - Crypt_GPG does not support
multiple user IDs, it's also slow and requires entrophy generator.
8 years ago
Aleksander Machniak 48585867f3 INBOX should be always protected, event with protect_default_folders=false
I.e. it should not be possible to rename INBOX
8 years ago
Aleksander Machniak 331bb579c2 jQuery 3.1.1 8 years ago
Aleksander Machniak 46f45a3970 Managesieve: Add option to automatically set vacation :from address (#5428) 8 years ago
Aleksander Machniak c1c0a0d815 Implemented rcube::sleep() method for disconnecting all external connection in long-running/sleeping scripts 8 years ago
Aleksander Machniak a227589eb2 de_DE: abboniert -> abonniert 8 years ago
Aleksander Machniak 24b4ca52cf Fix so "Action disabled" error uses more appropriate 404 code (#5440) 8 years ago
Zbigniew Szmyd 0c093b0b36 Added the missing changes 8 years ago
Aleksander Machniak 761308e85a Small rephrasing in requirements section 8 years ago
Zbigniew Szmyd 0efb682d40 New constant PASSWORD_IN_HISTORY added for ldap_ppolicy plugin. 8 years ago
Aleksander Machniak f713d186bc Disable navigation if can't get messages index in pagenav.inc 8 years ago
Aleksander Machniak b751f8f20f Move password_dovecotpw_with_method close to other dovecot related options 8 years ago
Aleksander Machniak 694ff54713 Merge branch 'master' of github.com:roundcube/roundcubemail 8 years ago
Aleksander Machniak a1a7b0b9e6 Enigma: Make recipient key searches case-insensitive (#5434) 8 years ago
Aleksander Machniak 6886a4de3f Widescreen layout aka three column view (#5093) 8 years ago
Aleksander Machniak e22824a316 Use mb_strtoupper() instead of strtoupper() for localized texts 8 years ago
Aleksander Machniak cb53f46d10 Merge pull request #5432 from tpayen/patch-1
Use "roundcube:label" instead of hard coded text
8 years ago
Thomas P d3a6cf8bf1 Use "roundcube:label" instead of hard coded text
Both texts hardcoded are read by some screen readers, it's better to use labels for translation
8 years ago
Aleksander Machniak 650ac8befb Fix displaying size of attachments with zero size 8 years ago
Aleksander Machniak e0cedf0f36 Fix some datepicker style in mozilla 8 years ago
Aleksander Machniak a8d41ac7f4 Fix some undefined variables 8 years ago
Aleksander Machniak f6d1c40a6b Fix background color of some menu lists 8 years ago
Aleksander Machniak b0fae77784 Added missing composer.json file for jqueryui plugin 8 years ago
Aleksander Machniak bfbab5bcde Fix keyboard event detection with jQuery 3.x and remove hacks for old browsers
This fixes e.g. unwanted focus on a toolbar button after closing popup
menu with mouse click on the document.
8 years ago
Aleksander Machniak f92052fd73 Fix so when moving to Trash we make sure the folder exists (#5192) 8 years ago
Aleksander Machniak 2e1675bc4a Center and scale images in attachment preview frame (#5421) 8 years ago
Aleksander Machniak 4bf4afec68 Fix so folders list is scrolled to the selected folder on page load (#5424) 8 years ago
Aleksander Machniak 2999cc38a5 Generate more compact HTML5 code, e.g. use short form of boolean attributes 8 years ago
Aleksander Machniak 4cb544a1b8 Fix form inputs size (removed font-size and padding style) 8 years ago
Aleksander Machniak 023c8fd356 Fix regression where js error is thrown if server does not support 'duplicate' extension 8 years ago
Aleksander Machniak 95df255af4 Added max_message_size option enforced when attaching files to a composed message (#4993) 8 years ago
Aleksander Machniak aad269c2f8 Fix PHP warning when handling shared namespace with empty prefix (#5420) 8 years ago
Aleksander Machniak d7089c81d6 Fix so messages list does not lose focus when releasing drag-n-drop outside of the list 8 years ago
Aleksander Machniak ce0c42ed8a Fix error causing empty INBOX listing in Firefox when using an URL with user:password specified (#5400) 8 years ago
Aleksander Machniak defdf84bb7 Really fix login form regression
Remove 'form' from allowed attributes list of input field. We needed
it only for a moment, now we don't. It's also not supported by IE/Edge
which means there's no way we would need it. Maybe some day...
8 years ago
Victor Benincasa daeb66ee99 Fix login form
Fix a small bug introduced on commit 43f3c5f that breaks the login form ($attrib['form'] is checked at line 1899, so it cannot be unset).
8 years ago
Aleksander Machniak 32e5a6bbcf Fix bug where folder creation could fail if personal namespace contained more than one entry (#5403)
+ small code improvements
8 years ago
Aleksander Machniak 99cb08c41c Fix so "All" messages selection is resetted on search reset (#5413) 8 years ago
Aleksander Machniak 80919e1cf5 Added Search button in quick search menus (#5312) 8 years ago
Aleksander Machniak 873e0353cf Use smart-upload-button for messages and contact photos upload
Unified interface with rcmail::upload_form().
8 years ago
Aleksander Machniak de5da687e4 Remove code for "placeholder" attribute support in old browsers 8 years ago
Aleksander Machniak c88a88fb0b Rewrite smart upload button to work in IE (#5410) 8 years ago
Aleksander Machniak 820d614c79 Fix missing </form> tag 8 years ago
Aleksander Machniak 201f5f7861 Fix missing min-height on ui-autocomplete lists (T1428) 8 years ago
Aleksander Machniak 51c6269ded Improve accessibility of enigma encryption options button in compose screen 8 years ago
Aleksander Machniak 2225cf1bc7 Mail_mimeDecode is not used anymore 8 years ago
Aleksander Machniak db9bd33da4 Merge pull request #5408 from alunduil/include-htaccess
Ensure htaccess files are used
8 years ago
Aleksander Machniak 43f3c5fb2a Implement "one click" attachment upload (#5024) 8 years ago
Aleksander Machniak c65bb121eb Describe Framework requirements, drop some redundant code (since we require mbstring) 8 years ago
Aleksander Machniak 118935e0e8 Add missing ticket number 8 years ago
Aleksander Machniak 0485275a75 Merge branch 'dev/drop-legacy-browsers' 8 years ago
Aleksander Machniak 11b7a5d13e Fix typo 8 years ago
Aleksander Machniak 689996896a Fix bug where names of downloaded files could be mailformed when derived from the message subject (#5404) 8 years ago
Alex Brandt 90713d051e ensure htaccess files are used
The htaccess files contain a few rewrites that ensure basic hiding of
scripts that shouldn't be accessed is enforded.  This commit is based on
the changes in pull request #298 (thanks goes to @minad).

Also in this commit is a re-ordering of Dockerfile statements to
leverage caching when working on the apache configuration.  There are
probably other improvements to be made but I'm not enough of a PHP
expert to spot them.
8 years ago
Aleksander Machniak 9debc38724 Drop mail_header_delimiter option, since we don't use mail() we don't need it 8 years ago
Aleksander Machniak 47c2630458 Drop some css style for old IE 8 years ago
Aleksander Machniak 184de7735c CS fixes (mostly phpdoc) 8 years ago
Aleksander Machniak 2298ecf7f6 Fix E_DEPRECATED warning when using Auth_SASL::factory() (#5401) 8 years ago
Aleksander Machniak d7c4c3fb62 Drop IE9 support 8 years ago
Aleksander Machniak 6ef3a08592 Update changelog 8 years ago
Aleksander Machniak 292b18b040 Use ECMASCRIPT5 and newest closure compiler 8 years ago
Aleksander Machniak eecc601601 Fix compatibility with jQuery 3.x 8 years ago
Aleksander Machniak a5348bbe7f Fix some styles after jQuery-UI update 8 years ago
Aleksander Machniak b12309a759 Re-enable accessible datepicker 8 years ago
Aleksander Machniak 8448c8d136 Upgrade to jquery-minicolors-2.2.4 8 years ago
Aleksander Machniak 094f90d596 Remove redundant code 8 years ago
Aleksander Machniak 18842dd14e Fix code style after PR merge 8 years ago
Aleksander Machniak 6dbbf0e14e Merge pull request #5392 from tsnr/sqml_fenc
Convert charset with file based backend.
8 years ago
Aleksander Machniak 0836b213db Removed useless 'created' column from 'session' table (#5389) 8 years ago
Aleksander Machniak 6f150372e1 Add some CVE identifiers to changlog entries 8 years ago
Aleksander Machniak 505efff5c4 Fix bug where blocked.gif couldn't be attached to reply/forward with insecure content 8 years ago
Aleksander Machniak d74dd5b6cb Drop some styles with -o- and -webkit- prefix 8 years ago
Aleksander Machniak b3ee5d13cd Update to jQuery-UI 1.12.0 8 years ago
Aleksander Machniak 94f8ce3334 Make html::parse_attrib_string() more robust
Fixes PHP Error: Expression parse error on: ($app->config->get('preview_pane',rcube_utils::get_boolean('')) == true ? ' checked=checked' : ')
8 years ago
Hideki Sakamoto 8bc134c284 Convert charset wieh file based backend. 8 years ago
Aleksander Machniak 062d95503e Fix bug where Message-ID domain part was tied to username instead of current identity (#5385) 8 years ago
Aleksander Machniak 55cdf1569e Support contact+group searches in all relevant places (T1360)
Before the search worked only in Addressbook, not also in Compose.
The point of the change is also to align group searches with contact searches
in that it now uses the same set of attributes. Previously groups
in Compose were searched by name only.
8 years ago
Aleksander Machniak 2cb9d9f2b9 Remove old mozilla padding hack 8 years ago
Aleksander Machniak 2d26e1d8a5 Update changelog 8 years ago
Aleksander Machniak 14565a59af Merge pull request #5388 from DanCld/patch-1
Properly set the memcache debug log file name
8 years ago
DanCld ee00d949c4 Properly set the memcache debug log file name
Properly set the debug log file name ('memcache') as $this->type is undefined
8 years ago
Aleksander Machniak 53b5ccfb0c Fix regression where LDAP results could be counted incorrectly when using VLV
... broken by d08bd0a51f where we added searching in users+groups in one request
8 years ago
Aleksander Machniak e1ce4084c1 Update changelog 8 years ago
Aleksander Machniak 71340a1bea Update to jQuery-3.1.0 8 years ago
Aleksander Machniak eda23fe6c8 Remove hacks for old Internet Explorer versions 8 years ago
Aleksander Machniak 829442a4cd Removed legacy_browsr plugin 8 years ago
Aleksander Machniak 9e3263acbe Simplify popup dialogs creation 8 years ago
Aleksander Machniak 5801f6fb18 Update changelog 8 years ago
Aleksander Machniak 7d50162e03 Merge pull request #5284 from alecpl/master
Wash position:fixed style in HTML mail for better security (#5264)
8 years ago
Aleksander Machniak dcabc1d814 Merge remote-tracking branch 'upstream/master'
Conflicts:
	tests/Framework/Washtml.php
8 years ago
Aleksander Machniak 30668879b0 Use SymLinksIfOwnerMatch in .htaccess instead of FollowSymLinks disabled on some hosts for security reasons (#5370) 8 years ago
Aleksander Machniak 7df99b7399 Enigma: Fix signature verification with some IMAP servers, e.g. Gmail, DBMail (#5371) 8 years ago
Aleksander Machniak a876748d84 Fix regression where password was continuously prompted on signing (an no enrypting) 8 years ago
Aleksander Machniak 94eb2e5a40 Make the attachment rename input bigger (size: 50) 8 years ago
Aleksander Machniak ebc2f5dc7d Add possibility to rename attachments in mail compose (#4996)
... and fix some small issues related to the new compose attachment menu feature
8 years ago
Aleksander Machniak a576ca2664 Update changelog 8 years ago
Aleksander Machniak c3fc072d97 Remove code related to magic_quotes_* and register_globals
...they do not exist in PHP 5.4 which we now require.
8 years ago
Aleksander Machniak 90a6d717ec Require PHP >= 5.4 8 years ago
Aleksander Machniak 276ad83fc7 Update managesieve changelog 8 years ago
Aleksander Machniak 906cf101c3 Better time handling in rcube_utils::clean_datestr() 8 years ago
Aleksander Machniak ec1525a1e6 Remove debug code 8 years ago
Aleksander Machniak ed35267b9b Managesieve: Fix parsing of vacation date-time with non-default date_format (#5372)
Added new method rcube_utils::format_datestr() to convert date_format date
into ISO date format.
8 years ago
Aleksander Machniak b3f7b08e57 Append menu to the attachment list entry after upload finishes 8 years ago
Aleksander Machniak 2f2765ab43 Fix regression in resizing JPEG images with Imagick (#5376) 8 years ago
Aleksander Machniak 672ca96b24 Merge pull request #5375 from filhocf/master
Correct file csv2vcard.inc
8 years ago
Claudio Ferreira Filho 40a493b0e1 Adjusting csv2vcard.inc file 8 years ago
Aleksander Machniak 8a13615e9e Add possibility to preview and download attachments in mail compose (#5053) 8 years ago
Claudio Ferreira Filho 51979cb554 Adding localized in pt_BR csv2vcard.inc file 8 years ago
Aleksander Machniak dcf877c692 Enigma: Add possibility to configure gpg-agent binary location (enigma_pgp_agent) 8 years ago
Aleksander Machniak d5788494a8 Update changelog 8 years ago
Thomas Bruederli 354042c4f4 Fix German tranlsation for 'open' (#5360) 8 years ago
Thomas Bruederli 9fe5b88dee Add new translations for Enigma plugin 8 years ago
Thomas Bruederli 4e3442877d Updated localizations from Transifex 8 years ago
Aleksander Machniak 0d1450cd11 Merge pull request #5365 from odyniec/fix-typos-in-password-config
Fix typos
8 years ago
Michał Wojciechowski cde1fbde0c Fix typos 8 years ago
Aleksander Machniak e1165fed89 Remove backward compatibility "layer" of bc.php (#4902) - now for real 8 years ago
Aleksander Machniak 64763853c9 Fix javascript errors in IE on page with iframe that points to another domain 8 years ago
Aleksander Machniak e6553ce60d Fix German localization label 8 years ago
Aleksander Machniak d91bad5975 Fix handling of blockquote tags with mixed case on html2text conversion (#5363) 8 years ago
Aleksander Machniak 7a7a6795f0 Support WEBP images in mail messages (#5362) 8 years ago
Aleksander Machniak 1988f68660 Merge pull request #5203 from bostjan/foundation-for-customizable-contacts-autocomplete
Foundation for customizable contacts autocomplete
8 years ago
Aleksander Machniak 6626328e7c We already require PEAR, so it's not needed to check if PEAR class exists.
Sooner or later it will fail if PEAR does not exist, so better to do this sooner.
8 years ago
Aleksander Machniak fdf9ff5a17 Merge pull request #5361 from PeterDaveHelloKitchen/image-optimize
optimize png images using zopflipng
8 years ago
Aleksander Machniak 437aca39e0 Enigma: Import keys from key-server(s) (#5286) 8 years ago
Aleksander Machniak 4361a95820 Fix missing localization of HTML editor when assets_dir != INSTALL_PATH 8 years ago
Aleksander Machniak f9fc7e1edf Managesieve: Improvements in 'string' test support 8 years ago
Aleksander Machniak 23a27cc61e Merge branch 'pulcov-master' 8 years ago
Aleksander Machniak 9793826ab4 Merge branch 'master' of https://github.com/pulcov/roundcubemail into pulcov-master 8 years ago
Aleksander Machniak bf5b3072c4 Fix MathML test on older PHP versions 8 years ago
Aleksander Machniak edfd9da42a Support MathML in HTML message preview (#5182) 8 years ago
Aleksander Machniak 476c820323 CS fixes 8 years ago
Aleksander Machniak 158b34ed42 Rename Addressbook to Contacts (#5233) 8 years ago
Peter Dave Hello 6ee0cec8e9
optimize png images using zopflipng 8 years ago
Aleksander Machniak ee895a2c96 Remove PHP mail() support, smtp_server is required now (#5340) 8 years ago
Aleksander Machniak 8e65f618c5 Display full message subject in onmouseover on truncated subject in mail view (#5346) 8 years ago
Aleksander Machniak e13deb2e47 Merge branch 'master' of github.com:roundcube/roundcubemail 8 years ago
Aleksander Machniak 930e363e55 Fix handling of 'mailto' and 'error' arguments in message_before_send hook (#5347) 8 years ago
Aleksander Machniak d2d4f867e5 Merge pull request #5350 from demis-palma/fix-encoding
Fixed wrong encoding in currency symbols
8 years ago
Aleksander Machniak dc6cfe1eec Merge pull request #5351 from fliespl/patch-1
Remove use of deprecated method Imagick::flattenImages
8 years ago
Aleksander Machniak 9a2264ba0e Fix regression where messages with no text part (but e.g. application/zip) were not displayed as an attachment (#5357) 8 years ago
fliespl 10c032165b Remove deprecated function flattenImages
flattenImages in imagick is deprecated since php 5.6. 
`PHP Deprecated:  Imagick::flattenImages method is deprecated and it's use should be avoided `


Proposed solution works with imagick 3.1.0+.
11 is used as an alternative to `Imagick::ALPHACHANNEL_REMOVE` which was added in imagick 3.2.0.
8 years ago
Demis Palma 411bd3fe82 Fixed wrong encoding in currency symbols 8 years ago
Aleksander Machniak 3d9e170d8b Use contact_search_name format in popup on results in compose contacts search 8 years ago
Aleksander Machniak 352c6329cc Enigma: Search missing public keys on a key-server in mail compose (#5286) 8 years ago
Aleksander Machniak b77efcd104 Fix typo 8 years ago
Aleksander Machniak 85082c88c7 CS fixes 8 years ago
Aleksander Machniak 997e82d2b2 Merge pull request #5326 from raoulbhatia/autoload
Translate PHP namespaces into directories
8 years ago
Aleksander Machniak 0ae4001121 Don't create multipart/alternative messages with empty text/plain part (#5283) 8 years ago
Aleksander Machniak cbba1586ee Merge pull request #5339 from dsoares/patch-1
Avoid PHP fatal error with LDAP object
8 years ago
dsoares 8e7e22c656 Avoid PHP fatal error
After last change to file `rcube_ldap.php`, my roundcube instance was getting this error:
```
PHP Fatal error:  Cannot use object of type Net_LDAP3_Result as array in ...
```
In
```php
protected function extended_search($count = false)
```
`$result = $this->ldap->search()` returns a LDAP object (whatever package we use).
If the search returns no results (and if `$is_extended_search` is false), then it gets to line 971 trying to do a `usort()` and then a `count()` on an object, instead of an array.
8 years ago
Aleksander Machniak c08ca018d8 Get rid of rcube_imap_generic::strToTime() in favor of rcube_utils::strtotime() 8 years ago
Raoul Bhatia 7122df719d Translate PHP namespaces into directories 8 years ago
Aleksander Machniak 88ed121f24 Enigma: Add possibility to export private keys (#5321) 8 years ago
Aleksander Machniak ded320a86a Merge branch 'master' of github.com:roundcube/roundcubemail
Conflicts:
	program/lib/Roundcube/rcube_ldap.php
8 years ago
Aleksander Machniak d08bd0a51f Searching in both contacts and groups when LDAP addressbook with group_filters option is used 8 years ago
Aleksander Machniak bbbe60744a Searching in both contacts and groups when LDAP addressbook with group_filters option is used 8 years ago
Aleksander Machniak de7b0b51c4 Require Crypt_GPG 1.4.2 with fix for #5304 8 years ago
Aleksander Machniak de53074734 Fix syntax error 8 years ago
Aleksander Machniak 079517e3c2 Merge pull request #5329 from kAworu/patch-1
default config: fix use_secure_urls comment
8 years ago
Alexandre Perrin 96af4b2e23 default config: fix use_secure_urls comment
rewrite regexp was missed by part of 26086981a2.
8 years ago
Aleksander Machniak baf31d86b7 Merge pull request #5323 from Takika/patch-1
Add head_fields argument to contact_form hook
8 years ago
Sandor Takacs 6d1a68bd44 Rename field_blocks to head_fields 8 years ago
Sandor Takacs e108902eff Add $field_blocks to contact_form hook
Add $field_blocks to contact_form hook, so plugins can change the order of the fields: https://github.com/roundcube/roundcubemail/pull/5281
8 years ago
Aleksander Machniak 22241a5d82 CS fixes 8 years ago
Aleksander Machniak 3940b37845 Explicitly require pear-core-minimal (#5319) 8 years ago
Aleksander Machniak 58c036116b Support type=password in rcube_output::get_edit_field() 8 years ago
Aleksander Machniak 2c30feece1 Fix conflict in new_user_dialog and password_force_new_user settings (#5275) 8 years ago
Aleksander Machniak 3dd83804b4 Don't return false if keys directory does not exist 8 years ago
Aleksander Machniak 3f01232625 Enigma: Delete user keys when using deluser.sh script 8 years ago
Aleksander Machniak ac1cd3719c Enigma: Fix redundant list-secret-keys/list-public-keys calls on signing/encryption 8 years ago
Aleksander Machniak f2eafda539 Fix bug where microsecond format in logged date didn't work in some cases 8 years ago
Aleksander Machniak 5e1277e971 Trim error message 8 years ago
Aleksander Machniak f840abe6e0 Don't add HTTP response body/headers to the spellchecker error message (it is displayed to the user) 8 years ago
Aleksander Machniak c478536741 Make SQL selects less expensive in memory for some cases where we fetch big data chunks 8 years ago
Aleksander Machniak b9b4acb013 Merge branch 'master' of github.com:roundcube/roundcubemail 8 years ago
Aleksander Machniak 72da903dca Remove unused code 8 years ago
Aleksander Machniak 5e5eab3e53 Update TinyMCE to version 4.3.13 (#5309) 8 years ago
Aleksander Machniak d0bb0a9c9d Fix subscription checkbox state on error in folder subscribe/unsubscribe action (#5243) 8 years ago
Aleksander Machniak f6861cc896 Add managesieve plugin documentation 8 years ago
Aleksander Machniak f1c260b05f Enigma: Implement PGP encryption and signing in one go (#5302)
Enigma: Display signature verification status for encrypted+signed messages (#5302)
8 years ago
Aleksander Machniak 04aa29493c Fix so upgrade script makes sure program/lib directory does not contain old libraries (#5287) 8 years ago
Aleksander Machniak 13b76d9b1e Enigma: Add possibility to configure gpg binary location (enigma_pgp_binary) 8 years ago
Aleksander Machniak b9d3fb0221 Display different attachment icon on encrypted messages 8 years ago
Aleksander Machniak c76c4ed08b Workaround PHP issue by calling closelog() on script shutdown when using log_driver=syslog (#5289) 8 years ago
Aleksander Machniak 96102e2052 Enigma: Fix malformed signed messages with force_7bit=true (#5292) 8 years ago
Aleksander Machniak d61d33a12a Fix handling of --delete argument in moduserprefs.sh script (#5296) 8 years ago
Aleksander Machniak f466899d8d Simplified code 8 years ago
Aleksander Machniak 7864a98f08 Fix searching by email address in contacts with multiple addresses (#5291) 8 years ago
Aleksander Machniak 024800d068 Merge branch 'master' of github.com:roundcube/roundcubemail 8 years ago
Aleksander Machniak 8b0753191d Fix Transifex URL 8 years ago
Aleksander Machniak 4bd039dd58 Merge pull request #5294 from rmcaninch/master
help plugin config.inc.php.dist
8 years ago
rmcaninch 1e2c19e409 Merge pull request #1 from rmcaninch/rmcaninch-patch-1
Update config.inc.php.dist
8 years ago
rmcaninch 7cb243ea45 Update config.inc.php.dist 8 years ago
Aleksander Machniak dcb7db2f8c Enigma: Fix keys import from inside of an encrypted message (#5285) 8 years ago
Aleksander Machniak 6737e293bb Wash position:fixed style in HTML mail for better security (#5264) 8 years ago
Thomas Bruederli 44894414cd Avoid sending completely empty text parts for multipart/alternative messages (#5283) 8 years ago
Thomas Bruederli f82e336ada Add licence header to cloned PublicKey.js 8 years ago
Aleksander Machniak bf049c80e7 Remove debug code 8 years ago
Aleksander Machniak 1a8593a315 Update changelog 8 years ago
Aleksander Machniak db70d3e491 Merge pull request #5277 from hemio-ev/mailvelope-fixes
Fixes 'nobodywarning' on sending mailvelope mails
8 years ago
Aleksander Machniak 4f0abbf5fe CS and indent fixes, added $task property definition 8 years ago
Aleksander Machniak 796bb4ccbb Update localization, add Enigma plugin localizations 8 years ago
Aleksander Machniak 1da46a1021 Add Enigma plugin to Transifex config 8 years ago
Aleksander Machniak ff735fb3a5 Protect INBOX folder even if protected_default_folders=false 8 years ago
Aleksander Machniak 0ce7c493a8 Fix multi-folder search issues in "this and subfolders" scope (#5282, #5259)
- Fix bug where multi-folder search could choose a wrong folder
- Fix bug where multi-folder search didn't work for unsubscribed INBOX
8 years ago
Aleksander Machniak 4cfe230e56 Fix so subfolders of INBOX can be set as Archive (#5274) 8 years ago
Aleksander Machniak 2b88e6cf95 Use $OUTPUT->set_env(...) instead of $OUTPUT->command('set_env', ...) 8 years ago
Aleksander Machniak 4108502082 Update copyright year in about page (#5269) 8 years ago
Aleksander Machniak 98c1712e29 Fix redundant keep-alive requests when session_lifetime is greater than ~20000 (#5273) 8 years ago
Michael Herold d3c6d6570b Fixes 'nobodywarning' on sending mailvelope mails 8 years ago
Julian Matz 7ed0d3308b Update cpanel.php
Call $rcmail->config->get() only once per option by assigning variable inside the IF statement.
8 years ago
Aleksander Machniak 0344b16827 Fix priority icon(s) position 8 years ago
Aleksander Machniak dca92d33af Update changelog 8 years ago
Aleksander Machniak 87cf0a3fb1 Use minified publickey.js (with cache-buster) when available (#5254) 8 years ago
Aleksander Machniak 9e64dc2deb Remove application/x-tar file extension test as it might not exist in nginx config (#5253)
Use text/css instead
8 years ago
Aleksander Machniak e71de17602 Add note about need for module name change in IfModule when using PHP7 (#5249) 8 years ago
Aleksander Machniak ab6fdfa8bc Fix PHP warning when password_hosts is set, but is not an array (#5260) 8 years ago
Aleksander Machniak 378d10b748 Fix bug where message list columns could be in wrong order after column drag-n-drop and list sorting 8 years ago
Aleksander Machniak 930a3ceac0 Fix bug where errors could have been not logged when per_user_logging=true 8 years ago
John Regan 3a2874c77c Remove check for multiple dots in local-part 8 years ago
John Regan 0e809364e7 Support SMTPUTF8, relax email restrictions
If the FROM/TO portions of an email use non-ASCII characters,
check that the SMTP server supports the SMTPUTF8 extension.

Additionally, change some rules for parsing email addresses to
allow for more characters. Basically, SMTPUTF8 states that
nearly any printable character is a valid character in an
email address.
8 years ago
Aleksander Machniak 0b7e26c1bf Update changelog 8 years ago
Aleksander Machniak 3d6d038938 Fix typo in localization message 8 years ago
Thomas Bruederli 26c4006c87 Improve migration of the composer.json file when updating 8 years ago
Julian Matz 8042955927 Update cpanel.php 8 years ago
Julian Matz e34e267e59 Update cpanel.php
Changed code style and indentation.
8 years ago
Julian Matz 6651a6cab0 Update cpanel.php
Add support for hash auth (cPanel Remote Access Key) and call the $xmlapi->listaccts() method to retrieve the cPanel account user that owns the domain (required for cPanel reseller accounts).
8 years ago
Julian Matz 16d5dcbaa4 Update config.inc.php.dist
Add support for cPanel hash auth, using a Remote Access Key (choice between hash auth and plain password auth).
8 years ago
Julian Matz a4c6aec76a Update config.inc.php.dist
Add support for cPanel remote access hash (choice between hash auth and plain password auth).
8 years ago
Aleksander Machniak 614f4413ae Remove useless directives 8 years ago
pulcov 4f6853b9c6 Managesieve: bug correction 8 years ago
pulcov b312dc6c88 Managesieve: sieve string implement 8 years ago
Aleksander Machniak 5b3a86da57 Merge pull request #5184 from guitarmanusa/compose_focus
Implements 'scroll by keyboard #5139'
8 years ago
Aleksander Machniak bf19fe2d1a Move commented mod_headers settings to the end of the file 8 years ago
Aleksander Machniak 260811997f Merge pull request #323 from Rotzbua/add_opt_securityheader
Add optional security headers as comment to .htaccess
8 years ago
Aleksander Machniak f7fdf1a4de Merge pull request #5168 from piuma/patch-1
Set maxlength for email address input
8 years ago
Aleksander Machniak 3d0d5dbd0f Performance improvements in format_flowed() and unfold_flowed() 8 years ago
Aleksander Machniak afd090672c Small performance optimization 8 years ago
Aleksander Machniak ca9ad75d96 Add some more tests for HREF attribute washing 8 years ago
Aleksander Machniak 9cd4b1bc58 Display different confirmation text when moving messages to Trash (#5220) 8 years ago
Aleksander Machniak 5ab7ae5865 Add missing entry about Redis support for session 8 years ago
Aleksander Machniak 6d1337e1df Fix regression where setting Answered/Forwarded flag didn't work when sending an email 8 years ago
Aleksander Machniak 238ac34740 Add note about removing some deprecated methods 8 years ago
Aleksander Machniak 6652367d65 Fix XSS issue in href attribute on area tag (#5240, #5241) 8 years ago
Aleksander Machniak 4921c21cff Optimize SELECT response handling 8 years ago
Aleksander Machniak 344b0af9c6 Indicate that a collapsed thread has flagged children (#5013) 8 years ago
Aleksander Machniak 21e485ad50 Fix redundant enigma.css link 8 years ago
Aleksander Machniak de14ec6aa0 Merge branch 'for-1.3'
Conflicts:
	CHANGELOG
8 years ago
Aleksander Machniak 9796cd2063 Merge branch 'dev-rfc822-preview'
Conflicts:
	CHANGELOG
	program/steps/mail/show.inc
8 years ago
Aleksander Machniak 56f9883d84 Update to jsTimezoneDetect 1.0.6 8 years ago
Aleksander Machniak 9634169647 Bump version number to 1.3-beta 8 years ago
Aleksander Machniak bd6d7645d7 Update localization 8 years ago
Aleksander Machniak 667ed37f77 Fix bug where Encrypt button appears when switching editor to HTML (#5235) 8 years ago
Aleksander Machniak 5194120221 Add Known Issues section in Enigma README (#5215) 8 years ago
Aleksander Machniak 013aaeb895 CS improvements/fixes 8 years ago
Aleksander Machniak 0eece8222b Fix autoloading of 'html' class and improve autoloader performance 8 years ago
Aleksander Machniak e499a14e13 - Support 'duplicate' extension [RFC 7352]
- Improve errors handling in filter form
8 years ago
Aleksander Machniak 5d08d57005 Don't log ajax requests/responses, browser development tools already can show this information 8 years ago
Aleksander Machniak ef12008b69 Merge branch 'master' of github.com:roundcube/roundcubemail 8 years ago
Aleksander Machniak 8935587a59 Fix bug where contact search menu fields where always unchecked in Larry skin 8 years ago
Aleksander Machniak 5e406f7b7e Disable links list when converting html2text for spellchecking 8 years ago
Aleksander Machniak 78cf9c2e5c Update requirements section 8 years ago
Aleksander Machniak 1da8ffd52b Use "email" over "e-mail" consistently (#5212) 8 years ago
Aleksander Machniak bf3b07aeef Merge branch 'master' of github.com:roundcube/roundcubemail 8 years ago
Aleksander Machniak 7abfe41ab7 Fix bug where getting HTML editor content could steal focus from other form controls (#5223) 8 years ago
Aleksander Machniak 317372f046 Merge pull request #5227 from oGGy990/master
Fix ldap connection use after release in password plugin
8 years ago
Oliver Ney 5f2df36879 Fix ldap connection use after release in password plugin 8 years ago
Aleksander Machniak 7dad859ffa Fix message list multi-select/deselect issue (#5219) 8 years ago
Aleksander Machniak f0fa9324d8 Merge branch 'master' of github.com:roundcube/roundcubemail 8 years ago
Aleksander Machniak 52106ffd39 Fix bug where rcube_contacts::get_record() could return cached result when requested record wasn't found (#5218) 8 years ago
Aleksander Machniak 80eb845253 Make sure width of date selector in search menu is not too big with non-english locales 8 years ago
Aleksander Machniak 5b94c5af08 Fix plugin name in composer.json 8 years ago
Aleksander Machniak 6e4642b12c Enigma: Add enigma_debug option 8 years ago
Bostjan Skufca 12756e2297 Autocomplete: store last searched-for string into separate variable for later consumption
Reason:
Autocompleting person contacts works as expected - ksearch_value is available and passed to triggerEvent.
But with group autocomplete, ksearch_value is reset (to null) and triggerEvent call lacks necessary data.
8 years ago
Bostjan Skufca f919e8ffa6 Autocomplete: change type from 'contact' to 'person' to sync with what is expected from LDAP.
Explanation:
Alternative would be to leave type empty, as it is when contact comes form SQL source.
But this feels overly ambiguous and may cause problems in the future.
8 years ago
Bostjan Skufca 1791c3e3d7 Autocomplete/frontend: provide functions that hook into 'autocomplete_insert' actual search and result data
Reason:
In order to enable development of sophisticated autocomplete algorithms, they will need
to process all the data relevant to autocomplete - what was the search string and which
result was the correct one.

Example to illustrate the need:
Say we are talking about these two people of interest, who are in the address book, among others:
- person 1: Bostjan Skufca <bostjan@a2o.si>
- person 2: Bostjan SkuBIC <bostjan@otherdomain.com>

Our user is used to think about the first person by the first name, "Bostjan", as he is an old friend.
The second one is a colleague at work where people call themselves mostly by surnames, "Skubic" in this case.

Without this data provided to 'autocomplete_insert', there is no way for RC to learn that when our user
enters "bos" in the To: field he thinks about person #1 (Bostjan SkuFCA), and when he starts typing "sku"
he means person #2 (Bostjan SkuBIC).
8 years ago
Bostjan Skufca 05c7d49a37 Autocomplete search: add id and source (addressbook) into resulting contact data array
Two reasons:
- provide it to plugin backend functions that use 'contacts_autocomplete_after' hook
- provide it to frontend

Why to frontend?
If plugin JS adds an 'autocomplete_insert' hook we need to provide it with exact
autocomplete data. Providing it with name and email address only, without pinpointing
exact origin of this autocomplete result, will severely limit learning capabilities of
potential future autocomplete implementations.
8 years ago
Bostjan Skufca a15b2d5998 Autocomplete refactoring: replace variable name '$id' with '$abook_id'
Reason:
Having genericly named variable $id in nested loops makes code unreadable.
Replacing generic name '$id' with '$ENTITIY_id' format removes all ambiguity.
8 years ago
Bostjan Skufca ed55af4aa9 Autocomplete: trigger "contacts_autocomplete_after" hook processing
Provide existing list of contact suggestions as an argument - it might be unclear
now what logic plugin developers decide to implement, but data for that logic
should be provided upfront, and that includes list of suggestions that RC
itself comes up with.

Plugin logic might then replace the list entirely, or just rearrange its entries, or use
part of the list when it runs out of own ideas, or do something entirely different.
8 years ago
Bostjan Skufca 865230e420 Autocomplete: fix undefined variable notice if no addressbook is configured for autocomplete 8 years ago
Aleksander Machniak e2e56261b9 Fix handling of long script/style tags when converting to text 8 years ago
Aleksander Machniak 302aff920c Small code improvement 8 years ago
Aleksander Machniak e2ff7985db Small optimization in sieve script parser 8 years ago
Thomas Bruederli 3b77a54ecd Add version 1.2-rc 8 years ago
Aleksander Machniak a0f38f5fd8 Small code style improvements 8 years ago
Aleksander Machniak e8ab3d96bd Fix converting mail addresses with @www. into mailto links (#5197) 8 years ago
Aleksander Machniak 4bb44c3d90 Enigma: added option to force users to use signing/encryption 8 years ago
Aleksander Machniak d01c06eded CS fixes 8 years ago
Aleksander Machniak 463d07824e Merge pull request #5194 from bostjan/optimization/make-thread-listing-faster
Make rcube_result_thread::revert() faster
8 years ago
Bostjan Skufca 70a8236cd5 mailbox/listing: Make server response for large mailbox listing faster when using threaded view
Symptom
=======
When using roundcube with mailboxes with over 60k messages, list
view was way faster than viewing in threaded view.

Mailbox index view timing:    ~360 ms
Mailbox threaded view timing: ~800 ms

Resolution
==========
Use native PHP array manipulation functions instead of rolling custom
string data reversal implementation using strpos() and substr() in a
'while' loop.

This optimization is already present in index view handler, but was missing
from threaded view.

Results after optimization
==========================
Both average out around ~360 ms response time.
8 years ago
Aleksander Machniak 4fdcd8c9d1 Remove redundant code 8 years ago
Thomas Bruederli 6bebdc5677 Transliterate ticket IDs after migration to Github issues 8 years ago
Thomas Bruederli bd780ce707 Remove localization files from 3rd party plugins 8 years ago
Aleksander Machniak 80cb362b80 Managesieve: Refactored script parser to be 100x faster 8 years ago
Aleksander Machniak 800235f682 Fix compatibility with older PHP versions by not using empty(fn()) 8 years ago
Aleksander Machniak e03c006d0d Merge pull request #5190 from dioubernardo/patch-1
Allow pattern attribute in input
8 years ago
Bernardo Silva c72446a8fc Allow pattern attribute in input
"pattern" included in the list of allowed attributes in the input tag
8 years ago
Aleksander Machniak 215935150e Merge pull request #5189 from seanm/master
Issue #5186: improve comments about ‘password_charset’ setting
8 years ago
Sean McBride 4ca97c3ea4 Issue #5186: improve comments about ‘password_charset’ setting 8 years ago
Kyle Francis 31713805f8 Changed native DOM call to jQuery 8 years ago
Kyle Francis 65225262f6 Merge remote-tracking branch 'origin/master' into compose_focus 8 years ago
Aleksander Machniak 6f2c007d1b CS fixes: Replace use of "bool ? true : false" with just "bool" 8 years ago
Aleksander Machniak 6373fa55be Update changelog 8 years ago
Aleksander Machniak 96c3d84cdd Enigma: Varius fixes and cleanup in code for attaching pubkeys 8 years ago
Aleksander Machniak 4c7ce7bfc9 Merge branch 'guitarmanusa-attach-pgp-key' 8 years ago
Aleksander Machniak ede293946c Merge branch 'attach-pgp-key' of https://github.com/guitarmanusa/roundcubemail-1 into guitarmanusa-attach-pgp-key 8 years ago
Aleksander Machniak 5c253dd59e Fix so SPECIAL-USE assignments are forced only until user sets special folders (#4782)
The old behaviour where SPECIAL-USE has always a prio can be bringed back
by setting lock_special_folders=false and adding it to dont_override.
8 years ago
Kyle Francis 522babb3a3 Implements 'scroll by keyboard #5139' 8 years ago
Kyle Francis 7ce958ecd9 Added attach pubkey checkbox in compose UI, added preferences setting for attach pubkey by default 8 years ago
Kyle Francis a9d399155d Implemented attaching pub PGP key to outgoing messages. 8 years ago
Aleksander Machniak 007c9ddcb0 Enigma: Handle messages with text before an encrypted block (#5149) 8 years ago
Aleksander Machniak 3193a5e5d2 Bump Net_LDAP2 version to 2.2.0 for PHP7 compatibility (#5171)
Note: to install it with composer and PHP7 you'll need PHP 7.0.5.
8 years ago
Aleksander Machniak aba88576ef Update localizations 8 years ago
Aleksander Machniak 7462095f60 Small code improvements 8 years ago
Aleksander Machniak 46f7b70964 Enable reply/reply-all/forward buttons also in preview frame of message/rfc822 8 years ago
Aleksander Machniak e8b6e726f6 Add message menu with viewsource and edit actions in message/rfc822 preview 8 years ago
Aleksander Machniak f0e88f02d5 Remove unused code 8 years ago
Aleksander Machniak d125f864ea Message/rfc822 previewer compatibility with Enigma 8 years ago
Aleksander Machniak 640e5e265d Enigma: Handle encrypted/signed content inside message/rfc822 attachments 8 years ago
Aleksander Machniak 4e6f3019f5 Enigma: Handle encrypted/signed content inside message/rfc822 attachments 8 years ago
Aleksander Machniak aa2486beb3 vcard_attachments: Fix bug where national characters in vCard would be broken on import/display 8 years ago
Aleksander Machniak 414ae36baa vcard_attachments: Fix bug where national characters in vCard would be broken on import/display 8 years ago
Aleksander Machniak a068d0fb70 Small css fixes 8 years ago
Aleksander Machniak ce3105c58f Reply/Reply-All/Forward/Change-format buttons for message/rfc822 preview 8 years ago
Aleksander Machniak 323fa20bc8 Message/rfc822 attachment preview (#5054) 8 years ago
Danilo 1db4c05078 Fix: Set long email addresses
The changes permit to set long email address up to the maximum permissible length.
8 years ago
Aleksander Machniak 05972d7b33 Refer to Github issues instead of Trac 8 years ago
Thomas Bruederli 9361e053b0 Refer to Github issues instead of Trac 8 years ago
Aleksander Machniak 791ee65d2e Fix so contactlist_fields option can be set via config file 8 years ago
Aleksander Machniak ca332d5862 Merge branch 'master' of github.com:roundcube/roundcubemail 8 years ago
Aleksander Machniak 3488a8c44e Use pear repository via secure channel 8 years ago
Aleksander Machniak 1aa5817131 Refactor desktop notifications
- Remove webkitNotifications support, clean up the code
- Unify look and behaviour of notifications in Mail and in Settings
8 years ago
Aleksander Machniak 348ec70f12 Export vCard PHOTO with "ENCODING=b" (instead of "ENCODING=B") as specified in RFC2426 8 years ago
Aleksander Machniak 3a13b5dab8 CS fixes 8 years ago
Aleksander Machniak 0c9e55b0c9 Fix PHP warning when defaults.inc.php is not readable 8 years ago
Aleksander Machniak bf91666621 Revert "Update to jQuery 2.2.1"
This reverts commit 940b966fac.

There are issues with jQuery-UI 1.10 we use and it's actually
too late for such a change now when we want 1.2 release soon.
8 years ago
Aleksander Machniak 9d4e5f5e49 Bump zipdownload plugin version number 8 years ago
Aleksander Machniak 0d09fe8d25 Update changelog 8 years ago
Thomas Bruederli 4a408843b0 Protect download urls against CSRF using unique request tokens (#1490642)
Send X-Frame-Options headers with every HTTP response
8 years ago
Aleksander Machniak d4df3748cf Require Net_Socket >= 1.0.12 (because of timeout=0 bugfix) 8 years ago
Aleksander Machniak ca34ba139e CS fixes 8 years ago
Aleksander Machniak 74a7dd553c Fix datepicker so it is possible to re-open the calendar widget by click (Kolab 5115) 8 years ago
Aleksander Machniak 940b966fac Update to jQuery 2.2.1 8 years ago
Aleksander Machniak b0a8e36930 Fix handling of body parameter in mail compose request 8 years ago
Aleksander Machniak faeeebdc55 Hide DSN option in Preferences when smtp_server is not used (#1490666) 8 years ago
Aleksander Machniak 9ae41d906e Fix unicode-awareness of Base64 encoding implementation in javascript 8 years ago
Zbigniew Szmyd 0b07f37bea LDAP password policy driver files 8 years ago
Zbigniew Szmyd 5322e91825 LDAP password driver for password policy 8 years ago
Zbigniew Szmyd acbc67ea1c Correction to work good with the Net_LDAP2 2.2.0 8 years ago
Aleksander Machniak 8bbb454524 Fix list row selection when provided uid is number not a string 8 years ago
Rotzbua 7b4f71777e add optional security header to .htaccess
actually most widely used optional header
all options only commented, they should be adusted to your intallation /
user environment
8 years ago
Aleksander Machniak a62ff159f0 Performance: Make sure that after contact update we call get_record() only once 8 years ago
Aleksander Machniak d686b57c72 Fix bug where contacts widget in compose could be incorrectly initialized with treelist widget (T998)
Fix typo in command name (list-adresses -> list-addresses)
8 years ago
Aleksander Machniak 89a49dd370 Fix additional_message_headers plugin compatibility with Mail_Mime >= 1.9 (#1490657) 8 years ago
Aleksander Machniak 4c0cb96a48 Enigma: Fix missing html/plain switch on multipart/signed messages (#1490649) 8 years ago
Aleksander Machniak 5d49af37cc Enigma: Disable format=flowed for signed plain text messages (#1490646) 8 years ago
Aleksander Machniak e91c35c534 Fix background color on selected and focused addressbook 8 years ago
Aleksander Machniak 332ffef199 Plugin API: Added addressbook_export hook 8 years ago
Aleksander Machniak 8dc756f319 Fix bug in long recipients list parsing for cases where recipient name contained @-char (#1490653) 8 years ago
Aleksander Machniak c10eae0884 Fix bug where Archive/Junk buttons were not active after page jump with select=all mode (#1490647) 8 years ago
Aleksander Machniak 5a30653024 Enigma: Don't display "bad password" warning when the password wasn't provided yet 8 years ago
Aleksander Machniak 8c626eec8a Cleanup redundant variables 8 years ago
Aleksander Machniak c1a518910a Enigma: Fix bug where signature/decryption info wasn't displayed for some messages 8 years ago
Aleksander Machniak 96d7f79a38 Set also 'extwin' class on body element in error page 8 years ago
Aleksander Machniak 4473dc5588 Merge branch 'master' of github.com:roundcube/roundcubemail 8 years ago
Aleksander Machniak 53fa08d8ae Enigma: Code refactoring with better handling of encrypted-inside-encrypted (e.g. forwarded) and signed+ncrypted messages 8 years ago
Aleksander Machniak 8ef598b883 Fix (again) security issue in DBMail driver of password plugin [CVE-2015-2181] (#1490643)
Unify the C program code with the one used by other drivers.
8 years ago
Aleksander Machniak c9e2ab488e Enigma: Fix handling of encrypted + signed messages (#1490632) 8 years ago
Aleksander Machniak c7af660bfc Fix boundary separator in signed messages 8 years ago
Aleksander Machniak 0e77b6f1b3 Fix regression where xml mode could be used to parse xhtml messages causing empty result 8 years ago
Aleksander Machniak bffca14d96 Exit when imagecreatetruecolor() fails 8 years ago
Aleksander Machniak 22a018d082 Merge branch 'dev-svg' 8 years ago
Aleksander Machniak ed1d212ae2 Improved SVG cleanup code 8 years ago
Aleksander Machniak 55a02bcf56 Add CVE identifier to changelog 9 years ago
Aleksander Machniak bf4a9af567 Update ticket ID 9 years ago
Aleksander Machniak 023d3eb031 Refactor wash_attribs() - fix regressions 9 years ago
Aleksander Machniak 558a6db27e Fix headers encoding when using 'valueof' mode 9 years ago
Aleksander Machniak d5f7490b08 Fix PHP Fatal error: Can't use function return value in write context 9 years ago
Thomas B 66d4ef6e31 Merge pull request #316 from namesco/prevent-blank-contactnames
Ensure roundcube doesn't render contact names as blank
9 years ago
Aleksander Machniak e0481f0ccb Save copy of original .htaccess file when using installto.sh script (1490623) 9 years ago
Aleksander Machniak 72c250ca67 Merge pull request #317 from FrancisRussell/imap-tls
Enable use of TLSv1.1 and TLSv1.2 for IMAP.
9 years ago
Aleksander Machniak 9aaeb23d9d Fix HTML entities encoding in message headers output 9 years ago
Aleksander Machniak a1fdb205f8 Extend rcube_washtml with SVG support 9 years ago
Francis Russell 8f71b164fd Make TLS method for IMAP parameterisable. 9 years ago
Francis Russell 191a6a6805 Enable use of TLSv1.1 and TLSv1.2 for IMAP. 9 years ago
Aleksander Machniak 0bde1c2e4d Fix missing language name in "Add to Dictionary" request in HTML mode (#1490634) 9 years ago
Aleksander Machniak 459003303c Fix initial value of horizontal splitter and page elements 9 years ago
James Buncle fd0244dabf Ensure roundcube doesn't render contact names as blank (when the name is whitespace) 9 years ago
Aleksander Machniak 4e1aa60c16 Make possible to disable authentication via rcube_smtp::connect() arguments (#1490621) 9 years ago
Aleksander Machniak 40d7342dd9 Fix XSS issue in SVG images handling (#1490625) 9 years ago
Aleksander Machniak f04b56f306 Enigma: Enable default signing/encryption on a signed/encrypted draft compose 9 years ago
Aleksander Machniak 39137fe292 CS fixes 9 years ago
Aleksander Machniak b4fc297509 Fix a typo 9 years ago
Aleksander Machniak f8847a913f Fix version number 9 years ago
Aleksander Machniak d72e5afb47 Fix PHP7 warning "session_start(): Session callback expects true/false return value" (#1490624) 9 years ago
Aleksander Machniak f7f512f039 Fixed typo in localization text 9 years ago
Thomas Bruederli 12d389b396 Fix mail view scaling on iOS (#1490551) 9 years ago
Aleksander Machniak 1c2aad89ab Fix .htaccess rewrite rules to not block .well-known URIs (#1490615) 9 years ago
Aleksander Machniak d08dc5bfc5 Fix so drag-n-drop of text (e.g. recipient addresses) on compose page actually works (#1490619) 9 years ago
Aleksander Machniak 10e5192a2b Fix path traversal vulnerability in setting a skin (#1490620) 9 years ago
Aleksander Machniak 6521c20768 Add INBOX to the list of folders only if no filter and no prefix was specified 9 years ago
Aleksander Machniak 3b36bcfb68 Cleanup 9 years ago
Aleksander Machniak 0d9fa7f3dc Remove redundant code 9 years ago
Aleksander Machniak cd219a45dd Fix regression where some message attachments could be missing on edit/forward (#1490608) 9 years ago
Aleksander Machniak c3be175ce7 Fix PDF support detection in Firefox > 19 (#1490610) 9 years ago
Aleksander Machniak be346095a0 Fix handling of message/rfc822 attachments on replies and forwards (#1490607) 9 years ago
Aleksander Machniak bb6002f1a8 Fix also charset encoding of message/rfc822 part bodies (#1490606) 9 years ago
Aleksander Machniak 3296965f41 Force arg_separator in http_build_query() 9 years ago
Aleksander Machniak 87cb24d873 Don't add redundant URL arguments to logged error messages 9 years ago
Aleksander Machniak f51145572a Merge branch 'master' of github.com:roundcube/roundcubemail 9 years ago
Aleksander Machniak 6463b662ca Fix regression in displaying contents of message/rfc822 parts (#1490606) 9 years ago
Aleksander Machniak faacb9d30b Update changelog 9 years ago
Aleksander Machniak 97aa984b29 Optionally throw 404 error when contact photo wasn't found 9 years ago
Aleksander Machniak 40212452af Add some CVE identifiers 9 years ago
Aleksander Machniak 69a1e4f7b1 rcube_parse_host() -> rcube_utils::parse_host() 9 years ago
Aleksander Machniak 9f1f754daf CS fixes 9 years ago
Aleksander Machniak 2d40b43faa Update .htaccess rules for Apache 2.4 9 years ago
Aleksander Machniak cbe701ac4a Fix rcube_utils::words_match() to work with mixed/invalid/binary content (T844) 9 years ago
Aleksander Machniak ce7bd03b1d Bump version number 9 years ago
Aleksander Machniak 1912d8c62b Fix invalid LDAP query in ACL user autocompletion (#1490591) 9 years ago
Aleksander Machniak 7476410a04 Add missing deprecation warning 9 years ago
Aleksander Machniak 8ad6a98473 Remove redundant .gitignore files 9 years ago
Aleksander Machniak a8848b16c4 Tweak the code to not violate ECMASCRIPT3 syntax 9 years ago
Thomas Bruederli 458a6b26e8 Load bc.inc in script startup 9 years ago
Thomas Bruederli 32695c333c Restore bc.inc which now logs a warning when calling deprecated functions 9 years ago
Thomas Bruederli 310d4939ba Tweak recently added encryption functions to not violate ECMASCRIPT3 syntax 9 years ago
Thomas B 0173302ce0 Merge pull request #310 from hebbet/patch-1
Open exceptions link in new Tab
9 years ago
Aleksander Machniak 8271597836 Use ternary operator where applicable 9 years ago
hebbet ed522ee83a Open exceptions link in new Tab
open the exceptions link in a new tab, as it is not rendered in Chrome on https-Sites, also change link to https.
9 years ago
Thomas Bruederli 648963afda Added Talossan language to index 9 years ago
Thomas Bruederli e257b830a1 Synchronize localizations from Transifex 9 years ago
Aleksander Machniak 162bc85be9 Add support for :from parameter in vacation action (patch from Michele Locati) 9 years ago
Aleksander Machniak 7e3298753a Use ternary operator where aplicable 9 years ago
Aleksander Machniak a15d877ba8 Added brute-force attack prevention via login rate limit (#1490566) 9 years ago
Aleksander Machniak 7caa9f5f50 Fix error on dragging when search in treelist is active 9 years ago
Aleksander Machniak 454b0b1ca9 Remove deprecated rcmail and rcube_imap methods 9 years ago
Aleksander Machniak 9234903287 Fix HTML sanitizer to skip <!-- node type X --> in output (#1490583) 9 years ago
Aleksander Machniak 3b0318ca3e Fix race-condition in setting current page between list and getunread requests 9 years ago
Aleksander Machniak 038543ea4d Update changelog 9 years ago
Aleksander Machniak bcd3799954 Fix redundant blank lines when using HTML and top posting (#1490576) 9 years ago
Aleksander Machniak 2aa9ee56fd Fix so disabling emoticons plugin really removes emoticons button from HTML editor 9 years ago
Aleksander Machniak eb721e35b2 Update to TinyMCE 4.2 9 years ago
Aleksander Machniak bc3518577d Fix some more Q -> rcube::Q 9 years ago
Aleksander Machniak 077abd6eb3 Merge pull request #305 from dsoares/master
Replace deprecated call to Q within array_map()
9 years ago
dsoares 234fd19505 Replace deprecated call to Q within array_map() 9 years ago
Aleksander Machniak 74ce01efc7 Q() -> rcube::Q() 9 years ago
Aleksander Machniak eca19d65b5 Optimized some regular expressions 9 years ago
Aleksander Machniak 37e9bd4fb8 Fix testing attachments plugins after recent change that prevents from using more than one 9 years ago
Aleksander Machniak 62306b8c48 Merge pull request #302 from normalnorge/master
fixed typo in comment
9 years ago
Normal Norway 707712b939 fixed typo 9 years ago
Aleksander Machniak 8f8beafd56 Use .get_label() consistently (instead of .gettext()) 9 years ago
Aleksander Machniak 5d84dd6de5 Deduplicate code of http_post() and http_request(), add http_get() alias 9 years ago
Aleksander Machniak b0349c988f Make sure there's only one attachments plugin enabled 9 years ago
Aleksander Machniak 2ff3385788 Fix warning when enchant_broker_list_dicts() does not return an array 9 years ago
Aleksander Machniak a5c03db798 Security: Added options to validate username/password on logon (#1490500) 9 years ago
Aleksander Machniak c1bbf0d0b6 After failed login wait a second to slow down brute-force attacks (#1490549) 9 years ago
Aleksander Machniak fddfd8e6d7 Remove backward compatibility "layer" of bc.php (#1490534) 9 years ago
Thomas Bruederli e1126a3056 Fix Mailvelope container resizing after changes in 82dcbb74 9 years ago
Aleksander Machniak 3ac29fb53b Require Crypt_GPG ~1.4.0 9 years ago
Aleksander Machniak 91dc7fabbc Small improvements in HTML to text conversion.
Better handling of <body> and trailing spaces, and </p><div> or <br><div>.
9 years ago
Aleksander Machniak 92bcb940d4 Fix bug where HTML messages with invalid/excessive css styles couldn't be displayed (#1490539)
Technically speaking we remove the whole CSS content when it has more than 5k lines.
9 years ago
Aleksander Machniak fe8ff85d7e Move skin-specific code for compose encryption button to the skin 9 years ago
Aleksander Machniak f1e7bbd1bd Fix bug where message preview was unintentionally reset on check-recent action (#1490563) 9 years ago
Aleksander Machniak 570f43c874 Don't load enigma and managesieve css where it's not needed 9 years ago
Aleksander Machniak d9ff47b011 Don't use deprecated (soon) jQuery .bind() and .unbind() methods 9 years ago
Aleksander Machniak c8c4cafb1f Add possibility to define date format in write operations for ldap attributes (#1488741) 9 years ago
Aleksander Machniak bb1ed2740d Display attachment size in compose (#1484774) 9 years ago
Aleksander Machniak d560916065 Added possibility to drag-n-drop attachments from mail preview to compose window 9 years ago
Aleksander Machniak 4d369549bd Merge pull request #301 from hsz/master
Fixed dovecot and samba encryption - (invalid variables names)
9 years ago
hsz ed4f659a76 Fixed dovecot and samba encryption - (invalid variables names) 9 years ago
Aleksander Machniak 5802e08e48 Mail messages searching with predefined date interval (T103) 9 years ago
Aleksander Machniak c852426bd4 Enigma: Display all usage flags of the subkey 9 years ago
Aleksander Machniak a03233ceba CS fixes 9 years ago
Aleksander Machniak 1484d5fb7f Fix resetting search input events when the treelist is re-initialized, some CS improvements 9 years ago
Aleksander Machniak e524680a13 Fix 'last' property of search event 9 years ago
Aleksander Machniak 13eb9bdc24 Enigma: Display complete key information (subkeys, user IDs) 9 years ago
Aleksander Machniak 354cff8b26 Some more CS fixes 9 years ago
Aleksander Machniak 7fb0aedc9b Fix fetchMIMEHeaders() so it really works with multiple parts, various CS fixes 9 years ago
Aleksander Machniak b813011902 Remove unused property 9 years ago
Aleksander Machniak 85f4209074 Code improvements: CS fixes, improved internal cache cleanup on folder selection, removed redundant cache 9 years ago
Aleksander Machniak aada285660 Simplify change_subscription() code, removed unused vars 9 years ago
Aleksander Machniak 6a94f69bd1 Remove code for Mail_mime<1.9, we already require Mail_mime-1.10 for other reasons 9 years ago
Aleksander Machniak 2a6cf5bb0e Fix responses list update issue after response name change (#1490555) 9 years ago
Aleksander Machniak 0389faa327 PHP7: Fix "mktime(): You should be using the time() function instead" warning 9 years ago
Aleksander Machniak e9ca5e0655 Fix so database_attachments::cleanup() does not remove attachments from other sessions (#1490542) 9 years ago
Aleksander Machniak 72b281ed84 Update mail toolbar icons for legacy browsers 9 years ago
Aleksander Machniak 7fe87bba24 Mailvelope integration with classic skin 9 years ago
Aleksander Machniak 14b8b4def4 Remove also old .htaccess file that is not used anymore (#1489980) 9 years ago
Aleksander Machniak 46a3a5a1ab Don't use password inputs in Installer where config is handled 9 years ago
Aleksander Machniak 90c82ebf13 Clarify DSN for SQLite on Windows (#1490547) 9 years ago
Aleksander Machniak 2c6951b9cb Add hint about configuration 9 years ago
Aleksander Machniak 0ee57208b3 Add possibility to set PDO::ATTR_PREFETCH and PDO::ATTR_TIMEOUT via DSN string 9 years ago
Aleksander Machniak 1b61a48eec Get rid of mb_check_encoding() before mb_convert_encoding() for better performance, CS fixes 9 years ago
Aleksander Machniak 83345af059 Log charset conversion warning only when no function was found, not when the string was invalid 9 years ago
Aleksander Machniak 7d71c48952 s/RCMAIL_VERSION/RCUBE_VERSION/ 9 years ago
Aleksander Machniak 2940109391 Update changelog 9 years ago
Aleksander Machniak 82dcbb7488 Fix various issues in Mailvelope integration (#1490533) 9 years ago
Aleksander Machniak 7bbb86f78a Session read handler must return a string in PHP7 9 years ago
Aleksander Machniak b2b9b591ce Fix handling random_bytes() errors in PHP 7.0.0RC3 9 years ago
Aleksander Machniak 2368ab91c2 Fix pixel issue on Encrypt button 9 years ago
Thomas Bruederli b95a6d8f41 Disable some toolbar buttons if Mailvelope editor is active (#1490533) 9 years ago
Thomas Bruederli 0b6a01380b Distinguish encryption toolbar buttons (Mailvelope and Enigma) 9 years ago
Aleksander Machniak 8c1c4fd852 We require Mail_mime-1.10.x 9 years ago
Aleksander Machniak 392ededc71 Enigma: Enable encryption features on message print page 9 years ago
Aleksander Machniak df0b4f3437 Make sure an email address is valid when replacing it with mailto: link 9 years ago
Aleksander Machniak 07850aacbf Move some more entries under release 1.1.3 mark 9 years ago
Thomas Bruederli b7f4b99edd Update changelog 9 years ago
Thomas Bruederli db390a27fb Do not tokenize search string when querying in strict mode (#1490504) 9 years ago
Aleksander Machniak 1459f88164 Enigma: Add option to disable encryption/signing features 9 years ago
Aleksander Machniak cffe97eb6e CS improvements + some doc 9 years ago
Aleksander Machniak 4cd087ea2e Fixed mailvelope-generated messages structure (required Mail_Mime-1.10.0) 9 years ago
Aleksander Machniak a8510bc5ca Merge pull request #297 from Enclavet/master
Enigma: fix storing password for whole session
9 years ago
Aleksander Machniak e250f00d90 Fix PHP warnings when sending mailvelope-encrypted mail 9 years ago
Aleksander Machniak 8716fca0d0 Small improvements 9 years ago
Enclavet 1fdee845d5 Enigma: fix storing password for whole session 9 years ago
Aleksander Machniak b87a794348 Enigma: don't show encrypted part on attachments list, we display its content already 9 years ago
Aleksander Machniak fef8537adb Improved multi-folder search performance on sort order change or list page change
by proper index serialization and skipped redundant sorting
9 years ago
Aleksander Machniak 8e5c443c7b CSS improvements on message print and message headers table 9 years ago
Thomas Bruederli f7f75ff7d1 Unify detection of pgp/mime message part 9 years ago
Thomas Bruederli f189d72943 Merged branch 'dev-mailvelope' 9 years ago
Aleksander Machniak 91ef2c812a Small code improvement 9 years ago
Aleksander Machniak e85bbc9e9c random_bytes() can throw an exception in some cases, since PHP 7.0.0rc3 9 years ago
Aleksander Machniak 77be69fa25 Fix issue where Content-Length of some attachments could be set to wrong value causing browser errors (#1490482) 9 years ago
Aleksander Machniak 63e7937d02 Change so rcube_message class does not depend on $_GET parameters 9 years ago
Aleksander Machniak c49234bd78 Fix bug where clicking date column with 'arrival' sorting would switch to sorting by 'date' (#1490126) 9 years ago
Aleksander Machniak dd7db21797 Fix XSS issue in drag-n-drop file uploads (#1490530) 9 years ago
Aleksander Machniak d3823fe0a0 Use Net_SMTP-1.7.x and Net_Sieve-1.5.x (Roundcube fork), update changelog (#1490416) 9 years ago
Aleksander Machniak 26086981a2 Improve randomness of security tokens (#1490529) 9 years ago
Aleksander Machniak f75bc5c24b Use random security tokens instead of hashes based on encryption key (#1490404) 9 years ago
Aleksander Machniak 61ab1049e2 Move crypt_gpg to "require" section 9 years ago
Aleksander Machniak e4c66080a8 Improved encrypt/decrypt methods with option to choose the cipher_method (#1489719) 9 years ago
Aleksander Machniak fdbb1c95ea Fix missing HTTP_X_FORWARDED_FOR address in generated Received header 9 years ago
Aleksander Machniak 91018f38d4 Fix so In-Reply-To header is set also for MDN receipts (#1490523) 9 years ago
Aleksander Machniak b922995297 CS fixes 9 years ago
Aleksander Machniak 25b30a78b7 Merge pull request #294 from syzop/password_crypt_rounds
Add $config['password_crypt_rounds']
9 years ago
Aleksander Machniak 692902804a Bump version number 9 years ago
Aleksander Machniak 211929876b Enigma: GPG keys export 9 years ago
Aleksander Machniak 4c53e78915 Fix printing required ini options values in error message 9 years ago
Bram Matthys c10f97740a Add $config['password_crypt_rounds']: this specifies the number of rounds
to be used for the sha256 and sha512 crypt hashing algorithms.
9 years ago
Aleksander Machniak e2f605d44d Fallback to C locale 9 years ago
Aleksander Machniak 3c29c7e858 Fix various issues with Turkish (and similar) locales (#1490519) 9 years ago
Aleksander Machniak 399a2d68b6 Make optional adding of standard signature separator - sig_separator (#1487768) 9 years ago
Aleksander Machniak 427ab2f393 Optimize folder_size() on Cyrus IMAP by using special folder annotation (#1490514) 9 years ago
Aleksander Machniak 5eb9c70b60 Added method to determine IMAP server vendor, for future use 9 years ago
Aleksander Machniak 348c53b136 Add example of setting CSP's no-referer policy 9 years ago
Aleksander Machniak 4d36da83b2 Fix support for Mozilla-based browsers, e.g. Pale Moon (#1490517) 9 years ago
Aleksander Machniak 67fac374a3 Fix so gc.sh script removes also expired sessions from sql database (#1490512) 9 years ago
Aleksander Machniak c4daf3f14f Fix regression in converting signatures to text, fixed PHP warning in html2text() call 9 years ago
Aleksander Machniak 86b241df63 CS fixes 9 years ago
Aleksander Machniak 4ceff8f353 Make optional hidding of folders with name starting with a dot - imap_skip_hidden_folders (#1490468) 9 years ago
Aleksander Machniak 6ca1e6add1 Add option to enable HTML editor always, except when replying to plain text messages (#1489365) 9 years ago
Aleksander Machniak 87d6d214f9 Fix disabled_buttons option 9 years ago
Aleksander Machniak a63f14ec40 Emoticons-related code refactoring
- Emoticons: All emoticons-related functionality is handled by the plugin now
- Emoticons: Added option to switch on/off emoticons in compose editor (#1485732)
- Emoticons: Added option to switch on/off emoticons in plain text messages
- Plugin API: Added disabled_plugins an disabled_buttons options in html_editor hook
- Plugin API: Added html2text hook
9 years ago
Aleksander Machniak 3516b02344 Fix so adding CC/BCC recipients from the sidebar unhides compose form fields in Classic skin (#1490472) 9 years ago
Aleksander Machniak 8297ea1dcf Fix handling of plus character in mailto: links (#1490510) 9 years ago
Aleksander Machniak 567d5a01cc Fix attachments list margin in full-preview (after last commit) 9 years ago
Aleksander Machniak 1656eb3f51 Fix bug where message content could overlap attachments list in Larry skin (#1490479) 9 years ago
Aleksander Machniak f8f91aa1ba Installer: Add button to save generated config file in system temp directory (#1488149) 9 years ago
Aleksander Machniak bb78170223 Fix typo 9 years ago
Aleksander Machniak f00e1f5333 CS fixes 9 years ago
Aleksander Machniak bd82e9551f Fix so css of one html part does not apply to other text parts on message display (#1490505) 9 years ago
Thomas Bruederli af3569d43a Update changelog 9 years ago
Thomas Bruederli 7417893c22 Fix closing of nested menus (#1490443) 9 years ago
Aleksander Machniak 60ab554003 Remove common subject prefixes Re:, Re[x]:, Re-x: on reply (#1490497) 9 years ago
Aleksander Machniak 5ee3e2ecef Merge branch 'master' of github.com:roundcube/roundcubemail 9 years ago
Aleksander Machniak a0dfcb14a8 Enigma: Optional server-side key generation 9 years ago
Aleksander Machniak e612bdefb1 Fix dependencies version numbers where ~ is used 9 years ago
Aleksander Machniak 72a3b29fc5 Lock dependencies versions 9 years ago
Aleksander Machniak 6f249b0e38 Change code so versions of Mail_mime before and after 1.9.0 are supported 9 years ago
Aleksander Machniak 3fa3f156ca Don't display not-sent-warning in compose page on save-pref action 9 years ago
Aleksander Machniak c4383b5f3d Fix selecting a folder on collapse when any subfolder is selected 9 years ago
Aleksander Machniak 284aac2883 Really make base64 encoding unicode-aware 9 years ago
Aleksander Machniak c16ac71416 Fix base64.encode/decode for unicode characters - use fallback if btoa/atob functions fail 9 years ago
Aleksander Machniak 7a42173a16 Simplify rcube_utils::check_ip() 9 years ago
Aleksander Machniak 6b31846c43 Fix IPv6 address validation on PHP with disabled IPv6 support 9 years ago
Aleksander Machniak c360e178c4 Fix so input field (e.g. search box) does not loose focus on list load (#1490455) 9 years ago
Aleksander Machniak cb4149cc6c Merge branch 'master' of github.com:roundcube/roundcubemail 9 years ago
Aleksander Machniak d5501a8bb2 Enigma: Client-side keys generation (with OpenPGP.js)
Fixed deletion of key pairs (error: Private key must be deleted before public key can be deleted)
9 years ago
Aleksander Machniak 39813e961a Show error message from CPanel API on password change failure (#1490144) 9 years ago
Aleksander Machniak f4c512336d Fix "washing" of style elements wrapped into many lines 9 years ago
Thomas B. cf69daf896 Merge pull request #288 from ThijsFeryn/fnnonempty
Emptying the display name when the display name is the main e-mail ad…
9 years ago
Thomas Bruederli 6c69e3d3ed Add localization alias for tr => tr_TR 9 years ago
Aleksander Machniak 559e5d7bd4 Fix unintentional error_reporting change 9 years ago
Aleksander Machniak 4c8c5c92fb Merge branch 'master' of github.com:roundcube/roundcubemail 9 years ago
Aleksander Machniak 1b39d9a6c7 PHP7: Fixed some E_WARNING errors that previously were E_STRICT 9 years ago
Aleksander Machniak 36bd93f138 PHP7: Fixed some E_WARNING errors that previously were E_STRICT 9 years ago
Aleksander Machniak b3e9764c31 Don't use packagist, fix Mail_mime package, update Net_SMTP 9 years ago
Aleksander Machniak 7d49328296 Code improvements and compat. with Mail_mime >= 1.9.0 9 years ago
Aleksander Machniak a7efdd7c5d Make Mail_mime>=1.9.0 a requirement, fix compat. errors 9 years ago
Aleksander Machniak 1b8ca08e5b Added GSSAPI/Kerberos authentication plugin - krb_authentication 9 years ago
Aleksander Machniak 92649075ec CS fixes 9 years ago
Aleksander Machniak 0868c2e841 Make sure list page is never set to 0 (#1490458)
This should fix the issue where after message move wrong message was
added to the list and the list counter was invalid.
9 years ago
Aleksander Machniak 5ed8ade763 Fix bug where some plugins could be initialized more than one time 9 years ago
Aleksander Machniak 93e64008a6 Small code improvements 9 years ago
Aleksander Machniak 8dd1ae8729 Hide "About" link on error page, it does not work anyway 9 years ago
Aleksander Machniak 031a40c5a5 Merge pull request #289 from peknur/master
Thunderbird (fi_FI) support for csv2vcard
9 years ago
Pekka Nurmi 4f6b660433 Thunderbird (fi_FI) support for csv2vcard 9 years ago
Aleksander Machniak 08bb20f261 Don't use deprecated functions/constants (from bc.inc) 9 years ago
Aleksander Machniak 9fc6918420 Disable links list generation on html-to-text conversion of identities or composed message (#1490437) 9 years ago
Aleksander Machniak 2d73205ec8 Skip rcube_ldap_generic test if Net_LDAP3 is not available 9 years ago
Aleksander Machniak 8449e936f3 Fix removing signature when switching to identity with an empty sig in HTML mode (#1490470) 9 years ago
Aleksander Machniak d5f6d655da Workaround TinyMCE issue with <p>&nbsp;</p> sequence (#1490463) 9 years ago
Thomas Bruederli 2965a981b7 Allow to search and import missing PGP pubkeys from keyservers using Publickey.js 9 years ago
Thomas Bruederli bcbc459d2c Fix regex quoting 9 years ago
Aleksander Machniak 4b72a1f498 Fix error when using back button after sending an email (#1490009) 9 years ago
Aleksander Machniak 3d0747957e Fix some javascript errors in rare situations (#1490441) 9 years ago
Aleksander Machniak 8b40575b5c Fix wrong positioning of message list header on page scroll in Webkit browsers (#1490035) 9 years ago
Aleksander Machniak c21f95f626 Fix bug where new messages weren't added to the list in search mode 9 years ago
Aleksander Machniak 6c7be218f7 Revert create_folder() behaviour change where the method didn't fail if folder already existed.
This should not be the default behaviour. It could likely
become an optional functionality, however we should keep the method simple.
9 years ago
Aleksander Machniak 0c8794c94f Use in_array_nocase() also for \\Noselect flag check (#1490466) 9 years ago
Aleksander Machniak 9d78c68cbf Fix so imap folder attribute comparisons are case-insensitive (#1490466)
+ make in_array_nocase() much faster for ASCII strings
9 years ago
Aleksander Machniak 8b0d817919 Fix draft removal after a message is sent and storing sent message is disabled (#1490467) 9 years ago
Thomas B. 1ce32a4622 Merge pull request #287 from swarren83/patch-1
Add ca-certificates package
9 years ago
ThijsFeryn 58f6f19505 Emptying the display name when the display name is the main e-mail address contradicts lines 731 till 734 9 years ago
Aleksander Machniak 252cc4c4ac Password: Allow temporarily disabling the plugin functionality with a notice 9 years ago
Aleksander Machniak b71eef6d7d Don't use private properties of Net_SMTP object 9 years ago
Shawn Warren 3610375aea Add ca-certificates package
Fixes "Connection to storage server failed." error when running roundcube with php 5.6+.
9 years ago
Aleksander Machniak 9335f9cede Reset internal cache index in close() 9 years ago
Aleksander Machniak 602d7422df Fix bug where some messages in multi-folder search couldn't be printed/downloaded (#1490426) 9 years ago
Aleksander Machniak 8bed5e0151 Fix regression where compose editor mode was set incorrectly 9 years ago
Aleksander Machniak 3db9db1058 Update to TinyMCE 4.1.10 (#1490405) 9 years ago
Aleksander Machniak 19246792c6 Fix so *-request@ addresses in Sender: header are also ignored on reply-all (#1490452) 9 years ago
Aleksander Machniak e2bceaefe6 Support more secure hashing algorithms for auth cookie - configurable by PHP's session.hash_function (#1490403) 9 years ago
Aleksander Machniak 7185736f39 Use jQuery's .on() instead of a deprecated .load()/.unload() 9 years ago
Aleksander Machniak 843643b1bd Fix multi-folder search result sorting by arrival date (#1490450) 9 years ago
Thomas B. b196d0a9a2 Merge pull request #285 from alunduil/dockerfile/fix-sed-statement
use alternate separator in sed statement
9 years ago
Aleksander Machniak 212e332cef Get rid of array_walk() when simple foreach() can be used 9 years ago
Aleksander Machniak d2890372c1 Fix Fatal error after last commit 9 years ago
Aleksander Machniak 6a8c4fc73b Fix issue when first search() argument is not an array 9 years ago
Aleksander Machniak 8447bae77c Require Mbstring and OpenSSL extensions (#1490415) - remove redundant code 9 years ago
Aleksander Machniak f7427f151e Get rid of Mail_mimeDecode package dependency (#1490416) 9 years ago
Aleksander Machniak 9aae1b7fc3 Fix so microseconds macro (u) in log_date_format works (#1490446) 9 years ago
Alex Brandt 96832a906f use alternate separator in sed statement
hub had a problem with the quotes in the sed expression so rather than
worry about it, I've dropped the problem completely.  The double quotes
don't mask the slash in the path for cat.  Thus, using a different
separator removes the problem of a truncated expression.
9 years ago
Thomas B. 1e3d637c70 Merge pull request #284 from prashantjois/master
full path to cat needs to specified in Dockerfile
9 years ago
prashant 521bea4bd8 Merge branch 'master' of https://github.com/roundcube/roundcubemail
Conflicts:
	Dockerfile
9 years ago
Aleksander Machniak 56a4e1512c Fix a mistake in last small refactoring which broke identity selection 9 years ago
Thomas Bruederli 7066de6634 Remove package spec as Net_SMTP is now available via packagist.org 9 years ago
Aleksander Machniak 1414e3b6f8 Small refactoring to make some code testable 9 years ago
Aleksander Machniak 1c861df079 Fix some plugins for use without rcmail class 9 years ago
Aleksander Machniak a567d85bf9 Fix self-reply detection issues (#1490439) 9 years ago
Thomas B. c7df0d9e90 Merge pull request #283 from alunduil/fix-dockerfile
drop /html from DocumentRoot
9 years ago
Aleksander Machniak 25c8fe4eeb Fix handling of non-break spaces in html to text conversion (#1490436) 9 years ago
Aleksander Machniak b92a66b3ee Make has_(html|text)_part and first_(html|text)_part methods consistent in arguments and functionality 9 years ago
Aleksander Machniak 36a7f57345 Modify rcube_smtp::send_mail() so it is possible to send message by
specifying only the message stream no headers, it's for cases when
the stream already contains a complete message.
9 years ago
Aleksander Machniak ff40683404 Fix so links with href == content aren't added to links list on html to text conversion (#1490434) 9 years ago
Aleksander Machniak d67d5d921e Fix so plain text signature field uses monospace font (#1490435) 9 years ago
Prashant Jois e8e1032023 full path to cat needs to specified in order for this to work 9 years ago
Aleksander Machniak 26a00e76be Fix race-condition in saving user preferences and loading plugin config (#1490431) 9 years ago
Alex Brandt 9efbd8f92b drop /html from DocumentRoot
debian:8.0 also changed the default DocumentRoot location and the sed
statement needed to be updated to reflect this.
9 years ago
Aleksander Machniak 8b25622c75 Describe difference between dovecotpw and doveadm-pw (#1490423) 9 years ago
Aleksander Machniak 2b15b6554f Unlock Mail_mimeDecode version, pear-core-minimal vs. pear dependency issue is fixed by requires order change 9 years ago
Aleksander Machniak 8e4dc03867 Fix unintentional messages list page change on page switch in compose addressbook (#1490427) 9 years ago
Aleksander Machniak a79e43a483 Remove redundant folder name from mail preview url 9 years ago
Aleksander Machniak 04a6889246 Fix bug where some messages in multi-folder search couldn't be opened (#1490426) 9 years ago
Thomas B. a26cb87d6c Merge pull request #281 from alunduil/fix-dockerfile
Update Dockerfile for debian:8.0
9 years ago
Alex Brandt 3c8b10f242 Update Dockerfile for debian:8.0
The latest import for the Dockerfile began having failures due to apache
configuration changes in debian.  This update fixes those failures and
pins the base debian image to avoid these issues until we need to update
debian itself.
9 years ago
Aleksander Machniak 58c2798fae Implemented password prompt when entering compose page of encrypted message 9 years ago
Aleksander Machniak a958748947 CS fixes 9 years ago
Aleksander Machniak 10044b9033 Fix Compose action in addressbook for results from multiple addressbooks (#1490413) 9 years ago
Aleksander Machniak a7b0426571 Merge pull request #269 from petrkle/strikethrough
Strikethrough disabled sieve filters
9 years ago
Aleksander Machniak ed5a7b48c0 Merge pull request #277 from jobisoft/master
Allow to override password, but keep username (auth_cid/auth_pw)
9 years ago
Aleksander Machniak e2002741c5 Update to jQuery 2.1.4 (#1490406) 9 years ago
Aleksander Machniak 42f8abac46 Fix "Importing..." message does not hide on error (#1490422) 9 years ago
Thomas Bruederli c5ca818118 Adapt washtml test to pass with different versions of iconv (i.e. on CentOS7) 9 years ago
Aleksander Machniak d18654f81a Merge pull request #279 from dhoffend/remove-testcode
remove debug test code
9 years ago
Daniel Hoffend 53ccaa1a0f remove debug test code 9 years ago
Thomas Bruederli babc30c4f2 Add 'compose-encrypted' command later if Mailvelope API is detected 9 years ago
Thomas Bruederli 3167e58ff9 Pass encrypted draft and reply messages to Mailvelope editor; add toolbar icon for encryption mode toggeling 9 years ago
Thomas Bruederli a612c59a0f Fix composer.json update routine 9 years ago
Thomas Bruederli 7eefdc8149 Adapt charset cleanup tests to pass with different versions of iconv propucing slightyl different output 9 years ago
Thomas Bruederli 40d152cfdc Make encrypted pgp/mime message composition work 9 years ago
Aleksander Machniak b782815dac Fix XSS vulnerability in _mbox argument handling (#1490417) 9 years ago
Aleksander Machniak 9877f898d8 Update changelog 9 years ago
Aleksander Machniak c044d301ea Fix blank image in html_signature when saving identity changes (#1490412) 9 years ago
Aleksander Machniak 8d7be51996 Fix replacing :$, :-$, O:) and O:-) with emoticons (#1490408, #1490409) 9 years ago
Aleksander Machniak 1cb6e91e99 Merge branch 'master' of github.com:roundcube/roundcubemail 9 years ago
Aleksander Machniak 3cc6ec573d Make password encryption algorithms available for all drivers (#1490134)
...via password::hash_password() method and password_algorithm option.
Add %P and %O macros for password_query in favor of %c, %d, %n and %q.
9 years ago
Thomas Bruederli d375b20225 Suppress E_DEPRECATED errors after change in [4ab77dd1] 9 years ago
Thomas Bruederli 4ab77dd13e Check for PEAR class before accessing it. With new composer modules this isn't necessary in the include path anymore 9 years ago
Thomas Bruederli 7b8a0af1c8 Add toolbar button to switch to Mailvelope encryption editor 9 years ago
Thomas Bruederli 9311fea09b Add utility functiion to get an elemet's text content also when running tests in PhantomJS 9 years ago
Thomas Bruederli 1cd3762b0d Start integrating the Mailvelope browser extension via its API.
- Embed Mailvelope message container for encrypted message text and full pgp-mime messages
- Prepare to embed the Mailvelope editor for composing encrypted messages (with attachments)
9 years ago
Aleksander Machniak 8042e13af6 Add --config and --type options to moduserprefs.sh script (#1490051) 9 years ago
Aleksander Machniak 86e97e8d50 Create groups for multi-address contacts (#1487858) 9 years ago
Aleksander Machniak 09c2520e20 CS fixes 9 years ago
Aleksander Machniak a84f0b65dc Fix undefined variable use after recent changes (#1490401) 9 years ago
Aleksander Machniak 3994b3a26c Installer: Use openssl_random_pseudo_bytes() (if available) to generate des_key (#1490402) 9 years ago
Thomas Bruederli 71aa41e162 Updated Changelog 9 years ago
Thomas Bruederli 5e97294372 Add new plugin hook 'identity_create_after' (#1490358) 9 years ago
Aleksander Machniak 0c08b04778 Fix issues when using moduserprefs.sh without --user argument (#1490399) 9 years ago
Aleksander Machniak 1c8f845637 Add notes about sudo setup (#1490203) 9 years ago
Aleksander Machniak 59d11dce33 Small code improvement 9 years ago
Thomas Bruederli 68ca963319 Use the right syntax for group assignments 9 years ago
Thomas Bruederli b5f64294a8 Tag more tests with @mbstring 9 years ago
Thomas Bruederli 0bfc862283 Specify test groups for inclusion/exclusion 9 years ago
John Bieling c3a6068869 Merge pull request #1 from jobisoft/jobisoft-patch-auth_pw
Allow to override password, but keep username (auth_cid/auth_pw)
9 years ago
John Bieling 6f41f0069a Allow to override password, but keep username (auth_cid/auth_pw)
There is a managesieve server from afterlogic, which allows to authenticate by providing a "master password" for any given username. This patch allows to use the auth_pw config option to make this work (auth_cid remains null)
9 years ago
Aleksander Machniak c4ad7edd53 Fix font artifacts in text2html conversion (#1490353)
Use white-space:nowrap elements instead of unicode word-joiner character
9 years ago
Aleksander Machniak b3bf9c88dc Fix attached file path unsetting in database_attachments plugin (#1490393) 9 years ago
Aleksander Machniak 03aa84f784 Fix bug where some files could have "executable" extension when stored in temp folder (#1490377) 9 years ago
Aleksander Machniak df10bd5f2c Fix bug where imap_conn_options were ignored in IMAP connection test (#1490392) 9 years ago
Aleksander Machniak b120d42f5b Improved cache index changes detection (again) 9 years ago
Aleksander Machniak 044c1a0523 Simplified code + some CS fixes 9 years ago
Thomas Bruederli 91f2171e85 Use the right properties from rcube_db::parse_dsn() result 9 years ago
Thomas Bruederli 2fece8372e Allow selenium tests to use explicit login credentials 9 years ago
Aleksander Machniak 652e11f82e Fix missing index update after write() call 9 years ago
Aleksander Machniak 46d316b9c5 Fix bug where database_attachments_cache setting was not working 9 years ago
Aleksander Machniak b1e35a685c Performance: Improve changes detection, so we update index only if needed 9 years ago
Aleksander Machniak 11d5e7c100 Implemented memcache_debug also for session operations 9 years ago
Thomas Bruederli 0d4d43375c Support tests running with an sqlite database 9 years ago
Aleksander Machniak 9ed8584c3e Count memcache/apc debug lines 9 years ago
Aleksander Machniak fff8e0f2ae Fix possible memcache/apc cache data consistency issues (#1490390)
And removed unused code
9 years ago
Thomas Bruederli 28b1cb04b6 Add more utility functions to prepare the IMAP account used for testing 9 years ago
Aleksander Machniak 247b845a8e Workaround possible issue where some keys were ignored when deleting cached entries
by key name prefix and keys index is in inconsistent state (does not contain all keys)
9 years ago
Aleksander Machniak 44708ec647 Implemented memcache_debug and apc_debug options for cache operations tracking 9 years ago
Thomas Bruederli f7c5f44ffb Populate IMAP test account with sample message and test its listing in Selenium tests 9 years ago
Thomas Bruederli 585ee9e181 Improve directory protection for Apache 2.4 9 years ago
Thomas Bruederli 012555c1ce Add .htaccess files to deny access to config, temp, logs + describe how to protect access to these directories in the INSTALL instructions (#1490378) 9 years ago
Aleksander Machniak e84fafcec2 Fix security issue in contact photo handling (#1490379) 9 years ago
Aleksander Machniak bb21913387 Fix mb_substitute_character() use 9 years ago
Aleksander Machniak 389f70996c Skip some tests on PHP 5.3.3 9 years ago
Aleksander Machniak f7565da34b Add some more tests for rcube_charset::clean() 9 years ago
Aleksander Machniak 966a9086a5 Fix rcube_charset::clean() for case when mbstring and iconv are not installed 9 years ago
Aleksander Machniak eb58b6c537 Fix failing rcube_utils::strtotime() test if system timezone was different than expected 9 years ago
Aleksander Machniak 1422b0823e Fix bug where messages count was not updated after message move/delete with skip_deleted=false (#1490372) 9 years ago
Thomas B. de40ef6cdb Merge pull request #274 from fmbiete/es_ES-csv2vcard
csv2vcard: Add mappings for spanish versions of programs
9 years ago
Aleksander Machniak 23a0827e6c Fix typo in aria attribute name (#1490370) 9 years ago
Thomas Bruederli 3d24039cec Switch repository URLs to https: 9 years ago
Thomas Bruederli 0f63418b7e Use Net_LDAP3::domain_root_dn() to resolve the domain DN for the %dc variable; replaces PR #268 9 years ago
Aleksander Machniak 9d49c820bd Fix so pagejump selection list can be displayed again with click after it has been closed by Esc key 9 years ago
Aleksander Machniak 820be47e30 Reset pagejumper input to current page on ESC/TAB press 9 years ago
Aleksander Machniak 9a5d9a83ab Implemented UI element to jump to specified page of the messages list (#1485235) 9 years ago
Francisco Miguel Biete 77bb126b00 fix(csv2vcard): Add mappings for spanish versions of Thunderbird
and Outlook.

The titles in the CSV generated by the localized versions of those
programs are also localized. Not every field, but some of them.

Signed-off-by: Francisco Miguel Biete <fbiete@gmail.com>
9 years ago
Aleksander Machniak a4ba3df548 Bump up version number 9 years ago
Aleksander Machniak 9c38c58e1e Add option to prepopulate vacation addresses on form init (#1490030) 9 years ago
Aleksander Machniak 1aa0c8ad66 Fix bug where preview_pane setting wasn't always saved into user preferences (#1490362) 9 years ago
Aleksander Machniak 1d0ffdc2ac Fix decoding array headers 9 years ago
Aleksander Machniak c095e6329c Fix message highligh regression from last commit (#1490363) 9 years ago
Aleksander Machniak 28331d5ed2 Trigger 'listupdate' event also on response to check-recent request 9 years ago
Aleksander Machniak b112b9bd81 Update changelog 9 years ago
Aleksander Machniak 1af5595b90 Fix mouseup event handling when dragging a list record (#1490359)
This fixes drag-n-drop on managesieve filters list.
9 years ago
Aleksander Machniak 224a1b19cb Fix incorrect filter data after filter delete (#1490356)
Fix missing position idicator in Larry skin when dragging a filter
9 years ago
Aleksander Machniak 5b737d9f8d Fix bug where some unrelated attachments in multipart/related message were not listed (#1490355) 9 years ago
Aleksander Machniak 09225a41ec Add option to place signature at bottom of the quoted text even in top-posting mode [sig_below] 9 years ago
Aleksander Machniak 489409f30f Fix Net_LDAP3 homepage location 9 years ago
Thomas Bruederli 50caf4b024 Update git url for kolab/Net_LDAP3 package repository 9 years ago
Thomas Bruederli ca8cfd8654 Don't load jquery UI scripts twice 9 years ago
Aleksander Machniak fa857716e6 Add option to define default vacation interval 9 years ago
Aleksander Machniak e7620812b0 Installer: Remove system() function use (#1490139)
Move some functionality of scripts from bin/ into rcmail_utils class
9 years ago
Aleksander Machniak 76573685d9 Enigma: Added user preferences to disable plugin features 9 years ago
Aleksander Machniak e8e88d347d Fix bug where forced extwin page reload could exit from the extwin mode (#1490350)
With small improvements in rcube_webmail.url() method.
9 years ago
Aleksander Machniak d86ff98339 Fix font artifact in Google Chrome on Windows (#1490353) 9 years ago
Aleksander Machniak 53cbebf8ad Fix handling spaces after <br> on html2text conversion 9 years ago
Aleksander Machniak aa38c512fb Fix lack of signature separator for plain text signatures in html mode (#1490352) 9 years ago
Aleksander Machniak dedf22054e Enigma: diagnosed and described Crypt_GPG issues related with gnupg >= 2.0 9 years ago
Aleksander Machniak d61d668b64 Remove useless code 9 years ago
Aleksander Machniak 292292df32 Fix so unrecognized TNEF attachments are displayed on the list of attachments (#1490351) 9 years ago
Aleksander Machniak 98e4614b0d Fix so text/calendar parts are listed as attachments even if not marked as such (#1490325) 9 years ago
Aleksander Machniak b0c502c4c2 Fix message list header in classic skin on window resize in Internet Explorer (#1490213) 9 years ago
Aleksander Machniak 48d01837a0 Fix tables listing routine on mysql and postgres so it skips system or other database tables and views (#1490337) 9 years ago
Aleksander Machniak 1ad0e7da52 Enigma: fix issues with enabled messages_cache 9 years ago
Aleksander Machniak 314d03c88f Enigma: really add composer.json 9 years ago
Aleksander Machniak 39f93b2700 Enigma: added composer.json file 9 years ago
Aleksander Machniak 5a4f3f8266 Remove Kolab's hack for Cyrus Murder bug in SETANNOTATION - it's not needed anymore 9 years ago
Aleksander Machniak 64d79b82aa Merge pull request #270 from corbosman/master
move header block inside loop
9 years ago
corbosman d9c22ab66d move header block inside loop 9 years ago
Petr ec065910db Strikethrough disabled sieve filters 9 years ago
Aleksander Machniak 3d6ce95009 Fix PHP warning: Non-static method PEAR::setErrorHandling() should not be called statically (#1490343) 9 years ago
Aleksander Machniak 04598bdfb1 Enigma: Handle signed content inside of encrypted message 9 years ago
Aleksander Machniak a99c34159d Enigma: Implemented messages signing and encrypting 9 years ago
Aleksander Machniak 0a4e0921d3 Plugin API: Added message_ready hook - the last chance to modify Mail_Mime object before saving or sending the message 9 years ago
Aleksander Machniak e6c1e0c638 Fix vpopmaild driver of password plugin 9 years ago
Aleksander Machniak bb2113ccdc Fix zipped messages downloads after selecting all messages in a folder (#1490339) 9 years ago
Aleksander Machniak 1a7e668977 Fix handling of %-encoded entities in mailto: URLs (#1490346) 9 years ago
Thomas Bruederli 4d9627c36a Wording 9 years ago
Thomas Bruederli b9ac6ec263 Allow help plugin to append a link to the error page for more information about CSRF protection 9 years ago
Thomas Bruederli 0bd99db08d Localize common error messages; improve explanation for CSRF check failures 9 years ago
Aleksander Machniak 118fadc6a1 Update changelog 9 years ago
Thomas Bruederli ec48287775 Freeze Mail_mimeDecode at version 1.5.5 as git master is utterly broken 9 years ago
Thomas Bruederli 3dd377e272 Color quota display orange/red when over 80/90 % 9 years ago
Thomas Bruederli 465ba8d11b Avoid errors when message list doesn't have a header 9 years ago
Aleksander Machniak 8eeb721bd6 Fix unintended DB session expiration - lost variable in refactoring (#1490316) 9 years ago
Aleksander Machniak e4338fdf38 Fix missing host:port in connection error message 9 years ago
Aleksander Machniak ef442ef615 Fix typos 9 years ago
Aleksander Machniak 65e735dec5 Fix javascripts errors in IE8 - lack of Event.which, focusing a hidden element (#1490318) 9 years ago
Thomas Bruederli d17975c776 Do not re-append an existing node when re-rendering with childs 9 years ago
Thomas Bruederli bba0d88978 Update Changelog 9 years ago
Thomas Bruederli 619891ccc3 Fix menu container references to point to the actual <ul> element (#1490313) 9 years ago
Thomas Bruederli 3f00466f74 Update Changelog 9 years ago
Thomas Bruederli b1d13e8bd5 Fix redirct URL for attachments loaded in an iframe (#1490191) 9 years ago
Thomas Bruederli 731330cf34 Update Changelog 9 years ago
Thomas Bruederli 686f0dacdd Simplify HTML structure of ACL dialogs 9 years ago
Thomas Bruederli 0f63aa390f Give other plugins the opportunity to adjust the list of permissions and groups to edit 9 years ago
Thomas Bruederli 78118e3f60 Make ACL popups scale to the actual content and avoid scrolling if possible 9 years ago
Aleksander Machniak 05b11f7ef0 Fix handling of header test with one-element array as header name 9 years ago
Thomas Bruederli e2fb340289 Remove obsolete mt_srand() calls 9 years ago
Thomas Bruederli 743832fc51 Update Changelog 9 years ago
Thomas Bruederli a74d023903 Generate random hash for the per-user local storage prefix (#1490279); only unserialize user prefs once 9 years ago
Aleksander Machniak 496972bf95 Fix backtick character handling in sql queries (#1490312) 9 years ago
Thomas Bruederli 22409b88c5 Add sanity check before attempting to add scripts to a non-html output object 9 years ago
Aleksander Machniak a172f39ff7 Fix bug where TinyMCE area height was too small on slow network connection (#1490310) 9 years ago
Thomas Bruederli 3c4d3dcc42 Fix submission of _reload parameter when switching address books 9 years ago
Aleksander Machniak 27da86be48 Merge branch 'master' of github.com:roundcube/roundcubemail 9 years ago
Aleksander Machniak b0bb38703e Fix bug where spellchecking in HTML editor do not work after switching editor type more than once (#1490311) 9 years ago
Thomas Bruederli 5def0d8e9e Ignore plugin loading filter if force parameter is set 9 years ago
Aleksander Machniak db71156ab2 Update TinyMCE cache_suffix (forgot to do this after last update) 9 years ago
Aleksander Machniak 2c857fcba2 Upgrade TinymCE to version 4.1.9 9 years ago
Aleksander Machniak 10934dcd2a Fix rows count when messages search fails (#1490266) 9 years ago
Aleksander Machniak d12b999403 (Properly) reset search filter on reset-search action 9 years ago
Aleksander Machniak da1816edd8 Reset search filter on folder selection and search reset 9 years ago
Thomas Bruederli 87ff88d550 Fix session garbage collector handler registration after refactoring 9 years ago
Thomas Bruederli aafc050f55 Fix rcube_contacts::search() calls with empty search string but $required argument 9 years ago
Aleksander Machniak 7a1652929c FIx colors in searchmenu 9 years ago
Aleksander Machniak c2df5d4e13 Unified request* event arguments handling, added support for _unlock and _action parameters 9 years ago
Aleksander Machniak 1ec105c685 Fix so search filter, scope and fields are reset on folder change 9 years ago
Aleksander Machniak 06d4243d2e Fix Opera browser detection in javascript (#1490307) 9 years ago
Aleksander Machniak f06f4b8424 Fix storing signatures with big images in MySQL database (#1490306) 9 years ago
Aleksander Machniak 0878c846bc Enigma: Larry support, finished PGP decryption, other fixes and improvements 9 years ago
Aleksander Machniak 9af8e22b8e Plugin API: added message_part_body hook, fixes around message structure handling by plugins 9 years ago
Aleksander Machniak 7ff227eb3e get_part_content() -> get_part_body() 9 years ago
Thomas B. 2755471f33 Merge pull request #257 from corbosman/session_refactor
Merging session refactor into master
9 years ago
Aleksander Machniak 3779c91043 Update to TinyMCE 4.1.8 9 years ago
Aleksander Machniak 65c95c7b38 Fix missing vcard_attachment icon on messages list (#1490303) 9 years ago
Aleksander Machniak f513e909ab Update changelog 9 years ago
Aleksander Machniak f02fe3c344 Remove redundant encoding of message subject with mb_encode_mimeheader() (#1490295) 9 years ago
Aleksander Machniak 6cdffbf1b6 Fix "PHP Fatal error: Using $this when not in object context" 9 years ago
corbosman 82058d7af2 minor fixes 9 years ago
Thomas Bruederli 8e333bcb66 Only normalize search term when searching in 'words' column 9 years ago
Thomas Bruederli 3bd0277261 Fix full-text searching in a given list of fields 9 years ago
Thomas Bruederli fd259bed69 Adapt fulltext search in local address book to ignore words order 9 years ago
Thomas Bruederli c32998084d Add untility function to match strings ignoring word order 9 years ago
Thomas Bruederli 36ee2c8427 Improve LDAP search by ignoring words order in fuzzy substring matching mode 9 years ago
Thomas Bruederli 83eeec6c06 Add utility function to compose a full-text-like LDAP search filter 9 years ago
Aleksander Machniak 9ad0fc489f Fix javascript error after creating a folder which is a subfolder of another one (#1490297) 9 years ago
Aleksander Machniak 7981575a61 Fix so localized folder name is displayed in multi-folder search result (#1490243) 9 years ago
Aleksander Machniak b0613585c3 Fix encryption warning style in fullpage message view 9 years ago
Aleksander Machniak b86e091fcd Add initdb.sh to create database from initial.sql script with prefix support (#1490188) 9 years ago
Aleksander Machniak b7abf8412c Fix "Add response" button title, remove wrong identities_level checks in Responses, fix cursor on some lists 9 years ago
corbosman 6e3d249655 remove commented out code 9 years ago
corbosman b4be89bdac use factory 9 years ago
Aleksander Machniak a4ef49d6cf Fix duplicate entry on timezones list in rcube_config::timezone_name_from_abbr() (#1490293) 9 years ago
Aleksander Machniak f27c6c8c44 Update changelog 9 years ago
Aleksander Machniak 5aa1d2005b Fix parsing ldap URI for cases where hostname is non-empty 9 years ago
Aleksander Machniak 759566fe99 Fix parsing invalid HTML messages with BOM after <!DOCTYPE> (#1490291) 9 years ago
Aleksander Machniak 1d09ee0ce6 Added 'kpasswd' driver by Peter Allgeyer 9 years ago
Aleksander Machniak b59b72cc30 Fix "Non-static method PEAR::isError() should not be called statically" errors (#1490281) 9 years ago
Aleksander Machniak 2a31f6dbd7 Reset default db_max_allowed_packet, fix max packet size detection 9 years ago
Aleksander Machniak e1c8fe5c4a Fix duplicate entries supression in autocomplete result (#1490290) 9 years ago
Aleksander Machniak 83f1f6b12f Improve compose_search_name() to not return "email@address <email@address>" entries
which may happen for contacts without name(s)
9 years ago
Aleksander Machniak 97ee4c40c1 Don't sent the message again in saveonly mode 9 years ago
Aleksander Machniak c5c8e73351 Improved handling of storage errors after message is sent
After sending a message it is stored in Sent folder, this operation
may fail, e.g. because of "over quota" error. In such a case we'll
not close the compose window, but display the error and, if user clicks
Send/Save button, we'll display a dialog informing about the situation and
providing an option to try the save operation again.
9 years ago
Aleksander Machniak 216b31dd99 Fix so "over quota" errors are displayed also in message compose page
This also fixes over quota responses on cyrus imap which uses "Over quota" string and no error identifier.
9 years ago
Thomas Bruederli db6663b936 Update internal reference to treelist node contents after insert. Fixes some strange behavior in FF 3.6 9 years ago
Aleksander Machniak 8f485469c7 Add possibility to configure max_allowed_packet value for all database engines (#1490283) 9 years ago
Aleksander Machniak 62b847bea3 Fix "PHP Fatal error: Call to a member function getMessage() on a non-object" 9 years ago
Aleksander Machniak 75e8a7d313 Really make sure plugins aren't initialized twice 9 years ago
Aleksander Machniak 4d90e6596d Use also Organization field as a fallback if contact has no name(s) specified 9 years ago
Aleksander Machniak 6c8cbe3ee5 Fix regression where require_plugin() wasn't initializing the plugin 9 years ago
Aleksander Machniak 4e3de10274 Fix typo 9 years ago
Aleksander Machniak 268ace8c79 Merge branch 'master' of github.com:roundcube/roundcubemail 9 years ago
Aleksander Machniak aa1ddfecae Fix cursor position on reply below the quote in HTML mode (#1490263)
Also other cursor position inconsistency. Additionally fixed
invisible cursor in HTML editor in older Firefox browser versions.
9 years ago
Thomas Bruederli b7d6699f54 Describe Composer installation when upgrading from a < 1.1 version 9 years ago
Aleksander Machniak f070da7c27 Fix fatal errors on systems without mbstring extension or mb_regex_encoding() function (#1490280) 9 years ago
Aleksander Machniak bd82526e41 Fix missing or not up-to-date CATEGORIES entry in vCard export (#1490277) 9 years ago
Aleksander Machniak 3ab1b1a6ba Merge branch 'master' of github.com:roundcube/roundcubemail 9 years ago
Aleksander Machniak 3f308bf390 Display group icon on group entry in ACL autocomplete list 9 years ago
Aleksander Machniak 45256e8293 Really fix unwanted warning on BMP attachments (#1490269) 9 years ago
Aleksander Machniak c7b77b9179 Fix performance of rcube_db_mysql::get_variable()
As currently we're using this to find only max_allowed_packet value,
it is better to use "SHOW VARIABLES LIKE ?" instead of asking for all variables.
9 years ago
Aleksander Machniak 13e0a6556f Fix handling of some improper constructs in format=flowed text as per the RFC3676[4.5] (#1490284) 9 years ago
corbosman 4df4ab5007 session refactor and add redis driver 9 years ago
Aleksander Machniak 4a2a62de30 Fix needless security warning on BMP attachments display (#1490282) 9 years ago
Aleksander Machniak 50b04366ee Merge branch 'master' of github.com:roundcube/roundcubemail
Conflicts:
	CHANGELOG
9 years ago
Aleksander Machniak 81d4ff214e Fix setting max packet size for DB caches and check packet size also in shared cache 9 years ago
Aleksander Machniak 2e28a74ce9 Update changelog 9 years ago
Aleksander Machniak 3665d1e8ec Merge pull request #259 from corbosman/plugin_preload
Plugin preload
9 years ago
Aleksander Machniak 31ed9162d1 Update changelog 9 years ago
Aleksander Machniak d67071f228 Fix saving/sending emoticon images when assets_dir is set (Kolab #4608) 9 years ago
Aleksander Machniak 3e0ad293e1 Fix PHP fatal error when visiting Vacation interface and there's no sieve script yet 9 years ago
Aleksander Machniak 701ef30c28 Merge branch 'master' of github.com:roundcube/roundcubemail 9 years ago
Aleksander Machniak f7af22c780 Add possibility to print contact information (of a single contact) 9 years ago
Aleksander Machniak af6e474141 Fix regression where Help toolbar buttons have had incorrect title 9 years ago
Aleksander Machniak ae73c26f29 Merge branch 'master' of github.com:roundcube/roundcubemail 9 years ago
Aleksander Machniak 3779b67a9c Set version number to 1.2-git 9 years ago
Aleksander Machniak e25b0d7781 Fix a regression where some contact data was missing in export and PHP warnings were logged (Kolab #4522) 9 years ago
Aleksander Machniak 9ed6d46df7 Fix refreshing of drafts list when sending a message which was saved in meantime (#1490238) 9 years ago
Thomas Bruederli de3fc1afaf Describe memcache connection configuration options in defaults 9 years ago
Thomas B. 38b42e96af Merge pull request #265 from kanarip/master
Allow the timeout and retry interval for memcached to be configured
9 years ago
Jeroen van Meeuwen (Kolab Systems) c3e441044d Allow the timeout and retry interval for memcached servers to be configured 9 years ago
Thomas Bruederli 190ae4f800 Embed magnet link for license information 9 years ago
Thomas Bruederli 96dee98e7f Copy the first comment block with license information for LibreJS when minifying 9 years ago
Thomas Bruederli 40a37adc22 Bump copyright year in about dialog 9 years ago
Thomas Bruederli 9a3fe2aacd Complete the repositories section in composer.json during update 9 years ago
Thomas Bruederli 2f8b1036da Bump version and copyright year 9 years ago
Thomas Bruederli 36147bd6df Update localizations from Transifex 9 years ago
Aleksander Machniak 56040b941c Fix so JSON.parse() errors on localStorage items are ignored (#1490249) 9 years ago
Aleksander Machniak 0b9b9f63b5 Enable FollowSymLinks option in .htaccess file which is required by rewrite rules (#1490255) 9 years ago
Aleksander Machniak 7c96646de0 Fix security issue in DBMail driver of password plugin (#1490261) 9 years ago
corbosman de89d46be2 Load plugins before sessions have started
Move the plugin loading phase to before sessions have started allowing plugins to add session drivers.  Plugins that want to use this should define an "onload" method in their plugins. This method does not have access to variables like $task as they are not yet initialised at that time.
9 years ago
Aleksander Machniak 09d52dbb67 Fix some typos in comments 9 years ago
Aleksander Machniak 20740a9650 Fix error in exec_hook() in case some hook handler was unregistered before 9 years ago
Aleksander Machniak dba43e7c8b Copy also INSTALL file 9 years ago
Thomas Bruederli be140e827d Don't reset 'plugins' config option when running from update.sh script 9 years ago
Aleksander Machniak 04009e5ccb Fix bug in vacation script detection with kolab_master feature enabled but no active script 9 years ago
Aleksander Machniak e17decc4c2 Better handle log/temp directory misconfiguration 9 years ago
Aleksander Machniak e8fc8d303a Fix handling of GETANNOTATION errors - return NULL on error as documented 9 years ago
Aleksander Machniak 0a5841702f Fix exec_hook() so handlers added inside the hook are not omitted 9 years ago
Aleksander Machniak 758e7c47e9 Update changelog 9 years ago
Aleksander Machniak a3fa844aad Make logged SMTP errors more verbose - log also real server response and codes 9 years ago
Thomas Bruederli 3b46c965d7 CSS hack for FF 3.6 9 years ago
Thomas Bruederli b7a4e2ed18 Better selector for FF35+ 9 years ago
Thomas Bruederli 613966d76f Use @supports selector for setting date selector icon in Firefox 35+ 9 years ago
Aleksander Machniak b0c9026223 Fix bug where signature could have been inserted twice after plain-to-html switch (#1490239) 9 years ago
Aleksander Machniak 556d288754 Fix false warning when opening attached text/plain files (#1490241) 9 years ago
Thomas Bruederli b7c35d5bd9 Fix JS syntax for legacy browsers 9 years ago
Aleksander Machniak 64ed175944 Code style improvements and fixes 9 years ago
Aleksander Machniak b79a6e1b33 Workaround Firefox 3.6 issue where "advanced options" toggle element was misplaced 9 years ago
Thomas Bruederli 2cbae4787f Update Changelog 9 years ago
Aleksander Machniak 686ff4b538 Fix keyboard navigation and css in datepicker widget across many Firefox versions 9 years ago
Aleksander Machniak 5d42a9353b Fix bug where drafts list wasn't refreshed after draft message was sent from another window (#1490238) 9 years ago
Aleksander Machniak 5beaac231e Fixed color popup in Chrome browser
The whole <div> element need to be appended to document.body before calling .width() on it.
9 years ago
Aleksander Machniak 4727e13d55 Merge branch 'master' of github.com:roundcube/roundcubemail 9 years ago
Aleksander Machniak bf99c50cc1 Fix bug where empty fieldmap config entries caused empty results of ldap search (#1490229) 9 years ago
Aleksander Machniak dc9cc7aa8a Improve procedure of script selection to write a vacation rule 9 years ago
Aleksander Machniak 704b0bace6 Update changelog with CVE identifier 9 years ago
Aleksander Machniak 38dbd8022b Fix bug where Reply-To address was ignored on reply to messages sent by self (#1490233) 10 years ago
Thomas Bruederli ef29153a32 Improve display of pgp/mime and s/mime messges. Reverts commit f4154d91 10 years ago
Aleksander Machniak b7e3b15a8a Fix javascript error in "IE 8.0/Tablet PC" browser (#1490210) 10 years ago
Thomas Bruederli f4154d9108 Fall back to $part->body when no mime_id is set for the message part 10 years ago
Aleksander Machniak de0bc662f9 Fix bug where search was reset after returning from compose opened by reply button(s) 10 years ago
Aleksander Machniak b196d229c3 Bump up plugin version 10 years ago
Aleksander Machniak 501cdd651e Fix bug where vacation rule was saved to wrong script if managesieve_kolab_master=true 10 years ago
Aleksander Machniak 6af79f1517 Support "not allof" test as a negation of all sub-tests
Fixes also last commit change.
10 years ago
Aleksander Machniak 1f9c9fea55 Fix bug where actions without if/elseif/else in sieve scripts were skipped 10 years ago
Aleksander Machniak e44e51561d Fix margin in Help > License page 10 years ago
Aleksander Machniak a109d19a77 Fix error when dragging jquery dialog window in Folder Manager page 10 years ago
Aleksander Machniak d1382aecb2 Fix so "set as default" option is hidden if identities_level > 1 (#1490226) 10 years ago
Aleksander Machniak 5a84736e53 Fix bug where Drafts list wasn't updated on draft-save action in new window (#1490225)
That if the window was opened using "Edit" button, not double-click on a message.
10 years ago
Aleksander Machniak f5b7c2e0a3 Fix download options menu (added by zipdownload plugin) in classic skin (#1490228) 10 years ago
Aleksander Machniak 786aa0725e Fix XSS issue in style attribute handling (#1490227) 10 years ago
Aleksander Machniak d204814a39 Fix test for blocked.gif according to recent changes 10 years ago
Aleksander Machniak 26afe4bbcf Merge pull request #261 from doublerr/patch-1
Fix pear dependencies in Dockerfile
10 years ago
Ryan Richard b45f9af933 fix pear dependencies
* net_smtp2 to net_smtp
* auth_sasl2-beta to auth_sasl

Currently installing `Net_SMTP2` results with the following error:

```bash
[09-Jan-2015 21:15:14 UTC] PHP Fatal error:  Class 'Net_SMTP' not found in /var/www/program/lib/Roundcube/rcube_smtp.php on line 111
```

Switching back to Net_SMTP fixes this issue
10 years ago
Aleksander Machniak 83b5834360 Skip .skip-on-drag elements when producing long subject title 10 years ago
Aleksander Machniak c6efcf5e6d Fix blocked.gif image usage with assets_dir set 10 years ago
Aleksander Machniak 49b1c16c46 Merge pull request #262 from raoulbhatia/master
Explicitly deny access to newly created "Dockerfile"
10 years ago
Raoul Bhatia fd0583a846 Explicitly deny access to newly created "Dockerfile" 10 years ago
Aleksander Machniak 8c2075b9fc Remove hook aliases deprecated long time ago, CS fixes 10 years ago
Aleksander Machniak 091f5e2978 Fix css selectors in resize() for IE (#1490213) 10 years ago
Aleksander Machniak b6b2858b01 Fix checks based on window.ActiveXObject in IE > 10 10 years ago
Aleksander Machniak 1187f60d12 Build proper quota text when quota 'percent' is undefined 10 years ago
Aleksander Machniak f6502176f8 Hide MDN and DSN options in compose if disabled by admin (#1490221) 10 years ago
Aleksander Machniak 9e26034801 Fix bug where max_group_members was ignored when adding a new contact (#1490214)
Also fix list refresh after new contact was added and any group is selected.
10 years ago
Aleksander Machniak 788d37db0d Integrate jquery.tagedit with jqueryui plugin 10 years ago
Thomas Bruederli 7d8592e64d Correctly handle DateTime values in Vcard export 10 years ago
Aleksander Machniak 71bb892063 Set 'mainaction' class on Save button in ACL dialog 10 years ago
Thomas Bruederli fe653e3122 Update Changelog 10 years ago
Aleksander Machniak b0289b5475 Merge pull request #255 from root-io/patch-1
Fix config file sample tiny typo
10 years ago
David Routhieau d491463df2 Fix config file sample tiny typo 10 years ago
Aleksander Machniak 10f133bae8 Fix bug where sent message was saved in Sent folder even if disabled by user (#1490208) 10 years ago
Aleksander Machniak 7b924535fd CS fixes 10 years ago
Aleksander Machniak 1881a8a152 Display "real" attachment size also on attachments list 10 years ago
Thomas Bruederli bca7dc68e9 Fix syntax error and codestyle from recent PR merge 10 years ago
Thomas B. 7c3d8c0a37 Merge pull request #244 from alunduil/dockerize
Add Dockerfile and allow configuration overrides through env variables
10 years ago
Aleksander Machniak dc684a737a Update changelog 10 years ago
Aleksander Machniak 5844f38674 Improve move-to and contact-export button in classic skin (#1490166) 10 years ago
Aleksander Machniak 390e9eeac7 Fix offset of download icon 10 years ago
Alex Brandt e4b9910a32 Add environment variable reading to configuration.
Docker prefers to pass parameters via environment variables.  This
allows the environment variables to be checked and if a value exists it
will override the default.
10 years ago
Alex Brandt 616f88a843 Add SSL support to Dockerfile. 10 years ago
Alex Brandt dd4973c2c8 Add Dockerfile. 10 years ago
Thomas Bruederli fbb86218d0 Synchronized localizations from Transifex 10 years ago
Thomas Bruederli e2f3710476 Update Changelog 10 years ago
Thomas Bruederli e8b82c2e7b Fix rcube_utils::normalize_string() to support unicode characters + add argument for minimum token length 10 years ago
Thomas Bruederli 09c58d1add Make rcube_utils::strtotime() timezone aware (#1490163) 10 years ago
Thomas Bruederli b737021a90 Improve plugin selection in installer; check already selected plugins 10 years ago
Thomas Bruederli d1bf0feed4 Use current year for timezone offset display 10 years ago
Aleksander Machniak 6ca090b341 Add _mbox parameter to the 'mark' request sent after opening a message 10 years ago
Aleksander Machniak d9897520e7 Upgrade jQuery to version 2.1.3 10 years ago
Aleksander Machniak 79e92da7ed Fix js error when calling show_popup_dialog() without 'options' argument 10 years ago
Aleksander Machniak 11eb072f80 Fix rcube_utils::get_boolean() test to not use deprecated function alias 10 years ago
Thomas B. 8e7ed506c4 Merge pull request #248 from flanpy/master
#1489096 : Ability to select plugins to enable in the installer
10 years ago
Aleksander Machniak 06410e41e0 Update changelog 10 years ago
Thomas Bruederli 4081940908 Add hint about the optional LDAP modules listed in "suggest" (#1490183) 10 years ago
Thomas Bruederli b9014db990 Update Changelog 10 years ago
Thomas Bruederli 8d9945c4f6 Enable updating of composer.json dependencies 10 years ago
Thomas Bruederli bd51db63de Sync vendor folder if exists in source package (#1490145) 10 years ago
Aleksander Machniak aafccefb88 Properly set fuzzy_search for vlv searches 10 years ago
Thomas Bruederli ceee7eb110 Prevent folder selection changes if app is busy (#1490158) 10 years ago
Thomas Bruederli da0d0aca2a Avoid useless reloading list when resetting search with active filter (#1490057) 10 years ago
Aleksander Machniak cc5e4452db Read page and page_size before check_recent hook is executed
- some plugins may change them to invalid values (in mail context)
10 years ago
Aleksander Machniak 217a1fce53 Fix compatibility with assets_path setting 10 years ago
Aleksander Machniak 343dc97ba1 Merge branch 'master' of github.com:roundcube/roundcubemail 10 years ago
Aleksander Machniak 877e44bd8f Small improvements in About dialog 10 years ago
Thomas Bruederli b80f4bafc3 Remove focus from toggle item if clicked with the mouse 10 years ago
Aleksander Machniak 8ccfc271d7 Fix skin inheritance for some icons (#149017) 10 years ago
Aleksander Machniak 7e788e4352 Fix legacy_plugin so it works with assets_path/assets_dir
and also when css/js file URLs do not contain cache buster
10 years ago
Aleksander Machniak 7259529fad Get rid of requests whitelist for security check bypass 10 years ago
Aleksander Machniak 681ba6fc3c Improve system security by using optional special URL with security token
Allows to define separate server/path for image/js/css files
Fix bugs where CSRF attacks were still possible on some requests
10 years ago
Thomas Bruederli 53b7421d44 Fix list icon for replied+forwarded+unread messages 10 years ago
Aleksander Machniak fa424e54d2 Set compose mode in session when needed - skip one session update when composing new message 10 years ago
Aleksander Machniak 8e30385da9 Merge pull request #251 from Ch00k/master
Clarify temp/logs directories permissions
10 years ago
Andriy Yurchuk 402c1bff01 Clarify temp/logs directories permissions 10 years ago
Aleksander Machniak 066e22874b Don't log "No suitable function found for UTF-8..." as E_USER_WARNING.
Use E_USER_NOTICE - this happens quite often as email messages
containing invalid charset name are not so rare.
10 years ago
Aleksander Machniak 8841810bce Update TinyMCE to 4.1.7, use cache_suffix option to prevent browser caching issues 10 years ago
Aleksander Machniak 630d08fb49 Assign "mainaction" class to "default" buttons in dialogs 10 years ago
Aleksander Machniak d7cd5ddb86 Add missing composer.json files (skipped because of .gitignore) 10 years ago
Aleksander Machniak 10ea055684 Add missing composer.json files (skipped because of .gitignore) 10 years ago
Aleksander Machniak 1143428dcb Update package.xml -> composer.json 10 years ago
Aleksander Machniak ef29ac4339 Fix generation of Blowfish-based password hashes (#1490184)
Added password_blowfish_cost config option.
10 years ago
Aleksander Machniak 72b117feb1 Use consistent license identifiers, remove redundant package.xml files 10 years ago
Aleksander Machniak ecf6c79d00 Bump up version number, remove package.xml file 10 years ago
Aleksander Machniak defe025b61 Fix button size in Larry 10 years ago
Aleksander Machniak adc23f8b01 Fix label on "forwarded" icon 10 years ago
Aleksander Machniak a3873bd93c Enable menu-* actions when UI is locked 10 years ago
Aleksander Machniak b262e12964 Fix import of contacts with multiple email addresses from Google-csv format (#1490178) 10 years ago
Aleksander Machniak f864495b7b Fix import of multiple contact email addresses from Outlook-csv format (#1490169) 10 years ago
Aleksander Machniak cf7471eb86 Move some styles from #mailboxlist to .folderlist 10 years ago
Aleksander Machniak f7f4672649 Fix regression in rcmail::show_bytes() where unit was set to "[]" instead of "B" 10 years ago
Aleksander Machniak 61ca7956cc Fix button label: ignore -> Ignore (#1490170) 10 years ago
Aleksander Machniak 692011df7f Extend list_emails() to optionally return only default identity 10 years ago
Aleksander Machniak 32eb977b12 Merge branch 'master' of github.com:roundcube/roundcubemail 10 years ago
Aleksander Machniak 2f46789081 Added rcube_user::list_emails() method with better performance than list_identities()
which should be used always if we want only all user email addresses (with names)
10 years ago
Aleksander Machniak 25fb9732a0 Fix so all unknown email addresses from Google csv format are imported (#1490159) 10 years ago
Aleksander Machniak 787a421846 Fix rcube_utils::anytodatetime() with no timezone specified 10 years ago
Aleksander Machniak 0b36d15157 Add method to display operation (uploading) progress in UI message 10 years ago
Aleksander Machniak 2dfad0a564 Make upload progress text more compact.
E.g. "500 KB of 10 MB" becomes "0.5 of 10 MB"
10 years ago
Aleksander Machniak 9fe9d407ae Fix "x from y" -> "x of y" 10 years ago
Aleksander Machniak bb1398a54e Fix import of multiple contact groups from Google-csv format (#1490159) 10 years ago
Aleksander Machniak 2a89127a7c Avoid duplicated errors in error dialog 10 years ago
Aleksander Machniak d876c6bd52 Merge pull request #249 from JohnDoh/patch-1
Check to see if the content frame exists before loading a contact
10 years ago
Aleksander Machniak 3d8745bd0b Fix drag-n-drop to folders expanded while dragging (#1490157) 10 years ago
Aleksander Machniak a4cdb601b7 Remove redundant code 10 years ago
Aleksander Machniak 07a641c79f Code cleanup - unused variables 10 years ago
Aleksander Machniak 2d62b6bff8 Merge branch 'master' of github.com:roundcube/roundcubemail 10 years ago
Aleksander Machniak 9e4246d957 Code improvements and fixes (mostly unused variables and methods) 10 years ago
Thomas B. 7184653137 Merge pull request #250 from bbraybrook/master
Show real folder names in selector on compose screen (#1490153)
10 years ago
Aleksander Machniak 07280e7643 Remove reference to non-existing option 'default_folders' 10 years ago
brendan braybrook 6a2bc7d833 fix for bug 1490153 10 years ago
Aleksander Machniak 409b649346 Fix lack of delimiter for recipient addresses in smtp_log (#1490150) 10 years ago
Aleksander Machniak 63e4989aa5 Don't append created iframe to document if it's going to be appended to a dialog - skip redundant http request + small CS improvements 10 years ago
Aleksander Machniak 58e184b022 Small fix for HTML editor border radius 10 years ago
Aleksander Machniak b274c8cad9 Fix missing HTML editor border 10 years ago
JohnDoh 0a909fb722 check to see if the content frame exists before loading a contact 10 years ago
Flanpy 8f576d87d2 Add the ability to select plugins in the installer 10 years ago
Flanpy b8837e3f43 Add the ability to enable plugins in the installer 10 years ago
Aleksander Machniak a94f4be8d2 Fix padding of some form elements 10 years ago
Thomas Bruederli f652e36b2b Force-pull translations from Transifex 10 years ago
Thomas Bruederli 63dd809b11 Remove empty labels and translation files 10 years ago
Aleksander Machniak cc6c7e83b5 Fix possible race-condition in using current folder 10 years ago
Thomas Bruederli 01bc27536a Updated localizations from Transifex 10 years ago
Aleksander Machniak 0b39f6de6a Merge branch 'master' of github.com:roundcube/roundcubemail 10 years ago
Aleksander Machniak a16cf3bb7c Replace all attachment-image URIs with CID URIs, not only src and poster attributes (#1490132) 10 years ago
Thomas Bruederli d4a820ed2b Better wording about composer dependency 10 years ago
Thomas Bruederli 0c137f7dac Consider composer.json dependencies in installation and upgrading instructions and scripts 10 years ago
Aleksander Machniak a7a778c157 Fix some character sets detection (#1490135) 10 years ago
Aleksander Machniak 9ba5b878d1 Add csv2vcard for ru_RU localization 10 years ago
Aleksander Machniak 2f014fd9a7 Remove redundant margin 10 years ago
Aleksander Machniak 2883fcba2b Move TNEF decoder class to the Roundcube Framework (#1490055)
So, for now all dependencies of the Framework can be installed
with composer and we need only lib/Roundcube folder.
des.inc was never required and is less important since we do
encryption using openssl or mcrypt extensions.
10 years ago
Aleksander Machniak 14094fca82 Remove redundant code 10 years ago
Thomas Bruederli 5e9a32f65e Update changelog 10 years ago
Thomas Bruederli 8d526c4938 Fix skin path handling in plugin context (#1488967):
The plugin skin directories are removed again from the search path after parsing of a plugin template has finished.
10 years ago
Thomas Bruederli 5c9ddcc052 Check available memory for image resizing with GD on Windows (#1489937) 10 years ago
Thomas Bruederli a63b9b546c Add plugin hook 'db_table_name' as requested in #1489837 10 years ago
Aleksander Machniak f513432a35 Don't trust get_folder(), use mailbox environment variable when appropriate 10 years ago
Aleksander Machniak 9d4d48ad4c Remove debug code 10 years ago
Aleksander Machniak 96a7f6cc1b CS fixes 10 years ago
Aleksander Machniak 0d96720f25 Fixed typo 10 years ago
Aleksander Machniak c839403c19 More get_folder() -> $MESSAGE->folder 10 years ago
Aleksander Machniak cd4e5057fc Don't trust get_folder(), use $MESSAGE->folder if available 10 years ago
Aleksander Machniak 8cbebcac6a CS fixes and bump version number after PR merge 10 years ago
Aleksander Machniak a075df6f08 Merge pull request #243 from bnogas/master-p6
Add support for updating identities on each login
10 years ago
Aleksander Machniak db357b4187 Remove redundant default 10 years ago
Bartlomiej Nogas 385bb6c1e6 Another correction for PR comments 10 years ago
Aleksander Machniak 1ffab0ad4a Fix possible issues in skin/skin_path config handling (#1490125) 10 years ago
Aleksander Machniak 968601f1f5 Give higher priority to the 'subject' parameter from request or plugin 10 years ago
Aleksander Machniak 5d8f8b59f3 Correct load_config() return value with improvement in last commit 10 years ago
Aleksander Machniak ab5b89b854 Improve load_config() so when called many times it will read config file only once 10 years ago
Bartlomiej Nogas 1e89a627e0 Correcting for PR comments + change rcmail to rc 10 years ago
Aleksander Machniak e979511083 Remove redundant is_file() checks 10 years ago
Aleksander Machniak 0b96b1cd81 Fix reply scrolling issue with text mode and start message below the quote (#1490114) 10 years ago
Bartlomiej Nogas 193a0dddde Add support for updating identities on each login 10 years ago
Aleksander Machniak d93019125c Allways call rcube_imap::set_folder() before rcube_imap::get_message_part() 10 years ago
Aleksander Machniak a140e6d213 Fix bug where creating subfolders in shared folders wasn't possible without ACL extension (#1490113) 10 years ago
Aleksander Machniak 45bfde71d2 Fix so draft auto-save does not turn spellchecker off (#1490120) 10 years ago
Aleksander Machniak 68c41f1dff Fix regresion that caused double charset conversion in some messages (#1490121) 10 years ago
Aleksander Machniak 421ed1e545 Fix compose body area size, so scrollbars aren't truncated, unify padding 10 years ago
Aleksander Machniak 9aa55d5a50 Fix so DDL script for Oracle can be executed in SQLPlus 10 years ago
Aleksander Machniak 922f30cb4e Merge pull request #239 from onny/patch-1
Fixed typo in config
10 years ago
Jonas Heinrich fc3ed3fef4 Fixed typo in config 10 years ago
Thomas B. 8aee31cf55 Merge pull request #232 from JohnDoh/patch-1
better events for get_single_uid/cid
10 years ago
Aleksander Machniak 5010941c43 Update password driver API description 10 years ago
Aleksander Machniak c8d082a83e Fix syntax error in plesk driver 10 years ago
Aleksander Machniak c7ac4bbe53 CS fixes after PR merge 10 years ago
Aleksander Machniak 0f711e7bd7 Merge pull request #234 from bnogas/master-p3
Add config option 'acl_group_field' to use as ACL group identifier
10 years ago
Aleksander Machniak aca8bd2bd6 Merge pull request #235 from bnogas/master-p2
Move plugin configuration to config.inc.php.dist
10 years ago
Aleksander Machniak 2da8300fb7 Correctly detect charset of attachment names in TNEF messages 10 years ago
Aleksander Machniak 3350458b87 Catch only left-button clicks on the list widget's mouseup handler 10 years ago
Aleksander Machniak 71dbeeee10 Skip unnecessary session updates on task switch - switch session task less often (#1490116) 10 years ago
Aleksander Machniak 2979df5529 Call exif_read_data() only on JPEG images 10 years ago
Aleksander Machniak 9d0d40308c Merge pull request #238 from bnogas/master-p5
Fix of really fix UNKNOWN-CTE handling
10 years ago
Bartlomiej Nogas a235f79df9 Fix of really fix UNKNOWN-CTE handling 10 years ago
Aleksander Machniak bf9c9b3e38 Really fix UNKNOWN-CTE handling 10 years ago
Aleksander Machniak 81dab388d0 Fix handling of UNKNOWN-CTE response, try do decode content client-side (#1490046) 10 years ago
Aleksander Machniak 9d9623462a Fix handling of base64-encoded attachments with extra spaces (#1490111) 10 years ago
Aleksander Machniak 2268aa676d Fix handling of uuencoded messages if messages_cache is enabled (#1490108) 10 years ago
Aleksander Machniak d165d11012 Fix so attachment charset is set in headers of forward/draft message (#1490109) 10 years ago
Aleksander Machniak b585fa9ec2 Update changelog 10 years ago
Aleksander Machniak 48ba4414b3 Fix download of attachments that are part of TNEF message (#1490091)
Rcube_message_part::body content should never be modified by code out of the rcube_message.
Added convenient rcube_message::get_part_body() method, making rcube_message::get_part_content() deprecated.
10 years ago
Bartlomiej Nogas c1e2ce76c7 Add configuration option 'acl_group_field' to use as ACL group identifier 10 years ago
Bartlomiej Nogas d6c1a1af9d Move plugin configuration to config.inc.php.dist 10 years ago
Aleksander Machniak e2251db1d5 CS fixes after PR merge 10 years ago
Aleksander Machniak 111af7f077 Merge pull request #222 from bnogas/master
Support for multiple email addresses in new_user_identity plugin
10 years ago
Aleksander Machniak d26e94ae94 Small CS fixes after PR merge 10 years ago
Aleksander Machniak ced34cb15e Merge pull request #230 from bytesatwork-xx/master
Password Plugin / LDAP Driver: Add support for CRAM-MD5 and multiple userPassword values
10 years ago
Aleksander Machniak 517b6cff1f Fix font style display issue in HTML messages with styled <span> elements (#1490101) 10 years ago
Aleksander Machniak fef6173a2d Fix displaying of HTML messages with absolutely positioned elements in Larry skin (#1490103) 10 years ago
Aleksander Machniak e050502900 Fix bug where openssl-based crypt/decrypt method wasn't using defined crypto-key 10 years ago
Lorenzo Perone 84296e1b93 fix indent to match style in ldap.php (tabs to spaces) 10 years ago
JohnDoh 9d693a4b55 better events for get_single_uid/cid 10 years ago
Lorenzo Perone 3e3fcd4d27 Password Plugin / LDAP Driver:
- adds support for (optional) multiple userPassword values for compatibility with more authentication shemes
- adds support for CRAM-MD5 scheme as implemented by doveadm pw (credits: see header of plugins/password/helpers/dovecot_hmacmd5.php)
10 years ago
Thomas Bruederli c45507e317 Fix login error message display broken in b51de327 10 years ago
Thomas Bruederli b51de3279f Display custom error messages from plugins hooks (as documented in the API spec) 10 years ago
Thomas Bruederli 507dad3354 Clarify spell check settings in default config 10 years ago
Aleksander Machniak 6b7e06620d Remove zend.ze1_compatibility_mode checks, it does not exist in PHP >= 5.3 10 years ago
Aleksander Machniak 0ea079d604 dirname(__FILE__) -> __DIR__ 10 years ago
Thomas B. 94791f6fd5 Merge pull request #224 from hebbet/master
update syntax of linear-gradient
10 years ago
Aleksander Machniak 15f11bc2a4 Merge branch 'master' of github.com:roundcube/roundcubemail 10 years ago
Aleksander Machniak 78bee8b8b6 Fix regression in SHAA password generation in ldap driver of password plugin (#1490094) 10 years ago
Aleksander Machniak dfa721b5dc Merge pull request #228 from andryyy/patch-1
Fix typo in error message label
10 years ago
andryyy 383724eb97 Update rcmail.php
Typo
10 years ago
Aleksander Machniak 6c6991fb53 Shrinked some images with TinyPNG (saved 38%) 10 years ago
Aleksander Machniak 07fa81dc4e Fix setting flags on servers with no PERMANENTFLAGS response (#1490087) 10 years ago
Aleksander Machniak 063f5bdb77 Update changelog 10 years ago
Pascal Herbert 3533a56806 only changed the needed lines 10 years ago
Pascal Herbert 6cf1866e08 only changed the needed lines 10 years ago
Pascal Herbert de6bf07030 update syntax of linear-gradient 10 years ago
Aleksander Machniak d1c8d7fc25 Support hashing algorithms without mhash() and even hash() extension (#1490076) 10 years ago
Thomas Bruederli 8f43937520 Update Changelog 10 years ago
Thomas Bruederli e0496fc01d Enable/disable siganture commands before exiting the function in new compose window (#1490074) 10 years ago
Thomas Bruederli 7d3be1f3c8 Fix restoring draft messages from localStorage if editor mode differs (#1490016) 10 years ago
Thomas Bruederli 2e713d00f5 Set comm_path env variable after reset 10 years ago
Thomas Bruederli acf8d67c96 Add 'sig_max_lines' config option to defaults (#1490071) 10 years ago
Thomas Bruederli 68b005ca3d Improve user deletion script by using DB transactions and a transaction-like protocol of plugin hook calls 10 years ago
Thomas Bruederli 91a449138e Add output class for commandline scripts 10 years ago
Bartlomiej Nogas 6035e36086 Support for multiple email addresses added 10 years ago
Thomas Bruederli 6646809a31 Fix another regression in metadata response parsing introduced in commit 939380da 10 years ago
Thomas B. 368707964a Merge pull request #221 from bnogas/master
Fix get_metadata() function response, NIL response was introducing an shift
10 years ago
Bartlomiej Nogas 0d273c9a97 Fix get_metadata() function response, NIL response was introducing an shift 10 years ago
Aleksander Machniak dd6f784ec4 Fix syntax error 10 years ago
Aleksander Machniak 000f6ee304 Merge branch 'oracle' 10 years ago
Aleksander Machniak 6d1c76f8a1 Update changelog 10 years ago
Aleksander Machniak ff767a14ff Merge branch 'oracle' 10 years ago
Thomas Bruederli 13bbcd0f59 Fix splitter code to properly work with 1px size borders 10 years ago
Aleksander Machniak c2345747ac Add Oracle driver check in Installer 10 years ago
Aleksander Machniak fb8adc8a19 Remove Oracle driver based on PDO_OCI extension 10 years ago
Aleksander Machniak 7f84924799 Fix long data handling 10 years ago
Aleksander Machniak e7af012bc2 Fix binary operator use for Oracle 10 years ago
Thomas Bruederli 8ef203827f Make noshow attribute for roundcube:label tags actually work as supposed 10 years ago
Aleksander Machniak 8451577659 Added transactions support 10 years ago
Aleksander Machniak d7c91c14f8 Add Oracle driver which uses OCI8 extension - the one that supports CLOB columns 10 years ago
Thomas Bruederli d1cd22a6dd Avoid errors when contacts widget is missing (in derived skins for example) 10 years ago
Thomas Bruederli 1cb23c9368 Access list body through abstract property 10 years ago
Aleksander Machniak abc00f27c5 Initial DDL for Oracle 10 years ago
Aleksander Machniak 83a64265a7 Fixes for Oracle 10 years ago
Aleksander Machniak 848e204ef9 Fix validation of email addresses with IDNA domains (#1490067) 10 years ago
Aleksander Machniak 050b482b38 Merge pull request #216 from MarcoMiltenburg/20140905-index-on-contactgroups
Index IX_contactgroups_user_id was created on the wrong table.
10 years ago
Aleksander Machniak b84a04336b Added Oracle database driver 10 years ago
Aleksander Machniak 34a0902089 Use consistent column/table quoting in sql queries 10 years ago
Thomas Bruederli 0fb7a485a3 Remove obsolete code which is executed in rcmail_output_html::frame() 10 years ago
Thomas Bruederli b6f89a32d8 Make LDAP extension and Net_LDAP3 lib optional in installer check 10 years ago
Thomas Bruederli 7acda7a6f4 Also remove cloned search item from treelist 10 years ago
Aleksander Machniak 8cc65d1f5f Print to STDERR non-terminating errors in CLI mode 10 years ago
Aleksander Machniak dcc4469844 Don't init output in CLI mode
Fixes infinite recurssion on raise_error() call when executing scripts
out of the INSTALL_PATH. Also use 'rcube' if 'rcmail' is not needed.
10 years ago
Thomas Bruederli 1985eb2e6d Describe the installation of 3rd party libs through composer 10 years ago
Aleksander Machniak 315a0b787c Remove deprecated function usage (get_table_name) 10 years ago
Aleksander Machniak 9dd327b400 Remove new_link argument usage, we don't need it anymore 10 years ago
Thomas Bruederli fb3ccf2e09 Don't override argument variable when collecting results 10 years ago
Thomas B. ae69e6a81e Merge pull request #218 from JohnDoh/patch-1
pass click event to general hide_menu call
10 years ago
Thomas B. 921bde431d Merge pull request #217 from JohnDoh/patch-1
add missing event argument for hide_menu calls
10 years ago
JohnDoh a35c9fa428 pass click event to hide_menu call 10 years ago
JohnDoh 3ef97f8de3 add missing event arg 10 years ago
Thomas Bruederli 4a25b69828 Small tweaks for treelist interactions 10 years ago
Aleksander Machniak c489cc1479 Fix call to a member function get_compressed() on a non-object 10 years ago
Thomas Bruederli f50f49a0f2 Remove vcs entry for sample plugin 10 years ago
Thomas Bruederli b3cca2e46d Move LDAP libs to optional 'suggest' block in order to not block installation when php-ldap extension is missing 10 years ago
Aleksander Machniak f2fe48785c Update changelog 10 years ago
Aleksander Machniak 6e6f9ce6a7 Fix compatybility with contextmenu plugin 10 years ago
Aleksander Machniak 4baf96a4ca Added license headers to driver files, CS fixes 10 years ago
Marco Miltenburg f63ff72a45 Index IX_contactgroups_user_id was created on the wrong table. 10 years ago
Aleksander Machniak a1d042fd58 Add rcube_plugin_api::get_plugin() method 10 years ago
Aleksander Machniak 49738f0928 Merge pull request #226 from xzaara/patch-2
Fix error handling
10 years ago
xzaara 54462b0f68 Update password.php
Semicolons instead of colons in  switch statement.
10 years ago
Aleksander Machniak 8b5038befc Fix handling of smart list inputs 10 years ago
Aleksander Machniak 030ebec02f Fix error in MSSQL update script 2013061000.sql (#1490061) 10 years ago
Aleksander Machniak f456c6e2d7 Require PHP 5.3.7 in composer file too 10 years ago
Aleksander Machniak 02f7628314 Fix page title when using search filter (#1490023) 10 years ago
Aleksander Machniak 334bc97927 Fix merging folder annotations for folders with numeric names (only digits) 10 years ago
Aleksander Machniak 57d7bc27c0 Merge pull request #187 from adfinis-sygroup/master
Added Plesk-Driver to Password-Plugin
10 years ago
Cyrill von Wattenwyl 7dc269029d removed unwanted file 10 years ago
Cyrill von Wattenwyl 141d615f39 Fixed merge conflicts 10 years ago
Cyrill von Wattenwyl 11a40dd1fe Merge branch 'master' of https://github.com/roundcube/roundcubemail
Conflicts:
	plugins/password/config.inc.php.dist
10 years ago
Aleksander Machniak ba084313bf Add missing label 10 years ago
Aleksander Machniak 588d1948ca Don't cancel event on parent focus 10 years ago
Aleksander Machniak 613f96839c Added simple API to manage vacation rule 10 years ago
Aleksander Machniak 9cc5a522df Fix so rcube_text2html class does not depend on rcmail_string_replacer 10 years ago
Aleksander Machniak fec4f240e5 Seek vendor/autoload.php in install path to make tests working 10 years ago
Aleksander Machniak d72fdecdf8 Add missing labels 10 years ago
Aleksander Machniak 5a64153f40 Fix vacation times handling 10 years ago
Aleksander Machniak 29c24e647c Get rid of DIRECTORY_SEPARATOR for consistency 10 years ago
Thomas Bruederli a98a4f8bb5 Remove 3rd party libs from our repository and define the dependencies in composer.json-dist.
Also remove the ancient utf8 lib and replace it with 'Patchwork UTF-8 for PHP'.

For direct git checkouts, copy composer.json-dist into composer.json and run
`php composer.phar install` to install the dependencies.
10 years ago
Thomas Bruederli 812f37c5d1 Synchronized localizations with Transifex 10 years ago
Aleksander Machniak 581b6b41fd Make possible to set vacation start/end date and time 10 years ago
Thomas Bruederli 64d49edd78 Maintain a stack of currently running plugin hooks 10 years ago
Thomas Bruederli a873d934f5 Give precedence to plugin.* actions over custom tasks registered by plugins 10 years ago
Aleksander Machniak 35b39c8d7d Fix PERMANENTFLAGS checking in modFlag() 10 years ago
Aleksander Machniak 5f58127eae Added rcube_utils::resolve_url() 10 years ago
Aleksander Machniak 75bbada03b Remove code for PHP<5.3, use PHP_VERSION_ID instead of version_compare() for version checks 10 years ago
Aleksander Machniak e35eab5f94 Fix comm_path update on task switch (#1490041) 10 years ago
Aleksander Machniak d38f11f483 Small alignment improvements on folders list 10 years ago
Thomas B. 827b1dd459 Merge pull request #212 from JohnDoh/patch-1
add include_plugin function for optional plugins
10 years ago
Aleksander Machniak fe03a9074d Add some localizations 10 years ago
Aleksander Machniak f01666a622 Fix handling of email addresses with quoted domain part (#1490040) 10 years ago
Thomas Bruederli f53cb2dca0 Updated Changelog 10 years ago
Thomas Bruederli 3fb36a11fe Add option to focus a treelist widget on clicks to the container (#1489997) 10 years ago
Thomas Bruederli 44b47dfb35 Add config/preference option to disable saving messages in localStorage (#1489979) 10 years ago
Aleksander Machniak fb5e2fb96f Don't fail when trying to create and subscribe a folder that already exists 10 years ago
Aleksander Machniak 674a037d2a Small icon alignment fix 10 years ago
Thomas Bruederli e833e8601f Show icons (person, group) in autocomplete popup 10 years ago
Thomas Bruederli 028734b25c Make LDAP errors available to the application 10 years ago
Thomas Bruederli 96f084e9cf Don't expand recipient groups if they have an email address 10 years ago
Thomas Bruederli 25a9ec7bb7 Allow caller to supply the template for contact name composition 10 years ago
Thomas Bruederli 6a0a4a3a52 Remove empty brackets, slashes and spaces from contact search name 10 years ago
Aleksander Machniak 1299c6a231 Update translations 10 years ago
Aleksander Machniak e66a77e560 Fix contacts list update after adding/deleting/moving a contact (#1490028, #1490033) 10 years ago
JohnDoh 4eee212883 add include_plugin function for optoinal plugins 10 years ago
JohnDoh 0b799bee90 add support for optional plugins 10 years ago
Aleksander Machniak e7cd99ca9e Fixed failing test 10 years ago
Aleksander Machniak 94d778f25c Merge branch 'master' of github.com:roundcube/roundcubemail 10 years ago
Aleksander Machniak 5f17657e82 Support contacts import in GMail CSV format 10 years ago
Cyrill von Wattenwyl 187fd666aa fixed typos and added section in README 10 years ago
Cyrill von Wattenwyl 12967c776c Added Plesk-Driver to Password-Plugin
This Driver allows to change Passwords via Plesk RPC-API
10 years ago

@ -0,0 +1,30 @@
<?php
$config = array();
// Database configuration
$config['db_dsnw'] = 'sqlite:////tmp/sqlite.db?mode=0646';
// Test user credentials
$config['tests_username'] = 'test';
$config['tests_password'] = 'test';
// GreenMail
$config['smtp_port'] = 25;
// Settings required by the tests
$config['create_default_folders'] = true;
$config['skin'] = 'elastic';
$config['support_url'] = 'http://support.url';
// Plugins with tests
$config['plugins'] = [
'archive',
'attachment_reminder',
'markasjunk',
'zipdownload'
];
$config['archive_mbox'] = 'Archive';

@ -0,0 +1,22 @@
#!/bin/bash
# The script is intended for use on Travis with Trusty distribution
DIR=$(dirname $0)
# Enable xdebug for code coverage
if [ "$CODE_COVERAGE" != 1 ]; then phpenv config-rm xdebug.ini || true; fi
cd $DIR/..
cp composer.json-dist composer.json
# Add laravel/dusk for Browser tests
if [ "$BROWSER_TESTS" = 1 ]; then composer require "laravel/dusk:~5.9.1" --no-update; fi
# Remove qr-code as it requires php-gd which is not always available on Travis
# and we don't really need it for tests
composer remove endroid/qr-code --no-update
# Install PHP dependencies
composer install --prefer-dist

@ -0,0 +1,25 @@
#!/bin/bash
# The script is intended for use on Travis with Trusty distribution
# It executes unit and functional tests
DIR=$(dirname $0)
cd $DIR/..
if [ "$CODE_COVERAGE" = 1 ]
then
CODE_COVERAGE_ARGS="--coverage-text"
fi
vendor/bin/phpunit -c tests/phpunit.xml $CODE_COVERAGE_ARGS
if [ "$BROWSER_TESTS" = 1 ] && [ $? = 0 ]
then
.ci/setup.sh \
&& echo "TESTS_MODE: DESKTOP" \
&& TESTS_MODE=desktop vendor/bin/phpunit -c tests/Browser/phpunit.xml \
&& echo "TESTS_MODE: PHONE" \
&& TESTS_MODE=phone vendor/bin/phpunit -c tests/Browser/phpunit.xml \
&& echo "TESTS_MODE: TABLET" \
&& TESTS_MODE=tablet vendor/bin/phpunit -c tests/Browser/phpunit.xml
fi

@ -0,0 +1,30 @@
#!/bin/bash
# The script is intended for use on Travis with Trusty distribution
# It installs in-browser tests dependencies and prepares Roundcube instance
GMV=1.5.11
CHROMEVERSION=$(google-chrome-stable --version | tr -cd [:digit:]. | cut -d . -f 1)
GMARGS="-Dgreenmail.setup.all -Dgreenmail.users=test:test -Dgreenmail.startup.timeout=3000"
# Roundcube tests and instance configuration
cp .ci/config-test.inc.php config/config-test.inc.php
# Make temp and logs writeable
sudo chmod 777 temp logs
# Install javascript dependencies
bin/install-jsdeps.sh
# Compile Elastic's styles
lessc skins/elastic/styles/styles.less > skins/elastic/styles/styles.css
lessc skins/elastic/styles/print.less > skins/elastic/styles/print.css
lessc skins/elastic/styles/embed.less > skins/elastic/styles/embed.css
# Install proper WebDriver version for installed Chrome browser
php tests/Browser/install.php $CHROMEVERSION
# GreenMail server download, setup and start
wget https://repo1.maven.org/maven2/com/icegreen/greenmail-standalone/$GMV/greenmail-standalone-$GMV.jar \
&& (sudo java $GMARGS -jar greenmail-standalone-$GMV.jar &) \
&& sleep 5

8
.gitignore vendored

@ -13,3 +13,11 @@ composer.json
composer.phar
composer.lock
vendor
# javascript dependencies
plugins/enigma/openpgp.min.js
plugins/managesieve/codemirror/
program/js/jquery.min.js
program/js/jstz.min.js
program/js/publickey.js
program/js/tinymce/

@ -1,52 +1,24 @@
# AddDefaultCharset UTF-8
AddType text/x-component .htc
<IfModule mod_php5.c>
php_flag display_errors Off
php_flag log_errors On
# php_value error_log logs/errors
php_value upload_max_filesize 5M
php_value post_max_size 6M
php_value memory_limit 64M
php_flag register_globals Off
php_flag zlib.output_compression Off
php_flag magic_quotes_gpc Off
php_flag magic_quotes_runtime Off
php_flag zend.ze1_compatibility_mode Off
php_flag suhosin.session.encrypt Off
#php_value session.cookie_path /
php_flag session.auto_start Off
php_value session.gc_maxlifetime 21600
php_value session.gc_divisor 500
php_value session.gc_probability 1
</IfModule>
# This is a sample with suggested security and performance options
<IfModule mod_rewrite.c>
Options +SymLinksIfOwnerMatch
RewriteEngine On
RewriteRule ^favicon\.ico$ skins/larry/images/favicon.ico
# security rules:
# - deny access to files not containing a dot or starting with a dot
# in all locations except installer directory
RewriteRule ^(?!installer)(\.?[^\.]+)$ - [F]
RewriteRule ^(?!installer|\.well-known\/|[a-zA-Z0-9]{16})(\.?[^\.]+)$ - [F]
# - deny access to some locations
RewriteRule ^/?(\.git|\.tx|SQL|bin|config|logs|temp|tests|program\/(include|lib|localization|steps)) - [F]
RewriteRule ^/?(\.git|\.tx|SQL|bin|config|logs|temp|tests|vendor|program\/(include|lib|localization|steps)) - [F]
# - deny access to some documentation files
RewriteRule /?(README\.md|composer\.json-dist|composer\.json|package\.xml)$ - [F]
RewriteRule /?(README.*|meta\.json|composer\..*|jsdeps.json)$ - [F]
</IfModule>
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
</IfModule>
<IfModule mod_headers.c>
# replace 'append' with 'merge' for Apache version 2.2.9 and later
#Header append Cache-Control public env=!NO_CACHE
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"
@ -56,4 +28,42 @@ FileETag MTime Size
<IfModule mod_autoindex.c>
Options -Indexes
</ifModule>
</IfModule>
<IfModule mod_headers.c>
# Disable page indexing
Header set X-Robots-Tag "noindex, nofollow"
# replace 'merge' with 'append' for Apache < 2.2.9
#Header merge Cache-Control public env=!NO_CACHE
# Optional security headers
# Only provides increased security if the browser supports those features
# Be careful! Testing is required! They should be adjusted to your installation / user environment
# HSTS - HTTP Strict Transport Security
#Header always set Strict-Transport-Security "max-age=31536000; preload" env=HTTPS
# HPKP - HTTP Public Key Pinning
# Only template - fill with your values
#Header always set Public-Key-Pins "max-age=3600; report-uri=\"\"; pin-sha256=\"\"; pin-sha256=\"\"" env=HTTPS
# X-Xss-Protection
# This header is used to configure the built in reflective XSS protection found in Internet Explorer, Chrome and Safari (Webkit).
#Header set X-XSS-Protection "1; mode=block"
# X-Frame-Options
# The X-Frame-Options header (RFC), or XFO header, protects your visitors against clickjacking attacks
# Already set by php code! Do not activate both options
#Header set X-Frame-Options SAMEORIGIN
# X-Content-Type-Options
# It prevents Google Chrome and Internet Explorer from trying to mime-sniff the content-type of a response away from the one being declared by the server.
#Header set X-Content-Type-Options: "nosniff"
# CSP - Content Security Policy
# for better privacy/security ask browsers to not set the Referer
# more flags for script, stylesheets and images available, read RFC for more information
# Note: "Referrer-Policy: same-origin" is already set by php code.
#Header set Content-Security-Policy "referrer no-referrer"
</IfModule>

@ -0,0 +1,37 @@
language: php
dist: trusty #
sudo: false
matrix:
fast_finish: true
include:
- php: 5.4
- php: 5.5
- php: 5.6
- php: 7.0
- php: 7.1
env: CODE_COVERAGE=1
- php: 7.2
- php: 7.3
dist: bionic # for proper node-less version
env: BROWSER_TESTS=1
addons:
chrome: stable
apt:
packages:
- node-less
- php: 7.4
cache:
directories:
- $HOME/.composer
install:
- .ci/install.sh
script:
- .ci/run.sh
notifications:
email: false

@ -13,6 +13,11 @@ file_filter = program/localization/<lang>/messages.inc
source_file = program/localization/en_US/messages.inc
source_lang = en_US
[roundcube-webmail.timezones]
file_filter = program/localization/<lang>/timezones.inc
source_file = program/localization/en_US/timezones.inc
source_lang = en_US
[roundcube-webmail.plugin-acl]
file_filter = plugins/acl/localization/<lang>.inc
source_file = plugins/acl/localization/en_US.inc
@ -28,6 +33,16 @@ file_filter = plugins/attachment_reminder/localization/<lang>.inc
source_file = plugins/attachment_reminder/localization/en_US.inc
source_lang = en_US
[roundcube-webmail.plugin-emoticons]
file_filter = plugins/emoticons/localization/<lang>.inc
source_file = plugins/emoticons/localization/en_US.inc
source_lang = en_US
[roundcube-webmail.plugin-enigma]
file_filter = plugins/enigma/localization/<lang>.inc
source_file = plugins/enigma/localization/en_US.inc
source_lang = en_US
[roundcube-webmail.plugin-help]
file_filter = plugins/help/localization/<lang>.inc
source_file = plugins/help/localization/en_US.inc
@ -82,4 +97,3 @@ source_lang = en_US
file_filter = plugins/zipdownload/localization/<lang>.inc
source_file = plugins/zipdownload/localization/en_US.inc
source_lang = en_US

File diff suppressed because it is too large Load Diff

@ -3,79 +3,104 @@ INTRODUCTION
This file describes the basic steps to install Roundcube Webmail on your
web server. For additional information, please also consult the project's
wiki page at http://trac.roundcube.net/wiki
wiki page at https://github.com/roundcube/roundcubemail/wiki
REQUIREMENTS
============
* The Apache, Lighttpd, Cherokee or Hiawatha web server
* An IMAP, HTTP and SMTP server
* .htaccess support allowing overrides for DirectoryIndex
* PHP Version 5.3.7 or greater including
- PCRE, DOM, JSON, XML, 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.8.1 or newer
- Mail_mimeDecode 1.5.5 or newer
- Net_SMTP (latest from https://github.com/pear/Net_SMTP/)
* PHP Version 5.4 or greater including:
- PCRE, DOM, JSON, Session, Sockets, OpenSSL, Mbstring, Filter, Ctype (required)
- PHP PDO with driver for either MySQL, PostgreSQL, SQL Server, Oracle or SQLite (required)
- Zip, Fileinfo, Intl, Exif (recommended)
- LDAP for LDAP addressbook support (optional)
- GD, Imagick (optional thumbnails generation, QR-code)
* PEAR and PEAR packages distributed with Roundcube or external:
- Mail_Mime 1.10.0 or newer
- Net_SMTP 1.8.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)
* php.ini options (see .htaccess file):
- error_reporting E_ALL & ~E_NOTICE (or lower)
- memory_limit > 16MB (increase as suitable to support large attachments)
- file_uploads enabled (for attachment upload features)
- Net_Sieve 1.4.3 or newer (for managesieve plugin)
- Crypt_GPG 1.6.3 or newer (for enigma plugin)
- Endroid/QrCode 1.6.0 or newer (https://github.com/endroid/QrCode)
- Kolab/Net_LDAP3 1.0.6 or newer (for LDAP addressbook)
- Masterminds/HTML5 2.5.x (optional HTML parser)
* php.ini options:
- error_reporting E_ALL & ~E_NOTICE & ~E_STRICT
- memory_limit > 16MB
- file_uploads enabled (for uploading attachments and import files)
- session.auto_start disabled
- zend.ze1_compatibility_mode disabled
- suhosin.session.encrypt disabled
- mbstring.func_overload disabled
- 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
* One of the above databases with permission to create tables
* An SMTP server (recommended) or PHP configured for mail delivery
- pcre.backtrack_limit >= 100000
* A MySQL, PostgreSQL, MS SQL Server (2005 or newer), Oracle database
or SQLite support in PHP - with permission to create tables
* Composer installed either locally or globally (https://getcomposer.org)
INSTALLATION
============
1. Decompress and put this folder somewhere inside your document root
2. Make sure that the following directories (and the files within)
1. Decompress and put this folder somewhere inside your document root.
Note: Make sure files have proper owner/group for your setup. If you use
tar command `--no-same-owner` option might be helpful.
2. In case you don't use the so-called "complete" release package,
you have to install PHP and javascript dependencies.
2.1. Install PHP dependencies using composer:
- get composer from https://getcomposer.org/download/
- rename the composer.json-dist file into composer.json
- if you want to use LDAP address books, enable the LDAP libraries in your
composer.json file by moving the items from "suggest" to the "require"
section (remove the explanation texts after the version!).
- run `php composer.phar install --no-dev`
2.2. Install Javascript dependencies by executing `bin/install-jsdeps.sh` script.
3. Make sure that the following directories (and the files within)
are writable by the webserver
- /temp
- /logs
3. Create a new database and a database user for Roundcube (see DATABASE SETUP)
4. Point your browser to http://url-to-roundcube/installer/
5. Follow the instructions of the install script (or see MANUAL CONFIGURATION)
6. After creating and testing the configuration, remove the installer directory
7. Check Known Issues section of this file
8. Done!
4. Create a new database and a database user for Roundcube (see DATABASE SETUP)
5. Point your browser to http://url-to-roundcube/installer/
6. Follow the instructions of the install script (or see MANUAL CONFIGURATION)
7. After creating and testing the configuration, remove the installer directory
------------------------------------------
IMPORTANT: REMOVE THE INSTALLER DIRECTORY!
------------------------------------------
8. If you use git sources compile css files for the Elastic skin (required
lessc >= 1.5.0):
$ cd skins/elastic
$ lessc -x styles/styles.less > styles/styles.css
$ lessc -x styles/print.less > styles/print.css
$ lessc -x styles/embed.less > styles/embed.css
9. Check Known Issues section of this file
CONFIGURATION HINTS
===================
Roundcube writes internal errors to the 'errors' log file located in the logs
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' 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
in the .htaccess file and set the path to the log file accordingly.
PHP errors to be logged there as well, set error_log in php.ini or .htaccess file.
Roundcube forces display_errors=Off and log_errors=On.
By default the session_path settings of PHP are not modified by Roundcube.
By default the session cookie settings of PHP are not modified by Roundcube.
However if you want to limit the session cookies to the directory where
Roundcube resides you can uncomment and configure the according line
in the .htaccess file.
Roundcube resides you can set session.cookie_path in the php.ini or .htaccess file.
More about PHP settings: https://github.com/roundcube/roundcubemail/wiki/Installation#php-configuration
DATABASE SETUP
==============
Note: Database for Roundcube must use UTF-8 character set.
Note: See defaults.inc.php file for examples of DSN configuration.
* MySQL
-------
@ -84,9 +109,9 @@ importing the table layout and granting the proper permissions to the
roundcube user. Here is an example of that procedure:
# mysql
> CREATE DATABASE roundcubemail /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
> GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost
IDENTIFIED BY 'password';
> CREATE DATABASE roundcubemail CHARACTER SET utf8 COLLATE utf8_general_ci;
> CREATE USER roundcube@localhost IDENTIFIED BY 'password';
> GRANT ALL PRIVILEGES ON roundcubemail.* TO roundcube@localhost;
> quit
# mysql roundcubemail < SQL/mysql.initial.sql
@ -95,6 +120,11 @@ Note 1: 'password' is the master password for the roundcube user. It is strongly
recommended you replace this with a more secure password. Please keep in
mind: You need to specify this password later in 'config/db.inc.php'.
Note 2: When using MySQL < 5.7.7 or MariaDB < 10.2.2 it is required to configure
the database engine with:
innodb_large_prefix=true
innodb_file_format=Barracuda
* SQLite
--------
@ -121,7 +151,7 @@ createuser and createdb commands.
* Microsoft SQL Server
----------------------
Language/locale of the database must be set to us_english (1033). More info
on this at http://trac.roundcube.net/ticket/1488918.
on this at https://github.com/roundcube/roundcubemail/issues/4078.
Database cleaning
@ -139,12 +169,42 @@ to config/config.inc.php and make the necessary adjustments according to your
environment and your needs. More configuration options can be copied from the
config/defaults.inc.php file into your local config.inc.php file as needed.
Read the comments above the individual configuration options to find out what
they do or read http://trac.roundcube.net/wiki/Howto_Install for even more
guidance.
they do or read https://github.com/roundcube/roundcubemail/wiki/Installation
for even more guidance.
The maximum size of email attachments and other file uploads is controlled by
PHP settings: upload_max_filesize and post_max_size. Read more about PHP
settings at https://github.com/roundcube/roundcubemail/wiki/Installation#php-configuration.
SECURE YOUR INSTALLATION
========================
Access through the webserver to the following directories should be denied:
/config
/temp
/logs
Roundcube uses .htaccess files to protect these directories, so be sure to
allow override of the Limit directives to get them taken into account. The
package also ships a .htaccess file in the root directory which defines some
rewrite rules. In order to properly secure your installation, please enable
mod_rewrite for Apache webserver and double check access to the above listed
directories and their contents is denied.
You can also modify the default .htaccess file. This is necessary to
increase the allowed size of file attachments, for example:
php_value upload_max_filesize 2M
NOTE: In Apache 2.4, support for .htaccess files has been disabled by
default. Therefore you first need to enable this in your Apache main or
virtual host config by with:
AllowOverride all
For non-apache web servers add equivalent configuration parameters to deny
direct access to these private resources.
It is also recommended to change the document root to <install path>/public_html
after installation if Roundcube runs at root of a dedicated virtual host. This
will automatically keep sensitive files out of reach for http requests.
UPGRADING
@ -195,11 +255,6 @@ To enable these features in apache the following modules need to be enabled:
The optimisation is already included in the .htaccess file in the top
directory of your installation.
If you are using Apache version 2.2.9 and later, in the .htaccess file
change the 'append' word to 'merge' for a more correct response. Keeping
as 'append' shouldn't cause any problems though changing to merge will
eliminate the possibility of duplicate 'public' headers in Cache-control.
Lighttpd:
---------
With Lightty the addition of Expire: tags by mod_expire is incompatible with
@ -236,3 +291,25 @@ KNOWN ISSUES
Installations with uw-imap server should set imap_disabled_caps = array('ESEARCH')
in main configuration file. ESEARCH implementation in this server is broken (#1489184).
PHP >= 5.6 validates the ssl certificates by default. It means that
if IMAP/SMTP certificates are self-signed or use wrong host name you'll get
connection errors. A solution in such cases is to set imap_conn_options,
smtp_conn_options and managesieve_conn_options in a way described in config/defaults.inc.php.
If you have problems with temp files or non-working logs make sure temp and logs folders
are writeable to the user used by http server. Access to them may also be blocked by
SELINUX. Here's some sample commands for SELINUX:
$ semanage fcontext -a -t httpd_sys_rw_content_t "/path_to_roundcube/logs(/.*)?"
$ semanage fcontext -a -t httpd_sys_rw_content_t "/path_to_roundcube/temp(/.*)?"
$ restorecon -Rv /path_to_roundcube/
Microsoft IIS Server by default does not support WOFF fonts used in Elastic skin. It might be
needed to add following MIME Types definitions (via web.config or IIS Manager):
.woff application/font-woff
.woff2 application/font-woff2
When installing on Windows be aware we're using symbolic links which may need an additional
attention. See https://github.com/roundcube/roundcubemail/issues/7151.

@ -1,7 +1,8 @@
Roundcube Webmail
=================
[roundcube.net](http://roundcube.net)
[roundcube.net](https://roundcube.net)
[![Build Status](https://api.travis-ci.org/roundcube/roundcubemail.svg?branch=master)](https://travis-ci.org/roundcube/roundcubemail)
ATTENTION
---------
@ -18,17 +19,11 @@ application-like user interface. It provides full functionality you expect
from an email client, including MIME support, address book, folder management,
message searching and spell checking. Roundcube Webmail is written in PHP and
requires the MySQL, PostgreSQL or SQLite database. With its plugin API it is
easily extendable and the user interface is fully customizable using skins
which are pure XHTML and CSS 2.
easily extendable and the user interface is fully customizable using skins.
The code is mainly written in PHP and is designed to run on a webserver.
It includes other open-source classes/libraries from [PEAR][pear],
an IMAP library derived from [IlohaMail][iloha] the [TinyMCE][tinymce] rich
text editor, [Googiespell][googiespell] library for spell checking or
the [WASHTML][washtml] sanitizer by Frederic Motte.
The current default skin 'Larry' was kindly created by FLINT / Büro für
Gestaltung, Berne, Switzerland.
The code designed to run on a webserver is mainly written in PHP and Javascript.
It includes a custom framework with an IMAP library derived from [IlohaMail][iloha]
and requires a set of external libraries (see composer.json and jsdeps.json files).
INSTALLATION
@ -40,6 +35,19 @@ If you're updating an older version of Roundcube please follow the steps
described in the UPGRADING file.
BROWSER SUPPORT
---------------
Roundcube uses jQuery 3.x for its client and therefore inherits the browser
support from there. This currently includes:
- Chrome: (Current - 1) and Current
- Edge: (Current - 1) and Current
- Firefox: (Current - 1) and Current, ESR
- Internet Explorer: 9+ (11+ for the Elastic skin)
- Safari: (Current - 1) and Current
- Opera: Current
LICENSE
-------
This program is free software: you can redistribute it and/or modify
@ -80,22 +88,17 @@ 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:
hello(at)roundcube(dot)net
[pear]: http://pear.php.net
[iloha]: http://sourceforge.net/projects/ilohamail/
[tinymce]: http://www.tinymce.com/
[googiespell]: http://orangoo.com/labs/GoogieSpell/
[washtml]: http://www.ubixis.com/washtml/
[kmgerich]: http://kmgerich.com/
[gpl]: http://www.gnu.org/licenses/
[license]: http://roundcube.net/license
[contrib]: http://roundcube.net/contribute
[support]: http://roundcube.net/support
[tracreport]: http://trac.roundcube.net/wiki/Howto_ReportIssues
[iloha]: https://sourceforge.net/projects/ilohamail/
[gpl]: https://www.gnu.org/licenses/
[license]: https://roundcube.net/license
[contrib]: https://roundcube.net/contribute
[support]: https://roundcube.net/support
[githubissues]: https://github.com/roundcube/roundcubemail/issues

@ -1,15 +1,13 @@
CREATE TABLE [dbo].[cache] (
[user_id] [int] NOT NULL ,
[cache_key] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
[created] [datetime] NOT NULL ,
[cache_key] [varchar] (128) COLLATE Latin1_General_CS_AS NOT NULL ,
[expires] [datetime] NULL ,
[data] [text] COLLATE Latin1_General_CI_AI NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
CREATE TABLE [dbo].[cache_shared] (
[cache_key] [varchar] (255) COLLATE Latin1_General_CI_AI NOT NULL ,
[created] [datetime] NOT NULL ,
[cache_key] [varchar] (255) COLLATE Latin1_General_CS_AS NOT NULL ,
[expires] [datetime] NULL ,
[data] [text] COLLATE Latin1_General_CI_AI NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
@ -17,7 +15,7 @@ GO
CREATE TABLE [dbo].[cache_index] (
[user_id] [int] NOT NULL ,
[mailbox] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
[mailbox] [varchar] (128) COLLATE Latin1_General_CS_AS NOT NULL ,
[expires] [datetime] NULL ,
[valid] [char] (1) COLLATE Latin1_General_CI_AI NOT NULL ,
[data] [text] COLLATE Latin1_General_CI_AI NOT NULL
@ -26,7 +24,7 @@ GO
CREATE TABLE [dbo].[cache_thread] (
[user_id] [int] NOT NULL ,
[mailbox] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
[mailbox] [varchar] (128) COLLATE Latin1_General_CS_AS NOT NULL ,
[expires] [datetime] NULL ,
[data] [text] COLLATE Latin1_General_CI_AI NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
@ -34,7 +32,7 @@ GO
CREATE TABLE [dbo].[cache_messages] (
[user_id] [int] NOT NULL ,
[mailbox] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
[mailbox] [varchar] (128) COLLATE Latin1_General_CS_AS NOT NULL ,
[uid] [int] NOT NULL ,
[expires] [datetime] NULL ,
[data] [text] COLLATE Latin1_General_CI_AI NOT NULL ,
@ -90,7 +88,6 @@ GO
CREATE TABLE [dbo].[session] (
[sess_id] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
[created] [datetime] NOT NULL ,
[changed] [datetime] NULL ,
[ip] [varchar] (40) COLLATE Latin1_General_CI_AI NOT NULL ,
[vars] [text] COLLATE Latin1_General_CI_AI NOT NULL
@ -99,18 +96,20 @@ GO
CREATE TABLE [dbo].[users] (
[user_id] [int] IDENTITY (1, 1) NOT NULL ,
[username] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
[username] [varchar] (128) COLLATE Latin1_General_CS_AS NOT NULL ,
[mail_host] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
[created] [datetime] NOT NULL ,
[last_login] [datetime] NULL ,
[language] [varchar] (5) COLLATE Latin1_General_CI_AI NULL ,
[failed_login] [datetime] NULL ,
[failed_login_counter] [int] NULL ,
[language] [varchar] (16) COLLATE Latin1_General_CI_AI NULL ,
[preferences] [text] COLLATE Latin1_General_CI_AI NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
CREATE TABLE [dbo].[dictionary] (
[user_id] [int] ,
[language] [varchar] (5) COLLATE Latin1_General_CI_AI NOT NULL ,
[language] [varchar] (16) COLLATE Latin1_General_CI_AI NOT NULL ,
[data] [text] COLLATE Latin1_General_CI_AI NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
@ -124,12 +123,36 @@ CREATE TABLE [dbo].[searches] (
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
CREATE TABLE [dbo].[filestore] (
[file_id] [int] IDENTITY (1, 1) NOT NULL ,
[user_id] [int] NOT NULL ,
[context] [varchar] (32) COLLATE Latin1_General_CI_AI NOT NULL ,
[filename] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
[mtime] [int] NOT NULL ,
[data] [text] COLLATE Latin1_General_CI_AI NULL ,
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
CREATE TABLE [dbo].[system] (
[name] [varchar] (64) COLLATE Latin1_General_CI_AI NOT NULL ,
[value] [text] COLLATE Latin1_General_CI_AI NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[cache] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[user_id],[cache_key]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[cache_shared] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[cache_key]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[cache_index] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
@ -200,6 +223,13 @@ ALTER TABLE [dbo].[searches] WITH NOCHECK ADD
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[filestore] WITH NOCHECK ADD
CONSTRAINT [PK_filestore_file_id] PRIMARY KEY CLUSTERED
(
[file_id]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[system] WITH NOCHECK ADD
CONSTRAINT [PK_system_name] PRIMARY KEY CLUSTERED
(
@ -209,12 +239,7 @@ GO
ALTER TABLE [dbo].[cache] ADD
CONSTRAINT [DF_cache_user_id] DEFAULT ('0') FOR [user_id],
CONSTRAINT [DF_cache_cache_key] DEFAULT ('') FOR [cache_key],
CONSTRAINT [DF_cache_created] DEFAULT (getdate()) FOR [created]
GO
ALTER TABLE [dbo].[cache_shared] ADD
CONSTRAINT [DF_cache_shared_created] DEFAULT (getdate()) FOR [created]
CONSTRAINT [DF_cache_cache_key] DEFAULT ('') FOR [cache_key]
GO
ALTER TABLE [dbo].[cache_index] ADD
@ -225,12 +250,6 @@ ALTER TABLE [dbo].[cache_messages] ADD
CONSTRAINT [DF_cache_messages_flags] DEFAULT (0) FOR [flags]
GO
CREATE INDEX [IX_cache_user_id] ON [dbo].[cache]([user_id]) ON [PRIMARY]
GO
CREATE INDEX [IX_cache_cache_key] ON [dbo].[cache]([cache_key]) ON [PRIMARY]
GO
CREATE INDEX [IX_cache_shared_cache_key] ON [dbo].[cache_shared]([cache_key]) ON [PRIMARY]
GO
@ -280,7 +299,7 @@ ALTER TABLE [dbo].[contactgroups] ADD
CONSTRAINT [CK_contactgroups_del] CHECK ([del] = '1' or [del] = '0')
GO
CREATE INDEX [IX_contactgroups_user_id] ON [dbo].[contacts]([user_id]) ON [PRIMARY]
CREATE INDEX [IX_contactgroups_user_id] ON [dbo].[contactgroups]([user_id]) ON [PRIMARY]
GO
ALTER TABLE [dbo].[contactgroupmembers] ADD
@ -313,13 +332,15 @@ GO
ALTER TABLE [dbo].[session] ADD
CONSTRAINT [DF_session_sess_id] DEFAULT ('') FOR [sess_id],
CONSTRAINT [DF_session_created] DEFAULT (getdate()) FOR [created],
CONSTRAINT [DF_session_ip] DEFAULT ('') FOR [ip]
GO
CREATE INDEX [IX_session_changed] ON [dbo].[session]([changed]) ON [PRIMARY]
GO
CREATE INDEX [IX_filestore_user_id] ON [dbo].[filestore]([user_id]) ON [PRIMARY]
GO
ALTER TABLE [dbo].[users] ADD
CONSTRAINT [DF_users_username] DEFAULT ('') FOR [username],
CONSTRAINT [DF_users_mail_host] DEFAULT ('') FOR [mail_host],
@ -340,6 +361,9 @@ GO
CREATE UNIQUE INDEX [IX_searches_user_type_name] ON [dbo].[searches]([user_id],[type],[name]) ON [PRIMARY]
GO
CREATE UNIQUE INDEX [IX_filestore_user_id_context_filename] ON [dbo].[filestore]([user_id],[context],[filename]) ON [PRIMARY]
GO
ALTER TABLE [dbo].[identities] ADD CONSTRAINT [FK_identities_user_id]
FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id])
ON DELETE CASCADE ON UPDATE CASCADE
@ -385,6 +409,11 @@ ALTER TABLE [dbo].[searches] ADD CONSTRAINT [FK_searches_user_id]
ON DELETE CASCADE ON UPDATE CASCADE
GO
ALTER TABLE [dbo].[filestore] ADD CONSTRAINT [FK_filestore_user_id]
FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id])
ON DELETE CASCADE ON UPDATE CASCADE
GO
-- Use trigger instead of foreign key (#1487112)
-- "Introducing FOREIGN KEY constraint ... may cause cycles or multiple cascade paths."
CREATE TRIGGER [contact_delete_member] ON [dbo].[contacts]
@ -393,6 +422,6 @@ CREATE TRIGGER [contact_delete_member] ON [dbo].[contacts]
WHERE [contact_id] IN (SELECT [contact_id] FROM deleted)
GO
INSERT INTO [dbo].[system] ([name], [value]) VALUES ('roundcube-version', '2014042900')
INSERT INTO [dbo].[system] ([name], [value]) VALUES ('roundcube-version', '2020020101')
GO

@ -1,12 +1,12 @@
ALTER TABLE [dbo].[cache] ADD COLUMN [expires] [datetime] NULL
ALTER TABLE [dbo].[cache] ADD [expires] [datetime] NULL
GO
ALTER TABLE [dbo].[cache_shared] ADD COLUMN [expires] [datetime] NULL
ALTER TABLE [dbo].[cache_shared] ADD [expires] [datetime] NULL
GO
ALTER TABLE [dbo].[cache_index] ADD COLUMN [expires] [datetime] NULL
ALTER TABLE [dbo].[cache_index] ADD [expires] [datetime] NULL
GO
ALTER TABLE [dbo].[cache_thread] ADD COLUMN [expires] [datetime] NULL
ALTER TABLE [dbo].[cache_thread] ADD [expires] [datetime] NULL
GO
ALTER TABLE [dbo].[cache_messages] ADD COLUMN [expires] [datetime] NULL
ALTER TABLE [dbo].[cache_messages] ADD [expires] [datetime] NULL
GO
UPDATE [dbo].[cache] SET [expires] = DATEADD(second, 604800, [created])

@ -0,0 +1,4 @@
ALTER TABLE [dbo].[users] ADD [failed_login] [datetime] NULL
GO
ALTER TABLE [dbo].[users] ADD [failed_login_counter] [int] NULL
GO

@ -0,0 +1,2 @@
ALTER TABLE [dbo].[session] DROP COLUMN [created]
GO

@ -0,0 +1,2 @@
ALTER TABLE [dbo].[session] ALTER COLUMN [ip] [varchar] (40) COLLATE Latin1_General_CI_AI NOT NULL
GO

@ -0,0 +1,36 @@
DROP TABLE [dbo].[cache]
GO
DROP TABLE [dbo].[cache_shared]
GO
CREATE TABLE [dbo].[cache] (
[user_id] [int] NOT NULL ,
[cache_key] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
[expires] [datetime] NULL ,
[data] [text] COLLATE Latin1_General_CI_AI NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
CREATE TABLE [dbo].[cache_shared] (
[cache_key] [varchar] (255) COLLATE Latin1_General_CI_AI NOT NULL ,
[expires] [datetime] NULL ,
[data] [text] COLLATE Latin1_General_CI_AI NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[cache] ADD
CONSTRAINT [DF_cache_user_id] DEFAULT ('0') FOR [user_id],
CONSTRAINT [DF_cache_cache_key] DEFAULT ('') FOR [cache_key],
GO
CREATE INDEX [IX_cache_expires] ON [dbo].[cache]([expires]) ON [PRIMARY]
GO
CREATE INDEX [IX_cache_shared_expires] ON [dbo].[cache_shared]([expires]) ON [PRIMARY]
GO
ALTER TABLE [dbo].[cache] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED (
[user_id],[cache_key]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[cache_shared] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED (
[cache_key]
) ON [PRIMARY]
GO

@ -0,0 +1,24 @@
CREATE TABLE [dbo].[filestore] (
[file_id] [int] IDENTITY (1, 1) NOT NULL ,
[user_id] [int] NOT NULL ,
[filename] [varchar] (128) COLLATE Latin1_General_CI_AI NOT NULL ,
[mtime] [int] NOT NULL ,
[data] [text] COLLATE Latin1_General_CI_AI NULL ,
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
ALTER TABLE [dbo].[filestore] WITH NOCHECK ADD
CONSTRAINT [PK_filestore_file_id] PRIMARY KEY CLUSTERED
(
[file_id]
) ON [PRIMARY]
GO
CREATE INDEX [IX_filestore_user_id] ON [dbo].[filestore]([user_id]) ON [PRIMARY]
GO
ALTER TABLE [dbo].[filestore] ADD CONSTRAINT [FK_filestore_user_id]
FOREIGN KEY ([user_id]) REFERENCES [dbo].[users] ([user_id])
ON DELETE CASCADE ON UPDATE CASCADE
GO

@ -0,0 +1,9 @@
ALTER TABLE [dbo].[filestore] ADD COLUMN [context] [varchar] (32) COLLATE Latin1_General_CI_AI NOT NULL
GO
UPDATE [dbo].[filestore] SET [dbo].[context] = 'enigma'
GO
CREATE UNIQUE INDEX [IX_filestore_user_id_context_filename] ON [dbo].[filestore]([user_id],[context],[filename]) ON [PRIMARY]
GO

@ -0,0 +1,18 @@
ALTER TABLE [dbo].[cache] ALTER COLUMN
[cache_key] [varchar] (128) COLLATE Latin1_General_CS_AS NOT NULL
GO
ALTER TABLE [dbo].[cache_shared] ALTER COLUMN
[cache_key] [varchar] (255) COLLATE Latin1_General_CS_AS NOT NULL
GO
ALTER TABLE [dbo].[cache_index] ALTER COLUMN
[mailbox] [varchar] (128) COLLATE Latin1_General_CS_AS NOT NULL
GO
ALTER TABLE [dbo].[cache_messages] ALTER COLUMN
[mailbox] [varchar] (128) COLLATE Latin1_General_CS_AS NOT NULL
GO
ALTER TABLE [dbo].[cache_thread] ALTER COLUMN
[mailbox] [varchar] (128) COLLATE Latin1_General_CS_AS NOT NULL
GO
ALTER TABLE [dbo].[users] ALTER COLUMN
[username] [varchar] (128) COLLATE Latin1_General_CS_AS NOT NULL
GO

@ -0,0 +1,4 @@
ALTER TABLE [dbo].[users] ALTER COLUMN [language] [varchar] (16) COLLATE Latin1_General_CI_AI NULL
GO
ALTER TABLE [dbo].[dictionary] ALTER COLUMN [language] [varchar] (16) COLLATE Latin1_General_CI_AI NOT NULL
GO

@ -7,13 +7,12 @@
CREATE TABLE `session` (
`sess_id` varchar(128) NOT NULL,
`created` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
`changed` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
`ip` varchar(40) NOT NULL,
`vars` mediumtext NOT NULL,
PRIMARY KEY(`sess_id`),
INDEX `changed_index` (`changed`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
-- Table structure for table `users`
@ -24,38 +23,38 @@ CREATE TABLE `users` (
`mail_host` varchar(128) NOT NULL,
`created` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
`last_login` datetime DEFAULT NULL,
`language` varchar(5),
`failed_login` datetime DEFAULT NULL,
`failed_login_counter` int(10) UNSIGNED DEFAULT NULL,
`language` varchar(16),
`preferences` longtext,
PRIMARY KEY(`user_id`),
UNIQUE `username` (`username`, `mail_host`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
-- Table structure for table `cache`
CREATE TABLE `cache` (
`user_id` int(10) UNSIGNED NOT NULL,
`cache_key` varchar(128) /*!40101 CHARACTER SET ascii COLLATE ascii_general_ci */ NOT NULL,
`created` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
`cache_key` varchar(128) BINARY NOT NULL,
`expires` datetime DEFAULT NULL,
`data` longtext NOT NULL,
PRIMARY KEY (`user_id`, `cache_key`),
CONSTRAINT `user_id_fk_cache` FOREIGN KEY (`user_id`)
REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
INDEX `expires_index` (`expires`),
INDEX `user_cache_index` (`user_id`,`cache_key`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
INDEX `expires_index` (`expires`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
-- Table structure for table `cache_shared`
CREATE TABLE `cache_shared` (
`cache_key` varchar(255) /*!40101 CHARACTER SET ascii COLLATE ascii_general_ci */ NOT NULL,
`created` datetime NOT NULL DEFAULT '1000-01-01 00:00:00',
`cache_key` varchar(255) BINARY NOT NULL,
`expires` datetime DEFAULT NULL,
`data` longtext NOT NULL,
INDEX `expires_index` (`expires`),
INDEX `cache_key_index` (`cache_key`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
PRIMARY KEY (`cache_key`),
INDEX `expires_index` (`expires`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
-- Table structure for table `cache_index`
@ -70,7 +69,7 @@ CREATE TABLE `cache_index` (
REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
INDEX `expires_index` (`expires`),
PRIMARY KEY (`user_id`, `mailbox`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
-- Table structure for table `cache_thread`
@ -84,7 +83,7 @@ CREATE TABLE `cache_thread` (
REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
INDEX `expires_index` (`expires`),
PRIMARY KEY (`user_id`, `mailbox`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
-- Table structure for table `cache_messages`
@ -100,7 +99,7 @@ CREATE TABLE `cache_messages` (
REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
INDEX `expires_index` (`expires`),
PRIMARY KEY (`user_id`, `mailbox`, `uid`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
-- Table structure for table `contacts`
@ -120,7 +119,7 @@ CREATE TABLE `contacts` (
CONSTRAINT `user_id_fk_contacts` FOREIGN KEY (`user_id`)
REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
INDEX `user_contacts_index` (`user_id`,`del`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
-- Table structure for table `contactgroups`
@ -134,7 +133,7 @@ CREATE TABLE `contactgroups` (
CONSTRAINT `user_id_fk_contactgroups` FOREIGN KEY (`user_id`)
REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
INDEX `contactgroups_user_index` (`user_id`,`del`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
CREATE TABLE `contactgroupmembers` (
`contactgroup_id` int(10) UNSIGNED NOT NULL,
@ -162,26 +161,27 @@ CREATE TABLE `identities` (
`email` varchar(128) NOT NULL,
`reply-to` varchar(128) NOT NULL DEFAULT '',
`bcc` varchar(128) NOT NULL DEFAULT '',
`signature` text,
`signature` longtext,
`html_signature` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY(`identity_id`),
CONSTRAINT `user_id_fk_identities` FOREIGN KEY (`user_id`)
REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
INDEX `user_identities_index` (`user_id`, `del`),
INDEX `email_identities_index` (`email`, `del`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
-- Table structure for table `dictionary`
CREATE TABLE `dictionary` (
`user_id` int(10) UNSIGNED DEFAULT NULL,
`language` varchar(5) NOT NULL,
`id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, -- redundant, for compat. with Galera Cluster
`user_id` int(10) UNSIGNED DEFAULT NULL, -- NULL here is for "shared dictionaries"
`language` varchar(16) NOT NULL,
`data` longtext NOT NULL,
CONSTRAINT `user_id_fk_dictionary` FOREIGN KEY (`user_id`)
REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
UNIQUE `uniqueness` (`user_id`, `language`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
-- Table structure for table `searches`
@ -196,8 +196,22 @@ CREATE TABLE `searches` (
CONSTRAINT `user_id_fk_searches` FOREIGN KEY (`user_id`)
REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
UNIQUE `uniqueness` (`user_id`, `type`, `name`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
-- Table structure for table `filestore`
CREATE TABLE `filestore` (
`file_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`user_id` int(10) UNSIGNED NOT NULL,
`context` varchar(32) NOT NULL,
`filename` varchar(128) NOT NULL,
`mtime` int(10) NOT NULL,
`data` longtext NOT NULL,
PRIMARY KEY (`file_id`),
CONSTRAINT `user_id_fk_filestore` FOREIGN KEY (`user_id`)
REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
UNIQUE `uniqueness` (`user_id`, `context`, `filename`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
-- Table structure for table `system`
@ -205,8 +219,8 @@ CREATE TABLE `system` (
`name` varchar(64) NOT NULL,
`value` mediumtext,
PRIMARY KEY(`name`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */;
/*!40014 SET FOREIGN_KEY_CHECKS=1 */;
INSERT INTO system (name, value) VALUES ('roundcube-version', '2014042900');
INSERT INTO `system` (`name`, `value`) VALUES ('roundcube-version', '2020020101');

@ -0,0 +1 @@
ALTER TABLE `identities` CHANGE `signature` `signature` longtext;

@ -0,0 +1,3 @@
ALTER TABLE `users`
ADD `failed_login` datetime DEFAULT NULL,
ADD `failed_login_counter` int(10) UNSIGNED DEFAULT NULL;

@ -0,0 +1 @@
ALTER TABLE `session` DROP COLUMN `created`;

@ -0,0 +1 @@
ALTER TABLE `session` MODIFY `ip` varchar(40) NOT NULL;

@ -0,0 +1,24 @@
ALTER TABLE `dictionary` ADD COLUMN `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST; -- redundant, for compat. with Galera Cluster
DROP TABLE `cache`;
DROP TABLE `cache_shared`;
CREATE TABLE `cache` (
`user_id` int(10) UNSIGNED NOT NULL,
`cache_key` varchar(128) /*!40101 CHARACTER SET ascii COLLATE ascii_general_ci */ NOT NULL,
`expires` datetime DEFAULT NULL,
`data` longtext NOT NULL,
PRIMARY KEY (`user_id`, `cache_key`),
CONSTRAINT `user_id_fk_cache` FOREIGN KEY (`user_id`)
REFERENCES `users`(`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
INDEX `expires_index` (`expires`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;
CREATE TABLE `cache_shared` (
`cache_key` varchar(255) /*!40101 CHARACTER SET ascii COLLATE ascii_general_ci */ NOT NULL,
`expires` datetime DEFAULT NULL,
`data` longtext NOT NULL,
PRIMARY KEY (`cache_key`),
INDEX `expires_index` (`expires`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;

@ -0,0 +1,11 @@
CREATE TABLE `filestore` (
`file_id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`user_id` int(10) UNSIGNED NOT NULL,
`filename` varchar(128) NOT NULL,
`mtime` int(10) NOT NULL,
`data` longtext NOT NULL,
PRIMARY KEY (`file_id`),
CONSTRAINT `user_id_fk_filestore` FOREIGN KEY (`user_id`)
REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE,
UNIQUE `uniqueness` (`user_id`, `filename`)
) /*!40000 ENGINE=INNODB */ /*!40101 CHARACTER SET utf8 COLLATE utf8_general_ci */;

@ -0,0 +1,7 @@
ALTER TABLE `filestore` ADD COLUMN `context` varchar(32) NOT NULL;
UPDATE `filestore` SET `context` = 'enigma';
ALTER TABLE `filestore` DROP FOREIGN KEY `user_id_fk_filestore`;
ALTER TABLE `filestore` DROP INDEX `uniqueness`;
ALTER TABLE `filestore` ADD UNIQUE INDEX `uniqueness` (`user_id`, `context`, `filename`);
ALTER TABLE `filestore` ADD CONSTRAINT `user_id_fk_filestore` FOREIGN KEY (`user_id`)
REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;

@ -0,0 +1,2 @@
ALTER TABLE `cache` CHANGE `cache_key` `cache_key` varchar(128) BINARY NOT NULL;
ALTER TABLE `cache_shared` CHANGE `cache_key` `cache_key` varchar(255) BINARY NOT NULL;

@ -0,0 +1,2 @@
ALTER TABLE `users` MODIFY `language` varchar(16);
ALTER TABLE `dictionary` MODIFY `language` varchar(16) NOT NULL;

@ -0,0 +1,21 @@
ALTER TABLE `session` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `users` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `cache` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `cache_shared` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `cache_index` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `cache_thread` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `cache_messages` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `contacts` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `contactgroups` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `identities` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `dictionary` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `searches` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `filestore` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `system` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE `users` CHANGE `username` `username` varchar(128) BINARY NOT NULL;
ALTER TABLE `cache` CHANGE `cache_key` `cache_key` varchar(128) BINARY NOT NULL;
ALTER TABLE `cache_shared` CHANGE `cache_key` `cache_key` varchar(255) BINARY NOT NULL;
ALTER TABLE `cache_index` CHANGE `mailbox` `mailbox` varchar(255) BINARY NOT NULL;
ALTER TABLE `cache_thread` CHANGE `mailbox` `mailbox` varchar(255) BINARY NOT NULL;
ALTER TABLE `cache_messages` CHANGE `mailbox` `mailbox` varchar(255) BINARY NOT NULL;

@ -0,0 +1,241 @@
-- Roundcube Webmail initial database structure
-- This was tested with Oracle 11g
CREATE TABLE "users" (
"user_id" integer PRIMARY KEY,
"username" varchar(128) NOT NULL,
"mail_host" varchar(128) NOT NULL,
"created" timestamp with time zone DEFAULT current_timestamp NOT NULL,
"last_login" timestamp with time zone DEFAULT NULL,
"failed_login" timestamp with time zone DEFAULT NULL,
"failed_login_counter" integer DEFAULT NULL,
"language" varchar(16),
"preferences" long DEFAULT NULL,
CONSTRAINT "users_username_key" UNIQUE ("username", "mail_host")
);
CREATE SEQUENCE "users_seq"
START WITH 1 INCREMENT BY 1 NOMAXVALUE;
CREATE TRIGGER "users_seq_trig"
BEFORE INSERT ON "users" FOR EACH ROW
BEGIN
:NEW."user_id" := "users_seq".nextval;
END;
/
CREATE TABLE "session" (
"sess_id" varchar(128) NOT NULL PRIMARY KEY,
"changed" timestamp with time zone DEFAULT current_timestamp NOT NULL,
"ip" varchar(41) NOT NULL,
"vars" long NOT NULL
);
CREATE INDEX "session_changed_idx" ON "session" ("changed");
CREATE TABLE "identities" (
"identity_id" integer PRIMARY KEY,
"user_id" integer NOT NULL
REFERENCES "users" ("user_id") ON DELETE CASCADE,
"changed" timestamp with time zone DEFAULT current_timestamp NOT NULL,
"del" smallint DEFAULT 0 NOT NULL,
"standard" smallint DEFAULT 0 NOT NULL,
"name" varchar(128) NOT NULL,
"organization" varchar(128),
"email" varchar(128) NOT NULL,
"reply-to" varchar(128),
"bcc" varchar(128),
"signature" long,
"html_signature" integer DEFAULT 0 NOT NULL
);
CREATE INDEX "identities_user_id_idx" ON "identities" ("user_id", "del");
CREATE INDEX "identities_email_idx" ON "identities" ("email", "del");
CREATE SEQUENCE "identities_seq"
START WITH 1 INCREMENT BY 1 NOMAXVALUE;
CREATE TRIGGER "identities_seq_trig"
BEFORE INSERT ON "identities" FOR EACH ROW
BEGIN
:NEW."identity_id" := "identities_seq".nextval;
END;
/
CREATE TABLE "contacts" (
"contact_id" integer PRIMARY KEY,
"user_id" integer NOT NULL
REFERENCES "users" ("user_id") ON DELETE CASCADE,
"changed" timestamp with time zone DEFAULT current_timestamp NOT NULL,
"del" smallint DEFAULT 0 NOT NULL,
"name" varchar(128) DEFAULT NULL,
"email" varchar(4000) DEFAULT NULL,
"firstname" varchar(128) DEFAULT NULL,
"surname" varchar(128) DEFAULT NULL,
"vcard" long,
"words" varchar(4000)
);
CREATE INDEX "contacts_user_id_idx" ON "contacts" ("user_id", "del");
CREATE SEQUENCE "contacts_seq"
START WITH 1 INCREMENT BY 1 NOMAXVALUE;
CREATE TRIGGER "contacts_seq_trig"
BEFORE INSERT ON "contacts" FOR EACH ROW
BEGIN
:NEW."contact_id" := "contacts_seq".nextval;
END;
/
CREATE TABLE "contactgroups" (
"contactgroup_id" integer PRIMARY KEY,
"user_id" integer NOT NULL
REFERENCES "users" ("user_id") ON DELETE CASCADE,
"changed" timestamp with time zone DEFAULT current_timestamp NOT NULL,
"del" smallint DEFAULT 0 NOT NULL,
"name" varchar(128) NOT NULL
);
CREATE INDEX "contactgroups_user_id_idx" ON "contactgroups" ("user_id", "del");
CREATE SEQUENCE "contactgroups_seq"
START WITH 1 INCREMENT BY 1 NOMAXVALUE;
CREATE TRIGGER "contactgroups_seq_trig"
BEFORE INSERT ON "contactgroups" FOR EACH ROW
BEGIN
:NEW."contactgroup_id" := "contactgroups_seq".nextval;
END;
/
CREATE TABLE "contactgroupmembers" (
"contactgroup_id" integer NOT NULL
REFERENCES "contactgroups" ("contactgroup_id") ON DELETE CASCADE,
"contact_id" integer NOT NULL
REFERENCES "contacts" ("contact_id") ON DELETE CASCADE,
"created" timestamp with time zone DEFAULT current_timestamp NOT NULL,
PRIMARY KEY ("contactgroup_id", "contact_id")
);
CREATE INDEX "contactgroupmembers_idx" ON "contactgroupmembers" ("contact_id");
CREATE TABLE "cache" (
"user_id" integer NOT NULL
REFERENCES "users" ("user_id") ON DELETE CASCADE,
"cache_key" varchar(128) NOT NULL,
"expires" timestamp with time zone DEFAULT NULL,
"data" long NOT NULL,
PRIMARY KEY ("user_id", "cache_key")
);
CREATE INDEX "cache_expires_idx" ON "cache" ("expires");
CREATE TABLE "cache_shared" (
"cache_key" varchar(255) NOT NULL,
"expires" timestamp with time zone DEFAULT NULL,
"data" long NOT NULL,
PRIMARY KEY ("cache_key")
);
CREATE INDEX "cache_shared_expires_idx" ON "cache_shared" ("expires");
CREATE TABLE "cache_index" (
"user_id" integer NOT NULL
REFERENCES "users" ("user_id") ON DELETE CASCADE,
"mailbox" varchar(255) NOT NULL,
"expires" timestamp with time zone DEFAULT NULL,
"valid" smallint DEFAULT 0 NOT NULL,
"data" long NOT NULL,
PRIMARY KEY ("user_id", "mailbox")
);
CREATE INDEX "cache_index_expires_idx" ON "cache_index" ("expires");
CREATE TABLE "cache_thread" (
"user_id" integer NOT NULL
REFERENCES "users" ("user_id") ON DELETE CASCADE,
"mailbox" varchar(255) NOT NULL,
"expires" timestamp with time zone DEFAULT NULL,
"data" long NOT NULL,
PRIMARY KEY ("user_id", "mailbox")
);
CREATE INDEX "cache_thread_expires_idx" ON "cache_thread" ("expires");
CREATE TABLE "cache_messages" (
"user_id" integer NOT NULL
REFERENCES "users" ("user_id") ON DELETE CASCADE,
"mailbox" varchar(255) NOT NULL,
"uid" integer NOT NULL,
"expires" timestamp with time zone DEFAULT NULL,
"data" long NOT NULL,
"flags" integer DEFAULT 0 NOT NULL,
PRIMARY KEY ("user_id", "mailbox", "uid")
);
CREATE INDEX "cache_messages_expires_idx" ON "cache_messages" ("expires");
CREATE TABLE "dictionary" (
"user_id" integer DEFAULT NULL
REFERENCES "users" ("user_id") ON DELETE CASCADE,
"language" varchar(16) NOT NULL,
"data" long DEFAULT NULL,
CONSTRAINT "dictionary_user_id_lang_key" UNIQUE ("user_id", "language")
);
CREATE TABLE "searches" (
"search_id" integer PRIMARY KEY,
"user_id" integer NOT NULL
REFERENCES "users" ("user_id") ON DELETE CASCADE,
"type" smallint DEFAULT 0 NOT NULL,
"name" varchar(128) NOT NULL,
"data" long NOT NULL,
CONSTRAINT "searches_user_id_key" UNIQUE ("user_id", "type", "name")
);
CREATE SEQUENCE "searches_seq"
START WITH 1 INCREMENT BY 1 NOMAXVALUE;
CREATE TRIGGER "searches_seq_trig"
BEFORE INSERT ON "searches" FOR EACH ROW
BEGIN
:NEW."search_id" := "searches_seq".nextval;
END;
/
CREATE TABLE "filestore" (
"file_id" integer PRIMARY KEY,
"user_id" integer NOT NULL
REFERENCES "users" ("user_id") ON DELETE CASCADE ON UPDATE CASCADE,
"context" varchar(32) NOT NULL,
"filename" varchar(128) NOT NULL,
"mtime" integer NOT NULL,
"data" long,
CONSTRAINT "filestore_user_id_key" UNIQUE ("user_id", "context", "filename")
);
CREATE SEQUENCE "filestore_seq"
START WITH 1 INCREMENT BY 1 NOMAXVALUE;
CREATE TRIGGER "filestore_seq_trig"
BEFORE INSERT ON "filestore" FOR EACH ROW
BEGIN
:NEW."user_id" := "filestore_seq".nextval;
END;
/
CREATE TABLE "system" (
"name" varchar(64) NOT NULL PRIMARY KEY,
"value" long
);
INSERT INTO "system" ("name", "value") VALUES ('roundcube-version', '2020020101');

@ -0,0 +1,2 @@
ALTER TABLE "users" ADD "failed_login" timestamp with time zone DEFAULT NULL;
ALTER TABLE "users" ADD "failed_login_counter" integer DEFAULT NULL;

@ -0,0 +1 @@
ALTER TABLE "session" DROP COLUMN "created";

@ -0,0 +1 @@
ALTER TABLE "session" MODIFY "ip" varchar(41) NOT NULL;

@ -0,0 +1,23 @@
DROP TABLE "cache";
DROP TABLE "cache_shared";
CREATE TABLE "cache" (
"user_id" integer NOT NULL
REFERENCES "users" ("user_id") ON DELETE CASCADE,
"cache_key" varchar(128) NOT NULL,
"expires" timestamp with time zone DEFAULT NULL,
"data" long NOT NULL,
PRIMARY KEY ("user_id", "cache_key")
);
CREATE INDEX "cache_expires_idx" ON "cache" ("expires");
CREATE TABLE "cache_shared" (
"cache_key" varchar(255) NOT NULL,
"expires" timestamp with time zone DEFAULT NULL,
"data" long NOT NULL,
PRIMARY KEY ("cache_key")
);
CREATE INDEX "cache_shared_expires_idx" ON "cache_shared" ("expires");

@ -0,0 +1,19 @@
CREATE TABLE "filestore" (
"file_id" integer PRIMARY KEY,
"user_id" integer NOT NULL
REFERENCES "users" ("user_id") ON DELETE CASCADE ON UPDATE CASCADE,
"filename" varchar(128) NOT NULL,
"mtime" integer NOT NULL,
"data" long,
CONSTRAINT "filestore_user_id_key" UNIQUE ("user_id", "filename")
);
CREATE SEQUENCE "filestore_seq"
START WITH 1 INCREMENT BY 1 NOMAXVALUE;
CREATE TRIGGER "filestore_seq_trig"
BEFORE INSERT ON "filestore" FOR EACH ROW
BEGIN
:NEW."user_id" := "filestore_seq".nextval;
END;
/

@ -0,0 +1,4 @@
ALTER TABLE "filestore" ADD COLUMN "context" varchar(32) NOT NULL;
UPDATE "filestore" SET "context" = 'enigma';
ALTER TABLE "filestore" DROP CONSTRAINT "filestore_user_id_key";
ALTER TABLE "filestore" ADD CONSTRAINT "filestore_user_id_key" UNIQUE ("user_id", "context", "filename");

@ -0,0 +1,2 @@
ALTER TABLE "users" MODIFY "language" varchar(16) NOT NULL;
ALTER TABLE "dictionary" MODIFY "language" varchar(16);

@ -22,7 +22,9 @@ CREATE TABLE users (
mail_host varchar(128) DEFAULT '' NOT NULL,
created timestamp with time zone DEFAULT now() NOT NULL,
last_login timestamp with time zone DEFAULT NULL,
"language" varchar(5),
failed_login timestamp with time zone DEFAULT NULL,
failed_login_counter integer DEFAULT NULL,
"language" varchar(16),
preferences text DEFAULT ''::text NOT NULL,
CONSTRAINT users_username_key UNIQUE (username, mail_host)
);
@ -35,7 +37,6 @@ CREATE TABLE users (
CREATE TABLE "session" (
sess_id varchar(128) DEFAULT '' PRIMARY KEY,
created timestamp with time zone DEFAULT now() NOT NULL,
changed timestamp with time zone DEFAULT now() NOT NULL,
ip varchar(41) NOT NULL,
vars text NOT NULL
@ -166,12 +167,11 @@ CREATE TABLE "cache" (
user_id integer NOT NULL
REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
cache_key varchar(128) DEFAULT '' NOT NULL,
created timestamp with time zone DEFAULT now() NOT NULL,
expires timestamp with time zone DEFAULT NULL,
data text NOT NULL
data text NOT NULL,
PRIMARY KEY (user_id, cache_key)
);
CREATE INDEX cache_user_id_idx ON "cache" (user_id, cache_key);
CREATE INDEX cache_expires_idx ON "cache" (expires);
--
@ -180,13 +180,11 @@ CREATE INDEX cache_expires_idx ON "cache" (expires);
--
CREATE TABLE "cache_shared" (
cache_key varchar(255) NOT NULL,
created timestamp with time zone DEFAULT now() NOT NULL,
cache_key varchar(255) NOT NULL PRIMARY KEY,
expires timestamp with time zone DEFAULT NULL,
data text NOT NULL
);
CREATE INDEX cache_shared_cache_key_idx ON "cache_shared" (cache_key);
CREATE INDEX cache_shared_expires_idx ON "cache_shared" (expires);
--
@ -248,7 +246,7 @@ CREATE INDEX cache_messages_expires_idx ON cache_messages (expires);
CREATE TABLE dictionary (
user_id integer DEFAULT NULL
REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
"language" varchar(5) NOT NULL,
"language" varchar(16) NOT NULL,
data text NOT NULL,
CONSTRAINT dictionary_user_id_language_key UNIQUE (user_id, "language")
);
@ -279,6 +277,32 @@ CREATE TABLE searches (
CONSTRAINT searches_user_id_key UNIQUE (user_id, "type", name)
);
--
-- Sequence "filestore_seq"
-- Name: filestore_seq; Type: SEQUENCE; Schema: public; Owner: postgres
--
CREATE SEQUENCE "filestore_seq"
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
--
-- Table "filestore"
-- Name: filestore; Type: TABLE; Schema: public; Owner: postgres
--
CREATE TABLE "filestore" (
file_id integer DEFAULT nextval('filestore_seq'::text) PRIMARY KEY,
user_id integer NOT NULL
REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
context varchar(32) NOT NULL,
filename varchar(128) NOT NULL,
mtime integer NOT NULL,
data text NOT NULL,
CONSTRAINT filestore_user_id_filename UNIQUE (user_id, context, filename)
);
--
-- Table "system"
@ -290,4 +314,4 @@ CREATE TABLE "system" (
value text
);
INSERT INTO system (name, value) VALUES ('roundcube-version', '2014042900');
INSERT INTO "system" (name, value) VALUES ('roundcube-version', '2020020101');

@ -0,0 +1,2 @@
ALTER TABLE "users" ADD failed_login timestamp with time zone DEFAULT NULL;
ALTER TABLE "users" ADD failed_login_counter integer DEFAULT NULL;

@ -0,0 +1 @@
ALTER TABLE "session" DROP COLUMN created;

@ -0,0 +1 @@
ALTER TABLE session ALTER COLUMN ip TYPE character varying(41);

@ -0,0 +1,21 @@
DROP TABLE "cache";
DROP TABLE "cache_shared";
CREATE TABLE "cache" (
user_id integer NOT NULL
REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
cache_key varchar(128) DEFAULT '' NOT NULL,
expires timestamp with time zone DEFAULT NULL,
data text NOT NULL,
PRIMARY KEY (user_id, cache_key)
);
CREATE INDEX cache_expires_idx ON "cache" (expires);
CREATE TABLE "cache_shared" (
cache_key varchar(255) NOT NULL PRIMARY KEY,
expires timestamp with time zone DEFAULT NULL,
data text NOT NULL
);
CREATE INDEX cache_shared_expires_idx ON "cache_shared" (expires);

@ -0,0 +1,15 @@
CREATE SEQUENCE "filestore_seq"
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
CREATE TABLE "filestore" (
file_id integer DEFAULT nextval('filestore_seq'::text) PRIMARY KEY,
user_id integer NOT NULL
REFERENCES users (user_id) ON DELETE CASCADE ON UPDATE CASCADE,
filename varchar(128) NOT NULL,
mtime integer NOT NULL,
data text NOT NULL,
CONSTRAINT filestore_user_id_filename UNIQUE (user_id, filename)
);

@ -0,0 +1,4 @@
ALTER TABLE "filestore" ADD COLUMN context varchar(32) NOT NULL;
UPDATE "filestore" SET context = 'enigma';
ALTER TABLE "filestore" DROP CONSTRAINT "filestore_user_id_filename";
ALTER TABLE "filestore" ADD CONSTRAINT "filestore_user_id_context_filename" UNIQUE (user_id, context, filename);

@ -0,0 +1,2 @@
ALTER TABLE "dictionary" ALTER COLUMN "language" TYPE varchar(16);
ALTER TABLE "users" ALTER COLUMN "language" TYPE varchar(16);

@ -72,7 +72,9 @@ CREATE TABLE users (
mail_host varchar(128) NOT NULL default '',
created datetime NOT NULL default '0000-00-00 00:00:00',
last_login datetime DEFAULT NULL,
language varchar(5),
failed_login datetime DEFAULT NULL,
failed_login_counter integer DEFAULT NULL,
language varchar(16),
preferences text NOT NULL default ''
);
@ -84,7 +86,6 @@ CREATE UNIQUE INDEX ix_users_username ON users(username, mail_host);
CREATE TABLE session (
sess_id varchar(128) NOT NULL PRIMARY KEY,
created datetime NOT NULL default '0000-00-00 00:00:00',
changed datetime NOT NULL default '0000-00-00 00:00:00',
ip varchar(40) NOT NULL default '',
vars text NOT NULL
@ -98,11 +99,11 @@ CREATE INDEX ix_session_changed ON session (changed);
CREATE TABLE dictionary (
user_id integer DEFAULT NULL,
"language" varchar(5) NOT NULL,
language varchar(16) NOT NULL,
data text NOT NULL
);
CREATE UNIQUE INDEX ix_dictionary_user_language ON dictionary (user_id, "language");
CREATE UNIQUE INDEX ix_dictionary_user_language ON dictionary (user_id, language);
--
-- Table structure for table searches
@ -125,12 +126,11 @@ CREATE UNIQUE INDEX ix_searches_user_type_name ON searches (user_id, type, name)
CREATE TABLE cache (
user_id integer NOT NULL default 0,
cache_key varchar(128) NOT NULL default '',
created datetime NOT NULL default '0000-00-00 00:00:00',
expires datetime DEFAULT NULL,
data text NOT NULL
data text NOT NULL,
PRIMARY KEY (user_id, cache_key)
);
CREATE INDEX ix_cache_user_cache_key ON cache(user_id, cache_key);
CREATE INDEX ix_cache_expires ON cache(expires);
--
@ -139,12 +139,11 @@ CREATE INDEX ix_cache_expires ON cache(expires);
CREATE TABLE cache_shared (
cache_key varchar(255) NOT NULL,
created datetime NOT NULL default '0000-00-00 00:00:00',
expires datetime DEFAULT NULL,
data text NOT NULL
data text NOT NULL,
PRIMARY KEY (cache_key)
);
CREATE INDEX ix_cache_shared_cache_key ON cache_shared(cache_key);
CREATE INDEX ix_cache_shared_expires ON cache_shared(expires);
--
@ -192,6 +191,21 @@ CREATE TABLE cache_messages (
CREATE INDEX ix_cache_messages_expires ON cache_messages (expires);
--
-- Table structure for table filestore
--
CREATE TABLE filestore (
file_id integer NOT NULL PRIMARY KEY,
user_id integer NOT NULL,
context varchar(32) NOT NULL,
filename varchar(128) NOT NULL,
mtime integer NOT NULL,
data text NOT NULL
);
CREATE UNIQUE INDEX ix_filestore_user_id ON filestore(user_id, context, filename);
--
-- Table structure for table system
--
@ -201,4 +215,4 @@ CREATE TABLE system (
value text NOT NULL
);
INSERT INTO system (name, value) VALUES ('roundcube-version', '2014042900');
INSERT INTO system (name, value) VALUES ('roundcube-version', '2020020101');

@ -0,0 +1,35 @@
CREATE TABLE tmp_users (
user_id integer NOT NULL PRIMARY KEY,
username varchar(128) NOT NULL default '',
mail_host varchar(128) NOT NULL default '',
created datetime NOT NULL default '0000-00-00 00:00:00',
last_login datetime DEFAULT NULL,
failed_login datetime DEFAULT NULL,
failed_login_counter integer DEFAULT NULL,
language varchar(5),
preferences text NOT NULL default ''
);
INSERT INTO tmp_users (user_id, username, mail_host, created, last_login, language, preferences)
SELECT user_id, username, mail_host, created, last_login, language, preferences FROM users;
DROP TABLE users;
CREATE TABLE users (
user_id integer NOT NULL PRIMARY KEY,
username varchar(128) NOT NULL default '',
mail_host varchar(128) NOT NULL default '',
created datetime NOT NULL default '0000-00-00 00:00:00',
last_login datetime DEFAULT NULL,
failed_login datetime DEFAULT NULL,
failed_login_counter integer DEFAULT NULL,
language varchar(5),
preferences text NOT NULL default ''
);
INSERT INTO users (user_id, username, mail_host, created, last_login, language, preferences)
SELECT user_id, username, mail_host, created, last_login, language, preferences FROM tmp_users;
CREATE UNIQUE INDEX ix_users_username ON users(username, mail_host);
DROP TABLE tmp_users;

@ -0,0 +1,9 @@
DROP TABLE session;
CREATE TABLE session (
sess_id varchar(128) NOT NULL PRIMARY KEY,
changed datetime NOT NULL default '0000-00-00 00:00:00',
ip varchar(40) NOT NULL default '',
vars text NOT NULL
);
CREATE INDEX ix_session_changed ON session (changed);

@ -0,0 +1,21 @@
DROP TABLE cache;
DROP TABLE cache_shared;
CREATE TABLE cache (
user_id integer NOT NULL default 0,
cache_key varchar(128) NOT NULL default '',
expires datetime DEFAULT NULL,
data text NOT NULL,
PRIMARY KEY (user_id, cache_key)
);
CREATE INDEX ix_cache_expires ON cache(expires);
CREATE TABLE cache_shared (
cache_key varchar(255) NOT NULL,
expires datetime DEFAULT NULL,
data text NOT NULL,
PRIMARY KEY (cache_key)
);
CREATE INDEX ix_cache_shared_expires ON cache_shared(expires);

@ -0,0 +1,9 @@
CREATE TABLE filestore (
file_id integer PRIMARY KEY,
user_id integer NOT NULL,
filename varchar(128) NOT NULL,
mtime integer NOT NULL,
data text NOT NULL
);
CREATE UNIQUE INDEX ix_filestore_user_id ON filestore(user_id, filename);

@ -0,0 +1,29 @@
CREATE TABLE tmp_filestore (
file_id integer PRIMARY KEY,
user_id integer NOT NULL,
filename varchar(128) NOT NULL,
mtime integer NOT NULL,
data text NOT NULL
);
INSERT INTO tmp_filestore (file_id, user_id, filename, mtime, data)
SELECT file_id, user_id, filename, mtime, data FROM filestore;
DROP TABLE filestore;
CREATE TABLE filestore (
file_id integer NOT NULL PRIMARY KEY,
user_id integer NOT NULL,
context varchar(32) NOT NULL,
filename varchar(128) NOT NULL,
mtime integer NOT NULL,
data text NOT NULL
);
INSERT INTO filestore (file_id, user_id, filename, mtime, data, context)
SELECT file_id, user_id, filename, mtime, data, 'enigma' FROM tmp_filestore;
CREATE UNIQUE INDEX ix_filestore_user_id ON filestore(user_id, context, filename);
DROP TABLE tmp_filestore;

@ -0,0 +1,57 @@
CREATE TABLE tmp_users (
user_id integer NOT NULL PRIMARY KEY,
username varchar(128) NOT NULL default '',
mail_host varchar(128) NOT NULL default '',
created datetime NOT NULL default '0000-00-00 00:00:00',
last_login datetime DEFAULT NULL,
failed_login datetime DEFAULT NULL,
failed_login_counter integer DEFAULT NULL,
language varchar(16),
preferences text NOT NULL default ''
);
INSERT INTO tmp_users (user_id, username, mail_host, created, last_login, failed_login, failed_login_counter, language, preferences)
SELECT user_id, username, mail_host, created, last_login, failed_login, failed_login_counter, language, preferences FROM users;
DROP TABLE users;
CREATE TABLE users (
user_id integer NOT NULL PRIMARY KEY,
username varchar(128) NOT NULL default '',
mail_host varchar(128) NOT NULL default '',
created datetime NOT NULL default '0000-00-00 00:00:00',
last_login datetime DEFAULT NULL,
failed_login datetime DEFAULT NULL,
failed_login_counter integer DEFAULT NULL,
language varchar(16),
preferences text NOT NULL default ''
);
INSERT INTO users (user_id, username, mail_host, created, last_login, failed_login, failed_login_counter, language, preferences)
SELECT user_id, username, mail_host, created, last_login, failed_login, failed_login_counter, language, preferences FROM tmp_users;
CREATE UNIQUE INDEX ix_users_username ON users(username, mail_host);
DROP TABLE tmp_users;
DROP TABLE users;
CREATE TABLE tmp_dictionary (
user_id integer DEFAULT NULL,
language varchar(16) NOT NULL,
data text NOT NULL
);
INSERT INTO tmp_dictionary (user_id, language, data) SELECT user_id, language, data FROM dictionary;
CREATE TABLE dictionary (
user_id integer DEFAULT NULL,
language varchar(16) NOT NULL,
data text NOT NULL
);
INSERT INTO dictionary (user_id, language, data) SELECT user_id, language, data FROM tmp_dictionary;
CREATE UNIQUE INDEX ix_dictionary_user_language ON dictionary (user_id, language);
DROP TABLE tmp_dictionary;

@ -14,18 +14,23 @@ and cd into that directory. From there, run the following command in a shell:
./bin/installto.sh <TARGET-FOLDER>
For <TARGET-FOLDER> you specify the path to the Roundcube installation
which should be updated. The update script will then copy all new files to the
For <TARGET-FOLDER> you specify the path to the Roundcube installation
which should be updated. The update script will then copy all new files to the
target location and check and update the configuration and database schema.
After all is done, the temporary folder with the new Roundcube files can be
After all is done, the temporary folder with the new Roundcube files can be
removed again.
WARNING: Make sure files have proper owner/group for your setup. If you use
tar to extract the package, `--no-same-owner` option might be helpful.
WARNING: See Post-Upgrade Activities section below.
WARNING: If you use MySQL < 5.7.7 or MariaDB < 10.2.2 make sure to configure it with:
innodb_large_prefix=true
innodb_file_format=Barracuda
Updating manually
-----------------
If you don't have shell access to the Roundcube installation or if not running
If you don't have shell access to the Roundcube installation or if not running
it on a unix system, you need to do the following operations by hand:
1. Replace index.php and all files in
@ -40,25 +45,46 @@ it on a unix system, you need to do the following operations by hand:
directory into the target folder:
./skins/
./plugins/
4. Run ./bin/update.sh from the commandline OR
./vendor/
4. Update dependencies:
4a. If you previously installed plugins through composer, update dependencies
by running `php composer.phar update --no-dev`.
4b. Install/update dependencies using composer:
- get composer from https://getcomposer.org/download/
- rename the composer.json-dist file into composer.json
- if you want to use LDAP address books, enable the LDAP libraries in your
composer.json file by moving the items from "suggest" to the "require"
section (remove the explanation texts after the version!).
- run `php composer.phar install --no-dev`.
4c. If you use git sources or the release package without dependencies
update javascript dependencies by executing `bin/install-jsdeps.sh` script.
4d. If you use git sources compile css files for the Elastic skin (required
lessc >= 1.5.0):
$ cd skins/elastic
$ lessc -x styles/styles.less > styles/styles.css
$ lessc -x styles/print.less > styles/print.css
$ lessc -x styles/embed.less > styles/embed.css
5. Run `./bin/update.sh` from the commandline OR
open http://url-to-roundcube/installer/ in a browser and choose "3 Test config".
To enable the latter one, you have to temporary set 'enable_installer'
to true in your local config/config.inc.php file.
WARNING: See SQLite database upgrade below.
5. Let the update script/installer check your configuration and
6. Let the update script/installer check your configuration and
update your config files and database schema as suggested by the updater.
6. Make sure 'enable_installer' is set to false again.
7. See Post-Upgrade Activities section.
7. Make sure 'enable_installer' is set to false again.
8. See Post-Upgrade Activities section.
Post-Upgrade Activities
-----------------------
1. Check .htaccess settings (some php settings could become required)
1. Check system requirements in INSTALL file.
2. If you're using build-in addressbook, run indexing script /bin/indexcontacts.sh.
3. When upgrading from version older than 0.6-beta you should make sure
your folder settings contain namespace prefix. For example Courier users
should add INBOX. prefix to folder names in main configuration file.
4. Check system requirements in INSTALL file.
4. When upgrading from version older than 1.4.0 make sure old files
in configured temp_dir are removed. Since this version we use constant filename
prefix and do not remove files not starting with "RCMTEMP".
SQLite database upgrade
-----------------------

@ -2,10 +2,9 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/cleandb.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2010, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -13,66 +12,18 @@
| |
| PURPOSE: |
| Finally remove all db records marked as deleted some time ago |
| |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <roundcube@gmail.com> |
+-----------------------------------------------------------------------+
*/
define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
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 = rcmail::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);
// 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 = get_table_name('contactgroupmembers');
$db->query(
"DELETE FROM $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);

@ -5,42 +5,42 @@ VERSION='2.4.8'
COMPILER_URL="https://github.com/yui/yuicompressor/releases/download/v${VERSION}/yuicompressor-${VERSION}.zip"
do_shrink() {
rm -f "$2"
java -jar $JAR_DIR/yuicompressor.jar -v -o "$2" "$1"
rm -f "$2"
java -jar $JAR_DIR/yuicompressor.jar -v -o "$2" "$1"
}
if [ ! -w "$JAR_DIR" ]; then
JAR_DIR=$PWD
JAR_DIR=$PWD
fi
if java -version >/dev/null 2>&1; then
:
:
else
echo "Java not found. Please ensure that the 'java' program is in your PATH."
exit 1
echo "Java not found. Please ensure that the 'java' program is in your PATH."
exit 1
fi
if [ ! -r "$JAR_DIR/yuicompressor.jar" ]; then
if which wget >/dev/null 2>&1 && which unzip >/dev/null 2>&1; then
wget "$COMPILER_URL" -O "/tmp/$$.zip"
elif which curl >/dev/null 2>&1 && which unzip >/dev/null 2>&1; then
curl "$COMPILER_URL" -o "/tmp/$$.zip"
else
echo "Please download $COMPILER_URL and extract compiler.jar to $JAR_DIR/."
exit 1
fi
(cd $JAR_DIR && unzip "/tmp/$$.zip" && mv "yuicompressor-${VERSION}.jar" "yuicompressor.jar")
rm -f "/tmp/$$.zip"
if which wget >/dev/null 2>&1 && which unzip >/dev/null 2>&1; then
wget "$COMPILER_URL" -O "/tmp/$$.zip"
elif which curl >/dev/null 2>&1 && which unzip >/dev/null 2>&1; then
curl -L "$COMPILER_URL" -o "/tmp/$$.zip"
else
echo "Please download $COMPILER_URL and extract compiler.jar to $JAR_DIR/."
exit 1
fi
(cd $JAR_DIR && unzip "/tmp/$$.zip" && mv "yuicompressor-${VERSION}.jar" "yuicompressor.jar")
rm -f "/tmp/$$.zip"
fi
# compress single file from argument
if [ $# -gt 0 ]; then
CSS_FILE="$1"
CSS_FILE="$1"
echo "Shrinking $CSS_FILE"
echo "Shrinking $CSS_FILE"
minfile=`echo $CSS_FILE | sed -e 's/\.css$/\.min\.css/'`
do_shrink "$CSS_FILE" "$minfile"
exit
do_shrink "$CSS_FILE" "$minfile"
exit
fi
DIRS="$PWD/../skins/* $PWD/../plugins/* $PWD/../plugins/*/skins/*"

@ -2,10 +2,9 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/decrypt.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2005-2009, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -13,7 +12,6 @@
| |
| PURPOSE: |
| Decrypt the encrypted parts of the HTTP Received: headers |
| |
+-----------------------------------------------------------------------+
| Author: Tomas Tevesz <ice@extreme.hu> |
+-----------------------------------------------------------------------+
@ -52,16 +50,16 @@
* - you are dealing with counterfeit header data.
*/
define('INSTALL_PATH', realpath(dirname(__FILE__).'/..') . '/');
define('INSTALL_PATH', realpath(__DIR__ .'/..') . '/');
require INSTALL_PATH . 'program/include/clisetup.php';
if ($argc < 2) {
die("Usage: " . basename($argv[0]) . " encrypted-hdr-part [encrypted-hdr-part ...]\n");
die("Usage: " . basename($argv[0]) . " encrypted-hdr-part [encrypted-hdr-part ...]\n");
}
$RCMAIL = rcmail::get_instance();
$RCMAIL = rcube::get_instance();
for ($i = 1; $i < $argc; $i++) {
printf("%s\n", $RCMAIL->decrypt($argv[$i]));
printf("%s\n", $RCMAIL->decrypt($argv[$i]));
};

@ -3,10 +3,9 @@
/*
+-----------------------------------------------------------------------+
| bin/deluser.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2014, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -20,29 +19,50 @@
+-----------------------------------------------------------------------+
*/
define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
define('INSTALL_PATH', realpath(__DIR__ . '/..') . '/' );
require_once INSTALL_PATH . 'program/include/clisetup.php';
function print_usage()
{
print "Usage: deluser.sh [--host=mail_host] username\n";
print "Usage: deluser.sh [--host=HOST][--age=DAYS][--dry-run] [username]\n";
print "--host=HOST The IMAP hostname or IP the given user is related to\n";
print "--age=DAYS Delete all users who have not logged in for more than X days\n";
print "--dry-run List users but do not delete them (for use with --age)\n";
}
function _die($msg, $usage=false)
{
fputs(STDERR, $msg . "\n");
fwrite(STDERR, $msg . "\n");
if ($usage) print_usage();
exit(1);
}
$rcmail = rcmail::get_instance();
$rcmail = rcube::get_instance();
// get arguments
$args = rcube_utils::get_opt(array('h' => 'host'));
$username = trim($args[0]);
$args = rcube_utils::get_opt(array('h' => 'host', 'a' => 'age', 'd' => 'dry-run:bool'));
if (!empty($args['age']) && ($age = intval($args['age']))) {
$db = $rcmail->get_dbh();
$db->db_connect('r');
$query = $db->query("SELECT `username`, `mail_host` FROM " . $db->table_name('users', true)
. " WHERE `last_login` < " . $db->now($age * -1 * 86400)
. ($args['host'] ? " AND `mail_host` = " . $db->quote($args['host']) : '')
);
while ($user = $db->fetch_assoc($query)) {
if (!empty($args['dry-run'])) {
printf("%s (%s)\n", $user['username'], $user['mail_host']);
continue;
}
system(sprintf("php %s/deluser.sh --host=%s %s", INSTALL_PATH . 'bin', $user['mail_host'], $user['username']));
}
exit(1);
}
$username = trim($args[0]);
if (empty($username)) {
_die("Missing required parameters", true);
}
@ -69,35 +89,56 @@ if (empty($args['host'])) {
// connect to DB
$db = $rcmail->get_dbh();
$db->db_connect('w');
$transaction = false;
if (!$db->is_connected() || $db->is_error()) {
_die("No DB connection\n" . $db->is_error());
}
// find user in loca database
// find user in local database
$user = rcube_user::query($username, $args['host']);
if (!$user) {
die("User not found.\n");
}
// inform plugins about approaching user deletion
$plugin = $rcmail->plugins->exec_hook('user_delete_prepare', array('user' => $user, 'username' => $username, 'host' => $args['host']));
// let plugins cleanup their own user-related data
$plugin = $rcmail->plugins->exec_hook('user_delete', array('user' => $user, 'username' => $username, 'host' => $args['host']));
if (!$plugin['abort']) {
$transaction = $db->startTransaction();
$plugin = $rcmail->plugins->exec_hook('user_delete', $plugin);
}
if ($plugin['abort']) {
if ($transaction) {
$db->rollbackTransaction();
}
_die("User deletion aborted by plugin");
}
// deleting the user record should be sufficient due to ON DELETE CASCADE foreign key references
// but not all database backends actually support this so let's do it by hand
foreach (array('identities','contacts','contactgroups','dictionaries','cache','cache_index','cache_messages','cache_thread','searches','users') as $table) {
$db->query('DELETE FROM ' . $db->table_name($table) . ' WHERE user_id=?', $user->ID);
foreach (array('identities','contacts','contactgroups','dictionary','cache','cache_index','cache_messages','cache_thread','searches','users') as $table) {
$db->query('DELETE FROM ' . $db->table_name($table, true) . ' WHERE `user_id` = ?', $user->ID);
}
if ($db->is_error()) {
$rcmail->plugins->exec_hook('user_delete_rollback', $plugin);
_die("DB error occurred: " . $db->is_error());
}
else {
echo "Successfully deleted user $user->ID\n";
}
// inform plugins about executed user deletion
$plugin = $rcmail->plugins->exec_hook('user_delete_commit', $plugin);
if ($plugin['abort']) {
unset($plugin['abort']);
$db->rollbackTransaction();
$rcmail->plugins->exec_hook('user_delete_rollback', $plugin);
}
else {
$db->endTransaction();
echo "Successfully deleted user $user->ID\n";
}
}

@ -1,97 +0,0 @@
#!/usr/bin/env php
<?php
/*
+-----------------------------------------------------------------------+
| bin/dumpschema.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2005-2009, 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. |
| |
| PURPOSE: |
| Dumps database schema in XML format using MDB2_Schema |
| |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <roundcube@gmail.com> |
+-----------------------------------------------------------------------+
*/
define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
require INSTALL_PATH.'program/include/clisetup.php';
/** callback function for schema dump **/
function print_schema($dump)
{
foreach ((array)$dump as $part)
echo $dump . "\n";
}
$config = new rcube_config();
// don't allow public access if not in devel_mode
if (!$config->get('devel_mode') && $_SERVER['REMOTE_ADDR']) {
header("HTTP/1.0 401 Access denied");
die("Access denied!");
}
$options = array(
'use_transactions' => false,
'log_line_break' => "\n",
'idxname_format' => '%s',
'debug' => false,
'quote_identifier' => true,
'force_defaults' => false,
'portability' => false,
);
$dsnw = $config->get('db_dsnw');
$dsn_array = MDB2::parseDSN($dsnw);
// set options for postgres databases
if ($dsn_array['phptype'] == 'pgsql') {
$options['disable_smart_seqname'] = true;
$options['seqname_format'] = '%s';
}
$schema =& MDB2_Schema::factory($dsnw, $options);
$schema->db->supported['transactions'] = false;
// send as text/xml when opened in browser
if ($_SERVER['REMOTE_ADDR'])
header('Content-Type: text/xml');
if (PEAR::isError($schema)) {
$error = $schema->getMessage() . ' ' . $schema->getUserInfo();
}
else {
$dump_config = array(
// 'output_mode' => 'file',
'output' => 'print_schema',
);
$definition = $schema->getDefinitionFromDatabase();
$definition['charset'] = 'utf8';
if (PEAR::isError($definition)) {
$error = $definition->getMessage() . ' ' . $definition->getUserInfo();
}
else {
$operation = $schema->dumpDatabase($definition, $dump_config, MDB2_SCHEMA_DUMP_STRUCTURE);
if (PEAR::isError($operation)) {
$error = $operation->getMessage() . ' ' . $operation->getUserInfo();
}
}
}
$schema->disconnect();
if ($error && !$_SERVER['REMOTE_ADDR'])
fputs(STDERR, $error);
?>

@ -1,233 +0,0 @@
#!/usr/bin/env php
<?php
/*
+-----------------------------------------------------------------------+
| bin/exportgettext.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2011, The Roundcube Dev Team |
| Licensed under the GNU General Public License |
| |
| PURPOSE: |
| Export PHP-based localization files to PO files for gettext |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <roundcube@gmail.com> |
+-----------------------------------------------------------------------+
*/
define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
require INSTALL_PATH.'program/include/clisetup.php';
if ($argc < 2) {
die("Usage: " . basename($argv[0]) . " SRCDIR DESTDIR\n");
}
$srcdir = unslashify(realpath($argv[1]));
$destdir = unslashify($argv[2]);
$layout = 'launchpad'; # or 'narro';
$langcode_map = array(
'hy_AM' => 'hy',
'ar_SA' => 'ar',
'az_AZ' => 'az',
'bg_BG' => 'bg',
'bs_BA' => 'bs',
'ca_ES' => 'ca',
'cs_CZ' => 'cs',
'cy_GB' => 'cy',
'da_DK' => 'da',
'et_EE' => 'et',
'el_GR' => 'el',
'eu_ES' => 'eu',
'fa_IR' => 'fa',
'ga_IE' => 'ga',
'ka_GE' => 'ka',
'gl_ES' => 'gl',
'he_IL' => 'he',
'hi_IN' => 'hi',
'hr_HR' => 'hr',
'ja_JP' => 'ja',
'ko_KR' => 'ko',
'km_KH' => 'km',
'ms_MY' => 'ms',
'mr_IN' => 'mr',
'ml_IN' => 'ml',
'pl_PL' => 'pl',
'si_LK' => 'si',
'sl_SI' => 'sl',
'sq_AL' => 'sq',
'sr_CS' => 'sr',
'sv_SE' => 'sv',
'uk_UA' => 'uk',
'vi_VN' => 'vi',
);
// converting roundcube localization dir
if (is_dir($srcdir.'/en_US')) {
load_en_US($srcdir.'/en_US');
foreach (glob($srcdir.'/*') as $locdir) {
if (is_dir($locdir)) {
$lang = basename($locdir);
//echo "$locdir => $destdir$lang\n";
convert_dir($locdir, $destdir . ($layout != 'launchpad' ? $lang : ''));
}
}
}
// converting single localization directory
else if (is_dir($srcdir)) {
if (is_file($srcdir.'/en_US.inc')) // plugin localization
load_en_US($srcdir.'/en_US.inc');
else
load_en_US(realpath($srcdir.'/../en_US')); // single language
convert_dir($srcdir, $destdir);
}
// converting a single file
else if (is_file($srcdir)) {
//load_en_US();
convert_file($srcdir, $destdir);
}
/**
* Load en_US localization which is used to build msgids
*/
function load_en_US($fn)
{
$texts = array();
if (is_dir($fn)) {
foreach (glob($fn.'/*.inc') as $ifn) {
include($ifn);
$texts = array_merge($texts, (array)$labels, (array)$messages);
}
}
else if (is_file($fn)) {
include($fn);
$texts = array_merge($texts, (array)$labels, (array)$messages);
}
$GLOBALS['en_US'] = $texts;
}
/**
* Convert all .inc files in the given src directory
*/
function convert_dir($indir, $outdir)
{
global $layout;
if (!is_dir($outdir)) // attempt to create destination dir
mkdir($outdir, 0777, true);
foreach (glob($indir.'/*.inc') as $fn) {
$filename = basename($fn);
// create subdir for each template (launchpad rules)
if ($layout == 'launchpad' && preg_match('/^(labels|messages)/', $filename, $m)) {
$lang = end(explode('/', $indir));
$destdir = $outdir . '/' . $m[1];
if (!is_dir($destdir))
mkdir($destdir, 0777, true);
$outfn = $destdir . '/' . $lang . '.po';
}
else {
$outfn = $outdir . '/' . preg_replace('/\.[a-z0-9]+$/i', '', basename($fn)) . '.po';
}
convert_file($fn, $outfn);
}
}
/**
* Convert the given Roundcube localization file into a gettext .po file
*/
function convert_file($fn, $outfn)
{
global $layout, $langcode_map;
$basename = basename($fn);
$srcname = str_replace(INSTALL_PATH, '', $fn);
$product = preg_match('!plugins/(\w+)!', $srcname, $m) ? 'roundcube-plugin-' . $m[1] : 'roundcubemail';
$lang = preg_match('!/([a-z]{2}(_[A-Z]{2})?)[./]!', $outfn, $m) ? $m[1] : '';
$labels = $messages = $seen = array();
if (is_dir($outfn))
$outfn .= '/' . $basename . '.po';
// launchpad requires the template file to have the same name as the directory
if (strstr($outfn, '/en_US') && $layout == 'launchpad') {
$a = explode('/', $outfn);
array_pop($a);
$templ = end($a);
$a[] = $templ . '.pot';
$outfn = join('/', $a);
$is_pot = true;
}
// launchpad is very picky about file names
else if ($layout == 'launchpad' && preg_match($regex = '!/([a-z]{2})_([A-Z]{2})!', $outfn, $m)) {
if ($shortlang = $langcode_map[$lang])
$outfn = preg_replace($regex, '/'.$shortlang, $outfn);
else if ($m[1] == strtolower($m[2]))
$outfn = preg_replace($regex, '/\1', $outfn);
}
include($fn);
$texts = array_merge($labels, $messages);
// write header
$header = <<<EOF
# Converted from Roundcube PHP localization files
# Copyright (C) 2011 The Roundcube Dev Team
# This file is distributed under the same license as the Roundcube package.
#
#: %s
msgid ""
msgstr ""
"Project-Id-Version: %s\\n"
"Report-Msgid-Bugs-To: \\n"
"%s: %s\\n"
"Last-Translator: \\n"
"Language-Team: Translations <hello@roundcube.net>\\n"
"Language: %s\\n"
"Content-Type: text/plain; charset=UTF-8\\n"
"Content-Transfer-Encoding: 8bit\\n"
EOF;
$out = sprintf($header, $srcname, $product, $is_pot ? "POT-Creation-Date" : "PO-Revision-Date", date('c'), $shortlang ? $shortlang : $lang);
$out .= "\n";
$messages = array();
foreach ((array)$texts as $label => $msgstr) {
$msgid = $is_pot ? $msgstr : ($GLOBALS['en_US'][$label] ?: $label);
$messages[$msgid][] = $label;
}
foreach ($messages as $msgid => $labels) {
$out .= "\n";
foreach ($labels as $label)
$out .= "#: $srcname:$label\n";
$msgstr = $texts[$label];
$out .= 'msgid ' . gettext_quote($msgid) . "\n";
$out .= 'msgstr ' . gettext_quote(!$is_pot ? $msgstr : '') . "\n";
}
if ($outfn == '-')
echo $out;
else {
echo "$fn\t=>\t$outfn\n";
file_put_contents($outfn, $out);
}
}
function gettext_quote($str)
{
$out = "";
$lines = explode("\n", wordwrap(stripslashes($str)));
$last = count($lines) - 1;
foreach ($lines as $i => $line)
$out .= '"' . addcslashes($line, '"') . ($i < $last ? ' ' : '') . "\"\n";
return rtrim($out);
}
?>

@ -2,10 +2,9 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/gc.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2013, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -13,15 +12,26 @@
| |
| PURPOSE: |
| Trigger garbage collecting routines manually (e.g. via cronjob) |
| |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <roundcube@gmail.com> |
+-----------------------------------------------------------------------+
*/
define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
define('INSTALL_PATH', realpath(__DIR__ . '/..') . '/' );
require INSTALL_PATH.'program/include/clisetup.php';
$rcmail = rcube::get_instance();
$session_driver = $rcmail->config->get('session_storage', 'db');
$session_lifetime = $rcmail->config->get('session_lifetime', 0) * 60 * 2;
// Clean expired SQL sessions
if ($session_driver == 'db' && $session_lifetime) {
$db = $rcmail->get_dbh();
$db->query("DELETE FROM " . $db->table_name('session')
. " WHERE changed < " . $db->now(-$session_lifetime));
}
// Clean caches and temp directory
$rcmail->gc();

@ -1,196 +0,0 @@
#!/usr/bin/env php
<?php
/*
+-----------------------------------------------------------------------+
| bin/importgettext.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2011, The Roundcube Dev Team |
| Licensed under the GNU General Public License |
| |
| PURPOSE: |
| Import localizations from gettext PO format |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <roundcube@gmail.com> |
+-----------------------------------------------------------------------+
*/
define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
require INSTALL_PATH.'program/include/clisetup.php';
if ($argc < 2) {
die("Usage: " . basename($argv[0]) . " SRCDIR\n");
}
$srcdir = unslashify(realpath($argv[1]));
if (is_dir($srcdir)) {
$out = import_dir($srcdir);
}
else if (is_file($srcdir)) {
$out = import_file($srcdir);
}
// write output files
foreach ($out as $outfn => $texts) {
$lang = preg_match('!/([a-z]{2}(_[A-Z]{2})?)[./]!', $outfn, $m) ? $m[1] : '';
$varname = strpos($outfn, 'messages.inc') !== false ? 'messages' : 'labels';
$header = <<<EOF
<?php
/*
+-----------------------------------------------------------------------+
| localization/%s/%-51s|
| |
| Language file of the Roundcube Webmail client |
| Copyright (C) %s, The Roundcube Dev Team |
| Licensed under the GNU General Public License |
| |
+-----------------------------------------------------------------------+
| Author: %-62s|
+-----------------------------------------------------------------------+
*/
$%s = array();
EOF;
$author = preg_replace('/\s*<Unknown>/i', '', $texts['_translator']);
$output = sprintf($header, $lang, $varname.'.inc', date('Y'), $author, $varname);
foreach ($texts as $label => $value) {
if (is_array($value)) { var_dump($outfn, $label, $value); exit; }
if ($label[0] != '_' && strlen($value))
$output .= sprintf("\$%s['%s'] = '%s';\n", $varname, $label, strtr(addcslashes($value, "'"), array("\r" => '', "\n" => '\n')));
}
$output .= "\n";
$dir = dirname($outfn);
@mkdir($dir, 0755, true);
if (file_put_contents($outfn, $output))
echo "-> $outfn\n";
}
/**
* Convert all .po files in the given src directory
*/
function import_dir($indir)
{
$out = array();
foreach (glob($indir.'/*.po') as $fn) {
$out = array_merge_recursive($out, import_file($fn));
}
return $out;
}
/**
* Convert the given .po file into a Roundcube localization array
*/
function import_file($fn)
{
$out = array();
$lines = file($fn);
$language = '';
$translator = '';
// get language code from file name
if (preg_match('/-([a-z_]+).po$/i', $fn, $m))
$language = expand_langcode($m[1]);
$is_header = true;
$msgid = null;
$msgstr = '';
$dests = array();
foreach ($lines as $i => $line) {
$line = trim($line);
// parse header
if ($is_header && $line[0] == '"') {
list($key, $val) = explode(": ", preg_replace('/\\\n$/', '', trim($line, '"')), 2);
switch (strtolower($key)) {
case 'language':
$language = expand_langcode($val);
break;
case 'last-translator':
$translator = $val;
break;
}
}
// empty line
if ($line == '') {
if ($msgid && $dests) {
foreach ($dests as $dest) {
list($file, $label) = explode(':', $dest);
$out[$file][$label] = $msgstr;
$out[$file]['_translator'] = $translator;
}
}
$msgid = null;
$msgstr = '';
$dests = array();
}
// meta line
if ($line[0] == '#') {
$value = trim(substr($line, 2));
if ($line[1] == ':')
$dests[] = str_replace('en_US', $language, $value);
}
else if (strpos($line, 'msgid') === 0) {
$msgid = gettext_decode(substr($line, 6));
if (!empty($msgid))
$is_header = false;
}
else if (strpos($line, 'msgstr') === 0) {
$msgstr = gettext_decode(substr($line, 7));
}
else if ($msgid && $line[0] == '"') {
$msgstr .= gettext_decode($line);
}
else if ($msgid !== null && $line[0] == '"') {
$msgid .= gettext_decode($line);
}
}
if ($msgid && $dests) {
foreach ($dests as $dest) {
list($file, $label) = explode(':', $dest);
$out[$file][$label] = $msgstr;
$out[$file]['_translator'] = $translator;
}
}
return $language ? $out : array();
}
function gettext_decode($str)
{
return stripslashes(trim($str, '"'));
}
/**
* Translate two-chars language codes to our internally used language identifiers
*/
function expand_langcode($lang)
{
static $rcube_language_aliases, $rcube_languages;
if (!$rcube_language_aliases)
include(INSTALL_PATH . 'program/localization/index.inc');
if ($rcube_language_aliases[$lang])
return $rcube_language_aliases[$lang];
else if (strlen($lang) == 2 && !isset($rcube_languages[$lang]))
return strtolower($lang) . '_' . strtoupper($lang);
else
return $lang;
}
?>

@ -2,10 +2,9 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/indexcontacts.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2011, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -19,36 +18,9 @@
+-----------------------------------------------------------------------+
*/
define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
define('INSTALL_PATH', realpath(__DIR__ . '/..') . '/' );
require_once INSTALL_PATH.'program/include/clisetup.php';
ini_set('memory_limit', -1);
// connect to DB
$RCMAIL = rcmail::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') . " 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();

@ -0,0 +1,39 @@
#!/usr/bin/env php
<?php
/*
+-----------------------------------------------------------------------+
| This file is part of the Roundcube Webmail client |
| |
| Copyright (C) The Roundcube Dev Team |
| Copyright (C) Kolab Systems AG |
| |
| 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. |
| |
| PURPOSE: |
| Create database schema |
+-----------------------------------------------------------------------+
| Author: Aleksander Machniak <alec@alec.pl> |
+-----------------------------------------------------------------------+
*/
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']);

@ -0,0 +1,385 @@
#!/usr/bin/env php
<?php
/*
+-----------------------------------------------------------------------+
| This file is part of the Roundcube Webmail client |
| |
| Copyright (C) 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. |
| |
| PURPOSE: |
| Utility script to fetch and install all 3rd party javascript |
| libraries used in Roundcube from source. |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <thomas@roundcube.net> |
+-----------------------------------------------------------------------+
*/
define('INSTALL_PATH', realpath(__DIR__ . '/..') . '/' );
require_once INSTALL_PATH . 'program/include/clisetup.php';
if (!function_exists('exec')) {
rcube::raise_error("PHP exec() function is required. Check disable_functions in php.ini.", false, true);
}
$cfgfile = INSTALL_PATH . 'jsdeps.json';
$SOURCES = json_decode(file_get_contents($cfgfile), true);
if (empty($SOURCES['dependencies'])) {
rcube::raise_error("Failed to read dependencies list from $cfgfile", false, true);
}
$CURL = trim(`which curl`);
$WGET = trim(`which wget`);
$UNZIP = trim(`which unzip`);
if (($CACHEDIR = getenv("CACHEDIR")) && is_writeable($CACHEDIR)) {
// use $CACHEDIR
}
else if (is_writeable(INSTALL_PATH . 'temp/js_cache') || @mkdir(INSTALL_PATH . 'temp/js_cache', 0774, true)) {
$CACHEDIR = INSTALL_PATH . 'temp/js_cache';
}
else {
$CACHEDIR = sys_get_temp_dir();
}
//////////////// License definitions
$LICENSES = array();
$LICENSES['MIT'] = <<<EOM
* Licensed under the MIT licenses
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
EOM;
$LICENSES['GPLv3'] = <<<EOG
* The JavaScript code in this page is free software: you can
* redistribute it and/or modify it under the terms of the GNU
* General Public License (GNU GPL) as published by the Free Software
* Foundation, either version 3 of the License, or (at your option)
* any later version. The code is distributed WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
*
* As additional permission under GNU GPL version 3 section 7, you
* may distribute non-source (e.g., minimized or compacted) forms of
* that code without the copy of the GNU GPL normally required by
* section 4, provided you include this license notice and a URL
* through which recipients can access the Corresponding Source.
EOG;
$LICENSES['LGPL'] = <<<EOL
* The JavaScript code in this page is free software: you can
* redistribute it and/or modify it under the terms of the GNU
* Lesser General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option)
* any later version.
EOL;
//////////////// Functions
/**
* Fetch package file from source
*/
function fetch_from_source($package, $useCache = true, &$filetype = null)
{
global $CURL, $WGET;
$cache_file = extract_filetype($package, $filetype);
if (!is_readable($cache_file) || !$useCache) {
if (empty($CURL) && empty($WGET)) {
rcube::raise_error("Required 'wget' or 'curl' program not found.", false, true);
}
$url = str_replace('$v', $package['version'], $package['url']);
echo "Fetching $url\n";
if ($CURL)
exec(sprintf('%s -L -s %s -o %s', $CURL, escapeshellarg($url), $cache_file), $out, $retval);
else
exec(sprintf('%s -q %s -O %s', $WGET, escapeshellarg($url), $cache_file), $out, $retval);
// Try Github API as a fallback (#6248)
if ($retval !== 0 && $package['api_url']) {
$url = str_replace('$v', $package['version'], $package['api_url']);
$header = 'Accept:application/vnd.github.v3.raw';
rcube::raise_error("Fetching failed. Using Github API on $url");
if ($CURL)
exec(sprintf('%s -L -H %s -s %s -o %s', $CURL, escapeshellarg($header), escapeshellarg($url), $cache_file), $out, $retval);
else
exec(sprintf('%s --header %s -q %s -O %s', $WGET, escapeshellarg($header), escapeshellarg($url), $cache_file), $out, $retval);
}
if ($retval !== 0) {
rcube::raise_error("Failed to download source file from $url", false, true);
}
}
return $cache_file;
}
/**
* Returns package source file location and type
*/
function extract_filetype($package, &$filetype = null)
{
global $CACHEDIR;
$filetype = pathinfo($package['url'], PATHINFO_EXTENSION) ?: 'tmp';
$cache_file = $CACHEDIR . '/' . $package['lib'] . '-' . $package['version'] . '.' . $filetype;
// Make sure it is a zip file
if (file_exists($cache_file)) {
$magic = file_get_contents($cache_file, false, null, 0, 4);
if ($magic === "PK\003\004") {
$filetype = 'zip';
}
}
return $cache_file;
}
/**
* Create a destination javascript file with copyright and license header
*/
function compose_destfile($package, $srcfile)
{
global $LICENSES;
$header = sprintf("/**\n * %s - v%s\n *\n", $package['name'], $package['version']);
if (!empty($package['source'])) {
$header .= " * @source " . str_replace('$v', $package['version'], $package['source']) . "\n";
$header .= " *\n";
}
if (!empty($package['license']) && isset($LICENSES[$package['license']])) {
$header .= " * @licstart The following is the entire license notice for the\n";
$header .= " * JavaScript code in this file.\n";
$header .= " *\n";
if (!empty($package['copyright'])) {
$header .= " * " . $package['copyright'] . "\n";
$header .= " *\n";
}
$header .= $LICENSES[$package['license']];
$header .= " *\n";
$header .= " * @licend The above is the entire license notice\n";
$header .= " * for the JavaScript code in this file.\n";
}
$header .= " */\n";
if (file_put_contents(INSTALL_PATH . $package['dest'], $header . file_get_contents($srcfile))) {
echo "Wrote file " . INSTALL_PATH . $package['dest'] . "\n";
}
else {
rcube::raise_error("Failed to write destination file " . INSTALL_PATH . $package['dest'], false, true);
}
}
/**
* Extract a Zip archive into the destination specified by the package config
*/
function extract_zipfile($package, $srcfile)
{
global $UNZIP, $CACHEDIR;
if (empty($UNZIP)) {
rcube::raise_error("Required 'unzip' program not found.", false, true);
}
$destdir = INSTALL_PATH . $package['dest'];
if (!is_dir($destdir)) {
mkdir($destdir, 0775, true);
}
if (!is_writeable($destdir)) {
rcube::raise_error("Cannot write to destination directory: $destdir", false, true);
}
// pick files from zip archive
if (!empty($package['pick'])) {
foreach ($package['pick'] as $pattern) {
echo "Extracting files $pattern into $destdir\n";
exec(sprintf('%s -o %s %s -d %s', $UNZIP, escapeshellarg($srcfile), escapeshellarg($pattern), $destdir), $out, $retval);
if ($retval !== 0) {
rcube::raise_error("Failed to unpack $pattern; " . implode('; ' . $out));
}
}
}
// unzip the archive and map source to dest files/directories
else if (!empty($package['map'])) {
$extract = $CACHEDIR . '/' . $package['lib'] . '-extract';
if (!is_dir($extract)) {
mkdir($extract, 0774, true);
}
$zip_command = '%s -' . ($package['flat'] ? 'j' : 'o') . ' %s -d %s';
exec(sprintf($zip_command, $UNZIP, escapeshellarg($srcfile), $extract), $out, $retval);
// get the root folder of the extracted package
$extract_tree = glob("$extract/*", GLOB_ONLYDIR);
$sourcedir = count($extract_tree) ? $extract_tree[0] : $extract;
foreach ($package['map'] as $src => $dest) {
echo "Installing $sourcedir/$src into $destdir/$dest\n";
$dest_file = $destdir . '/' . $dest;
$src_file = $sourcedir . '/' . $src;
// make sure the destination's parent directory exists
if (strpos($dest, '/') !== false) {
$parentdir = dirname($dest_file);
if (!is_dir($parentdir)) {
mkdir($parentdir, 0775, true);
}
}
// avoid copying source directory as a child into destination
if (is_dir($src_file) && is_dir($dest_file)) {
exec(sprintf('rm -rf %s', $dest_file));
}
exec(sprintf('mv -f %s %s', $src_file, $dest_file), $out, $retval);
if ($retval !== 0) {
rcube::raise_error("Failed to move $src into $dest_file; " . implode('; ' . $out));
}
// Remove sourceMappingURL
else if (isset($package['sourcemap']) && $package['sourcemap'] === false) {
if ($content = file($dest_file)) {
$index = count($content);
if (preg_match('|sourceMappingURL=|', $content[$index-1])) {
array_pop($content);
file_put_contents($dest_file, implode('', $content));
}
}
}
}
// remove temp extraction dir
exec('rm -rf ' . $extract);
}
// extract the archive into the destination directory
else {
echo "Extracting zip archive into $destdir\n";
exec(sprintf('%s -o %s -d %s', $UNZIP, escapeshellarg($srcfile), $destdir), $out, $retval);
if ($retval !== 0) {
rcube::raise_error("Failed to unzip $srcfile; " . implode('; ' . $out));
}
}
// remove some files from the destination
if (!empty($package['omit'])) {
foreach ((array)$package['omit'] as $glob) {
exec(sprintf('rm -rf %s/%s', $destdir, escapeshellarg($glob)));
}
}
// prepend license header to extracted files
if (!empty($package['addlicense'])) {
foreach ((array)$package['addlicense'] as $filename) {
$pkg = $package;
$pkg['dest'] = $package['dest'] . '/' . $filename;
compose_destfile($pkg, $destdir . '/' . $filename);
}
}
}
/**
* Delete the package destination file/dir
*/
function delete_destfile($package)
{
$destdir = INSTALL_PATH . ($package['rm'] ?: $package['dest']);
if (file_exists($destdir)) {
if (PHP_OS === 'Windows') {
exec(sprintf("rd /s /q %s", escapeshellarg($destdir)));
}
else {
exec(sprintf("rm -rf %s", escapeshellarg($destdir)));
}
}
}
//////////////// Execution
$args = rcube_utils::get_opt(array('f' => 'force:bool', 'd' => 'delete:bool', 'g' => 'get:bool', 'e' => 'extract:bool'))
+ array('force' => false, 'delete' => false, 'get' => false, 'extract' => false);
$WHAT = $args[0];
$useCache = !$args['force'] && !$args['get'];
if (!$args['get'] && !$args['extract'] && !$args['delete']) {
$args['get'] = $args['extract'] = 1;
}
foreach ($SOURCES['dependencies'] as $package) {
if (!isset($package['name'])) {
$package['name'] = $package['lib'];
}
if ($WHAT && $package['lib'] !== $WHAT) {
continue;
}
if ($args['delete']) {
delete_destfile($package);
continue;
}
if ($args['get']) {
$srcfile = fetch_from_source($package, $useCache, $filetype);
}
else {
$srcfile = extract_filetype($package, $filetype);
}
if (!empty($package['sha1']) && ($sum = sha1_file($srcfile)) !== $package['sha1']) {
rcube::raise_error("Incorrect sha1 sum of $srcfile. Expected: {$package['sha1']}, got: $sum", false, true);
}
if ($args['extract']) {
echo "Installing {$package['name']}...\n";
if ($filetype === 'zip') {
extract_zipfile($package, $srcfile);
}
else {
compose_destfile($package, $srcfile);
}
echo "Done.\n";
}
}

@ -2,10 +2,9 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/installto.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2012, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -19,63 +18,131 @@
+-----------------------------------------------------------------------+
*/
define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
define('INSTALL_PATH', realpath(__DIR__ . '/..') . '/' );
require_once INSTALL_PATH . 'program/include/clisetup.php';
$target_dir = unslashify($_SERVER['argv'][1]);
if (!function_exists('system')) {
rcube::raise_error("PHP system() function is required. Check disable_functions in php.ini.", false, true);
}
$target_dir = unslashify(end($_SERVER['argv']));
$accept = in_array('-y', $_SERVER['argv']) ? 'y' : null;
if (empty($target_dir) || !is_dir(realpath($target_dir)))
rcube::raise_error("Invalid target: not a directory\nUsage: installto.sh <TARGET>", false, true);
rcube::raise_error("Invalid target: not a directory\nUsage: installto.sh [-y] <TARGET>", false, true);
// read version from iniset.php
$iniset = @file_get_contents($target_dir . '/program/include/iniset.php');
if (!preg_match('/define\(.RCMAIL_VERSION.,\s*.([0-9.]+[a-z-]*)/', $iniset, $m))
rcube::raise_error("No valid Roundcube installation found at $target_dir", false, true);
if (!preg_match('/define\(.RCMAIL_VERSION.,\s*.([0-9.]+[a-z0-9-]*)/', $iniset, $m))
rcube::raise_error("No valid Roundcube installation found at $target_dir", false, true);
$oldversion = $m[1];
if (version_compare(version_parse($oldversion), version_parse(RCMAIL_VERSION), '>='))
rcube::raise_error("Installation at target location is up-to-date!", false, true);
if (version_compare(version_parse($oldversion), version_parse(RCMAIL_VERSION), '>'))
rcube::raise_error("Target installation already in version $oldversion.", false, true);
echo "Upgrading from $oldversion. Do you want to continue? (y/N)\n";
$input = trim(fgets(STDIN));
if (version_compare(version_parse($oldversion), version_parse(RCMAIL_VERSION), '==')) {
echo "Target installation already in version $oldversion. Do you want to update again? (y/N)\n";
}
else {
echo "Upgrading from $oldversion. Do you want to continue? (y/N)\n";
}
$input = $accept ?: trim(fgets(STDIN));
if (strtolower($input) == 'y') {
$err = false;
echo "Copying files to target location...";
foreach (array('program','installer','bin','SQL','plugins','skins') as $dir) {
if (!system("rsync -avC " . INSTALL_PATH . "$dir/* $target_dir/$dir/")) {
$err = true;
break;
echo "Copying files to target location...";
$adds = array();
$dirs = array('bin','SQL','plugins','skins','program');
if (is_dir(INSTALL_PATH . 'vendor') && !is_file("$target_dir/composer.json")) {
$dirs[] = 'vendor';
}
if (file_exists("$target_dir/installer")) {
$dirs[] = 'installer';
}
foreach ($dirs as $dir) {
// @FIXME: should we use --delete for all directories?
$delete = in_array($dir, array('program', 'vendor', 'installer')) ? '--delete ' : '';
$command = "rsync -aC --out-format=%n " . $delete . INSTALL_PATH . "$dir/ $target_dir/$dir/";
if (system($command, $ret) === false || $ret > 0) {
rcube::raise_error("Failed to execute command: $command", false, true);
}
}
foreach (array('index.php','config/defaults.inc.php','composer.json-dist','jsdeps.json','CHANGELOG','README.md','UPGRADING','LICENSE','INSTALL') as $file) {
$command = "rsync -a --out-format=%n " . INSTALL_PATH . "$file $target_dir/$file";
if (file_exists(INSTALL_PATH . $file) && (system($command, $ret) === false || $ret > 0)) {
rcube::raise_error("Failed to execute command: $command", false, true);
}
}
}
foreach (array('index.php','.htaccess','config/defaults.inc.php','CHANGELOG','README.md','UPGRADING','LICENSE') as $file) {
if (!system("rsync -av " . INSTALL_PATH . "$file $target_dir/$file")) {
$err = true;
break;
// Copy .htaccess or .user.ini if needed
foreach (array('.htaccess','.user.ini') as $file) {
if (file_exists(INSTALL_PATH . $file)) {
if (!file_exists("$target_dir/$file") || file_get_contents(INSTALL_PATH . $file) != file_get_contents("$target_dir/$file")) {
if (copy(INSTALL_PATH . $file, "$target_dir/$file.new")) {
echo "$file.new\n";
$adds[] = "NOTICE: New $file file saved as $file.new.";
}
}
}
}
// remove old (<1.0) .htaccess file
@unlink("$target_dir/program/.htaccess");
echo "done.\n\n";
if (is_dir("$target_dir/skins/default")) {
echo "Removing old default skin...";
system("rm -rf $target_dir/skins/default $target_dir/plugins/jqueryui/themes/default");
foreach (glob(INSTALL_PATH . "plugins/*/skins") as $plugin_skin_dir) {
$plugin_skin_dir = preg_replace('!^.*' . INSTALL_PATH . '!', '', $plugin_skin_dir);
if (is_dir("$target_dir/$plugin_skin_dir/classic")) {
system("rm -rf $target_dir/$plugin_skin_dir/default");
}
}
echo "done.\n\n";
}
// Warn about situation when using "complete" package to update "custom" installation (#7087)
// Note: "Complete" package do not include jsdeps.json nor install-jsdeps.sh
if (file_exists("$target_dir/jsdeps.json") && !file_exists(INSTALL_PATH . "jsdeps.json")) {
$adds[] = "WARNING: JavaScript dependencies update skipped.";
}
// check if js-deps are up-to-date
else if (file_exists("$target_dir/jsdeps.json") && file_exists("$target_dir/bin/install-jsdeps.sh")) {
$jsdeps = json_decode(file_get_contents("$target_dir/jsdeps.json"));
$package = $jsdeps->dependencies[0];
$dest_file = $target_dir . '/' . $package->dest;
if (!file_exists($dest_file) || sha1_file($dest_file) !== $package->sha1) {
echo "Installing JavaScript dependencies...";
system("cd $target_dir && bin/install-jsdeps.sh");
echo "done.\n\n";
}
}
}
echo "done.\n\n";
if (is_dir("$target_dir/skins/default")) {
echo "Removing old default skin...";
system("rm -rf $target_dir/skins/default $target_dir/plugins/jqueryui/themes/default");
foreach (glob(INSTALL_PATH . "plugins/*/skins") as $plugin_skin_dir) {
$plugin_skin_dir = preg_replace('!^.*' . INSTALL_PATH . '!', '', $plugin_skin_dir);
if (is_dir("$target_dir/$plugin_skin_dir/classic"))
system("rm -rf $target_dir/$plugin_skin_dir/default");
}
echo "done.\n\n";
}
if (!$err) {
else {
$adds[] = "NOTICE: JavaScript dependencies installation skipped.";
}
if (file_exists("$target_dir/installer")) {
$adds[] = "NOTICE: The 'installer' directory still exists. You should remove it after the upgrade.";
}
if (!empty($adds)) {
echo implode("\n", $adds) . "\n\n";
}
echo "Running update script at target...\n";
system("cd $target_dir && php bin/update.sh --version=$oldversion");
system("cd $target_dir && php bin/update.sh --version=$oldversion" . ($accept ? ' -y' : ''));
echo "All done.\n";
}
}
else
echo "Update cancelled. See ya!\n";
?>
else {
echo "Update cancelled. See ya!\n";
}

@ -2,61 +2,61 @@
PWD=`dirname "$0"`
JS_DIR="$PWD/../program/js"
JAR_DIR='/tmp'
LANG_IN='ECMASCRIPT3'
# latest version requires Java 7, we'll use an older one
#CLOSURE_COMPILER_URL='http://dl.google.com/closure-compiler/compiler-latest.zip'
CLOSURE_COMPILER_URL='http://dl.google.com/closure-compiler/compiler-20131014.zip'
LANG_IN='ECMASCRIPT5'
CLOSURE_COMPILER_URL='http://dl.google.com/closure-compiler/compiler-latest.zip'
do_shrink() {
rm -f "$2"
java -jar $JAR_DIR/compiler.jar --compilation_level=SIMPLE_OPTIMIZATIONS --js="$1" --js_output_file="$2" --language_in="$3"
rm -f "$2"
# copy the first comment block with license information for LibreJS
grep -q '@lic' $1 && sed -n '/\/\*/,/\*\// { p; /\*\//q; }' $1 > $2
java -jar $JAR_DIR/compiler.jar --compilation_level=SIMPLE_OPTIMIZATIONS --js="$1" --language_in="$3" >> $2
}
if [ ! -d "$JS_DIR" ]; then
echo "Directory $JS_DIR not found."
exit 1
echo "Directory $JS_DIR not found."
exit 1
fi
if [ ! -w "$JAR_DIR" ]; then
JAR_DIR=$PWD
JAR_DIR=$PWD
fi
if java -version >/dev/null 2>&1; then
:
:
else
echo "Java not found. Please ensure that the 'java' program is in your PATH."
exit 1
echo "Java not found. Please ensure that the 'java' program is in your PATH."
exit 1
fi
if [ ! -r "$JAR_DIR/compiler.jar" ]; then
if which wget >/dev/null 2>&1 && which unzip >/dev/null 2>&1; then
wget "$CLOSURE_COMPILER_URL" -O "/tmp/$$.zip"
elif which curl >/dev/null 2>&1 && which unzip >/dev/null 2>&1; then
curl "$CLOSURE_COMPILER_URL" -o "/tmp/$$.zip"
else
echo "Please download $CLOSURE_COMPILER_URL and extract compiler.jar to $JAR_DIR/."
exit 1
fi
(cd $JAR_DIR && unzip "/tmp/$$.zip" "compiler.jar")
rm -f "/tmp/$$.zip"
if which wget >/dev/null 2>&1 && which unzip >/dev/null 2>&1; then
wget "$CLOSURE_COMPILER_URL" -O "/tmp/$$.zip"
elif which curl >/dev/null 2>&1 && which unzip >/dev/null 2>&1; then
curl "$CLOSURE_COMPILER_URL" -o "/tmp/$$.zip"
else
echo "Please download $CLOSURE_COMPILER_URL and extract compiler.jar to $JAR_DIR/."
exit 1
fi
unzip -p "/tmp/$$.zip" "*.jar" > "$JAR_DIR/compiler.jar"
rm -f "/tmp/$$.zip"
fi
# compress single file from argument
if [ $# -gt 0 ]; then
JS_DIR=`dirname "$1"`
JS_FILE="$1"
JS_DIR=`dirname "$1"`
JS_FILE="$1"
if [ $# -gt 1 ]; then
LANG_IN="$2"
fi
if [ $# -gt 1 ]; then
LANG_IN="$2"
fi
echo "Shrinking $JS_FILE"
echo "Shrinking $JS_FILE"
minfile=`echo $JS_FILE | sed -e 's/\.js$/\.min\.js/'`
do_shrink "$JS_FILE" "$minfile" "$LANG_IN"
exit
do_shrink "$JS_FILE" "$minfile" "$LANG_IN"
exit
fi
DIRS="$PWD/../program/js $PWD/../skins/* $PWD/../plugins/* $PWD/../plugins/*/skins/*"
DIRS="$PWD/../program/js $PWD/../skins/* $PWD/../plugins/* $PWD/../plugins/*/skins/* $PWD/../plugins/managesieve/codemirror/lib"
# default: compress application scripts
for dir in $DIRS; do
for file in $dir/*.js; do

@ -19,6 +19,5 @@ OUTPUTFORMAT=HTML
TEMPLATE=responsive-twig
# make documentation
$BIN_PHPDOC -d $PATH_PROJECT,$PATH_FRAMEWORK -t $PATH_DOCS --title "$TITLE" --defaultpackagename $PACKAGES \
--template=$TEMPLATE
$BIN_PHPDOC -d $PATH_PROJECT,$PATH_FRAMEWORK -t $PATH_DOCS --title "$TITLE" \
--defaultpackagename $PACKAGES --template=$TEMPLATE

@ -2,10 +2,9 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/moduserprefs.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2012, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -18,65 +17,49 @@
+-----------------------------------------------------------------------+
*/
define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
define('INSTALL_PATH', realpath(__DIR__ . '/..') . '/' );
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 = rcmail::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') . " 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);
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']);

@ -1,96 +1,104 @@
#!/usr/bin/env php
<?php
define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
/*
+-----------------------------------------------------------------------+
| This file is part of the Roundcube Webmail client |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <thomas@roundcube.net> |
+-----------------------------------------------------------------------+
*/
define('INSTALL_PATH', realpath(__DIR__ . '/..') . '/' );
ini_set('memory_limit', -1);
require_once INSTALL_PATH.'program/include/clisetup.php';
function print_usage()
{
print "Usage: msgexport -h imap-host -u user-name -m mailbox name\n";
print "--host IMAP host\n";
print "--user IMAP user name\n";
print "--mbox Folder name, set to '*' for all\n";
print "--file Output file\n";
print "Usage: msgexport -h imap-host -u user-name -m mailbox name\n";
print "--host IMAP host\n";
print "--user IMAP user name\n";
print "--mbox Folder name, set to '*' for all\n";
print "--file Output file\n";
}
function vputs($str)
{
$out = $GLOBALS['args']['file'] ? STDOUT : STDERR;
fwrite($out, $str);
$out = $GLOBALS['args']['file'] ? STDOUT : STDERR;
fwrite($out, $str);
}
function progress_update($pos, $max)
{
$percent = round(100 * $pos / $max);
vputs(sprintf("%3d%% [%-51s] %d/%d\033[K\r", $percent, @str_repeat('=', $percent / 2) . '>', $pos, $max));
$percent = round(100 * $pos / $max);
vputs(sprintf("%3d%% [%-51s] %d/%d\033[K\r", $percent, @str_repeat('=', $percent / 2) . '>', $pos, $max));
}
function export_mailbox($mbox, $filename)
{
global $IMAP;
global $IMAP;
$IMAP->set_folder($mbox);
$IMAP->set_folder($mbox);
$index = $IMAP->index($mbox, null, 'ASC');
$count = $index->count();
$index = $index->get();
vputs("Getting message list of {$mbox}...");
vputs("$count messages\n");
if ($filename)
{
if (!($out = fopen($filename, 'w')))
{
vputs("Cannot write to output file\n");
return;
}
vputs("Writing to $filename\n");
}
else
$out = STDOUT;
for ($i = 0; $i < $count; $i++)
{
$headers = $IMAP->get_message_headers($index[$i]);
$from = current(rcube_mime::decode_address_list($headers->from, 1, false));
fwrite($out, sprintf("From %s %s UID %d\n", $from['mailto'], $headers->date, $headers->uid));
$IMAP->get_raw_body($headers->uid, $out);
fwrite($out, "\n\n\n");
progress_update($i+1, $count);
}
vputs("\ncomplete.\n");
if ($filename)
fclose($out);
vputs("Getting message list of {$mbox}...");
vputs("$count messages\n");
if ($filename) {
if (!($out = fopen($filename, 'w'))) {
vputs("Cannot write to output file\n");
return;
}
vputs("Writing to $filename\n");
}
else {
$out = STDOUT;
}
for ($i = 0; $i < $count; $i++) {
$headers = $IMAP->get_message_headers($index[$i]);
$from = current(rcube_mime::decode_address_list($headers->from, 1, false));
fwrite($out, sprintf("From %s %s UID %d\n", $from['mailto'], $headers->date, $headers->uid));
$IMAP->get_raw_body($headers->uid, $out);
fwrite($out, "\n\n\n");
progress_update($i+1, $count);
}
vputs("\ncomplete.\n");
if ($filename) {
fclose($out);
}
}
// get arguments
$opts = array('h' => 'host', 'u' => 'user', 'p' => 'pass', 'm' => 'mbox', 'f' => 'file');
$args = rcube_utils::get_opt($opts) + array('host' => 'localhost', 'mbox' => 'INBOX');
if ($_SERVER['argv'][1] == 'help')
{
print_usage();
exit;
if ($_SERVER['argv'][1] == 'help') {
print_usage();
exit;
}
else if (!$args['host'])
{
vputs("Missing required parameters.\n");
print_usage();
exit;
else if (!$args['host']) {
vputs("Missing required parameters.\n");
print_usage();
exit;
}
// prompt for username if not set
if (empty($args['user']))
{
vputs("IMAP user: ");
$args['user'] = trim(fgets(STDIN));
if (empty($args['user'])) {
vputs("IMAP user: ");
$args['user'] = trim(fgets(STDIN));
}
// prompt for password
@ -99,45 +107,39 @@ $args['pass'] = rcube_utils::prompt_silent("Password: ");
// parse $host URL
$a_host = parse_url($args['host']);
if ($a_host['host'])
{
$host = $a_host['host'];
$imap_ssl = (isset($a_host['scheme']) && in_array($a_host['scheme'], array('ssl','imaps','tls'))) ? TRUE : FALSE;
$imap_port = isset($a_host['port']) ? $a_host['port'] : ($imap_ssl ? 993 : 143);
if ($a_host['host']) {
$host = $a_host['host'];
$imap_ssl = (isset($a_host['scheme']) && in_array($a_host['scheme'], array('ssl','imaps','tls'))) ? TRUE : FALSE;
$imap_port = isset($a_host['port']) ? $a_host['port'] : ($imap_ssl ? 993 : 143);
}
else
{
$host = $args['host'];
$imap_port = 143;
else {
$host = $args['host'];
$imap_port = 143;
}
// instantiate IMAP class
$IMAP = new rcube_imap(null);
// try to connect to IMAP server
if ($IMAP->connect($host, $args['user'], $args['pass'], $imap_port, $imap_ssl))
{
vputs("IMAP login successful.\n");
if ($IMAP->connect($host, $args['user'], $args['pass'], $imap_port, $imap_ssl)) {
vputs("IMAP login successful.\n");
$filename = null;
$mailboxes = $args['mbox'] == '*' ? $IMAP->list_folders(null) : array($args['mbox']);
$filename = null;
$mailboxes = $args['mbox'] == '*' ? $IMAP->list_folders(null) : array($args['mbox']);
foreach ($mailboxes as $mbox)
{
if ($args['file'])
$filename = preg_replace('/\.[a-z0-9]{3,4}$/i', '', $args['file']) . asciiwords($mbox) . '.mbox';
else if ($args['mbox'] == '*')
$filename = asciiwords($mbox) . '.mbox';
foreach ($mailboxes as $mbox) {
if ($args['file'])
$filename = preg_replace('/\.[a-z0-9]{3,4}$/i', '', $args['file']) . asciiwords($mbox) . '.mbox';
else if ($args['mbox'] == '*')
$filename = asciiwords($mbox) . '.mbox';
if ($args['mbox'] == '*' && in_array(strtolower($mbox), array('junk','spam','trash')))
continue;
if ($args['mbox'] == '*' && in_array(strtolower($mbox), array('junk','spam','trash'))) {
continue;
}
export_mailbox($mbox, $filename);
}
export_mailbox($mbox, $filename);
}
}
else
{
vputs("IMAP login failed.\n");
else {
vputs("IMAP login failed.\n");
}
?>

@ -1,18 +1,31 @@
#!/usr/bin/env php
<?php
/*
+-----------------------------------------------------------------------+
| This file is part of the Roundcube Webmail client |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <thomas@roundcube.net> |
+-----------------------------------------------------------------------+
*/
define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
define('INSTALL_PATH', realpath(__DIR__ . '/..') . '/' );
ini_set('memory_limit', -1);
require_once INSTALL_PATH.'program/include/clisetup.php';
function print_usage()
{
print "Usage: msgimport -h imap-host -u user-name -m mailbox -f message-file\n";
print "--host IMAP host\n";
print "--user IMAP user name\n";
print "--mbox Target mailbox\n";
print "--file Message file to upload\n";
print "Usage: msgimport -h imap-host -u user-name -m mailbox -f message-file\n";
print "--host IMAP host\n";
print "--user IMAP user name\n";
print "--mbox Target mailbox\n";
print "--file Message file to upload\n";
}
@ -20,94 +33,80 @@ function print_usage()
$opts = array('h' => 'host', 'u' => 'user', 'p' => 'pass', 'm' => 'mbox', 'f' => 'file');
$args = rcube_utils::get_opt($opts) + array('host' => 'localhost', 'mbox' => 'INBOX');
if ($_SERVER['argv'][1] == 'help')
{
print_usage();
exit;
if ($_SERVER['argv'][1] == 'help') {
print_usage();
exit;
}
else if (!($args['host'] && $args['file']))
{
print "Missing required parameters.\n";
print_usage();
exit;
else if (!($args['host'] && $args['file'])) {
print "Missing required parameters.\n";
print_usage();
exit;
}
else if (!is_file($args['file']))
{
rcube::raise_error("Cannot read message file.", false, true);
else if (!is_file($args['file'])) {
rcube::raise_error("Cannot read message file.", false, true);
}
// prompt for username if not set
if (empty($args['user']))
{
//fwrite(STDOUT, "Please enter your name\n");
echo "IMAP user: ";
$args['user'] = trim(fgets(STDIN));
if (empty($args['user'])) {
//fwrite(STDOUT, "Please enter your name\n");
echo "IMAP user: ";
$args['user'] = trim(fgets(STDIN));
}
// prompt for password
if (empty($args['pass']))
{
$args['pass'] = rcube_utils::prompt_silent("Password: ");
if (empty($args['pass'])) {
$args['pass'] = rcube_utils::prompt_silent("Password: ");
}
// parse $host URL
$a_host = parse_url($args['host']);
if ($a_host['host'])
{
$host = $a_host['host'];
$imap_ssl = (isset($a_host['scheme']) && in_array($a_host['scheme'], array('ssl','imaps','tls'))) ? TRUE : FALSE;
$imap_port = isset($a_host['port']) ? $a_host['port'] : ($imap_ssl ? 993 : 143);
if ($a_host['host']) {
$host = $a_host['host'];
$imap_ssl = (isset($a_host['scheme']) && in_array($a_host['scheme'], array('ssl','imaps','tls'))) ? TRUE : FALSE;
$imap_port = isset($a_host['port']) ? $a_host['port'] : ($imap_ssl ? 993 : 143);
}
else
{
$host = $args['host'];
$imap_port = 143;
else {
$host = $args['host'];
$imap_port = 143;
}
// instantiate IMAP class
$IMAP = new rcube_imap(null);
// try to connect to IMAP server
if ($IMAP->connect($host, $args['user'], $args['pass'], $imap_port, $imap_ssl))
{
print "IMAP login successful.\n";
print "Uploading messages...\n";
$count = 0;
$message = $lastline = '';
$fp = fopen($args['file'], 'r');
while (($line = fgets($fp)) !== false)
{
if (preg_match('/^From\s+-/', $line) && $lastline == '')
{
if (!empty($message))
{
if ($IMAP->save_message($args['mbox'], rtrim($message)))
$count++;
else
rcube::raise_error("Failed to save message to {$args['mbox']}", false, true);
$message = '';
}
continue;
}
$message .= $line;
$lastline = rtrim($line);
}
if (!empty($message) && $IMAP->save_message($args['mbox'], rtrim($message)))
$count++;
// upload message from file
if ($count)
print "$count messages successfully added to {$args['mbox']}.\n";
else
print "Adding messages failed!\n";
if ($IMAP->connect($host, $args['user'], $args['pass'], $imap_port, $imap_ssl)) {
print "IMAP login successful.\n";
print "Uploading messages...\n";
$count = 0;
$message = $lastline = '';
$fp = fopen($args['file'], 'r');
while (($line = fgets($fp)) !== false) {
if (preg_match('/^From\s+-/', $line) && $lastline == '') {
if (!empty($message)) {
if ($IMAP->save_message($args['mbox'], rtrim($message)))
$count++;
else
rcube::raise_error("Failed to save message to {$args['mbox']}", false, true);
$message = '';
}
continue;
}
$message .= $line;
$lastline = rtrim($line);
}
if (!empty($message) && $IMAP->save_message($args['mbox'], rtrim($message)))
$count++;
// upload message from file
if ($count)
print "$count messages successfully added to {$args['mbox']}.\n";
else
print "Adding messages failed!\n";
}
else
{
rcube::raise_error("IMAP login failed.", false, true);
else {
rcube::raise_error("IMAP login failed.", false, true);
}
?>

@ -2,10 +2,9 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/package2composer.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2013, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -13,7 +12,6 @@
| |
| PURPOSE: |
| Convert a plugin's package.xml file into a composer.json description |
| |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <thomas@roundcube.net> |
+-----------------------------------------------------------------------+
@ -42,7 +40,7 @@ $data = array(
'version' => strval($package->version->release),
'authors' => array(),
'repositories' => array(
array('type' => 'composer', 'url' => 'http://plugins.roundcube.net'),
array('type' => 'composer', 'url' => 'https://plugins.roundcube.net'),
),
'require' => array(
'php' => '>=5.3.0',
@ -97,7 +95,7 @@ else if (defined('JSON_PRETTY_PRINT')) {
echo json_encode($data, $flags);
}
else {
fputs(STDERR,
fwrite(STDERR,
"FAILED! composer.phar not found in current directory.
Please download it from http://getcomposer.org/download/ or with
@ -106,4 +104,3 @@ Please download it from http://getcomposer.org/download/ or with
}
echo "\n";

@ -6,7 +6,7 @@
# Note: there's a bug in txclib, so if the command below doesn't
# work see https://github.com/transifex/transifex-client/commit/a80320735973dd608b48520bf3b89ad53e2b088b
tx --debug pull -a --mode translator
tx --debug pull -a -f --mode translator
PWD=`dirname "$0"`
@ -18,8 +18,8 @@ do_clean()
echo "Cleaning $1"
# remove untranslated/empty texts
perl -pi -e "s/^\\\$labels\[[^]]+\]\s+=\s+'';\n//" $1
perl -pi -e "s/^\\\$messages\[[^]]+\]\s+=\s+'';\n//" $1
perl -pi -e "s/^\\\$(labels|messages)\[[^]]+\]\s+=\s+'';\n//" $1
perl -pi -e "s/^\\\$(labels|messages)\[[^]]+\]\s+=\s+\"\";\n//" $1
# remove variable initialization
perl -pi -e "s/^\\\$(labels|messages)\s*=\s*array\(\);\n//" $1
# remove (one-line) comments
@ -39,6 +39,6 @@ done
# remove empty localization files
for file in $PWD/../program/localization/*/labels.inc; do grep -q -E '\$labels' $file || rm $file; done
for file in $PWD/../program/localization/*/timezones.inc; do grep -q -E '\$labels' $file || rm $file; done
for file in $PWD/../program/localization/*/messages.inc; do grep -q -E '\$messages' $file || rm $file; done
for file in $PWD/../plugins/*/localization/*.inc; do grep -q -E '\$(labels|messages)' $file || rm $file; done

@ -2,10 +2,9 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/update.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2010-2013, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -19,162 +18,276 @@
+-----------------------------------------------------------------------+
*/
define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
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']) {
echo "What version are you upgrading from? Type '?' if you don't know.\n";
if (($input = trim(fgets(STDIN))) && preg_match('/^[0-9.]+[a-z-]*$/', $input))
$opts['version'] = $input;
else
$opts['version'] = RCMAIL_VERSION;
echo "What version are you upgrading from? Type '?' if you don't know.\n";
if (($input = trim(fgets(STDIN))) && preg_match('/^[0-9.]+[a-z0-9-]*$/', $input)) {
$opts['version'] = $input;
}
else {
$opts['version'] = RCMAIL_VERSION;
}
}
$RCI = rcmail_install::get_instance();
$RCI->load_config();
if ($RCI->configured) {
$success = true;
if (($messages = $RCI->check_config()) || $RCI->legacy_config) {
$success = false;
$err = 0;
// list old/replaced config options
if (is_array($messages['replaced'])) {
echo "WARNING: Replaced config options:\n";
echo "(These config options have been replaced or renamed)\n";
foreach ($messages['replaced'] as $msg) {
echo "- '" . $msg['prop'] . "' was replaced by '" . $msg['replacement'] . "'\n";
$err++;
}
echo "\n";
}
$success = true;
if (($messages = $RCI->check_config($opts['version'])) || $RCI->legacy_config) {
$success = false;
$err = 0;
// list old/replaced config options
if (is_array($messages['replaced'])) {
echo "WARNING: Replaced config options:\n";
echo "(These config options have been replaced or renamed)\n";
foreach ($messages['replaced'] as $msg) {
echo "- '" . $msg['prop'] . "' was replaced by '" . $msg['replacement'] . "'\n";
$err++;
}
}
// list obsolete config options (just a notice)
if (is_array($messages['obsolete'])) {
echo "NOTICE: Obsolete config options:\n";
echo "(You still have some obsolete or inexistent properties set."
. " This isn't a problem but should be noticed)\n";
foreach ($messages['obsolete'] as $msg) {
echo "- '" . $msg['prop'] . ($msg['name'] ? "': " . $msg['name'] : "'") . "\n";
$err++;
}
}
if (!$err && $RCI->legacy_config) {
echo "WARNING: Your configuration needs to be migrated!\n";
echo "We changed the configuration files structure and your two config files "
. "main.inc.php and db.inc.php have to be merged into one single file.\n";
$err++;
}
// ask user to update config files
if ($err) {
if (!$opts['accept']) {
echo "Do you want me to fix your local configuration? (y/N)\n";
$input = trim(fgets(STDIN));
}
// positive: merge the local config with the defaults
if ($opts['accept'] || strtolower($input) == 'y') {
$error = $written = false;
echo ". backing up the current config file(s)...\n";
foreach (array('config', 'main', 'db') as $file) {
if (file_exists(RCMAIL_CONFIG_DIR . '/' . $file . '.inc.php')) {
if (!copy(RCMAIL_CONFIG_DIR . '/' . $file . '.inc.php', RCMAIL_CONFIG_DIR . '/' . $file . '.old.php')) {
$error = true;
}
}
}
if (!$error) {
$RCI->merge_config();
echo ". writing " . RCMAIL_CONFIG_DIR . "/config.inc.php...\n";
$written = $RCI->save_configfile($RCI->create_config());
}
// Success!
if ($written) {
echo "Done.\n";
echo "Your configuration files are now up-to-date!\n";
if ($messages['missing']) {
echo "But you still need to add the following missing options:\n";
foreach ($messages['missing'] as $msg) {
echo "- '" . $msg['prop'] . ($msg['name'] ? "': " . $msg['name'] : "'") . "\n";
}
}
if ($RCI->legacy_config) {
foreach (array('main', 'db') as $file) {
@unlink(RCMAIL_CONFIG_DIR . '/' . $file . '.inc.php');
}
}
}
else {
echo "Failed to write config file(s)!\n";
echo "Grant write privileges to the current user or update the files manually "
. "according to the above messages.\n";
}
}
else {
echo "Please update your config files manually according to the above messages.\n";
}
}
// list of config options with changed default (just a notice)
if (!empty($messages['defaults'])) {
echo "WARNING: Changed defaults (These config options have new default values):\n";
foreach ($messages['defaults'] as $opt) {
echo "- '{$opt}'\n";
}
}
// check dependencies based on the current configuration
if (is_array($messages['dependencies'])) {
echo "WARNING: Dependency check failed!\n";
echo "(Some of your configuration settings require other options to be configured "
. "or additional PHP modules to be installed)\n";
foreach ($messages['dependencies'] as $msg) {
echo "- " . $msg['prop'] . ': ' . $msg['explain'] . "\n";
}
// list obsolete config options (just a notice)
if (is_array($messages['obsolete'])) {
echo "NOTICE: Obsolete config options:\n";
echo "(You still have some obsolete or inexistent properties set. This isn't a problem but should be noticed)\n";
echo "Please fix your config files and run this script again!\n";
echo "See ya.\n";
}
}
foreach ($messages['obsolete'] as $msg) {
echo "- '" . $msg['prop'] . ($msg['name'] ? "': " . $msg['name'] : "'") . "\n";
$err++;
}
echo "\n";
// check file type detection
if ($RCI->check_mime_detection()) {
echo "WARNING: File type detection doesn't work properly!\n";
echo "Please check the 'mime_magic' config option or the finfo functions of PHP and run this script again.\n";
}
if ($RCI->check_mime_extensions()) {
echo "WARNING: Mimetype to file extension mapping doesn't work properly!\n";
echo "Please check the 'mime_types' config option and run this script again.\n";
}
if (!$err && $RCI->legacy_config) {
echo "WARNING: Your configuration needs to be migrated!\n";
echo "We changed the configuration files structure and your two config files main.inc.php and db.inc.php have to be merged into one single file.\n";
$err++;
// check database schema
if ($RCI->config['db_dsnw']) {
echo "Executing database schema update.\n";
$success = rcmail_utils::db_update(INSTALL_PATH . 'SQL', 'roundcube', $opts['version'],
array('errors' => true));
}
// ask user to update config files
if ($err) {
if (!$opts['accept']) {
echo "Do you want me to fix your local configuration? (y/N)\n";
$input = trim(fgets(STDIN));
}
// update composer dependencies
if (is_file(INSTALL_PATH . 'composer.json') && is_readable(INSTALL_PATH . 'composer.json-dist')) {
$composer_data = json_decode(file_get_contents(INSTALL_PATH . 'composer.json'), true);
$composer_template = json_decode(file_get_contents(INSTALL_PATH . 'composer.json-dist'), true);
$comsposer_json = null;
// positive: let's merge the local config with the defaults
if ($opts['accept'] || strtolower($input) == 'y') {
$error = $written = false;
// 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']);
// backup current config
echo ". backing up the current config file(s)...\n";
// remove obsolete packages
$old_packages = array(
'pear-pear.php.net/net_socket',
'pear-pear.php.net/auth_sasl',
'pear-pear.php.net/net_idna2',
'pear-pear.php.net/mail_mime',
'pear-pear.php.net/net_smtp',
'pear-pear.php.net/crypt_gpg',
'pear-pear.php.net/net_sieve',
'pear/mail_mime-decode',
'roundcube/net_sieve',
'endroid/qrcode',
);
foreach (array('config', 'main', 'db') as $file) {
if (file_exists(RCMAIL_CONFIG_DIR . '/' . $file . '.inc.php')) {
if (!copy(RCMAIL_CONFIG_DIR . '/' . $file . '.inc.php', RCMAIL_CONFIG_DIR . '/' . $file . '.old.php')) {
$error = true;
foreach ($old_packages as $pkg) {
if (array_key_exists($pkg, $composer_data['require'])) {
unset($composer_data['require'][$pkg]);
}
}
}
}
if (!$error) {
$RCI->merge_config();
echo ". writing " . RCMAIL_CONFIG_DIR . "/config.inc.php...\n";
$written = $RCI->save_configfile($RCI->create_config());
}
// update the repositories section with the new dependencies
if (is_array($composer_template['repositories'])) {
if (!is_array($composer_data['repositories'])) {
$composer_data['repositories'] = array();
}
foreach ($composer_template['repositories'] as $repo) {
$rkey = $repo['type'] . preg_replace('/^https?:/', '', $repo['url']) . $repo['package']['name'];
$existing = false;
// Success!
if ($written) {
echo "Done.\n";
echo "Your configuration files are now up-to-date!\n";
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);
}
if ($messages['missing']) {
echo "But you still need to add the following missing options:\n";
foreach ($messages['missing'] as $msg)
echo "- '" . $msg['prop'] . ($msg['name'] ? "': " . $msg['name'] : "'") . "\n";
}
$existing = true;
break;
}
// remove old repos
if (strpos($_repo['url'], 'git://git.kolab.org') === 0) {
unset($composer_data['repositories'][$k]);
}
else if ($_repo['type'] == 'package' && $_repo['package']['name'] == 'Net_SMTP') {
unset($composer_data['repositories'][$k]);
}
}
if ($RCI->legacy_config) {
foreach (array('main', 'db') as $file) {
@unlink(RCMAIL_CONFIG_DIR . '/' . $file . '.inc.php');
if (!$existing) {
$composer_data['repositories'][] = $repo;
}
}
}
$composer_data['repositories'] = array_values($composer_data['repositories']);
}
// use the JSON encoder from the Composer package
if (is_file('composer.phar')) {
include 'phar://composer.phar/src/Composer/Json/JsonFile.php';
$comsposer_json = \Composer\Json\JsonFile::encode($composer_data);
}
// PHP 5.4's json_encode() does the job, too
else if (defined('JSON_PRETTY_PRINT')) {
$comsposer_json = json_encode($composer_data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
}
else {
$success = false;
$comsposer_json = null;
}
// write updated composer.json back to disk
if ($comsposer_json && is_writeable(INSTALL_PATH . 'composer.json')) {
$success &= (bool)file_put_contents(INSTALL_PATH . 'composer.json', $comsposer_json);
}
else {
echo "Failed to write config file(s)!\n";
echo "Grant write privileges to the current user or update the files manually according to the above messages.\n";
echo "WARNING: unable to update composer.json!\n";
echo "Please replace the 'require' section in your composer.json with the following:\n";
$require_json = '';
foreach ($composer_data['require'] as $pkg => $ver) {
$require_json .= sprintf(' "%s": "%s",'."\n", $pkg, $ver);
}
echo ' "require": {'."\n";
echo rtrim($require_json, ",\n");
echo "\n }\n\n";
}
}
else {
echo "Please update your config files manually according to the above messages.\n";
}
echo "NOTICE: Update dependencies by running `php composer.phar update --no-dev`\n";
}
// check dependencies based on the current configuration
if (is_array($messages['dependencies'])) {
echo "WARNING: Dependency check failed!\n";
echo "(Some of your configuration settings require other options to be configured or additional PHP modules to be installed)\n";
// index contacts for fulltext searching
if ($opts['version'] && version_compare(version_parse($opts['version']), '0.6.0', '<')) {
rcmail_utils::indexcontacts();
}
foreach ($messages['dependencies'] as $msg) {
echo "- " . $msg['prop'] . ': ' . $msg['explain'] . "\n";
}
echo "Please fix your config files and run this script again!\n";
echo "See ya.\n";
if ($success) {
echo "This instance of Roundcube is up-to-date.\n";
echo "Have fun!\n";
}
}
// check file type detection
if ($RCI->check_mime_detection()) {
echo "WARNING: File type detection doesn't work properly!\n";
echo "Please check the 'mime_magic' config option or the finfo functions of PHP and run this script again.\n";
}
if ($RCI->check_mime_extensions()) {
echo "WARNING: Mimetype to file extension mapping doesn't work properly!\n";
echo "Please check the 'mime_types' config option and run this script again.\n";
}
// 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 . DIRECTORY_SEPARATOR . "SQL", $res);
$success = !$res;
}
// index contacts for fulltext searching
if ($opts['version'] && version_compare(version_parse($opts['version']), '0.6.0', '<')) {
system("php " . INSTALL_PATH . 'bin/indexcontacts.sh');
}
if ($success) {
echo "This instance of Roundcube is up-to-date.\n";
echo "Have fun!\n";
}
}
else {
echo "This instance of Roundcube is not yet configured!\n";
echo "Open http://url-to-roundcube/installer/ in your browser and follow the instuctions.\n";
echo "This instance of Roundcube is not yet configured!\n";
echo "Open http://url-to-roundcube/installer/ in your browser and follow the instuctions.\n";
}
?>

@ -2,10 +2,9 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/updatecss.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2010-2013, The Roundcube Dev Team |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -18,7 +17,7 @@
+-----------------------------------------------------------------------+
*/
define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
define('INSTALL_PATH', realpath(__DIR__ . '/..') . '/' );
require_once INSTALL_PATH . 'program/include/clisetup.php';
@ -118,5 +117,3 @@ function get_files($dir)
return $files;
}
?>

@ -2,11 +2,10 @@
<?php
/*
+-----------------------------------------------------------------------+
| bin/updatedb.sh |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2010-2012, The Roundcube Dev Team |
| Copyright (C) 2010-2012, Kolab Systems AG |
| |
| Copyright (C) The Roundcube Dev Team |
| Copyright (C) Kolab Systems AG |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -19,7 +18,7 @@
+-----------------------------------------------------------------------+
*/
define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
define('INSTALL_PATH', realpath(__DIR__ . '/..') . '/' );
require_once INSTALL_PATH . 'program/include/clisetup.php';
@ -37,143 +36,4 @@ 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 " . $DB->quote_identifier('value')
." FROM " . $DB->quote_identifier($DB->table_name('system'))
." WHERE " . $DB->quote_identifier('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'] . DIRECTORY_SEPARATOR . $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 . DIRECTORY_SEPARATOR . "$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->quote_identifier($DB->table_name('system'));
$DB->query("UPDATE " . $system_table
." SET " . $DB->quote_identifier('value') . " = ?"
." WHERE " . $DB->quote_identifier('name') . " = ?",
$version, $package . '-version');
if (!$DB->is_error() && !$DB->affected_rows()) {
$DB->query("INSERT INTO " . $system_table
." (" . $DB->quote_identifier('name') . ", " . $DB->quote_identifier('value') . ")"
." VALUES (?, ?)",
$package . '-version', $version);
}
return $DB->is_error();
}
?>
rcmail_utils::db_update($opts['dir'], $opts['package'], $opts['version'], array('errors' => true));

@ -5,12 +5,27 @@
"repositories": [
{
"type": "composer",
"url": "http://plugins.roundcube.net/"
"url": "https://plugins.roundcube.net"
}
],
"require": {
"php": ">=5.3.0",
"roundcube/plugin-installer": ">=0.1.3"
"php": ">=5.4.0",
"pear/pear-core-minimal": "~1.10.1",
"pear/auth_sasl": "~1.1.0",
"pear/net_idna2": "~0.2.0",
"pear/mail_mime": "~1.10.0",
"pear/net_smtp": "~1.8.1",
"pear/crypt_gpg": "~1.6.3",
"pear/net_sieve": "~1.4.3",
"roundcube/plugin-installer": "~0.1.6",
"masterminds/html5": "~2.5.0",
"endroid/qr-code": "~1.6.5"
},
"minimum-stability": "dev"
"require-dev": {
"phpunit/phpunit": "^4.8.36 || ^5.7.21 || ^6 || ^7"
},
"suggest": {
"kolab/net_ldap3": "~1.1.1 required for connecting to LDAP",
"mkopinsky/zxcvbn-php": "^4.4.2 required for Zxcvbn password strength driver"
}
}

@ -0,0 +1,7 @@
# deny webserver access to this directory
<ifModule mod_authz_core.c>
Require all denied
</ifModule>
<ifModule !mod_authz_core.c>
Deny from all
</ifModule>

@ -4,12 +4,12 @@
+-----------------------------------------------------------------------+
| Local configuration for the Roundcube Webmail installation. |
| |
| This is a sample configuration file only containing the minumum |
| This is a sample configuration file only containing the minimum |
| setup required for a functional installation. Copy more options |
| from defaults.inc.php to this file to override the defaults. |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2005-2013, The Roundcube Dev Team |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -21,15 +21,17 @@ $config = array();
// Database connection string (DSN) for read+write operations
// Format (compatible with PEAR MDB2): db_provider://user:password@host/database
// Currently supported db_providers: mysql, pgsql, sqlite, mssql or sqlsrv
// Currently supported db_providers: mysql, pgsql, sqlite, mssql, sqlsrv, oracle
// For examples see http://pear.php.net/manual/en/package.database.mdb2.intro-dsn.php
// NOTE: for SQLite use absolute path: 'sqlite:////full/path/to/sqlite.db?mode=0646'
// NOTE: for SQLite use absolute path (Linux): 'sqlite:////full/path/to/sqlite.db?mode=0646'
// or (Windows): 'sqlite:///C:/full/path/to/sqlite.db'
$config['db_dsnw'] = 'mysql://roundcube:pass@localhost/roundcubemail';
// The mail host chosen to perform the log-in.
// The IMAP host chosen to perform the log-in.
// Leave blank to show a textbox at login, give a list of hosts
// to display a pulldown menu or set one host as string.
// To use SSL/TLS connection, enter hostname with prefix ssl:// or tls://
// Enter hostname with prefix ssl:// to use Implicit TLS, or use
// prefix tls:// to use STARTTLS.
// Supported replacement variables:
// %n - hostname ($_SERVER['SERVER_NAME'])
// %t - hostname without the first part
@ -39,8 +41,8 @@ $config['db_dsnw'] = 'mysql://roundcube:pass@localhost/roundcubemail';
$config['default_host'] = 'localhost';
// SMTP server host (for sending mails).
// To use SSL/TLS connection, enter hostname with prefix ssl:// or tls://
// If left blank, the PHP mail() function is used
// Enter hostname with prefix ssl:// to use Implicit TLS, or use
// prefix tls:// to use STARTTLS.
// Supported replacement variables:
// %h - user's IMAP hostname
// %n - hostname ($_SERVER['SERVER_NAME'])
@ -48,19 +50,20 @@ $config['default_host'] = 'localhost';
// %d - domain (http hostname $_SERVER['HTTP_HOST'] without the first part)
// %z - IMAP domain (IMAP hostname without the first part)
// For example %n = mail.domain.tld, %t = domain.tld
$config['smtp_server'] = '';
// To specify differnt SMTP servers for different IMAP hosts provide an array
// of IMAP host (no prefix or port) and SMTP server e.g. array('imap.example.com' => 'smtp.example.net')
$config['smtp_server'] = 'localhost';
// SMTP port (default is 25; use 587 for STARTTLS or 465 for the
// deprecated SSL over SMTP (aka SMTPS))
$config['smtp_port'] = 25;
// SMTP port. Use 25 for cleartext, 465 for Implicit TLS, or 587 for STARTTLS (default)
$config['smtp_port'] = 587;
// SMTP username (if required) if you use %u as the username Roundcube
// will use the current username for login
$config['smtp_user'] = '';
$config['smtp_user'] = '%u';
// SMTP password (if required) if you use %p as the password Roundcube
// will use the current user's password for login
$config['smtp_pass'] = '';
$config['smtp_pass'] = '%p';
// provide an URL where a user can get support for this Roundcube installation
// PLEASE DO NOT LINK TO THE ROUNDCUBE.NET WEBSITE HERE!
@ -69,9 +72,9 @@ $config['support_url'] = '';
// Name your service. This is displayed on the login screen and in the window title
$config['product_name'] = 'Roundcube Webmail';
// 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 to encrypt the users imap password which is stored
// in the session record. For the default cipher method it must be
// exactly 24 characters long.
// YOUR KEY MUST BE DIFFERENT THAN THE SAMPLE VALUE FOR SECURITY REASONS
$config['des_key'] = 'rcmail-!24ByteDESkey*Str';
@ -82,4 +85,4 @@ $config['plugins'] = array(
);
// skin name: folder from skins/
$config['skin'] = 'larry';
$config['skin'] = 'elastic';

@ -1,11 +1,15 @@
<?php
// ---------------------------------------------------------------------
// WARNING: Do not edit this file! Copy configuration to config.inc.php.
// ---------------------------------------------------------------------
/*
+-----------------------------------------------------------------------+
| Main configuration file with default settings |
| Default settings for all configuration options |
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2005-2013, The Roundcube Dev Team |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@ -21,9 +25,14 @@ $config = array();
// Database connection string (DSN) for read+write operations
// Format (compatible with PEAR MDB2): db_provider://user:password@host/database
// Currently supported db_providers: mysql, pgsql, sqlite, mssql or sqlsrv
// Currently supported db_providers: mysql, pgsql, sqlite, mssql, sqlsrv, oracle
// For examples see http://pear.php.net/manual/en/package.database.mdb2.intro-dsn.php
// NOTE: for SQLite use absolute path: 'sqlite:////full/path/to/sqlite.db?mode=0646'
// Note: for SQLite use absolute path (Linux): 'sqlite:////full/path/to/sqlite.db?mode=0646'
// or (Windows): 'sqlite:///C:/full/path/to/sqlite.db'
// Note: Various drivers support various additional arguments for connection,
// for Mysql: key, cipher, cert, capath, ca, verify_server_cert,
// for Postgres: application_name, sslmode, sslcert, sslkey, sslrootcert, sslcrl, sslcompression, service.
// e.g. 'mysql://roundcube:@localhost/roundcubemail?verify_server_cert=false'
$config['db_dsnw'] = 'mysql://roundcube:@localhost/roundcubemail';
// Database DSN for read-only operations (if empty write database will be used)
@ -51,15 +60,18 @@ $config['db_table_dsn'] = array(
// 'cache_messages' => 'r',
);
// It is possible to specify database variable values e.g. some limits here.
// Use them if your server is not MySQL or for better performance.
// For example Roundcube uses max_allowed_packet value (in bytes)
// which limits query size for database cache operations.
$config['db_max_allowed_packet'] = null;
// ----------------------------------
// LOGGING/DEBUGGING
// ----------------------------------
// system error reporting, sum of: 1 = log; 4 = show
$config['debug_level'] = 1;
// log driver: 'syslog' or 'file'.
// log driver: 'syslog', 'stdout' or 'file'.
$config['log_driver'] = 'file';
// date format for log entries
@ -70,6 +82,9 @@ $config['log_date_format'] = 'd-M-Y H:i:s O';
// set to 0 to avoid session IDs being logged.
$config['log_session_id'] = 8;
// Default extension used for log file name
$config['log_file_ext'] = '.log';
// Syslog ident string to use, if using the 'syslog' log driver.
$config['syslog_id'] = 'roundcube';
@ -78,38 +93,49 @@ $config['syslog_id'] = 'roundcube';
$config['syslog_facility'] = LOG_USER;
// Activate this option if logs should be written to per-user directories.
// Data will only be logged if a directry <log_dir>/<username>/ exists and is writable.
// Data will only be logged if a directory <log_dir>/<username>/ exists and is writable.
$config['per_user_logging'] = false;
// Log sent messages to <log_dir>/sendmail or to syslog
// Log sent messages to <log_dir>/sendmail.log or to syslog
$config['smtp_log'] = true;
// Log successful/failed logins to <log_dir>/userlogins or to syslog
// Log successful/failed logins to <log_dir>/userlogins.log or to syslog
$config['log_logins'] = false;
// Log session authentication errors to <log_dir>/session or to syslog
$config['log_session'] = false;
// Log session debug information/authentication errors to <log_dir>/session.log or to syslog
$config['session_debug'] = false;
// Log SQL queries to <log_dir>/sql or to syslog
// Log SQL queries to <log_dir>/sql.log or to syslog
$config['sql_debug'] = false;
// Log IMAP conversation to <log_dir>/imap or to syslog
// Log IMAP conversation to <log_dir>/imap.log or to syslog
$config['imap_debug'] = false;
// Log LDAP conversation to <log_dir>/ldap or to syslog
// Log LDAP conversation to <log_dir>/ldap.log or to syslog
$config['ldap_debug'] = false;
// Log SMTP conversation to <log_dir>/smtp or to syslog
// Log SMTP conversation to <log_dir>/smtp.log or to syslog
$config['smtp_debug'] = false;
// Log Memcache conversation to <log_dir>/memcache.log or to syslog
$config['memcache_debug'] = false;
// Log APC conversation to <log_dir>/apc.log or to syslog
$config['apc_debug'] = false;
// Log Redis conversation to <log_dir>/redis.log or to syslog
$config['redis_debug'] = false;
// ----------------------------------
// IMAP
// ----------------------------------
// The mail host chosen to perform the log-in.
// The IMAP host chosen to perform the log-in.
// Leave blank to show a textbox at login, give a list of hosts
// to display a pulldown menu or set one host as string.
// To use SSL/TLS connection, enter hostname with prefix ssl:// or tls://
// Enter hostname with prefix ssl:// to use Implicit TLS, or use
// prefix tls:// to use STARTTLS.
// Supported replacement variables:
// %n - hostname ($_SERVER['SERVER_NAME'])
// %t - hostname without the first part
@ -123,8 +149,9 @@ $config['default_host'] = 'localhost';
// TCP port used for IMAP connections
$config['default_port'] = 143;
// IMAP AUTH type (DIGEST-MD5, CRAM-MD5, LOGIN, PLAIN or null to use
// best server supported one)
// IMAP authentication method (DIGEST-MD5, CRAM-MD5, LOGIN, PLAIN or null).
// Use 'IMAP' to authenticate with IMAP LOGIN command.
// By default the most secure method (from supported) will be selected.
$config['imap_auth_type'] = null;
// IMAP socket context options
@ -137,6 +164,7 @@ $config['imap_auth_type'] = null;
// 'cafile' => '/etc/openssl/certs/ca.crt',
// ),
// );
// Note: These can be also specified as an array of options indexed by hostname
$config['imap_conn_options'] = null;
// IMAP connection timeout, in seconds. Default: 0 (use default_socket_timeout)
@ -152,12 +180,18 @@ $config['imap_auth_pw'] = null;
// 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', 'gimap', '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.
// Folders need to be ended with directory separator, e.g. "INBOX."
// (special directory "~" is an exception to this rule)
// These can be used also to overwrite server's namespaces
// Note: Folders need to be ended with directory separator, e.g. "INBOX."
// (special directory "~" is an exception to this rule)
// Note: These can be used also to overwrite server's namespaces
// Note: Set these to FALSE to disable access to specified namespace
$config['imap_ns_personal'] = null;
$config['imap_ns_other'] = null;
$config['imap_ns_shared'] = null;
@ -169,7 +203,7 @@ $config['imap_force_caps'] = false;
// By default list of subscribed folders is determined using LIST-EXTENDED
// extension if available. Some servers (dovecot 1.x) returns wrong results
// for shared namespaces in this case. http://trac.roundcube.net/ticket/1486225
// for shared namespaces in this case. https://github.com/roundcube/roundcubemail/issues/2474
// Enable this option to force LSUB command usage instead.
// Deprecated: Use imap_disabled_caps = array('LIST-EXTENDED')
$config['imap_force_lsub'] = false;
@ -178,6 +212,16 @@ $config['imap_force_lsub'] = false;
// 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;
// Some servers do not support folders with both folders and messages inside
// If your server supports that use true, if it does not, use false.
// By default it will be determined automatically (once per user session).
$config['imap_dual_use_folders'] = null;
// 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.
@ -185,11 +229,11 @@ $config['imap_force_ns'] = false;
// Note: Because the list is cached, re-login is required after change.
$config['imap_disabled_caps'] = array();
// Log IMAP session identifers after each IMAP login.
// Log IMAP session identifiers after each IMAP login.
// This is used to relate IMAP session with Roundcube user sessions
$config['imap_log_session'] = false;
// Type of IMAP indexes cache. Supported values: 'db', 'apc' and 'memcache'.
// Type of IMAP indexes cache. Supported values: 'db', 'apc' and 'memcache' or 'memcached'.
$config['imap_cache'] = null;
// Enables messages cache. Only 'db' cache is supported.
@ -214,8 +258,8 @@ $config['messages_cache_threshold'] = 50;
// ----------------------------------
// SMTP server host (for sending mails).
// To use SSL/TLS connection, enter hostname with prefix ssl:// or tls://
// If left blank, the PHP mail() function is used
// Enter hostname with prefix ssl:// to use Implicit TLS, or use
// prefix tls:// to use STARTTLS.
// Supported replacement variables:
// %h - user's IMAP hostname
// %n - hostname ($_SERVER['SERVER_NAME'])
@ -223,23 +267,24 @@ $config['messages_cache_threshold'] = 50;
// %d - domain (http hostname $_SERVER['HTTP_HOST'] without the first part)
// %z - IMAP domain (IMAP hostname without the first part)
// For example %n = mail.domain.tld, %t = domain.tld
$config['smtp_server'] = '';
// To specify differnt SMTP servers for different IMAP hosts provide an array
// of IMAP host (no prefix or port) and SMTP server e.g. array('imap.example.com' => 'smtp.example.net')
$config['smtp_server'] = 'localhost';
// SMTP port (default is 25; use 587 for STARTTLS or 465 for the
// deprecated SSL over SMTP (aka SMTPS))
$config['smtp_port'] = 25;
// SMTP port. Use 25 for cleartext, 465 for Implicit TLS, or 587 for STARTTLS (default)
$config['smtp_port'] = 587;
// SMTP username (if required) if you use %u as the username Roundcube
// will use the current username for login
$config['smtp_user'] = '';
$config['smtp_user'] = '%u';
// SMTP password (if required) if you use %p as the password Roundcube
// will use the current user's password for login
$config['smtp_pass'] = '';
$config['smtp_pass'] = '%p';
// SMTP AUTH type (DIGEST-MD5, CRAM-MD5, LOGIN, PLAIN or empty to use
// best server supported one)
$config['smtp_auth_type'] = '';
$config['smtp_auth_type'] = null;
// Optional SMTP authentication identifier to be used as authorization proxy
$config['smtp_auth_cid'] = null;
@ -269,6 +314,7 @@ $config['smtp_timeout'] = 0;
// 'cafile' => '/etc/openssl/certs/ca.crt',
// ),
// );
// Note: These can be also specified as an array of options indexed by hostname
$config['smtp_conn_options'] = null;
@ -276,12 +322,55 @@ $config['smtp_conn_options'] = null;
// LDAP
// ----------------------------------
// Type of LDAP cache. Supported values: 'db', 'apc' and 'memcache'.
// Type of LDAP cache. Supported values: 'db', 'apc' and 'memcache' or 'memcached'.
$config['ldap_cache'] = 'db';
// 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
// Example: array('localhost:11211', '192.168.1.12:11211', 'unix:///var/tmp/memcached.sock');
$config['memcache_hosts'] = null;
// 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 (optional), database (optional) and password (optional).
// Unset fields will be set to the default values host=127.0.0.1, port=6379.
// Examples:
// array('localhost:6379');
// array('192.168.1.1:6379:1:secret');
// array('unix:///var/run/redis/redis-server.sock:1:secret');
$config['redis_hosts'] = null;
// 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';
// Maximum size of an object in Redis cache (in bytes). Default: 2MB
$config['redis_max_allowed_packet'] = '2M';
// ----------------------------------
// SYSTEM
// ----------------------------------
@ -290,7 +379,7 @@ $config['ldap_cache_ttl'] = '10m';
// ONLY ENABLE IT IF YOU'RE REALLY SURE WHAT YOU'RE DOING!
$config['enable_installer'] = false;
// don't allow these settings to be overriden by the user
// don't allow these settings to be overridden by the user
$config['dont_override'] = array();
// List of disabled UI elements/actions
@ -304,10 +393,37 @@ $config['advanced_prefs'] = array();
// PLEASE DO NOT LINK TO THE ROUNDCUBE.NET WEBSITE HERE!
$config['support_url'] = '';
// replace Roundcube logo with this image
// specify an URL relative to the document root of this Roundcube installation
// an array can be used to specify different logos for specific template files, '*' for default logo
// for example array("*" => "/images/roundcube_logo.png", "messageprint" => "/images/roundcube_logo_print.png")
// Logo image replacement. Specifies location of the image as:
// - URL relative to the document root of this Roundcube installation
// - full URL with http:// or https:// prefix
// - URL relative to the current skin folder (when starts with a '/')
//
// An array can be used to specify different logos for specific template files
// The array key specifies the place(s) the logo should be applied to and
// is made up of (up to) 3 parts:
// - skin name prefix (always with colon, can be replaced with *)
// - template name (or * for all templates)
// - logo type - it is used for logos used on multiple templates
// the available types include '[favicon]' for favicon, '[print]' for logo on all print
// templates (e.g. messageprint, contactprint) and '[small]' for small screen logo in supported skins
//
// Example config for skin_logo
/*
array(
// show the image /images/logo_login_small.png for the Login screen in the Elastic skin on small screens
"elastic:login[small]" => "/images/logo_login_small.png",
// show the image /images/logo_login.png for the Login screen in the Elastic skin
"elastic:login" => "/images/logo_login.png",
// show the image /images/logo_small.png in the Elastic skin
"elastic:*[small]" => "/images/logo_small.png",
// show the image /images/larry.png in the Larry skin
"larry:*" => "/images/larry.png",
// show the image /images/logo_login.png on the login template in all skins
"login" => "/images/logo_login.png",
// show the image /images/logo_print.png for all print type logos in all skins
"[print]" => "/images/logo_print.png",
);
*/
$config['skin_logo'] = null;
// automatically create a new Roundcube user when log-in the first time.
@ -318,20 +434,23 @@ $config['auto_create_user'] = true;
// Enables possibility to log in using email address from user identities
$config['user_aliases'] = false;
// use this folder to store log files (must be writeable for apache user)
// use this folder to store log files
// must be writeable for the user who runs PHP process (Apache user if mod_php is being used)
// This is used by the 'file' log driver.
$config['log_dir'] = RCUBE_INSTALL_PATH . 'logs/';
// use this folder to store temp files (must be writeable for apache user)
// use this folder to store temp files
// must be writeable for the user who runs PHP process (Apache user if mod_php is being used)
$config['temp_dir'] = RCUBE_INSTALL_PATH . 'temp/';
// expire files in temp_dir after 48 hours
// possible units: s, m, h, d, w
$config['temp_dir_ttl'] = '48h';
// enforce connections over https
// with this option enabled, all non-secure connections will be redirected.
// set the port for the ssl connection as value of this option if it differs from the default 443
// Enforce connections over https
// With this option enabled, all non-secure connections will be redirected.
// It can be also a port number, hostname or hostname:port if they are
// different than default HTTP_HOST:443
$config['force_https'] = false;
// tell PHP that it should work as under secure connection
@ -351,11 +470,24 @@ $config['login_autocomplete'] = 0;
// 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;
// display software version on login screen
$config['display_version'] = false;
// display product name and software version on login screen
// 0 - hide product name and version number, 1 - show product name only, 2 - show product name and version number
$config['display_product_info'] = 1;
// Session lifetime in minutes
$config['session_lifetime'] = 10;
@ -372,35 +504,54 @@ $config['session_auth_name'] = null;
// 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'
// 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
// Session samesite. Defaults to PHP session.cookie_samesite setting.
// Requires PHP >= 7.3.0, see https://wiki.php.net/rfc/same-site-cookie for more info
// Possible values: null (default), 'Lax', or 'Strict'
$config['session_samesite'] = null;
// Backend to use for session storage. Can either be 'db' (default), 'redis', 'memcache', or 'php'
//
// If set to 'memcache' or 'memcached', a list of servers need to be specified in 'memcache_hosts'
// Make sure the Memcache extension (https://pecl.php.net/package/memcache) version >= 2.0.0
// or the Memcached extension (https://pecl.php.net/package/memcached) version >= 2.0.0 is installed.
//
// If set to 'redis', a server needs to be specified in 'redis_hosts'
// Make sure the Redis extension (https://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' );
// check client IP in session authorization
$config['ip_check'] = false;
// List of trusted proxies
// X_FORWARDED_* and X_REAL_IP headers are only accepted from these IPs
$config['proxy_whitelist'] = array();
// check referer of incoming requests
$config['referer_check'] = false;
// List of trusted host names
// Attackers can modify Host header of the HTTP request causing $_SERVER['SERVER_NAME']
// or $_SERVER['HTTP_HOST'] variables pointing to a different host, that could be used
// to collect user names and passwords. Some server configurations prevent that, but not all.
// An empty list accepts any host name. The list can contain host names
// or PCRE patterns (without // delimiters, that will be added automatically).
$config['trusted_host_patterns'] = array();
// check client IP in session authorization
$config['ip_check'] = false;
// X-Frame-Options HTTP header value sent to prevent from Clickjacking.
// Possible values: sameorigin|deny. Set to false in order to disable sending them
// Possible values: sameorigin|deny|allow-from <uri>.
// Set to false in order to disable sending the header.
$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).
// For the default cipher_method a required key length is 24 characters.
$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
@ -427,29 +578,40 @@ $config['username_domain_forced'] = false;
// 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
$config['password_charset'] = 'ISO-8859-1';
// Password character set, to change the password for user
// authentication or for password change operations
$config['password_charset'] = 'UTF-8';
// How many seconds must pass between emails sent by a user
$config['sendmail_delay'] = 0;
// Maximum number of recipients per message. Default: 0 (no limit)
$config['max_recipients'] = 0;
// Message size limit. Note that SMTP server(s) may use a different value.
// This limit is verified when user attaches files to a composed message.
// Size in bytes (possible unit suffix: K, M, G)
$config['max_message_size'] = '100M';
// Maximum allowednumber of members of an address group. Default: 0 (no limit)
// Maximum number of recipients per message (including To, Cc, Bcc).
// Default: 0 (no limit)
$config['max_recipients'] = 0;
// Maximum number of recipients per message exluding Bcc header.
// This is a soft limit, which means we only display a warning to the user.
// Default: 5
$config['max_disclosed_recipients'] = 5;
// 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;
$config['max_group_members'] = 0;
// Name your service. This is displayed on the login screen and in the window title
$config['product_name'] = 'Roundcube Webmail';
// Add this user-agent to message headers when sending
$config['useragent'] = 'Roundcube Webmail/'.RCMAIL_VERSION;
$config['useragent'] = 'Roundcube Webmail/'.RCUBE_VERSION;
// try to load host-specific configuration
// see http://trac.roundcube.net/wiki/Howto_Config for more details
// see https://github.com/roundcube/roundcubemail/wiki/Configuration:-Multi-Domain-Setup
// for more details
$config['include_host_config'] = false;
// path to a text file which will be added to each sent message
@ -469,10 +631,6 @@ $config['http_received_header'] = false;
// when tracking down issues.
$config['http_received_header_encrypt'] = false;
// This string is used as a delimiter for message headers when sending
// a message via mail() function. Leave empty for auto-detection
$config['mail_header_delimiter'] = NULL;
// number of chars allowed for line when wrapping text.
// text wrapping is done when composing/sending messages
$config['line_length'] = 72;
@ -497,9 +655,12 @@ $config['identities_level'] = 0;
$config['identity_image_size'] = 64;
// Mimetypes supported by the browser.
// attachments of these types will open in a preview window
// either a comma-separated list or an array: 'text/plain,text/html,text/xml,image/jpeg,image/gif,image/png,application/pdf'
$config['client_mimetypes'] = null; # null == default
// Attachments of these types will open in a preview window.
// Either a comma-separated list or an array. Default list includes:
// text/plain,text/html,
// image/jpeg,image/gif,image/png,image/bmp,image/tiff,image/webp,
// application/x-javascript,application/pdf,application/x-shockwave-flash
$config['client_mimetypes'] = null;
// Path to a local mime magic database file for PHPs finfo extension.
// Set to null if the default path should be used.
@ -532,6 +693,28 @@ $config['email_dns_check'] = false;
// Note: useful when SMTP server stores sent mail in user mailbox
$config['no_save_sent_messages'] = false;
// Improve system security by using special URL with security token.
// This can be set to a number defining token length. Default: 16.
// Warning: This requires http server configuration. Sample:
// RewriteRule ^/roundcubemail/[a-zA-Z0-9]{16}/(.*) /roundcubemail/$1 [PT]
// Alias /roundcubemail /var/www/roundcubemail/
// Note: Use assets_path to not prevent the browser from caching assets
$config['use_secure_urls'] = false;
// Allows to define separate server/path for image/js/css files
// Warning: If the domain is different cross-domain access to some
// resources need to be allowed
// Sample:
// <FilesMatch ".(eot|ttf|woff)">
// Header set Access-Control-Allow-Origin "*"
// </FilesMatch>
$config['assets_path'] = '';
// While assets_path is for the browser, assets_dir informs
// PHP code about the location of asset files in filesystem
$config['assets_dir'] = '';
// ----------------------------------
// PLUGINS
// ----------------------------------
@ -551,7 +734,7 @@ $config['message_sort_col'] = '';
$config['message_sort_order'] = 'DESC';
// These cols are shown in the message list. Available cols are:
// subject, from, to, fromto, cc, replyto, date, size, status, flag, attachment, 'priority'
// subject, from, to, fromto, cc, replyto, date, size, status, flag, attachment, priority
$config['list_cols'] = array('subject', 'status', 'fromto', 'date', 'size', 'flag', 'attachment');
// the default locale setting (leave empty for auto-detection)
@ -596,7 +779,7 @@ $config['sent_mbox'] = 'Sent';
// 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
@ -609,8 +792,6 @@ $config['show_real_foldernames'] = false;
$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.
@ -618,12 +799,13 @@ $config['enable_spellcheck'] = true;
$config['spellcheck_dictionary'] = false;
// Set the spell checking engine. Possible values:
// - 'googie' - the default
// - 'googie' - the default (also used for connecting to Nox Spell Server, see 'spellcheck_uri' setting)
// - 'pspell' - requires the PHP Pspell module and aspell installed
// - 'enchant' - requires the PHP Enchant module
// - 'atd' - install your own After the Deadline server or check with the people at http://www.afterthedeadline.com before using their API
// Since Google shut down their public spell checking service, you need to
// connect to a Nox Spell Server when using 'googie' here. Therefore specify the 'spellcheck_uri'
// Since Google shut down their public spell checking service, the default settings
// connect to http://spell.roundcube.net which is a hosted service provided by Roundcube.
// You can connect to any other googie-compliant service by setting 'spellcheck_uri' accordingly.
$config['spellcheck_engine'] = 'googie';
// For locally installed Nox Spell Server or After the Deadline services,
@ -647,8 +829,9 @@ $config['spellcheck_ignore_nums'] = false;
// Makes that words with symbols will be ignored (e.g. g@@gle)
$config['spellcheck_ignore_syms'] = false;
// Use this char/string to separate recipients when composing a new message
$config['recipients_separator'] = ',';
// Number of lines at the end of a message considered to contain the signature.
// Increase this value if signatures are not properly detected and colored
$config['sig_max_lines'] = 15;
// don't let users set pagesize to more than this value if set
$config['max_pagesize'] = 200;
@ -656,11 +839,6 @@ $config['max_pagesize'] = 200;
// Minimal value of user's 'refresh_interval' setting (in seconds)
$config['min_refresh_interval'] = 60;
// Enables files upload indicator. Requires APC installed and enabled apc.rfc1867 option.
// By default refresh time is set to 1 second. You can set this value to true
// or any integer value indicating number of seconds.
$config['upload_progress'] = false;
// Specifies for how many seconds the Undo button will be available
// after object delete action. Currently used with supporting address book sources.
// Setting it to 0, disables the feature.
@ -672,17 +850,19 @@ $config['compose_responses_static'] = array(
// array('name' => 'Canned Response 2', 'text' => 'Static Response Two'),
);
// List of HKP key servers for PGP public key lookups in Enigma/Mailvelope
// Note: Lookup is client-side, so the server must support Cross-Origin Resource Sharing
$config['keyservers'] = array('keys.openpgp.org');
// ----------------------------------
// ADDRESSBOOK SETTINGS
// ----------------------------------
// This indicates which type of address book to use. Possible choises:
// 'sql' (default), 'ldap' and ''.
// If set to 'ldap' then it will look at using the first writable LDAP
// address book as the primary address book and it will not display the
// SQL address book in the 'Address Book' view.
// If set to '' then no address book will be displayed or only the
// addressbook which is created by a plugin (like CardDAV).
// 'sql' - built-in sql addressbook enabled (default),
// '' - built-in sql addressbook disabled.
// Still LDAP or plugin-added addressbooks will be available.
// BC Note: The value can actually be anything except 'sql', it does not matter.
$config['address_book_type'] = 'sql';
// In order to enable public ldap search, configure an array like the Verisign
@ -715,6 +895,7 @@ $config['ldap_public']['Verisign'] = array(
// %d - domain (http hostname $_SERVER['HTTP_HOST'] without the first part)
// %z - IMAP domain (IMAP hostname without the first part)
// For example %n = mail.domain.tld, %t = domain.tld
// Note: Host can also be a full URI e.g. ldaps://hostname.local:636 (for SSL)
'hosts' => array('directory.verisign.com'),
'port' => 389,
'use_tls' => false,
@ -738,6 +919,10 @@ $config['ldap_public']['Verisign'] = array(
// 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
@ -768,8 +953,11 @@ $config['ldap_public']['Verisign'] = array(
'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',
@ -819,9 +1007,9 @@ $config['ldap_public']['Verisign'] = array(
// Used where addressbook contains aliases to objects elsewhere in the LDAP tree.
// definition for contact groups (uncomment if no groups are supported)
// for the groups base_dn, the user replacements %fu, %u, $d and %dc work as for base_dn (see above)
// for the groups base_dn, the user replacements %fu, %u, %d and %dc work as for base_dn (see above)
// if the groups base_dn is empty, the contact base_dn is used for the groups as well
// -> in this case, assure that groups and contacts are separated due to the concernig filters!
// -> in this case, assure that groups and contacts are separated due to the concernig filters!
'groups' => array(
'base_dn' => '',
'scope' => 'sub', // Search mode: sub|base|list
@ -888,6 +1076,10 @@ $config['address_template'] = '{street}<br/>{locality} {zipcode}<br/>{country} {
// 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
@ -900,8 +1092,12 @@ $config['contact_search_name'] = '{name} <{email}>';
// Use this charset as fallback for message decoding
$config['default_charset'] = 'ISO-8859-1';
// skin name: folder from skins/
$config['skin'] = 'larry';
// Skin name: folder from skins/
$config['skin'] = 'elastic';
// Limit skins available for the user.
// Note: When not empty, it should include the default skin set in 'skin' option.
$config['skins_allowed'] = array();
// Enables using standard browser windows (that can be handled as tabs)
// instead of popup windows
@ -916,25 +1112,25 @@ $config['addressbook_pagesize'] = 50;
// sort contacts by this col (preferably either one of name, firstname, surname)
$config['addressbook_sort_col'] = 'surname';
// the way how contact names are displayed in the list
// 0: display name
// 1: (prefix) firstname middlename surname (suffix)
// 2: (prefix) surname firstname middlename (suffix)
// 3: (prefix) surname, firstname middlename (suffix)
// The way how contact names are displayed in the list.
// 0: prefix firstname middlename surname suffix (only if display name is not set)
// 1: firstname middlename surname
// 2: surname firstname middlename
// 3: surname, firstname middlename
$config['addressbook_name_listing'] = 0;
// use this timezone to display date/time
// valid timezone identifers are listed here: php.net/manual/en/timezones.php
// valid timezone identifiers are listed here: php.net/manual/en/timezones.php
// 'auto' will use the browser's timezone settings
$config['timezone'] = 'auto';
// prefer displaying HTML messages
$config['prefer_html'] = true;
// display remote inline images
// display remote resources (inline images, styles)
// 0 - Never, always ask
// 1 - Ask if sender is not in address book
// 2 - Always show inline images
// 2 - Always allow
$config['show_images'] = 0;
// open messages in new window
@ -944,21 +1140,32 @@ $config['message_extwin'] = false;
$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
// for recovery in case of browser crashes and session timeout.
$config['compose_save_localstorage'] = true;
// show pretty dates as standard
$config['prettydate'] = true;
// save compose message every 300 seconds (5min)
$config['draft_autosave'] = 300;
// default setting if preview pane is enabled
$config['preview_pane'] = false;
// Interface layout. Default: 'widescreen'.
// 'widescreen' - three columns
// 'desktop' - two columns, preview on bottom
// 'list' - two columns, no preview
$config['layout'] = 'widescreen';
// Mark as read when viewed in preview pane (delay in seconds)
// Set to -1 if messages in preview pane should not be marked as read
$config['preview_pane_mark_read'] = 0;
// Mark as read when viewing a message (delay in seconds)
// Set to -1 if messages should not be marked as read
$config['mail_read_time'] = 0;
// Clear Trash on logout
$config['logout_purge'] = false;
@ -995,7 +1202,7 @@ $config['refresh_interval'] = 60;
// If true all folders will be checked for recent messages
$config['check_all_folders'] = false;
// If true, after message delete/move, the next message will be displayed
// If true, after message/contact delete/move, the next message/contact will be displayed
$config['display_next'] = true;
// Default messages listing mode. One of 'threads' or 'list'.
@ -1010,6 +1217,7 @@ $config['autoexpand_threads'] = 0;
// -1 - don't cite the original message
// 0 - place cursor below the original message
// 1 - place cursor above original message (top posting)
// 2 - place cursor above original message (top posting), but do not indent the quote
$config['reply_mode'] = 0;
// When replying strip original signature from message
@ -1022,6 +1230,14 @@ $config['strip_existing_sig'] = true;
// 3 - Forwards and Replies only
$config['show_sig'] = 1;
// By default the signature is placed depending on cursor position (reply_mode).
// Sometimes it might be convenient to start the reply on top but keep
// 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;
@ -1034,12 +1250,6 @@ $config['search_mods'] = null; // Example: array('*' => array('subject'=>1, 'fr
// Defaults of the addressbook search field configuration.
$config['addressbook_search_mods'] = null; // Example: array('name'=>1, 'firstname'=>1, 'surname'=>1, 'email'=>1, '*'=>1);
// 'Delete always'
// This setting reflects if mail should be always deleted
// when moving to Trash fails. This is necessary in some setups
// when user is over quota and Trash is included in the quota.
$config['delete_always'] = false;
// Directly delete messages in Junk instead of moving to Trash
$config['delete_junk'] = false;

@ -1,27 +0,0 @@
<?php
/*
+-----------------------------------------------------------------------+
| Roundcube Webmail Selenium Tests Entry Point |
| |
| Copyright (C) 2005-2014, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
| PURPOSE: |
| This is the public entry point for all HTTP requests to the |
| Roundcube webmail application loading the 'tests' environment. |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <thomas@roundcube.net> |
+-----------------------------------------------------------------------+
*/
define('INSTALL_PATH', realpath(__DIR__) . '/');
$GLOBALS['env'] = 'test';
// include index.php from application root directory
include INSTALL_PATH . 'index.php';

@ -1,10 +1,10 @@
<?php
/*
/**
+-------------------------------------------------------------------------+
| Roundcube Webmail IMAP Client |
| Version 1.1-git |
| Version 1.5-git |
| |
| Copyright (C) 2005-2014, The Roundcube Dev Team |
| Copyright (C) The Roundcube Dev Team |
| |
| This program is free software: you can redistribute it and/or modify |
| it under the terms of the GNU General Public License (with exceptions |
@ -40,11 +40,11 @@
require_once 'program/include/iniset.php';
// init application, start session, init output class, etc.
$RCMAIL = rcmail::get_instance($GLOBALS['env']);
$RCMAIL = rcmail::get_instance(0, $GLOBALS['env']);
// Make the whole PHP output non-cacheable (#1487797)
$RCMAIL->output->nocacheing_headers();
$RCMAIL->output->common_headers();
$RCMAIL->output->common_headers(!empty($_SESSION['user_id']));
// turn on output buffering
ob_start();
@ -62,21 +62,33 @@ if ($err_str = $RCMAIL->db->is_error()) {
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
if (empty($_SESSION['user_id']) && ($force_https = $RCMAIL->config->get('force_https', false))) {
$https_port = is_bool($force_https) ? 443 : $force_https;
// force_https can be true, <hostname>, <hostname>:<port>, <port>
if (!is_bool($force_https)) {
list($host, $port) = explode(':', $force_https);
if (is_numeric($host) && empty($port)) {
$port = $host;
$host = '';
}
}
if (!rcube_utils::https_check($https_port)) {
$host = preg_replace('/:[0-9]+$/', '', $_SERVER['HTTP_HOST']);
$host .= ($https_port != 443 ? ':' . $https_port : '');
if (!rcube_utils::https_check($port ?: 443)) {
if (empty($host)) {
$host = preg_replace('/:[0-9]+$/', '', $_SERVER['HTTP_HOST']);
}
if ($port && $port != 443) {
$host .= ':' . $port;
}
header('Location: https://' . $host . $_SERVER['REQUEST_URI']);
exit;
@ -90,18 +102,20 @@ $RCMAIL->action = $startup['action'];
// try to log in
if ($RCMAIL->task == 'login' && $RCMAIL->action == 'login') {
$request_valid = $_SESSION['temp'] && $RCMAIL->check_request(rcube_utils::INPUT_POST, 'login');
$request_valid = $_SESSION['temp'] && $RCMAIL->check_request();
$pass_charset = $RCMAIL->config->get('password_charset', 'UTF-8');
// purge the session in case of new login when a session already exists
$RCMAIL->kill_session();
// purge the session in case of new login when a session already exists
if ($request_valid) {
$RCMAIL->kill_session();
}
$auth = $RCMAIL->plugins->exec_hook('authenticate', array(
'host' => $RCMAIL->autoselect_host(),
'user' => trim(rcube_utils::get_input_value('_user', rcube_utils::INPUT_POST)),
'pass' => rcube_utils::get_input_value('_pass', rcube_utils::INPUT_POST, true,
$RCMAIL->config->get('password_charset', 'ISO-8859-1')),
'cookiecheck' => true,
'valid' => $request_valid,
'host' => $RCMAIL->autoselect_host(),
'user' => trim(rcube_utils::get_input_value('_user', rcube_utils::INPUT_POST)),
'pass' => rcube_utils::get_input_value('_pass', rcube_utils::INPUT_POST, true, $pass_charset),
'valid' => $request_valid,
'cookiecheck' => true,
));
// Login
@ -131,7 +145,7 @@ if ($RCMAIL->task == 'login' && $RCMAIL->action == 'login') {
// prevent redirect to compose with specified ID (#1488226)
if ($query['_action'] == 'compose' && !empty($query['_id'])) {
$query = array();
$query = array('_action' => 'compose');
}
}
@ -140,24 +154,25 @@ if ($RCMAIL->task == 'login' && $RCMAIL->action == 'login') {
unset($redir['abort'], $redir['_err']);
// send redirect
$OUTPUT->redirect($redir);
$OUTPUT->redirect($redir, 0, true);
}
else {
if (!$auth['valid']) {
$error_code = RCMAIL::ERROR_INVALID_REQUEST;
$error_code = rcmail::ERROR_INVALID_REQUEST;
}
else {
$error_code = $auth['error'] ? $auth['error'] : $RCMAIL->login_error();
$error_code = is_numeric($auth['error']) ? $auth['error'] : $RCMAIL->login_error();
}
$error_labels = array(
RCMAIL::ERROR_STORAGE => 'storageerror',
RCMAIL::ERROR_COOKIES_DISABLED => 'cookiesdisabled',
RCMAIL::ERROR_INVALID_REQUEST => 'invalidrequest',
RCMAIL::ERROR_INVALID_HOST => 'invalidhost',
rcmail::ERROR_STORAGE => 'storageerror',
rcmail::ERROR_COOKIES_DISABLED => 'cookiesdisabled',
rcmail::ERROR_INVALID_REQUEST => 'invalidrequest',
rcmail::ERROR_INVALID_HOST => 'invalidhost',
rcmail::ERROR_RATE_LIMIT => 'accountlocked',
);
$error_message = $error_labels[$error_code] ? $error_labels[$error_code] : 'loginfailed';
$error_message = !empty($auth['error']) && !is_numeric($auth['error']) ? $auth['error'] : ($error_labels[$error_code] ?: 'loginfailed');
$OUTPUT->show_message($error_message, 'warning');
@ -167,14 +182,16 @@ if ($RCMAIL->task == 'login' && $RCMAIL->action == 'login') {
$RCMAIL->plugins->exec_hook('login_failed', array(
'code' => $error_code, 'host' => $auth['host'], 'user' => $auth['user']));
$RCMAIL->kill_session();
if (!isset($_SESSION['user_id'])) {
$RCMAIL->kill_session();
}
}
}
// end session (after optional referer check)
else if ($RCMAIL->task == 'logout' && isset($_SESSION['user_id'])
&& (!$RCMAIL->config->get('referer_check') || rcube_utils::check_referer())
) {
// end session
else if ($RCMAIL->task == 'logout' && isset($_SESSION['user_id'])) {
$RCMAIL->request_security_check(rcube_utils::INPUT_GET | rcube_utils::INPUT_POST);
$userdata = array(
'user' => $_SESSION['username'],
'host' => $_SESSION['storage_host'],
@ -192,24 +209,14 @@ else if ($RCMAIL->task == 'logout' && isset($_SESSION['user_id'])
else if ($RCMAIL->task != 'login' && $_SESSION['user_id']) {
if (!$RCMAIL->session->check_auth()) {
$RCMAIL->kill_session();
$session_error = true;
$session_error = 'sessionerror';
}
}
// not logged in -> show login page
if (empty($RCMAIL->user->ID)) {
// log session failures
$task = rcube_utils::get_input_value('_task', rcube_utils::INPUT_GPC);
if ($task && !in_array($task, array('login','logout'))
&& !$session_error && ($sess_id = $_COOKIE[ini_get('session.name')])
) {
$RCMAIL->session->log("Aborted session $sess_id; no valid session data found");
$session_error = true;
}
if ($session_error || $_REQUEST['_err'] == 'session') {
$OUTPUT->show_message('sessionerror', 'error', null, true, -1);
if ($session_error || $_REQUEST['_err'] === 'session' || ($session_error = $RCMAIL->session_error())) {
$OUTPUT->show_message($session_error ?: 'sessionerror', 'error', null, true, -1);
}
if ($OUTPUT->ajax_call || $OUTPUT->get_env('framed')) {
@ -219,53 +226,39 @@ if (empty($RCMAIL->user->ID)) {
// check if installer is still active
if ($RCMAIL->config->get('enable_installer') && is_readable('./installer/index.php')) {
$OUTPUT->add_footer(html::div(array('style' => "background:#ef9398; border:2px solid #dc5757; padding:0.5em; margin:2em auto; width:50em"),
$OUTPUT->add_footer(html::div(array('id' => 'login-addon', 'style' => "background:#ef9398; border:2px solid #dc5757; padding:0.5em; margin:2em auto; width:50em"),
html::tag('h2', array('style' => "margin-top:0.2em"), "Installer script is still accessible") .
html::p(null, "The install script of your Roundcube installation is still stored in its default location!") .
html::p(null, "Please <b>remove</b> the whole <tt>installer</tt> folder from the Roundcube directory because .
html::p(null, "Please <b>remove</b> the whole <tt>installer</tt> folder from the Roundcube directory because
these files may expose sensitive configuration data like server passwords and encryption keys
to the public. Make sure you cannot access the <a href=\"./installer/\">installer script</a> from your browser.")
));
}
$plugin = $RCMAIL->plugins->exec_hook('unauthenticated', array('task' => 'login', 'error' => $session_error));
$plugin = $RCMAIL->plugins->exec_hook('unauthenticated', array(
'task' => 'login',
'error' => $session_error,
// Return 401 only on failed logins (#7010)
'http_code' => empty($session_error) && !empty($error_message) ? 401 : 200
));
$RCMAIL->set_task($plugin['task']);
if ($plugin['http_code'] == 401) {
header('HTTP/1.0 401 Unauthorized');
}
$OUTPUT->send($plugin['task']);
}
// CSRF prevention
else {
// don't check for valid request tokens in these actions
$request_check_whitelist = array('login'=>1, 'spell'=>1, 'spell_html'=>1);
if (!$request_check_whitelist[$RCMAIL->action]) {
// check client X-header to verify request origin
if ($OUTPUT->ajax_call) {
if (rcube_utils::request_header('X-Roundcube-Request') != $RCMAIL->get_request_token()) {
header('HTTP/1.1 403 Forbidden');
die("Invalid Request");
}
}
// check request token in POST form submissions
else if (!empty($_POST) && !$RCMAIL->check_request()) {
$OUTPUT->show_message('invalidrequest', 'error');
$OUTPUT->send($RCMAIL->task);
}
// check referer if configured
if ($RCMAIL->config->get('referer_check') && !rcube_utils::check_referer()) {
raise_error(array(
'code' => 403, 'type' => 'php',
'message' => "Referer check failed"), true, true);
}
}
// CSRF prevention
$RCMAIL->request_security_check();
// check access to disabled actions
$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);
}
}
@ -292,16 +285,17 @@ if (is_file($incfile = INSTALL_PATH . 'program/steps/'.$RCMAIL->task.'/func.inc'
}
// allow 5 "redirects" to another action
$redirects = 0; $incstep = null;
$redirects = 0;
while ($redirects < 5) {
// execute a plugin action
if ($RCMAIL->plugins->is_plugin_task($RCMAIL->task)) {
if (!$RCMAIL->action) $RCMAIL->action = 'index';
$RCMAIL->plugins->exec_action($RCMAIL->task.'.'.$RCMAIL->action);
if (preg_match('/^plugin\./', $RCMAIL->action)) {
$RCMAIL->plugins->exec_action($RCMAIL->action);
break;
}
else if (preg_match('/^plugin\./', $RCMAIL->action)) {
$RCMAIL->plugins->exec_action($RCMAIL->action);
// execute action registered to a plugin task
else if ($RCMAIL->plugins->is_plugin_task($RCMAIL->task)) {
if (!$RCMAIL->action) $RCMAIL->action = 'index';
$RCMAIL->plugins->exec_action($RCMAIL->task.'.'.$RCMAIL->action);
break;
}
// try to include the step file

@ -1,5 +1,19 @@
<?php
/**
+-----------------------------------------------------------------------+
| This file is part of the Roundcube Webmail client |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <roundcube@gmail.com> |
+-----------------------------------------------------------------------+
*/
if (!class_exists('rcmail_install', false) || !is_object($RCI)) {
die("Not allowed! Please open installer/index.php instead.");
}
@ -15,40 +29,45 @@ $required_php_exts = array(
'XML' => 'xml',
'JSON' => 'json',
'PDO' => 'PDO',
'Multibyte' => 'mbstring',
'OpenSSL' => 'openssl',
'Filter' => 'filter',
'Ctype' => 'ctype',
);
$optional_php_exts = array(
'FileInfo' => 'fileinfo',
'Libiconv' => 'iconv',
'Multibyte' => 'mbstring',
'OpenSSL' => 'openssl',
'Mcrypt' => 'mcrypt',
'Intl' => 'intl',
'Exif' => 'exif',
'LDAP' => 'ldap',
'GD' => 'gd',
'Imagick' => 'imagick',
'Zip' => 'zip',
);
$required_libs = array(
'PEAR' => 'PEAR.php',
'Net_SMTP' => 'Net/SMTP.php',
'Net_IDNA2' => 'Net/IDNA2.php',
'Mail_mime' => 'Mail/mime.php',
'PEAR' => 'pear.php.net',
'Auth_SASL' => 'pear.php.net',
'Net_SMTP' => 'pear.php.net',
'Net_IDNA2' => 'pear.php.net',
'Mail_mime' => 'pear.php.net',
);
$optional_libs = array(
'Net_LDAP3' => 'git.kolab.org',
);
$ini_checks = array(
'file_uploads' => 1,
'session.auto_start' => 0,
'zend.ze1_compatibility_mode' => 0,
'mbstring.func_overload' => 0,
'suhosin.session.encrypt' => 0,
'magic_quotes_runtime' => 0,
'magic_quotes_sybase' => 0,
);
$optional_checks = array(
// required for utils/modcss.inc, should we require this?
'allow_url_fopen' => 1,
'date.timezone' => '-VALID-',
'register_globals' => 0, // #1489157
);
$source_urls = array(
@ -56,15 +75,20 @@ $source_urls = array(
'Session' => 'http://www.php.net/manual/en/book.session.php',
'PCRE' => 'http://www.php.net/manual/en/book.pcre.php',
'FileInfo' => 'http://www.php.net/manual/en/book.fileinfo.php',
'Libiconv' => 'http://www.php.net/manual/en/book.iconv.php',
'Multibyte' => 'http://www.php.net/manual/en/book.mbstring.php',
'Mcrypt' => 'http://www.php.net/manual/en/book.mcrypt.php',
'OpenSSL' => 'http://www.php.net/manual/en/book.openssl.php',
'JSON' => 'http://www.php.net/manual/en/book.json.php',
'DOM' => 'http://www.php.net/manual/en/book.dom.php',
'Intl' => 'http://www.php.net/manual/en/book.intl.php',
'Exif' => 'http://www.php.net/manual/en/book.exif.php',
'oci8' => 'http://www.php.net/manual/en/book.oci8.php',
'PDO' => 'http://www.php.net/manual/en/book.pdo.php',
'LDAP' => 'http://www.php.net/manual/en/book.ldap.php',
'GD' => 'http://www.php.net/manual/en/book.image.php',
'Imagick' => 'http://www.php.net/manual/en/book.imagick.php',
'Zip' => 'http://www.php.net/manual/en/book.zip.php',
'Filter' => 'http://www.php.net/manual/en/book.filter.php',
'Ctype' => 'http://www.php.net/manual/en/book.ctype.php',
'pdo_mysql' => 'http://www.php.net/manual/en/ref.pdo-mysql.php',
'pdo_pgsql' => 'http://www.php.net/manual/en/ref.pdo-pgsql.php',
'pdo_sqlite' => 'http://www.php.net/manual/en/ref.pdo-sqlite.php',
@ -75,6 +99,7 @@ $source_urls = array(
'Net_SMTP' => 'http://pear.php.net/package/Net_SMTP',
'Mail_mime' => 'http://pear.php.net/package/Mail_mime',
'Net_IDNA2' => 'http://pear.php.net/package/Net_IDNA2',
'Net_LDAP3' => 'https://git.kolab.org/diffusion/PNL',
);
echo '<input type="hidden" name="_step" value="' . ($RCI->configured ? 3 : 2) . '" />';
@ -83,7 +108,7 @@ echo '<input type="hidden" name="_step" value="' . ($RCI->configured ? 3 : 2) .
<h3>Checking PHP version</h3>
<?php
define('MIN_PHP_VERSION', '5.3.7');
define('MIN_PHP_VERSION', '5.4.0');
if (version_compare(PHP_VERSION, MIN_PHP_VERSION, '>=')) {
$RCI->pass('Version', 'PHP ' . PHP_VERSION . ' detected');
} else {
@ -160,17 +185,25 @@ if (empty($found_db_driver)) {
<?php
foreach ($required_libs as $classname => $file) {
@include_once $file;
foreach ($required_libs as $classname => $vendor) {
if (class_exists($classname)) {
$RCI->pass($classname);
}
else {
$RCI->fail($classname, "Failed to load $file", $source_urls[$classname]);
$RCI->fail($classname, "Failed to load class $classname from $vendor", $source_urls[$classname]);
}
echo "<br />";
}
foreach ($optional_libs as $classname => $vendor) {
if (class_exists($classname)) {
$RCI->pass($classname);
}
else {
$RCI->na($classname, "Recommended to install $classname from $vendor", $source_urls[$classname]);
}
echo "<br />";
}
?>

@ -1,14 +1,13 @@
/*
+-----------------------------------------------------------------------+
| Roundcube installer cleint function |
| Roundcube installer client function |
| |
| This file is part of the Roundcube web development suite |
| Copyright (C) 2009-2012, The Roundcube Dev Team |
| This file is part of the Roundcube Webmail client |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <roundcube@gmail.com> |
+-----------------------------------------------------------------------+
@ -17,7 +16,7 @@
function toggleblock(id, link)
{
var block = document.getElementById(id);
return false;
}
@ -28,14 +27,14 @@ function addhostfield()
var row = document.createElement('div');
var input = document.createElement('input');
var link = document.createElement('a');
input.name = '_default_host[]';
input.size = '30';
link.href = '#';
link.onclick = function() { removehostfield(this.parentNode); return false };
link.className = 'removelink';
link.innerHTML = 'remove';
row.appendChild(input);
row.appendChild(link);
container.appendChild(row);

@ -1,14 +1,23 @@
<?php
/**
+-----------------------------------------------------------------------+
| This file is part of the Roundcube Webmail client |
| |
| Copyright (C) The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <roundcube@gmail.com> |
+-----------------------------------------------------------------------+
*/
if (!class_exists('rcmail_install', false) || !is_object($RCI)) {
die("Not allowed! Please open installer/index.php instead.");
}
?>
<form action="index.php" method="post">
<input type="hidden" name="_step" value="2" />
<?php
// register these boolean fields
$RCI->bool_config_props = array(
'ip_check' => 1,
@ -16,8 +25,6 @@ $RCI->bool_config_props = array(
'auto_create_user' => 1,
'smtp_log' => 1,
'prefer_html' => 1,
'preview_pane' => 1,
'debug_level' => 1,
);
// allow the current user to get to the next step
@ -36,10 +43,20 @@ if (!empty($_POST['submit'])) {
echo '</p>';
}
else {
if (($dir = sys_get_temp_dir()) && @is_writable($dir)) {
echo '<iframe name="getconfig" style="display:none"></iframe>';
echo '<form id="getconfig_form" action="index.php" method="get" target="getconfig" style="display:none">';
echo '<input name="_getconfig" value="2" /></form>';
$button_txt = html::quote('Save in ' . $dir);
$save_button = '&nbsp;<input type="button" onclick="document.getElementById(\'getconfig_form\').submit()" value="' . $button_txt . '" />';
}
echo '<p class="notice">Copy or download the following configuration and save it';
echo ' as <tt><b>config.inc.php</b></tt> within the <tt>'.RCUBE_CONFIG_DIR.'</tt> directory of your Roundcube installation.<br/>';
echo ' Make sure that there are no characters outside the <tt>&lt;?php ?&gt;</tt> brackets when saving the file.';
echo '&nbsp;<input type="button" onclick="location.href=\'index.php?_getconfig=1\'" value="Download" />';
echo $save_button;
if ($RCI->legacy_config) {
echo '<br/><br/>Afterwards, please <b>remove</b> the old configuration files <tt>main.inc.php</tt> and <tt>db.inc.php</tt> from the config directory.';
@ -52,7 +69,7 @@ if (!empty($_POST['submit'])) {
}
echo '<p class="hint">Of course there are more options to configure.
Have a look at the defaults.inc.php file or visit <a href="http://trac.roundcube.net/wiki/Howto_Config" target="_blank">Howto_Config</a> to find out.</p>';
Have a look at the defaults.inc.php file or visit <a href="https://github.com/roundcube/roundcubemail/wiki/Configuration" target="_blank">Howto_Config</a> to find out.</p>';
echo '<p><input type="button" onclick="location.href=\'./index.php?_step=3\'" value="CONTINUE" /></p>';
@ -61,6 +78,9 @@ if (!empty($_POST['submit'])) {
}
?>
<form action="index.php" method="post">
<input type="hidden" name="_step" value="2" />
<fieldset>
<legend>General configuration</legend>
<dl class="configblock">
@ -84,8 +104,8 @@ $input_support = new html_inputfield(array('name' => '_support_url', 'size' => 5
echo $input_support->show($RCI->getprop('support_url'));
?>
<div>Provide an URL where a user can get support for this Roundcube installation.<br/>PLEASE DO NOT LINK TO THE ROUNDCUBE.NET WEBSITE HERE!</div>
<p class="hint">Enter an absolute URL (inculding http://) to a support page/form or a mailto: link.</p>
<div>Provide a URL where a user can get support for this Roundcube installation.<br/>PLEASE DO NOT LINK TO THE ROUNDCUBE.NET WEBSITE HERE!</div>
<p class="hint">Enter an absolute URL (including http://) to a support page/form or a mailto: link.</p>
</dd>
<dt class="propname">skin_logo</dt>
@ -120,8 +140,7 @@ echo $input_deskey->show($RCI->getprop('des_key'));
?>
<div>This key is used to encrypt the users imap password before storing in the session record</div>
<p class="hint">It's a random generated string to ensure that every installation has its own key.
If you enter it manually please provide a string of exactly 24 chars.</p>
<p class="hint">It's a random generated string to ensure that every installation has its own key.</p>
</dd>
<dt class="propname">ip_check</dt>
@ -190,31 +209,16 @@ echo $input_ilevel->show($RCI->getprop('identities_level'), 0);
<legend>Logging & Debugging</legend>
<dl class="loggingblock">
<dt class="propname">debug_level</dt>
<dd>
<?php
$value = $RCI->getprop('debug_level');
$check_debug = new html_checkbox(array('name' => '_debug_level[]'));
echo $check_debug->show(($value & 1) ? 1 : 0 , array('value' => 1, 'id' => 'cfgdebug1'));
echo '<label for="cfgdebug1">Log errors</label><br />';
echo $check_debug->show(($value & 4) ? 4 : 0, array('value' => 4, 'id' => 'cfgdebug4'));
echo '<label for="cfgdebug4">Print errors (to the browser)</label><br />';
?>
</dd>
<dt class="propname">log_driver</dt>
<dd>
<?php
$select_log_driver = new html_select(array('name' => '_log_driver', 'id' => "cfglogdriver"));
$select_log_driver->add(array('file', 'syslog'), array('file', 'syslog'));
$select_log_driver->add(array('file', 'syslog', 'stdout'), array('file', 'syslog', 'stdout'));
echo $select_log_driver->show($RCI->getprop('log_driver', 'file'));
?>
<div>How to do logging? 'file' - write to files in the log directory, 'syslog' - use the syslog facility.</div>
<div>How to do logging? 'file' - write to files in the log directory, 'syslog' - use the syslog facility, 'stdout' writes to the process' STDOUT file descriptor.</div>
</dd>
<dt class="propname">log_dir</dt>
@ -285,7 +289,7 @@ foreach ($RCI->supported_dbs as $database => $ext) {
$input_dbhost = new html_inputfield(array('name' => '_dbhost', 'size' => 20, 'id' => "cfgdbhost"));
$input_dbname = new html_inputfield(array('name' => '_dbname', 'size' => 20, 'id' => "cfgdbname"));
$input_dbuser = new html_inputfield(array('name' => '_dbuser', 'size' => 20, 'id' => "cfgdbuser"));
$input_dbpass = new html_passwordfield(array('name' => '_dbpass', 'size' => 20, 'id' => "cfgdbpass"));
$input_dbpass = new html_inputfield(array('name' => '_dbpass', 'size' => 20, 'id' => "cfgdbpass"));
$dsnw = rcube_db::parse_dsn($RCI->getprop('db_dsnw'));
@ -454,12 +458,12 @@ echo $text_junkmbox->show($RCI->getprop('junk_mbox'));
<?php
$text_smtphost = new html_inputfield(array('name' => '_smtp_server', 'size' => 30, 'id' => "cfgsmtphost"));
echo $text_smtphost->show($RCI->getprop('smtp_server'));
echo $text_smtphost->show($RCI->getprop('smtp_server', 'localhost'));
?>
<div>Use this host for sending mails</div>
<p class="hint">To use SSL connection, set ssl://smtp.host.com. If left blank, the PHP mail() function is used</p>
<p class="hint">To use SSL connection, set ssl://smtp.host.com.</p>
</dd>
<dt class="propname">smtp_port</dt>
@ -470,7 +474,7 @@ $text_smtpport = new html_inputfield(array('name' => '_smtp_port', 'size' => 6,
echo $text_smtpport->show($RCI->getprop('smtp_port'));
?>
<div>SMTP port (default is 25; 465 for SSL; 587 for submission)</div>
<div>SMTP port (default is 587)</div>
</dd>
<dt class="propname">smtp_user/smtp_pass</dt>
@ -478,7 +482,7 @@ echo $text_smtpport->show($RCI->getprop('smtp_port'));
<?php
$text_smtpuser = new html_inputfield(array('name' => '_smtp_user', 'size' => 20, 'id' => "cfgsmtpuser"));
$text_smtppass = new html_passwordfield(array('name' => '_smtp_pass', 'size' => 20, 'id' => "cfgsmtppass"));
$text_smtppass = new html_inputfield(array('name' => '_smtp_pass', 'size' => 20, 'id' => "cfgsmtppass"));
echo $text_smtpuser->show($RCI->getprop('smtp_user'));
echo $text_smtppass->show($RCI->getprop('smtp_pass'));
@ -591,17 +595,6 @@ echo $check_htmlview->show(intval($RCI->getprop('prefer_html')));
<label for="cfghtmlview">Prefer displaying HTML messages</label><br />
</dd>
<dt class="propname">preview_pane <span class="userconf">*</span></dt>
<dd>
<?php
$check_prevpane = new html_checkbox(array('name' => '_preview_pane', 'id' => "cfgprevpane", 'value' => 1));
echo $check_prevpane->show(intval($RCI->getprop('preview_pane')));
?>
<label for="cfgprevpane">If preview pane is enabled</label><br />
</dd>
<dt class="propname">htmleditor <span class="userconf">*</span></dt>
<dd>
<label for="cfghtmlcompose">Compose HTML formatted messages</label>
@ -671,6 +664,27 @@ echo $select_param_folding->show(strval($RCI->getprop('mime_param_folding')));
<p class="hint"><span class="userconf">*</span>&nbsp; These settings are defaults for the user preferences</p>
</fieldset>
<fieldset>
<legend>Plugins</legend>
<dl class="configblock" id="cgfblockdisplay">
<?php
$plugins = $RCI->list_plugins();
foreach ($plugins as $p) {
$p_check = new html_checkbox(array('name' => '_plugins_'.$p['name'], 'id' => 'cfgplugin_'.$p['name'], 'value' => $p['name']));
echo '<dt class="propname"><label>';
echo $p_check->show($p['enabled'] ? $p['name'] : 0);
echo '&nbsp;' . $p['name'] . '</label></dt><dd>';
echo '<label for="cfgplugin_'.$p['name'].'" class="hint">' . $p['desc'] . '</label><br/></dd>';
}
?>
</dl>
<p class="hint">Please consider checking dependencies of enabled plugins</p>
</fieldset>
<?php
echo '<p><input type="submit" name="submit" value="' . ($RCI->configured ? 'UPDATE' : 'CREATE') . ' CONFIG" ' . ($RCI->failures ? 'disabled' : '') . ' /></p>';

Binary file not shown.

Before

Width:  |  Height:  |  Size: 733 B

After

Width:  |  Height:  |  Size: 653 B

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save