Commit Graph

443 Commits (master)

Author SHA1 Message Date
Aleksander Machniak 162bc85be9 Add support for :from parameter in vacation action (patch from Michele Locati) 9 years ago
Aleksander Machniak 74ce01efc7 Q() -> rcube::Q() 9 years ago
Aleksander Machniak 8f8beafd56 Use .get_label() consistently (instead of .gettext()) 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 1b39d9a6c7 PHP7: Fixed some E_WARNING errors that previously were E_STRICT 9 years ago
Aleksander Machniak a7b0426571 Merge pull request #269 from petrkle/strikethrough
Strikethrough disabled sieve filters
10 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)
10 years ago
Aleksander Machniak a4ba3df548 Bump up version number 10 years ago
Aleksander Machniak 9c38c58e1e Add option to prepopulate vacation addresses on form init (#1490030) 10 years ago
Aleksander Machniak 224a1b19cb Fix incorrect filter data after filter delete (#1490356)
Fix missing position idicator in Larry skin when dragging a filter
10 years ago
Aleksander Machniak fa857716e6 Add option to define default vacation interval 10 years ago
Petr ec065910db Strikethrough disabled sieve filters 10 years ago
Aleksander Machniak e4338fdf38 Fix missing host:port in connection error message 10 years ago
Aleksander Machniak 05b11f7ef0 Fix handling of header test with one-element array as header name 10 years ago
Aleksander Machniak b59b72cc30 Fix "Non-static method PEAR::isError() should not be called statically" errors (#1490281) 10 years ago
Aleksander Machniak 3e0ad293e1 Fix PHP fatal error when visiting Vacation interface and there's no sieve script yet 10 years ago
Thomas Bruederli 36147bd6df Update localizations from Transifex 10 years ago
Aleksander Machniak 04009e5ccb Fix bug in vacation script detection with kolab_master feature enabled but no active script 10 years ago
Aleksander Machniak dc9cc7aa8a Improve procedure of script selection to write a vacation rule 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
Thomas Bruederli fbb86218d0 Synchronized localizations from Transifex 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
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 a94f4be8d2 Fix padding of some form elements 10 years ago
Thomas Bruederli f652e36b2b Force-pull translations from Transifex 10 years ago
Thomas Bruederli 01bc27536a Updated localizations from Transifex 10 years ago
Aleksander Machniak 14094fca82 Remove redundant code 10 years ago
Aleksander Machniak e979511083 Remove redundant is_file() checks 10 years ago
Jonas Heinrich fc3ed3fef4 Fixed typo in config 10 years ago
Aleksander Machniak 0ea079d604 dirname(__FILE__) -> __DIR__ 10 years ago
Aleksander Machniak 8b5038befc Fix handling of smart list inputs 10 years ago
Aleksander Machniak f2fe48785c Update changelog 10 years ago
Aleksander Machniak 6e6f9ce6a7 Fix compatybility with contextmenu plugin 10 years ago
Aleksander Machniak 613f96839c Added simple API to manage vacation rule 10 years ago
Aleksander Machniak d72fdecdf8 Add missing labels 10 years ago
Aleksander Machniak 5a64153f40 Fix vacation times handling 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
Aleksander Machniak fe03a9074d Add some localizations 10 years ago
Aleksander Machniak 1299c6a231 Update translations 10 years ago
Aleksander Machniak 9828c1abe2 Fix default vacation status (#1490019) - improve error message 10 years ago
Aleksander Machniak 4d52ee03a1 Fix missing css/js scripts in filter form in mail task 10 years ago
Aleksander Machniak f72815e1f9 Code improvements + added tests for vacation date regexps handling 11 years ago
Aleksander Machniak 319751fff6 Updated changelog and CS fixes after PR merge 11 years ago
Jacob Lister 147530edcc Add Vacation date range feature for servers without the sieve 'date' extension (using regexes) 11 years ago
Aleksander Machniak 0c2fcd633a Get rid of -moz-box-shadow 11 years ago
Aleksander Machniak c883f687d9 Add possibility to specify an after-vacation-rule action (keep, discard, redirect) in Vacation UI 11 years ago
Aleksander Machniak b0aee4eb42 Fix bug where non-existing (or unsubscribed) folder wasn't listed in folder selector (#1489956) 11 years ago
Aleksander Machniak 1db12a9037 Fix so all pages are displayed correctly in extwin mode (#1489952) 11 years ago
Aleksander Machniak b76f8e5e26 Added option to specify connection socket parameters - managesieve_conn_options 11 years ago
Aleksander Machniak ebc9877def Add title attribute for settings menu 11 years ago
Aleksander Machniak 13b33da51a Managesieve: Improved UI accessibility 11 years ago
Thomas Bruederli 99cdca46b7 Merge branch 'dev-accessibility'
Conflicts:
	program/include/rcmail_output_html.php
	program/js/app.js
	program/js/treelist.js
	program/lib/Roundcube/html.php
	skins/larry/styles.css
	skins/larry/templates/compose.html
11 years ago
Aleksander Machniak 17a76c3fd7 Fixed Save button in classic skin of Vacation interface (#1489926) 11 years ago
Thomas Bruederli 77043f8469 Apply accessibility improvements to the settings section 11 years ago
Thomas Bruederli b34d679075 Specify licenses in all javascript files and blocks to please LibreJS 11 years ago
Aleksander Machniak f22de58087 Fixed notify/enotify extension handling 11 years ago
Aleksander Machniak 5515dbb970 Remove IE<7 specific code 11 years ago
Aleksander Machniak a2e09c950d Use methods chaining, don't use deprecated row_init method 11 years ago
Aleksander Machniak 056d458ed6 Fix disabled create filter action 11 years ago
Aleksander Machniak 53ede96dd6 Remove IE6-specific code 11 years ago
Aleksander Machniak 64542fc803 Drop support for IE6, move IE7/IE8 support to legacy_browser plugin, update to jQuery-2.1.0 11 years ago
Aleksander Machniak 04c9116f14 Fix list-input fields in Vacation interface 11 years ago
Aleksander Machniak 53846f798f Remove debug code 11 years ago
Aleksander Machniak 50a57e9b75 Added optional separate interface for out-of-office management (#1488266) 11 years ago
Aleksander Machniak fb5255e2f0 Fix filter creation from an email when preview frame is disabled (#1489647) 11 years ago
Aleksander Machniak a622451bc5 Fix wrong action folder selection if managesieve_domains is not empty (#1489617) 11 years ago
Aleksander Machniak c6227fe7b0 Bump version number 11 years ago
Aleksander Machniak 022f510365 Fix issue in displaying filter form when managesieve_kolab_master=true
and sieve variables extension is supported by the server (#1489599)
11 years ago
Aleksander Machniak 9a0900e4a1 Fix issue where multi-select fields were not visible in new filter action rows (#1489600) 11 years ago
Aleksander Machniak a329ccd9c9 Fix issue where folder selector wasn't visible on new filter form 11 years ago
Thomas Bruederli 8404fe9e32 Updated localizations from Transifex 11 years ago
Thomas Bruederli 4f9bd08469 Fix icon position after listicons.png update 11 years ago
Aleksander Machniak fac59dc441 Added move/copy icons, improved edit icon and some icon positions 11 years ago
Aleksander Machniak 4e040e304f Add Filters tab using plugin API hook 11 years ago
Aleksander Machniak 27f0c2723b Nicely handle server-side modification of script names (#1489412) 11 years ago
Thomas Bruederli 3b95e24fbb Updated localizations from Transifex 11 years ago
Aleksander Machniak 067d3dc44a Fix redundant/missing closing div tags 11 years ago
Aleksander Machniak 72dc3c0faf Fix typos 11 years ago
Aleksander Machniak b5117238db Merge branch 'master' of github.com:roundcube/roundcubemail 11 years ago
Aleksander Machniak aac4b452a3 Bump version to 7.1 11 years ago
Aleksander Machniak 78ef00f12d Fix a bug where deleted filter was not removed from the list
(because now list widget's 'rows' property is of type object not array)
11 years ago
Thomas Bruederli 34003c5fa5 Display status messages as pile of black bars overlaying the UI in order to improve visibility (#1488974) 11 years ago
Thomas Bruederli 5b334509a8 Updated localizations from Transifex 11 years ago
Aleksander Machniak 4136174517 Clean up translations once again, this time remove untranslated strings for all langs 11 years ago
Aleksander Machniak 9377edc497 More lceanup 11 years ago
Aleksander Machniak 3d9e683cda Added plugin localizations 11 years ago
Aleksander Machniak 8c0ee424af Update composer.json file with Net_Sieve package requirement 11 years ago
Thomas Bruederli f93e0b3a14 Synchronized localization files from Transifex 11 years ago
Aleksander Machniak 4daaa09438 Move PEAR libs from plugins into main Roundcube lib directory,
list them as dependencies in INSTALL file (#1489182)
11 years ago
Aleksander Machniak b3e25974b1 Fix typo: occured -> occurred (#1489366) 11 years ago
Aleksander Machniak 0f4806ede6 Added managesieve_domains option to limit redirect destinations 11 years ago
Thomas Bruederli 38ab0be093 Created composer.json files for default plugins 11 years ago
Aleksander Machniak 439fd773e3 Fix typo in last commit and some managesieve tests (where we changed
:comparator position)
11 years ago
Aleksander Machniak 889c76cbdc Fix so i;ascii-numeric comparator is not forced as default for :count and :value operators
Fix date/currentdate related form issues and comparators handling (#1489346)
11 years ago
Aleksander Machniak 8f62cfa4c8 Hide advanced rule modifier for 'date' and 'currentdate' rules 11 years ago
Aleksander Machniak 962eff7dfe Fix bug where at least one additional address of vacation message was required (#1489345) 11 years ago
Aleksander Machniak 1bfd8ac27a Fix typo 11 years ago
Aleksander Machniak 09fed60218 Add common headers to header selector (#1489271) 11 years ago
Thomas Bruederli eef9eb1146 Synchronized localization files from Transifex 11 years ago
Aleksander Machniak bcedf05d19 s/$rcmail_config/$config/ also for plugins configuration 11 years ago
Aleksander Machniak c9f779d036 Remove debug code 11 years ago
Aleksander Machniak b2c5869fe2 Skip optional :all modified in address/envelope rule 11 years ago
Aleksander Machniak dda39aab1d Support 'keep' action (#1489226) 11 years ago
Thomas Bruederli 71b577ea7d Added Luxembourgish localizations 12 years ago
Aleksander Machniak f001af99a7 Fix javascript error 12 years ago
Aleksander Machniak c3762a5ad5 Fix folder names truncation in Classic skin (#1489220)
Fix bug where not all event handlers were executed (because body onload
was executed after rcmail init function, sometimes)
12 years ago
Thomas Bruederli a7e0897fde Synchronized localization files with Transifex 12 years ago
Aleksander Machniak dc56c50075 Fix handling of &, <, > characters in scripts/filter names (#1489208) 12 years ago
Aleksander Machniak d6b592941d Fix handling of &, <, > characters in scripts/filter names (#1489208) 12 years ago
Thomas Bruederli 07c6c69eca Make all bundled plugins the same license as Roundcube itself, which is GPLv3+ 12 years ago
Aleksander Machniak 8ea08a8264 Split managesieve.php file into two 12 years ago
Aleksander Machniak 0185a27907 Implemented date, currentdate and index - RFC5260 (#1488120) 12 years ago
Aleksander Machniak 5c6e74b176 Fix js error on operator change 12 years ago
Aleksander Machniak a1679cb650 Use list input field for custom headers list 12 years ago
Aleksander Machniak b41c1d9498 Small css fixes 12 years ago
Aleksander Machniak a201e0704c Small css fix 12 years ago
Aleksander Machniak bba7814efe Simplify list inputs (remove add button) 12 years ago
Aleksander Machniak c6f0755860 Support string list arguments in filter form (#1489018) 12 years ago
Ramazan Terzi 3bc84f9caf Turkish translation fix 12 years ago
Thomas Bruederli 3e78fc7fdf Synced localizations from Transifex 12 years ago
Aleksander Machniak ed837a3544 Added support for date and index extensions (RFC5260) in script parser
Script parser code improvements
12 years ago
Aleksander Machniak 2a3e774c60 Fix possible error on ajax request 12 years ago
Aleksander Machniak 2193f6a130 Avoid unused local variables 12 years ago
Thomas Bruederli c8f2c0c5af Synchronized localizations from Transifex 12 years ago
Thomas Bruederli 708b1bca9f Synchronized translations with Transifex 12 years ago
Aleksander Machniak b6fa7d54b8 Add vacation-seconds extension support (RFC 6131) 12 years ago
Thomas Bruederli 4090870623 Localization updates from Transifex 12 years ago
Aleksander Machniak f3d017cfaa Bump version number up to 6.2 12 years ago
Aleksander Machniak 2e33a247fd Don't trim whitespace in folder names (#1488955) 12 years ago
Thomas Bruederli aed581b6c4 Import all translations from Transifex 12 years ago
Thomas Bruederli 8e50ae9a6f Extend copyright to 2013 12 years ago
Aleksander Machniak b005927f91 Add basic tests for plugins 12 years ago
Aleksander Machniak 61be822d62 Remove deprecated functions (from bc.php file) usage in plugins 12 years ago
Aleksander Machniak 6c7ac2ef4b Support tls:// prefix in managesieve_host option 12 years ago
Thomas Bruederli de2009ec2c Pulled de_CH translations from Transifex (first test) 12 years ago
Thomas Bruederli 49437c123a Add proper headers to localization template files 12 years ago
Thomas Bruederli ee3e27dc09 Rename/remove invalid localization files from last launchpad import 12 years ago
Thomas Bruederli aabeab1e4e Updated localizations from launchpad 12 years ago
Aleksander Machniak 0a9d414084 Update changelog, set version to 6.1 12 years ago
Aleksander Machniak 04c856774d Don't force 'stop' action on last rule in a script 12 years ago
Aleksander Machniak 46f06cd0e9 Fixed compatibility with jQueryUI-1.9 12 years ago
Aleksander Machniak da7905f9c6 Fixed filter operations after filter deletion (#1488832) 12 years ago
Aleksander Machniak a648ba6489 Fixed filter selection after filter deletion (#1488832) 12 years ago
Aleksander Machniak 0d4ccb8d88 Moved rcube_* classes to <plugin>/lib/Roundcube for compat. with Roundcube Framework autoloader 12 years ago
Thomas Bruederli 6199a72c8e Updated localization files from launchpad 12 years ago
Aleksander Machniak 9946e756b1 Fix watermark in a frame regression 12 years ago
Aleksander Machniak 84f2a72408 Fixed filter activation/deactivation confirmation message (#1488765) 12 years ago
Thomas Bruederli 35cdf9771f Bring back lost localization files 12 years ago
Thomas Bruederli fa3a619315 Imported recent launchpad translations 12 years ago
Aleksander Machniak e4785ce599 Update package.xml 12 years ago
Aleksander Machniak 7b274b8871 Fix so scripts listed in managesieve_filename_exceptions aren't displayed on the list (#1488724) 12 years ago
Aleksander Machniak 30f10bfe16 Added request size limits detection and script corruption prevention (#1488648) 12 years ago
Aleksander Machniak e695162ef7 Change default port to 4190 (IANA-allocated), add port auto-detection (#1488713) 12 years ago
Aleksander Machniak 74e6cf2f58 Re-add enotify tests 12 years ago
Aleksander Machniak b41cd7cc37 Set default importance to normal 12 years ago
Aleksander Machniak cd97f0ad11 Support only 00 version of draft-ietf-sieve-notify which is more common (Cyrus 2.4) 12 years ago
Aleksander Machniak 270da4b87b Enable notify action for notify extension 12 years ago
Aleksander Machniak eb1ee0803e Support old notify extension 12 years ago
Aleksander Machniak 1446775097 Merge pull request #24 from pawel-slowik/master
Sieve plugin - Initial support for enotify/notify (RFC5435, RFC5436)
12 years ago
Aleksander Machniak 7641e4aaab Improve capabilities list handling in parser tests 12 years ago
Paweł Słowik 4c4496bccc Sieve enotify/notify - allow empty body 12 years ago
Paweł Słowik 3c99599794 Sieve enotify/notify:
- GUI for importance setting
- make tests usable for checking the GUI
12 years ago
Paweł Słowik 2cdaa79dce Merge branch 'master' of https://github.com/roundcube/roundcubemail 12 years ago
Aleksander Machniak 1d8e863445 Fix parser_kep14 test 12 years ago
Paweł Słowik 92a030d928 Added tests, fixed PHP warnings 12 years ago
Paweł Słowik 197a3e6faf Merge branch 'master' of https://github.com/roundcube/roundcubemail 12 years ago
Aleksander Machniak 4bb0bffefe Convert managesieve test scripts to PHPUnit, add them to the suite 12 years ago
Paweł Słowik ffb160147a Sieve enotify/notify - localization 12 years ago
Paweł Słowik 2e7bd6dab7 Sieve enotify/notify - GUI 12 years ago
Paweł Słowik 2ac00a258b Sieve enotify/notify - parser 12 years ago
Aleksander Machniak c1037eda18 Fixed issue with DBMail bug [http://pear.php.net/bugs/bug.php?id=19077] (#1488594) 12 years ago
Thomas Bruederli c41a86e5cc Updated translations from launchpad 12 years ago
Aleksander Machniak bc92ca56ef Fixes after default->classic switch 12 years ago
Thomas Bruederli 6843acc9fc Merged changes to skin folders 12 years ago
Thomas Bruederli 9f1652e29e Adapt to new default skin folder namimg 12 years ago
Thomas Bruederli c40419bdfe Rename old 'default' skin folder to 'classic' 12 years ago
Aleksander Machniak cfc27c9b76 Keep some resource files (images) in separate directory 12 years ago
Aleksander Machniak 23856c9d4e Fix performance issue in message_headers_output hook handling,
Update version number
13 years ago
Aleksander Machniak a49e00a567 Update Changelog 13 years ago
Aleksander Machniak 40b6df30c5 Fixed scrollbars in Larry's iframes 13 years ago
Aleksander Machniak c9dcb83132 Fixed PHP warning, added check for allowed characters in variable name 13 years ago
Aleksander Machniak 7eba08592d Added translation for variable modifiers 13 years ago
Aleksander Machniak ebb204793b Added GUI for variables setting - RFC5229 (patch from Paweł Słowik) 13 years ago
Aleksander Machniak 7dc7eb19f1 Fixed custom header name validity check, made RFC2822-compliant
Updated localization files list in package.xml
13 years ago
Aleksander Machniak 041c93ce0b Removed $Id$ 13 years ago
Thomas Bruederli 3983f50635 New plugin translations from launchpad 13 years ago
Thomas Bruederli e88e20c3fb Updated plugin translations from launchpad 13 years ago
alecpl 8d8f7a7b8e - Larry skin support 13 years ago
thomascube 48e9c14ebd Move plugins repository into roundcubemail root folder; svn:externals are not defined anymore 13 years ago
till 63a3dc5fde moved plugins 15 years ago
alecpl 98c489e9f4 - Managesieve: Added import from Horde-INGO
- Managesieve: Support for more than one match using if+stop instead of if+elsif structures (#1486078)
- Managesieve: Support for selectively disabling rules within a single sieve script (#1485882)
- Managesieve: Added vertical splitter
15 years ago
alecpl f52946a9a8 - change managesieve_mbox_encoding to UTF-8 in .dist config according to RFC 15 years ago
alecpl 929a508d80 - Improve performance by avoiding unnecessary updates to the session table (#1486325) 15 years ago
thomascube 47d8d39cf4 Use rcmail::imap_connect() to establish IMAP connections; always initialize rcube_imap object in mail steps 15 years ago
alecpl 5c54cc0ee6 - don't use dl(): http://pear.php.net/bugs/bug.php?id=17038 15 years ago
yllar 33ea0c7ace translations update 15 years ago
alecpl e7b9591191 - Fix handling of "<>" characters in filter names (#1486477) 15 years ago
alecpl e363390bdc - Fix problem with '<' and '>' characters in header tests (#1486391) 15 years ago
alecpl a2cb306981 - Managesieve: Fix requires generation for multiple actions (#1486397) 15 years ago
alecpl c55337ce67 - write error to log if connection to managesieve server cannot be established 15 years ago
alecpl a5f430d069 - added nb_NO localization 15 years ago
alecpl 53d3b0f834 - fix 'set activate' button status setting 15 years ago
alecpl 0b53ec758a - managesieve: fix rule/action row width on Safari (#1486269) 15 years ago
alecpl ac67db1980 - Managesieve 2.0: multi-script support 15 years ago
alecpl ee51070c46 - remove comment 15 years ago
alecpl 6020c3d0af - Managesieve: added Greek translation 15 years ago
alecpl e4acbbd8cc - Added server-side e-mail address validation with 'email_dns_check' option (#1485857) 15 years ago
alecpl 0f0690c1c5 - gb_GB -> en_GB 15 years ago
alecpl 0fa5e0c991 - ru_RU update 15 years ago
alecpl 4f420b95c6 - Managesieve: adde cs_CZ localization (#1486186) 15 years ago
alecpl fcc34c0cac - Fix first rule deleting (#1486140) 15 years ago
alecpl f139b060b0 - de_DE fixes (#1486136) 15 years ago
alecpl 1029fc8de6 - Support multiple managesieve hosts using %h variable in managesieve_host option (#1486135) 15 years ago
alecpl d168b9909a - managesieve: Fix handling of "true" as "anyof (true)" test 15 years ago
alecpl e8d8b6fd86 - fix warning when importing squirrelmail rules 15 years ago
alecpl 36969ee7d9 - managesieve: added 'managesieve_mbox_encoding' option 15 years ago
alecpl a3cf3c5046 - nl_NL fix (#1486070) 15 years ago
alecpl d343336772 - added es_ES localization for Managesieve plugin 15 years ago
yllar ac9bf998b6 lang update 15 years ago
yllar cb1d1cb3c8 translations update 16 years ago
alecpl e4a4686b55 - Managesieve plugin: uk_UA localization added 16 years ago
alecpl 14a62c3e14 - Updated PEAR::Net_Sieve to 1.1.7 16 years ago
alecpl 9240c6a7d9 - support plugin's config file 16 years ago
alecpl 91a35ee012 - use lowercase in html tag names (to make switch to xhtml simpler in the future) 16 years ago
alecpl 5afc1c388a - removed unused reference 16 years ago
alecpl fb3e28fe43 - Managesieve plugin: added pt_BR localization 16 years ago
alecpl 8eb4249d95 - Managesieve: support IMAP namespaces (#1485943) 16 years ago
alecpl bddf5d09a0 - added Italian localization for managesieve plugin 16 years ago
alecpl 36e52648fa - header lists: change one-item array to string 16 years ago
alecpl 7328469f8f - Added support for headers lists (coma-separated) in rules 16 years ago
alecpl 0b1875c82a - better icons 16 years ago
alecpl eaf947cef6 - remove double settings.css inclusion 16 years ago
thomascube d9f084ccdf Add swiss german localization + little style improvement 16 years ago
alecpl 1e487a847f - Fix "PHP Fatal error: Call to undefined function check_email" (#1485871) 16 years ago
alecpl b7682cf391 - use '/this/' in templates 16 years ago
alecpl 5d90e1dfe2 - moved some code from init() to start() 16 years ago
alecpl a393c37c4f - managesieve plugin 16 years ago