Commit graph

86 commits

Author SHA1 Message Date
muxator
72ccb28382 AbsolutePaths: initial work to allow Etherpad to be run without changing CWD
With this change, it is no longer necessary to "cd" to the Etherpad base
directory to start it: Etherpad runs from everywhere.

Known issues:
- unless the program is started as before (CWD == base directory) it is still
  not possible to install & uninstall plugins via the web interface

--HG--
branch : absolute-paths
2020-04-19 04:51:50 +02:00
Ray Bellis
0c2d662541 plugins download and search: converted to Promises
Also fixed a bug where the system would make a request to the central server for
the plugin list for every search even if the list was already cached.
2019-01-23 12:24:53 +00:00
Ray Bellis
a579dfc285 pluginfw/installer.js: use Promise version of hooks.aCallAll() in install(), uninstall()
We cannot use arrow functions in this file, because code in /src/static can end
up being loaded in browsers, and we still support IE11.
2019-01-18 16:10:48 +00:00
Ray Bellis
80b3019154 pluginfw/plugins.js: converted to Promise API 2019-01-18 13:52:37 +00: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
muxator
9497ee734f prepare to async: trivial reformatting
This change is only cosmetic. Its aim is do make it easier to understand the
async changes that are going to be merged later on. It was extracted from the
original work from Ray Bellis.

To verify that nothing has changed, you can run the following command on each
file touched by this commit:
  npm install uglify-es
  diff --unified <(uglify-js --beautify bracketize <BEFORE.js>) <(uglify-js --beautify bracketize <AFTER.js>)



This is a complete script that does the same automatically (works from a
mercurial clone):

```bash
#!/usr/bin/env bash

set -eu

REVISION=<THIS_REVISION>

PARENT_REV=$(hg identify --rev "${REVISION}" --template '{p1rev}')
FILE_LIST=$(hg status --no-status --change ${REVISION})
UGLIFYJS="node_modules/uglify-es/bin/uglifyjs"

for FILE_NAME in ${FILE_LIST[@]}; do
  echo "Checking ${FILE_NAME}"
  diff --unified \
    <("${UGLIFYJS}" --beautify bracketize <(hg cat --rev "${PARENT_REV}" "${FILE_NAME}")) \
    <("${UGLIFYJS}" --beautify bracketize <(hg cat --rev "${REVISION}"   "${FILE_NAME}"))
done
```
2019-02-08 23:20:57 +01: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
Claudius Mbemba
8d60bd5234 fixed plugin dependency issue
running ./bin/run.sh after the 1st time caused the following error "TypeError: Cannot read property 'dependencies' of undefined".
fixed it.
2017-05-30 05:36:29 +02:00
Stefan
00c9caf7a3 Updated npm to 4.0.2 and removed recursive searching for ep-plugins 2016-11-20 11:28:17 +01:00
John McLear
1f471b0f81 show versions of plugins at startup, fixes #2642 2015-04-28 23:41:55 +01:00
Stefan
da86110f58 Use https to download plugins.json 2015-01-24 12:55:17 +01:00
Stefan
3c6db077ed Change domain for plugins.json request 2015-01-18 14:22:27 +01:00
John McLear
cfa3f15f94 Merge pull request #2373 from webzwo0i/avoid-global-vairables
dont make local variables global
2014-12-16 00:41:41 +00:00
webzwo0i
5d15f655f0 dont make local variables global 2014-12-14 22:01:28 +01:00
Beau Gunderson
645ec830b0 Don't crash on bad plugins.json; fixes #2323 2014-11-18 13:59:36 -08:00
John McLear
e5d77c3763 indentation 2014-11-12 21:39:03 +00:00
John McLear
fc5152c2f3 remove logging 2014-11-06 17:38:38 +00:00
John McLear
c7061e47db use request and a remote ep plugin only endpoint 2014-11-04 17:06:47 +00:00
kpn3m000
da0fe98edc Fixes search on plugins without Description
example "tables_ssl"
2014-07-03 14:24:41 +02: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
Marcel Klehr
6a02302fc9 /admin/plugins: Fix search algorithm (use string match in lower case)
fix #1903
2013-09-23 19:55:35 +02:00
Florent Viard
6f478c4de1 Fix to check if searchTerm is not "undefined" before trying to use it to filter search results.
Signed-off-by: Florent Viard <fviard@lacie.com>
2013-09-11 11:36:09 +02:00
Marcel Klehr
324b9b1f5f pluginfw/installer: Only restart the server when all tasks have finished
fixes #1685
2013-04-08 16:14:03 +02:00
Marcel Klehr
981a33f01e pluginfw/installer.js fire callbacks only once 2013-03-26 14:40:19 +01:00
Marcel Klehr
5d7a8adcb7 Silence npm when using npm.commands.search 2013-03-26 11:33:04 +01:00
Marcel Klehr
9109bd206e Catch all errors in pluginfw/installer.js 2013-03-26 11:20:12 +01:00
Marcel Klehr
1ebbcd2f30 Don't leak event listeners in pluginfw/installer.js
fixes #921
2013-03-25 17:22:51 +01:00
Marcel Klehr
b297784288 Make npm registry access code more sane 2013-03-25 16:51:12 +01:00
Marcel Klehr
0070eab416 Fix caching of npm search results and only make one registry request on /admin/plugins
fixes #1488
2013-03-25 12:45:23 +01:00
John McLear
4cfac2f624 fix extract and checkPad 2013-02-18 08:29:25 -08:00
mluto
037478cbcd Made plugin search not casesensitive 2013-01-31 19:05:23 +01:00
Marcel Klehr
23dd4c73e2 pluginfw/installer.js: Don't freak out users with cryptic errors, just use the error message 2013-01-24 22:40:31 +01:00
John McLear
b5c263dd37 improve search to use description too, bit more cpu heavy for thats okay 2012-12-03 01:41:01 +00:00
Marcel Klehr
78e64ffea8 Mimic, replace or work around removed npm utils. 2012-10-28 18:34:20 +01:00
Chad Weider
b691606c4e Replace ParentRequire hack.
Instead of hacking with the internals of require, make client_plugins aware
and capable of sharing behavior.
2012-09-11 21:16:47 -07:00
Chad Weider
1258ed3a0d Split client and server plugin functionality.
There is virtually no shared code for the client, extract it into its own
module and do away with the switches.
2012-09-11 21:16:47 -07:00
Chad Weider
9394495364 Inject plugins into hooks. 2012-09-11 21:16:47 -07:00
Chad Weider
3631f0ece3 Inject special normalization behavior. 2012-09-11 21:16:47 -07:00
Chad Weider
e375b6212a Static functions are static. 2012-09-11 21:16:47 -07:00
Chad Weider
b0d71df604 Fix worthless indentation. 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
a0548af021 Merge branch 'develop' of git://github.com/Pita/etherpad-lite into restartserver 2012-07-03 23:32:37 +02:00
Egil Moeller
b438a278a1 Make the server restart on plugin install 2012-07-03 23:31:44 +02:00
Marcel Klehr
227477967f Fix plugin loader
make it work on client side and with relative paths
2012-06-29 12:40:16 +02:00
Marcel Klehr
b0d369883b Fix plugin loader to work with windows paths (e.g. 'D:\foo\...') 2012-06-28 15:58:28 +02:00
Egil Moeller
3338db9485 Bugfixes 2012-06-05 13:32:33 +02:00