Nathan Gray
946558b559
More gantt improvements for large projects
...
- Add a further zoom level, yearly, for long projects
- Fix some scaling issues
- Turn on gantt cover while loading, so it gets a better chance to be displayed
2014-09-17 20:17:29 +00:00
Nathan Gray
60c2566bf9
Anything longer than 3 days is shown as Month + Day
2014-09-15 20:03:11 +00:00
Nathan Gray
69f6668d05
Some experimental speed changes:
...
- Make pm list load first, so others don't matter
- Add preference to limit dates in gantt
- Log timing of gantt loading
2014-09-15 19:35:29 +00:00
Ralf Becker
9e60cadb70
fixed date client/server protocol to always just append "Z" after seconds, so apps can compare date values
2014-09-10 10:22:55 +00:00
Ralf Becker
a4d18fdce2
trigger blur on taglist in getValue() to not loose just typed content (previous fix stoped selection of suggestions by mouse)
2014-09-10 10:02:07 +00:00
Nathan Gray
06a78f145f
Fix sub-grid column indent
2014-09-09 23:14:42 +00:00
Nathan Gray
dbbd64d66b
Make sure tab doesn't start by trying to display a hidden tab.
2014-09-09 22:19:50 +00:00
Nathan Gray
4d93470fb9
- Fix bug loading new data into gantt
...
- Setup for Stylite gantt features
2014-09-09 20:40:27 +00:00
Nathan Gray
c33a71c5f7
Add some CSS during column resize to indicate which columns are fixed and which columns will change when you resize.
2014-09-09 17:39:33 +00:00
Nathan Gray
108d3a0f40
When user changes the width of a relative width column, make sure that column stays at the set size and adjust all other relative columns to fit. Fixes relative width columns changing width again after being resized.
2014-09-09 16:58:26 +00:00
Nathan Gray
8cb9914d15
Change minimum characters to 4 to avoid long queries on large installs.
2014-09-09 14:13:47 +00:00
Hadi Nategh
c651fa269a
* Filemanager: Fix not working file upload in IE
2014-09-09 12:59:06 +00:00
Ralf Becker
b1f0448b6d
fixed advanced search was always filtering by first option of custom-fields of type select or select-*
2014-09-09 08:36:34 +00:00
Ralf Becker
fd9519ccfe
fix IDE warning
2014-09-09 08:31:59 +00:00
Nathan Gray
4e6c5c3a1f
Warn about legacy function calls using too many arguments
2014-09-08 23:01:55 +00:00
Nathan Gray
4031e2b5a1
Fix customfield column size preference not used
2014-09-08 20:09:21 +00:00
Ralf Becker
0404f7f272
fix IDE warning
2014-09-08 11:40:57 +00:00
Ralf Becker
f4e47c176f
* eTemplate2/all apps: fixed not displayed readonly dates outside lists (eg. created/modified dates in dialogs)
2014-09-08 11:38:02 +00:00
Ralf Becker
8c9854daa2
date widget has now api to set or get year, month, date, hours, minutes or time(stamp) and using that in calendar app.js for date manipulation
2014-09-05 10:34:37 +00:00
Nathan Gray
62e089c889
Add duration_unit parameter so we can reduce resolution for large time spans.
...
Prevents browser hanging while processing every minute of multi-year projects.
2014-09-04 20:53:27 +00:00
Hadi Nategh
6b62a84aae
Fix styling of freezed buttons while uploading files via file widget
2014-09-04 15:00:59 +00:00
Ralf Becker
35f63b35d5
* Calendar: fixed freetime search to correctly read and set times from edit window
...
- fixed et2_date.set_value() to understand nummeric timestamps in usertime used on server-side (needed timezone offset)
- added new parameter-type for et2_date.set_value() string starting with + or - to add or subtract given number of seconds from current time (to not have to code that in applications)
2014-09-04 13:03:48 +00:00
Ralf Becker
e5dcceb27b
* Projectmanager/all apps: fix not working popups, eg. add existing action in elements list
...
also fixed IDE warnings
2014-09-04 08:29:02 +00:00
Nathan Gray
e47cb0f3f6
Speed improvements for large gantt tasks
2014-09-03 20:11:48 +00:00
Ralf Becker
cf7f5fef7e
remove addressbook-email from app-list in link widgets
2014-09-03 12:53:43 +00:00
Nathan Gray
70d918331b
Prevent additional objectManagers.
...
Fixes separate selection problem with right clicks on sub-grids.
2014-09-02 22:29:19 +00:00
Hadi Nategh
ea57df4765
Add css class to add contact button in url-email widget, and make the icon size 16x16
2014-09-02 08:39:57 +00:00
Ralf Becker
ff626a812b
disabling my workarounds to better test Nathans fixes in action system
2014-09-02 08:30:14 +00:00
Nathan Gray
12ab21e6a4
- Propagate clearSelection() to children
...
- Fix missed change in previous commit
2014-09-01 18:44:13 +00:00
Nathan Gray
3a49e4cfec
Fix handling of missing ID (usually from empty placeholder)
2014-09-01 16:53:59 +00:00
Nathan Gray
fa8861ef38
Preserve selected egwActionObjects through to nm_action, it will extract string IDs there.
2014-09-01 16:30:31 +00:00
Hadi Nategh
312a914ce2
Bind onmouseenter event of add contact+ button on url-email set_value, as widget might be created by apps client side code, not directly loaded from xet file
2014-09-01 10:02:18 +00:00
Hadi Nategh
02453109d1
Add new attribute to url-email widget in order to be able to add contact+ button to each email address.
2014-08-29 14:56:14 +00:00
Ralf Becker
d9bcab4f58
same is true (and fixable here) for right-click in sub for actions allowing no multiple entries
2014-08-28 12:14:09 +00:00
Ralf Becker
d9fe3a5f8c
when nextmatch queries children, querying controller has no filters, so we have to use the ones from its parent
2014-08-28 12:09:08 +00:00
Ralf Becker
8e75eca579
fixing temp. fix:
...
- doubleclick does not deselect selection in other hierarchy level (eg. previous selected sub-entry in infolog) --> use _senders
- if there was a confirmation _senders array contains strings with id instead of action-objects
- empty placeholder from sub-level is selectable --> ignore its empty id
2014-08-28 09:48:27 +00:00
Nathan Gray
ff29be3197
Fix history log widget no longer working
2014-08-27 17:13:38 +00:00
Ralf Becker
df83b4dbbe
an other timezone fix for time(only) widget: this.date is on current date, changing it in get_value() to 1970-01-01, gives a time-difference, if we are currently on DST
2014-08-27 16:57:22 +00:00
Ralf Becker
f9a99637d1
temp. fix for _ids containing (wrong) selections from different hierarchy levels, fixes doubleclick on InfoLog with children, selects more then one entry to open, which obviously fails
2014-08-27 15:56:01 +00:00
Nathan Gray
6b2b686544
Fix duration parsed in wrong format if there was no choice for format.
2014-08-27 15:09:14 +00:00
Ralf Becker
fe9336896c
fixed taglist-account displays groups as id eg. "-4"
2014-08-26 09:27:33 +00:00
Hadi Nategh
d806a5bf69
Change minWidth of columns in dataview to 20px
2014-08-26 07:34:33 +00:00
Nathan Gray
f3c15f87b1
Infolog lists embedded as action can have their own separate column preferences.
2014-08-25 23:18:09 +00:00
Nathan Gray
55ae503923
Even more date fixes:
...
- Don't send a date (just 1970-01-01) with timeonly values
- Avoid infinite loop when setting timeonly with timepicker
2014-08-25 19:33:35 +00:00
Nathan Gray
5b573114b9
Remove deprecated (& internal) __proto__.
...
Fixes error in IE with calendar edit.
2014-08-25 18:52:00 +00:00
Nathan Gray
299caf9807
More time fixes:
...
- Also accept string timestamps in Zulu time
- Fix change detection causing nextmatch filter to not work
2014-08-25 17:26:22 +00:00
Ralf Becker
868e5e0a38
adding autocomplete attribute to et2_textbox and et2_passwd and use it in email wizzard/account to stop browser from accidently filling out empty fields
2014-08-21 13:06:17 +00:00
Ralf Becker
21d3dce3e4
adding et2_appicon class
2014-08-21 09:47:30 +00:00
Nathan Gray
4d5f5677e1
Try to correctly handle timezone offset on the other side of the world
2014-08-20 14:39:42 +00:00
Nathan Gray
28d2fad14a
* Change nextmatch column size calculations so extra size is allocated better.
2014-08-19 23:33:06 +00:00
Nathan Gray
ec1471c6d2
Another attempt at resolving the browser timezone issue
2014-08-19 21:22:26 +00:00
Hadi Nategh
a512c04183
Fix F.F does not trigger resize nm column onmousedown, but after mouseup
2014-08-19 13:58:35 +00:00
Hadi Nategh
fe02eda1a7
* Etemplate/Nextmatch: Do not trigger resize event on nextmatch header columns if the clicked element is select-tag, as it may cause conflict between two click and resize handlers in some browsers.
...
- Fix clicking on selectboxes located at nm header causes to resize the column, in FireFox.
2014-08-19 12:48:22 +00:00
Hadi Nategh
427956518e
* Etemplate/widget: Introduce video widget.
...
- Add ability to play video media/stream
2014-08-19 10:10:09 +00:00
Nathan Gray
175d6b7201
- Change zoom auto level to better suit projects a day or two long
...
- Reset start/end dates when changing data
2014-08-18 22:55:54 +00:00
Nathan Gray
976c7e55ac
- Adjust default columns to exclude resolution, completion, timesheets, votes and bounties. They can still be turned on manually, just hidden by default.
...
- Set some more default column widths
2014-08-18 19:44:37 +00:00
Nathan Gray
5b91e871de
Deal with languages helpfully adding timezones into timestamps
...
Fixes random (12, 6, 7) hours sometimes added to dates
2014-08-18 16:47:27 +00:00
Hadi Nategh
161734f941
Handle validation_error if widget is children of a tabbox.
...
-Fix widget with validation error does not activate its related tab.
2014-08-18 12:05:04 +00:00
Ralf Becker
e47db95be7
* Mail: fixed sometimes not working (un)subscribe of mailboxes, added better diagnostic and automatic (de)select children
2014-08-15 11:22:43 +00:00
Nathan Gray
cc04f0b89c
Create & use a flag 'no_actions' to disable actions for sum rows
2014-08-11 23:13:02 +00:00
Nathan Gray
f7589316e0
Make sure options are there before looking inside, avoids a potential error in filter options
2014-08-11 20:27:56 +00:00
Hadi Nategh
ef6aed6579
Make sure we are getting the current appName
2014-07-30 15:12:05 +00:00
Nathan Gray
5b873215b0
- Fix expanding closed projects by passing parent ID
...
- Fix missing milestone icon
2014-07-29 21:51:37 +00:00
Nathan Gray
795e2cdb9c
Refine cache check conditions, rows is always empty by this point.
2014-07-29 21:46:01 +00:00
Hadi Nategh
6689ca64f7
SelectAccount with type "none" should get sel_options but it should be readonly if user has no admin access. Fix infolog delegation for admin users with selectAccount type "none" selected
2014-07-29 17:39:35 +00:00
Klaus Leithoff
235888ad88
fix typo, that prevented the correct split of TreeNodeOpenItems
2014-07-29 12:50:39 +00:00
Nathan Gray
8a70df4df8
Handle num_rows set by application:
...
- Don't overwrite num_rows setting if the application sets it for some reason
- If num_rows is 0, don't get the initial rows server side
- If num_rows is 0 and the initial rows are missing, trigger an update right away to get them asyncronously.
2014-07-28 21:00:39 +00:00
Nathan Gray
9851a8a6ef
Trigger a clear event on the etemplate DOMContainer when the etemplate is cleared, so app code can listen for it.
...
This allows a 'et2_unload' sort of processing.
2014-07-28 20:51:49 +00:00
Ralf Becker
c6783d8b8e
document hack, to work around birthdays changing one day for each time they are stored
2014-07-25 12:32:34 +00:00
Ralf Becker
970331b97c
* Addressbook/all apps: dates change every time they get stored (temporary fix as conditions causing that are not clear)
2014-07-25 10:17:15 +00:00
Nathan Gray
b6b660ee16
Fix detached date label
2014-07-22 22:22:09 +00:00
Nathan Gray
3176500c83
Refine select option searching when the id is like parent[selectbox].
...
- only search parents when the ID has multiple parts
- fix case when selectbox was in the sel_options arrayMgr, but had no options, parent was used as select options
2014-07-22 21:21:33 +00:00
Ralf Becker
6a0c7e2c3d
log not compiling PHP expressions as warning, as they are most likely caused by wired content, eg. filenames containing a $
2014-07-21 15:27:15 +00:00
Ralf Becker
3c6130f7e6
setting an (unlikely) custom delimiter, to allow to use "," in value, eg. folder-name, IF values are specified as array
2014-07-21 12:57:32 +00:00
Hadi Nategh
ce6ac57f34
Correct "Save as Zip" icon in link widget contxt menu
2014-07-17 14:21:55 +00:00
Nathan Gray
2785aed59c
Check if content is there before trying to look inside it.
...
Fixes "TypeError: Cannot read property 'id' of null" from mail dialog
2014-07-16 14:42:28 +00:00
Nathan Gray
762d8a9c09
If link has a target, use that.
...
Causes linked files to be opened in new browser tab.
2014-07-15 19:19:36 +00:00
Nathan Gray
10aa07b2fc
Fix extra options not used in read only select-account
2014-07-15 15:40:22 +00:00
Nathan Gray
67390bbcfa
Add HTML5 drag support for Chrome for all files in link lists
2014-07-14 22:34:55 +00:00
Nathan Gray
3b915de4cb
Grid row action enhancements:
...
- If row has a key 'id', set the egwActionObject id to match instead of just row_[i]
- Pass the row content in egwActionObject's data, so it's available during action processing
2014-07-14 20:47:52 +00:00
Nathan Gray
8a36e40b10
Call applyFilters() function instead of setting directly, which skipped change detection.
...
Fixes selection not cleared when applying a favorite.
2014-07-14 09:59:02 +00:00
Ralf Becker
f011a6c3d1
fixed broken regular expression for multiple comma-separated values (dash in character class has to be last character!)
2014-07-13 09:14:58 +00:00
Hadi Nategh
ef9409294c
Try to use xmlDoc.responseText as xmlDoc.response might not be available in IE
2014-07-11 16:49:45 +00:00
Hadi Nategh
8f0dba15fe
No need to use Microsoft.XMLDOM for IE anymore, since IE 7+ supports XMLHttpRequest object
2014-07-11 16:07:02 +00:00
Hadi Nategh
3e56f38995
Try to get attribute with getAttribute method, IE does not support element dataset
2014-07-11 15:52:43 +00:00
Hadi Nategh
a0bf45da93
Use getAttribute to get the data-group value to use it for toolbar sorting.\n\r -Fix group is undefined error opening mail in IE10
2014-07-11 10:38:36 +00:00
Ralf Becker
2a6168a1c2
* Addressbook: fixed sorting of category tree
...
fixes not displayed cat-tree and validation error introduced with r47575
2014-07-09 11:18:47 +00:00
Nathan Gray
a5b9173fc9
Handle multiple buttons in a single custom field
2014-07-08 20:13:51 +00:00
Nathan Gray
b7a6e53163
* Added context menu to download all linked files in one zip file
...
As long as there are 2 or more files linked to the entry, you can download them all as a zip using the link list context menu.
2014-07-08 16:51:01 +00:00
Ralf Becker
55722f4520
change default value for unset checkbox to be in line with old eTemplate, using "" that evaluates in PHP and javascript to false and not string "false"
2014-07-08 11:31:57 +00:00
Hadi Nategh
a1285433bd
Add alert method to et2_dialog in order to create alert dialog with optional arguments message, title and dialog type. Additionally, remove an not used argument from et2_dialog.confirm method
2014-07-08 10:29:59 +00:00
Nathan Gray
ed6013605e
If a custom field is added to the column list, invalidate known columns to get all new data back, in case app did not send custom fields in the first request. Fixes needing to reload after displaying custom fields in nextmatch
2014-07-08 04:21:02 +00:00
Nathan Gray
7a1d2dc0cd
Customfield lists need to create all widgets, so they can be enabled if the column is changed without re-doing the whole thing
2014-07-08 03:37:47 +00:00
Nathan Gray
760dc4b1d3
When update(true), also invalidate record change detection, to re-fetch all known rows
2014-07-08 03:35:55 +00:00
Nathan Gray
7eb528ee1f
Instead of replacing a dropped image with an error image, we'll remove it, and pass the image to the first et2_file widget with a drop target. That's not ideal, but it should work for us in most cases until CKEditor fully supports drag and drop.
...
(Firefox only)
2014-07-07 20:48:35 +00:00
Nathan Gray
08c10a70aa
Update Resumable from github, fixes some problems with setting et2_file value to a list of files in firefox.
2014-07-07 20:26:48 +00:00
Nathan Gray
1273955f9d
Allow possibility to include select all flag in url in addition to selected IDs
2014-07-07 16:46:16 +00:00
Nathan Gray
15ddeb2a24
- Avoid duplicate ID warning by only returning the value from the matching radio button
...
- Fix radiobuttons where the options/values were set in the template instead of sel_options
2014-07-07 16:19:37 +00:00
Hadi Nategh
296530b320
Fix etemplate2 submit() method for those buttons which they do not have nested ids
2014-07-07 13:25:20 +00:00
Nathan Gray
9ed54eb3fd
Drag & drop images don't work because of DB field sizes, so replace dropped images with error image so user knows right away it won't work.
2014-07-02 20:50:39 +00:00
Nathan Gray
4c5e36500a
Fix (?) the tough bug where app tab is closed, and nextmatch autorefresh generates an error after "this.getInstanceManager() is null"
2014-07-02 15:58:00 +00:00
Hadi Nategh
2c9ffb39b9
Override attchToDOM method in selectAccount, because chosen needs to be set after widget dettached from DOM (eg. validation error)
2014-07-02 14:36:47 +00:00
Hadi Nategh
6e4c7472fc
Make sure rows are bigger than 0 otherwise customfield CKEditor will get height of 0
2014-07-02 09:34:51 +00:00
Hadi Nategh
64329c4c0e
Add et2_label_empty class to textbox_ro widget if there is no content for the label
2014-07-01 16:18:01 +00:00
Ralf Becker
4ac94b2c01
remove label from readonly radiobutton, as we show label of checked option as value
2014-07-01 16:03:31 +00:00
Nathan Gray
9562483697
Improvements to handle not yet existing links
...
- Can't view file info for non-existing file, so context menu item is disabled
- Fix setting a comment
- Fix loading class on delete & fetch title showing incorrectly
2014-07-01 00:22:13 +00:00
Nathan Gray
26f1e351f3
Apply missing font & size preferences
2014-06-30 21:28:03 +00:00
Ralf Becker
15fbd6bde8
fixed not working custom fields of type radio
2014-06-30 19:34:53 +00:00
Hadi Nategh
4471a45147
Add id to Add button for link-add widget
2014-06-27 14:05:00 +00:00
Hadi Nategh
7a3d0e50da
Fix error undefined to_app, and jquery UncaughtTypeError happens onclick handler
2014-06-27 13:27:18 +00:00
Hadi Nategh
6d2582c22e
Remove added indentation by accident from commit 47388
2014-06-25 16:47:07 +00:00
Hadi Nategh
cab2ccdd29
Fix widget VFS button_caption translation
2014-06-25 16:26:59 +00:00
Nathan Gray
9a36c458e6
Try to fetch title if not passed
2014-06-24 21:45:13 +00:00
Hadi Nategh
c281f19568
Active translation for attribute button_caption of VFS widget
2014-06-24 15:18:55 +00:00
Hadi Nategh
545b35de5b
Declare a non declared variable which was messing with app global object
2014-06-24 12:40:25 +00:00
Ralf Becker
fe44c6bb5e
fixed not allways used category color, because regular expression missed every 2. category
2014-06-24 12:39:12 +00:00
Nathan Gray
866fbb65bc
- Refresh filter even if it's not dirty, since it changed
...
- Bind delete prompt to right click on link while avoiding conflict with action system
2014-06-23 17:17:34 +00:00
Ralf Becker
ae19dff1d4
ignore stepMismatch html5 validation errors, the are generated for every float number
2014-06-23 14:31:47 +00:00
Ralf Becker
d4bb8a00a9
move et2_call method to egw.js to have it always available at window scope (it is NOT et2 specific), maybe we find a better/nicer place for it
2014-06-23 08:10:40 +00:00
Nathan Gray
ec476a96d7
Fix column selection not saved if columnselection pref setting had 'nextmatch-' prefix already.
...
Fixes infolog columns not being saved
2014-06-18 18:29:52 +00:00
Nathan Gray
0cffb46eab
Handle not existing links passed from server
2014-06-17 17:14:05 +00:00
Nathan Gray
2b1215af8b
If history tab is currently active, finish loading historylog widget immediately
2014-06-16 15:17:30 +00:00
Nathan Gray
aa249cb6a2
Add function to get currently active tab index
2014-06-16 15:16:59 +00:00
Hadi Nategh
2ff1107b78
Ignore favorite preferences which are not correctly serialized, and somehow are stroed in database. At the moment we just ignore them, but they stays in database, need to be watched closely to find the cause, though.
2014-06-13 16:03:16 +00:00
Ralf Becker
c0cfe3f320
readonlys was not namespaced in old eTemplate, therefore if we dont find data under current namespace, we look into parent (if there is anything namespaced, we will NOT look for parent!)
2014-06-12 14:22:39 +00:00
Ralf Becker
0b6fa2785b
allow to use numbers for attributes of type string, silently convert them to strings, fixes not working blur values for quantity in timesheet
2014-06-12 08:25:31 +00:00
Nathan Gray
f3ba7f692f
Use custom field name to toggle row visibility, not order, as order doesn't always work.
2014-06-11 18:03:19 +00:00
Hadi Nategh
6b91baf0cc
Make sure fav. sorted list is always an array, and append new favorite added to fav. sorted list
2014-06-11 14:42:27 +00:00
Ralf Becker
5a32a7d622
widgets should NEVER return null (eg. for empty), as server-side $preserv will overwrite it
2014-06-11 09:14:43 +00:00
Ralf Becker
5d3d61e5b0
only care for regular expression starting with /, as everything else is to ambigious eg. "replys[$row][reply_comment]" has a $ followed by an r, which is also first char of that expression
2014-06-11 07:59:45 +00:00
Nathan Gray
22b6084224
Fix link entry clear button not actually clearing the value if the value was entered via code instead of user
2014-06-10 21:35:39 +00:00
Nathan Gray
a4335f01a0
Hide custom field lines from nextmatch if they have no value
2014-06-10 20:22:43 +00:00
Nathan Gray
f8cb222580
Style gantt links as invalid based on if the start/end dates are correct for the link type
2014-06-10 18:52:50 +00:00
Nathan Gray
42547b8153
Gantt chart styling
...
- Include progress as text on left side of bar
- Highlight weekends
2014-06-10 17:38:02 +00:00
Nathan Gray
315a0d4ac0
Pass along width attribute, so it can be passed to chosen
2014-06-09 22:55:39 +00:00
Nathan Gray
a9e37042cb
Use js type for query & select callbacks and implement setter functions
2014-06-09 19:28:31 +00:00
Nathan Gray
fa8963c8b4
Consider "0" (string zero) equal to false instead of true, as some PHP values come as strings.
2014-06-09 19:27:02 +00:00
Ralf Becker
60a32879d4
first try to implement/activate client-side validation for numbers, thought not fully working yet
2014-06-05 15:48:29 +00:00
Ralf Becker
a45525949b
implement clientside validation for textbox, stop complaining about $ in regular expressions of validator and fix attribute name from "preg" to "validator" on server-side
2014-06-05 15:47:23 +00:00
Nathan Gray
2e09cf1ab1
- changing column selection preference now works if 'nextmatch-' prefix is included in the columnselection_pref setting
...
- change column selection popup to reload every time it opens, just in case something changes in the columns
2014-06-04 18:37:58 +00:00
Nathan Gray
001eab9159
If extra data is sent from a get_rows, try to update a matching child widget.
2014-06-04 16:45:19 +00:00
Ralf Becker
2c5ba307b5
convert numbers to string for consistent matching, 0 was never set, because it was treated as already set, which gives wrong result if it is not first option
2014-06-04 09:52:02 +00:00
Nathan Gray
0d9e9553b3
Change date filters:
...
- End date is now inclusive
- Task dates must now either start after start date _or_ end before end date to be included, instead of fall completely within the range
2014-06-03 23:29:46 +00:00
Ralf Becker
c6fe901b56
fixed infinit loop, if string to active starts with url right away, eg. " https://domain.com/ "
2014-06-03 07:22:34 +00:00
Nathan Gray
3b8bee4d18
Update dhtmlxTree & dhtmlMenu to latest version
2014-06-02 23:32:15 +00:00
Hadi Nategh
87d3a0bf28
Set date-duration display_format default to day/hour/minute
2014-05-30 13:40:13 +00:00
Nathan Gray
10d7a3f579
If a filter changed, explicitly clear the selection to prevent confusion if selected rows are in the new results
2014-05-29 16:21:41 +00:00
Nathan Gray
bb5b1163cb
Progress on gantt chart
...
- Fixed error from projects with no constraints
- Got ajax expansion working
2014-05-27 23:27:30 +00:00
Nathan Gray
1224439431
Fix reversed path when namespaced widgets were nested
2014-05-27 20:22:23 +00:00
Nathan Gray
bff821e300
Move special path handling from nextmatch up to top level so it can work for all widgets with a namespace and their own value
2014-05-27 20:16:02 +00:00
Nathan Gray
7af73c91c4
Avoid infinite loop looking up accounts
2014-05-27 15:33:26 +00:00
Nathan Gray
34ed2d7290
- Fix missing change handler on some nm header templates
...
- Fix improper usage of jQuery.when() (it doesn't take an array)
- Fix missing filter detection to not break with multiple values
2014-05-26 22:27:57 +00:00
Ralf Becker
086501bc30
fixed .5 hours entered in infolog (PM tab) is displayed after saving as 30 days, caused by automatic transformation to minutes and not recognising that display_format does NOT support minutes
2014-05-26 13:44:24 +00:00
Hadi Nategh
ba1141f0cc
Set value for date-timeonly when it's string and NaN
2014-05-26 07:46:30 +00:00
Ralf Becker
30ffb38bd6
reverted r47030 as it breaks server-side nextmatch actions
...
nextmatch values were in root instead of namespaced "nm", causing all serverside actions (eg. move one contact into an other addressbook) to fail, because validation did not find values placed clientside outside valid namespace
2014-05-23 16:00:17 +00:00
Ralf Becker
24ee68bdf2
fixed infinit loop for apps running in iframe by refactoring frameworked templates work with client-side api:
...
- moved shared etemplate2 part into static etemplate2.app_refresh() method
- egw_message.refresh() calls framework.refresh() which can return a DOMwindow for egw.refresh() to work on, instead of calling egw.refresh recursive
2014-05-23 08:21:11 +00:00
Nathan Gray
1f4c8a0c03
Fix blank list on refresh, related to r47042
2014-05-22 16:32:58 +00:00
Ralf Becker
893091e286
- new app.js observer method which receives update notifications from all apps
...
- app.infolog.observer triggering refresh of InfoLog list, when a timesheet get stored
- moved code of already deprecated egw_refresh() to egw.refresh() and changed etemplate to use that
- framework from jdots/pixelegg template no longer overwrites window.egw_refresh, but egw.refresh calls framework.refresh for regular refreshs if framework is present
2014-05-22 15:29:14 +00:00
Nathan Gray
84e20433b6
Attempt to get rows in the direction of need, rather than centered on the missing rows
2014-05-22 14:48:22 +00:00
Nathan Gray
ccdb54a366
Gantt chart progress
2014-05-21 22:11:36 +00:00
Ralf Becker
5825c8df18
new button attribute "novalidate" to skip validation
2014-05-21 17:24:56 +00:00
Ralf Becker
6ee8b47d7a
fixed javascript error when setting a validation error on a widget not on a tab
2014-05-21 09:07:14 +00:00
Ralf Becker
281863ac29
get customfield_list to respect readonlys of single fields
2014-05-15 16:49:53 +00:00
Ralf Becker
2b3a9cd1b5
* eTemplate2: fixed accounts got lost, if account-selection did not show all accounts
...
if accounts need to be fetched from server, callback is called async --> calling set_value again for last callback
2014-05-14 10:00:31 +00:00
Hadi Nategh
d849c6797a
Switch sorted array and id params position, in sortable gird
2014-05-14 08:29:04 +00:00
Nathan Gray
33f264346a
Fix error deleting a favorite
2014-05-13 21:39:23 +00:00
Nathan Gray
18bf4a4ebd
Fix typo
2014-05-13 18:44:59 +00:00
Nathan Gray
51c73ddf89
Make sure all account options are present. Was on server side, now needs to be client side. See r46713
2014-05-13 18:40:31 +00:00
Nathan Gray
1ccc8f9e0d
Fix label DOM nodes so it works in columns other than the first one
2014-05-13 00:36:32 +00:00
Nathan Gray
777e1bec1e
Better handling for detached label, fixes errors if there is no label
2014-05-12 22:16:05 +00:00
Nathan Gray
b4b1eee57a
Expand what is accepted as a CSV for multi-select. Fixes Permanent time zone preference does not get saved.
2014-05-12 22:03:38 +00:00
Nathan Gray
34a382be2b
Implement detached labels
2014-05-12 21:49:48 +00:00
Nathan Gray
f5010b880b
Preserve expanded sub-grids across refresh
2014-05-12 19:29:00 +00:00
Hadi Nategh
e8e3de984a
Wrap content in link-add with span
2014-05-09 15:54:11 +00:00
Hadi Nategh
5b80563707
Consider other date widgets for date initialization as they could have fixed data_format too
2014-05-09 09:48:10 +00:00
Hadi Nategh
fbd35cba3f
No need to check oldValue as check for customfields condition is good enough, and it may cause other date widgets do not get parsed
2014-05-09 08:48:26 +00:00
Hadi Nategh
b6e2460e91
Set customfields "date" and "date-time" widgets value correctly when they get initiated by storage value
2014-05-08 17:48:54 +00:00
Hadi Nategh
82e259c407
Setup data_format customfileds "date" and "date-time" in client-side
2014-05-08 17:45:09 +00:00
Nathan Gray
c886f46122
- Listen to sub-template deferred to allow children of children to finish initializing (allows more complex sub-templates)
...
- Special case for sub-template filter having null value
- On sub-template input change, only update changed values instead of resetting & re-generating filters
Fixes some sub-template filters & col_filters conflicting and overwriting each other
2014-05-08 16:25:28 +00:00
Nathan Gray
609d1df763
Expose key splitting publicly, so other code can use it
2014-05-08 16:14:41 +00:00
Nathan Gray
6ec24b1b50
Make sure app ObjectManager is there before trying to use it
2014-05-07 20:55:34 +00:00
Nathan Gray
d80ef84012
Remove div from console, it's no longer useful
2014-05-07 16:35:51 +00:00
Ralf Becker
b111f5005b
fixed select-accounts show only part of users, caused by previously trying to extend now used array
2014-05-07 15:51:45 +00:00
Nathan Gray
354c030520
Work in progress on gantt chart:
...
- Gantt widget now supports context menu
2014-05-07 14:41:15 +00:00
Nathan Gray
30b300201e
Clear action manager, if present
2014-05-07 14:38:44 +00:00
Hadi Nategh
0691903105
Still need to translate empty_label in selectbox widget for cases like when we do have "options" as an extra item for select_options
2014-05-07 13:03:14 +00:00
Hadi Nategh
b3ebc04ae5
Fix missing "translate" sub-attribute for some other widgets "empty_label" attribute.
2014-05-07 12:23:02 +00:00
Hadi Nategh
c35968d4a6
No need to translate empty_label explicitly, as we have a "translate" sub-attribute to triger translation for an attribute
2014-05-07 12:12:25 +00:00
Hadi Nategh
a8278017ed
Fix missing translation for taglist's empty_label attribute
2014-05-07 11:06:47 +00:00
Nathan Gray
4f2504aafc
Fix typo
2014-05-06 20:05:08 +00:00
Nathan Gray
b76ace01f5
Revert r46820 as it causes some widgets (tag list) problems.
...
Fix select account changing selectbox default instead.
2014-05-06 19:56:02 +00:00
Nathan Gray
c99f0ee32d
Fix bug in last select option fallback option, was getting value instead of options
2014-05-05 22:17:23 +00:00
Nathan Gray
4053d1a204
- Move function to find selectbox options to public, static so other widgets (read only selectAccount) can use it
...
- Fix selectAccount missing extra app-specific options
2014-05-05 17:25:01 +00:00
Nathan Gray
e004e23c31
If the default is an object, use a clone of the default value to prevent widget from accidentally changing the default by reference
2014-05-05 17:22:25 +00:00
Hadi Nategh
62fa190439
Handle converting string date/time formats to Date object for date-time widget
2014-05-05 14:09:47 +00:00
Hadi Nategh
e85816cce9
Add button caption to vfs-select widget
2014-04-30 10:52:27 +00:00
Nathan Gray
d828eefaeb
Fix missing column filters after loading template(s)
2014-04-29 19:05:55 +00:00
Nathan Gray
785ed4e4c1
Round dates to grid scale, avoids potential infinite loop in the other method
2014-04-28 23:05:26 +00:00
Nathan Gray
1aee6f3bed
Enhance auto-popup to only show visible buttons
2014-04-28 20:20:54 +00:00
Hadi Nategh
c912849bd5
Apply favorites sortable feature to sidebox fav. menu
2014-04-25 07:37:11 +00:00
Hadi Nategh
334c66d203
Set select_options for <listbox> widget type of "select-account" with egw->accounts client-side method
2014-04-24 11:49:39 +00:00
Nathan Gray
ba8bfa1b6a
Gantt chart work in progress
...
Filters, ajax fetching, double click (edit) callback
2014-04-23 22:18:05 +00:00
Nathan Gray
4f2f64fcbe
Automatically disable custom field column if there are no custom fields
2014-04-23 20:39:22 +00:00
Nathan Gray
48fa6611f3
Use a single client-side cache for account selection so we don't have to send it for every widget
2014-04-23 19:00:59 +00:00
Nathan Gray
f5297f17a7
Add a get_value() function to allow access to values outside of callback
2014-04-23 16:44:01 +00:00
Hadi Nategh
54e241f468
Update instantly the sideBox fav. menu when sort items from nm fav. menu
2014-04-23 13:58:32 +00:00
Hadi Nategh
9805f019a1
* Favorites: Make favorites item sortable and store their orders as user preference
2014-04-23 11:42:48 +00:00
Nathan Gray
a8a73683b4
Fix missing explicitly supplied select options
2014-04-22 16:56:27 +00:00
Nathan Gray
7a674ff8aa
Don't add empty label as option for tags or search (chosen), it's registered as a real option.
2014-04-22 15:47:22 +00:00
Ralf Becker
f26a140a01
fixed search returns users, even if limited to groups
2014-04-17 12:24:03 +00:00
Nathan Gray
c4f56f2c3b
New dhtmlxGantt library, and etemplate2 widget to use it (work in progress)
2014-04-16 19:47:29 +00:00
Hadi Nategh
8fb542465f
Remove extra comment field from link widget, as we have another one in context menu
2014-04-15 11:34:50 +00:00
Nathan Gray
5720af761a
Avoid warnings about not listening for deferred loadingFinished
2014-04-08 21:22:07 +00:00
Nathan Gray
683310ba94
Add a new function activateTab(widget) to activate a tab containing a given widget, move previous code inside tab widget to properly encapsulate it. Fixes broken tab selection with deferred tab loading, wrong tab shown if a widget has a validation error.
2014-04-08 17:11:35 +00:00
Nathan Gray
8ca9f9a469
Store internal reference to CKEDITOR instance, fixes Uncaught TypeError: Cannot read property 'on' of undefined
2014-04-07 22:20:30 +00:00
Nathan Gray
1ca9b134f9
Fix typo causing extra selection after delete
2014-04-07 20:57:59 +00:00
Nathan Gray
2e72b12452
Only email addresses in mail app need the hover popup, so move it into mail app.
2014-04-07 19:25:17 +00:00
Nathan Gray
76357f3451
Fix no_filter[2] nextmatch attribute not applied when set in template
2014-04-07 19:07:10 +00:00
Nathan Gray
0f94764857
Don't do an email address hover in addressbook - they're already a contact if they're in addressbook
2014-04-07 16:18:56 +00:00
Nathan Gray
0c220389fb
Remove click handler from read-only account widget
2014-04-07 14:59:01 +00:00
Nathan Gray
99023a7812
If initial rows has no rows, add an empty row placeholder.
...
This way add context menu items work without clicking search first.
2014-04-07 14:44:52 +00:00
Nathan Gray
f6f2a883f0
If UID prefix is not set by the application, set dataStorePrefix automatically once and use it, instead of calculating it (different ways) each time.
2014-04-03 15:23:05 +00:00
Nathan Gray
1dcb1a9065
Fix bug causing long task to fetch the same 200 ids repeatedly
2014-04-03 14:33:01 +00:00
Nathan Gray
68ee717d0f
Fix occasionally missing click handler
2014-04-02 23:31:01 +00:00
Ralf Becker
ce3c5c897f
stop server-side validation errors, if submit was with no_validation
2014-04-02 19:30:33 +00:00
Nathan Gray
734b5d02f2
Add a parameter for submit() to skip the client-side widget validation
2014-04-02 18:49:43 +00:00
Nathan Gray
d5c810d5c4
If nextmatch starts hidden (or disabled) it won't size correctly.
...
Added a resize if enabling a disabled nextmatch so it re-calculates its size.
2014-04-02 15:16:12 +00:00
Nathan Gray
ad3e1e5021
Cast legacy options to string, in case someone passed in a number or something.
...
Fixes error loading tracker configuration with queue other than all.
2014-04-02 14:43:23 +00:00
Nathan Gray
210dea829b
Avoid big scary error if server tries to assign on an unloaded etemplate.
...
Log a little friendly warning instead.
2014-04-01 21:42:06 +00:00
Nathan Gray
0377dbe076
Use tree's ActionManager for new ObjectManager, fixes "Action object with id 'mail_drop_move' does not exist"
2014-04-01 21:32:06 +00:00
Nathan Gray
d3c0314b4d
Switch AJAX upload library to Resumable for chunked uploads.
2014-04-01 20:48:40 +00:00
Ralf Becker
e30adcba12
indention
2014-04-01 14:14:56 +00:00
Nathan Gray
de2f05ee27
If link is for just 1 id (normal case), then don't use an array for ID
2014-03-31 18:20:54 +00:00
Nathan Gray
dcf0cf4e95
If link is for just 1 id (normal case), then don't use an array for ID
2014-03-31 18:20:38 +00:00
Nathan Gray
9d8304a70e
Fix typo preventing proper display of custom field column for some templates
2014-03-31 17:26:10 +00:00
Nathan Gray
ae940d9174
Fix for nextmatch header setFilters()
...
- Add flag to prevent widget change events from triggering an applyFilters() call
Fixes custom date filters causing extra calls and resetting other column filters.
2014-03-31 15:49:36 +00:00
Ralf Becker
dfc5a8222e
using !egw.app(appname) to check if user has no run-rights for appname
2014-03-28 13:09:21 +00:00
Ralf Becker
61f25c05ff
fixed direct access to (not longer existing) egw.userData.apps[app] by using method egw.app(app)
2014-03-28 08:46:54 +00:00
Nathan Gray
5e6d19568d
Add a popup on hover to every read-only url-email widget.
...
Popup gives an option to add the email to a new contact
2014-03-26 23:25:43 +00:00
Nathan Gray
24fd900626
Fix multiple request problem
...
- actually pass delay to autocomplete, it works better that way
- track previous request, and abort it if another one needs to be started
2014-03-26 17:55:50 +00:00
Nathan Gray
869bf62108
Improve handling of changing actions in a nextmatch response:
...
- Also (re)set default action on new actions
- Avoid extra actionManagers
2014-03-26 14:55:06 +00:00
Nathan Gray
b93286a467
Don't call finish or change callbacks if upload fails
2014-03-25 21:03:35 +00:00
Nathan Gray
2f90f3d427
Fix changed actions only partially updated, missed _actionLinks in controller
2014-03-25 18:34:00 +00:00
Nathan Gray
7ef65b30d6
Fix expand_multiple_rows button to only be added once
2014-03-25 15:20:05 +00:00
Ralf Becker
7d7436e54b
fixed javascript errors happening if config was not loaded
2014-03-25 12:23:06 +00:00
Nathan Gray
2e6dea62d6
Fix some bugs in selectAccount with rows not set, but multiple on
...
- Fix opening single select search dialog instead of multiple (cleared previous selection on OK)
- Fix double user / groups in selected list
2014-03-24 20:20:25 +00:00
Nathan Gray
b16c32714a
- Some documentation
...
- Fix bug ignoring nextmatch-sortheader's sortmode attribute
2014-03-24 19:30:29 +00:00
Ralf Becker
bfac67cc17
fixed et2_number was not reacting on size attribute
2014-03-24 18:43:45 +00:00
Nathan Gray
b6cf2762c3
egw tooltips aren't supported in nextmatch rows, so set field title for custom field list when not shown as separate column. Also set data attributes, if anyone wants to try some fancy styling.
2014-03-24 18:00:09 +00:00
Klaus Leithoff
94ff3e1966
handle special egw-open param for nextmatch action when from=merge is involved (params meet different preconditions then)
2014-03-24 08:23:22 +00:00
Hadi Nategh
dd95ab16cc
* etemplate|widget_file: Make widget_file stylable
2014-03-21 16:27:09 +00:00
Ralf Becker
ac18b6cc8d
changed et2_core_inheritance.js to implement ClassWithAttributes extending Class from egw_inheritance and changed et2 objects to use ClassWithAttributes when required (also fixed lots of IDE warnings / added docu)
2014-03-20 09:40:37 +00:00
Nathan Gray
69f4d67d38
Test that the autorefresh timer is still going before binding, tab may have been closed
2014-03-19 20:11:03 +00:00
Nathan Gray
133c4a317c
Fix bug in using knownUIDs where empty rows were left or too many removed when the count changed
2014-03-19 19:19:34 +00:00
Ralf Becker
f2e997d445
replace first parameter "%1" with "%s", to allow to use regular lang syntax as well as eTemplate one
2014-03-19 12:39:10 +00:00
Nathan Gray
4a5d906e48
Enable using knownUIDs and lastModification timestamp to avoid sending unchanged rows back to client
2014-03-18 22:54:14 +00:00
Nathan Gray
3f49db5fb9
Handle values set but not in select_options
2014-03-18 14:52:31 +00:00
Ralf Becker
f1d7dd7a0e
fixed readonly selecbox not always found options, caused by it not expecting options to be an array. Now we always preserv type of options (array or object) and correctly iterate over them when trying to find an option by its value
2014-03-18 14:41:23 +00:00
Ralf Becker
eaaad85521
reverted r42883: Make sure there is a "None" option if the select-account is not required so user is not forced to pick an account
...
--> if "None" option is wanted, it should be added to template, that is the logic in regular select box too
2014-03-18 13:22:15 +00:00
Nathan Gray
b0db615411
- Fix taglist account infinite loop when looking for accounts (using link title system instead of data source)
...
- Don't search server side if there's no query string
2014-03-17 23:03:24 +00:00
Nathan Gray
f337d45b29
Fix taglist-account not suggesting anything by making sure select_options don't get set.
2014-03-17 20:24:34 +00:00
Ralf Becker
250d2f813a
fixed wrong autocomple url cauased by webserver_url just "/egroupware" and set more reasonable default of allowFreeEntries: false for taglist-accounts
2014-03-17 15:29:58 +00:00
Nathan Gray
fe21f0fd74
Enhance nextmatch entryheader to return full value if it's anything more than a simple, single selection so we can handle it server side.
2014-03-13 18:58:59 +00:00
Nathan Gray
a0caff3b6a
Javascript split() doesn't work like PHP explode() - fixed to not lose extras
2014-03-13 18:56:51 +00:00
Ralf Becker
5e74e836f7
fixed wrong augmented class
2014-03-12 18:49:50 +00:00
Ralf Becker
6b09e93768
adding et2_url_span class to surrounding span
2014-03-12 18:48:59 +00:00
Nathan Gray
1c6abab9a8
Fix link activation to be able to handle the same link (or email address) multiple times in the content
2014-03-12 18:28:47 +00:00
Ralf Becker
46d4d3acce
allow to optional prepend tabs by using prepend attribute on a tab in tabs array
2014-03-12 17:54:52 +00:00
Ralf Becker
ee97185b40
allow to specifiy optional cache-buster in template attribute ("?"+filemtime of template)
2014-03-12 17:42:29 +00:00
Nathan Gray
5f1dcfea57
Unbind handler used to toggle autorefresh
2014-03-12 17:09:56 +00:00
Hadi Nategh
8b326fb60f
Move styling of date-durtation widget input field to specific class in etemplate2.css
2014-03-12 13:13:18 +00:00
Ralf Becker
db1244dc50
put favorites, counter and new header_row into one container (header_row_right) to float them all to the right, also removed lots of unnecessary css and fixed alignment
2014-03-12 09:47:40 +00:00
Nathan Gray
e7de92519a
- Restructure nextmatch header markup
...
- Add new attribute header_row to place custom template inline inside nextmatch header
2014-03-11 21:54:19 +00:00
Nathan Gray
a1ae0bdb83
Add new method etemplate2.getById() to get etemplate object by DOM ID of container node
2014-03-11 15:28:18 +00:00
Ralf Becker
7bda46582d
changed toolbar to have last action.id as value, when submitted to server
2014-03-10 21:14:02 +00:00
Ralf Becker
94f468095d
disable favories dropdown button if not called from infolog (eg. CRM view)
2014-03-10 19:47:09 +00:00
Hadi Nategh
c43550a54b
Add proper css class to date-duration widget
2014-03-10 15:20:40 +00:00
Ralf Becker
f55641e23a
do NOT show required color on td, we want it just on input
2014-03-10 15:08:18 +00:00
Ralf Becker
83b20c2019
some changes to dtd and added otherwise implemented "readonly" attribute to inputWidget
2014-03-07 09:08:47 +00:00
Nathan Gray
96bc660ee3
Clear filters before applying header changes, to handle the case of nulled input, which would otherwise be skipped, and the old value filled in.
2014-03-06 22:09:40 +00:00
Nathan Gray
8a3cda964e
Fix clearing date field does not fire change event
2014-03-06 21:17:37 +00:00
Ralf Becker
ee50a6b9bb
fix to work correctly with actions containing only a string/caption, using action.execute() to get automatic confirmation from action system and defaulting to default actions (not all actions) if last action is dragged off
2014-03-06 18:38:02 +00:00
Ralf Becker
06ffa47c25
new "default_execute" attribute to set default onExecute for all actions
2014-03-06 18:35:57 +00:00
Nathan Gray
dbbad57f90
Fix selecting next entry when there are no others
2014-03-06 18:07:47 +00:00
Ralf Becker
5facfc02a1
fixed IDE warnings
2014-03-06 11:01:23 +00:00
Ralf Becker
6cdea51c9e
when activating mailto-links/email addresses use mail app unless (addressbook-)preference says otherwise
2014-03-06 10:42:37 +00:00
Ralf Becker
f68a2ac1f5
fixed link activation in et2_description (activate_links parameter) to always use target _blank, also fixed docu in that extra_link_target is only for href attribute
2014-03-06 10:41:22 +00:00
Ralf Becker
e41fbe59ff
using current app, if no or empty source given
2014-03-06 07:50:06 +00:00
Nathan Gray
5fa9a9c0d0
If categories get updated in a get_rows() call, clear the rowProvider internal cache so it uses the new values
2014-03-05 17:21:13 +00:00
Nathan Gray
bb3eb717c1
Refactor huge data fetch into chunks so long task doesn't die.
2014-03-04 20:35:41 +00:00
Ralf Becker
99e97d2bfc
fixed Selecting an InfoLog category does not show this cat but "Loading"
2014-03-04 17:27:19 +00:00
Ralf Becker
3e13b3f77b
use app[appname].setState if available to allow app to overwrite it (eg. change to non-listview in calendar)
2014-03-04 17:00:27 +00:00
Ralf Becker
84c611cb2c
fixed click on favorite (funnel) always resets all filters, not change to default favorite selected via radio buttons
2014-03-04 16:27:20 +00:00
Ralf Becker
947c2f0462
not visible nextmatch will run refresh when it becomes visible again (not just ignoring it)
2014-03-04 16:05:38 +00:00
Ralf Becker
ef7c2e5faa
fix IDE warnings
2014-03-04 15:08:34 +00:00
Ralf Becker
5af397132a
fixed opening of addressbook entries sometimes fails after searching: caused by not detected filter change and kept, but no longer displayed selection
...
JSON.stringify(this.controller._filters) == JSON.stringify(this.activeFilters) seems always true, like if it is a reference and not the old state
changed code not to change activeFilters only by calling applyFilters with requested change and detecting there if we have a change
2014-03-04 13:49:33 +00:00
Hadi Nategh
1e449f571a
Bind a click handler to collapse the toolbar menulist when click event occurs
2014-03-04 11:03:03 +00:00
Nathan Gray
5abc2eceef
Fix broken delete of link when to_id is not set (not saved entry)
2014-03-04 00:26:42 +00:00
Nathan Gray
d2b2f71058
If select all + long task, fetch all from the server or else it will just run on what's in the grid.
2014-03-03 23:24:05 +00:00
Nathan Gray
38e6e353fd
Avoid error when clicking on a link with just title
2014-03-03 22:29:44 +00:00