Nathan Gray
dc01c61793
Fix up order of operations in link widget to stop setting value too early
...
Fixes "false" as text when value is provided in app:id format
2013-10-24 16:04:44 +00:00
Ralf Becker
32e033df6f
* PostgreSQL/Addressbook: fixed SQL error when sorting by a custom field
2013-10-24 14:57:36 +00:00
Nathan Gray
5923aed2a8
Make link widget last selected app preference specific to each application
2013-10-23 19:51:43 +00:00
Nathan Gray
550604017e
Make sure original buttons don't show in auto dialog
2013-10-22 22:43:14 +00:00
Nathan Gray
ea79585b23
Pre-set min-width of auto-dialog to honor specific sizing
2013-10-22 22:03:31 +00:00
Nathan Gray
a81aaefbe3
Fix selectbox with array value not getting set
2013-10-22 21:18:45 +00:00
Nathan Gray
ab4873553b
- Add in any missing filter/left/right header select options from favorites or other changes instead of rejecting. Server side get_rows is responsible for actually providing the missing option(s)
...
- Propagate changed exec_id to controller
2013-10-21 22:23:02 +00:00
Nathan Gray
a5e0ee9cd0
Fix broken warning about setting value not in options
2013-10-21 22:20:18 +00:00
Nathan Gray
52a7acfc55
- Don't change template if new is the same as current
...
- Create header in init(), now that not-loaded templates are handled
- Update nm left/right header input widgets' old value when filtering
2013-10-21 18:02:02 +00:00
Nathan Gray
788483043d
Set activeFilters to match value in left/right header when binding to change so favorites pick up header values set by server
2013-10-21 17:28:08 +00:00
Nathan Gray
2524de6c74
Add link now remembers you last selected app
2013-10-21 16:32:07 +00:00
Nathan Gray
c25d73b435
Change link widget from edit to view, pass the parameters needed to open in the app's tab or popup, according to link registry
2013-10-21 15:39:09 +00:00
Nathan Gray
3298e69d92
Change some more regexes to match all
2013-10-21 15:16:12 +00:00
Nathan Gray
77e2849895
Add et2_grid.set_value() to re-create a grid (including auto-repeat).
...
Pass an object with key/value pairs to update the grid's array managers (content,sel_options,readonlys).
The grid will then be re-created (not updated) using the template.
2013-10-18 23:24:49 +00:00
Klaus Leithoff
4dbda94f6a
implement set_class for progress widget; preserve widgets base classes, if we do so
2013-10-18 09:47:29 +00:00
Klaus Leithoff
2435e925ae
implement set_class for progress widget
2013-10-18 08:50:53 +00:00
Nathan Gray
5fab641aef
- Get eroles displaying in element list
...
- Remove unused js file
2013-10-17 17:02:36 +00:00
Nathan Gray
10f3665853
If there is no template specified, resolve immediately
2013-10-17 15:23:33 +00:00
Ralf Becker
056e5680b8
make sure to load all cfs, if "customfield" in in selected columns
2013-10-17 14:08:54 +00:00
Ralf Becker
3124a8c3f3
allow to use "about:*" or urls starting with / in set_value
2013-10-17 13:14:22 +00:00
Nathan Gray
4d35323f52
- More checks for sub-template referred to by partial name
...
- Fix sub-template modifications missed if namespace mismatch
2013-10-16 23:16:29 +00:00
Nathan Gray
d271990b84
Prevent creating multiple sub-widgets if doLoadingFinished() is called more than once (eg in nextmatch header)
2013-10-16 22:39:41 +00:00
Nathan Gray
4002907c05
Use jQuery's Deferred to solve the deferred loading problem instead of load events.
2013-10-16 20:48:05 +00:00
Ralf Becker
f10fc199a0
reverted only binding if onclick method is set to allways bind again (because eg. et2_button needs bind and fails to work) and only setting et2_clickable, if we have an onclick
2013-10-16 15:04:52 +00:00
Ralf Becker
d1a2b89815
only bind click event if we have a handler and add et2_clickable css class so user knows widget is clickable
2013-10-16 09:17:51 +00:00
Ralf Becker
38504680b7
setting CSP attributes needed by CKeditor now automatic when egw_ckeditor_config::get_ckeditor_config(_array) get called
2013-10-14 10:42:36 +00:00
Klaus Leithoff
ceb20da716
fix preset of taglist value
2013-10-14 08:37:49 +00:00
Ralf Becker
6f5207953e
* PostgreSQL/ProjectManager: fixed SQL error "pm_id is ambigues" when accessing /apps/projectmanager via filemanager
...
instead of aliased primary key, we have to use original column incl. table-name as alias is ambigues
2013-10-14 07:53:13 +00:00
Nathan Gray
b77ce6a8dc
- MagicSuggest update
...
- Fix setting taglist value via js
2013-10-11 14:38:04 +00:00
Nathan Gray
f73f8fea89
Update email regex to allow:
...
Nathan Gray <ng.dot@email.com>
2013-10-11 14:35:13 +00:00
Klaus Leithoff
44e995abea
provide a tooltip on vfs select button icon
2013-10-11 13:48:50 +00:00
Klaus Leithoff
78e3371a2b
set action.caption as tooltip, and provide an applicable class for item images
2013-10-11 13:34:35 +00:00
Klaus Leithoff
d961343939
set action.caption as tooltip, and provide an applicable class for item images
2013-10-11 13:34:17 +00:00
Ralf Becker
200c9e55fe
dont replace value&label "" with empty_label, as empty_label is allways added, ignoring it here, to not add it twice
2013-10-11 13:02:22 +00:00
Ralf Becker
c6a97da311
fixed changes in get_rows method were not send back to client, if PHP mcrypt is available / eTemplate request stored on client
2013-10-11 11:20:21 +00:00
Ralf Becker
3c80defe8b
fixed setFilter to correctly return all current filter-values in its 1. parameter this.activeFilters
2013-10-11 09:55:12 +00:00
Nathan Gray
a30b656865
Fully support linking before entry is saved
2013-10-11 08:41:24 +00:00
Nathan Gray
8912d029a4
UI to support links on unsaved entries
2013-10-10 17:00:30 +00:00
Nathan Gray
33a7534299
Include offending widget in attribute type mismatch warning
2013-10-10 14:52:48 +00:00
Nathan Gray
e6f58c4d4b
- Fix value rejecting array
...
- Better handling of no comment (null) on link
2013-10-10 14:43:54 +00:00
Ralf Becker
046aab4000
re-add css class "row" to every grid row to get row-cursor back
2013-10-10 13:37:30 +00:00
Nathan Gray
398a8eed25
Event handler attributes:
...
- default to et2_no_init so they don't get processed if not set
- remove some duplication in attributes
2013-10-10 13:17:07 +00:00
Nathan Gray
0d7f213c7d
No longer need to change onchange here, client side does it
2013-10-10 13:12:33 +00:00
Nathan Gray
22b5ed587f
Improve error message to make sure we get the error message
2013-10-10 12:32:34 +00:00
Nathan Gray
eda4d2a3f6
Some extra resize bits to make sure everything gets resized:
...
- Resize the grid (resizes the column headers)
- Re-initialize the dynheight, just in case something changed
2013-10-10 12:25:29 +00:00
Nathan Gray
09693fc761
Remove inline javascript to file
2013-10-10 11:58:19 +00:00
Nathan Gray
9fe3bda432
- Don't try to translate config
...
- Better error message if destroying CKEDITOR fails
- Handle failing destroy, and make sure widget is completely removed
2013-10-10 11:57:18 +00:00
Ralf Becker
0e2e88c19b
fixed hiearchy display in infolog and reset of subs view via clicking on InfoLog icon/header, using now value of nm[parent_id] as key for col_filter
2013-10-10 11:29:31 +00:00
Ralf Becker
60049dd085
fixed error stalling filemanager: can not read property _parent of undefined
2013-10-10 11:23:32 +00:00
Ralf Becker
24e3fb2e63
fix "Got invalid title request, by NOT sending empty requests" warnings
2013-10-10 10:49:41 +00:00
Ralf Becker
ece1062b8b
fixed not translated empty_label in selectAccount or nextmatchAccountFilter: they always get translated independent of no_lang attribute
2013-10-10 10:23:37 +00:00
Ralf Becker
12717741e4
load app translations on ajax-submit too
2013-10-10 09:32:25 +00:00
Klaus Leithoff
2a61ac9264
allow to pass config/validation rules to current purifying engine (HTMLawed)
2013-10-10 09:30:25 +00:00
Ralf Becker
47c3495a86
appending modification time to eTemplate url
2013-10-10 08:19:20 +00:00
Nathan Gray
f12ab66b07
Ok, changing nextmatch row template via ajax should work now.
2013-10-09 17:33:29 +00:00
Nathan Gray
da6d3d2d19
Also ignore total, or it will reset the normal method of setting it...
2013-10-09 17:32:28 +00:00
Ralf Becker
be0530936c
fixed taglist focus and click events to adhere to new event signature
2013-10-09 17:29:36 +00:00
Nathan Gray
26f75a241b
Make sure context is the widget when calling setters
2013-10-09 17:15:44 +00:00
Nathan Gray
1e8e86fe23
- More consistent firing of load event, so templates can be handled the same if the template has to be fetched or it's already there
...
- Caching of fetched templates in the instance manager
2013-10-09 17:14:59 +00:00
Ralf Becker
f40f41a7d4
set_value now iterates over all radioboxes with same id and (un)checks them depending on given value, DOM-id get now set_value appended to be unique
2013-10-09 16:22:35 +00:00
Nathan Gray
17c933cded
Better handling of binding change handlers to async loaded header templates
2013-10-09 15:14:25 +00:00
Ralf Becker
0163442f37
changed signature of on* event handlers: 1. event, 2. widget (context is DOM node), event handlers have now type "js" in attribute description and get automatic converted to a function, no more need to call et2_compileLegacyJS
2013-10-09 14:35:03 +00:00
Nathan Gray
17e8fa094d
Support changing nextmatch template after initial load (ie: in get_rows callback)
2013-10-09 14:11:44 +00:00
Nathan Gray
df660bea3c
Better handling of doLoadingFinished and firing load event:
...
- don't fire while still loading
- prevent trying to load children before template is actually loaded from file
2013-10-09 14:10:33 +00:00
Nathan Gray
daf55af475
Don't try to resize if the columns are not set yet - there's nothing to resize
2013-10-09 14:05:05 +00:00
Nathan Gray
d22489e23b
Make sure callback is there before trying to call it. If the template changes before the timeout fires, it might not be.
2013-10-09 13:07:29 +00:00
Nathan Gray
fde83c834e
Register an AJAX handler for assign response type. Needs exec_id, widget ID, attribute name and value. Widget must support setting that attribute.
2013-10-09 12:56:49 +00:00
Nathan Gray
bfe208c013
Make sure favorite group widget gets cleaned up
2013-10-09 12:14:36 +00:00
Ralf Becker
3c0743cb97
implemented onfocus event for input-widgets, tested with textbox and taglist, others more complex input-widgets probably need to proxy the event
2013-10-09 09:05:30 +00:00
Ralf Becker
f46754cd1a
remove href="javascript:void(0)" in favor of href="#" working with CSP
2013-10-08 10:08:09 +00:00
Ralf Becker
bafcc80e35
fixed translations not loaded on very first request, as postponing ready for waiting on translations did not work, now using a direct callback instead
2013-10-08 08:55:15 +00:00
Nathan Gray
1a4a4fdded
Always set value, not just title, in nextmatch so link gets updated
2013-10-08 08:26:59 +00:00
Nathan Gray
3816abc7a7
Fix %s in label of link widget
2013-10-08 08:19:42 +00:00
Nathan Gray
5c8c51c77d
Always set label, avoids label not being set properly in nextmatch
2013-10-08 08:14:24 +00:00
Nathan Gray
52f269717e
Fix %s in labels in nextmatch rows
2013-10-08 07:46:44 +00:00
Ralf Becker
0bb8093426
fixed translations on client-side: server sends now currentapp and langRequire to client, which uses that to translate phrases, langRequire is only stored in egw object for matching app-name and window!
2013-10-07 17:00:03 +00:00
Ralf Becker
147e469b02
missed docu-update on postSubmit
2013-10-07 16:12:04 +00:00
Ralf Becker
b7d6d4266e
quite some warning
2013-10-07 16:11:25 +00:00
Nathan Gray
764bde5bff
Fix broken set_value() to properly accept strings as value, fix broken adding of free entries
2013-10-07 10:10:54 +00:00
Nathan Gray
a190cd7302
Remove javascript:void() href to comply with CSP
2013-10-07 10:05:51 +00:00
Nathan Gray
869ebc3ca5
- Respect force_mailto preference
...
- If force_mailto is not set, open in a new window instead of current
2013-10-07 09:48:17 +00:00
Hadi Nategh
54ab073cab
Fix et2_checkbox_ro widget for exceptional cases when we pass value as Non-Boolean
2013-10-05 14:04:10 +00:00
Ralf Becker
43e1bfcc12
switching on Content-Security-Policy: script-src 'self' 'unsafe-eval' for all templates, old non-et2 apps can call egw_framework::csp_script_src_attrs('unsafe-inline') to enable inline scripts in their scope, et2 does it for CK editor which does not support CSP currently and old etemplate does it for all apps using it
2013-10-05 13:33:28 +00:00
Nathan Gray
9b9a1df8a3
Use egw.open_link() to open popups so they can be tracked, if they have a target.
2013-10-05 09:40:00 +00:00
Ralf Becker
ec2de1c7e6
replace unnecessary post submits with regular ajax submits, also added a couple more todos
2013-10-04 14:43:56 +00:00
Nathan Gray
5d746529a7
Documentation update
2013-10-04 13:25:05 +00:00
Hadi Nategh
da42c28e57
Fix grid with auto-repeat rows
2013-10-04 13:03:58 +00:00
Ralf Becker
6e30816758
fixed not working download via action system: needed submit via POST request instead of Ajax, add new boolean action attribute postSubmit
2013-10-04 12:48:11 +00:00
Nathan Gray
5d1a8e16ee
Fire change event when input is changed via code
2013-10-04 10:07:34 +00:00
Nathan Gray
4c1dd51f0a
Fix another occurrence of search icon still using jQueryUI icon
2013-10-04 07:38:34 +00:00
Nathan Gray
7cda6a630b
Add a toolbar widget that displays its actions as a toolbar
2013-10-04 07:29:38 +00:00
Nathan Gray
70b8496310
Handle more complicated select_options style options, including icons.
2013-10-04 07:21:19 +00:00
Ralf Becker
dad39e1d8a
moved all confirmation to api egw_actions and changed select_all to depend on all visible rows selected (Ctrl-A)
2013-10-03 15:30:27 +00:00
Ralf Becker
d7f37f5c2d
fixed not displayed icon, when using et2_dialog.show_dialog(), fixed set_message to allow only plain text
2013-10-03 15:27:00 +00:00
Nathan Gray
ef884aa1cd
Try for a more local parent node than window to get better sizing, explicitly resize child nodes
2013-10-03 12:56:29 +00:00
Nathan Gray
0c0dc2c943
Just re-ordering for better readability
2013-10-03 12:53:58 +00:00
Nathan Gray
3d1bdceaac
Deal with rounding errors etc. so columns always take full width, and some bounds checking in case things go horribly wrong.
2013-10-03 12:52:58 +00:00
Ralf Becker
5778c9d964
fixed egw_framework::message($msg, $msg_type) was not displayed on ajax-load, eg. regular et2 submit
2013-10-03 09:09:24 +00:00
Nathan Gray
c4fc4699a4
Paul's fix for annoying link title error popping up
2013-10-03 07:12:53 +00:00
Nathan Gray
499c9f3c22
Avoid infinite heights in case there is nothing below
2013-10-02 13:11:07 +00:00
Nathan Gray
d8ae1a63a4
Nicer default styling for image buttons, and default vertical alignment for hboxes
2013-10-02 13:03:16 +00:00
Nathan Gray
29f8a562e2
Better usage for relative column width:
...
- Columns with relative width specified in template are kept relative in resize
- Columns with no width specified in template get any left over space (relative)
- Columns with fixed width specified in template are kept fixed
These three together mean that if the user resizes the window or adds/removes columns, fixed columns don't change and any space is divided among relative columns.
2013-10-02 12:43:30 +00:00
Nathan Gray
6e8723361d
Fix typos
2013-10-02 11:34:11 +00:00
Nathan Gray
e57e994e9d
Works better if I define the var
2013-10-01 17:07:08 +00:00
Nathan Gray
b6ea2635d2
Handle onchange in the same way as onclick - check if it's a real function first
2013-10-01 17:03:03 +00:00
Nathan Gray
791bf29e60
Some better handling of app.appname.funcname style onclick / onchange when set in the template
2013-10-01 16:52:38 +00:00
Nathan Gray
4449e9a44b
Override the correct function
2013-10-01 15:52:25 +00:00
Nathan Gray
a8136aa191
Give filemanager selection a widget front-end.
2013-10-01 15:40:14 +00:00
Nathan Gray
e2bc78b9e3
Make sure we don't lose widget context
2013-10-01 15:31:11 +00:00
Hadi Nategh
2445bfc22b
Fix the regular expresion to get the right key for nested Ids using [], textbox_widget
2013-10-01 15:06:56 +00:00
Nathan Gray
bc6acd4a3e
Mix preserved arrays replacing new arrays when new array is empty
2013-10-01 09:20:23 +00:00
Nathan Gray
52d339305e
Default placeholder actions to "add" if not otherwise specified. Allows 'Add' action by default when no records shown in nextmatch.
2013-10-01 07:40:20 +00:00
Nathan Gray
83741673c3
Fix account/group select search dialog
...
- Broken group expansion
- Broken styling / indents
- Use unique IDs & data-id for account ID
2013-09-30 16:54:25 +00:00
Nathan Gray
28c2737c9f
Change multi-select header styling:
...
- Change icons from jQueryUI to egw
- Stop hiding header when not needed, always show
- Don't visually distinguish header
- Don't float right icons, leave them between checkbox and label
2013-09-30 15:39:36 +00:00
Nathan Gray
db1077e3ed
Fix extra change event firing which was breaking multiple file uploads
2013-09-25 15:52:42 +00:00
Nathan Gray
9039200578
- Handle complicated/nested IDs in left/right headers (eg col_filter[tr_tracker])
...
- Handle left/right headers loaded async from server when setting up handlers
2013-09-19 20:39:17 +00:00
Nathan Gray
c19f95ded8
For multiselectboxes, we need to do an array comparison for dirty, or it will always fail (be dirty)
2013-09-19 20:37:17 +00:00
Nathan Gray
3cfbcc8cf1
Trigger a load event when the template is loaded, to make it easier to work with the template when it is loaded from the server
2013-09-19 19:31:56 +00:00
Nathan Gray
1bdd5eb617
Size chosen selectboxes even if they are hidden - prevents 0 width chosen selects
2013-09-18 20:15:11 +00:00
Nathan Gray
8b01daa120
Fix selecting tab by passing in value
2013-09-18 18:01:52 +00:00
Nathan Gray
407efdbcaf
Some chosen parameters:
...
- Inherit classes from select
- Search within, not just at start
2013-09-17 16:22:51 +00:00
Nathan Gray
8f91781933
Change nextmatch actions to use ajax submit, not post
2013-09-16 15:20:22 +00:00
Hadi Nategh
8cdbbe67fc
fix et2-> nm_open_popup error,"undefined method getInstanceManager", in et2_extension_nextmatch_actions
2013-09-16 10:40:19 +00:00
Hadi Nategh
5517a29d47
Fix datepicker error,"hour is undefined" from et2_widget_date
2013-09-13 13:06:46 +00:00
Hadi Nategh
c1683552ba
et2_widget_date-> datetime:Fix replacement of entered time manually with actuall time
2013-09-12 11:45:26 +00:00
Nathan Gray
871f63a9f2
Additional checks on autorepeat fallback
...
- Better handling of the different accepted indirect placeholders
- Add a check & error to prevent infinite loops (or crazy large grids)
2013-09-10 23:25:51 +00:00
Nathan Gray
02c6f3b108
Remove some more references to phpgwapi/js/egw_json.js
2013-09-10 18:56:50 +00:00
Nathan Gray
dcfcec3ab1
Put checkbox before label by default
2013-09-10 18:39:31 +00:00
Nathan Gray
3ae18c9a78
- Use a et2_dialog over native prompt for editing comments
...
- Use jsapi's egw.json() for ajax
2013-09-10 17:57:41 +00:00
Nathan Gray
ca54de9e2c
Use jsapi's egw.ajaxURL()
2013-09-10 17:55:05 +00:00
Nathan Gray
8105242434
Favorites fixes
...
- Fixes for multiple favorites on the page at the same time (multiple et2 apps)
- Use egw.json() calls
2013-09-10 17:06:15 +00:00
Nathan Gray
4996c584b3
Use a different method to avoid special expansion breaking nextmatch - skip it for grids inside a nextmatch.
2013-09-10 16:09:12 +00:00
Ralf Becker
256b888124
fix for templates containing no bottomNodes
2013-09-10 14:40:19 +00:00
Klaus Leithoff
8667f81010
change handling of progress attribute; only XET-ids work, when fetched with getWidgetById and widget.getDomNode (it may not be available at creation time, so we (re)check on createStatus time)
2013-09-10 12:57:40 +00:00
Klaus Leithoff
355ffbbb9b
change handling of progress attribute; only XET-ids work, when fetched with getWidgetById and widget.getDomNode
2013-09-10 08:08:47 +00:00
Nathan Gray
9192652877
Let progress attribute be a widget ID or the ID of a specific DOM node
2013-09-09 22:04:48 +00:00
Nathan Gray
7b9b5efe7f
Apparently expandName() can also return null - handle that too
2013-09-09 21:39:31 +00:00
Nathan Gray
2087aed7a3
Check to see if the substitution actually got something, or we could wreck the nextmatch rows.
2013-09-09 19:16:05 +00:00
Nathan Gray
230472d256
Change auto-repeat detection to additionally look through widgets for IDs like const[$row] when there is no row content
2013-09-09 18:52:11 +00:00
Nathan Gray
bfef97c8fc
Documentation correction
2013-09-09 18:42:51 +00:00
Nathan Gray
b485b57785
Fix for hidden old popups breaking application height. Still not perfect in idots, but much better.
2013-09-05 21:51:47 +00:00
Ralf Becker
1590d02816
new egw_framework::message($msg, $msg_type="success") method and fixing nextmatch filter-change to return app-header
2013-09-05 11:53:25 +00:00
Nathan Gray
b1aca92a9e
Merge egw_jsons - use api egw.ajaxUrl()
2013-09-04 23:30:29 +00:00
Nathan Gray
c2c5337bd2
Save a little trouble by using the global egw.preferences() directly
2013-09-04 23:20:44 +00:00
Ralf Becker
1f8e0e9e41
global method egw_message(_msg, _type) to display success-, warning- or error-messages in app-header
2013-09-04 19:02:34 +00:00
Ralf Becker
9d29c16c3a
fixed no footer (eg. closing body and html tag) in jdots template, because etemplate2 (unneccessary) calls footer, but ignores its return value
2013-09-04 13:50:37 +00:00
Ralf Becker
baaaf5b877
static method to get app-names as options, as from the widget itself
2013-09-04 13:48:22 +00:00
Klaus Leithoff
74ec0f6651
fix some issues for file upload type validation
2013-09-04 09:03:54 +00:00
Nathan Gray
c53943aa76
Another try to avoid jQueryUI error about not created menu
2013-09-03 21:25:50 +00:00
Klaus Leithoff
3bc322690e
throw exception if no name is given for instanciation of template
2013-09-02 12:51:53 +00:00
Klaus Leithoff
d5613a51fe
swap haystack and needle, as they seem in wrong order for the purpose at hand
2013-09-02 07:52:57 +00:00
Nathan Gray
dc46ebed05
Avoid jQueryUI error about not created menu
2013-08-30 16:27:34 +00:00
Nathan Gray
4760b5f55e
Keep column filters & sort of different nextmatches separate
2013-08-30 16:26:54 +00:00
Ralf Becker
65ef45630b
change send_notifications to always restore modifications on user-enviroment, before returning
2013-08-30 13:48:47 +00:00
Klaus Leithoff
7744905ba8
try to resolve a use-session-stored-data related problem; make sure account_id and prefs are restored after send_notification
2013-08-30 12:57:51 +00:00
Ralf Becker
ecf440ed57
fixed SQL error caused by so_sql prefixing 0 with table name
2013-08-29 13:28:08 +00:00
Ralf Becker
b6013305f7
always replace dots with dashes in DOM id
2013-08-29 12:10:06 +00:00
Ralf Becker
a4ec8796af
* Timesheet/PostgreSQL: fix SQL error when selecting a timerange
2013-08-29 10:59:00 +00:00
Nathan Gray
eb989ed98b
Hold Ctrl key to drag a file from filemanager to system folder / desktop
...
Restricted to Chrome only, one file at a time, folders don't work well.
This uses Chrome-only DownloadURL, so other browser support is unlikely.
2013-08-28 22:31:14 +00:00
Ralf Becker
020d6d9394
replace all .
2013-08-28 14:43:27 +00:00
Ralf Becker
a74795387e
replace . in template-ids with - to simplify css usage, as we do it the unique id already
2013-08-28 14:24:01 +00:00
Ralf Becker
ee843a5f02
can not set undefined from server side, only null, therefore allowing that as argument for id in egw_refresh
2013-08-28 12:50:49 +00:00
Ralf Becker
b42b0a9e21
new option to to show only enabled apps (ones which users can get run-rights for) in select-apps
2013-08-28 10:07:24 +00:00
Ralf Becker
c12c53bcb8
support getting app from "app_something::method" get_rows method
2013-08-28 06:59:06 +00:00
Nathan Gray
36021f5d13
Drag & drop files from user's system onto nextmatch row now working with sub-grids too
2013-08-27 20:24:55 +00:00
Nathan Gray
6028ac8eca
Drag & drop files from user's system onto nextmatch row uploads & links file to that row
2013-08-27 17:26:02 +00:00
Nathan Gray
4e2843b4a1
Implement set_value() to accept a list of files, which triggers the async upload and callbacks
2013-08-27 17:20:08 +00:00
Nathan Gray
3d12c2b591
Add namespace to drop event bindings to easily remove only the ones the widget added.
2013-08-27 16:29:13 +00:00
Klaus Leithoff
4874e671ff
commit some french lang file stuff; provided by Thomas Chaillot, Spirea
2013-08-27 08:54:00 +00:00
Nathan Gray
2875455a59
Avoid error if menu was not created
2013-08-26 23:29:52 +00:00
Nathan Gray
5a5b02c304
Remove HTML from title in example - jQueryUI changed to text() so HTML no longer works
2013-08-26 19:10:26 +00:00
Nathan Gray
4fa0370ce4
Avoid error if div has no ID (eg: dialog)
2013-08-26 19:08:02 +00:00
Nathan Gray
838966ae9e
Properly fix date-timeonly js side to return a timestamp as all date widgets, server side converts it to expected format, same as others.
2013-08-26 17:04:43 +00:00
Nathan Gray
3b65d807ba
Better handling for disabled columns.
...
Disabled grid columns don't create widgets, which caused the nm issues as it expected a widget in each cell.
2013-08-26 16:42:49 +00:00
Ralf Becker
aa8a848871
optional parameter for egw_framework::window_close() to specify an alert message, which get shown/alerted, before closing the window
2013-08-26 10:24:11 +00:00
Ralf Becker
0de6ab1b35
fix not working timesheet status and category actions: "disableClass", "enableClass" and "enableId" are now handled by action system itself, one should not set an explicit "enabled" attribute anymore
2013-08-26 08:24:50 +00:00
Ralf Becker
d8984be747
isDirty() method for whole template / etemplate2 object, thought it needs more work in widgets, not setting this._oldValue in their set_value() method
2013-08-23 15:15:30 +00:00
Ralf Becker
f4e1db3a68
fixed htmlarea not returning any content caused by prefixed DOM id, now all DOMwidgets have their DOM id available via this.dom_id set via this.set_id()
2013-08-23 14:10:37 +00:00
Ralf Becker
3bbfb8574b
fixed wrong brackets causing run method not to decend into NOT disabled widgets
2013-08-23 13:00:13 +00:00
Nathan Gray
f94d213a91
Add stack trace to problem widget report so we can actually track down the problem
2013-08-21 17:18:40 +00:00
Nathan Gray
8c5cc3ca22
Fix favorites sidebox menu going missing - caused by jQueryUI CSS change
2013-08-21 16:02:24 +00:00
Nathan Gray
eb1be53297
Fix bad value in selectbox 'blank' option
2013-08-21 15:59:42 +00:00
Nathan Gray
c1be84c912
Some layout changes to get autocomplete (link widget, select users) working in dialogs too
2013-08-20 23:08:35 +00:00
Nathan Gray
17e8d00054
Fix up nm_action open_popup to match et2 unique ID changes
2013-08-20 22:23:18 +00:00
Nathan Gray
62d42c83da
Some documentation, add ability to set value rather than hacking up getValue() (actions)
2013-08-20 18:49:38 +00:00
Nathan Gray
dba3bcc2aa
Update timepicker, some work on date-timeonly so it returns a value
2013-08-20 18:37:09 +00:00
Ralf Becker
17203aaab3
an other missing semicolon ;-)
2013-08-20 16:43:37 +00:00
Ralf Becker
c39273ac51
allow to (optionally) add tabs to existing tabs in template instead of replacing them
2013-08-20 16:41:31 +00:00
Nathan Gray
f9ee897544
Prevent errors if refresh message is undefined
2013-08-20 15:59:16 +00:00
Ralf Becker
d9ee56bd79
adapt form::name() legacy pseudo function to new template-prefix
2013-08-20 14:23:00 +00:00
Ralf Becker
73aa652c41
missing egw.js from last commit and egw_framework::window_focus() method
2013-08-20 13:25:36 +00:00
Ralf Becker
1c4f65120c
new egw_framework methods refresh_opener and window_close to call egw_refresh on opener or close popup window in a content security save way
2013-08-20 12:06:41 +00:00
Ralf Becker
8c2bdf8d0f
disable permanent error-log
2013-08-20 11:57:44 +00:00
Ralf Becker
cad9521d02
fix indention
2013-08-20 11:13:42 +00:00
Klaus Leithoff
2f25201e72
implement the possibility to return multiple lines on get_message for tracking; allow transformation of --- into horizontal rule on html on get_message
2013-08-20 10:53:17 +00:00
Ralf Becker
d244ab7c79
NOT using html5 input type="time", as there is (intentionally) no way to control time-format, but with current state of html5 support, our preference is more relyable and we dont want users to open bugs because we do not respect their EGroupware time-format preference
2013-08-20 09:42:00 +00:00
Ralf Becker
155f771cc4
fixed not shown select-columns icon, rather hackisch, but I could not find a solution via our css files
2013-08-20 08:03:46 +00:00
Nathan Gray
e4b158be4b
Give nextmatch a real getValue() function instead of faking it all the time.
2013-08-19 20:23:26 +00:00
Nathan Gray
d7375a2321
Add tooltips to popup header buttons
2013-08-19 20:21:56 +00:00
Nathan Gray
656560c376
Make sure et2 apps don't get passed back to old etemplate
2013-08-19 19:53:45 +00:00
Nathan Gray
09f2ccbb73
Add legacy option for only_app, improve wrong data error message
2013-08-19 17:42:08 +00:00
Klaus Leithoff
95e18fd5a7
merge russian lang files provided by MBCGroup
2013-08-16 11:01:33 +00:00
Hadi Nategh
fadca5bb6b
fix set value for class when there is an assigned content to class= in .xet file
2013-08-16 08:11:06 +00:00
Nathan Gray
eec6791213
Silence some missing attribute settings warnings and fix warning about not loading app.js when it was already loaded
2013-08-14 18:01:22 +00:00
Nathan Gray
42e66e9319
Fix detached label not updating
2013-08-14 17:35:50 +00:00
Ralf Becker
fabc787fc3
* ProjectManager: fix SQL error if searching for string containing numbers and underscore or percent
...
skip user-wildcards (*,?) in is_numeric test, but not SQL wildcards, which get escaped and give sql-error
2013-08-14 08:02:23 +00:00
Nathan Gray
7e1a785615
Make whole edit dialog a drop target - files will be uploaded & linked
...
Done in the link widget, so any template with link-to should work.
2013-08-13 20:46:23 +00:00
Nathan Gray
952d6f8801
Fix file upload in international charsets (Farsi) - use existing egw_vfs::basename() instead
2013-08-13 17:03:36 +00:00
Nathan Gray
eade44ec57
Fix file upload in international charsets (Farsi)
2013-08-13 16:24:12 +00:00
Nathan Gray
6fdeb9f5f8
Drag files from desktop anywhere onto filemanager uploads
2013-08-09 23:34:42 +00:00
Nathan Gray
b74eec3d3f
Reset back to old etemplate
2013-08-09 19:19:31 +00:00
Nathan Gray
069325c89d
Do not center Filter. It had no effect on short lists, but chosen actually respected the setting
2013-08-09 19:18:58 +00:00
Nathan Gray
fefdb42340
Change comment caching to object level instead of class level to prevent revealing restricted comments
2013-08-09 16:23:50 +00:00
Ralf Becker
c8aa72039f
html-encoding is done in etemplate engine
2013-08-09 11:17:30 +00:00
Ralf Becker
11f7673408
keeping options in format used for select-boxes everywhere else and convert to taglist.setData format just when calling setData, added new method select_all to set_value all items in select_options
2013-08-08 08:56:43 +00:00
Ralf Becker
99b6fe41e7
fix set_value to work after inital load, eg. on a button press
2013-08-07 14:52:12 +00:00
Klaus Leithoff
d2a851931f
provide contact-id on errormessage on failure of mail-merge
2013-08-07 08:07:24 +00:00
Ralf Becker
b70f4bcd27
fixed taglist to no longer require ids to be set in select_options, IF allowFreeEntries is left on its default true
2013-08-06 18:31:24 +00:00
Klaus Leithoff
6362e257b1
alter message on success/failure of multiple message sending via addressbook mail-merge
2013-08-06 13:48:20 +00:00
Ralf Becker
ff536e6f1c
* PostgreSQL/Addressbook: fix SQL error in addressbook by organisation and department
2013-08-06 12:09:11 +00:00
Nathan Gray
dacc98ae72
Add drop_target attribute to support HTML5 dropping of files
2013-08-03 19:12:38 +00:00
Nathan Gray
8097119b6c
Remove debug
2013-08-03 14:46:51 +00:00
Klaus Leithoff
a69df51eaa
as insertObject (called by treeObj.addObject) expects id to be either string or object, we cast the option.id in case its a number
2013-08-01 09:54:32 +00:00
Nathan Gray
a7180f2f1c
Implement validate() so taglist can return values
2013-07-31 16:56:17 +00:00
Klaus Leithoff
fbc28c9b62
attempt to fix problem of comment-visiblity on multiple assignments of the ticket in question
2013-07-31 10:22:07 +00:00
Nathan Gray
72fb016cb4
Fix dropdown + favorites menu not doing anything when clicked.
2013-07-30 14:17:36 +00:00
Nathan Gray
6b537a1358
Add taglist-email sub-type, uses specific data source, formatting, and some client-side validation for just emails.
2013-07-30 14:16:47 +00:00
Ralf Becker
a293de8614
fix not working full submits if etemplate is etemplate_old and app uses etemplate_new
2013-07-30 12:21:19 +00:00
Ralf Becker
f41c0d1a72
fixed "PHP Parse error: syntax error, unexpected \ (T_NS_SEPARATOR)" error caused by email validation, also added error_log for these type of parse-errors
2013-07-30 09:11:33 +00:00
Ralf Becker
200a8860bf
* eTemplate/all apps: (silently) limit number of links shown to 1000 newest, to not run into memory_limit or max_execution_time and assuming noone will scroll further down anyway
2013-07-26 09:38:38 +00:00
Ralf Becker
d483b2a564
* PostgreSQL/ProjectManager/InfoLog: invalid SQL opening a new entry InfoLog entry
...
can not "SELECT * FROM table ... GROUP BY *" has to be "SELECT table.* ... FROM table GROUP BY table.*"
2013-07-26 06:57:23 +00:00
Ralf Becker
78f032e063
fixed DISTINCT leading to no data returned (eg. ctag in accounts-addressbook in eSync and CardDAV), DISTINCED added twice and not using so_sql_cf::search if no custom fields defined
2013-07-23 13:50:11 +00:00
Ralf Becker
0bca64517c
fixed SQL error introduced by r43149: multiple identical rows
2013-07-23 07:57:55 +00:00
Ralf Becker
364fbd0f66
fixed wrong call leading to maximum stack size exhaused error
2013-07-22 14:11:58 +00:00
Ralf Becker
f0808f09af
fixed action _target.id was id of tree and not of action
2013-07-22 06:34:01 +00:00
Nathan Gray
f4a6c9859a
More fixes forjQuery/jQueryUI update issues
2013-07-20 17:20:55 +00:00
Ralf Becker
f2906a1052
moved most action "comfort" functions (with exception of nm_action and pagination) from server-side nextmatch class to client-side egwActions.updateActions() method, so they are available for all widgets
2013-07-20 16:47:33 +00:00
Ralf Becker
f47e0bd59c
moved most action "comfort" functions (with exception of nm_action and pagination) from server-side nextmatch class to client-side egwActions.updateActions() method, so they are available for all widgets
2013-07-20 15:58:08 +00:00
Ralf Becker
f8c184d860
* All apps/custom fields: fixed multiple identical rows, if custom fields where set (introduced in last package)
2013-07-20 15:56:41 +00:00
Nathan Gray
7085d4b51a
Still off by default
2013-07-20 14:33:17 +00:00
Klaus Leithoff
0a37e675bd
allow to set a limit of selected entries
2013-07-20 14:03:06 +00:00
Nathan Gray
bd63529096
Rework etemplate2 loading to use JSON plugin when loading from regular request & AJAX. instead of inline script tag
2013-07-20 13:57:53 +00:00
Nathan Gray
f60fa14c30
Wrap loadingFinished() in a try / catch, so if one widget has problems it doesn't break the whole template.
2013-07-20 13:54:31 +00:00
Nathan Gray
0c30eeaee4
Taglist CSS for et2
2013-07-20 13:53:35 +00:00
Nathan Gray
a21f6aedfe
Check to see if autocomplete is available before destroying
2013-07-20 13:51:12 +00:00
Ralf Becker
74cb73d2d2
moved most action "comfort" functions (with exception of nm_action and pagination) from server-side nextmatch class to client-side egwActions.updateActions() method, so they are available for all widgets
2013-07-20 13:45:22 +00:00
Nathan Gray
2beadad730
Make sure dialog is created before trying to update buttons
2013-07-20 13:05:03 +00:00
Nathan Gray
49ef157e69
Continued development on taglist widget:
...
- More attributes
- Fix missing parent class and action system handlers
2013-07-19 15:07:35 +00:00
Nathan Gray
d2d0fa1fcd
Check for proper type (string) if I want to use string functions
2013-07-19 12:38:52 +00:00
Nathan Gray
36b5590882
Fix wrong argument order to jQuery.proxy()
2013-07-19 12:37:47 +00:00
Nathan Gray
b7ad0d33f8
Make sure onclick callback functions (specified as app.appname.funcname, or a real function) get all parameters passed, and they always can have a reference to the responsible widget
2013-07-19 12:36:59 +00:00
Nathan Gray
5b5a3ad58f
Fix copy-paste error in js attribute check
2013-07-19 10:55:07 +00:00
Nathan Gray
eb18408771
jQueryUI update changes where custom renderer hides
2013-07-19 09:31:00 +00:00
Nathan Gray
4ae6094d8d
New tag list widget, supports ajax & static options
2013-07-18 15:27:39 +00:00
Nathan Gray
14ebff54c9
Changes from updating jQuery & jQuery UI to latest versions
2013-07-18 15:26:41 +00:00
Nathan Gray
b3bf5b734f
Make unique ID deterministic - use template name
2013-07-18 09:21:07 +00:00
Nathan Gray
524f2b0f03
Use an etemplate / top template level prefix to avoid DOM ID collisions
2013-07-18 09:13:15 +00:00
Nathan Gray
1b270b2d6f
Use an etemplate / top template level prefix to avoid DOM ID collisions
2013-07-17 13:08:48 +00:00
Ralf Becker
792f1b26cc
replacing egw.LAB with egw_LAB, as egw object is shared by all iframes and popups, while LAB has to work on document
2013-07-17 12:47:21 +00:00
Nathan Gray
f9b72b05ac
Don't need to set ID, framework does it automagically.
2013-07-17 12:32:36 +00:00
Nathan Gray
0bba8fd032
Strip out any javascript added by application and it properly to the AJAX response
2013-07-17 09:57:50 +00:00
Nathan Gray
5f0ac7a70b
Fix server side auto-repeat to have different rows, instead of multiple references to the same one
2013-07-17 09:38:37 +00:00
Nathan Gray
df0dc0f27a
If record ID is missing, don't try to get data for it - skip the whole request
2013-07-17 09:36:38 +00:00
Nathan Gray
85db39ed4e
Support row ids from template:
...
id="$row_cont[field]"
2013-07-16 16:22:20 +00:00
Ralf Becker
92e0ee86a5
* All apps: allow to log user-agent and action of all changes in history-log of entries (enable in Admin >> Site configuration)
2013-07-11 13:09:23 +00:00
Ralf Becker
70dbb95d6e
make eTemplate widget-type integer an alias for int, to ease backporting templates from trunk
2013-07-11 08:13:40 +00:00
Nathan Gray
4e947b304c
Don't complain about read-only required fields
2013-07-10 18:25:28 +00:00
Nathan Gray
2bd53e72d4
Change evaluation order to get popup selector working again after last fix.
2013-07-08 22:24:36 +00:00
Nathan Gray
54eb53cdba
When setting a validation error for a widget on a tab, switch to that tab so the user can see it.
2013-07-08 21:55:38 +00:00
Nathan Gray
13e593a7f1
Handle entities in selects other than cat_id
2013-07-08 21:16:45 +00:00
Nathan Gray
55dc847f95
Fix bug where images with numbers in their url were not displayed
2013-07-08 19:40:17 +00:00
Nathan Gray
388b0816b7
Fix box autorepeat - only repeat children of type box
2013-07-08 19:06:28 +00:00
Nathan Gray
6091d6eb76
Fix box autorepeat - only repeat box children, fix $row expansion inside a grid so regular boxes don't break
2013-07-08 18:58:07 +00:00
Nathan Gray
e8c394ed54
Implement egw action system on grid rows.
...
NB: This is not nm_actions. See action system (egwAction.prototype.set_onExecute()) for details.
2013-07-05 15:13:05 +00:00
Nathan Gray
a0b07635eb
I can find no issues with attributes being objects, removing check & warning.
2013-07-05 15:03:49 +00:00
Nathan Gray
ab3fbd56bd
Promote label attribute from inputWidget to parent valueWidget, fixes missing labels on some readonly widgets
2013-07-04 20:42:21 +00:00
Nathan Gray
4d2c969b8f
Box children can now auto-repeat if child ID has $
2013-07-04 19:38:36 +00:00
Ralf Becker
93eac83b8a
fixed wrong bracket causing SQL error: is not unique
2013-07-04 16:42:33 +00:00
Nathan Gray
5e90755cd6
Add 'sortable' attribute to grid.
...
Set it to an AJAX (PHP) callback to enable, and it will be passed the grid ID & new row order whenever the user re-orders the grid rows.
2013-07-03 23:16:15 +00:00
Nathan Gray
67d2fb66c2
Add a check to prevent total failure in the rare event of bad settings.
2013-07-03 23:06:59 +00:00
Ralf Becker
486298a7c9
optional parameter for et2_nextmatch.applyFilters(_set) to certain filters before updating the rows, eg. applyFilters({ filter: '', search: ''}); to reset filter to 'all', remove search and update the rows
2013-07-03 14:29:17 +00:00
Ralf Becker
349da32512
allow to set name attribute of iframe (to be used as target in links)
2013-07-03 14:26:33 +00:00
Ralf Becker
98f13d3e55
new method to specify images of a given node or standard images for new node (not specifying them), fixed merging of dynamicly loaded data, which was not taking recursive struture into account and -1 as id to update, using new id of new data in that case
2013-07-02 18:24:32 +00:00
Ralf Becker
ffceaf445a
prototype for an admin app using et2 and a navigation tree, need to set index url in database: UPDATE egw_applications SET app_index="admin.admin_ui.index&ajax=true" WHERE app_name="admin" (dont forget to clear cache)
2013-07-01 17:07:07 +00:00
Ralf Becker
9a4693822c
* PostgreSQL: automatic fix GROUP BY clause to contain all non-aggregate selected columns, to work around SQL errors, caused by this MySQL "optimisation"
2013-06-28 10:44:46 +00:00
Nathan Gray
533f141bc2
nextmatch is always valid too
2013-06-26 22:23:41 +00:00
Nathan Gray
0c6f70005a
Implement some basic client-side validation (required)
2013-06-26 20:50:10 +00:00
Nathan Gray
7142d632a5
Implement htmlarea ascii mode
2013-06-26 19:34:14 +00:00
Nathan Gray
8f2248b6ab
When setting nextmatch filters, accept empty values too
2013-06-26 18:04:51 +00:00
Nathan Gray
c20029dfd6
Process entities returned along with row data in all cases
2013-06-26 17:28:51 +00:00
Nathan Gray
0fa6386b1c
Avoid XSS by using CSS to keep line breaks intact instead.
2013-06-26 14:11:54 +00:00
Nathan Gray
35da74fac0
Make sure there's a 'None' option if the select-account is not required so user is not forced to pick an account.
2013-06-25 22:15:09 +00:00
Nathan Gray
c8d2953c85
Check that input is created before using it, avoids error when chosen gets involved.
2013-06-25 21:56:08 +00:00
Nathan Gray
3ddf4a0300
Fix read-only selectboxes rejecting some values (same as r42732)
2013-06-25 21:38:11 +00:00
Nathan Gray
442c9e6356
- Add required attribute to radiobox so it can pass it on to radio buttons
...
- Add detached DOM support to play nice in datagrid rows
2013-06-25 20:53:39 +00:00
Nathan Gray
ac45bd0625
Implement server side required check on custom fields
2013-06-25 20:49:13 +00:00
Nathan Gray
059e82a01b
Change newlines to <br /> in read-only text to preserve multi-line data.
2013-06-25 17:48:48 +00:00
Nathan Gray
d2031034f1
Silence some more messages by providing attribute info
2013-06-25 16:44:50 +00:00
Nathan Gray
f33e49b4a5
Fix validation failure from menulist interfering.
2013-06-25 15:49:10 +00:00
Nathan Gray
e0b576e822
Fix read-only selectboxes not being translated
2013-06-25 14:37:24 +00:00
Nathan Gray
a05ac6fa11
Fix checkboxes using defaults not returning boolean
2013-06-24 23:03:55 +00:00
Nathan Gray
80ae80098e
Fix disabled grid rows still being created.
...
While not ideal (prevents modification / un-disabling after), this prevents some problems with doubled IDs
2013-06-24 20:50:37 +00:00
Nathan Gray
bcbc42135d
Fix country filters - custom filters with type select now modified to nextmatch-filterheader, not regular select
2013-06-24 20:49:27 +00:00
Nathan Gray
eaa0cb6fa0
Need to trigger chosen update for single selects too
2013-06-19 19:01:42 +00:00
Nathan Gray
bcd52bb375
Better fix for some widgets not being properly initialized (that doesn't break others)
2013-06-19 18:11:30 +00:00
Nathan Gray
865151f977
Use value as string, so we don't fail if invalid data is passed
2013-06-19 18:06:59 +00:00
Nathan Gray
625dae0c59
Fix select options with label & title not always working in rows
2013-06-19 15:14:56 +00:00
Nathan Gray
9bfdbfccaf
Fix some customfields not getting pre-processed or losing value
2013-06-18 23:26:43 +00:00
Nathan Gray
c952141839
Fix for some widgets with sub-type not being initialized properly
2013-06-18 23:24:55 +00:00
Nathan Gray
683a624710
Fix for some customfield dates going missing
2013-06-18 23:24:14 +00:00
Nathan Gray
1b3c8d15c8
Fix for HTML site/general configuration overwriting customfield settings
2013-06-18 23:23:42 +00:00
Nathan Gray
8a2c791be3
For radiobox customfields, implement "empty" first value = extra group label
2013-06-18 20:55:13 +00:00
Nathan Gray
0cd63aefc2
Fix missing custom selectbox rows attribute
2013-06-18 17:16:08 +00:00
Nathan Gray
c87a5d6806
Implement csv max,display for custom field text length
2013-06-18 17:03:06 +00:00
Nathan Gray
3f003ea3fb
Fix default checkboxes not getting validated
2013-06-18 16:39:26 +00:00
Nathan Gray
b7f83ef31f
Use a static variable to handle expansion when initializing with content set (validation)
2013-06-18 16:38:27 +00:00
Nathan Gray
a9aeabeeb1
Make sure we don't pass a bad sort value to app code
2013-06-18 16:24:01 +00:00
Nathan Gray
b933b17446
Put radio button labels after radio button by default
2013-06-18 15:08:50 +00:00
Nathan Gray
5c96c8c986
Prevent accidental too wide chosen boxes
2013-06-17 22:01:50 +00:00
Nathan Gray
94793b7808
Silence some warnings by providing info
2013-06-17 21:22:32 +00:00
Nathan Gray
ce5d6faa0a
Add setter method for tags attribute
2013-06-17 20:55:42 +00:00
Nathan Gray
8c449cae82
Trigger a load event on the template container when the etemplate is fully loaded, so other (non-app) scripts can hook in with ease. The etemplate2 object will be the second parameter to the callback.
2013-06-17 14:44:55 +00:00
Klaus Leithoff
079b919bbe
russian translations provided by Vladimir Gavrilov (MBC-Group)
2013-06-17 12:30:44 +00:00
Nathan Gray
8f277e0203
If disabling (=hiding) a widget, do its label too
2013-06-12 23:14:09 +00:00
Nathan Gray
ea104a9af5
Send any accumulated json responses after flushing etemplate - allows apps to use egw_json_response even when call is not an ajax call
2013-06-12 21:06:40 +00:00
Ralf Becker
066ffc2c25
refactored account_id change script to use information from app-specific tables_current.inc.php instead of a fixed list
2013-06-12 16:57:44 +00:00
Ralf Becker
341342bc39
fixed not working multiple value "select-account" or "home-accounts" (rows > 1) custom fields
2013-06-12 14:12:58 +00:00
Nathan Gray
7fc6d7e24d
Fix read-only display of links with application already set
2013-06-11 23:13:04 +00:00
Nathan Gray
4d26a36d09
Fix order of selectbox option detection so value is last choice
2013-06-11 22:51:45 +00:00
Nathan Gray
d2b9501208
Fix up column selection pref / default / forced to update session & indicate to admin that preference has been forced
2013-06-11 22:50:05 +00:00
Nathan Gray
c5a9952930
Better fix for tabs not being validated - handle it at the top level
2013-06-11 18:59:34 +00:00
Nathan Gray
6fcab842b0
Restore namespace when done running
2013-06-11 18:56:42 +00:00
Nathan Gray
446034c58f
Explode colon seperated values server-side to prevent warnings when expecting arrays
2013-06-11 15:36:01 +00:00
Ralf Becker
8d07c880ad
allow db-tools to edit meta information about schema, currently what is stored in integer columns, eg: "timestamp", "account", "account-commasep" or "category"
2013-06-11 14:48:25 +00:00
Nathan Gray
62a28e88fc
Accept any multiple CSV, not just numeric IDs
2013-06-10 23:38:02 +00:00
Nathan Gray
b45a7d7439
Fix tabs sometimes break subsequent namespaces
2013-06-10 23:29:48 +00:00
Nathan Gray
7da0e6d27b
Check to make sure search sub-widget is created before trying to use it
2013-06-10 22:07:31 +00:00
Nathan Gray
92aa694f97
Fix customfield sub-type restriction blocking all customfields
2013-06-10 20:15:11 +00:00
Nathan Gray
e5b91c72f2
Fix nm_compare_field() to work with et2
2013-06-10 19:26:04 +00:00
Nathan Gray
de7d633bd7
Make account quick search add to selection instead of replacing it
2013-06-10 16:53:41 +00:00
Nathan Gray
c8bbf8b582
Add tooltip explination to auto-refresh selectbox
2013-06-10 14:33:09 +00:00
Nathan Gray
6852d0807d
Improve UI of multi-row selectbox
...
- Only check button, no x (check toggles all/none), aligned with checkboxes
- Header with buttons hides when not hovering over checkbox, saving space
- Account select now has quick-select in header
2013-06-05 22:45:19 +00:00
Nathan Gray
d25d2d1b98
Fix link-entry widgets with only_app set losing value
2013-06-05 17:11:49 +00:00
Nathan Gray
a10914b20e
Fix link-entry custom fields showing application selectbox
2013-06-05 17:10:57 +00:00
Nathan Gray
654054826f
Implement home-accounts and select-account custom fields sub-placeholder expansions in the correct place, with the rest of them
2013-06-05 17:03:27 +00:00
Ralf Becker
53006a471c
if we have onclick or tooltip, add it to an extra div around single element of a box
2013-06-05 13:13:09 +00:00
Nathan Gray
cf0f1c9cd2
Implement no_files attribute
2013-06-04 23:05:31 +00:00
Nathan Gray
b79460e7a0
Check for value before trying to use it
2013-06-03 23:17:01 +00:00
Nathan Gray
4d13f3170f
Can't forget to reset the ID (template name), or it might not be able to load the template
2013-06-03 23:05:02 +00:00
Nathan Gray
f5ab004499
Fix occasionally missing selectbox value
2013-06-03 22:33:50 +00:00
Nathan Gray
1eaa51a2ca
Avoid conflict with existing etemplates using message class on a grid cell
2013-06-03 18:08:55 +00:00
Nathan Gray
d5b289e894
Add a global ajax callback so the et2 widget can stay in sync with the dhtmlxtree
2013-06-03 16:32:45 +00:00
Ralf Becker
bd1d0f7c18
fixed not working quoting of multiple values specified as array, can not use array walk, as 2. parameter is the key not passed data
2013-05-31 08:29:34 +00:00
Nathan Gray
e2d6d9a65d
Change some indenting
2013-05-29 19:12:14 +00:00
Nathan Gray
aeeb3e9469
Silence one warning by providing an attribute definition
2013-05-29 19:08:00 +00:00
Nathan Gray
59471e7e18
Queue property updates
2013-05-29 19:06:23 +00:00
Nathan Gray
0285ea4b28
Avoid errors removing top-level widgets, check for parent property first
2013-05-29 18:57:48 +00:00
Nathan Gray
e948a270f6
Fix bug losing app when passing {app:... id:...} to link entry
2013-05-29 15:26:22 +00:00
Nathan Gray
d8fcb574a6
Implement csv_fields = false to disable export button
2013-05-28 18:16:22 +00:00
Nathan Gray
9248942e9f
idots theme needs to use window, since the parent might not be full height either
2013-05-28 17:11:35 +00:00
Nathan Gray
25a6b2bda2
Update internal options
2013-05-28 15:43:35 +00:00
Nathan Gray
681be3af08
I guess template needs to stick around, even though it's freed
2013-05-27 23:34:14 +00:00
Nathan Gray
78b1fffc81
Fix spelling, avoid DOM error if you try to remove a node that wasn't added
2013-05-27 23:24:22 +00:00
Nathan Gray
7c7e100842
Properly remove template so it's not still a child
2013-05-27 23:22:31 +00:00
Nathan Gray
7f669bc5f0
Save a jQuery call by just passing the row to remove
2013-05-27 23:21:13 +00:00
Nathan Gray
68b4d0e975
Don't try to fill the window, just the parent
2013-05-27 23:12:40 +00:00
Nathan Gray
f08af9d467
Fix splitter by setting no overflow
2013-05-27 16:58:24 +00:00
Nathan Gray
89fe4531e2
Make sure actions get set when a leaf is refreshed
2013-05-27 15:51:18 +00:00
Ralf Becker
cd7b9b0910
return (protected) array with validation errors instead of just the count
2013-05-25 17:18:43 +00:00
Ralf Becker
50ed435eb7
* Calendar/InfoLog/Timesheet/Tracker/ProjectManager: edit focuses now automatic on title input
2013-05-23 09:01:33 +00:00
Nathan Gray
e8a21565ab
First run at a new home app. Just structure so far, more to come.
2013-05-22 20:13:12 +00:00
Nathan Gray
44f4e1ba3b
Silence permanent debug
2013-05-22 19:30:31 +00:00
Nathan Gray
753ba3b006
Remove debug
2013-05-22 19:29:42 +00:00
Nathan Gray
092493a065
Look for content / modifications inside the current name space as well, if the widget can create its own namespace
2013-05-22 18:13:37 +00:00
Nathan Gray
100c706674
Add an additional condition to check in case the template file is not recognized as XML, and try to parse it
2013-05-22 18:11:41 +00:00
Nathan Gray
f451b65557
Use refresh method for more intelligent updating
2013-05-22 18:10:26 +00:00
Nathan Gray
173d2ad374
Fixes to actions, to better support changing after initial creation
2013-05-21 20:24:40 +00:00
Nathan Gray
f53a90ccdf
Update in-code documentation to match code
2013-05-21 20:23:35 +00:00
Nathan Gray
08ac429774
Sort browser's widget list, so you can find widget you're looking for
2013-05-21 20:22:51 +00:00
Klaus Leithoff
6e1e86123f
add basic refreshItem function; TODO: need to implement the refreshing of the actions
2013-05-21 08:33:16 +00:00
Klaus Leithoff
c6164973ae
fix bug regarding the missing of all tree actions after leaf deletion
2013-05-17 13:30:43 +00:00
Ralf Becker
c496516f19
re-added ability to use $sel_options["something[else]"] removed in last commit "compatibility with eT2"
2013-05-15 13:22:53 +00:00
Klaus Leithoff
4c4a05e426
control resizing for IE10 under Windows8
2013-05-14 13:22:30 +00:00
Klaus Leithoff
090f8b134e
delete a leaf of the tree
2013-05-13 14:40:44 +00:00
Ralf Becker
85a198d9e6
fixed id check, causig it not to use options given for id=0
2013-05-13 11:59:09 +00:00
Ralf Becker
8cebfe3339
some more docu for tree-widget and allow to use autoloading-url for initialisation too
2013-05-12 13:09:20 +00:00
Ralf Becker
8f52e2ca3c
fixed fatal error in soetemplate called by editor, if etemplate is switched to etemplate_new
2013-05-11 09:25:32 +00:00
Nathan Gray
e9a5f7e09c
Add values for tabs, and make sure dynamic tab values are passed
2013-05-10 20:39:12 +00:00
Ralf Becker
489978d590
use either tab definition from xml or tabs defined via setElementAttribute($id, tabs, array $tabs), also allow that for old eTemplate
2013-05-09 09:28:27 +00:00
Nathan Gray
73f1cd921b
Use new dialog to confirm favorite deletion
2013-05-09 04:05:03 +00:00
Nathan Gray
eaa100921c
Fix preferred favorite not being saved
2013-05-06 21:34:47 +00:00
Nathan Gray
c5c4d92d09
Make sure activeFilter gets set during init
2013-05-06 20:58:59 +00:00
Nathan Gray
43d0128fb6
Update action/leaf id when renaming
2013-05-06 20:03:14 +00:00
Nathan Gray
57d6132a37
Actually use template attribute when provided
2013-05-06 17:36:37 +00:00
Nathan Gray
8a2259ae99
Enhance tab widget's 'tabs' attribute to include hidden, and id to access content array
2013-05-06 17:17:52 +00:00
Nathan Gray
d3f498f0f4
Avoid an error if type is missing
2013-05-06 17:12:45 +00:00
Ralf Becker
1b3c934823
a few compatbility methods and hacks to get old etemplates to behaves a bit more like eT2
2013-05-03 11:50:40 +00:00
Ralf Becker
005d5ed090
value of description set via id need to get translated, if !no_lang is set, value set via value attribute already get translated via transformAttributes and translate: "!no_lang" of value
2013-05-03 11:46:26 +00:00
Nathan Gray
42fd3fe37b
Implement optgroups for select widget
2013-04-29 18:36:48 +00:00
Klaus Leithoff
8913df2366
remove console logging on focused
2013-04-29 14:59:55 +00:00
Klaus Leithoff
efd4d85143
add rename of an item. caveat, does not rename dependent leafs yet
2013-04-29 14:58:29 +00:00
Ralf Becker
5eede4a8ef
allow to use <widget type="${row}[type]"/> in xet files
2013-04-28 12:43:18 +00:00
Ralf Becker
947511779a
_atts["select_options"] is not null but {}
2013-04-28 12:42:13 +00:00
Ralf Becker
26c66d12d7
create static method etemplate_widget_menupopup::fix_encoded_options(), so apps can call that for cases it is not called automatically (eg. autorepeated rows)
2013-04-28 12:39:58 +00:00
Nathan Gray
4759d19d25
Fix nextmatch hierarchy display
2013-04-24 19:53:51 +00:00
Ralf Becker
78449edd4c
some css for new dialog: left aligning buttons as everywhere in EGroupware, auto-size dialog, static show_prompt method to display a prompt, fixed not working translation of standard buttons
2013-04-23 16:51:00 +00:00
Nathan Gray
6f124f4b10
When nm loads data, make sure selection is still shown
2013-04-23 15:34:47 +00:00
Nathan Gray
516872e322
Fix custom buttons with no template not working
2013-04-22 22:56:55 +00:00
Nathan Gray
5e84ddd935
Change admin column selection to allow setting / clearing / forcing column selection
2013-04-22 22:32:40 +00:00
Nathan Gray
fc727570dd
Implement set_value() on file widget - you can't really set file upload values programmatically to anything that makes sense, but it can be cleared
2013-04-22 16:52:03 +00:00
Nathan Gray
bd6c23298b
Change ODS file line break tag from <text:line-break> to </text:p><text:p> so it works in LibreOffice
2013-04-22 15:25:19 +00:00
Ralf Becker
3a14e96d1a
allow to use hierarchical function names, eg. app.filemanager.upload via new et2_call function
2013-04-20 19:21:42 +00:00
Ralf Becker
28aab234a7
fixed space instead of tabs
2013-04-20 19:20:51 +00:00
Ralf Becker
f814b6077e
reverting accidently commited default to et2
2013-04-20 12:21:22 +00:00
Ralf Becker
cd024eef1b
add nice link overlay icon to vfsMime widget (for symlinks)
2013-04-20 12:19:27 +00:00
Ralf Becker
a14ede7587
added @memberOf to get outline
2013-04-20 09:51:52 +00:00
Nathan Gray
5555edcb98
Add dialog widget
2013-04-16 18:50:43 +00:00
Nathan Gray
b66a74ff03
Make currently browsed widget available for console playing as window.wb_widget
2013-04-16 18:48:06 +00:00
Nathan Gray
0ae58e39de
Load jquery-ui css before ours, so we can override it
2013-04-16 18:46:23 +00:00
Nathan Gray
4239b83bd0
Add not implemented js function type. It understands app.appname.function style arguments
2013-04-16 18:44:43 +00:00
Nathan Gray
a4395a8000
If a specific template name is not provided, use the last template in the file
2013-04-16 18:42:53 +00:00
Nathan Gray
d58a3128e7
Some checking to make sure variables are there, and avoid errors
2013-04-16 18:40:38 +00:00
Ralf Becker
e64c4fbd04
add some JSDoc so Eclipse shows an outline: @memberOf and @augments (not yet understood by Eclipse), also fixed many warnings (mostly missing semicolons)
2013-04-13 19:00:13 +00:00
Ralf Becker
5a4850b2ed
fixed not correctly displayed file type: need to compare with bitmask after and-ing it
2013-04-13 09:46:00 +00:00
Ralf Becker
34dd94dc76
fixed set_(ro_)image to set the according option and update current image, new method set_readonly updating readonly attribute and current image
2013-04-12 17:19:18 +00:00
Nathan Gray
027bcc53d1
Enable drop on nextmatch rows
2013-04-12 17:05:35 +00:00
Nathan Gray
4c692102a2
Common styling for et2 containers, regardless of ID
2013-04-12 16:29:40 +00:00
Nathan Gray
c85582180a
Avoid an error in the destruction by checking for widget
2013-04-12 16:28:52 +00:00
Nathan Gray
41d34f84a2
Set a class for common CSS
2013-04-12 16:28:11 +00:00
Nathan Gray
b994f33825
Nextmatch onselect attribute understands app.appname.function directly, and passes nextmatch reference & list of ids
2013-04-12 10:33:29 +00:00
Ralf Becker
abee7bc2a1
allow to permanently use etemplate_new for ported applications no longer supporting old etemplate, while still having etemplate default to etemplate_old
2013-04-12 09:50:27 +00:00
Ralf Becker
fa3f1c5055
ro version of vfs-name to behave like ro textbox (span instead of r/o input), also commented socket perm as it is set for dirs too (and we have no sockets in vfs)
2013-04-12 09:39:37 +00:00
Ralf Becker
4a26ad18c0
fixed whitespace (8 space instead tab)
2013-04-12 09:38:12 +00:00
Nathan Gray
7f80c74b59
Add onselect attribute for nextmatch
2013-04-12 09:28:42 +00:00
Nathan Gray
8192f13b3b
Fix typos preventing some drops
2013-04-11 12:22:34 +00:00
Nathan Gray
8a6bba9ffe
Give the et2 container an ID matching the loaded template name
2013-04-11 11:25:28 +00:00
Ralf Becker
0f72fba1b3
display #msg or .message like before in red and italics
2013-04-11 10:34:13 +00:00
Nathan Gray
9afe55bfae
Have to read repository, not just create the object, or I get inconsistencies
2013-04-10 16:47:02 +00:00
Nathan Gray
79c09ec5cd
Use LABjs to make sure everything is loaded
2013-04-10 16:03:58 +00:00
Nathan Gray
d996a3445f
Fix et2_ready() when app called via ajax
2013-04-10 16:03:31 +00:00
Ralf Becker
ee65e7ae28
also need to re-assemble image options, as I cant edit/remove them in editor
2013-04-10 15:46:38 +00:00
Nathan Gray
64c03e772d
CSS fixes - sidebox favorite spacing & nextmatch border
2013-04-10 15:25:40 +00:00
Nathan Gray
bb44a6ce26
Fix dynheight case when there is no space between dynheight & items below
2013-04-10 15:17:18 +00:00
Nathan Gray
c0e0982b0e
Implement hide_header,header_left & header_right attributes
2013-04-10 14:09:55 +00:00
Ralf Becker
3fa9169f83
only have nextmatch-header "box" around the filters
2013-04-10 14:05:01 +00:00
Ralf Becker
28428c3aa0
make header_left/right a legacy option for nextmatch widget, allowing to specify it in template and therefore display them in editor
2013-04-10 13:26:04 +00:00
Nathan Gray
b171acf19a
Don't try for default, causes error if add is not valid
2013-04-10 13:15:49 +00:00
Klaus Leithoff
0de87f5711
introduce getLabel function on tree-widget
2013-04-10 12:32:07 +00:00
Nathan Gray
0516d2cc2a
If value is available in the constructor, set it there
2013-04-10 12:10:04 +00:00
Ralf Becker
40acef68b6
show disabled templates in editor
2013-04-10 11:47:11 +00:00
Nathan Gray
96d27aefc4
Fix - should always be top level of content
2013-04-10 11:05:20 +00:00
Nathan Gray
fdada6c3c0
Fix typo in missing JS object warning
2013-04-10 10:10:14 +00:00
Nathan Gray
4de7d2f432
Add a warning if application js object was not loaded
2013-04-10 10:05:17 +00:00
Nathan Gray
48d6204f29
Skip blank legacy options sooner
2013-04-10 09:39:36 +00:00
Nathan Gray
ec1ad6f09e
Change splitter preference saving to save on mouseup
2013-04-10 09:25:05 +00:00
Nathan Gray
4c54745cbb
Allow favorites from multiple apps to coexist
2013-04-10 08:00:31 +00:00
Klaus Leithoff
09f00a31a5
fix ckeditor area
2013-04-09 11:50:14 +00:00
Nathan Gray
978a90852c
Add a base object for application javascript code to contain it, and solve initialization timing issues
2013-04-09 08:45:59 +00:00
Nathan Gray
cd0356219c
Add some missing attribute attributes
2013-04-09 07:22:35 +00:00
Nathan Gray
af43412921
Fix editor to still work with existing basic widgets
2013-04-08 14:31:43 +00:00
Nathan Gray
715d45a2c1
Add very basic support for et2 widgets into editor, to at least not destroy templates
2013-04-08 14:06:01 +00:00
Nathan Gray
fd41f7e4bc
In the rare case where the app specifies both select options in both the sel_options and the nextmatch options-name, try to avoid overwriting
2013-04-08 13:18:27 +00:00
Ralf Becker
ed76aa43e2
removed old code used to run etemplate without javascript, not working anymore and causing it now to fail after Nathans changes
2013-04-03 08:37:28 +00:00
Ralf Becker
81752aa4d5
using ege.LAB.wait for popup_resize()
2013-04-03 07:52:23 +00:00
Nathan Gray
b9a43091dc
Fix problem with false/0 values failing validation
2013-04-02 22:57:09 +00:00
Nathan Gray
e8c9a1ecde
LABjs wait to initialize actions until all files are there
2013-04-02 20:31:22 +00:00
Nathan Gray
ef2a5d377d
Use LABjs throughout framework to load javascript - prevents a lot of undefined / timing errors
2013-04-01 19:14:52 +00:00
Nathan Gray
bdb148d167
Make sure widgetContainer is initialized before loading, prevents timing problems
2013-04-01 18:35:49 +00:00
Nathan Gray
3623ee6e72
Don't try to submit if the action is not a context menu (eg: drag, drop)
2013-04-01 18:19:59 +00:00
Nathan Gray
1f754d485b
Tie egw_action system into etemplate widgets - allows actions on widgets
2013-03-26 21:19:17 +00:00
Nathan Gray
c55e636f43
Catch error from missing ckeditor stuff so it doesn't break everything else
2013-03-26 15:54:18 +00:00
Nathan Gray
61ef8de61e
Missed call to _super.destroy()
2013-03-26 15:47:31 +00:00
Nathan Gray
fbd81e6aa9
Fix 'undefined' in read only selectboxes when value was not in list of options
2013-03-25 23:00:25 +00:00
Nathan Gray
fc0b2d1e8a
Look for cat_id options in parent(global) sel_options manager too
2013-03-25 22:59:48 +00:00
Nathan Gray
0c017a4b35
Don't error if ckeditor adapter is missing, just fall back to text
2013-03-25 22:22:53 +00:00
Nathan Gray
d361206090
Always send app:id or just id from nextmatch_entryheader, instead of seperated properties
2013-03-25 22:04:10 +00:00
Nathan Gray
e6cfe7a505
Accept modifications where the value evaluates to false
2013-03-25 21:46:18 +00:00
Nathan Gray
3c651a38e0
Sort out customfilter options conflict
2013-03-25 21:43:35 +00:00
Nathan Gray
d394cca06f
Avoid some init / destroy errors in color picker popup
2013-03-25 19:39:02 +00:00
Nathan Gray
c5d2b8dc23
Fix category check matching numbers inside other class names
2013-03-25 17:17:11 +00:00
Nathan Gray
a46fff9bbd
Add implementation for xajax_eT_wrapper() to avoid having to replace them all right now
2013-03-25 16:56:10 +00:00
Ralf Becker
27a40efc84
async notifications can NOT use a single static variable as cache, as it will be used for all the different entries notified
...
--> using a class variable (different per app) and indexing cache be id or entry
2013-03-22 14:34:31 +00:00
Nathan Gray
f4fe5cf8b6
Add ability to specify which actions are available for the no results placeholder
2013-03-20 23:09:04 +00:00
Nathan Gray
873c3301d4
Get selected IDs if action function did not pass them
2013-03-20 22:20:05 +00:00
Nathan Gray
3332eec106
Add a function getSelection() so application code can more easily find the IDs
2013-03-20 22:10:51 +00:00
Nathan Gray
555582eb44
Don't try to format null dates, just pass null back to app
2013-03-20 21:19:56 +00:00
Nathan Gray
8c20d825cb
Fix private custom field filtering
2013-03-20 20:47:54 +00:00
Nathan Gray
a140cd1f25
Make htmlarea more fault tolerant so it doesn't block the rest of the page if something happens
2013-03-20 20:45:43 +00:00
Nathan Gray
7a58f4c141
Fix up display issues in link widget (annoying link delete, hiding link button)
2013-03-20 18:26:18 +00:00
Nathan Gray
f7f9e13916
Fix missing custom fields
2013-03-20 16:41:46 +00:00
Nathan Gray
cf32147cc2
Avoid an error if we try to csv_split() null
2013-03-20 16:18:53 +00:00
Nathan Gray
fee50cec99
Fix nm refresh() not working if the ID was a number
2013-03-20 16:17:23 +00:00
Nathan Gray
3142b9fd1f
Fix templates creating unwanted namespaces
2013-03-20 16:16:12 +00:00
Ralf Becker
7cc358b526
fixed not working link in notifications / subscribtions, if path contains eg. a space
...
caused by unnecessary appended path=... url parameter breaking WebDAV, added new config to NOT add it, as not setting id causes signature to fail
2013-03-20 09:55:30 +00:00
Nathan Gray
9ae89a0844
Fix missing data in named sub-templates
2013-03-19 22:53:51 +00:00
Nathan Gray
81fbfc23cc
Add general placeholder {{link}} is a link to current record
2013-03-19 20:56:58 +00:00
Nathan Gray
e7b7b78e92
Re-init egw_time so it gets the appropriate preferences for the notification
2013-03-18 23:41:10 +00:00
Nathan Gray
cbbd03f388
- Use top-level preferences to load favorites
...
- Empty sidebox target on unload to prevent handlers hanging around
2013-03-18 20:58:55 +00:00
Nathan Gray
0e89b309e3
Push updated preferences to client so favorites don't re-appear / disappear
2013-03-18 20:55:47 +00:00
Nathan Gray
562ffe972f
Fix some destructors
2013-03-18 20:52:41 +00:00