Commit Graph

5607 Commits

Author SHA1 Message Date
Hadi Nategh
04a8cd4f60 WIP EGroupware Tutorial:
- Implement video navigation on popup
- Implement introduction video with user confirmation dialog based on session
- New layout for tutorials list both in sidebar and popup
- Separate tutorials styles to be able to set different styles base on templates
2015-10-14 14:17:09 +00:00
Ralf Becker
887cd00c4c allow to use alternate location name "hook_location", if app needs original name "location", like eg. calendar 2015-10-13 07:08:10 +00:00
Ralf Becker
9f1b92aa1d fix due to caching and reusing of connection not correctly set $this->Type == "mysql" 2015-10-12 18:34:47 +00:00
Ralf Becker
1971186597 special handling for $_POST[json_data] in _check_script_tag, to decend into its decoded content, fixing json direct might break json syntax 2015-10-12 13:26:34 +00:00
Ralf Becker
9da4924f00 allow to overide egw_server_root used as key in egw_cache for tree- AND instance-level 2015-10-10 10:33:35 +00:00
Hadi Nategh
a378d19d2a Some fixes for custom app-theme css:
- Make sure including css on ajax response respect app-theme
- Include app-theme for home portlets
2015-10-09 11:46:45 +00:00
Hadi Nategh
52a3e2240c WIP EGroupware Tutorial:
- Add disable option in admin site configuration in order to be able to switch off the tutorials menu in sideboxes
2015-10-09 07:42:13 +00:00
Ralf Becker
51b60c5df6 no longer store ADOdb object in session, also ensures reevaluating environment-data or multiple hosts in connection-data 2015-10-07 19:33:22 +00:00
Ralf Becker
50ed21bd7e fixed typo (wrong case) causing default DB capabilities to be returned and eg. giving an sql error when searching under MySQL in addressbook 2015-10-07 05:29:49 +00:00
Ralf Becker
a269120683 move @/enviroment support from class-variables to local ones, to re-evaluate them on each request, class vars are stored in session 2015-10-06 19:57:52 +00:00
Ralf Becker
1e54cfb117 use same egw_exception_db_connection instead of die, if no DB host set, so it can be cought 2015-10-06 16:59:54 +00:00
Ralf Becker
f724e47b2d cant use @-syntax with passwords, as they can start with an @ 2015-10-06 13:11:05 +00:00
Ralf Becker
047105fb41 allow to read db-config from environment, by using "@name" to reference to name from environment 2015-10-05 18:58:55 +00:00
Nathan Gray
060cf6073a Fix links to accounts (home-accounts) would not open properly when you click on them 2015-10-05 15:45:44 +00:00
Ralf Becker
816c9c0a96 * Calendar/Mail: fix edit action meeting-requests to NOT set content-disposition: attachment, as this seems to stop automatic processing in Exchange 2015-10-05 13:15:17 +00:00
Ralf Becker
cb5d0bd419 need to use our own readlink 2015-09-30 06:24:53 +00:00
Ralf Becker
c6ad6d2caa allow to reuse managed-id of existing attachment in PUT request by symlinking it, return correct xml-error for invalid mananaged-id 2015-09-30 03:27:29 +00:00
Ralf Becker
afa106cbf3 fix CalDAVTester failure: managed-attachments: Simple non-recurring, non-scheduled update attachment: Test 4: rename of attachment via Content-Disposition:filename= 2015-09-29 12:27:49 +00:00
Ralf Becker
b34cbded3a multiple fixes around managed attachments and new Horde_Icalendar:
- no longer decodes base64 automatic
- size param have to be string due to bug in handling of integers in Horde_Icalendar
- allow stripping of non-binary (eg. text/plain) inline attachments
- only add X-EGROUPWARE-ATTACH-INCLUDED, if we have a real managed attachment
- store external / url attachments as other unsupported attributes
2015-09-29 07:37:15 +00:00
Ralf Becker
b49a967cf1 we can NOT use 204 No content (forbidds a body) with return=representation, therefore we need to use 200 Ok instead 2015-09-28 13:15:36 +00:00
Hadi Nategh
7a4a5ac076 WIP EGroupware tutorial:
- Add css class to egw_tutorial div container
2015-09-28 12:25:56 +00:00
Hadi Nategh
3bc2e1077c WIP EGroupware tutorial:
- Implement a hook for application specific video tutorials
- Allow iframe widget to cooperate with fullscreen video play mode
2015-09-25 15:18:35 +00:00
Klaus Leithoff
397d5a6d36 fix problem with possible json_encode problem (removing all initial data from mailbody) on reply/forward 2015-09-24 10:06:22 +00:00
Ralf Becker
0f0728316d support themes on application level: $app/templates/$template/app-$theme.css 2015-09-18 15:53:20 +00:00
Ralf Becker
3b596f061e UCS lowercases email when storing 2015-09-18 07:18:58 +00:00
Klaus Leithoff
4f728727af silence warning 2015-09-15 11:30:05 +00:00
Ralf Becker
ff036416bf fix commented out reuse of already instanciated provider, and fix PHP Notice in memcache provider 2015-09-14 13:48:58 +00:00
Ralf Becker
342b717a04 allow to add all sorts of attachments as stream not just as strings 2015-09-11 08:39:00 +00:00
Ralf Becker
16c5e2deec * LDAP: fix not working connect under newer PHP 5.6 (maybe other versions too) with PHP Warning: invalid port number: 0 2015-09-08 13:07:35 +00:00
Ralf Becker
ca9aa01250 new egw_cache::addCache method which fails if key already exists in cache, allowing eg. to implement a mutex 2015-09-07 13:04:35 +00:00
Ralf Becker
8ae381e11e values for depth are 0, 1, "infinit" or not set which has to be interpreted as "infinit" 2015-09-03 06:54:06 +00:00
Ralf Becker
559d0ee15c do not show warning of force Depth: 0, if depth is already 0 2015-09-02 13:38:36 +00:00
Hadi Nategh
d721de7ee9 Mailvelope backup/restore integration WIP:
- Add PGP Encryption menu into sidebox of mail and infolog
- Create Backup/Restore operation dialog
2015-08-31 16:40:33 +00:00
Ralf Becker
284ffa7f13 IE JSON-serializes arrays passed in from different window contextx (eg. popups) as objects (it looses object-type of array), causing them to be JSON serialized as objects and loosing parameters which are undefined
JSON.strigify([123,undefined]) --> "{0:123}" instead of "[123,null]"
2015-08-31 12:21:11 +00:00
Ralf Becker
a96d7d50be silence permanent error_log 2015-08-31 12:02:01 +00:00
Ralf Becker
cb58e015ac fixing r53501: group-favorite has escaped name visible after reload 2015-08-27 11:40:18 +00:00
Ralf Becker
4615c6c3db * All apps: some favorites could not be deleted (reappeared after reload/next login) 2015-08-27 11:31:31 +00:00
Ralf Becker
85477c18a5 use correct columns for dropping index (does not matter if they contain length or not) 2015-08-26 13:07:38 +00:00
Ralf Becker
81fe3b0472 * Backup: backup ascii columns as such, allways check and if necessary fix indexes on restore 2015-08-26 12:50:56 +00:00
Ralf Becker
dc696455cc * Backup/PostgreSQL: indexes were not reported for backup
because of quoting of table-name
2015-08-26 11:09:55 +00:00
Ralf Becker
41d9b049f2 * Backup/MySQL: limited index length was not reported for PHP mysqli driver 2015-08-26 11:07:38 +00:00
Ralf Becker
e334678ecc missed to pass owner 2015-08-24 16:23:01 +00:00
Ralf Becker
9ae329ae72 * Calendar/all apps: fix since last package not working old favorites and json-encode all php-serialized preferences 2015-08-24 16:00:31 +00:00
Ralf Becker
5f7b671532 using a white-list currently only matching favorites 2015-08-24 13:32:05 +00:00
Ralf Becker
0819d09ef9 automatic unserialize php serialized preferences on server-side, to fix not working old favorites stored php-serialized after r53433 2015-08-24 13:14:29 +00:00
Ralf Becker
8f214e1e9a group_name and description are compulsory 2015-08-21 07:11:41 +00:00
Klaus Leithoff
24481b5274 when inserting new set of preferences on preferences::copy_preferences, make sure we copy ONLY the pref and its app and owner, not its ID 2015-08-20 12:28:25 +00:00
Hadi Nategh
4338493d2c Remove some no longer supported CKEditor skins 2015-08-19 15:58:51 +00:00
Ralf Becker
75baf8857f * PostgreSQL: fix SQL error on login with auto-create accounts enabled and user-name already exists with different case 2015-08-19 14:41:52 +00:00
Ralf Becker
95553f514c * Login: catch all exceptions in session creation, to NOT log user passwords, in case of (eg. database-)errors 2015-08-19 10:41:06 +00:00
Nathan Gray
1684ec78b5 Use favorite settings from preference to avoid all the encoding problems
Avoids errors in Firefox. 
(See rev. 53183, 53215, 53244)
2015-08-18 21:21:33 +00:00
Ralf Becker
beb829c315 drop contenthistroy class and table (egw_api_content_history) formerly used by SyncML 2015-08-18 11:45:59 +00:00
Ralf Becker
774bce4ea9 * InfoLog: fix SQL errors for custom types containing non-ascii chars (eg. German umlauts or Frensh acents 2015-08-18 09:42:31 +00:00
Ralf Becker
82ca78d378 * Calendar: fix SQL error on storing events containing rfc822 email addresses with non-ascii characters eg. "Hugo Müller <hm@test.org>"
egw_cal_user.cal_user_id is now an md5 hash of lowercased raw email address (eg. "hm@test.org" in above example). Full attendee information is now stored in egw_cal_user.cal_user_attendee.
Will allow in a further step also to store attendee information for accounts to eg. answer with correct email to external organizers
2015-08-17 14:07:25 +00:00
Ralf Becker
08d75bc7ad * PostgreSQL/Filemanager: fix SQL error while downloading files with long name (probably other cases too) 2015-08-13 12:47:52 +00:00
Hadi Nategh
5fd3302568 Add two new skins for CKEditor 2015-08-12 10:08:43 +00:00
Ralf Becker
09d96d3ea3 * Filemanager/WebDAV: use full urlencoding for OS X Finder, fixes problems with non-ascii chars in file- or folder-names
we should probably allways do that, but that requires more checks with other user-agents
2015-08-11 07:35:34 +00:00
Hadi Nategh
e91a88e80d WIP image upload via drag into ckeditor 4.5:
-Add extraPlugins into ckeditor config
-Activate imageUpload for mail compose htmlarea
2015-08-07 15:51:15 +00:00
Hadi Nategh
3853343f7e Remove explicit check for android devices with ckeditor as ckeditor 4.5.2 supports them 2015-08-07 10:31:22 +00:00
Ralf Becker
3a6544afff * Univention/Admin: renaming of accounts or groups works now (failed with removed old account) 2015-08-06 12:12:16 +00:00
Nathan Gray
51ab65131f Add a formatting constant for sending dates to client 2015-08-05 21:22:15 +00:00
Ralf Becker
18b9ff23f5 fix typo in last commit 2015-08-05 08:37:56 +00:00
Ralf Becker
535488ca28 PostgreSQL: automatic shorten all content requiring it, before schema update, to not stall update 2015-08-05 08:33:13 +00:00
Ralf Becker
e165593ed2 add HTTP User-Agent to pseudo session id, to eg. distinguish sessions from different WebDAV clients in access-log 2015-08-04 14:49:01 +00:00
Ralf Becker
449d515937 * NetDrive: enable old workarounds for current user-agent string, create 0 byte files when storing without 2015-08-04 14:41:20 +00:00
Ralf Becker
8fabe11fc5 fix typo causing PHP Fatal error on update 2015-08-04 09:53:38 +00:00
Ralf Becker
7bf6a497b0 fix wired PHP Fatal error: Call to a member function commit_session on null, thought isset should stop that ... 2015-08-02 09:04:57 +00:00
Ralf Becker
6c3ff9b792 Fix errors in async service, since r53254 "run shutdown callbacks after sending output to user" 2015-07-30 07:17:22 +00:00
Ralf Becker
2984e4c79e drop evtl. existing temp. table eg. from a previous failed upgrade 2015-07-29 19:01:17 +00:00
Ralf Becker
62c57946f6 fix typo giving fatal error on Univention Installation 2015-07-29 16:02:18 +00:00
Ralf Becker
ae9d87ed97 * Nginx/FastCGI: run shutdown callbacks (eg. link notification processing) after sending response to user
was broken since some time, because a not closed session kept it from working
--> we are now run all callbacks containing "session" it there name, closing session, calling fastcgi_finish_request() and then run rest of the callbacks
2015-07-29 12:36:37 +00:00
Ralf Becker
b799107de5 * Admin: fix SQL error when search contains a non-ascii character 2015-07-29 10:35:01 +00:00
Nathan Gray
b3611a8dfd Remove popup account selection option 2015-07-28 19:08:17 +00:00
Ralf Becker
6110c34aaa if db-object passed to so_sql_cf, use that also for querying custom-fields 2015-07-27 13:17:03 +00:00
Ralf Becker
2b1d3f63f3 * Univention: support Dovecot as IMAP available and default from 4.0-2 on 2015-07-23 14:56:20 +00:00
Ralf Becker
0f72e3d58d an other one: fix sql error if link-id (accidently) contains non-ascii chars 2015-07-23 11:49:41 +00:00
Ralf Becker
d59c15582f fix sql error if link-id (accidently) contains non-ascii chars 2015-07-23 11:30:57 +00:00
Ralf Becker
262d8d6440 set network timeout for ldap connections to not block for minutes 2015-07-22 13:35:01 +00:00
Ralf Becker
970078e970 some more fine-tuning of Galera checks, backported persisten connection handling from ADOdb 5.x 2015-07-19 08:35:27 +00:00
Ralf Becker
e1ad625fca improved and now optional Galera cluster health check 2015-07-15 20:47:49 +00:00
Nathan Gray
7e9b83d280 Get new custom fields ordering properly too 2015-07-14 14:28:29 +00:00
Ralf Becker
f098f5c368 fix typo 2015-07-14 11:15:30 +00:00
Ralf Becker
b318f1e4f4 status value is in column 1 (2. column), also fixed not working fetchColumn 2015-07-14 10:44:12 +00:00
Ralf Becker
3470f4d51c check Galera wsrep_local_state for node is not in state Synced, eg. Donor 2015-07-14 09:44:39 +00:00
Ralf Becker
bba3fa804a some database optimizing: changing columns with no user-input to CHARACTER SET ascii (instead of utf8), shorten indexes and add additional autoincrement columns where primary key contained varchars 2015-07-11 13:56:50 +00:00
Nathan Gray
b16047bde2 Fix custom field order renumbering to keep at multiples of 10, and handle cached custom fields 2015-07-09 17:42:40 +00:00
Ralf Becker
cc15b6812a fix not being able to create new password, after r53051: allow to specify multiple ;-separated hosts for database 2015-07-07 12:41:11 +00:00
Ralf Becker
b27dbc617c allow to specify multiple ;-separated hosts for database, by default first one is used, on connection failure other ones are tried too 2015-07-06 11:15:14 +00:00
Ralf Becker
7eff188dcf fix sometimes not working redirect to login page (session could not be verified), because inline script is not allowed by our content-security-policy, redirecting top window now in login.js 2015-07-04 07:53:50 +00:00
Ralf Becker
4e986e58b8 change "password about to expire in N days" warning into an once per login info-message (was a redirect to password change) 2015-07-01 17:51:56 +00:00
Ralf Becker
d39c2a71bf * Login/Password: handle forced password change on login page 2015-07-01 12:44:34 +00:00
Ralf Becker
be9cd16de4 fix egw_ical_iterator to use new Horde_Icalendar 2015-06-30 06:53:46 +00:00
Klaus Leithoff
ee02151c3a attempt to get Sendmail working in zpush implementation 2015-06-23 15:36:12 +00:00
Ralf Becker
3b4708f9ea using new Horde code in vendor for CalDAV/CardDAV, moved all old Horde and SyncML code to syncml app, not sure it is still functional 2015-06-22 15:36:23 +00:00
Ralf Becker
2d63cfb10d * Mail: inline images were not shown in Thunderbird
we need to send a multipart/related with html-body as first part and inline images as further parts
2015-06-19 14:20:57 +00:00
Nathan Gray
a602dd3e86 Fix custom field order renumbering to keep at multiples of 10. 2015-06-18 16:48:16 +00:00
Ralf Becker
14ccc8f0b5 added todo with url to php class allowing to stream a zip file of arbitrary size 2015-06-11 12:46:27 +00:00
Nathan Gray
920616e37a Calendar et2 conversion work in progress.
Context menu is enabled, but not all actions are fully implemented yet.
2015-06-10 21:51:28 +00:00
Ralf Becker
6c7026fa52 * Setup: support mail authentication without PHP imap extension 2015-06-10 15:44:01 +00:00
Ralf Becker
c7763ee259 load chosen and CKEditor as part of API javascript boundle, as they are used be old eTemplate to and loading only one of the two et2 bundles fails 2015-06-08 14:33:57 +00:00
Ralf Becker
ddbe8ccec3 encryption of InfoLog entries (EPL only) 2015-05-28 14:40:33 +00:00
Ralf Becker
01860bc469 * Mobile: fix redirect loop, if template_set was forced to something else then "pixelegg"
- refactored generation of framework object to egw_framework::factory used now in login.php and egw object
- using now $framework->template_dir for *.tpl files of template-sets
2015-05-27 14:01:32 +00:00
Ralf Becker
38b3122bb8 send OpenPGP/Mime message according to rfc3156, section 4 2015-05-18 19:23:05 +00:00
Ralf Becker
853dc85e33 allow to add further attachments, after base-part has been generated or set via emailadmin_imapbase::parseRawMessageIntoMailObject() 2015-05-10 14:32:37 +00:00
Hadi Nategh
ad34d20080 IDE warning cleanup 2015-05-05 09:01:01 +00:00
Hadi Nategh
08729a9df8 Do not return null for return_array function as expected to return always an array 2015-05-04 10:40:50 +00:00
Ralf Becker
e5b89deea4 fix PHP Fatal error "Class APCIterator not found" during installation, caused by for apc.enable_cli=0, but APC(u) installed 2015-04-29 13:38:03 +00:00
Ralf Becker
5e40c8748d fix IDE warnings 2015-04-27 08:31:49 +00:00
Ralf Becker
e3f6fe6104 only use tree-wide load_via array, but do some sanity checks before using it (need to contain all stock keys), to fix not loaded (common) translations, cleaning up some IDE warnings 2015-04-26 11:00:01 +00:00
Ralf Becker
02161a851e * PostgreSQL: fix SQL error viewing history of an entry containing attachments 2015-04-25 10:08:12 +00:00
Ralf Becker
4b4c5e8a84 * PostgreSQL/Addressbook: fixed not working creating of new distribution lists
caused by egw_db::insert() using 0 or NULL in value of $where of primary key when trying to create the list, MySQL ignories these
2015-04-24 13:50:33 +00:00
Ralf Becker
9059132c34 fixed default SMTP account was not returned during setup and deprecated old send class in favor of using egw_mailer direct 2015-04-24 10:01:22 +00:00
Ralf Becker
0b1da4118e * Notifications: skip email notification if we have no valid SMTP profile (eg. because there are only personal accounts and we run via cron) 2015-04-24 08:24:12 +00:00
Ralf Becker
6d3dd5889a fix sharing CSS for Stylite template 2015-04-23 21:16:20 +00:00
Ralf Becker
c823f64c4b fix not working download url for share on a subdirectory of a mounted filesystem with given download url 2015-04-23 19:40:55 +00:00
Ralf Becker
c57bd20379 * API: caching uses by default APC(u) if available AND apc.shm_size * apc.shm_segments >= 64M, it no longer complains in cron/cli if APC is not enabled (as it should and is by default) 2015-04-23 09:20:17 +00:00
Ralf Becker
9cd7906852 removed not working cast of Horde_Mail_Rfc822_List to array 2015-04-22 14:26:20 +00:00
Klaus Leithoff
abd6800a89 dont try to send if there is no smtpAccount 2015-04-21 14:23:59 +00:00
Klaus Leithoff
3a3fea946b replacement for broken (and now deprecated) send->msg; 2015-04-21 12:50:41 +00:00
Ralf Becker
495d6d3599 prefer igbinary serialzation, if available of PHP serialization 2015-04-19 08:09:17 +00:00
Ralf Becker
7d54d5b21c fix meeting invitations to not set "Content-Disposition: attachment" for ical alternative 2015-04-17 09:19:42 +00:00
Nathan Gray
dea520f901 Pass mimetype along too as VFS widget and egw_link seem to expect them 2015-04-16 16:20:38 +00:00
Hadi Nategh
1c6242741b Fix temp_link_id to respect egw_data 2015-04-16 08:23:52 +00:00
Ralf Becker
ed1c1daf4a using serialize to create hash to not fall short if some non-utf-8 or non-json-decodable data is in parameters 2015-04-16 07:04:49 +00:00
Ralf Becker
08609c1e0b always return resource seeked to its start 2015-04-14 17:05:38 +00:00
Ralf Becker
0223553284 allow to specify "egw_data" => egw_link::set_data() instead of "tmp_name" of uploaded file to create attachments with egw_link::link() 2015-04-14 15:04:21 +00:00
Ralf Becker
264899f0db * ActiveDirectory: primary group was not used when filtering accounts by a group, causing eg. no accounts to be found for "Domain Users" group in Admin or other apps 2015-04-09 09:45:12 +00:00
Ralf Becker
bf187f131f check if APC(u) is enabled and not only if extension is available 2015-04-03 17:56:35 +00:00
Hadi Nategh
788cd3e078 Fix REQUEST_URI if there is ?download in url 2015-04-02 11:26:35 +00:00
Ralf Becker
0127e6d07c fix not working customized etemplates after fix with content-disposition attachment, we now only set it for urls ending with "?download", not for "?download=something" 2015-04-02 10:46:53 +00:00
Ralf Becker
21a48297bb * Admin/ActiveDirectory: filtering user-list by groups was not implemented 2015-04-02 08:51:36 +00:00
Ralf Becker
a14c880102 * LDAP/Admin: empty groups showed all users, if selected in accounts-list 2015-04-02 08:49:49 +00:00
Ralf Becker
cca60fa93f ?download in WebDAV url did not trigger content-dispostion attachment header 2015-04-02 07:19:37 +00:00
Nathan Gray
bd51cb4a08 Add support for multi-part history values into historylog 2015-04-01 19:35:35 +00:00
Hadi Nategh
5c944330c5 Expose link widget WIP:
- Implement expose view for link-string widget
- Adapt link-string widget, and other widgets which are using expose to download_href link
2015-04-01 16:51:18 +00:00
Hadi Nategh
5026216842 Treat iceweasel browser like as firefox 2015-03-31 13:55:05 +00:00
Ralf Becker
92ee011a45 * Calendar: meeting requests were not recogniced by other clients as such because of lost method parameter 2015-03-31 09:49:31 +00:00
Ralf Becker
b30f051f04 remove popup for pdfs on all mobile devices 2015-03-30 15:54:41 +00:00
Hadi Nategh
21f2fe9b0e Fix mime_open handler for old etemplate 2015-03-30 14:44:20 +00:00
Hadi Nategh
c22094d808 No need to have regexp mime for the rest of the mime type text, as the default mime_target is _browser 2015-03-30 10:37:09 +00:00
Hadi Nategh
41af200dc6 Let browser handles mime types/text which are not suppose to be popup 2015-03-30 09:57:34 +00:00
Ralf Becker
3e47f37983 quote order column in backup and always quote "index" as it seems to be one of very little names not automatic recogniced in MySQL 2015-03-30 08:28:52 +00:00
Ralf Becker
31b4209346 fix user-agent detection to correctly detect "Mozilla/5.0 (Linux; Android 4.3; LT30p Build/9.2.A.1.205) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.117 Mobile Safari/537.36" as Chrome 2015-03-30 08:26:31 +00:00
Ralf Becker
55082bcc68 * LDAP: fixed not working creation of new groups (with empty describtion) 2015-03-29 16:10:02 +00:00
Ralf Becker
86d0b31b3b * ActiveDirectory: real password change (not reset) for PHP 5.4>=5.4.26, 5.5>=5.5.10, 5.6+ (subject to minimum password age policy!) 2015-03-29 15:22:43 +00:00
Ralf Becker
0e6c4cdde6 * LDAP/AD/UCS/Filemanager: new created groups home-directory was not displayed in filemanager 2015-03-27 10:48:18 +00:00
Ralf Becker
2c50d99de0 docu fix, default is here ASC to, as it is SQL default 2015-03-27 08:12:19 +00:00
Ralf Becker
57d06008fa * LDAP: setting default sorting to ascending, as in SQL backend 2015-03-27 08:09:29 +00:00
Nathan Gray
5c135604d2 Implement searching in group email addresses 2015-03-25 20:33:35 +00:00
Nathan Gray
7cf73e6967 Sort countries by locale, according to user's language and country settings, using already existing method to determine locale 2015-03-25 18:49:16 +00:00