mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-04-20 15:36:16 -04:00
Merge branch 'develop' of github.com:ether/etherpad-lite into develop
This commit is contained in:
commit
d7fd3934de
9 changed files with 59 additions and 16 deletions
1
.github/workflows/frontend-tests.yml
vendored
1
.github/workflows/frontend-tests.yml
vendored
|
@ -78,6 +78,7 @@ jobs:
|
||||||
ep_align
|
ep_align
|
||||||
ep_author_hover
|
ep_author_hover
|
||||||
ep_cursortrace
|
ep_cursortrace
|
||||||
|
ep_embedmedia
|
||||||
ep_font_size
|
ep_font_size
|
||||||
ep_hash_auth
|
ep_hash_auth
|
||||||
ep_headings2
|
ep_headings2
|
||||||
|
|
|
@ -1,3 +1,12 @@
|
||||||
|
# 1.8.12
|
||||||
|
|
||||||
|
### Notable fixes
|
||||||
|
|
||||||
|
* Fixed a bug in the `dirty` database driver that sometimes caused Node.js to
|
||||||
|
crash during shutdown and lose buffered database writes.
|
||||||
|
* Fixed a regression in v1.8.8 that caused "Uncaught TypeError: Cannot read
|
||||||
|
property '0' of undefined" with some plugins (#4885)
|
||||||
|
|
||||||
# 1.8.11
|
# 1.8.11
|
||||||
|
|
||||||
### Notable fixes
|
### Notable fixes
|
||||||
|
|
|
@ -26,7 +26,7 @@ Etherpad is extremely flexible providing you the means to modify it to solve wha
|
||||||
[](https://github.com/ether/etherpad-lite/actions/workflows/frontend-admin-tests.yml) [](https://github.com/ether/etherpad-lite/actions/workflows/frontend-tests.yml) [](https://github.com/ether/etherpad-lite/actions/workflows/windows-installer.yml)
|
[](https://github.com/ether/etherpad-lite/actions/workflows/frontend-admin-tests.yml) [](https://github.com/ether/etherpad-lite/actions/workflows/frontend-tests.yml) [](https://github.com/ether/etherpad-lite/actions/workflows/windows-installer.yml)
|
||||||
|
|
||||||
### Engagement
|
### Engagement
|
||||||
<a href="https://hub.docker.com/r/etherpad/etherpad"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/etherpad/etherpad?color=%2344b492"></a>    
|
<a href="https://hub.docker.com/r/etherpad/etherpad"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/etherpad/etherpad?color=%2344b492"></a> [](https://discord.com/invite/daEjfhw) [](https://static.etherpad.org/index.html)  
|
||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ exports.expressCreateServer = (hookName, args, cb) => {
|
||||||
next();
|
next();
|
||||||
} else {
|
} else {
|
||||||
// the pad id was sanitized, so we redirect to the sanitized version
|
// the pad id was sanitized, so we redirect to the sanitized version
|
||||||
const realURL = encodeURIComponent(sanitizedPadId) + new URL(req.url).search;
|
const realURL = encodeURIComponent(sanitizedPadId) + new URL(req.url, 'http://invalid.invalid').search;
|
||||||
res.header('Location', realURL);
|
res.header('Location', realURL);
|
||||||
res.status(302).send(`You should be redirected to <a href="${realURL}">${realURL}</a>`);
|
res.status(302).send(`You should be redirected to <a href="${realURL}">${realURL}</a>`);
|
||||||
}
|
}
|
||||||
|
|
|
@ -123,6 +123,15 @@ const sanitizePathname = (p) => {
|
||||||
return p;
|
return p;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const compatPaths = {
|
||||||
|
'js/browser.js': 'js/vendors/browser.js',
|
||||||
|
'js/farbtastic.js': 'js/vendors/farbtastic.js',
|
||||||
|
'js/gritter.js': 'js/vendors/gritter.js',
|
||||||
|
'js/html10n.js': 'js/vendors/html10n.js',
|
||||||
|
'js/jquery.js': 'js/vendors/jquery.js',
|
||||||
|
'js/nice-select.js': 'js/vendors/nice-select.js',
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* creates the minifed javascript for the given minified name
|
* creates the minifed javascript for the given minified name
|
||||||
* @param req the Express request
|
* @param req the Express request
|
||||||
|
@ -139,11 +148,11 @@ const minify = async (req, res) => {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Backward compatibility for plugins that were written when jQuery lived at
|
// Backward compatibility for plugins that require() files from old paths.
|
||||||
// src/static/js/jquery.js.
|
const newLocation = compatPaths[filename.replace(/^plugins\/ep_etherpad-lite\/static\//, '')];
|
||||||
if (['js/jquery.js', 'plugins/ep_etherpad-lite/static/js/jquery.js'].indexOf(filename) !== -1) {
|
if (newLocation != null) {
|
||||||
logger.warn(`request for deprecated jQuery path: ${filename}`);
|
logger.warn(`request for deprecated path "${filename}", replacing with "${newLocation}"`);
|
||||||
filename = 'js/vendors/jquery.js';
|
filename = newLocation;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Handle static files for plugins/libraries:
|
/* Handle static files for plugins/libraries:
|
||||||
|
|
14
src/package-lock.json
generated
14
src/package-lock.json
generated
|
@ -1413,9 +1413,9 @@
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"dirty": {
|
"dirty": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/dirty/-/dirty-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/dirty/-/dirty-1.1.1.tgz",
|
||||||
"integrity": "sha1-cO3SuZlUHcmXT9Ooy9DGcP4jYHg="
|
"integrity": "sha512-l/SMZcT+MjqOPpjarzJ8nQdxtxurURJM7js1l0Q2TQWtNbPzDYzkK++HlbT+XmM+adPFNdb3SOlVz9Jr7Df7xQ=="
|
||||||
},
|
},
|
||||||
"doctrine": {
|
"doctrine": {
|
||||||
"version": "3.0.0",
|
"version": "3.0.0",
|
||||||
|
@ -8419,14 +8419,14 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ueberdb2": {
|
"ueberdb2": {
|
||||||
"version": "1.3.1",
|
"version": "1.3.2",
|
||||||
"resolved": "https://registry.npmjs.org/ueberdb2/-/ueberdb2-1.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/ueberdb2/-/ueberdb2-1.3.2.tgz",
|
||||||
"integrity": "sha512-uhUSJfI5sNWdiXxae0kOg88scaMIKcV0CVeojwPQzgm93vQVuGyCqS1g1i3gTZel6SwmXRFtYtfmtAmiEe+HBQ==",
|
"integrity": "sha512-7Ub5jDsIS+qjjsNV7yp1CHXHVe2K9ZUpwaHi9BZf3ai0DxtuHOfMada1wxL6iyEjwYXh/Nsu80iyId51wHFf4A==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"async": "^3.2.0",
|
"async": "^3.2.0",
|
||||||
"cassandra-driver": "^4.5.1",
|
"cassandra-driver": "^4.5.1",
|
||||||
"channels": "0.0.4",
|
"channels": "0.0.4",
|
||||||
"dirty": "^1.1.0",
|
"dirty": "^1.1.1",
|
||||||
"elasticsearch": "^16.7.1",
|
"elasticsearch": "^16.7.1",
|
||||||
"mongodb": "^3.6.3",
|
"mongodb": "^3.6.3",
|
||||||
"mssql": "^7.0.0-beta.2",
|
"mssql": "^7.0.0-beta.2",
|
||||||
|
|
|
@ -69,7 +69,7 @@
|
||||||
"threads": "^1.4.0",
|
"threads": "^1.4.0",
|
||||||
"tiny-worker": "^2.3.0",
|
"tiny-worker": "^2.3.0",
|
||||||
"tinycon": "0.6.8",
|
"tinycon": "0.6.8",
|
||||||
"ueberdb2": "^1.3.1",
|
"ueberdb2": "^1.3.2",
|
||||||
"underscore": "1.12.0",
|
"underscore": "1.12.0",
|
||||||
"unorm": "1.6.0",
|
"unorm": "1.6.0",
|
||||||
"wtfnode": "^0.8.4"
|
"wtfnode": "^0.8.4"
|
||||||
|
|
|
@ -3894,7 +3894,7 @@ function Ace2Inner() {
|
||||||
documentAttributeManager = new AttributeManager(rep, performDocumentApplyChangeset);
|
documentAttributeManager = new AttributeManager(rep, performDocumentApplyChangeset);
|
||||||
|
|
||||||
editorInfo.ace_performDocumentApplyAttributesToRange =
|
editorInfo.ace_performDocumentApplyAttributesToRange =
|
||||||
(...args) => documentAttributeManager.setAttributesOnRange(args);
|
(...args) => documentAttributeManager.setAttributesOnRange(...args);
|
||||||
|
|
||||||
this.init = () => {
|
this.init = () => {
|
||||||
$(document).ready(() => {
|
$(document).ready(() => {
|
||||||
|
|
24
src/tests/backend/specs/pads-with-spaces.js
Normal file
24
src/tests/backend/specs/pads-with-spaces.js
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
const common = require('../common');
|
||||||
|
const assert = require('../assert-legacy').strict;
|
||||||
|
|
||||||
|
let agent;
|
||||||
|
|
||||||
|
describe(__filename, function () {
|
||||||
|
before(async function () {
|
||||||
|
agent = await common.init();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('supports pads with spaces, regression test for #4883', async function () {
|
||||||
|
await agent.get('/p/pads with spaces')
|
||||||
|
.expect(302)
|
||||||
|
.expect('location', 'pads_with_spaces');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('supports pads with spaces and query, regression test for #4883', async function () {
|
||||||
|
await agent.get('/p/pads with spaces?showChat=true&noColors=false')
|
||||||
|
.expect(302)
|
||||||
|
.expect('location', 'pads_with_spaces?showChat=true&noColors=false');
|
||||||
|
});
|
||||||
|
});
|
Loading…
Add table
Add a link
Reference in a new issue