Ralf Becker
178bca7f7a
fix redirect loop initiated eg. by saving a mail, caused by document.location=url triggering etemplate unload handler and destroying et2 request, identical redirect url detected by jdots framework causes refresh via nextmatch --> next redirect
2014-10-08 20:02:59 +00:00
Nathan Gray
aa6c36ba3f
Work on app-entry widgets (contact-value)
2014-09-30 21:37:45 +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
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
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
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
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
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
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
ccdb54a366
Gantt chart progress
2014-05-21 22:11:36 +00:00
Nathan Gray
d80ef84012
Remove div from console, it's no longer useful
2014-05-07 16:35:51 +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
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
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
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
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
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
a021f998e0
fixed template was not prepending parent/top-level name, but search for first loaded template which ends in its name eg. "rows" used in "mail.sieve.index" picked "addressbook.index.rows" instead of "mail.sieve.index.rows"
2014-02-25 13:04:28 +00:00
Nathan Gray
1c4b473d6f
Make template cache static class level variable, so they're always available & persist for session
2014-02-19 22:30:59 +00:00
Nathan Gray
ac653d6c9a
Set top level owner to top level widget.
...
Fixes error if read-only expansion runs off the top of the tree, and no owner found.
2014-02-19 00:28:38 +00:00
Ralf Becker
d01d5119ca
calling app[appname].et2_ready(et2,name) with template name as second parameter
2014-02-17 14:58:20 +00:00
Ralf Becker
61e98b8149
default refresh method for jdots, if no nextmatch available
2014-02-14 15:01:45 +00:00
Ralf Becker
4dab9cba88
if content of template contains data for key "msg", call egw.message() with it and remove it from content
2014-02-06 17:27:01 +00:00
Nathan Gray
66cddfbd61
If thrown does not have a message attribute, use what was thrown instead.
...
Fixes 'undefined' error message in log when using throw "error"
2014-02-05 17:19:18 +00:00
Ralf Becker
4f30210b03
indention
2014-01-24 09:27:52 +00:00
Ralf Becker
0c2d8f87b9
only bind session/request destroy handler, if we have an etemplate_exec_id. Not the case for pure client-side call like from et2_dialog
2014-01-17 17:51:17 +00:00
Ralf Becker
a0213fd5a3
now calling our session_destroy also for etemplate2.clear(), this way we get also unloads from frameset templates
2014-01-16 12:52:25 +00:00
Ralf Becker
205794f4a7
notify server about closed windows, so we can destroy no longer eT needed session/requests and so keep cache small
2014-01-16 12:13:16 +00:00
Nathan Gray
4eea706aa0
- Return true after window close in et2_load, avoids 'Error while parsing et2_load response'
...
- Catch trying to set a widget attribute with no set_...() function via JSON assign and warn instead of generic error
2014-01-13 15:07:03 +00:00
Nathan Gray
71f0fcdda0
Implement refresh type 'update' to _only_ update the data of a row - sorting is not considered, so make sure to use 'edit' if sorting might be affected.
2014-01-13 09:40:23 +00:00
Nathan Gray
26b8cae767
Avoid removing all event listeners if the etemplate has no unique ID (happens for dialogs)
2014-01-11 11:42:23 +00:00
Nathan Gray
3b57659536
Defer binding to window resize until after loading is finished.
2014-01-10 15:54:35 +00:00
Nathan Gray
9b4cd3e306
Some more profiling helpers - timeline timestamp at start of rendering, consistently measure to end of app callback
2014-01-10 14:27:21 +00:00
Nathan Gray
f1558bcffb
Fix missing bracket
2014-01-09 16:53:42 +00:00
Nathan Gray
c082dec331
Profiling - Automatically profile etemplate2 loading in Chrome
2014-01-09 16:44:34 +00:00
Nathan Gray
13572c472a
Profiling - Add some timestamps for timeline
2014-01-09 13:38:32 +00:00
Ralf Becker
90edb55ec5
add async include and et2 render times to page-generation-times shown
2014-01-09 12:20:13 +00:00
Nathan Gray
9009ef44bb
Pass current app to egw_app_header() so it can set header for correct app. Fixes sometimes wrong app header shown.
2013-12-23 16:13:40 +00:00
Nathan Gray
a1e5783da6
Make sure data is set before trying to look inside it.
2013-12-16 18:11:53 +00:00
Ralf Becker
374312be3c
need to set app_header before message, as app_header is (temp.) replaced by it
2013-12-13 01:15:41 +00:00
Nathan Gray
23fd7066bf
Add etemplate into indexed list before starting the load process. This way anything looking for it can find it, even if it's not fully loaded (and bind to the load event if needed)
2013-12-12 23:37:12 +00:00
Ralf Becker
9c3c077314
fixed not updated sidebox in calendar listview
2013-12-12 23:32:30 +00:00
Nathan Gray
698efb3039
Better handling of submitting with passed button to properly process the button ID into the value array. Fixes the case where ID like 'button[delete]', previously wound up in button.button[delete].
2013-12-04 00:15:50 +00:00
Nathan Gray
4c1c710ba9
Implement display of server-side validation errors
2013-12-02 20:35:32 +00:00
Nathan Gray
092da6a706
Use a fallback menuaction that won't give a permission error
2013-11-26 22:34:32 +00:00
Nathan Gray
ca92b22daf
Downgrade error about overwriting value, id exists twice to warning.
...
Stop warning about duplicate IDs in children of header bar, those values are part of nextmatch.
2013-11-08 16:28:07 +00:00
Nathan Gray
ba9782138c
Check for app_callback before trying to call it
2013-11-07 23:21:14 +00:00
Ralf Becker
6d226a7921
split constructor function and place of instanciation for app.js objects: app[appname] = new app.classes[appname]();
2013-11-04 20:54:23 +00:00
Ralf Becker
064baf926a
et2.submit(button,async) button can now be widget-id too, new optional async parameter to send request asynchronious (default synchronious), eg. to show an otherwise frozen animation
2013-10-30 14:07:29 +00:00
Nathan Gray
388b2cbceb
- Fix etemplate2 assign json plugin so it's on the right egw object
...
- Add a console debug group (when supported) to make it easier to work with console log
2013-10-28 20:16:49 +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
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
Nathan Gray
26f75a241b
Make sure context is the widget when calling setters
2013-10-09 17:15:44 +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
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
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
Nathan Gray
7cda6a630b
Add a toolbar widget that displays its actions as a toolbar
2013-10-04 07:29:38 +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
8f91781933
Change nextmatch actions to use ajax submit, not post
2013-09-16 15:20:22 +00:00
Nathan Gray
02c6f3b108
Remove some more references to phpgwapi/js/egw_json.js
2013-09-10 18:56:50 +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
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
Nathan Gray
4fa0370ce4
Avoid error if div has no ID (eg: dialog)
2013-08-26 19:08:02 +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
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
Nathan Gray
f9ee897544
Prevent errors if refresh message is undefined
2013-08-20 15:59:16 +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
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
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
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
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
4ae6094d8d
New tag list widget, supports ajax & static options
2013-07-18 15:27:39 +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
0c6f70005a
Implement some basic client-side validation (required)
2013-06-26 20:50:10 +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
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
5555edcb98
Add dialog widget
2013-04-16 18:50: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
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
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
bdb148d167
Make sure widgetContainer is initialized before loading, prevents timing problems
2013-04-01 18:35:49 +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
Nathan Gray
873c3301d4
Get selected IDs if action function did not pass them
2013-03-20 22:20:05 +00:00
Nathan Gray
dee286e2e0
Move favorites js into its own widget, add support for favorites in sidebox when there is no nextmatch on the page
2013-03-12 22:57:42 +00:00
Nathan Gray
643b120195
- Make nextmatch refresh more intelligently
...
- Call nextmatch refresh() from etemplate2.refresh()
- Add autorefresh preference (in column selection)
2013-02-25 20:35:17 +00:00
Nathan Gray
a0c0ddbfbe
Dropdown / split button
2013-02-25 18:51:57 +00:00
Nathan Gray
03c9c0804f
Split panel widget. Mostly working, needs some more special case for working with nm - they both want full page
2013-02-22 00:25:41 +00:00
Nathan Gray
c46777826f
Add iframe widget
2013-02-20 20:53:15 +00:00
Nathan Gray
298309074e
Implement updating just the affected nm row with egw_refresh()
2013-02-14 11:25:24 +00:00
Nathan Gray
54b1fb9ce4
Fix set_Value() -> set_value()
2013-02-13 09:23:33 +00:00
Nathan Gray
1f86de58c8
Get message update working
2013-02-13 09:03:28 +00:00
Nathan Gray
f2fc558e19
- Add static methods to get into etemplate2 widget context from outside. Call etemplate2.getByApplication(app) or etemplate2.getByTemplate(name) for a list of etemplate2 objects
...
- Add register_app_refresh() function to allow applications to specify a more intelligent way to refresh them
- Change egw_refresh() to call registered refresh function, or if etemplate2 is available try that over reloading the whole page
2013-02-12 15:46:14 +00:00
Nathan Gray
dc5fabfcb4
Keep type of value as Object, fixes missing nextmatch data
2013-02-05 09:53:06 +00:00
Christian Binder
b3a4ad5240
very first attempt for et2_widget_itempicker implementation
2012-07-14 15:38:02 +00:00
Nathan Gray
9a6e3d59a8
If two widgets have the same ID, and they both return objects as values (eg: link widgets) then merge the values instead of replacing
2012-07-04 22:41:51 +00:00
Nathan Gray
5385055eb9
Fix bug breaking array values (name ends in [])
2012-07-02 22:58:02 +00:00