Commit Graph

1563 Commits

Author SHA1 Message Date
Hossein Marzban 6f309ac20a
lint: pluginfw/client_plugins (#4572) 2020-12-15 21:40:41 -05:00
Richard Hansen a44debdcfe Add `'` and `*` to acceptable URL characters
These characters are in the RFC3986 reserved set.

These characters are added to the set of characters that cannot be the
last character of a URL to avoid mislinkification.
2020-12-14 07:03:17 +00:00
Richard Hansen 7d23278ed0 Exclude `?`, `!`, and `)` from last character of URL
Now the final character in each of these example strings is no longer
considered part of the URL:
  * Have you seen http://example.com?
  * Look at http://example.com!
  * (see http://example.com)
2020-12-14 07:03:17 +00:00
Richard Hansen 7e8de5540f Factor out common URL regular expression code
This also eliminates the differences between the regular expressions.
2020-12-14 07:03:17 +00:00
Richard Hansen ca01856f94 lint: Fix some straightforward ESLint errors 2020-12-14 07:03:17 +00:00
Richard Hansen e66e8a4eb2 pad: Fix wrong variable name in global exception handler
This fixes a bug introduced in commit
c845d985e0.
2020-12-10 22:25:58 +00:00
webzwo0i d25010d5d7
pluginfw: explicitly install the latest version of a plugin, fix for #4536 (#4543) 2020-12-05 14:08:02 +00:00
zonky2 0f1d5e068a
css: Make color button from elipsoid to circle (#4535)
Make color button from elipsoid to circle by own user
https://easycaptures.com/fs/uploaded/1536/3084360130.png
2020-12-05 07:32:15 +00:00
Richard Hansen aa41b0920c admin/plugins: Don't keep adding more Update buttons 2020-11-27 16:59:24 +00:00
Richard Hansen 6a00d7f8d6 admin/plugins: Use jQuery to build the Update button 2020-11-27 16:59:24 +00:00
Richard Hansen 2ddc45bf07 admin/plugins: Simplify jQuery search for plugin actions 2020-11-27 16:59:24 +00:00
Richard Hansen 973644c7dd lint: Fix ESLint errors in `/admin/plugins` code 2020-11-27 16:59:24 +00:00
Richard Hansen 750c7cb1cf pad: Delete unused `ip` and `userAgent` client vars 2020-11-26 15:00:46 +00:00
Richard Hansen 53bc80e381 pad userlist: Use jQuery to create rows
This makes the code easier to read and maintain, and it reduces the
likelihood of introducing an XSS vulnerability.
2020-11-26 15:00:46 +00:00
Ilmar Türk ba7d80fa57
Update dropdowns on language change (#4519) 2020-11-25 21:39:21 +00:00
Richard Hansen e247c716c2 editor: Add argument to suppress SonarCloud error
This also makes it easier for devs to understand the expected function
signature.
2020-11-24 20:06:12 +00:00
Richard Hansen d24306ea6a editor: Delete unused `isTimeUp` argument
This fixes a SonarCloud error.
2020-11-24 20:06:12 +00:00
Richard Hansen ed7ba64635 editor: Delete unused `optModFunc` argument 2020-11-24 20:06:12 +00:00
Richard Hansen d0114d4ac2 editor: Delete commented-out code 2020-11-24 20:06:12 +00:00
Richard Hansen bb722763d0 editor: Delete dead code
This silences some SonarCloud errors.
2020-11-24 20:06:12 +00:00
Richard Hansen 8e5fd19db2 lint: Run `eslint --fix` on `src/` 2020-11-24 20:06:12 +00:00
Richard Hansen 0625739cb8 lint: Declare variables above their first use
This makes it possible to convert from `var` to `let` without getting
ReferenceErrors.
2020-11-24 20:06:12 +00:00
Richard Hansen 7df3ded66f lint: Put opening brace on same line as `function`
Normally I would let `eslint --fix` do this for me, but there's a bug
that causes:

    const x = function ()
    {
      // ...
    };

to become:

    const x = ()
    => {
      // ...
    };

which ESLint thinks is a syntax error. (It probably is; I don't know
enough about the automatic semicolon insertion rules to be confident.)
2020-11-24 20:06:12 +00:00
Richard Hansen 07bcbbd404 pad: Include the stack in the data sent to `/jserror` 2020-11-17 08:02:27 +00:00
Richard Hansen c845d985e0 pad: Pop up an error message on unhandled Promise rejection 2020-11-17 08:02:27 +00:00
Richard Hansen 93c335b3b8 pad: Use a relative URL to simplify
Also avoid creating an unnecessary variable.
2020-11-17 08:02:27 +00:00
Richard Hansen cedd27e4fe plugins: Default the module name to the plugin name 2020-11-13 20:30:27 +00:00
Richard Hansen afb025030c plugins: Use a log4js logger for npm messages 2020-11-13 20:30:27 +00:00
Richard Hansen 8a918fbc46 plugins: `async`ify more functions 2020-11-13 20:30:27 +00:00
Richard Hansen 9f575ebc84 plugins: Delete unused `ensure` function 2020-11-13 20:30:27 +00:00
Richard Hansen ac5614dadd plugins: Don't export `callInit`
It's unused outside of this module.

Also use an arrow function.
2020-11-13 20:30:27 +00:00
Richard Hansen ba4794cf8a plugins: Call `require('./hooks')` at top level 2020-11-13 20:30:27 +00:00
Richard Hansen 14a9479e69 plugins: Use functions from `fs.promises` 2020-11-13 20:30:27 +00:00
Richard Hansen d624aa936e plugins: Fix plugin name in error messages 2020-11-13 20:30:27 +00:00
ilmar d5c5ca224b Fix missing arg handling in html10n.js 2020-11-05 10:38:22 +00:00
Richard Hansen 98de2b0899 Use `contentEditable` for all browsers
This makes it possible to disable `contentEditable` for certain
elements in some circumstances (e.g., on links so that users can click
on them normally).
2020-11-03 19:02:01 +00:00
Richard Hansen 5e2a27a182 Replace `setClassPresence(x, ...)` with `x.classList.toggle(...)` 2020-11-03 19:02:01 +00:00
Richard Hansen 4594608c04 Delete commented-out code 2020-11-03 19:02:01 +00:00
Gabriel Medeiros Coelho ce77c48475 remove unnecessary conditional
if animationState evaluates to -1 or 0, it would end up in a conditional that assign its value to itself. Since this is redundant, it is better to remove this conditional, to avoid an extra check
2020-11-01 01:41:09 -05:00
Sebastian Castro 5a1110d0d6 Display outline when toolbar button focused 2020-10-25 10:34:51 +00:00
Richard Hansen 193028702d pad: Don't paste when middle-clicking on a link 2020-10-25 07:06:29 +00:00
John McLear cb5fcbb74e
editor: allow paste into links (#3802) 2020-10-24 16:59:03 +01:00
Richard Hansen 36aceb3aba hooks: Rewrite `callAll` and `aCallAll` for consistency
Rewrite the `callAll` and `aCallAll` functions to support all
reasonable hook behaviors and to report errors for unreasonable
behaviors (e.g., calling the callback twice).

Now a hook function like the following works as expected when invoked
by `aCallAll`:

```
exports.myHookFn = (hookName, context, cb) => {
  cb('some value');
  return;
};
```
2020-10-24 16:08:50 +01:00
Richard Hansen 55939a0d7e hooks: Delete unused `flatten` function 2020-10-24 16:08:50 +01:00
webzwo0i 1e7a9e1791
tests: better timeslider follow contents (#4421) 2020-10-21 10:05:58 +01:00
Richard Hansen 2379ade7e9 Move out pad.modals.reconnecttimer trailing space 2020-10-20 11:02:37 +01:00
Richard Hansen 734fe9c297 Use jQuery methods to build DOM elements 2020-10-20 11:02:37 +01:00
Richard Hansen a2554fff22 pad: Pop up an error message dialog box upon socket.io error 2020-10-20 10:01:49 +01:00
Richard Hansen 5b887396c3 pad: Check for null collabClient in socket.io event handlers 2020-10-20 10:01:49 +01:00
Richard Hansen b1acf6143a pad: Delete do-nothing `sendClientReady` wrapper 2020-10-20 10:01:49 +01:00
Richard Hansen a712ce457d gritter: Treat strings as text, not HTML
This forces users to use jQuery or DOM objects if they want
formatting, which helps avoid XSS vulnerabilities.
2020-10-20 10:01:49 +01:00
Richard Hansen 8463134125 pad: Improve rendering of uncaught exceptions
* Use jQuery to build the message HTML so that special characters in
    the error message, URL, etc. are properly escaped. This helps
    avoid XSS vulnerabilities.
  * Use bold text for the error message to make it stand out.
  * Add a line break between the error message and "in <url> at line
    <line>" so that the error message stands out more.
  * Use `<p>...</p>` instead of `</br>` to separate the parts of the
    popup.
  * Use CSS for spacing instead of `</br>`.
  * Grammar fixes (add a missing comma, "at" instead of "in").
2020-10-20 10:01:49 +01:00
Richard Hansen d35dbaaacc gritter: Accept jQuery or DOM objects for title and text
Teach Gritter to accept anything that jQuery's `.append()` method
accepts for the title and text of a popup message. This makes it
easier to safely build HTML messages with proper escaping of special
characters (to prevent XSS vulnerabilities).
2020-10-20 10:01:49 +01:00
Richard Hansen d680405f58 pad: Include .js URL in `/jserror` error report 2020-10-20 10:01:49 +01:00
Richard Hansen 7f79d201e6 CSP: Move `index.html` inline code to separate `.js` file 2020-10-12 20:46:06 +01:00
Richard Hansen a4927095ae CSP: Disable the indexCustomInlineScripts hook 2020-10-11 20:31:00 +01:00
Richard Hansen 052fbb944f
plugins: Delete noisy and useless debug message (#4409)
The debug statement mostly printed the following useless message over
and over, causing Travis CI logs to become truncated:

    [DEBUG] pluginfw - [ undefined ] returning
2020-10-11 09:51:53 +01:00
webzwo0i a2328cd7f0
timeslider: bugfix: follow pad contents - only goToLineNumber if it exists (#4390) 2020-10-10 16:57:22 +01:00
John McLear 66df0a572f
Security: FEATURE REMOVAL: Remove all plain text password logic and ui (#4178)
This will be a breaking change for some people.  

We removed all internal password control logic.  If this affects you, you have two options:

1. Use a plugin for authentication and use session based pad access (recommended).
1. Use a plugin for password setting.

The reasoning for removing this feature is to reduce the overall security footprint of Etherpad.  It is unnecessary and cumbersome to keep this feature and with the thousands of available authentication methods available in the world our focus should be on supporting those and allowing more granual access based on their implementations (instead of half assed baking our own).
2020-10-07 13:43:54 +01:00
Richard Hansen ba6bdf35be Make the aceAttribClasses hook harder to misuse 2020-10-07 10:37:56 +01:00
Richard Hansen 5aa318a09b Call the aceAttribClasses hook synchronously
We could instead await the results of the hook, but then all callers
and their callers recursively would have to be converted to async, and
that's a huge change.
2020-10-07 10:37:56 +01:00
Richard Hansen a8cf434d1d import: Replace the `allowAnyoneToImport` check with `userCanModify`
This reduces the number of hoops a user or tool must jump through to
import.
2020-10-05 18:48:16 +01:00
Richard Hansen 2db4b04af3 cookies: Use `SameSite=None` if in an iframe from another site 2020-10-04 08:57:44 +01:00
Richard Hansen bf53162cdd cookies: Use `Lax` instead of `Strict` for `SameSite` 2020-10-04 08:57:44 +01:00
Richard Hansen 3ab0f30ac8 cookies: Use js-cookie to read and write cookies
Rather than reinvent the wheel, use a well-tested library to parse and
write cookies. This should also help prevent XSS vulnerabilities
because the library handles special characters such as semicolon.
2020-10-04 08:57:44 +01:00
Richard Hansen d55edebddd cookies: Refactor `pad_cookie.js`
* Use the cookie functions from `pad_utils.js`.
  * Delete unused methods, variables, and parameters.
  * Simplify the logic.
  * Use an ES6 class instead of a weird literal thingy.
  * Use `const` instead of `var`.
2020-10-04 08:57:44 +01:00
Richard Hansen 304318b618 webaccess: Move pre-authn authz check to a separate hook
Before this change, the authorize hook was invoked twice: once before
authentication and again after (if settings.requireAuthorization is
true). Now pre-authentication authorization is instead handled by a
new preAuthorize hook, and the authorize hook is only invoked after
the user has authenticated.

Rationale: Without this change it is too easy to write an
authorization plugin that is too permissive. Specifically:

  * If the plugin does not check the path for /admin then a non-admin
    user might be able to access /admin pages.
  * If the plugin assumes that the user has already been authenticated
    by the time the authorize function is called then unauthenticated
    users might be able to gain access to restricted resources.

This change also avoids calling the plugin's authorize function twice
per access, which makes it easier for plugin authors to write an
authorization plugin that is easy to understand.

This change may break existing authorization plugins: After this
change, the authorize hook will no longer be able to authorize
non-admin access to /admin pages. This is intentional. Access to admin
pages should instead be controlled via the `is_admin` user setting,
which can be set in the config file or by an authentication plugin.

Also:
  * Add tests for the authenticate and authorize hooks.
  * Disable the authentication failure delay when testing.
2020-09-27 21:19:58 +01:00
Richard Hansen 1e3aa9edff pad: Revert back to sending `CLIENT_READY` on reconnect
Commit 0bb8d73ba2 fixed the author ID
that is saved in the socket.io sessioninfo when the client sends a
`CLIENT_READY` with `reconnect` set to true, so it is now safe to undo
the workaround from PR #3868.

Fixes #4331.
2020-09-26 18:32:04 +01:00
Richard Hansen 45ec8326f0 Add a new 'rejected' disconnect reason
This reason will be used in a future commit that will reject erroneous
messages.
2020-09-22 14:09:07 +01:00
Sebastian Castro 12bd617f51
css: Improve toolbar responsiveness for small screen (#4322)
Until now, the "mobile layout" (with right toolbar on bottom of the screen) was displayed only when screen was smaller than 800px. It made the toolbar break for screen about 1000px when a lot of plugins are in the toolbar.
Now instead, we detect with javascript when the toolbar icons overflow the natural space available, and we switch in "mobile layout" in such case
2020-09-19 19:09:30 +01:00
Richard Hansen 5ac5b65aff Pad: Disable toolbar and import/export when reconnecting 2020-09-15 20:04:17 +01:00
Richard Hansen 0a836ced29 css: Line up line numbers with their rows
Tested with both `no-skin` and `colibris`.
2020-09-15 09:29:09 +01:00
Richard Hansen ed3c82e8c3 Use `null`, not `"null"`, if `sessionID` cookie doesn't exist
`decodeURIComponent(null)` returns the string `'null'`, which we don't
want.
2020-09-11 22:10:04 +01:00
Sebastian Castro 818194da90
editor/performance: Fix performance for large pads (#4267)
* Fix line numbers top padding

This old rule was conflicting with new css rules introduced in 1.8.4

* Fixes #4228 Performance degradation for long pads 

Due to layout trashing when calculating new heights
2020-09-08 14:52:26 +01:00
Richard Hansen da459888dc plugins: Move plugin definitions to avoid monkey patching
Also document the plugin data structures.
2020-09-08 00:50:24 +01:00
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 8cf2bcaeb4 plugins: Fix type typo
`exports.parts` is a topologically sorted array, but the intermediate
collection of parts assembled in `plugins.update()` is associative.
2020-09-08 00:47:32 +01:00
Richard Hansen 442fe1e86f pluginfw: Always include the function name in `hook_fn_name`
Plugin authors are allowed to omit the function name in the `ep.json`
parts definition. For example:

```
{
  "parts": [
    {
      "name": "ep_example",
      "hooks": {
        "authenticate": "ep_example",
        "authFailure": "ep_example"
      }
    }
  ]
}
```

If omitted, the function name is assumed to be the same as the hook
name. Before this change, `hook_fn_name` for the example hooks would
both be `/opt/etherpad-lite/node_modules/ep_example`. Now they are
suffixed with `:authenticate` and `:authFailure`. This improves
logging, and it makes it possible to use `hook_fn_name` to uniquely
identify a particular hook function.
2020-09-05 22:43:17 +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
Richard Hansen 9962be2450 User list: Use flexbox for #myuser div
This makes it easier for an eejsBlock_userlist plugin to add something
to that row.
2020-09-05 12:38:12 +01:00
Richard Hansen b364d12d9b
CSS: User list: Add missing semicolon to CSS property (#4244) 2020-09-04 18:51:42 +01:00
webzwo0i d25cd891ae
remove json2, all supported browsers have JSON now (#4198)
cf. https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/JSON
2020-07-28 00:52:25 +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 1e5680a870
tests / bugfix: Timeslider Chrome 55 Further scroll fix (#4186) 2020-07-20 14:14:02 +01:00
John McLear 3d89eed31a
tests: Further scroll fix for bug in Chrome 55-59 with scrollTo not working (#4185) 2020-07-20 09:49:40 +01:00
John McLear c394b65e75
tests: Further scroll frontend test fix- use var instead of let (#4184) 2020-07-20 09:08:40 +01:00
John McLear bf24063234
Feature: Timeslider follow (#4133)
When new edits come in changes are followed in the time slider.
2020-07-19 23:46:58 +01:00
John McLear 40014d8230
Rate limit Socket IO communication - WIP (#4036)
Includes settings
    Includes i18n
    Includes a nice notification
    Disconnects on rate limit
    Includes feeding into metrics/stats
    Include console warn to server console.
2020-07-19 22:44:24 +01:00
John McLear 3ddce87ee4
bugfix / timeslider: only update timeslider on correct message type -- resolves #4100 2020-07-17 16:40:24 +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
Florian Rittmeier c7581ba6f3
fixes jQuery.Deferred exception as reported in #4132 (#4158) 2020-07-10 15:28:32 +01:00
John McLear b15154cc23
Same site cookie fix - Ready for testing / merge (#3990)
* initial fix for httpprefs

* token

* express_sid fix
2020-07-10 08:43:20 +01:00
John McLear a3386e3e55
Dont use jquery in import handler (#4153)
I think jQ3 update broke imports a bit, so this removes jQuery and also ensures only .etherpad does reload of page.
2020-07-08 14:50:48 +01:00
webzwo0i b7dff552f0
cruft: Remove unecessary consolelogs (#4141) 2020-06-27 20:12:06 +01:00
axlevxa 0e2749831a
UX: Add prefers-reduced-motion query for Colibris skin #4136 (#4137) 2020-06-27 09:49:37 +01:00
Stefan 9a22144a83
staleCode: Remove unnecessary robots.txt entry (#4113) 2020-06-14 20:49:13 +01:00
John McLear 045ac70db8
pluginfw: Make the NEW_CHANGES payload include the message in handleClientMessage 2020-06-12 12:26:33 +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
John McLear 128f3e15eb
stalecode: jQuery 3 (#3903) 2020-06-07 12:01:14 +01:00
John McLear c5584fb5b4
editor: outdent on ol removal (#4088) 2020-06-07 09:51:12 +01:00
John McLear 2cd3dccc4d Revert "Revert "Revert "editor: ul/ol/li - outdent on ol and ul button press"""
This reverts commit fd3980133d.
2020-06-06 20:51:17 +00:00
John McLear fd3980133d Revert "Revert "editor: ul/ol/li - outdent on ol and ul button press""
This reverts commit 82fb6ddc99.
2020-06-06 20:38:08 +00:00
John McLear 82fb6ddc99 Revert "editor: ul/ol/li - outdent on ol and ul button press"
This reverts commit fc88f12bba.
2020-06-06 18:34:51 +00:00
John McLear 56f6973209
import/export: Timeslider export links numeric pad IDs (#4073)
Fixes #4071
2020-06-05 22:50:55 +01:00
John McLear 6dbfe5e43c
editor/ux: Clearauthorship on full doc selected 2020-06-05 22:47:12 +01:00
John McLear a4bdcc3392
tests/editor/ul/li/ol/import/export: Introduce contentcollector.js tests & various OL/UL/LI related bugfixes
1. Introduce contentcollector.js backend tests
1. Fix issue with OL LI items not being properly numbered after import
1. Fix issue with nested OL LI items being improperly numbered on export
1. Fix issue with new lines not being introduced after lists in on import #3961
1. Sanitize HTML on the way in (import)
1. Fix ExportHTML CSS because it needs to support OL > LI > OL not OL > OL [The latter being the correct format]
1. Fix backend tests.
2020-06-05 20:54:16 +01:00
John McLear fc88f12bba
editor: ul/ol/li - outdent on ol and ul button press 2020-06-05 20:00:21 +01:00
John McLear 13bd859f31
Import/export: Fix3032 - importing document botches pad options (#3769)
Fixes #3032
2020-06-05 19:58:25 +01:00
Gerrit Pape f925d5fc74
ui: Add a home icon (#4076)
This commit adds the fontawesome "home" icon, codepoint e80b
2020-06-03 10:56:24 +01:00
Sebastian Castro 7aa7e02e27
Various UI improvement (#4017) 2020-06-02 10:25:43 +01:00
Alex f45d85f615
editor: fix the wrong URL when we use etherpad without /p/ in the URL (#4070) 2020-06-01 22:12:42 +01:00
John McLear 0d51e71578
ux: Better ux for if cookies are disabled or not available. 2020-06-01 20:17:48 +01:00
John McLear bfca481b0b
import: setting for allowing import without author existing 2020-06-01 18:19:06 +01:00
John McLear 2011c24f57
editor: Don't restrict plugins from being able to bring in newline content
#2412 broke this, it was discovered in https://github.com/JohnMcLear/ep_copy_paste_images/issues/20.

The limitation means that images can't be pasted within lists which IMHO is fine.  I could refine this down to OL only but I think images within lists would be fine not to include.
2020-05-29 16:53:08 +01:00
John McLear 00b6a1d9fe
Remove top console logs to stop hosted iFrames being broken. 2020-05-29 12:56:03 +01:00
John McLear b2a723e57f
editor: Don't allow edits during reconnecting
Not the best fix but better than the current status quo.
2020-05-29 12:35:00 +01:00
John McLear 40f36d7eb5
Tests: ShowChat fix (#4049)
Resolves https://github.com/ether/etherpad-lite/issues/3541
2020-05-28 15:18:13 +01:00
John McLear bcdb331c79
tests: Embed test fix (#4020)
* quick fix for iframe code wihch someone broke

* Also fix cookie test
2020-05-27 16:54:20 +01:00
muxator 6dd9e9adc8 assets: also use cache busting via query string in files imported from acs.js
Before this change, a client would require two versions of the same assets (with
and without randomVersionString), wasting resources and triggering all sorts of
hard to debug inconsistencies.

This change should have been part of 95fd5ce2a4 and completes it.
2020-05-15 01:29:13 +02:00
Sebastian Castro d1d8a0ad6d gritter: remove close button added by external plugin
We now already have a functional close button
2020-05-15 01:08:40 +02:00
Sebastian Castro 17d09d2466 css: add missing text color for editorcontainer
Now the content inside the editorcontainer will be correctly colored, like for
example table of content.
2020-05-15 01:08:40 +02:00
Sebastian Castro c8bf643c4e colibris: adds minimum height for scrollbar
Otherwise when there is a lot of content, the scrollbar thumb is too small
2020-05-15 01:08:40 +02:00
Sebastian Castro ac850bfd47 css: fix wrapping, using normal white space and break-word
Wrong config was causing copy paste to lose style attributes, and ep_align
justify to not work properly.
2020-05-15 01:08:40 +02:00
Sebastian Castro 08930fae05 ui: add margin for titles
No margin-top, because as title tags are contained inside magic-dom divs, all
the margin apply (they are not merged as usual).

Move some colibris rules into the skin independent rules.
2020-05-15 01:08:40 +02:00
Sebastian Castro 373932a1df ui: prevent select value to overflow container 2020-05-15 01:08:40 +02:00
Sebastian Castro 4c8f60634e ui: use gritter to display error messages nicely (instead of loading box) 2020-05-15 01:08:40 +02:00
Alex fda0d2884e iframe attribute: move quote 2020-05-13 18:51:09 +02:00
Sebastian Castro 82d1179f24 timeslider: important fix pad content was cropped when bigger than screen size 2020-05-05 12:54:11 +02:00
Sebastian Castro 88dccfe7ce ui: remove no more needed css code for ep_author_neat
This is the last change in PR #3957.
Closes #3954.
2020-05-03 22:36:14 +02:00
Sebastian Castro 9587c1c673 ui: change a bit the architecture of sidediv line number
So we can easily customize with plugins, such as ep_author_neat
2020-05-03 22:36:14 +02:00
Sebastian Castro a522db3ef4 colibris: do not color link with primary color when author color are on
Change link color to blue
Still color the link the authorship have been cleared
closes #3960
2020-05-03 22:36:14 +02:00
Sebastian Castro ff1191d24a toolbar: display the "+" icon to show all buttons only on mobile layout
Otherwise the "+" button is displayed on top of the menu_right toolbar
2020-05-03 22:36:14 +02:00
Sebastian Castro f768e32373 ui: apply mobile layout if screen width < 800px instead of < 720px
Some mobile get large screen now, and also if using a small window on desktop better adapt the visual using mobile layout
2020-05-03 22:36:14 +02:00
Sebastian Castro 01c59b3b88 colibris: apply skin variants to set_title_on_pad 2020-05-03 22:36:14 +02:00
Sebastian Castro 15af63b0f8 ui: display editor only when it is ready
so it avoid strange ui effect when div get positioned
2020-05-03 22:36:14 +02:00
Sebastian Castro d5020f53ab colibris: Fix index page font and colors 2020-05-03 22:36:14 +02:00
Sebastian Castro af67f02da2 select: remove nice-select for safari because of a known bug with fixed position and overflow
Make the safari select looks the same than for other browser
Only the dropdown will be different
2020-05-03 22:36:14 +02:00
Sebastian Castro 23307d14d5 share: change default iframe size, and remove border
From 600*400 to 100%*600
2020-05-03 22:36:14 +02:00
Sebastian Castro 3ac816da2b colibris: gritter color always in white 2020-05-03 22:36:14 +02:00
Sebastian Castro bd443a7f58 colibris: remove old styling for titles inside editor. Leave ep_headings manage it 2020-05-03 22:36:14 +02:00
John McLear 452db293b0 changeset.js: do not lose sync in the timeslider if another user deletes text
If a user deleted text/attributes while another one had the timeslider open,
the timeslider lost sync and spit out errors.

Fixes #3932.
2020-04-27 02:12:17 +02:00
John McLear 09ddfb9e20 pad_impexp: close modal on succesful import 2020-04-21 15:03:09 +00:00
John McLear de09b9a410 ace2_inner: reformatting, no functional changes 2020-04-21 15:02:58 +00:00
John McLear c9a9b7ae42 pad.js: in switchToPad() remove the first iframe before loading the pad
This is an old bug: after an import there were always two iframes with
duplicated content, and the last one was simply on top of the old one.

This bug was there since forever, and became evident when the layout was
migrated to Flexbox.
2020-04-26 03:31:02 +02:00
Luke Williams a471dbeebf html10n: do a lax match between the Accept-Language header and available locales
Before this change, we simply generated an error.

For example:
- if the browser sent 'ru-RU', but Etherpad has 'ru' available, select 'ru';
- if the browser sent 'zh', but we have 'zh-hans' available, use 'zh-hans'.

Fixes #3882.
2020-04-26 03:07:01 +02:00
Sebastian Castro e8cd83286d
css: fix timeslider toolbar on mobile when multiple authors are displayed (#3933) 2020-04-24 20:56:30 +01:00
muxator 1bd595fdc7 ace2_inner: prefix all logging statements: "console.*" -> "top.console.*"
For reference, see:
https://github.com/ether/etherpad-lite/pull/3915#issuecomment-617681463
2020-04-22 22:19:40 +02:00
Sebastian Castro 789dd7acd6 skin builder: add coma at the end of the generated code
Closes #3919
2020-04-22 22:02:25 +02:00