Commit graph

28 commits

Author SHA1 Message Date
Richard Hansen
dcbf876d03 hooks: New mechanism to deprecate hooks
I plan on splitting authFailure into authnFailure and authzFailure so
that separate authentication and authentication plugins can coexist
peacefully. This change will make it possible to mark the authFailure
hook as deprecated (which simply logs a warning).
2020-09-08 00:49:10 +01:00
Richard Hansen
6f3e7d14f6 hooks: Always return a list from aCallFirst and callFirst
Every existing caller of `aCallFirst` expects a list and will throw an
exception if given `undefined`. (Nobody calls `callFirst`, except
maybe plugins.)
2020-09-05 20:35:19 +01:00
Joas Souza
0835bfeabb
Bugfix: wait promise finish on hooks (#4194)
This commit fixes the error of not waiting the async code to finish.
As the forEach did not wait until the async code finish we may get a
hook set up incorrectly. To fix it, we use an "Array.map" to iterate and
wait the promises to be resolved and then returned
2020-07-23 20:47:59 +01:00
John McLear
d1330a1e1c
Bugfix: Async bump part 2
Sorry, not sure what happened but having kids jump all over the keyboard while I do this probably didn't help... :|
2020-07-17 10:08:40 +01:00
John McLear
9bf1b9f2a2
bugfix / testing: Ie11 warning for not having Promises (#4167)
Makes IE11 work again but may cause an issue for plugin testing in IE11.  IE plugin tests in IE11 will probably fail as the plugin code will not execute.
2020-07-16 09:31:35 +01:00
John McLear
564e8fee07 forcing back to last known stable before parent merge 2020-06-07 18:44:01 +00:00
John McLear
009e1d01f7
staleCode: Async update 2020-06-07 14:56:45 +01:00
Ray Bellis
8d85ae582e pluginfw/hooks.js: allow returning a Promise in aCallFirst(), aCallAll()
Since this code can end up loaded in browsers when using client side plugins,
avoid use of ES6 syntax features such as arrow functions until MSIE support is
finally dropped.
2019-01-18 13:49:17 +00:00
Sebastian Castro
378dbe8485 skins: Improve clientPluginNames class helper
Moving classes to html tag so it can be used to style other part of template depending on plugins like #users, #chat etc...
Rename plugin class with "plugin-" prefix, because there were conflicts with some plugins using the same .ep_font_color class to apply css rules
2019-02-22 19:48:46 +01:00
muxator
0ad8291ae7 hooks: restore Internet Explorer 11 compatibility.
Compatibility with IE11 regressed in 23eab79946 while working for #3488.
That commit made use of modern js syntax, not supported by IE11.

- Removed arrow functions, replaced with normal functions.
- Removed the spread operator (<...iterable>) and the "new Set()" construct,
  replaced with _.uniq()

At some point IE11 compatibility will be dropped.
Ditching it now, for such a small gain, is not wise.

Fixes #3500.
2018-11-28 20:03:39 +01:00
muxator
23eab79946 pad.html: for each client plugin, add a class to #editorcontainerbox
This commit implements the following behaviour:

1. adds a function clientPluginNames() to hooks.js (mimicking what is done in
   static.js), which returns an array containing the list of currently installed
   client side plugins. The array is eventually empty.

2. calls that function in pad.html at rendering time (thus server-side) to
   populate a class attribute.

Example results:
- with no client-side plugins installed:
  <div id="editorcontainerbox" class="">

- with some client-side plugins installed:
  <div id="editorcontainerbox" class="ep_author_neat ep_adminpads">

Looking at the existing code (src/node/hooks/express/static.js#L39-L57), a
client-side plugin is defined as a plugin that implements at least a client side
hook.

NOTE: there is currently no support for notifying plugin removal/installation
      to the connected clients: for now, in order to get an updated class list,
      the clients will have to refresh the page.

Fixes #3488
2018-10-02 21:22:13 +02:00
webzwo0i
5d15f655f0 dont make local variables global 2014-12-14 22:01:28 +01:00
luto
f70309645c pluginfw: accept 'null' as a hook-result, as this is needed by handleMessage 2014-06-12 13:33:17 +02:00
Luc Didry
3d8452b143 Replace tabs indentation with spaces indentation
Some files are obviously external libraries, I didn't touch them
2013-12-05 08:41:29 +01:00
John McLear
4cfac2f624 fix extract and checkPad 2013-02-18 08:29:25 -08:00
Chad Weider
9394495364 Inject plugins into hooks. 2012-09-11 21:16:47 -07:00
Chad Weider
19a7208c97 Clean up requires. 2012-09-09 18:18:59 -07:00
Chad Weider
0da4acfdb5 Use packaged edition of async. 2012-09-09 18:18:59 -07:00
Egil Moeller
3338db9485 Bugfixes 2012-06-05 13:32:33 +02:00
Egil Moeller
7b39da2d69 Bugfix for callFirst to actually call call hooks until it finds one that returns non-empty, which is actually usefull, as opposed to just calling one hook. 2012-04-19 16:03:42 +02:00
Egil Moeller
6120a0b7aa Merge branch 'develop' of git://github.com/Pita/etherpad-lite 2012-03-27 22:36:48 +02:00
Egil Moeller
12600446c2 Better argument handling and defaults 2012-03-27 22:23:28 +02:00
Matthias Bartelmeß
349bb595b9 corrected underscore path in hooks 2012-03-23 20:19:41 +01:00
Egil Moeller
c591efb352 Plugin list can now be reloaded 'live' 2012-03-19 17:16:49 +01:00
Matthias Bartelmeß
e559df18ce use underscore.js 2012-03-17 13:38:26 +01:00
Peter 'Pita' Martischka
9f03e5ec68 Output nicer exceptions in hook call 2012-03-04 20:32:57 +01:00
Egil Moeller
df531a7b2b Made ace actually use the new hooks system, and removed remnants of old system 2012-03-01 19:22:02 +01:00
Egil Moeller
73aa0687b8 Client side hooks are now loaded and works 2012-03-01 18:45:02 +01:00