Compare commits

...

190 Commits

Author SHA1 Message Date
dependabot[bot] 71fdca9f68
build(deps-dev): bump sinon from 17.0.0 to 17.0.1 in /src (#6020)
Bumps [sinon](https://github.com/sinonjs/sinon) from 17.0.0 to 17.0.1.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/main/docs/changelog.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v17.0.0...v17.0.1)

---
updated-dependencies:
- dependency-name: sinon
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-01 20:30:55 +01:00
dependabot[bot] 36d5778be6
build(deps-dev): bump selenium-webdriver from 4.14.0 to 4.15.0 in /src (#6019)
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.14.0 to 4.15.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Commits](https://github.com/SeleniumHQ/selenium/compare/selenium-4.14.0...selenium-4.15.0)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-01 20:30:37 +01:00
dependabot[bot] fddefc0409
build(deps): bump terser from 5.23.0 to 5.24.0 in /src (#6014)
Bumps [terser](https://github.com/terser/terser) from 5.23.0 to 5.24.0.
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.23.0...v5.24.0)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-01 20:30:22 +01:00
dependabot[bot] 6286ef3918
build(deps): bump ueberdb2 from 4.2.34 to 4.2.35 in /src (#6013)
Bumps [ueberdb2](https://github.com/ether/ueberDB) from 4.2.34 to 4.2.35.
- [Changelog](https://github.com/ether/ueberDB/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ether/ueberDB/compare/v4.2.34...v4.2.35)

---
updated-dependencies:
- dependency-name: ueberdb2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-01 20:30:01 +01:00
dependabot[bot] 71b4cda48b
build(deps): bump marked from 9.1.3 to 9.1.4 in /src/bin/doc (#6015)
Bumps [marked](https://github.com/markedjs/marked) from 9.1.3 to 9.1.4.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v9.1.3...v9.1.4)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-01 20:29:51 +01:00
dependabot[bot] b3e5d49a1a
build(deps): bump marked from 9.1.2 to 9.1.3 in /src/bin/doc (#6011)
Bumps [marked](https://github.com/markedjs/marked) from 9.1.2 to 9.1.3.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v9.1.2...v9.1.3)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-30 18:14:26 +01:00
dependabot[bot] c4a7098ef9
build(deps): bump rate-limiter-flexible from 3.0.2 to 3.0.3 in /src (#6009)
Bumps [rate-limiter-flexible](https://github.com/animir/node-rate-limiter-flexible) from 3.0.2 to 3.0.3.
- [Release notes](https://github.com/animir/node-rate-limiter-flexible/releases)
- [Commits](https://github.com/animir/node-rate-limiter-flexible/commits)

---
updated-dependencies:
- dependency-name: rate-limiter-flexible
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-30 16:33:17 +01:00
dependabot[bot] 7bec67d3cf
build(deps): bump ueberdb2 from 4.2.32 to 4.2.34 in /src (#6010)
Bumps [ueberdb2](https://github.com/ether/ueberDB) from 4.2.32 to 4.2.34.
- [Changelog](https://github.com/ether/ueberDB/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ether/ueberDB/compare/v4.2.32...v4.2.34)

---
updated-dependencies:
- dependency-name: ueberdb2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-30 16:32:57 +01:00
dependabot[bot] 7f6c342660
build(deps): bump terser from 5.22.0 to 5.23.0 in /src (#6008)
Bumps [terser](https://github.com/terser/terser) from 5.22.0 to 5.23.0.
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.22.0...v5.23.0)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-30 16:32:43 +01:00
translatewiki.net 85c5b46cc6 Localisation updates from https://translatewiki.net. 2023-10-30 13:05:51 +01:00
SamTV12345 c7cb2e663c Fixed documentation of Cli.js 2023-10-29 08:55:54 +01:00
SamTV12345 5bf5d1e720 Merge branch 'master' into develop 2023-10-28 16:34:40 +02:00
SamTV12345 016f43ec4f Merge branch 'develop' 2023-10-28 16:34:39 +02:00
SamTV12345 c95799e712 bump version 2023-10-28 16:34:38 +02:00
SamTV12345 4f550e17de Added changelog. 2023-10-28 16:34:25 +02:00
SamTV12345 a085ea5134 Fixed release script. 2023-10-28 16:30:41 +02:00
dependabot[bot] 7dfac03480
build(deps): bump express-rate-limit from 7.1.2 to 7.1.3 in /src (#6006)
Bumps [express-rate-limit](https://github.com/express-rate-limit/express-rate-limit) from 7.1.2 to 7.1.3.
- [Release notes](https://github.com/express-rate-limit/express-rate-limit/releases)
- [Changelog](https://github.com/express-rate-limit/express-rate-limit/blob/main/changelog.md)
- [Commits](https://github.com/express-rate-limit/express-rate-limit/compare/v7.1.2...v7.1.3)

---
updated-dependencies:
- dependency-name: express-rate-limit
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-27 20:36:19 +02:00
dependabot[bot] 65f5ed8964
build(deps): bump axios from 1.5.1 to 1.6.0 in /src (#6007)
Bumps [axios](https://github.com/axios/axios) from 1.5.1 to 1.6.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.5.1...v1.6.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-27 20:35:32 +02:00
dependabot[bot] 741a8e6190
build(deps): bump ueberdb2 from 4.2.31 to 4.2.32 in /src (#6004)
Bumps [ueberdb2](https://github.com/ether/ueberDB) from 4.2.31 to 4.2.32.
- [Changelog](https://github.com/ether/ueberDB/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ether/ueberDB/compare/v4.2.31...v4.2.32)

---
updated-dependencies:
- dependency-name: ueberdb2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-26 21:57:51 +02:00
translatewiki.net bcf0b67677 Localisation updates from https://translatewiki.net. 2023-10-26 13:06:16 +02:00
dependabot[bot] beda2001be
build(deps): bump ueberdb2 from 4.2.30 to 4.2.31 in /src (#5998)
Bumps [ueberdb2](https://github.com/ether/ueberDB) from 4.2.30 to 4.2.31.
- [Changelog](https://github.com/ether/ueberDB/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ether/ueberDB/compare/v4.2.30...v4.2.31)

---
updated-dependencies:
- dependency-name: ueberdb2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-25 19:09:14 +02:00
dependabot[bot] 0f091113f0
build(deps-dev): bump eslint from 8.51.0 to 8.52.0 in /src (#6000)
Bumps [eslint](https://github.com/eslint/eslint) from 8.51.0 to 8.52.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.51.0...v8.52.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-25 19:09:05 +02:00
dependabot[bot] ea551a9a31
build(deps): bump express-rate-limit from 7.1.1 to 7.1.2 in /src (#5999)
Bumps [express-rate-limit](https://github.com/express-rate-limit/express-rate-limit) from 7.1.1 to 7.1.2.
- [Release notes](https://github.com/express-rate-limit/express-rate-limit/releases)
- [Changelog](https://github.com/express-rate-limit/express-rate-limit/blob/main/changelog.md)
- [Commits](https://github.com/express-rate-limit/express-rate-limit/compare/v7.1.1...v7.1.2)

---
updated-dependencies:
- dependency-name: express-rate-limit
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-25 19:08:31 +02:00
dependabot[bot] 272ca4891e
build(deps): bump actions/setup-node from 3 to 4 (#6002)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3 to 4.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](https://github.com/actions/setup-node/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-25 19:08:24 +02:00
SamTV12345 f649b1e6f7
Fix/log4js (#5766)
* Updated log4js

* Updated log4js version.

* Removed requests and moved to axios.

* Fixed startup.

* Fixed windows dependency install.

* Fixed import export rate limiter.

* Fixed all log levels.
2023-10-22 18:26:58 +02:00
dependabot[bot] f64ddd9cb1
build(deps): bump rate-limiter-flexible from 3.0.1 to 3.0.2 in /src (#5996)
Bumps [rate-limiter-flexible](https://github.com/animir/node-rate-limiter-flexible) from 3.0.1 to 3.0.2.
- [Release notes](https://github.com/animir/node-rate-limiter-flexible/releases)
- [Commits](https://github.com/animir/node-rate-limiter-flexible/commits/v3.0.2)

---
updated-dependencies:
- dependency-name: rate-limiter-flexible
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-21 10:40:32 +02:00
dependabot[bot] 206338a64a
build(deps): bump saucelabs/sauce-connect-action from 2.3.4 to 2.3.5 (#5997)
Bumps [saucelabs/sauce-connect-action](https://github.com/saucelabs/sauce-connect-action) from 2.3.4 to 2.3.5.
- [Release notes](https://github.com/saucelabs/sauce-connect-action/releases)
- [Changelog](https://github.com/saucelabs/sauce-connect-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/saucelabs/sauce-connect-action/compare/v2.3.4...v2.3.5)

---
updated-dependencies:
- dependency-name: saucelabs/sauce-connect-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-21 10:40:23 +02:00
dependabot[bot] 4245b24454
build(deps-dev): bump sinon from 16.1.3 to 17.0.0 in /src (#5995)
Bumps [sinon](https://github.com/sinonjs/sinon) from 16.1.3 to 17.0.0.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/main/docs/changelog.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v16.1.3...v17.0.0)

---
updated-dependencies:
- dependency-name: sinon
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-21 10:40:10 +02:00
najanajana 97a3f27732
normalized 3rd level headings and adapted the max-width of the body (#5994) 2023-10-19 22:12:32 +02:00
SamTV12345 cc22c195d8
Use XHTML syntax for valid Abiword export. (#5986) 2023-10-19 21:34:33 +02:00
najanajana eddaa83912
fixed format of json (#5992)
* fixed format of json

* fixed link for language codes
2023-10-19 21:33:12 +02:00
dependabot[bot] 226dff6600
build(deps-dev): bump sinon from 16.1.0 to 16.1.3 in /src (#5989)
Bumps [sinon](https://github.com/sinonjs/sinon) from 16.1.0 to 16.1.3.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/main/docs/changelog.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v16.1.0...v16.1.3)

---
updated-dependencies:
- dependency-name: sinon
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-19 21:26:52 +02:00
dependabot[bot] 57f0c9a79f
build(deps): bump ueberdb2 from 4.2.28 to 4.2.30 in /src (#5991)
Bumps [ueberdb2](https://github.com/ether/ueberDB) from 4.2.28 to 4.2.30.
- [Changelog](https://github.com/ether/ueberDB/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ether/ueberDB/compare/v4.2.28...v4.2.30)

---
updated-dependencies:
- dependency-name: ueberdb2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-19 21:21:01 +02:00
alaric1995 9e7ab259bc
format (#5993) 2023-10-19 19:52:50 +02:00
dependabot[bot] 7e1ccd3f4e
build(deps): bump ueberdb2 from 4.2.26 to 4.2.28 in /src (#5984)
Bumps [ueberdb2](https://github.com/ether/ueberDB) from 4.2.26 to 4.2.28.
- [Changelog](https://github.com/ether/ueberDB/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ether/ueberDB/compare/v4.2.26...v4.2.28)

---
updated-dependencies:
- dependency-name: ueberdb2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-17 20:43:56 +02:00
dependabot[bot] 51e8953697
build(deps): bump marked from 9.1.1 to 9.1.2 in /src/bin/doc (#5982)
Bumps [marked](https://github.com/markedjs/marked) from 9.1.1 to 9.1.2.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v9.1.1...v9.1.2)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-17 12:50:05 +02:00
SamTV12345 ff1b929eb2
Added jsdoc for the node part of etherpad. (#5983) 2023-10-17 12:49:56 +02:00
dependabot[bot] 53d1e8a160
build(deps): bump rate-limiter-flexible from 3.0.0 to 3.0.1 in /src (#5981)
Bumps [rate-limiter-flexible](https://github.com/animir/node-rate-limiter-flexible) from 3.0.0 to 3.0.1.
- [Release notes](https://github.com/animir/node-rate-limiter-flexible/releases)
- [Commits](https://github.com/animir/node-rate-limiter-flexible/commits)

---
updated-dependencies:
- dependency-name: rate-limiter-flexible
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-16 17:39:26 +02:00
dependabot[bot] f56124a722
build(deps): bump terser from 5.21.0 to 5.22.0 in /src (#5980)
Bumps [terser](https://github.com/terser/terser) from 5.21.0 to 5.22.0.
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.21.0...v5.22.0)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-16 17:39:17 +02:00
translatewiki.net 90cdea6ca9 Localisation updates from https://translatewiki.net. 2023-10-16 13:07:37 +02:00
SamTV12345 b44af95cb8 Added mysql ueberdb fix. 2023-10-14 00:07:24 +02:00
dependabot[bot] 86b7a71b00
build(deps): bump resolve from 1.22.6 to 1.22.8 in /src (#5976) 2023-10-13 22:49:28 +02:00
dependabot[bot] aa9937b9c2
build(deps): bump ueberdb2 from 4.2.21 to 4.2.22 in /src (#5978)
Bumps [ueberdb2](https://github.com/ether/ueberDB) from 4.2.21 to 4.2.22.
- [Changelog](https://github.com/ether/ueberDB/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ether/ueberDB/compare/v4.2.21...v4.2.22)

---
updated-dependencies:
- dependency-name: ueberdb2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-13 20:23:42 +02:00
dependabot[bot] dc8434dd8d
build(deps): bump marked from 9.1.0 to 9.1.1 in /src/bin/doc (#5977)
Bumps [marked](https://github.com/markedjs/marked) from 9.1.0 to 9.1.1.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v9.1.0...v9.1.1)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-13 20:15:54 +02:00
translatewiki.net 1085d9c1a2 Localisation updates from https://translatewiki.net. 2023-10-12 13:06:40 +02:00
dependabot[bot] 404771c162
build(deps): bump ueberdb2 from 4.2.20 to 4.2.21 in /src (#5975)
Bumps [ueberdb2](https://github.com/ether/ueberDB) from 4.2.20 to 4.2.21.
- [Changelog](https://github.com/ether/ueberDB/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ether/ueberDB/compare/v4.2.20...v4.2.21)

---
updated-dependencies:
- dependency-name: ueberdb2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-12 11:20:25 +02:00
dependabot[bot] 824b0828ae
build(deps): bump openapi-backend from 5.10.0 to 5.10.5 in /src (#5972) 2023-10-11 02:45:38 +02:00
dependabot[bot] 86e504984c
build(deps-dev): bump selenium-webdriver from 4.13.0 to 4.14.0 in /src (#5973)
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.13.0 to 4.14.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Commits](https://github.com/SeleniumHQ/selenium/compare/selenium-4.13.0...selenium-4.14.0)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-10 21:10:53 +02:00
dependabot[bot] 401330b295
build(deps): bump express-rate-limit from 7.1.0 to 7.1.1 in /src (#5970)
Bumps [express-rate-limit](https://github.com/express-rate-limit/express-rate-limit) from 7.1.0 to 7.1.1.
- [Release notes](https://github.com/express-rate-limit/express-rate-limit/releases)
- [Changelog](https://github.com/express-rate-limit/express-rate-limit/blob/main/changelog.md)
- [Commits](https://github.com/express-rate-limit/express-rate-limit/compare/v7.1.0...v7.1.1)

---
updated-dependencies:
- dependency-name: express-rate-limit
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-09 19:51:45 +02:00
dependabot[bot] 3cde3e8570
build(deps): bump ueberdb2 from 4.2.17 to 4.2.20 in /src (#5971)
Bumps [ueberdb2](https://github.com/ether/ueberDB) from 4.2.17 to 4.2.20.
- [Changelog](https://github.com/ether/ueberDB/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ether/ueberDB/compare/v4.2.17...v4.2.20)

---
updated-dependencies:
- dependency-name: ueberdb2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-09 19:51:38 +02:00
dependabot[bot] a21b28a12d
build(deps-dev): bump eslint from 8.50.0 to 8.51.0 in /src (#5969)
Bumps [eslint](https://github.com/eslint/eslint) from 8.50.0 to 8.51.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.50.0...v8.51.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-09 19:01:47 +02:00
dependabot[bot] ab85331083
build(deps): bump ansi-regex in /src (#5967)
Bumps  and [ansi-regex](https://github.com/chalk/ansi-regex). These dependencies needed to be updated together.

Updates `ansi-regex` from 3.0.0 to 5.0.1
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v3.0.0...v5.0.1)

Updates `ansi-regex` from 4.1.0 to 5.0.1
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v3.0.0...v5.0.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
- dependency-name: ansi-regex
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-07 12:14:55 +02:00
dependabot[bot] eb5970779f
build(deps-dev): bump sinon from 16.0.0 to 16.1.0 in /src (#5966)
Bumps [sinon](https://github.com/sinonjs/sinon) from 16.0.0 to 16.1.0.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/main/docs/changelog.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v16.0.0...v16.1.0)

---
updated-dependencies:
- dependency-name: sinon
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-06 17:57:04 +02:00
dependabot[bot] 5095ff5e1b
build(deps): bump marked from 9.0.3 to 9.1.0 in /src/bin/doc (#5965)
Bumps [marked](https://github.com/markedjs/marked) from 9.0.3 to 9.1.0.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v9.0.3...v9.1.0)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-06 17:56:58 +02:00
dependabot[bot] a89da8569d
build(deps): bump express-rate-limit from 7.0.2 to 7.1.0 in /src (#5964)
Bumps [express-rate-limit](https://github.com/express-rate-limit/express-rate-limit) from 7.0.2 to 7.1.0.
- [Release notes](https://github.com/express-rate-limit/express-rate-limit/releases)
- [Changelog](https://github.com/express-rate-limit/express-rate-limit/blob/main/changelog.md)
- [Commits](https://github.com/express-rate-limit/express-rate-limit/compare/v7.0.2...v7.1.0)

---
updated-dependencies:
- dependency-name: express-rate-limit
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-05 13:30:28 +02:00
dependabot[bot] 7a67cf8aad
build(deps): bump openapi-backend from 5.9.2 to 5.10.0 in /src (#5960)
Bumps [openapi-backend](https://github.com/anttiviljami/openapi-backend) from 5.9.2 to 5.10.0.
- [Commits](https://github.com/anttiviljami/openapi-backend/compare/5.9.2...5.10.0)

---
updated-dependencies:
- dependency-name: openapi-backend
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-04 12:48:03 +02:00
dependabot[bot] df59cceac7
build(deps): bump terser from 5.20.0 to 5.21.0 in /src (#5961)
Bumps [terser](https://github.com/terser/terser) from 5.20.0 to 5.21.0.
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.20.0...v5.21.0)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-04 12:47:40 +02:00
SamTV12345 8b5264db41 Updated ueberdb version. 2023-10-02 22:57:51 +02:00
dependabot[bot] 3dedadd3bf
build(deps): bump ueberdb2 from 4.2.13 to 4.2.14 in /src (#5956)
Bumps [ueberdb2](https://github.com/ether/ueberDB) from 4.2.13 to 4.2.14.
- [Changelog](https://github.com/ether/ueberDB/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ether/ueberDB/compare/v4.2.13...v4.2.14)

---
updated-dependencies:
- dependency-name: ueberdb2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-02 19:30:30 +02:00
dependabot[bot] b6ce8c7377
build(deps): bump express-rate-limit from 7.0.1 to 7.0.2 in /src (#5952)
Bumps [express-rate-limit](https://github.com/express-rate-limit/express-rate-limit) from 7.0.1 to 7.0.2.
- [Release notes](https://github.com/express-rate-limit/express-rate-limit/releases)
- [Changelog](https://github.com/express-rate-limit/express-rate-limit/blob/main/changelog.md)
- [Commits](https://github.com/express-rate-limit/express-rate-limit/compare/v7.0.1...v7.0.2)

---
updated-dependencies:
- dependency-name: express-rate-limit
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-28 15:47:39 +02:00
dependabot[bot] 22283b513c
build(deps): bump axios from 1.5.0 to 1.5.1 in /src (#5951)
Bumps [axios](https://github.com/axios/axios) from 1.5.0 to 1.5.1.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.5.0...v1.5.1)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-27 21:12:42 +02:00
dependabot[bot] 18d3a761c7
build(deps-dev): bump selenium-webdriver from 4.12.0 to 4.13.0 in /src (#5950)
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.12.0 to 4.13.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Commits](https://github.com/SeleniumHQ/selenium/compare/selenium-4.12.0...selenium-4.13.0)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-27 21:12:34 +02:00
dependabot[bot] 86c5db7a2c
build(deps): bump ueberdb2 from 4.2.12 to 4.2.13 in /src (#5949)
Bumps [ueberdb2](https://github.com/ether/ueberDB) from 4.2.12 to 4.2.13.
- [Changelog](https://github.com/ether/ueberDB/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ether/ueberDB/compare/v4.2.12...v4.2.13)

---
updated-dependencies:
- dependency-name: ueberdb2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-27 21:12:27 +02:00
dependabot[bot] e823014a04
build(deps): bump ueberdb2 from 4.2.11 to 4.2.12 in /src (#5947) 2023-09-26 07:17:44 +02:00
dependabot[bot] 8d9c6a4582
build(deps-dev): bump eslint from 8.49.0 to 8.50.0 in /src (#5946) 2023-09-26 07:17:33 +02:00
Stefan f9a3a6aaae
Improve update check (#5945)
* Send etherpad version in update check request
* Cache etherpad informations for one hour
* Change format of User-Agent
* Improve exception handling
2023-09-25 13:05:33 +02:00
SamTV12345 f2faa3fa84
Only react to tags starting with v. 2023-09-24 14:06:03 +02:00
SamTV12345 beab8e767f Merge branch 'master' into develop 2023-09-23 14:58:47 +02:00
SamTV12345 293bd64522 Merge branch 'develop' 2023-09-23 14:58:46 +02:00
SamTV12345 75183e737d bump version 2023-09-23 14:58:45 +02:00
SamTV12345 eb7ce6ccf6 Bumped package lock json. 2023-09-23 12:10:30 +02:00
SamTV12345 d13e17c266 Reset version. 2023-09-23 12:10:05 +02:00
SamTV12345 f993bf1073 Merge branch 'master' into develop 2023-09-23 12:04:33 +02:00
SamTV12345 20f8f756f5 bump version 2023-09-23 12:04:32 +02:00
SamTV12345 01ddcde0a9 Merge branch 'develop' 2023-09-23 12:04:32 +02:00
SamTV12345 392e5b10b0 Added changelog for 1.9.3 2023-09-23 11:58:05 +02:00
Denys Halenok 53ef77a24d
Add ability to specify configuration file as a build arg (#5944) 2023-09-23 11:46:14 +02:00
Denys Halenok bc302538c0
Don't access jQuery through `parent.parent` (#5943) 2023-09-22 20:53:24 +02:00
dependabot[bot] 5384edc7c9
build(deps): bump ueberdb2 from 4.2.9 to 4.2.11 in /src (#5941) 2023-09-21 13:25:02 +02:00
dependabot[bot] 3d05616fe7
build(deps): bump terser from 5.19.4 to 5.20.0 in /src (#5942)
Bumps [terser](https://github.com/terser/terser) from 5.19.4 to 5.20.0.
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.19.4...v5.20.0)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-20 22:53:45 +02:00
SamTV12345 7acc82af63 Fixed mongodb database connection. 2023-09-20 12:30:26 +02:00
dependabot[bot] e2c4328b44
build(deps): bump marked from 9.0.2 to 9.0.3 in /src/bin/doc (#5940)
Bumps [marked](https://github.com/markedjs/marked) from 9.0.2 to 9.0.3.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v9.0.2...v9.0.3)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-20 10:56:58 +02:00
dependabot[bot] c8a36518d4
build(deps): bump express-rate-limit from 7.0.0 to 7.0.1 in /src (#5937)
Bumps [express-rate-limit](https://github.com/express-rate-limit/express-rate-limit) from 7.0.0 to 7.0.1.
- [Release notes](https://github.com/express-rate-limit/express-rate-limit/releases)
- [Changelog](https://github.com/express-rate-limit/express-rate-limit/blob/main/changelog.md)
- [Commits](https://github.com/express-rate-limit/express-rate-limit/compare/v7.0.0...v7.0.1)

---
updated-dependencies:
- dependency-name: express-rate-limit
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-18 22:55:50 +02:00
dependabot[bot] cd17ba3b83
build(deps): bump resolve from 1.22.5 to 1.22.6 in /src (#5938)
Bumps [resolve](https://github.com/browserify/resolve) from 1.22.5 to 1.22.6.
- [Commits](https://github.com/browserify/resolve/compare/v1.22.5...v1.22.6)

---
updated-dependencies:
- dependency-name: resolve
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-18 22:55:35 +02:00
dependabot[bot] 35a454efd9
build(deps): bump marked from 9.0.0 to 9.0.2 in /src/bin/doc (#5939)
Bumps [marked](https://github.com/markedjs/marked) from 9.0.0 to 9.0.2.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v9.0.0...v9.0.2)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-18 22:55:25 +02:00
SamTV12345 9df8a01463 Updated ueberdb 2023-09-16 20:44:33 +02:00
SamTV12345 5bcca29cf9 Bumoed package-lock.json 2023-09-15 23:17:17 +02:00
SamTV12345 cb89c99261 Bumped ueberdb2. 2023-09-15 23:15:46 +02:00
SamTV12345 7759e26ce2
Fix/frontend admin tests (#5935)
* Add missing awaits.

* Remove rate limiter.

* Readded maxHttpBuffersize.

* Revert "Add missing awaits."

This reverts commit d5a8979841.

* Increased timeout.

* Increased timeout further.

* Toggled down timeout.

* Add importExportRateLimit.
2023-09-15 23:08:58 +02:00
SamTV12345 4dfdee941c
Fix/admin test (#5936)
* Add missing awaits.

* Remove rate limiter.

* Readded maxHttpBuffersize.

* Revert "Add missing awaits."

This reverts commit d5a8979841.

* Increased timeout.

* Increased timeout further.

* Toggled down timeout.
2023-09-15 23:06:53 +02:00
SamTV12345 79e1075e88
Fix/admin test (#5934)
* Add missing awaits.

* Remove rate limiter.

* Readded maxHttpBuffersize.

* Revert "Add missing awaits."

This reverts commit d5a8979841.
2023-09-15 22:01:09 +02:00
dependabot[bot] b84ab591aa
build(deps): bump resolve from 1.22.4 to 1.22.5 in /src (#5933)
Bumps [resolve](https://github.com/browserify/resolve) from 1.22.4 to 1.22.5.
- [Commits](https://github.com/browserify/resolve/compare/v1.22.4...v1.22.5)

---
updated-dependencies:
- dependency-name: resolve
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-15 20:35:26 +02:00
dependabot[bot] bcb1a5d48f
build(deps-dev): bump sinon from 15.2.0 to 16.0.0 in /src (#5932)
Bumps [sinon](https://github.com/sinonjs/sinon) from 15.2.0 to 16.0.0.
- [Release notes](https://github.com/sinonjs/sinon/releases)
- [Changelog](https://github.com/sinonjs/sinon/blob/main/docs/changelog.md)
- [Commits](https://github.com/sinonjs/sinon/compare/v15.2.0...v16.0.0)

---
updated-dependencies:
- dependency-name: sinon
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-14 18:30:44 +02:00
SamTV12345 239bc2d426
Fixed frontend-admin.yml 2023-09-14 16:47:30 +02:00
SamTV12345 1b01f01ca3
Fix/rate limit in test (#5931)
* build(deps): bump express-rate-limit from 6.11.1 to 7.0.0 in /src

Bumps [express-rate-limit](https://github.com/express-rate-limit/express-rate-limit) from 6.11.1 to 7.0.0.
- [Release notes](https://github.com/express-rate-limit/express-rate-limit/releases)
- [Changelog](https://github.com/express-rate-limit/express-rate-limit/blob/main/changelog.md)
- [Commits](https://github.com/express-rate-limit/express-rate-limit/compare/v6.11.1...v7.0.0)

---
updated-dependencies:
- dependency-name: express-rate-limit
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Increase exportratelimit to high number for tests.

* Fixed rate limiting in frontend tests.

* Also do this for the run without plugins.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-14 16:37:52 +02:00
translatewiki.net 80cd1b6127 Localisation updates from https://translatewiki.net. 2023-09-14 13:06:25 +02:00
dependabot[bot] 3b2ea99efe
build(deps): bump express-rate-limit from 6.11.1 to 7.0.0 in /src (#5930)
* build(deps): bump express-rate-limit from 6.11.1 to 7.0.0 in /src

Bumps [express-rate-limit](https://github.com/express-rate-limit/express-rate-limit) from 6.11.1 to 7.0.0.
- [Release notes](https://github.com/express-rate-limit/express-rate-limit/releases)
- [Changelog](https://github.com/express-rate-limit/express-rate-limit/blob/main/changelog.md)
- [Commits](https://github.com/express-rate-limit/express-rate-limit/compare/v6.11.1...v7.0.0)

---
updated-dependencies:
- dependency-name: express-rate-limit
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Increase exportratelimit to high number for tests.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: SamTV12345 <40429738+samtv12345@users.noreply.github.com>
2023-09-13 20:50:15 +02:00
dependabot[bot] 6711c294ed
build(deps): bump docker/setup-buildx-action from 2 to 3 (#5928)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2 to 3.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-13 20:03:42 +02:00
dependabot[bot] cea68ef99a
build(deps): bump marked from 8.0.1 to 9.0.0 in /src/bin/doc (#5922)
Bumps [marked](https://github.com/markedjs/marked) from 8.0.1 to 9.0.0.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v8.0.1...v9.0.0)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-13 20:03:25 +02:00
dependabot[bot] ea1cabc4f0
build(deps): bump docker/metadata-action from 4 to 5 (#5924)
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 4 to 5.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Upgrade guide](https://github.com/docker/metadata-action/blob/master/UPGRADE.md)
- [Commits](https://github.com/docker/metadata-action/compare/v4...v5)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-13 19:54:17 +02:00
dependabot[bot] c5c861dab4
build(deps): bump docker/build-push-action from 4 to 5 (#5926)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4 to 5.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v4...v5)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-13 19:53:42 +02:00
dependabot[bot] 86f4442e7f
build(deps): bump docker/login-action from 2 to 3 (#5927)
Bumps [docker/login-action](https://github.com/docker/login-action) from 2 to 3.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-13 19:53:29 +02:00
dependabot[bot] 578fb3ea91
build(deps): bump docker/setup-qemu-action from 2 to 3 (#5925)
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 2 to 3.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](https://github.com/docker/setup-qemu-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-13 19:52:50 +02:00
dependabot[bot] 55096db854
build(deps): bump express-rate-limit from 6.11.0 to 6.11.1 in /src (#5920) 2023-09-11 17:14:20 +02:00
dependabot[bot] 20def68700
build(deps-dev): bump eslint from 8.48.0 to 8.49.0 in /src (#5919) 2023-09-11 17:13:53 +02:00
translatewiki.net eaca37d2b4 Localisation updates from https://translatewiki.net. 2023-09-11 13:04:59 +02:00
dependabot[bot] 331aeacf42
build(deps): bump marked from 8.0.0 to 8.0.1 in /src/bin/doc (#5918) 2023-09-07 17:38:29 +02:00
translatewiki.net d9b36e86cf Localisation updates from https://translatewiki.net. 2023-09-07 13:08:27 +02:00
dependabot[bot] 3179fa87ba
build(deps): bump express-rate-limit from 6.10.0 to 6.11.0 in /src (#5917) 2023-09-07 10:54:52 +02:00
dependabot[bot] 1413d66417
build(deps): bump actions/checkout from 3 to 4 (#5913)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-05 19:16:08 +02:00
dependabot[bot] 0e5b2575c9
build(deps): bump marked from 7.0.5 to 8.0.0 in /src/bin/doc (#5909)
Bumps [marked](https://github.com/markedjs/marked) from 7.0.5 to 8.0.0.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v7.0.5...v8.0.0)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-05 15:36:15 +02:00
dependabot[bot] 20b56ba93f
build(deps): bump terser from 5.19.3 to 5.19.4 in /src (#5911)
Bumps [terser](https://github.com/terser/terser) from 5.19.3 to 5.19.4.
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.19.3...v5.19.4)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-05 15:35:11 +02:00
SamTV12345 8fb0ee8c7f Updated release workflow with complete automation. 2023-09-04 21:58:15 +02:00
SamTV12345 6f5d8834e4
Readded building windows with tar/Upload windows build on release
* Use windows.

* Fixed windows yml.

* Also upload windows build on tag to release folder.

* Added comment.

* Updated file name to be in sync with release name.

* Revert "Updated file name to be in sync with release name."

This reverts commit 2fbc26a891.

* Reverted and just rename at the end.
2023-09-04 21:57:10 +02:00
ppom 2632698543
fix abiword not working in container (#5907)
cc @rdelaage
on alpine, plugin command (used in src/node/utils/Abiword.js at line 31)
is not installed by defaut. Add this plugin when installing abiword.

Co-authored-by: ppom <>
2023-09-04 18:55:21 +02:00
dependabot[bot] 66b21e840f
build(deps): bump actions/checkout from 3 to 4 (#5910)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-04 18:51:22 +02:00
dependabot[bot] 6eab99600c
build(deps): bump ueberdb2 from 4.1.21 to 4.1.33 in /src (#5905)
* build(deps): bump ueberdb2 from 4.1.21 to 4.1.33 in /src

Bumps [ueberdb2](https://github.com/ether/ueberDB) from 4.1.21 to 4.1.33.
- [Changelog](https://github.com/ether/ueberDB/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ether/ueberDB/compare/v4.1.21...v4.1.33)

---
updated-dependencies:
- dependency-name: ueberdb2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

* Fixed ueberdb version.

* Added surrealdb.

* Updated ueberdb to 4.2.1

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: SamTV12345 <40429738+samtv12345@users.noreply.github.com>
2023-09-04 18:51:02 +02:00
translatewiki.net 2cbbab42de Localisation updates from https://translatewiki.net. 2023-09-04 13:05:04 +02:00
dependabot[bot] d9ff6158e4
build(deps-dev): bump selenium-webdriver from 4.11.1 to 4.12.0 in /src (#5906)
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.11.1 to 4.12.0.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Commits](https://github.com/SeleniumHQ/selenium/commits/selenium-4.12.0)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-01 23:02:40 +02:00
dependabot[bot] 558ced3fde
build(deps): bump rate-limiter-flexible from 2.4.2 to 3.0.0 in /src (#5894)
Bumps [rate-limiter-flexible](https://github.com/animir/node-rate-limiter-flexible) from 2.4.2 to 3.0.0.
- [Release notes](https://github.com/animir/node-rate-limiter-flexible/releases)
- [Commits](https://github.com/animir/node-rate-limiter-flexible/commits/v3.0.0)

---
updated-dependencies:
- dependency-name: rate-limiter-flexible
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-01 21:55:38 +02:00
dependabot[bot] d6c45ab1a5
build(deps): bump express-rate-limit from 6.9.0 to 6.10.0 in /src (#5900)
Bumps [express-rate-limit](https://github.com/express-rate-limit/express-rate-limit) from 6.9.0 to 6.10.0.
- [Release notes](https://github.com/express-rate-limit/express-rate-limit/releases)
- [Changelog](https://github.com/express-rate-limit/express-rate-limit/blob/main/changelog.md)
- [Commits](https://github.com/express-rate-limit/express-rate-limit/compare/v6.9.0...v6.10.0)

---
updated-dependencies:
- dependency-name: express-rate-limit
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-01 00:51:09 +02:00
ppom d13a5f89ec
fix doc link (#5901)
Co-authored-by: ppom <>
2023-09-01 00:50:54 +02:00
dependabot[bot] 33c1a62914
build(deps): bump rehype from 13.0.0 to 13.0.1 in /src (#5898)
Bumps [rehype](https://github.com/rehypejs/rehype) from 13.0.0 to 13.0.1.
- [Release notes](https://github.com/rehypejs/rehype/releases)
- [Changelog](https://github.com/rehypejs/rehype/blob/main/changelog.md)
- [Commits](https://github.com/rehypejs/rehype/compare/13.0.0...13.0.1)

---
updated-dependencies:
- dependency-name: rehype
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-30 22:38:03 +02:00
dependabot[bot] eeed8623f9
build(deps): bump rehype-minify-whitespace from 5.0.1 to 6.0.0 in /src (#5897)
Bumps [rehype-minify-whitespace](https://github.com/rehypejs/rehype-minify) from 5.0.1 to 6.0.0.
- [Release notes](https://github.com/rehypejs/rehype-minify/releases)
- [Changelog](https://github.com/rehypejs/rehype-minify/blob/main/changelog.md)
- [Commits](https://github.com/rehypejs/rehype-minify/compare/rehype-minify-whitespace@5.0.1...6.0.0)

---
updated-dependencies:
- dependency-name: rehype-minify-whitespace
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-30 19:03:37 +02:00
SamTV12345 4835c8e04d
Fixed session key rotation problem with a default empty array on null value. (#5896) 2023-08-29 18:32:39 +02:00
dependabot[bot] 6d38717c16
build(deps): bump terser from 5.19.2 to 5.19.3 in /src (#5895)
Bumps [terser](https://github.com/terser/terser) from 5.19.2 to 5.19.3.
- [Changelog](https://github.com/terser/terser/blob/v5.19.3/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.19.2...v5.19.3)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-29 18:00:33 +02:00
SamTV12345 efdf9dbe36
Fixed session key rotation problem with a default empty array on null value. (#5896) 2023-08-29 18:00:14 +02:00
dependabot[bot] 3f6ba064d8
build(deps): bump axios from 1.4.0 to 1.5.0 in /src (#5891)
Bumps [axios](https://github.com/axios/axios) from 1.4.0 to 1.5.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v1.4.0...v1.5.0)

---
updated-dependencies:
- dependency-name: axios
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-28 21:39:06 +02:00
dependabot[bot] a54b1c22c2
build(deps): bump marked from 7.0.4 to 7.0.5 in /src/bin/doc (#5890)
Bumps [marked](https://github.com/markedjs/marked) from 7.0.4 to 7.0.5.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v7.0.4...v7.0.5)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-28 21:39:00 +02:00
dependabot[bot] 2e2747d318
build(deps-dev): bump eslint from 8.47.0 to 8.48.0 in /src (#5892)
Bumps [eslint](https://github.com/eslint/eslint) from 8.47.0 to 8.48.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.47.0...v8.48.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-28 21:38:52 +02:00
dependabot[bot] 9163cafd9f
build(deps): bump rehype from 12.0.1 to 13.0.0 in /src (#5893)
Bumps [rehype](https://github.com/rehypejs/rehype) from 12.0.1 to 13.0.0.
- [Release notes](https://github.com/rehypejs/rehype/releases)
- [Changelog](https://github.com/rehypejs/rehype/blob/main/changelog.md)
- [Commits](https://github.com/rehypejs/rehype/compare/12.0.1...13.0.0)

---
updated-dependencies:
- dependency-name: rehype
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-28 21:38:45 +02:00
translatewiki.net 2a87f9e020 Localisation updates from https://translatewiki.net. 2023-08-28 13:08:20 +02:00
dependabot[bot] 87163ba14f
build(deps): bump ueberdb2 from 4.1.20 to 4.1.21 in /src (#5881)
Bumps [ueberdb2](https://github.com/ether/ueberDB) from 4.1.20 to 4.1.21.
- [Changelog](https://github.com/ether/ueberDB/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ether/ueberDB/compare/v4.1.20...v4.1.21)

---
updated-dependencies:
- dependency-name: ueberdb2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-25 22:39:12 +02:00
dependabot[bot] 501e92d02d
build(deps): bump formidable from 3.5.0 to 3.5.1 in /src (#5885)
Bumps [formidable](https://github.com/node-formidable/formidable) from 3.5.0 to 3.5.1.
- [Release notes](https://github.com/node-formidable/formidable/releases)
- [Changelog](https://github.com/node-formidable/formidable/blob/master/CHANGELOG.md)
- [Commits](https://github.com/node-formidable/formidable/compare/v3.5.0...v3.5.1)

---
updated-dependencies:
- dependency-name: formidable
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-25 22:38:55 +02:00
dependabot[bot] 8fdfa1594a
build(deps-dev): bump eslint-config-etherpad in /src (#5882) 2023-08-22 18:03:12 +02:00
dependabot[bot] 1c6aba1cc6
build(deps): bump marked from 7.0.3 to 7.0.4 in /src/bin/doc (#5880)
Bumps [marked](https://github.com/markedjs/marked) from 7.0.3 to 7.0.4.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v7.0.3...v7.0.4)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-21 19:59:43 +02:00
translatewiki.net 085f6557ff Localisation updates from https://translatewiki.net. 2023-08-21 13:04:49 +02:00
dependabot[bot] 89145ab376
build(deps): bump superagent from 8.1.1 to 8.1.2 in /src (#5876)
Bumps [superagent](https://github.com/ladjs/superagent) from 8.1.1 to 8.1.2.
- [Release notes](https://github.com/ladjs/superagent/releases)
- [Changelog](https://github.com/ladjs/superagent/blob/master/HISTORY.md)
- [Commits](https://github.com/ladjs/superagent/compare/v8.1.1...v8.1.2)

---
updated-dependencies:
- dependency-name: superagent
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-17 16:12:54 +02:00
SamTV12345 faa2ed1b4d Merge branch 'master' into develop 2023-08-17 14:44:59 +02:00
SamTV12345 b1c34b5dac Merge branch 'develop' 2023-08-17 14:44:33 +02:00
SamTV12345 f2e6a66d33 bump version 2023-08-17 14:44:31 +02:00
SamTV12345 f881e2ad0b Updated JQuery section. 2023-08-17 14:41:41 +02:00
SamTV12345 ae7800eada Fixed color wheel. 2023-08-17 14:31:36 +02:00
dependabot[bot] f1ad26dd64
build(deps): bump marked from 7.0.2 to 7.0.3 in /src/bin/doc (#5874)
Bumps [marked](https://github.com/markedjs/marked) from 7.0.2 to 7.0.3.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v7.0.2...v7.0.3)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-16 15:09:12 +02:00
dependabot[bot] e72461961c
build(deps): bump superagent from 8.0.9 to 8.1.1 in /src (#5875)
Bumps [superagent](https://github.com/ladjs/superagent) from 8.0.9 to 8.1.1.
- [Release notes](https://github.com/ladjs/superagent/releases)
- [Changelog](https://github.com/ladjs/superagent/blob/master/HISTORY.md)
- [Commits](https://github.com/ladjs/superagent/compare/v8.0.9...v8.1.1)

---
updated-dependencies:
- dependency-name: superagent
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-16 15:09:02 +02:00
dependabot[bot] 0faf9a4d00
build(deps-dev): bump eslint from 8.46.0 to 8.47.0 in /src (#5872)
Bumps [eslint](https://github.com/eslint/eslint) from 8.46.0 to 8.47.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.46.0...v8.47.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-11 21:53:21 +02:00
dependabot[bot] 77556ce5ef
build(deps): bump ueberdb2 from 4.1.18 to 4.1.20 in /src (#5870)
Bumps [ueberdb2](https://github.com/ether/ueberDB) from 4.1.18 to 4.1.20.
- [Changelog](https://github.com/ether/ueberDB/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ether/ueberDB/compare/v4.1.18...v4.1.20)

---
updated-dependencies:
- dependency-name: ueberdb2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-10 20:56:36 +02:00
dependabot[bot] a84fc880f9
build(deps): bump marked from 7.0.1 to 7.0.2 in /src/bin/doc (#5871)
Bumps [marked](https://github.com/markedjs/marked) from 7.0.1 to 7.0.2.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v7.0.1...v7.0.2)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-10 20:56:28 +02:00
translatewiki.net 784fa6b7cc Localisation updates from https://translatewiki.net. 2023-08-10 13:10:11 +02:00
dependabot[bot] 361353c699
build(deps): bump marked from 7.0.0 to 7.0.1 in /src/bin/doc (#5867)
Bumps [marked](https://github.com/markedjs/marked) from 7.0.0 to 7.0.1.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v7.0.0...v7.0.1)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-09 16:02:03 +02:00
SamTV12345 b56d75b1e9
Use parse instead of parseJSON. (#5869) 2023-08-08 19:12:41 +02:00
SamTV12345 a096f1ae33
Update jQuery to 3.7 and fix admintests (#5868)
* jQuery: Migrate to `.on()`, `.off()`, `.trigger()`

This avoids methods that are deprecated in newer versions of jQuery.

* jQuery: avoid `.removeAttr`, prefer `.prop`

* helper.edit: wait up to 10 seconds for ACCEPT_COMMIT

* Chat: disabled attribute is boolean

* Chat: avoid inline onclick handler to support jQuery 3.4+

* jQuery: update to version 3.6.0

* Update to 3.7

* Removed deprecated event.

* Revert change to focus on padeditor.ace

---------

Co-authored-by: webzwo0i <webzwo0i@c3d2.de>
2023-08-08 18:26:25 +02:00
SamTV12345 2f5b6b80e1
Fix/windows build (#5861)
* Use updated env var.

* Show bin and src bin.

* Use native link.

* Use link.

* Check file link.

* Use existing installation on github runner.

* Use -P.

* Use git checkout for copying the data to temp directory.

* Use rsync to copy data.

* Remove package from src.

* Use simple copy to copy the dependencies.

* Copy src folder only.
2023-08-08 16:22:25 +02:00
avkarenow 89201632ca
Call exports.start() for Phusion Passenger (#5866) 2023-08-08 14:03:50 +02:00
dependabot[bot] a8210e9647
build(deps): bump express-rate-limit from 6.8.1 to 6.9.0 in /src (#5865)
Bumps [express-rate-limit](https://github.com/express-rate-limit/express-rate-limit) from 6.8.1 to 6.9.0.
- [Release notes](https://github.com/express-rate-limit/express-rate-limit/releases)
- [Changelog](https://github.com/express-rate-limit/express-rate-limit/blob/main/changelog.md)
- [Commits](https://github.com/express-rate-limit/express-rate-limit/compare/v6.8.1...v6.9.0)

---
updated-dependencies:
- dependency-name: express-rate-limit
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-07 21:25:41 +02:00
dependabot[bot] 5bbaeabccb
build(deps): bump marked from 6.0.0 to 7.0.0 in /src/bin/doc (#5863)
Bumps [marked](https://github.com/markedjs/marked) from 6.0.0 to 7.0.0.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v6.0.0...v7.0.0)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-07 21:14:01 +02:00
dependabot[bot] 2da2a14eba
build(deps): bump resolve from 1.22.2 to 1.22.4 in /src (#5864)
Bumps [resolve](https://github.com/browserify/resolve) from 1.22.2 to 1.22.4.
- [Commits](https://github.com/browserify/resolve/compare/v1.22.2...v1.22.4)

---
updated-dependencies:
- dependency-name: resolve
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-07 21:13:48 +02:00
translatewiki.net e8962f8256 Localisation updates from https://translatewiki.net. 2023-08-07 13:04:34 +02:00
dependabot[bot] 4da66d19dc
build(deps): bump formidable from 2.1.2 to 3.5.0 in /src (#5796)
* build(deps): bump formidable from 2.1.2 to 3.5.0 in /src

Bumps [formidable](https://github.com/node-formidable/formidable) from 2.1.2 to 3.5.0.
- [Release notes](https://github.com/node-formidable/formidable/releases)
- [Changelog](https://github.com/node-formidable/formidable/blob/master/CHANGELOG.md)
- [Commits](https://github.com/node-formidable/formidable/commits/v3.5.0)

---
updated-dependencies:
- dependency-name: formidable
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* formidable migration

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: John McLear <john@mclear.co.uk>
2023-08-05 15:48:23 +02:00
dependabot[bot] 24720abdc8
build(deps-dev): bump eslint-config-etherpad in /src (#5856)
Bumps [eslint-config-etherpad](https://github.com/ether/eslint-config-etherpad) from 3.0.17 to 3.0.21.
- [Commits](https://github.com/ether/eslint-config-etherpad/compare/v3.0.17...v3.0.21)

---
updated-dependencies:
- dependency-name: eslint-config-etherpad
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-05 15:47:25 +02:00
dependabot[bot] ee3c4c541c
build(deps): bump ueberdb2 from 4.1.15 to 4.1.18 in /src (#5859)
Bumps [ueberdb2](https://github.com/ether/ueberDB) from 4.1.15 to 4.1.18.
- [Changelog](https://github.com/ether/ueberDB/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ether/ueberDB/compare/v4.1.15...v4.1.18)

---
updated-dependencies:
- dependency-name: ueberdb2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-05 15:47:06 +02:00
SamTV12345 bc6b05cea6
Skip instead of fail on dependabot. (#5858) 2023-08-03 22:15:35 +02:00
dependabot[bot] f0ad176de9
build(deps): bump marked from 5.1.2 to 6.0.0 in /src/bin/doc (#5854)
Bumps [marked](https://github.com/markedjs/marked) from 5.1.2 to 6.0.0.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v5.1.2...v6.0.0)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-02 23:32:00 +02:00
dependabot[bot] 1e7207566f
build(deps-dev): bump selenium-webdriver from 4.10.0 to 4.11.1 in /src (#5855)
Bumps [selenium-webdriver](https://github.com/SeleniumHQ/selenium) from 4.10.0 to 4.11.1.
- [Release notes](https://github.com/SeleniumHQ/selenium/releases)
- [Commits](https://github.com/SeleniumHQ/selenium/commits)

---
updated-dependencies:
- dependency-name: selenium-webdriver
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-01 22:04:47 +02:00
dependabot[bot] fa8a5dfe5c
build(deps-dev): bump eslint from 8.45.0 to 8.46.0 in /src (#5852)
Bumps [eslint](https://github.com/eslint/eslint) from 8.45.0 to 8.46.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.45.0...v8.46.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-31 22:22:21 +02:00
dependabot[bot] e7a5323911
build(deps): bump ueberdb2 from 4.1.13 to 4.1.15 in /src (#5853)
Bumps [ueberdb2](https://github.com/ether/ueberDB) from 4.1.13 to 4.1.15.
- [Changelog](https://github.com/ether/ueberDB/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ether/ueberDB/compare/v4.1.13...v4.1.15)

---
updated-dependencies:
- dependency-name: ueberdb2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-31 22:14:15 +02:00
webzwo0i 92f8610085 tests: refactor to use async 2023-07-29 22:35:17 +02:00
webzwo0i cd6da7335b tests: fix for appendRevision test 2023-07-29 22:35:17 +02:00
webzwo0i 4cf1be966d
fix appendRevision (#5805)
* test cov

* Added test for checking if a new pad can be created and deleted.

---------

Co-authored-by: SamTV12345 <40429738+samtv12345@users.noreply.github.com>
2023-07-29 18:38:52 +02:00
dependabot[bot] 2434ae32a1
build(deps): bump marked from 5.1.1 to 5.1.2 in /src/bin/doc (#5847)
Bumps [marked](https://github.com/markedjs/marked) from 5.1.1 to 5.1.2.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v5.1.1...v5.1.2)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-29 16:04:29 +02:00
dependabot[bot] f1a5aa0646
build(deps): bump ueberdb2 from 4.1.12 to 4.1.13 in /src (#5846)
Bumps [ueberdb2](https://github.com/ether/ueberDB) from 4.1.12 to 4.1.13.
- [Changelog](https://github.com/ether/ueberDB/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ether/ueberDB/compare/v4.1.12...v4.1.13)

---
updated-dependencies:
- dependency-name: ueberdb2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-29 16:04:20 +02:00
dependabot[bot] 53741eafc4
build(deps): bump rate-limiter-flexible from 2.4.1 to 2.4.2 in /src (#5849)
Bumps [rate-limiter-flexible](https://github.com/animir/node-rate-limiter-flexible) from 2.4.1 to 2.4.2.
- [Release notes](https://github.com/animir/node-rate-limiter-flexible/releases)
- [Commits](https://github.com/animir/node-rate-limiter-flexible/commits)

---
updated-dependencies:
- dependency-name: rate-limiter-flexible
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-29 16:04:06 +02:00
dependabot[bot] 142eab04f5
build(deps): bump express-rate-limit from 6.8.0 to 6.8.1 in /src (#5848)
Bumps [express-rate-limit](https://github.com/express-rate-limit/express-rate-limit) from 6.8.0 to 6.8.1.
- [Release notes](https://github.com/express-rate-limit/express-rate-limit/releases)
- [Changelog](https://github.com/express-rate-limit/express-rate-limit/blob/main/changelog.md)
- [Commits](https://github.com/express-rate-limit/express-rate-limit/compare/v6.8.0...v6.8.1)

---
updated-dependencies:
- dependency-name: express-rate-limit
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-29 16:03:57 +02:00
dependabot[bot] c7f77286ef
build(deps): bump express-rate-limit from 6.7.1 to 6.8.0 in /src (#5842)
Bumps [express-rate-limit](https://github.com/express-rate-limit/express-rate-limit) from 6.7.1 to 6.8.0.
- [Release notes](https://github.com/express-rate-limit/express-rate-limit/releases)
- [Changelog](https://github.com/express-rate-limit/express-rate-limit/blob/main/changelog.md)
- [Commits](https://github.com/express-rate-limit/express-rate-limit/compare/v6.7.1...v6.8.0)

---
updated-dependencies:
- dependency-name: express-rate-limit
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-23 22:04:02 +02:00
dependabot[bot] 75af84cdde
build(deps): bump terser from 5.19.1 to 5.19.2 in /src (#5841)
Bumps [terser](https://github.com/terser/terser) from 5.19.1 to 5.19.2.
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.19.1...v5.19.2)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-23 00:08:38 +02:00
dependabot[bot] 3094623f15
build(deps): bump ueberdb2 from 4.1.11 to 4.1.12 in /src (#5836)
Bumps [ueberdb2](https://github.com/ether/ueberDB) from 4.1.11 to 4.1.12.
- [Changelog](https://github.com/ether/ueberDB/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ether/ueberDB/compare/v4.1.11...v4.1.12)

---
updated-dependencies:
- dependency-name: ueberdb2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-18 18:48:04 +02:00
dependabot[bot] db7c8fac5f
build(deps-dev): bump eslint-config-etherpad in /src (#5837)
Bumps [eslint-config-etherpad](https://github.com/ether/eslint-config-etherpad) from 3.0.16 to 3.0.17.
- [Commits](https://github.com/ether/eslint-config-etherpad/compare/v3.0.16...v3.0.17)

---
updated-dependencies:
- dependency-name: eslint-config-etherpad
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-18 18:34:44 +02:00
dependabot[bot] 296b76b21e
build(deps): bump terser from 5.19.0 to 5.19.1 in /src (#5832)
Bumps [terser](https://github.com/terser/terser) from 5.19.0 to 5.19.1.
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.19.0...v5.19.1)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-18 09:02:18 +02:00
dependabot[bot] 4b5ad182bc
build(deps-dev): bump eslint from 8.44.0 to 8.45.0 in /src (#5833)
Bumps [eslint](https://github.com/eslint/eslint) from 8.44.0 to 8.45.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.44.0...v8.45.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-18 09:02:06 +02:00
SamTV12345 aaef8a8c0d Bumped ueberdb version. 2023-07-16 21:36:42 +02:00
dependabot[bot] c696805fdf
build(deps-dev): bump eslint-config-etherpad in /src (#5831)
Bumps [eslint-config-etherpad](https://github.com/ether/eslint-config-etherpad) from 3.0.15 to 3.0.16.
- [Commits](https://github.com/ether/eslint-config-etherpad/compare/v3.0.15...v3.0.16)

---
updated-dependencies:
- dependency-name: eslint-config-etherpad
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-15 22:20:59 +02:00
dependabot[bot] d1800ab682
build(deps): bump ueberdb2 from 4.1.8 to 4.1.9 in /src (#5830)
Bumps [ueberdb2](https://github.com/ether/ueberDB) from 4.1.8 to 4.1.9.
- [Changelog](https://github.com/ether/ueberDB/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ether/ueberDB/compare/v4.1.8...v4.1.9)

---
updated-dependencies:
- dependency-name: ueberdb2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-15 22:20:50 +02:00
dependabot[bot] 2c77be5728
build(deps): bump terser from 5.18.2 to 5.19.0 in /src (#5826)
Bumps [terser](https://github.com/terser/terser) from 5.18.2 to 5.19.0.
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/compare/v5.18.2...v5.19.0)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-11 20:54:02 +02:00
dependabot[bot] eb074d19dc
build(deps): bump semver from 7.5.3 to 7.5.4 in /src (#5823)
Bumps [semver](https://github.com/npm/node-semver) from 7.5.3 to 7.5.4.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v7.5.3...v7.5.4)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-10 20:28:59 +02:00
dependabot[bot] 864e69a8e7
build(deps): bump ueberdb2 from 4.1.7 to 4.1.8 in /src (#5824)
Bumps [ueberdb2](https://github.com/ether/ueberDB) from 4.1.7 to 4.1.8.
- [Changelog](https://github.com/ether/ueberDB/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ether/ueberDB/compare/v4.1.7...v4.1.8)

---
updated-dependencies:
- dependency-name: ueberdb2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-10 20:28:44 +02:00
dependabot[bot] 13330c45f8
build(deps): bump marked from 5.1.0 to 5.1.1 in /src/bin/doc (#5819)
Bumps [marked](https://github.com/markedjs/marked) from 5.1.0 to 5.1.1.
- [Release notes](https://github.com/markedjs/marked/releases)
- [Changelog](https://github.com/markedjs/marked/blob/master/.releaserc.json)
- [Commits](https://github.com/markedjs/marked/compare/v5.1.0...v5.1.1)

---
updated-dependencies:
- dependency-name: marked
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-07 19:18:39 +02:00
dependabot[bot] 6adc95d780
build(deps): bump express-rate-limit from 6.7.0 to 6.7.1 in /src (#5821)
Bumps [express-rate-limit](https://github.com/express-rate-limit/express-rate-limit) from 6.7.0 to 6.7.1.
- [Release notes](https://github.com/express-rate-limit/express-rate-limit/releases)
- [Changelog](https://github.com/express-rate-limit/express-rate-limit/blob/main/changelog.md)
- [Commits](https://github.com/express-rate-limit/express-rate-limit/compare/v6.7.0...v6.7.1)

---
updated-dependencies:
- dependency-name: express-rate-limit
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-07 18:09:39 +02:00
dependabot[bot] 8e415c10ea
build(deps): bump ueberdb2 from 4.1.6 to 4.1.7 in /src (#5820)
Bumps [ueberdb2](https://github.com/ether/ueberDB) from 4.1.6 to 4.1.7.
- [Changelog](https://github.com/ether/ueberDB/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ether/ueberDB/compare/v4.1.6...v4.1.7)

---
updated-dependencies:
- dependency-name: ueberdb2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-07 18:09:25 +02:00
dependabot[bot] 33ecd1a2e9
build(deps): bump ueberdb2 from 4.1.5 to 4.1.6 in /src (#5815)
Bumps [ueberdb2](https://github.com/ether/ueberDB) from 4.1.5 to 4.1.6.
- [Changelog](https://github.com/ether/ueberDB/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ether/ueberDB/compare/v4.1.5...v4.1.6)

---
updated-dependencies:
- dependency-name: ueberdb2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-06 21:13:44 +02:00
SamTV12345 0bf471f97e Updated to express session v1.18.2 2023-07-05 22:58:26 +02:00
120 changed files with 11410 additions and 13025 deletions

View File

@ -22,9 +22,9 @@ jobs:
steps:
-
name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
-
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
cache: 'npm'
@ -59,9 +59,9 @@ jobs:
steps:
-
name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
-
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
cache: 'npm'
@ -120,9 +120,9 @@ jobs:
steps:
-
name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
-
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
@ -153,9 +153,9 @@ jobs:
steps:
-
name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
-
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'

View File

@ -23,7 +23,7 @@ jobs:
steps:
-
name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.

View File

@ -15,6 +15,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: 'Checkout Repository'
uses: actions/checkout@v3
uses: actions/checkout@v4
- name: 'Dependency Review'
uses: actions/dependency-review-action@v3

View File

@ -17,17 +17,17 @@ jobs:
steps:
-
name: Check out
uses: actions/checkout@v3
uses: actions/checkout@v4
-
name: Set up QEMU
if: github.event_name == 'push'
uses: docker/setup-qemu-action@v2
uses: docker/setup-qemu-action@v3
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
uses: docker/setup-buildx-action@v3
-
name: Build and export to Docker
uses: docker/build-push-action@v4
uses: docker/build-push-action@v5
with:
context: .
load: true
@ -36,7 +36,7 @@ jobs:
cache-to: type=gha,mode=max
-
name: Set up Node.js
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 'lts/*'
cache: 'npm'
@ -64,7 +64,7 @@ jobs:
name: Docker meta
if: github.event_name == 'push'
id: meta
uses: docker/metadata-action@v4
uses: docker/metadata-action@v5
with:
images: etherpad/etherpad
tags: |
@ -75,14 +75,14 @@ jobs:
-
name: Log in to Docker Hub
if: github.event_name == 'push'
uses: docker/login-action@v2
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push
if: github.event_name == 'push'
uses: docker/build-push-action@v4
uses: docker/build-push-action@v5
with:
context: .
platforms: linux/amd64,linux/arm64

View File

@ -8,26 +8,17 @@ permissions:
jobs:
withplugins:
if: ${{ github.actor != 'dependabot[bot]' }}
name: with plugins
runs-on: ubuntu-latest
# node: [16, 19, 20] >> Disabled node 16 and 18 because they do not work
strategy:
fail-fast: false
matrix:
node: [16, 18, 20]
node: [19, 20]
steps:
-
name: Fail if Dependabot
if: github.actor == 'dependabot[bot]'
run: |
cat <<EOF >&2
Frontend tests skipped because Dependabot can't access secrets.
Manually re-run the jobs to run the frontend tests.
For more information, see:
https://github.blog/changelog/2021-02-19-github-actions-workflows-triggered-by-dependabot-prs-will-run-with-read-only-permissions/
EOF
exit 1
-
name: Generate Sauce Labs strings
id: sauce_strings
@ -36,9 +27,9 @@ jobs:
printf %s\\n '::set-output name=tunnel_id::${{ github.run_id }}-${{ github.run_number }}-${{ github.job }}-node${{ matrix.node }}'
-
name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
-
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
cache: 'npm'
@ -79,11 +70,15 @@ jobs:
-
name: increase maxHttpBufferSize
run: "sed -i 's/\"maxHttpBufferSize\": 10000/\"maxHttpBufferSize\": 100000/' settings.json"
-
name: Disable import/export rate limiting
run: |
sed -e '/^ *"importExportRateLimiting":/,/^ *\}/ s/"max":.*/"max": 1000000/' -i settings.json
-
name: Remove standard frontend test files, so only admin tests are run
run: mv src/tests/frontend/specs/* /tmp && mv /tmp/admin*.js src/tests/frontend/specs
-
uses: saucelabs/sauce-connect-action@v2.3.4
uses: saucelabs/sauce-connect-action@v2.3.5
with:
username: ${{ secrets.SAUCE_USERNAME }}
accessKey: ${{ secrets.SAUCE_ACCESS_KEY }}

View File

@ -10,18 +10,9 @@ jobs:
withoutplugins:
name: without plugins
runs-on: ubuntu-latest
if: ${{ github.actor != 'dependabot[bot]' }}
steps:
-
name: Fail if Dependabot
if: github.actor == 'dependabot[bot]'
run: |
cat <<EOF >&2
Frontend tests skipped because Dependabot can't access secrets.
Manually re-run the jobs to run the frontend tests.
For more information, see:
https://github.blog/changelog/2021-02-19-github-actions-workflows-triggered-by-dependabot-prs-will-run-with-read-only-permissions/
EOF
exit 1
-
name: Generate Sauce Labs strings
id: sauce_strings
@ -30,9 +21,9 @@ jobs:
printf %s\\n '::set-output name=tunnel_id::${{ github.run_id }}-${{ github.run_number }}-${{ github.job }}'
-
name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
-
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
@ -52,9 +43,9 @@ jobs:
-
name: Disable import/export rate limiting
run: |
sed -e '/^ *"importExportRateLimiting":/,/^ *\}/ s/"max":.*/"max": 0/' -i settings.json
sed -e '/^ *"importExportRateLimiting":/,/^ *\}/ s/"max":.*/"max": 100000000/' -i settings.json
-
uses: saucelabs/sauce-connect-action@v2.3.4
uses: saucelabs/sauce-connect-action@v2.3.5
with:
username: ${{ secrets.SAUCE_USERNAME }}
accessKey: ${{ secrets.SAUCE_ACCESS_KEY }}
@ -74,18 +65,9 @@ jobs:
withplugins:
name: with plugins
runs-on: ubuntu-latest
if: ${{ github.actor != 'dependabot[bot]' }}
steps:
-
name: Fail if Dependabot
if: github.actor == 'dependabot[bot]'
run: |
cat <<EOF >&2
Frontend tests skipped because Dependabot can't access secrets.
Manually re-run the jobs to run the frontend tests.
For more information, see:
https://github.blog/changelog/2021-02-19-github-actions-workflows-triggered-by-dependabot-prs-will-run-with-read-only-permissions/
EOF
exit 1
-
name: Generate Sauce Labs strings
id: sauce_strings
@ -94,9 +76,9 @@ jobs:
printf %s\\n '::set-output name=tunnel_id::${{ github.run_id }}-${{ github.run_number }}-${{ github.job }}'
-
name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
-
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
@ -145,13 +127,13 @@ jobs:
-
name: Disable import/export rate limiting
run: |
sed -e '/^ *"importExportRateLimiting":/,/^ *\}/ s/"max":.*/"max": 0/' -i settings.json
sed -e '/^ *"importExportRateLimiting":/,/^ *\}/ s/"max":.*/"max": 1000000/' -i settings.json
# XXX we should probably run all tests, because plugins could effect their results
-
name: Remove standard frontend test files, so only plugin tests are run
run: rm src/tests/frontend/specs/*
-
uses: saucelabs/sauce-connect-action@v2.3.4
uses: saucelabs/sauce-connect-action@v2.3.5
with:
username: ${{ secrets.SAUCE_USERNAME }}
accessKey: ${{ secrets.SAUCE_ACCESS_KEY }}

View File

@ -18,9 +18,9 @@ jobs:
steps:
-
name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
-
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
@ -29,7 +29,7 @@ jobs:
src/bin/doc/package-lock.json
-
name: Install lockfile-lint
run: npm install --no-save lockfile-lint
run: npm install --no-save lockfile-lint --legacy-peer-deps
-
name: Run lockfile-lint on package-lock.json
run: >

View File

@ -18,9 +18,9 @@ jobs:
steps:
-
name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
-
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
@ -48,9 +48,9 @@ jobs:
steps:
-
name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
-
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
@ -105,9 +105,9 @@ jobs:
steps:
-
name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
-
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'

View File

@ -18,9 +18,9 @@ jobs:
steps:
-
name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
-
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'

View File

@ -22,11 +22,11 @@ jobs:
steps:
-
name: Check out latest release
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
ref: master
-
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node }}
cache: 'npm'
@ -67,7 +67,7 @@ jobs:
-
name: Run the backend tests
run: cd src && npm test
# Because actions/checkout@v3 is called with "ref: master" and without
# Because actions/checkout@v4 is called with "ref: master" and without
# "fetch-depth: 0", the local clone does not have the ${GITHUB_SHA}
# commit. Fetch ${GITHUB_REF} to get the ${GITHUB_SHA} commit. Note that a
# plain "git fetch" only fetches "normal" references (refs/heads/* and
@ -90,7 +90,7 @@ jobs:
run: cd src && npm test
-
name: Install Cypress
run: cd src && npm install cypress
run: cd src && npm install cypress --legacy-peer-deps
-
name: Run Etherpad & Test Frontend
run: |

View File

@ -24,9 +24,9 @@ jobs:
zip
-
name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
-
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
@ -62,7 +62,7 @@ jobs:
steps:
-
name: Checkout repository
uses: actions/checkout@v3
uses: actions/checkout@v4
-
name: Download .zip
uses: actions/download-artifact@v3
@ -89,7 +89,7 @@ jobs:
# run on pushes to any branch
# run on PRs from external forks
permissions:
contents: none
contents: write
if: |
(github.event_name != 'pull_request')
|| (github.event.pull_request.head.repo.id != github.event.pull_request.base.repo.id)
@ -106,7 +106,7 @@ jobs:
name: Extract Etherpad
run: 7z x etherpad-win.zip -oetherpad
-
uses: actions/setup-node@v3
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
@ -115,7 +115,7 @@ jobs:
etherpad/src/bin/doc/package-lock.json
-
name: Install Cypress
run: cd etherpad && cd src && npm install cypress
run: cd etherpad && cd src && npm install cypress --legacy-peer-deps
-
name: Run Etherpad
run: |
@ -123,3 +123,13 @@ jobs:
node node_modules\ep_etherpad-lite\node\server.js &
curl --connect-timeout 10 --max-time 20 --retry 5 --retry-delay 10 --retry-max-time 60 --retry-connrefused http://127.0.0.1:9001/p/test
src\node_modules\cypress\bin\cypress run --config-file src\tests\frontendcypress\cypress.config.js
# On release, upload windows zip to GitHub release tab
-
name: Rename to etherpad-lite-win.zip
shell: powershell
run: mv etherpad-win.zip etherpad-lite-win.zip
- name: upload binaries to release
uses: softprops/action-gh-release@v1
if: ${{startsWith(github.ref, 'refs/tags/v') }}
with:
files: etherpad-lite-win.zip

View File

@ -1,3 +1,54 @@
# 1.9.4
### Compability changes
* Log4js has been updated to the latest version. As it involved a bump of 6 major version.
A lot has changed since then. Most notably the console appender has been deprecated. You can find out more about it [here](https://github.com/log4js-node/log4js-node)
### Notable enhancements and fixes
* Fix for MySQL: The logger calls were incorrectly configured leading to a crash when e.g. somebody uses a different encoding than standard MySQL encoding.
# 1.9.3
### Compability changes
* express-rate-limit has been bumped to 7.0.0: This involves the breaking change that "max: 0"
in the importExportRateLimiting is set to always trigger. So set it to your desired value.
If you haven't changed that value in the settings.json you are all set.
### Notable enhancements and fixes
* Bugfixes
* Fix etherpad crashing with mongodb database
* Enhancements
* Add surrealdb database support. You can find out more about this database [here](https://surrealdb.com).
* Make sqlite faster: The sqlite library has been switched to better-sqlite3. This should lead to better performance.
# 1.9.2
### Notable enhancements and fixes
* Security
* Enable session key rotation: This setting can be enabled in the settings.json. It changes the signing key for the cookie authentication in a fixed interval.
* Bugfixes
* Fix appendRevision when creating a new pad via the API without a text.
* Enhancements
* Bump JQuery to version 3.7
* Update elasticsearch connector to version 8
### Compatibility changes
* No compability changes as JQuery maintains excellent backwards compatibility.
#### For plugin authors
* Please update to JQuery 3.7. There is an excellent deprecation guide over [here](https://api.jquery.com/category/deprecated/). Version 3.1 to 3.7 are relevant for the upgrade.
# 1.9.1
### Notable enhancements and fixes

View File

@ -17,6 +17,9 @@ RUN \
}
ENV TIMEZONE=${TIMEZONE}
# Control the configuration file to be copied into the container.
ARG SETTINGS=./settings.json.docker
# plugins to install while building the container. By default no plugins are
# installed.
# If given a value, it has to be a space-separated, quoted list of plugin names.
@ -78,7 +81,7 @@ RUN \
apk add \
ca-certificates \
git \
${INSTALL_ABIWORD:+abiword} \
${INSTALL_ABIWORD:+abiword abiword-plugin-command} \
${INSTALL_SOFFICE:+libreoffice openjdk8-jre libreoffice-common}
USER etherpad
@ -101,7 +104,7 @@ RUN { [ -z "${ETHERPAD_PLUGINS}" ] || \
rm -rf ~/.npm
# Copy the configuration file.
COPY --chown=etherpad:etherpad ./settings.json.docker "${EP_DIR}"/settings.json
COPY --chown=etherpad:etherpad ${SETTINGS} "${EP_DIR}"/settings.json
# Fix group permissions
RUN chmod -R g=u .

View File

@ -116,7 +116,7 @@ following:
### Docker container
Find [here](doc/docker.md) information on running Etherpad in a container.
Find [here](doc/docker.adoc) information on running Etherpad in a container.
## Plugins

View File

@ -283,7 +283,7 @@ Things in context:
This hook is called on the client side whenever a user joins or changes. This
can be used to create notifications or an alternate user list.
=== `chatNewMessage`
=== chatNewMessage
Called from: `src/static/js/chat.js`
@ -319,7 +319,7 @@ Context properties:
* `duration`: How long (in milliseconds) to display the gritter notification (0
to disable).
=== `chatSendMessage`
=== chatSendMessage
Called from: `src/static/js/chat.js`

View File

@ -51,7 +51,7 @@ Things in context:
If this hook returns an error, the callback to the install function gets an error, too. This seems useful for adding in features when a particular plugin is installed.
=== `init_<plugin name>`
=== init_<plugin name>
Called from: `src/static/js/pluginfw/plugins.js`
@ -62,7 +62,7 @@ Context properties:
* `logger`: An object with the following `console`-like methods: `debug`,
`info`, `log`, `warn`, `error`.
=== `expressPreSession`
=== expressPreSession
Called from: `src/node/hooks/express.js`
@ -92,7 +92,7 @@ exports.expressPreSession = async (hookName, {app}) => {
};
----
=== `expressConfigure`
=== expressConfigure
Called from: `src/node/hooks/express.js`
@ -107,7 +107,7 @@ Context properties:
* `app`: The Express https://expressjs.com/en/4x/api.html==app[Application]
object.
=== `expressCreateServer`
=== expressCreateServer
Called from: `src/node/hooks/express.js`
@ -210,7 +210,7 @@ Things in context:
This hook gets called when the access to the concrete pad is being checked.
Return `false` to deny access.
=== `getAuthorId`
=== getAuthorId
Called from `src/node/db/AuthorManager.js`
@ -267,7 +267,7 @@ exports.getAuthorId = async (hookName, context) => {
};
----
=== `padCreate`
=== padCreate
Called from: `src/node/db/Pad.js`
@ -279,7 +279,7 @@ Context properties:
* `authorId`: The ID of the author who created the pad.
* `author` (**deprecated**): Synonym of `authorId`.
=== `padDefaultContent`
=== padDefaultContent
Called from `src/node/db/Pad.js`
@ -304,7 +304,7 @@ Context properties:
be updated to match. Plugins must check the value of the `type` property
before reading this value.
=== `padLoad`
=== padLoad
Called from: `src/node/db/PadManager.js`
@ -315,7 +315,7 @@ Context properties:
* `pad`: The Pad object.
[#_padupdate]
=== `padUpdate`
=== padUpdate
Called from: `src/node/db/Pad.js`
@ -329,7 +329,7 @@ Context properties:
* `revs`: The index of the new revision.
* `changeset`: The changeset of this revision (see <<_padupdate>>).
=== `padCopy`
=== padCopy
Called from: `src/node/db/Pad.js`
@ -355,7 +355,7 @@ Usage examples:
* https://github.com/ether/ep_comments_page
=== `padRemove`
=== padRemove
Called from: `src/node/db/Pad.js`
@ -370,7 +370,7 @@ Usage examples:
* https://github.com/ether/ep_comments_page
=== `padCheck`
=== padCheck
Called from: `src/node/db/Pad.js`
@ -393,7 +393,7 @@ Things in context:
I have no idea what this is useful for, someone else will have to add this description.
=== `preAuthorize`
=== preAuthorize
Called from: `src/node/hooks/express/webaccess.js`
@ -700,7 +700,7 @@ exports.authzFailure = (hookName, context, cb) => {
};
----
=== `handleMessage`
=== handleMessage
Called from: `src/node/handler/PadMessageHandler.js`
@ -733,7 +733,7 @@ exports.handleMessage = async (hookName, {message, socket}) => {
};
----
=== `handleMessageSecurity`
=== handleMessageSecurity
Called from: `src/node/handler/PadMessageHandler.js`
@ -819,7 +819,7 @@ exports.clientVars = (hookName, context, callback) => {
};
----
=== `getLineHTMLForExport`
=== getLineHTMLForExport
Called from: `src/node/utils/ExportHtml.js`
@ -968,7 +968,7 @@ exports.exportHtmlAdditionalTagsWithData = function(hook, pad, cb){
};
----
=== `exportEtherpadAdditionalContent`
=== exportEtherpadAdditionalContent
Called from `src/node/utils/ExportEtherpad.js` and
`src/node/utils/ImportEtherpad.js`.
@ -990,7 +990,7 @@ Example:
exports.exportEtherpadAdditionalContent = () => ['comments'];
----
=== `exportEtherpad`
=== exportEtherpad
Called from `src/node/utils/ExportEtherpad.js`.
@ -1013,7 +1013,7 @@ Context properties:
should not assume that it is either the pad's real writable ID or its
read-only ID.
=== `importEtherpad`
=== importEtherpad
Called from `src/node/utils/ImportEtherpad.js`.
@ -1032,7 +1032,7 @@ Context properties:
modified.
* `srcPadId`: The pad ID used for the pad-specific information in `data`.
=== `import`
=== import
Called from: `src/node/handler/ImportHandler.js`
@ -1062,7 +1062,7 @@ exports.import = async (hookName, {fileEnding, ImportError}) => {
};
----
=== `userJoin`
=== userJoin
Called from: `src/node/handler/PadMessageHandler.js`
@ -1086,7 +1086,7 @@ exports.userJoin = async (hookName, {authorId, displayName, padId}) => {
};
```
=== `userLeave`
=== userLeave
Called from: `src/node/handler/PadMessageHandler.js`
@ -1110,7 +1110,7 @@ exports.userLeave = async (hookName, {author, padId}) => {
};
----
=== `chatNewMessage`
=== chatNewMessage
Called from: `src/node/handler/PadMessageHandler.js`

View File

@ -1,9 +1,9 @@
body {
border-top: solid #44b492 5pt;
line-height:150%;
font-family: 'Quicksand',sans-serif;
line-height: 150%;
font-family: "Quicksand", sans-serif;
color: #313b4a;
max-width:800px;
max-width: 1440px;
margin: 0 auto;
padding: 20px;
}
@ -12,24 +12,25 @@ a {
color: #555;
}
h1,h2 {
h1,
h2 {
color: #44b492;
line-height:100%;
line-height: 100%;
}
h2 {
font-size: 48px ;
font-size: 48px;
}
h3 {
font-size: 1.8rem;
}
h4{
h4 {
font-size: 1.5rem;
}
h5{
h5 {
font-size: 1.2rem;
}
@ -39,7 +40,7 @@ a:hover {
pre {
background-color: #e0e0e0;
padding:20px;
padding: 20px;
}
code {
@ -50,7 +51,9 @@ img {
max-width: 100%;
}
table, th, td {
table,
th,
td {
text-align: left;
border: 1px solid gray;
border-collapse: collapse;
@ -58,7 +61,7 @@ table, th, td {
th {
padding: 0.5em;
background: #EEE;
background: #eee;
}
td {

View File

@ -19,7 +19,7 @@ Cookies used by Etherpad.
| Session
| true
| true
| Session ID of the https://expressjs.com[Express web framework]. When Etherpad is behind a reverse proxy, and an administrator wants to use session stickiness, he may use this cookie. If you are behind a reverse proxy, please remember to set `trustProxy: true` in `settings.json`. Set in [webaccess.js#L131](https://github.com/ether/etherpad-lite/blob/01497aa399690e44393e91c19917d11d025df71b/src/node/hooks/express/webaccess.js#L131).
| Session ID of the https://expressjs.com[Express web framework]. When Etherpad is behind a reverse proxy, and an administrator wants to use session stickiness, he may use this cookie. If you are behind a reverse proxy, please remember to set `trustProxy: true` in `settings.json`. Set in https://github.com/ether/etherpad-lite/blob/01497aa399690e44393e91c19917d11d025df71b/src/node/hooks/express/webaccess.js#L131[webaccess.js#L131].
|language
@ -29,7 +29,7 @@ Cookies used by Etherpad.
| Session
| false
| true
| The language of the UI (e.g.: `en-GB`, `it`). Set in [pad_editor.js#L111](https://github.com/ether/etherpad-lite/blob/01497aa399690e44393e91c19917d11d025df71b/src/static/js/pad_editor.js#L111).
| The language of the UI (e.g.: `en-GB`, `it`). Set in https://github.com/ether/etherpad-lite/blob/01497aa399690e44393e91c19917d11d025df71b/src/static/js/pad_editor.js#L111[pad_editor.js#L111].
|prefs / prefsHttp
@ -39,7 +39,7 @@ Cookies used by Etherpad.
| year 3000
| false
| true
| Client-side preferences (e.g.: font family, chat always visible, show authorship colors, ...). Set in [pad_cookie.js#L49](https://github.com/ether/etherpad-lite/blob/01497aa399690e44393e91c19917d11d025df71b/src/static/js/pad_cookie.js#L49). `prefs` is used if Etherpad is accessed over HTTPS, `prefsHttp` if accessed over HTTP. For more info see https://github.com/ether/etherpad-lite/issues/3179.
| Client-side preferences (e.g.: font family, chat always visible, show authorship colors, ...). Set in https://github.com/ether/etherpad-lite/blob/01497aa399690e44393e91c19917d11d025df71b/src/static/js/pad_cookie.js#L49[pad_cookie.js#L49]. `prefs` is used if Etherpad is accessed over HTTPS, `prefsHttp` if accessed over HTTP. For more info see https://github.com/ether/etherpad-lite/issues/3179.
@ -50,7 +50,7 @@ Cookies used by Etherpad.
| 60 days
| false
| true
| A random token representing the author, of the form `t.randomstring_of_lenght_20`. The random string is generated by the client, at (https://github.com/ether/etherpad-lite/blob/01497aa399690e44393e91c19917d11d025df71b/src/static/js/pad.js#L55-L66[pad.js#L55-L66]). This cookie is always set by the client (at (https://github.com/ether/etherpad-lite/blob/01497aa399690e44393e91c19917d11d025df71b/src/static/js/pad.js#L153-L158[pad.js#L153-L158])) without any solicitation from the server. It is used for all the pads accessed via the web UI (not used for the HTTP API). On the server side, its value is accessed at [SecurityManager.js#L33](https://github.com/ether/etherpad-lite/blob/01497aa399690e44393e91c19917d11d025df71b/src/node/db/SecurityManager.js#L33).
| A random token representing the author, of the form `t.randomstring_of_lenght_20`. The random string is generated by the client, at https://github.com/ether/etherpad-lite/blob/01497aa399690e44393e91c19917d11d025df71b/src/static/js/pad.js#L55-L66[pad.js#L55-L66]. This cookie is always set by the client at https://github.com/ether/etherpad-lite/blob/01497aa399690e44393e91c19917d11d025df71b/src/static/js/pad.js#L153-L158[pad.js#L153-L158] without any solicitation from the server. It is used for all the pads accessed via the web UI (not used for the HTTP API). On the server side, its value is accessed at https://github.com/ether/etherpad-lite/blob/01497aa399690e44393e91c19917d11d025df71b/src/node/db/SecurityManager.js#L33[SecurityManager.js#L33].
|===
For more info, visit the related discussion at https://github.com/ether/etherpad-lite/issues/3563.

View File

View File

@ -20,12 +20,13 @@ Translations will be send back to us regularly and will eventually appear in the
[source,json]
----
{ "pad.modals.connected": "Connecté."
, "pad.modals.uderdup": "Ouvrir dans une nouvelle fenêtre."
, "pad.toolbar.unindent.title": "Dèsindenter"
, "pad.toolbar.undo.title": "Annuler (Ctrl-Z)"
, "timeslider.pageTitle": "{{appTitle}} Curseur temporel",
, ...
{
"pad.modals.connected": "Connecté.",
"pad.modals.uderdup": "Ouvrir dans une nouvelle fenêtre.",
"pad.toolbar.unindent.title": "Dèsindenter",
"pad.toolbar.undo.title": "Annuler (Ctrl-Z)",
"timeslider.pageTitle": "{{appTitle}} Curseur temporel",
...
}
----
@ -71,7 +72,7 @@ alert(window._('pad.chat'));
----
==== 2. Create translate files in the locales directory of your plugin
* The name of the file must be the language code of the language it contains translations for (see https://joker-x.github.com/languages4translatewiki/test/[supported lang codes]; e.g. en ? English, es ? Spanish...)
* The name of the file must be the language code of the language it contains translations for (see https://joker-x.github.io/languages4translatewiki/test/[supported lang codes]; e.g. en ? English, es ? Spanish...)
* The extension of the file must be `.json`
* The default language is English, so your plugin should always provide `en.json`
* In order to avoid naming conflicts, your message keys should start with the name of your plugin followed by a dot (see below)
@ -80,7 +81,8 @@ alert(window._('pad.chat'));
[source, json]
----
{ "ep_your-plugin.h1": "Heading 1"
{
"ep_your-plugin.h1": "Heading 1"
}
----
@ -88,7 +90,8 @@ alert(window._('pad.chat'));
[source, json]
----
{ "ep_your-plugin.h1": "Título 1"
{
"ep_your-plugin.h1": "Título 1"
}
----
@ -103,8 +106,9 @@ For example, if you want to replace `Chat` with `Notes`, simply add...
[source,json]
----
{ "ep_your-plugin.h1": "Heading 1"
, "pad.chat": "Notes"
{
"ep_your-plugin.h1": "Heading 1",
"pad.chat": "Notes"
}
----

View File

@ -64,7 +64,7 @@ translations into `locales/`, though, in order to have them integrated. (See
Your plugin definition goes into `ep.json`. In this file you register your hook
functions, indicate the parts of your plugin and the order of execution. (A
documentation of all available events to hook into can be found in chapter
[hooks](#all_hooks).)
<<Server-side hooks>>.)
[source,json]
----
@ -88,7 +88,7 @@ A hook function registration maps a hook name to a hook function specification.
The hook function specification looks like `ep_example/file.js:functionName`. It
consists of two parts separated by a colon: a module name to `require()` and the
name of a function exported by the named module. See
[`module.exports`](https://nodejs.org/docs/latest/api/modules.html#modules_module_exports)
https://nodejs.org/docs/latest/api/modules.html#modules_module_exports[`module.exports`]
for how to export a function.
For the module name you can omit the `.js` suffix, and if the file is `index.js`

View File

@ -207,15 +207,15 @@
"dbType": "${DB_TYPE:dirty}",
"dbSettings": {
"host": "${DB_HOST:undefined}",
"port": "${DB_PORT:undefined}",
"database": "${DB_NAME:undefined}",
"user": "${DB_USER:undefined}",
"password": "${DB_PASS:undefined}",
"charset": "${DB_CHARSET:undefined}",
"filename": "${DB_FILENAME:var/dirty.db}",
"host": "${DB_HOST:undefined}",
"port": "${DB_PORT:undefined}",
"database": "${DB_NAME:undefined}",
"user": "${DB_USER:undefined}",
"password": "${DB_PASS:undefined}",
"charset": "${DB_CHARSET:undefined}",
"filename": "${DB_FILENAME:var/dirty.db}",
"collection": "${DB_COLLECTION:undefined}",
"url": "${DB_URL:undefined}"
"url": "${DB_URL:undefined}"
},
/*

View File

@ -20,7 +20,7 @@ try cd "${workdir}"
[ -f src/package.json ] || fatal "failed to cd to etherpad root directory"
# See https://github.com/msys2/MSYS2-packages/issues/1216
export MSYS=winsymlinks:lnk
export MSYSTEM=winsymlinks:lnk
OUTPUT=${workdir}/etherpad-win.zip
@ -29,10 +29,12 @@ trap 'exit 1' HUP INT TERM
trap 'log "cleaning up..."; try cd / && try rm -rf "${TMP_FOLDER}"' EXIT
log "create a clean environment in $TMP_FOLDER..."
try git archive --format=tar HEAD | (try cd "${TMP_FOLDER}" && try tar xf -) \
try export GIT_WORK_TREE=${TMP_FOLDER}; git checkout HEAD -f \
|| fatal "failed to copy etherpad to temporary folder"
try mkdir "${TMP_FOLDER}"/.git
try git rev-parse HEAD >${TMP_FOLDER}/.git/HEAD
try cp -r ./src/node_modules "${TMP_FOLDER}"/src/node_modules
try cd "${TMP_FOLDER}"
[ -f src/package.json ] || fatal "failed to copy etherpad to temporary folder"

View File

@ -5,9 +5,9 @@
"requires": true,
"dependencies": {
"marked": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/marked/-/marked-5.1.0.tgz",
"integrity": "sha512-z3/nBe7aTI8JDszlYLk7dDVNpngjw0o1ZJtrA9kIfkkHcIF+xH7mO23aISl4WxP83elU+MFROgahqdpd05lMEQ=="
"version": "9.1.4",
"resolved": "https://registry.npmjs.org/marked/-/marked-9.1.4.tgz",
"integrity": "sha512-Mq83CCaClhXqhf8sLQ57c1unNelHEuFadK36ga+GeXR4FeT/5ssaC5PaCRVqMA74VYorzYRqdAaxxteIanh3Kw=="
}
}
}

View File

@ -7,7 +7,7 @@
"node": ">=12.17.0"
},
"dependencies": {
"marked": "^5.1.0"
"marked": "^9.1.4"
},
"devDependencies": {},
"optionalDependencies": {},

View File

@ -14,7 +14,7 @@ cd /D node_modules
mklink /D "ep_etherpad-lite" "..\src"
cd /D "ep_etherpad-lite"
cmd /C npm ci || exit /B 1
cmd /C npm ci --legacy-peer-deps || exit /B 1
cd /D "%~dp0\..\.."

View File

@ -9,9 +9,12 @@ const childProcess = require('child_process');
const log4js = require('log4js');
const path = require('path');
const semver = require('semver');
const {exec} = require("child_process");
const {exec} = require('child_process');
log4js.replaceConsole();
log4js.configure({appenders: {console: {type: 'console'}},
categories: {
default: {appenders: ['console'], level: 'info'},
}});
/*
@ -78,11 +81,11 @@ const assertUpstreamOk = (branch, opts = {}) => {
};
// Check if asciidoctor is installed
exec('asciidoctor -v', (err,stdout)=>{
if (err){
console.log('Please install asciidoctor')
console.log('https://asciidoctor.org/docs/install-toolchain/')
process.exit(1)
exec('asciidoctor -v', (err, stdout) => {
if (err) {
console.log('Please install asciidoctor');
console.log('https://asciidoctor.org/docs/install-toolchain/');
process.exit(1);
}
});
@ -182,8 +185,8 @@ try {
console.log('Updating ether.github.com master branch...');
run('git pull --ff-only', {cwd: '../ether.github.com/'});
console.log('Committing documentation...');
run(`cp -R out/doc/ ../ether.github.com/doc/v'${newVersion}'`);
run(`rm -f latest && ln -s 'v${newVersion}' latest`, {cwd: '../ether.github.com/doc/'});
run(`cp -R out/doc/ ../ether.github.com/public/doc/v'${newVersion}'`);
run(`npm version ${newVersion}`, {cwd: '../ether.github.com'});
run('git add .', {cwd: '../ether.github.com/'});
run(`git commit -m '${newVersion} docs'`, {cwd: '../ether.github.com/'});
} catch (err) {
@ -203,12 +206,9 @@ console.log(' (cd ../ether.github.com && git show)');
console.log('If everything looks good then push:');
console.log(` git push origin master develop '${newVersion}'`);
console.log(' (cd ../ether.github.com && git push)');
console.log('Create a Windows build:');
console.log(' bin/buildForWindows.sh');
console.log('Creating a Windows build is not necessary anymore and will be created by GitHub action');
console.log('Visit https://github.com/ether/etherpad-lite/releases/new and create a new release ' +
`with 'master' as the target and the version is ${newVersion}. Include the windows ` +
'zip as an asset');
console.log('Once the new docs are uploaded then modify the download links (replace ' +
`${currentVersion} with ${newVersion} on etherpad.org and then pull master onto ` +
'develop)');
`with 'master' as the target and the version is ${newVersion}. `);
console.log('The docs are updated automatically with the new version. While the windows build' +
' is generated people can still download the older versions.');
console.log('Finally go public with an announcement via our comms channels :)');

View File

@ -1,7 +1,8 @@
{
"@metadata": {
"authors": [
"Xuacu"
"Xuacu",
"YoaR"
]
},
"index.newPad": "Nuevu bloc",
@ -25,9 +26,9 @@
"pad.toolbar.embed.title": "Compartir ya incrustar esti bloc",
"pad.toolbar.showusers.title": "Amosar los usuarios d'esti bloc",
"pad.colorpicker.save": "Guardar",
"pad.colorpicker.cancel": "Encaboxar",
"pad.colorpicker.cancel": "Zarrar",
"pad.loading": "Cargando...",
"pad.noCookie": "Nun pudo alcontrase la cookie. ¡Por favor, permite les cookies nel navegador! La sesión y preferencies nun se guarden ente visites. Esto pué debese a qu'Etherpad inclúyese nun iFrame en dalgunos restoladores. Asegúrate de qu'Etherpad tea nel mesmu subdominiu/dominiu que la iFrame padre",
"pad.noCookie": "Nun pudo alcontrase la cookie. ¡Por favor, permite les cookies nel navegador! La sesión y preferencies nun se guarden ente visites. Esto pue debese a qu'Etherpad inclúyese nun iFrame en dalgunos restoladores. Asegúrate de qu'Etherpad tea nel mesmu subdominiu/dominiu que l'iFrame padre",
"pad.permissionDenied": "Nun tienes permisu pa entrar a esti bloc",
"pad.settings.padSettings": "Configuración del bloc",
"pad.settings.myView": "la mio vista",
@ -56,7 +57,7 @@
"pad.modals.reconnecting": "Reconeutando col to bloc...",
"pad.modals.forcereconnect": "Forzar la reconexón",
"pad.modals.reconnecttimer": "Tentando reconeutar en",
"pad.modals.cancel": "Encaboxar",
"pad.modals.cancel": "Zarrar",
"pad.modals.userdup": "Abiertu n'otra ventana",
"pad.modals.userdup.explanation": "Esti bloc paez que ta abiertu en más d'una ventana del navegador d'esti ordenador.",
"pad.modals.userdup.advice": "Reconeutar pa usar esta ventana.",

View File

@ -2,13 +2,29 @@
"@metadata": {
"authors": [
"Baloch Afghanistan",
"Moshtank",
"Sultanselim baloch"
]
},
"admin.page-title": "کارمسترءِ کُرسی - اترپَد",
"admin_plugins": "گݔشانکانءِ کار ءُ بار",
"admin_plugins.available": "دسترسݔن گݔشانک",
"admin_plugins.available_not-found": "گݔشانکے نݔست اَت۔",
"admin_plugins.available_install.value": "پِررݔنَگ",
"admin_plugins.available_search.placeholder": "گݔشانکان شۏھاز پہ پِررݔنَگا",
"admin_plugins.description": "سرۏشتادی",
"admin_plugins.installed": "گݔشانک پِررݔنگ بیت",
"admin_plugins.installed_fetching": "پِررݔنتَگݔن گݔشانکانءِ پچ کنگ",
"admin_plugins.installed_nothing": "شما ھنگت ھچ گݔشانکے نہ پِررݔنتَگ۔",
"admin_plugins.installed_uninstall.value": "پِررݔنتَگݔنءِ بند کنگ",
"admin_plugins.last-update": "گُڈی پہ رۏچان",
"admin_plugins.name": "نام",
"admin_plugins.page-title": "گݔشانکءِ کارمستری - اترپد",
"admin_plugins.version": "ورژن",
"index.newPad": "دفترچه یادداشت تازه",
"index.createOpenPad": "یا ایجاد/بازکردن یک دفترچه یادداشت با نام:",
"pad.toolbar.bold.title": "پررنگ (Ctrl-B)",
"pad.toolbar.italic.title": "کج (Ctrl-I)",
"pad.toolbar.italic.title": َش (Ctrl-I)",
"pad.toolbar.underline.title": "زیرخط (Ctrl-U)",
"pad.toolbar.strikethrough.title": "خط خورده",
"pad.toolbar.ol.title": "فهرست مرتب شده",
@ -21,12 +37,12 @@
"pad.toolbar.import_export.title": "درون‌ریزی/برون‌ریزی از/به قالب‌های مختلف",
"pad.toolbar.timeslider.title": "لغزندهٔ زمان",
"pad.toolbar.savedRevision.title": "ذخیره‌سازی نسخه",
"pad.toolbar.settings.title": "تنظیمات",
"pad.toolbar.settings.title": "ردانکان",
"pad.toolbar.embed.title": "اشتراک و جاسازی این دفترچه یادداشت",
"pad.toolbar.showusers.title": "نمایش کاربران در این دفترچه یادداشت",
"pad.colorpicker.save": "زاپاس کورتین",
"pad.colorpicker.cancel": "کنسیل",
"pad.loading": "...بار بیت",
"pad.colorpicker.save": "سَپت",
"pad.colorpicker.cancel": "بجَگ",
"pad.loading": "بییگئن...",
"pad.permissionDenied": "شرمنده، شما را اجازت په دسترسی ای صفحه نیست.",
"pad.settings.padSettings": "تنظیمات دفترچه یادداشت",
"pad.settings.myView": "منی سۏج",
@ -39,7 +55,7 @@
"pad.settings.language": "زبان:",
"pad.importExport.import_export": "درون‌ریزی/برون‌ریزی",
"pad.importExport.import": "بارگذاری پرونده‌ی متنی یا سند",
"pad.importExport.importSuccessful": "موفقیت آمیز بود!",
"pad.importExport.importSuccessful": "سۏبݔن بیت!",
"pad.importExport.export": "برون‌ریزی این دفترچه یادداشت با قالب:",
"pad.importExport.exporthtml": "HTML",
"pad.importExport.exportplain": "سادگین متن",
@ -66,21 +82,21 @@
"pad.modals.badChangeset.cause": "این می‌تواند به دلیل پیکربندی اشتباه یا سایر رفتارهای غیرمنتظره باشد. اگر فکر می‌کنید این یک خطا است لطفاً با مدیر خدمت تماس بگیرید. برای ادامهٔ ویرایش سعی کنید که دوباره متصل شوید.",
"pad.modals.corruptPad.explanation": "پدی که شما سعی دارید دسترسی پیدا کنید خراب است.",
"pad.modals.corruptPad.cause": "این احتمالاً به دلیل تنظیمات اشتباه کارساز یا سایر رفتارهای غیرمنتظره است. لطفاً با مدیر خدمت تماس حاصل کنید.",
"pad.modals.deleted": "پاک کورتین",
"pad.modals.deleted.explanation": "این دفترچه یادداشت پاک شده‌است.",
"pad.modals.deleted": "گار بیت۔",
"pad.modals.deleted.explanation": "اے یادداشت پاک کنگ بیتگ۔",
"pad.modals.disconnected": "شمئی سکّی کھت اِنت۔",
"pad.modals.disconnected.explanation": "اتصال به سرور قطع شده‌است.",
"pad.modals.disconnected.cause": "ممکن است سرور در دسترس نباشد. اگر این مشکل باز هم رخ داد مدیر حدمت را آگاه کنید.",
"pad.share": "به اشتراک‌گذاری این دفترچه یادداشت",
"pad.share.readonly": "فقط خواندنی",
"pad.share.link": "پیوند",
"pad.share.link": "لینک",
"pad.share.emebdcode": "جاسازی نشانی",
"pad.chat": "گفتگو",
"pad.chat.title": "بازکردن گفتگو برای این دفترچه یادداشت",
"pad.chat.loadmessages": "گݔشترݔں پیگامء چارگ",
"timeslider.pageTitle": "لغزندهٔ زمان {{appTitle}}",
"timeslider.toolbar.returnbutton": "بازگشت به دفترچه یادداشت",
"timeslider.toolbar.authors": "نویسوک:",
"timeslider.toolbar.returnbutton": "چَھر کنگ پہ یاددپترا",
"timeslider.toolbar.authors": "لککۏک:",
"timeslider.toolbar.authorsList": "بدون نویسنده",
"timeslider.toolbar.exportlink.title": "درگیزگ",
"timeslider.exportCurrent": "برون‌ریزی نگارش کنونی به عنوان:",

View File

@ -4,13 +4,29 @@
"Christian List",
"Joedalton",
"Peter Alberti",
"Peterleth",
"Saederup92",
"Steenth"
]
},
"admin.page-title": "Admin Dashboard - Etherpad",
"admin_plugins": "Plugin manager",
"admin_plugins.available": "Tilgængelige Plugins",
"admin_plugins.available_not-found": "Ingen plugins fundet.",
"admin_plugins.available_fetching": "Henter...",
"admin_plugins.available_install.value": "Installer",
"admin_plugins.available_search.placeholder": "Søg efter plugins der kan installeres",
"admin_plugins.description": "Beskrivelse",
"admin_plugins.installed": "Installerede plugins",
"admin_plugins.installed_fetching": "Henter installerede plugins...",
"admin_plugins.installed_nothing": "Du har ikke installeret nogen plugins endnu.",
"admin_plugins.installed_uninstall.value": "Afinstaller",
"admin_plugins.last-update": "Sidst opdateret",
"admin_plugins.name": "Navn",
"admin_plugins.page-title": "Plugin manager - Etherpad",
"admin_plugins.version": "Version",
"admin_plugins_info": "Fejlfindingsoplysninger",
"admin_plugins_info.hooks": "Installerede hooks",
"admin_settings": "Indstillinger",
"index.newPad": "Ny Pad",
"index.createOpenPad": "eller opret/åbn en Pad med navnet:",

View File

@ -9,6 +9,7 @@
"Mklehr",
"Nipsky",
"Predatorix",
"SamTV",
"Sebastian Wallroth",
"Thargon",
"Tim.krieger",
@ -17,7 +18,7 @@
]
},
"admin.page-title": "Admin Dashboard - Etherpad",
"admin_plugins": "Plugins verwalten",
"admin_plugins": "Pluginverwaltung",
"admin_plugins.available": "Verfügbare Plugins",
"admin_plugins.available_not-found": "Keine Plugins gefunden.",
"admin_plugins.available_fetching": "Wird abgerufen...",
@ -40,12 +41,12 @@
"admin_plugins_info.plugins": "Installierte Plugins",
"admin_plugins_info.page-title": "Plugin Informationen - Etherpad",
"admin_plugins_info.version": "Etherpad Version",
"admin_plugins_info.version_latest": "Neueste Version",
"admin_plugins_info.version_latest": "Neueste verfügbare Version",
"admin_plugins_info.version_number": "Versionsnummer",
"admin_settings": "Einstellungen",
"admin_settings.current": "Derzeitige Konfiguration",
"admin_settings.current_example-devel": "Beispielhafte Entwicklungseinstellungs-Templates",
"admin_settings.current_example-prod": "Beispiel einer Vorlage für Produktionseinstellungen",
"admin_settings.current_example-prod": "Beispiel eines produktiven Templates",
"admin_settings.current_restart.value": "Etherpad neustarten",
"admin_settings.current_save.value": "Einstellungen speichern",
"admin_settings.page-title": "Einstellungen - Etherpad",
@ -71,9 +72,9 @@
"pad.toolbar.showusers.title": "Benutzer dieses Pads anzeigen",
"pad.colorpicker.save": "Speichern",
"pad.colorpicker.cancel": "Abbrechen",
"pad.loading": "Lade …",
"pad.loading": "Laden …",
"pad.noCookie": "Das Cookie konnte nicht gefunden werden. Bitte erlaube Cookies in deinem Browser! Deine Sitzung und Einstellungen werden zwischen den Besuchen nicht gespeichert. Dies kann darauf zurückzuführen sein, dass Etherpad in einigen Browsern in einem iFrame enthalten ist. Bitte stelle sicher, dass sich Etherpad auf der gleichen Subdomain/Domain wie der übergeordnete iFrame befindet.",
"pad.permissionDenied": "Du hast keine Berechtigung, um auf dieses Pad zuzugreifen",
"pad.permissionDenied": "Du hast keine Berechtigung, um auf dieses Pad zuzugreifen.",
"pad.settings.padSettings": "Pad-Einstellungen",
"pad.settings.myView": "Eigene Ansicht",
"pad.settings.stickychat": "Unterhaltung immer anzeigen",
@ -85,7 +86,7 @@
"pad.settings.fontType.normal": "Normal",
"pad.settings.language": "Sprache:",
"pad.settings.about": "Über",
"pad.settings.poweredBy": "Powered by",
"pad.settings.poweredBy": "Betrieben von",
"pad.importExport.import_export": "Import/Export",
"pad.importExport.import": "Textdatei oder Dokument hochladen",
"pad.importExport.importSuccessful": "Erfolgreich!",
@ -120,7 +121,7 @@
"pad.modals.corruptPad.cause": "Dies könnte an einer falschen Serverkonfiguration oder einem anderen unerwarteten Verhalten liegen. Bitte kontaktiere den Administrator dieses Dienstes.",
"pad.modals.deleted": "Gelöscht.",
"pad.modals.deleted.explanation": "Dieses Pad wurde entfernt.",
"pad.modals.rateLimited": "Begrenzte Rate.",
"pad.modals.rateLimited": "Durchsatzratenbegrenzt",
"pad.modals.rateLimited.explanation": "Sie haben zu viele Nachrichten an dieses Pad gesendet, so dass die Verbindung unterbrochen wurde.",
"pad.modals.rejected.explanation": "Der Server hat eine Nachricht abgelehnt, die von deinem Browser gesendet wurde.",
"pad.modals.rejected.cause": "Möglicherweise wurde der Server aktualisiert, während du das Pad angesehen hast, oder es existiert ein Fehler in Etherpad. Versuche, die Seite neu zu laden.",
@ -140,7 +141,7 @@
"timeslider.pageTitle": "{{appTitle}} Bearbeitungsverlauf",
"timeslider.toolbar.returnbutton": "Zurück zum Pad",
"timeslider.toolbar.authors": "Autoren:",
"timeslider.toolbar.authorsList": "keine Autoren",
"timeslider.toolbar.authorsList": "Keine Autoren",
"timeslider.toolbar.exportlink.title": "Diese Version exportieren",
"timeslider.exportCurrent": "Exportiere diese Version als:",
"timeslider.version": "Version {{version}}",
@ -163,7 +164,7 @@
"timeslider.month.december": "Dezember",
"timeslider.unnamedauthors": "{{num}} {[plural(num) one: unbenannter Autor, other: unbenannte Autoren ]}",
"pad.savedrevs.marked": "Diese Version wurde jetzt als gespeicherte Version gekennzeichnet",
"pad.savedrevs.timeslider": "Du kannst gespeicherte Versionen durch den Aufruf des Bearbeitungsverlaufes ansehen.",
"pad.savedrevs.timeslider": "Du kannst gespeicherte Versionen durch den Aufruf des Bearbeitungsverlaufs ansehen.",
"pad.userlist.entername": "Dein Name?",
"pad.userlist.unnamed": "unbenannt",
"pad.editbar.clearcolors": "Autorenfarben im gesamten Dokument zurücksetzen? Dies kann nicht rückgängig gemacht werden",

View File

@ -2,6 +2,7 @@
"@metadata": {
"authors": [
"Armando-Martin",
"Atzerritik",
"DDPAT",
"Dgstranz",
"Fitoschido",
@ -74,7 +75,7 @@
"pad.colorpicker.save": "Guardar",
"pad.colorpicker.cancel": "Cancelar",
"pad.loading": "Cargando...",
"pad.noCookie": "No se pudo encontrar la «cookie». Permite la utilización de «cookies» en el navegador.",
"pad.noCookie": "No se pudo encontrar la galleta. ¡Por favor, permita las cookies en su navegador! Su sesión y configuración no se guardarán entre las visitas. Esto puede deberse a que Etherpad está incluido en un iFrame en algunos navegadores. Por favor asegúrese de que Etherpad está en el mismo subdominio/dominio que el iFrame padre",
"pad.permissionDenied": "No tienes permiso para acceder a este pad",
"pad.settings.padSettings": "Configuración del pad",
"pad.settings.myView": "Preferencias personales",
@ -98,7 +99,7 @@
"pad.importExport.exportword": "Microsoft Word",
"pad.importExport.exportpdf": "PDF",
"pad.importExport.exportopen": "ODF (Open Document Format)",
"pad.importExport.abiword.innerHTML": "Solo es posible importar texto sin formato o en HTML. Para obtener funciones de importación más avanzadas es necesario <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">instalar AbiWord</a>.",
"pad.importExport.abiword.innerHTML": "Solo se puede importar desde texto plano o formatos HTML. Para obtener funciones de importación más avanzadas, <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-with-AbiWord\">instale AbiWord o LibreOffice</a>.",
"pad.modals.connected": "Conectado.",
"pad.modals.reconnecting": "Reconectando a tu pad...",
"pad.modals.forcereconnect": "Forzar reconexión",

View File

@ -10,7 +10,7 @@
"Xabier Armendaritz"
]
},
"admin.page-title": "Admin Aginte-panela - Etherpad",
"admin.page-title": "Kudeaketa panela - Etherpad",
"admin_plugins": "Plugin-en kudeaketa",
"admin_plugins.available": "Eskuragarri dauden plugin-ak",
"admin_plugins.available_not-found": "Ez da plugin-ik aurkitu",

View File

@ -16,8 +16,33 @@
"admin_plugins.available_not-found": "Įskiepių nerasta.",
"admin_plugins.available_fetching": "Gaunama…",
"admin_plugins.available_install.value": "Įdiegti",
"admin_plugins.available_search.placeholder": "Ieškokite įskiepių įdiegimui",
"admin_plugins.description": "Aprašymas",
"admin_plugins.installed": "Įdiegti įskiepiai",
"admin_plugins.installed_fetching": "Gaunami įdiegti papildiniai…",
"admin_plugins.installed_nothing": "Dar neįdiegėte jokių papildinių.",
"admin_plugins.installed_uninstall.value": "Išinstaluoti",
"admin_plugins.last-update": "Paskutinis atnaujinimas",
"admin_plugins.name": "Pavadinimas",
"admin_plugins.page-title": "Papildinių tvarkyklė Etherpad",
"admin_plugins.version": "Versija",
"admin_plugins_info": "Trikčių šalinimo informacija",
"admin_plugins_info.parts": "Įdiegtos dalys",
"admin_plugins_info.plugins": "Įdiegti papildiniai",
"admin_plugins_info.page-title": "Papildinio informacija Etherpad",
"admin_plugins_info.version": "Etherpad versija",
"admin_plugins_info.version_latest": "Naujausia prieinama versija",
"admin_plugins_info.version_number": "Versijos numeris",
"admin_settings": "Nustatymai",
"admin_settings.current": "Dabartinė konfigūracija",
"admin_settings.current_example-devel": "Kūrimo nustatymų šablono pavyzdys",
"admin_settings.current_example-prod": "Gamybos nustatymų šablono pavyzdys",
"admin_settings.current_restart.value": "Iš naujo paleisti Etherpad",
"admin_settings.current_save.value": "Išsaugoti nustatymus",
"admin_settings.page-title": "Nustatymai Etherpad",
"index.newPad": "Naujas bloknotas",
"index.createOpenPad": "arba sukurkite/atidarykite Bloknotą su pavadinimu:",
"index.openPad": "atidaryti egzistuojantį bloknotą su pavadinimu:",
"pad.toolbar.bold.title": "Paryškintasis (Ctrl-B)",
"pad.toolbar.italic.title": "Pasvirasis (Ctrl-I)",
"pad.toolbar.underline.title": "Pabraukimas (Ctrl-U)",
@ -50,6 +75,8 @@
"pad.settings.fontType": "Šrifto tipas:",
"pad.settings.fontType.normal": "Normalus",
"pad.settings.language": "Kalba:",
"pad.settings.about": "Apie",
"pad.settings.poweredBy": "Palaiko",
"pad.importExport.import_export": "Importuoti/Eksportuoti",
"pad.importExport.import": "Įkelkite bet kokį tekstinį failą arba dokumentą",
"pad.importExport.importSuccessful": "Pavyko!",
@ -60,9 +87,9 @@
"pad.importExport.exportword": "Microsoft Word",
"pad.importExport.exportpdf": "PDF",
"pad.importExport.exportopen": "ODF (Atvirasis dokumento formatas)",
"pad.importExport.abiword.innerHTML": "Galite importuoti tik iš paprasto teksto ar HTML formato. Dėl išplėstinių importavimo funkcijų prašome <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\">įdiegti AbiWord</a>.",
"pad.importExport.abiword.innerHTML": "Galite importuoti tik iš paprasto teksto ar HTML formatų. Dėl išplėstinių importavimo funkcijų prašome <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\">įdiegti AbiWord ar LibreOffice</a>.",
"pad.modals.connected": "Prisijungta.",
"pad.modals.reconnecting": "Iš naujo prisijungiama prie Jūsų bloknoto",
"pad.modals.reconnecting": "Iš naujo prisijungiama prie jūsų bloknoto…",
"pad.modals.forcereconnect": "Priversti prisijungti iš naujo",
"pad.modals.reconnecttimer": "Bandoma vėl prisijungti",
"pad.modals.cancel": "Atšaukti",
@ -84,6 +111,9 @@
"pad.modals.corruptPad.cause": "Tai gali nutikti dėl neteisingos serverio konfigūracijos ar kitos netikėtos elgsenos. Prašome susisiekti su paslaugos administratoriumi.",
"pad.modals.deleted": "Ištrintas.",
"pad.modals.deleted.explanation": "Bloknotas buvo pašalintas.",
"pad.modals.rateLimited.explanation": "Išsiuntėte per daug pranešimų į šį bloknotą, todėl jis atjungė jus.",
"pad.modals.rejected.explanation": "Serveris atmetė jūsų naršyklės išsiųstą pranešimą.",
"pad.modals.rejected.cause": "Gali būti, kad serveris buvo atnaujintas jums peržiūrint bloknotą, o gal tai Etherpad klaida. Pabandykite iš naujo įkelti puslapį.",
"pad.modals.disconnected": "Jūs atsijungėte.",
"pad.modals.disconnected.explanation": "Ryšys su serveriu nutrūko",
"pad.modals.disconnected.cause": "Gali būti, kad serveris yra nepasiekiamas. Prašome informuoti paslaugos administratorių jei tai tęsiasi.",
@ -96,6 +126,7 @@
"pad.chat.loadmessages": "Įkrauti daugiau pranešimų",
"pad.chat.stick.title": "Priklijuoti pokalbį",
"pad.chat.writeMessage.placeholder": "Rašykite savo žinutę čia",
"timeslider.followContents": "Sekite bloknoto turinio atnaujinimus",
"timeslider.pageTitle": "{{appTitle}} Laiko slinkiklis",
"timeslider.toolbar.returnbutton": "Grįžti į bloknotą",
"timeslider.toolbar.authors": "Autoriai:",
@ -125,7 +156,7 @@
"pad.savedrevs.timeslider": "Galite peržiūrėti išsaugotas peržiūras apsilankydami laiko slinkiklyje",
"pad.userlist.entername": "Įveskite savo vardą",
"pad.userlist.unnamed": "bevardis",
"pad.editbar.clearcolors": "Išvalyti autorystės spalvas visame dokumente?",
"pad.editbar.clearcolors": "Išvalyti autorystės spalvas visame dokumente? To negalima atšaukti",
"pad.impexp.importbutton": "Importuoti dabar",
"pad.impexp.importing": "Importuojama...",
"pad.impexp.confirmimport": "Failo importavimas pakeis dabartinį bloknoto tekstą. Ar tikrai norite tęsti?",
@ -134,5 +165,6 @@
"pad.impexp.uploadFailed": "Įkėlimas nepavyko, bandykite dar kartą",
"pad.impexp.importfailed": "Importuoti nepavyko",
"pad.impexp.copypaste": "Prašome nukopijuoti ir įklijuoti",
"pad.impexp.exportdisabled": "Eksportavimas {{type}} formatu yra išjungtas. Prašome susisiekti su savo sistemos administratoriumi dėl informacijos."
"pad.impexp.exportdisabled": "Eksportavimas {{type}} formatu yra išjungtas. Prašome susisiekti su savo sistemos administratoriumi dėl informacijos.",
"pad.impexp.maxFileSize": "Failas per didelis. Susisiekite su svetainės administratoriumi, kad padidintų leistiną importuoti failo dydį"
}

View File

@ -68,7 +68,7 @@
"pad.settings.chatandusers": "Ammustra sa tzarrada e is utentes",
"pad.settings.colorcheck": "Colores de autoria",
"pad.settings.linenocheck": "Nùmeros de lìnia",
"pad.settings.rtlcheck": "Cuntenutu dae manca a dereta",
"pad.settings.rtlcheck": "Boles lèghere su cuntenutu dae dereta a manca?",
"pad.settings.fontType": "Tipu de caràtere:",
"pad.settings.fontType.normal": "Normale",
"pad.settings.language": "Lìngua:",

View File

@ -2,6 +2,7 @@
"@metadata": {
"authors": [
"AmaryllisGardener",
"CiphriusKane",
"John Reid",
"Nintendofan885"
]
@ -50,7 +51,7 @@
"pad.importExport.exportword": "Microsoft Word",
"pad.importExport.exportpdf": "PDF",
"pad.importExport.exportopen": "ODF (Open Document Format)",
"pad.importExport.abiword.innerHTML": "Ye can yinly import fae plain tex or HTML formats. Fer mair advanced import features please <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\">install abiword</a>.",
"pad.importExport.abiword.innerHTML": "Ye can anely import fae plain tex or HTML formats. Fur mair advanced import features please <a href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\">install abiword</a>.",
"pad.modals.connected": "Connected.",
"pad.modals.reconnecting": "Reconnectin til yer pad..",
"pad.modals.forcereconnect": "Force reconnect",
@ -76,7 +77,7 @@
"pad.modals.disconnected.explanation": "The connection til the server wis loast",
"pad.modals.disconnected.cause": "The server micht be onavailable. Please notify the service admeenistrater gif this continues tae happen.",
"pad.share": "Share this pad",
"pad.share.readonly": "Read yinly",
"pad.share.readonly": "Read anely",
"pad.share.link": "Airtin",
"pad.share.emebdcode": "Embed URL",
"pad.chat": "Chait",

View File

@ -9,7 +9,8 @@
"Shangkuanlc",
"Shirayuki",
"Simon Shek",
"Wehwei"
"Wehwei",
"Winston Sung"
]
},
"admin.page-title": "管理員面板 - Etherpad",
@ -134,7 +135,7 @@
"pad.chat.writeMessage.placeholder": "在此編寫您的訊息",
"timeslider.followContents": "關注記事本內容更新",
"timeslider.pageTitle": "{{appTitle}}時間軸",
"timeslider.toolbar.returnbutton": "返回記事本",
"timeslider.toolbar.returnbutton": "返回記事本",
"timeslider.toolbar.authors": "協作者:",
"timeslider.toolbar.authorsList": "無協作者",
"timeslider.toolbar.exportlink.title": "匯出",

View File

@ -33,7 +33,7 @@ const exportTxt = require('../utils/ExportTxt');
const importHtml = require('../utils/ImportHtml');
const cleanText = require('./Pad').cleanText;
const PadDiff = require('../utils/padDiff');
const { checkValidRev, isInt } = require('../utils/checkValidRev');
const {checkValidRev, isInt} = require('../utils/checkValidRev');
/* ********************
* GROUP FUNCTIONS ****
@ -193,6 +193,13 @@ Example returns:
{code: 1, message:"padID does not exist", data: null}
{code: 1, message:"text too long", data: null}
*/
/**
*
* @param {String} padID the id of the pad
* @param {String} text the text of the pad
* @param {String} authorId the id of the author, defaulting to empty string
* @returns {Promise<void>}
*/
exports.setText = async (padID, text, authorId = '') => {
// text is required
if (typeof text !== 'string') {
@ -214,7 +221,10 @@ Example returns:
{code: 0, message:"ok", data: null}
{code: 1, message:"padID does not exist", data: null}
{code: 1, message:"text too long", data: null}
*/
@param {String} padID the id of the pad
@param {String} text the text of the pad
@param {String} authorId the id of the author, defaulting to empty string
*/
exports.appendText = async (padID, text, authorId = '') => {
// text is required
if (typeof text !== 'string') {
@ -233,6 +243,9 @@ Example returns:
{code: 0, message:"ok", data: {text:"Welcome <strong>Text</strong>"}}
{code: 1, message:"padID does not exist", data: null}
@param {String} padID the id of the pad
@param {String} rev the revision number, defaulting to the latest revision
@return {Promise<{html: string}>} the html of the pad
*/
exports.getHTML = async (padID, rev) => {
if (rev !== undefined) {
@ -265,6 +278,10 @@ Example returns:
{code: 0, message:"ok", data: null}
{code: 1, message:"padID does not exist", data: null}
@param {String} padID the id of the pad
@param {String} html the html of the pad
@param {String} authorId the id of the author, defaulting to empty string
*/
exports.setHTML = async (padID, html, authorId = '') => {
// html string is required
@ -303,6 +320,9 @@ Example returns:
{code: 1, message:"start is higher or equal to the current chatHead", data: null}
{code: 1, message:"padID does not exist", data: null}
@param {String} padID the id of the pad
@param {Number} start the start point of the chat-history
@param {Number} end the end point of the chat-history
*/
exports.getChatHistory = async (padID, start, end) => {
if (start && end) {
@ -349,6 +369,10 @@ Example returns:
{code: 0, message:"ok", data: null}
{code: 1, message:"padID does not exist", data: null}
@param {String} padID the id of the pad
@param {String} text the text of the chat-message
@param {String} authorID the id of the author
@param {Number} time the timestamp of the chat-message
*/
exports.appendChatMessage = async (padID, text, authorID, time) => {
// text is required
@ -378,6 +402,7 @@ Example returns:
{code: 0, message:"ok", data: {revisions: 56}}
{code: 1, message:"padID does not exist", data: null}
@param {String} padID the id of the pad
*/
exports.getRevisionsCount = async (padID) => {
// get the pad
@ -392,6 +417,7 @@ Example returns:
{code: 0, message:"ok", data: {savedRevisions: 42}}
{code: 1, message:"padID does not exist", data: null}
@param {String} padID the id of the pad
*/
exports.getSavedRevisionsCount = async (padID) => {
// get the pad
@ -406,6 +432,7 @@ Example returns:
{code: 0, message:"ok", data: {savedRevisions: [2, 42, 1337]}}
{code: 1, message:"padID does not exist", data: null}
@param {String} padID the id of the pad
*/
exports.listSavedRevisions = async (padID) => {
// get the pad
@ -420,6 +447,8 @@ Example returns:
{code: 0, message:"ok", data: null}
{code: 1, message:"padID does not exist", data: null}
@param {String} padID the id of the pad
@param {Number} rev the revision number, defaulting to the latest revision
*/
exports.saveRevision = async (padID, rev) => {
// check if rev is a number
@ -451,6 +480,8 @@ Example returns:
{code: 0, message:"ok", data: {lastEdited: 1340815946602}}
{code: 1, message:"padID does not exist", data: null}
@param {String} padID the id of the pad
@return {Promise<{lastEdited: number}>} the timestamp of the last revision of the pad
*/
exports.getLastEdited = async (padID) => {
// get the pad
@ -466,6 +497,9 @@ Example returns:
{code: 0, message:"ok", data: null}
{code: 1, message:"pad does already exist", data: null}
@param {String} padName the name of the new pad
@param {String} text the initial text of the pad
@param {String} authorId the id of the author, defaulting to empty string
*/
exports.createPad = async (padID, text, authorId = '') => {
if (padID) {
@ -491,6 +525,7 @@ Example returns:
{code: 0, message:"ok", data: null}
{code: 1, message:"padID does not exist", data: null}
@param {String} padID the id of the pad
*/
exports.deletePad = async (padID) => {
const pad = await getPadSafe(padID, true);
@ -504,6 +539,9 @@ exports.deletePad = async (padID) => {
{code:0, message:"ok", data:null}
{code: 1, message:"padID does not exist", data: null}
@param {String} padID the id of the pad
@param {Number} rev the revision number, defaulting to the latest revision
@param {String} authorId the id of the author, defaulting to empty string
*/
exports.restoreRevision = async (padID, rev, authorId = '') => {
// check if rev is a number
@ -568,6 +606,9 @@ Example returns:
{code: 0, message:"ok", data: {padID: destinationID}}
{code: 1, message:"padID does not exist", data: null}
@param {String} sourceID the id of the source pad
@param {String} destinationID the id of the destination pad
@param {Boolean} force whether to overwrite the destination pad if it exists
*/
exports.copyPad = async (sourceID, destinationID, force) => {
const pad = await getPadSafe(sourceID, true);
@ -582,6 +623,10 @@ Example returns:
{code: 0, message:"ok", data: {padID: destinationID}}
{code: 1, message:"padID does not exist", data: null}
@param {String} sourceID the id of the source pad
@param {String} destinationID the id of the destination pad
@param {Boolean} force whether to overwrite the destination pad if it exists
@param {String} authorId the id of the author, defaulting to empty string
*/
exports.copyPadWithoutHistory = async (sourceID, destinationID, force, authorId = '') => {
const pad = await getPadSafe(sourceID, true);
@ -596,6 +641,9 @@ Example returns:
{code: 0, message:"ok", data: {padID: destinationID}}
{code: 1, message:"padID does not exist", data: null}
@param {String} sourceID the id of the source pad
@param {String} destinationID the id of the destination pad
@param {Boolean} force whether to overwrite the destination pad if it exists
*/
exports.movePad = async (sourceID, destinationID, force) => {
const pad = await getPadSafe(sourceID, true);
@ -610,6 +658,7 @@ Example returns:
{code: 0, message:"ok", data: null}
{code: 1, message:"padID does not exist", data: null}
@param {String} padID the id of the pad
*/
exports.getReadOnlyID = async (padID) => {
// we don't need the pad object, but this function does all the security stuff for us
@ -628,6 +677,7 @@ Example returns:
{code: 0, message:"ok", data: {padID: padID}}
{code: 1, message:"padID does not exist", data: null}
@param {String} roID the readonly id of the pad
*/
exports.getPadID = async (roID) => {
// get the PadId
@ -646,6 +696,8 @@ Example returns:
{code: 0, message:"ok", data: null}
{code: 1, message:"padID does not exist", data: null}
@param {String} padID the id of the pad
@param {Boolean} publicStatus the public status of the pad
*/
exports.setPublicStatus = async (padID, publicStatus) => {
// ensure this is a group pad
@ -669,6 +721,7 @@ Example returns:
{code: 0, message:"ok", data: {publicStatus: true}}
{code: 1, message:"padID does not exist", data: null}
@param {String} padID the id of the pad
*/
exports.getPublicStatus = async (padID) => {
// ensure this is a group pad
@ -686,6 +739,7 @@ Example returns:
{code: 0, message:"ok", data: {authorIDs : ["a.s8oes9dhwrvt0zif", "a.akf8finncvomlqva"]}
{code: 1, message:"padID does not exist", data: null}
@param {String} padID the id of the pad
*/
exports.listAuthorsOfPad = async (padID) => {
// get the pad
@ -715,6 +769,8 @@ Example returns:
{code: 0, message:"ok"}
{code: 1, message:"padID does not exist"}
@param {String} padID the id of the pad
@param {String} msg the message to send
*/
exports.sendClientsMessage = async (padID, msg) => {
@ -740,6 +796,8 @@ Example returns:
{code: 0, message:"ok", data: {chatHead: 42}}
{code: 1, message:"padID does not exist", data: null}
@param {String} padID the id of the pad
@return {Promise<{chatHead: number}>} the chatHead of the pad
*/
exports.getChatHead = async (padID) => {
// get the pad
@ -763,7 +821,9 @@ Example returns:
}
}
{"code":4,"message":"no or wrong API Key","data":null}
@param {String} padID the id of the pad
@param {Number} startRev the start revision number
@param {Number} endRev the end revision number
*/
exports.createDiffHTML = async (padID, startRev, endRev) => {
// check if startRev is a number
@ -779,11 +839,9 @@ exports.createDiffHTML = async (padID, startRev, endRev) => {
// get the pad
const pad = await getPadSafe(padID, true);
const headRev = pad.getHeadRevisionNumber();
if (startRev > headRev)
startRev = headRev;
if (startRev > headRev) startRev = headRev;
if (endRev > headRev)
endRev = headRev;
if (endRev > headRev) endRev = headRev;
let padDiff;
try {
@ -810,7 +868,6 @@ exports.createDiffHTML = async (padID, startRev, endRev) => {
{"code":0,"message":"ok","data":{"totalPads":3,"totalSessions": 2,"totalActivePads": 1}}
{"code":4,"message":"no or wrong API Key","data":null}
*/
exports.getStats = async () => {
const sessionInfos = padMessageHandler.sessioninfos;

View File

@ -93,6 +93,7 @@ exports.getColorPalette = () => [
/**
* Checks if the author exists
* @param {String} authorID The id of the author
*/
exports.doesAuthorExist = async (authorID) => {
const author = await db.get(`globalAuthor:${authorID}`);
@ -100,50 +101,12 @@ exports.doesAuthorExist = async (authorID) => {
return author != null;
};
/* exported for backwards compatibility */
/**
exported for backwards compatibility
@param {String} authorID The id of the author
*/
exports.doesAuthorExists = exports.doesAuthorExist;
const getAuthor4Token = async (token) => {
const author = await mapAuthorWithDBKey('token2author', token);
// return only the sub value authorID
return author ? author.authorID : author;
};
exports.getAuthorId = async (token, user) => {
const context = {dbKey: token, token, user};
let [authorId] = await hooks.aCallFirst('getAuthorId', context);
if (!authorId) authorId = await getAuthor4Token(context.dbKey);
return authorId;
};
/**
* Returns the AuthorID for a token.
*
* @deprecated Use `getAuthorId` instead.
* @param {String} token The token
*/
exports.getAuthor4Token = async (token) => {
warnDeprecated(
'AuthorManager.getAuthor4Token() is deprecated; use AuthorManager.getAuthorId() instead');
return await getAuthor4Token(token);
};
/**
* Returns the AuthorID for a mapper.
* @param {String} token The mapper
* @param {String} name The name of the author (optional)
*/
exports.createAuthorIfNotExistsFor = async (authorMapper, name) => {
const author = await mapAuthorWithDBKey('mapper2author', authorMapper);
if (name) {
// set the name of this author
await exports.setAuthorName(author.authorID, name);
}
return author;
};
/**
* Returns the AuthorID for a mapper. We can map using a mapperkey,
@ -174,6 +137,60 @@ const mapAuthorWithDBKey = async (mapperkey, mapper) => {
return {authorID: author};
};
/**
* Returns the AuthorID for a token.
* @param {String} token The token of the author
* @return {Promise<string|*|{authorID: string}|{authorID: *}>}
*/
const getAuthor4Token = async (token) => {
const author = await mapAuthorWithDBKey('token2author', token);
// return only the sub value authorID
return author ? author.authorID : author;
};
/**
* Returns the AuthorID for a token.
* @param {String} token
* @param {Object} user
* @return {Promise<*>}
*/
exports.getAuthorId = async (token, user) => {
const context = {dbKey: token, token, user};
let [authorId] = await hooks.aCallFirst('getAuthorId', context);
if (!authorId) authorId = await getAuthor4Token(context.dbKey);
return authorId;
};
/**
* Returns the AuthorID for a token.
*
* @deprecated Use `getAuthorId` instead.
* @param {String} token The token
*/
exports.getAuthor4Token = async (token) => {
warnDeprecated(
'AuthorManager.getAuthor4Token() is deprecated; use AuthorManager.getAuthorId() instead');
return await getAuthor4Token(token);
};
/**
* Returns the AuthorID for a mapper.
* @param {String} authorMapper The mapper
* @param {String} name The name of the author (optional)
*/
exports.createAuthorIfNotExistsFor = async (authorMapper, name) => {
const author = await mapAuthorWithDBKey('mapper2author', authorMapper);
if (name) {
// set the name of this author
await exports.setAuthorName(author.authorID, name);
}
return author;
};
/**
* Internal function that creates the database entry for an author
* @param {String} name The name of the author
@ -231,7 +248,7 @@ exports.setAuthorName = async (author, name) => await db.setSub(
/**
* Returns an array of all pads this author contributed to
* @param {String} author The id of the author
* @param {String} authorID The id of the author
*/
exports.listPadsOfAuthor = async (authorID) => {
/* There are two other places where this array is manipulated:
@ -255,7 +272,7 @@ exports.listPadsOfAuthor = async (authorID) => {
/**
* Adds a new pad to the list of contributions
* @param {String} author The id of the author
* @param {String} authorID The id of the author
* @param {String} padID The id of the pad the author contributes to
*/
exports.addPad = async (authorID, padID) => {
@ -282,7 +299,7 @@ exports.addPad = async (authorID, padID) => {
/**
* Removes a pad from the list of contributions
* @param {String} author The id of the author
* @param {String} authorID The id of the author
* @param {String} padID The id of the pad the author contributes to
*/
exports.removePad = async (authorID, padID) => {

View File

@ -25,6 +25,10 @@ const db = require('./DB');
const padManager = require('./PadManager');
const sessionManager = require('./SessionManager');
/**
* Lists all groups
* @return {Promise<{groupIDs: string[]}>} The ids of all groups
*/
exports.listAllGroups = async () => {
let groups = await db.get('groups');
groups = groups || {};
@ -33,6 +37,11 @@ exports.listAllGroups = async () => {
return {groupIDs};
};
/**
* Deletes a group and all associated pads
* @param {String} groupID The id of the group
* @return {Promise<void>} Resolves when the group is deleted
*/
exports.deleteGroup = async (groupID) => {
const group = await db.get(`group:${groupID}`);
@ -68,6 +77,11 @@ exports.deleteGroup = async (groupID) => {
await db.remove(`group:${groupID}`);
};
/**
* Checks if a group exists
* @param {String} groupID the id of the group to delete
* @return {Promise<boolean>} Resolves to true if the group exists
*/
exports.doesGroupExist = async (groupID) => {
// try to get the group entry
const group = await db.get(`group:${groupID}`);
@ -75,6 +89,10 @@ exports.doesGroupExist = async (groupID) => {
return (group != null);
};
/**
* Creates a new group
* @return {Promise<{groupID: string}>} the id of the new group
*/
exports.createGroup = async () => {
const groupID = `g.${randomString(16)}`;
await db.set(`group:${groupID}`, {pads: {}, mappings: {}});
@ -85,6 +103,11 @@ exports.createGroup = async () => {
return {groupID};
};
/**
* Creates a new group if it does not exist already and returns the group ID
* @param groupMapper the mapper of the group
* @return {Promise<{groupID: string}|{groupID: *}>} a promise that resolves to the group ID
*/
exports.createGroupIfNotExistsFor = async (groupMapper) => {
if (typeof groupMapper !== 'string') {
throw new CustomError('groupMapper is not a string', 'apierror');
@ -103,6 +126,14 @@ exports.createGroupIfNotExistsFor = async (groupMapper) => {
return result;
};
/**
* Creates a group pad
* @param {String} groupID The id of the group
* @param {String} padName The name of the pad
* @param {String} text The text of the pad
* @param {String} authorId The id of the author
* @return {Promise<{padID: string}>} a promise that resolves to the id of the new pad
*/
exports.createGroupPad = async (groupID, padName, text, authorId = '') => {
// create the padID
const padID = `${groupID}$${padName}`;
@ -131,6 +162,11 @@ exports.createGroupPad = async (groupID, padName, text, authorId = '') => {
return {padID};
};
/**
* Lists all pads of a group
* @param {String} groupID The id of the group
* @return {Promise<{padIDs: string[]}>} a promise that resolves to the ids of all pads of the group
*/
exports.listPads = async (groupID) => {
const exists = await exports.doesGroupExist(groupID);

View File

@ -25,7 +25,8 @@ const promises = require('../utils/promises');
/**
* Copied from the Etherpad source code. It converts Windows line breaks to Unix
* line breaks and convert Tabs to spaces
* @param txt
* @param {String} txt The text to clean
* @returns {String} The cleaned text
*/
exports.cleanText = (txt) => txt.replace(/\r\n/g, '\n')
.replace(/\r/g, '\n')
@ -73,9 +74,16 @@ class Pad {
return this.publicStatus;
}
/**
* Appends a new revision
* @param {Object} aChangeset The changeset to append to the pad
* @param {String} authorId The id of the author
* @return {Promise<number|string>}
*/
async appendRevision(aChangeset, authorId = '') {
const newAText = Changeset.applyToAText(aChangeset, this.atext, this.pool);
if (newAText.text === this.atext.text && newAText.attribs === this.atext.attribs) {
if (newAText.text === this.atext.text && newAText.attribs === this.atext.attribs &&
this.head !== -1) {
return this.head;
}
Changeset.copyAText(newAText, this.atext);
@ -158,6 +166,10 @@ class Pad {
return await this.db.getSub(`pad:${this.id}:revs:${revNum}`, ['meta', 'atext']);
}
/**
* Returns all authors that worked on this pad
* @return {[String]} The id of authors who contributed to this pad
*/
getAllAuthors() {
const authorIds = [];
@ -173,8 +185,7 @@ class Pad {
async getInternalRevisionAText(targetRev) {
const keyRev = this.getKeyRevisionNumber(targetRev);
const headRev = this.getHeadRevisionNumber();
if (targetRev > headRev)
targetRev = headRev;
if (targetRev > headRev) targetRev = headRev;
const [keyAText, changesets] = await Promise.all([
this._getKeyRevisionAText(keyRev),
Promise.all(

View File

@ -59,6 +59,7 @@ const padList = new class {
/**
* Returns all pads in alphabetical order as array.
* @returns {Promise<string[]>} A promise that resolves to an array of pad IDs.
*/
async getPads() {
if (!this._loaded) {

View File

@ -26,13 +26,15 @@ const randomString = require('../utils/randomstring');
/**
* checks if the id pattern matches a read-only pad id
* @param {String} the pad's id
* @param {String} id the pad's id
* @return {Boolean} true if the id is readonly
*/
exports.isReadOnlyId = (id) => id.startsWith('r.');
/**
* returns a read only id for a pad
* @param {String} padId the id of the pad
* @return {String} the read only id
*/
exports.getReadOnlyId = async (padId) => {
// check if there is a pad2readonly entry
@ -53,12 +55,14 @@ exports.getReadOnlyId = async (padId) => {
/**
* returns the padId for a read only id
* @param {String} readOnlyId read only id
* @return {String} the padId
*/
exports.getPadId = async (readOnlyId) => await db.get(`readonly2pad:${readOnlyId}`);
/**
* returns the padId and readonlyPadId in an object for any id
* @param {String} padIdOrReadonlyPadId read only id or real pad id
* @param {String} id read only id or real pad id
* @return {Object} an object with the padId and readonlyPadId
*/
exports.getIds = async (id) => {
const readonly = exports.isReadOnlyId(id);

View File

@ -49,6 +49,11 @@ const DENY = Object.freeze({accessStatus: 'deny'});
*
* WARNING: Tokens and session IDs MUST be kept secret, otherwise users will be able to impersonate
* each other (which might allow them to gain privileges).
* @param {String} padID
* @param {String} sessionCookie
* @param {String} token
* @param {Object} userSettings
* @return {DENY|{accessStatus: String, authorID: String}}
*/
exports.checkAccess = async (padID, sessionCookie, token, userSettings) => {
if (!padID) {

View File

@ -81,6 +81,11 @@ exports.findAuthorID = async (groupID, sessionCookie) => {
return sessionInfo.authorID;
};
/**
* Checks if a session exists
* @param {String} sessionID The id of the session
* @return {Promise<boolean>} Resolves to true if the session exists
*/
exports.doesSessionExist = async (sessionID) => {
// check if the database entry of this session exists
const session = await db.get(`session:${sessionID}`);
@ -89,6 +94,10 @@ exports.doesSessionExist = async (sessionID) => {
/**
* Creates a new session between an author and a group
* @param {String} groupID The id of the group
* @param {String} authorID The id of the author
* @param {Number} validUntil The unix timestamp when the session should expire
* @return {Promise<{sessionID: string}>} the id of the new session
*/
exports.createSession = async (groupID, authorID, validUntil) => {
// check if the group exists
@ -146,6 +155,11 @@ exports.createSession = async (groupID, authorID, validUntil) => {
return {sessionID};
};
/**
* Returns the sessioninfos for a session
* @param {String} sessionID The id of the session
* @return {Promise<Object>} the sessioninfos
*/
exports.getSessionInfo = async (sessionID) => {
// check if the database entry of this session exists
const session = await db.get(`session:${sessionID}`);
@ -161,6 +175,8 @@ exports.getSessionInfo = async (sessionID) => {
/**
* Deletes a session
* @param {String} sessionID The id of the session
* @return {Promise<void>} Resolves when the session is deleted
*/
exports.deleteSession = async (sessionID) => {
// ensure that the session exists
@ -186,6 +202,11 @@ exports.deleteSession = async (sessionID) => {
await db.remove(`session:${sessionID}`);
};
/**
* Returns an array of all sessions of a group
* @param {String} groupID The id of the group
* @return {Promise<Object>} The sessioninfos of all sessions of this group
*/
exports.listSessionsOfGroup = async (groupID) => {
// check that the group exists
const exists = await groupManager.doesGroupExist(groupID);
@ -197,6 +218,11 @@ exports.listSessionsOfGroup = async (groupID) => {
return sessions;
};
/**
* Returns an array of all sessions of an author
* @param {String} authorID The id of the author
* @return {Promise<Object>} The sessioninfos of all sessions of this author
*/
exports.listSessionsOfAuthor = async (authorID) => {
// check that the author exists
const exists = await authorManager.doesAuthorExist(authorID);
@ -204,12 +230,16 @@ exports.listSessionsOfAuthor = async (authorID) => {
throw new CustomError('authorID does not exist', 'apierror');
}
const sessions = await listSessionsWithDBKey(`author2sessions:${authorID}`);
return sessions;
return await listSessionsWithDBKey(`author2sessions:${authorID}`);
};
// this function is basically the code listSessionsOfAuthor and listSessionsOfGroup has in common
// required to return null rather than an empty object if there are none
/**
* Returns an array of all sessions of a group
* @param {String} dbkey The db key to use to get the sessions
* @return {Promise<*>}
*/
const listSessionsWithDBKey = async (dbkey) => {
// get the group2sessions entry
const sessionObject = await db.get(dbkey);
@ -218,8 +248,7 @@ const listSessionsWithDBKey = async (dbkey) => {
// iterate through the sessions and get the sessioninfos
for (const sessionID of Object.keys(sessions || {})) {
try {
const sessionInfo = await exports.getSessionInfo(sessionID);
sessions[sessionID] = sessionInfo;
sessions[sessionID] = await exports.getSessionInfo(sessionID);
} catch (err) {
if (err.name === 'apierror') {
console.warn(`Found bad session ${sessionID} in ${dbkey}`);
@ -233,5 +262,9 @@ const listSessionsWithDBKey = async (dbkey) => {
return sessions;
};
// checks if a number is an int
/**
* checks if a number is an int
* @param {number|string} value
* @return {boolean} If the value is an integer
*/
const isInt = (value) => (parseFloat(value) === parseInt(value)) && !isNaN(value);

View File

@ -165,12 +165,13 @@ exports.version = version;
/**
* Handles a HTTP API call
* @param functionName the name of the called function
* @param {String} apiVersion the version of the api
* @param {String} functionName the name of the called function
* @param fields the params of the called function
* @req express request object
* @res express response object
*/
exports.handle = async function (apiVersion, functionName, fields, req, res) {
exports.handle = async function (apiVersion, functionName, fields) {
// say goodbye if this is an unknown API version
if (!(apiVersion in version)) {
throw new createHTTPError.NotFound('no such api version');

View File

@ -38,6 +38,11 @@ const tempDirectory = os.tmpdir();
/**
* do a requested export
* @param {Object} req the request object
* @param {Object} res the response object
* @param {String} padId the pad id to export
* @param {String} readOnlyId the read only id of the pad to export
* @param {String} type the type to export
*/
exports.doExport = async (req, res, padId, readOnlyId, type) => {
// avoid naming the read-only file as the original pad's id

View File

@ -73,6 +73,10 @@ const tmpDirectory = os.tmpdir();
/**
* do a requested import
* @param {Object} req the request object
* @param {Object} res the response object
* @param {String} padId the pad id to export
* @param {String} authorId the author id to use for the import
*/
const doImport = async (req, res, padId, authorId) => {
// pipe to a file
@ -89,24 +93,24 @@ const doImport = async (req, res, padId, authorId) => {
maxFileSize: settings.importMaxFileSize,
});
// locally wrapped Promise, since form.parse requires a callback
let srcFile = await new Promise((resolve, reject) => {
form.parse(req, (err, fields, files) => {
if (err != null) {
logger.warn(`Import failed due to form error: ${err.stack || err}`);
// I hate doing indexOf here but I can't see anything to use...
if (err && err.stack && err.stack.indexOf('maxFileSize') !== -1) {
return reject(new ImportError('maxFileSize'));
}
return reject(new ImportError('uploadFailed'));
}
if (!files.file) {
logger.warn('Import failed because form had no file');
return reject(new ImportError('uploadFailed'));
}
resolve(files.file.filepath);
});
});
let srcFile;
let files;
let fields;
try {
[fields, files] = await form.parse(req);
} catch (err) {
logger.warn(`Import failed due to form error: ${err.stack || err}`);
if (err.code === Formidable.formidableErrors.biggerThanMaxFileSize) {
throw new ImportError('maxFileSize');
}
throw new ImportError('uploadFailed');
}
if (!files.file) {
logger.warn('Import failed because form had no file');
throw new ImportError('uploadFailed');
} else {
srcFile = files.file[0].filepath;
}
// ensure this is a file ending we know, else we change the file ending to .txt
// this allows us to accept source code files like .c or .java
@ -233,6 +237,14 @@ const doImport = async (req, res, padId, authorId) => {
return false;
};
/**
* Handles the request to import a file
* @param {Request} req the request object
* @param {Response} res the response object
* @param {String} padId the pad id to export
* @param {String} authorId the author id to use for the import
* @return {Promise<void>} a promise
*/
exports.doImport = async (req, res, padId, authorId = '') => {
let httpStatus = 200;
let code = 0;

View File

@ -35,8 +35,9 @@ const components = {};
let io;
/**
* adds a component
/** adds a component
* @param {string} moduleName
* @param {Module} module
*/
exports.addComponent = (moduleName, module) => {
if (module == null) return exports.deleteComponent(moduleName);
@ -44,10 +45,15 @@ exports.addComponent = (moduleName, module) => {
module.setSocketIO(io);
};
/**
* removes a component
* @param {Module} moduleName
*/
exports.deleteComponent = (moduleName) => { delete components[moduleName]; };
/**
* sets the socket.io and adds event functions for routing
* @param {Object} _io the socket.io instance
*/
exports.setSocketIO = (_io) => {
io = _io;

View File

@ -1,6 +1,14 @@
'use strict';
const eejs = require('../../eejs');
/**
* Add the admin navigation link
* @param hookName {String} the name of the hook
* @param args {Object} the object containing the arguments
* @param {Function} cb the callback function
* @return {*}
*/
exports.expressCreateServer = (hookName, args, cb) => {
args.app.get('/admin', (req, res) => {
if ('/' !== req.path[req.path.length - 1]) return res.redirect('./admin/');

View File

@ -121,6 +121,13 @@ exports.socketio = (hookName, args, cb) => {
return cb();
};
/**
* Sorts a list of plugins by a property
* @param {Object} plugins The plugins to sort
* @param {Object} property The property to sort by
* @param {String} dir The directory of the plugin
* @return {Object[]}
*/
const sortPluginList = (plugins, property, /* ASC?*/dir) => plugins.sort((a, b) => {
if (a[property] < b[property]) {
return dir ? -1 : 1;

View File

@ -8,20 +8,19 @@ const util = require('util');
exports.expressPreSession = async (hookName, {app}) => {
// The Etherpad client side sends information about how a disconnect happened
app.post('/ep/pad/connection-diagnostic-info', (req, res) => {
new Formidable().parse(req, (err, fields, files) => {
clientLogger.info(`DIAGNOSTIC-INFO: ${fields.diagnosticInfo}`);
res.end('OK');
});
app.post('/ep/pad/connection-diagnostic-info', async (req, res) => {
const [fields, files] = await (new Formidable({})).parse(req);
clientLogger.info(`DIAGNOSTIC-INFO: ${fields.diagnosticInfo}`);
res.end('OK');
});
const parseJserrorForm = async (req) => await new Promise((resolve, reject) => {
const parseJserrorForm = async (req) => {
const form = new Formidable({
maxFileSize: 1, // Files are not expected. Not sure if 0 means unlimited, so 1 is used.
});
form.on('error', (err) => reject(err));
form.parse(req, (err, fields) => err != null ? reject(err) : resolve(fields.errorInfo));
});
const [fields, files] = await form.parse(req);
return fields.errorInfo;
};
// The Etherpad client side sends information about client side javscript errors
app.post('/jserror', (req, res, next) => {

View File

@ -11,13 +11,16 @@ const securityManager = require('../../db/SecurityManager');
const webaccess = require('./webaccess');
exports.expressCreateServer = (hookName, args, cb) => {
settings.importExportRateLimiting.onLimitReached = (req, res, options) => {
// when the rate limiter triggers, write a warning in the logs
console.warn('Import/Export rate limiter triggered on ' +
`"${req.originalUrl}" for IP address ${req.ip}`);
};
// The rate limiter is created in this hook so that restarting the server resets the limiter.
const limiter = rateLimit(settings.importExportRateLimiting);
const limiter = rateLimit({
...settings.importExportRateLimiting,
handler: (request, response, next, options) => {
if (request.rateLimit.current === request.rateLimit.limit + 1) {
// when the rate limiter triggers, write a warning in the logs
console.warn('Import/Export rate limiter triggered on ' +
`"${request.originalUrl}" for IP address ${request.ip}`);
}
},
});
// handle export requests
args.app.use('/p/:pad/:rev?/export/:type', limiter);

View File

@ -15,8 +15,7 @@
*/
const OpenAPIBackend = require('openapi-backend').default;
const formidable = require('formidable');
const {promisify} = require('util');
const IncomingForm = require('formidable').IncomingForm;
const cloneDeep = require('lodash.clonedeep');
const createHTTPError = require('http-errors');
@ -596,9 +595,13 @@ exports.expressPreSession = async (hookName, {app}) => {
// read form data if method was POST
let formData = {};
if (c.request.method === 'post') {
const form = new formidable.IncomingForm();
const parseForm = promisify(form.parse).bind(form);
formData = await parseForm(req);
const form = new IncomingForm();
formData = (await form.parse(req))[0];
for (const k of Object.keys(formData)) {
if (formData[k] instanceof Array) {
formData[k] = formData[k][0];
}
}
}
const fields = Object.assign({}, header, params, query, formData);
@ -693,10 +696,20 @@ exports.expressPreSession = async (hookName, {app}) => {
}
};
// helper to get api root
/**
* Helper to get the current root path for an API version
* @param {String} version The API version
* @param {APIPathStyle} style The style of the API path
* @return {String} The root path for the API version
*/
const getApiRootForVersion = (version, style = APIPathStyle.FLAT) => `/${style}/${version}`;
// helper to generate an OpenAPI server object when serving definitions
/**
* Helper to generate an OpenAPI server object when serving definitions
* @param {String} apiRoot The root path for the API version
* @param {Request} req The express request object
* @return {url: String} The server object for the OpenAPI definition location
*/
const generateServerForApiVersion = (apiRoot, req) => ({
url: `${settings.ssl ? 'https' : 'http'}://${req.headers.host}${apiRoot}`,
});

View File

@ -160,7 +160,7 @@ class SecretRotator {
// TODO: This is racy. If two instances start up at the same time and there are no existing
// matching publications, each will generate and publish their own paramters. In practice this
// is unlikely to happen, and if it does it can be fixed by restarting both Etherpad instances.
const dbKeys = await db.findKeys(`${this._dbPrefix}:*`, null);
const dbKeys = await db.findKeys(`${this._dbPrefix}:*`, null) || [];
let currentParams = null;
let currentId = null;
const dbWrites = [];

View File

@ -12,4 +12,4 @@ exports.hkdf = util.promisify(crypto.hkdf);
/**
* Promisified version of Node.js's crypto.randomBytes
*/
exports.randomBytes = util.promisify(crypto.randomBytes);
exports.randomBytes = util.promisify(crypto.randomBytes);

View File

@ -25,7 +25,6 @@
*/
const log4js = require('log4js');
log4js.replaceConsole();
const settings = require('./utils/Settings');
@ -276,3 +275,4 @@ exports.exit = async (err = null) => {
};
if (require.main === module) exports.start();
if (typeof(PhusionPassenger) !== 'undefined') exports.start();

View File

@ -45,7 +45,7 @@ for (let i = 0; i < argv.length; i++) {
exports.argv.sessionkey = arg;
}
// Override location of settings.json file
// Override location of APIKEY.txt file
if (prevArg === '--apikey') {
exports.argv.apikey = arg;
}

View File

@ -50,15 +50,24 @@ const nonSettings = [
// This is a function to make it easy to create a new instance. It is important to not reuse a
// config object after passing it to log4js.configure() because that method mutates the object. :(
const defaultLogConfig = () => ({appenders: [{type: 'console'}]});
const defaultLogConfig = () => ({appenders: {console: {type: 'console'}},
categories: {
default: {appenders: ['console'], level: 'info'},
}});
const defaultLogLevel = 'INFO';
const initLogging = (logLevel, config) => {
// log4js.configure() modifies exports.logconfig so check for equality first.
const logConfigIsDefault = deepEqual(config, defaultLogConfig());
log4js.configure(config);
log4js.setGlobalLogLevel(logLevel);
log4js.replaceConsole();
log4js.getLogger('console');
// Overwrites for console output methods
console.debug = logger.debug.bind(logger);
console.log = logger.info.bind(logger);
console.warn = logger.warn.bind(logger);
console.error = logger.error.bind(logger);
// Log the warning after configuring log4js to increase the chances the user will see it.
if (!logConfigIsDefault) logger.warn('The logconfig setting is deprecated.');
};

View File

@ -2,28 +2,39 @@
const semver = require('semver');
const settings = require('./Settings');
const axios = require('axios');
let infos;
const headers = {
'User-Agent': 'Etherpad/' + settings.getEpVersion(),
}
const loadEtherpadInformations = () =>
axios.get('https://static.etherpad.org/info.json')
.then(async resp => {
try {
infos = await resp.data;
if (infos === undefined || infos === null) {
await Promise.reject("Could not retrieve current version")
return
}
return await Promise.resolve(infos);
}
catch (err) {
return await Promise.reject(err);
}
})
const updateInterval = 60 * 60 * 1000; // 1 hour
let infos;
let lastLoadingTime = null;
const loadEtherpadInformations = () => {
if (lastLoadingTime !== null && Date.now() - lastLoadingTime < updateInterval) {
return Promise.resolve(infos);
}
return axios.get('https://static.etherpad.org/info.json', {headers: headers})
.then(async resp => {
infos = await resp.data;
if (infos === undefined || infos === null) {
await Promise.reject("Could not retrieve current version")
return
}
lastLoadingTime = Date.now();
return await Promise.resolve(infos);
})
.catch(async err => {
return await Promise.reject(err);
});
}
exports.getLatestVersion = () => {
exports.needsUpdate();
return infos.latestVersion;
exports.needsUpdate().catch();
return infos?.latestVersion;
};
exports.needsUpdate = async (cb) => {

4987
src/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -31,7 +31,7 @@
],
"dependencies": {
"async": "^3.2.4",
"axios": "^1.4.0",
"axios": "^1.6.0",
"clean-css": "^5.3.2",
"cookie-parser": "^1.4.6",
"cross-spawn": "^7.0.3",
@ -39,35 +39,35 @@
"etherpad-require-kernel": "^1.0.15",
"etherpad-yajsml": "0.0.12",
"express": "4.18.2",
"express-rate-limit": "^6.7.0",
"express-session": "npm:@etherpad/express-session@^1.18.1",
"express-rate-limit": "^7.1.3",
"express-session": "npm:@etherpad/express-session@^1.18.2",
"fast-deep-equal": "^3.1.3",
"find-root": "1.1.0",
"formidable": "^2.1.2",
"formidable": "^3.5.1",
"http-errors": "^2.0.0",
"js-cookie": "^3.0.5",
"jsdom": "^20.0.0",
"jsonminify": "0.4.2",
"languages4translatewiki": "0.1.3",
"lodash.clonedeep": "4.5.0",
"log4js": "0.6.38",
"log4js": "^6.9.1",
"measured-core": "^2.0.0",
"mime-types": "^2.1.35",
"npm": "^6.14.18",
"openapi-backend": "^5.9.2",
"openapi-backend": "^5.10.5",
"proxy-addr": "^2.0.7",
"rate-limiter-flexible": "^2.4.1",
"rehype": "^12.0.1",
"rehype-minify-whitespace": "^5.0.1",
"resolve": "1.22.2",
"rate-limiter-flexible": "^3.0.3",
"rehype": "^13.0.1",
"rehype-minify-whitespace": "^6.0.0",
"resolve": "1.22.8",
"security": "1.0.0",
"semver": "^7.5.3",
"semver": "^7.5.4",
"socket.io": "^2.5.0",
"superagent": "^8.0.9",
"terser": "^5.18.2",
"superagent": "^8.1.2",
"terser": "^5.24.0",
"threads": "^1.7.0",
"tinycon": "0.6.8",
"ueberdb2": "^4.1.5",
"ueberdb2": "^4.2.35",
"underscore": "1.13.6",
"unorm": "1.6.0",
"wtfnode": "^0.9.1"
@ -78,16 +78,16 @@
"etherpad-lite": "node/server.js"
},
"devDependencies": {
"eslint": "^8.43.0",
"eslint-config-etherpad": "^3.0.15",
"eslint": "^8.52.0",
"eslint-config-etherpad": "^3.0.22",
"etherpad-cli-client": "^2.0.2",
"mocha": "^10.0.0",
"mocha-froth": "^0.2.10",
"nodeify": "^1.0.1",
"openapi-schema-validation": "^0.4.2",
"selenium-webdriver": "^4.10.0",
"selenium-webdriver": "^4.15.0",
"set-cookie-parser": "^2.6.0",
"sinon": "^15.2.0",
"sinon": "^17.0.1",
"split-grid": "^1.0.11",
"supertest": "^6.3.3",
"typescript": "^4.9.5"
@ -103,9 +103,8 @@
"scripts": {
"lint": "eslint .",
"test": "mocha --timeout 120000 --recursive tests/backend/specs ../node_modules/ep_*/static/tests/backend/specs",
"test-container": "mocha --timeout 5000 tests/container/specs/api",
"dev": "bash ./bin/run.sh"
"test-container": "mocha --timeout 5000 tests/container/specs/api"
},
"version": "1.9.1",
"version": "1.9.4",
"license": "Apache-2.0"
}

View File

@ -2585,17 +2585,17 @@ function Ace2Inner(editorInfo, cssManagers) {
const firstEditbarElement = parent.parent.$('#editbar')
.children('ul').first().children().first()
.children().first().children().first();
$(this).blur();
firstEditbarElement.focus();
$(this).trigger('blur');
firstEditbarElement.trigger('focus');
evt.preventDefault();
}
if (!specialHandled && type === 'keydown' &&
altKey && keyCode === 67 &&
padShortcutEnabled.altC) {
// Alt c focuses on the Chat window
$(this).blur();
$(this).trigger('blur');
parent.parent.chat.show();
parent.parent.$('#chatinput').focus();
parent.parent.$('#chatinput').trigger('focus');
evt.preventDefault();
}
if (!specialHandled && type === 'keydown' &&

View File

@ -164,7 +164,7 @@
$(window).resize(adjust);
// Allow for manual triggering if needed.
$ta.bind('autosize', adjust);
$ta.on('autosize', adjust);
// Call adjust in case the textarea already contains text.
adjust();

View File

@ -112,15 +112,15 @@ $(document).ready(() => {
const updateHandlers = () => {
// Search
$('#search-query').unbind('keyup').keyup(() => {
$('#search-query').off('keyup').on('keyup', () => {
search($('#search-query').val());
});
// Prevent form submit
$('#search-query').parent().bind('submit', () => false);
$('#search-query').parent().on('submit', () => false);
// update & install
$('.do-install, .do-update').unbind('click').click(function (e) {
$('.do-install, .do-update').off('click').on('click', function (e) {
const $row = $(e.target).closest('tr');
const plugin = $row.data('plugin');
if ($(this).hasClass('do-install')) {
@ -134,7 +134,7 @@ $(document).ready(() => {
});
// uninstall
$('.do-uninstall').unbind('click').click((e) => {
$('.do-uninstall').off('click').on('click', (e) => {
const $row = $(e.target).closest('tr');
const pluginName = $row.data('plugin');
socket.emit('uninstall', pluginName);
@ -143,14 +143,14 @@ $(document).ready(() => {
});
// Sort
$('.sort.up').unbind('click').click(function () {
$('.sort.up').off('click').on('click', function () {
search.sortBy = $(this).attr('data-label').toLowerCase();
search.sortDir = false;
search.offset = 0;
search(search.searchTerm, search.results.length);
search.results = [];
});
$('.sort.down, .sort.none').unbind('click').click(function () {
$('.sort.down, .sort.none').off('click').on('click', function () {
search.sortBy = $(this).attr('data-label').toLowerCase();
search.sortDir = true;
search.offset = 0;
@ -164,7 +164,7 @@ $(document).ready(() => {
if (data.query.offset === 0) search.results = [];
search.messages.hide('nothing-found');
search.messages.hide('fetching');
$('#search-query').removeAttr('disabled');
$('#search-query').prop('disabled', false);
console.log('got search results', data);

View File

@ -25,7 +25,7 @@ $(document).ready(() => {
/* Check to make sure the JSON is clean before proceeding */
if (isJSONClean(settings.results)) {
$('.settings').append(settings.results);
$('.settings').focus();
$('.settings').trigger('focus');
$('.settings').autosize();
} else {
alert('Invalid JSON');
@ -40,7 +40,7 @@ $(document).ready(() => {
socket.emit('saveSettings', $('.settings').val());
} else {
alert('Invalid JSON');
$('.settings').focus();
$('.settings').trigger('focus');
}
});
@ -62,7 +62,7 @@ const isJSONClean = (data) => {
// this is a bit naive. In theory some key/value might contain the sequences ',]' or ',}'
cleanSettings = cleanSettings.replace(',]', ']').replace(',}', '}');
try {
return typeof jQuery.parseJSON(cleanSettings) === 'object';
return typeof JSON.parse(cleanSettings) === 'object';
} catch (e) {
return false; // the JSON failed to be parsed
}

View File

@ -67,7 +67,7 @@ const loadBroadcastSliderJS = (fireWhenAllScriptsAreLoaded) => {
newSavedRevision.css(
'left', (position * ($('#ui-slider-bar').width() - 2) / (sliderLength * 1.0)) - 1);
$('#ui-slider-bar').append(newSavedRevision);
newSavedRevision.mouseup((evt) => {
newSavedRevision.on('mouseup', (evt) => {
BroadcastSlider.setSliderPosition(position);
});
savedRevisions.push(newSavedRevision);
@ -209,21 +209,21 @@ const loadBroadcastSliderJS = (fireWhenAllScriptsAreLoaded) => {
// assign event handlers to html UI elements after page load
fireWhenAllScriptsAreLoaded.push(() => {
$(document).keyup((e) => {
$(document).on('keyup', (e) => {
if (!e) e = window.event;
const code = e.keyCode || e.which;
if (code === 37) { // left
if (e.shiftKey) {
$('#leftstar').click();
$('#leftstar').trigger('click');
} else {
$('#leftstep').click();
$('#leftstep').trigger('click');
}
} else if (code === 39) { // right
if (e.shiftKey) {
$('#rightstar').click();
$('#rightstar').trigger('click');
} else {
$('#rightstep').click();
$('#rightstep').trigger('click');
}
} else if (code === 32) { // spacebar
$('#playpause_button_icon').trigger('click');
@ -231,22 +231,22 @@ const loadBroadcastSliderJS = (fireWhenAllScriptsAreLoaded) => {
});
// Resize
$(window).resize(() => {
$(window).on('resize', () => {
updateSliderElements();
});
// Slider click
$('#ui-slider-bar').mousedown((evt) => {
$('#ui-slider-bar').on('mousedown', (evt) => {
$('#ui-slider-handle').css('left', (evt.clientX - $('#ui-slider-bar').offset().left));
$('#ui-slider-handle').trigger(evt);
});
// Slider dragging
$('#ui-slider-handle').mousedown(function (evt) {
$('#ui-slider-handle').on('mousedown', function (evt) {
this.startLoc = evt.clientX;
this.currentLoc = parseInt($(this).css('left'));
sliderActive = true;
$(document).mousemove((evt2) => {
$(document).on('mousemove', (evt2) => {
$(this).css('pointer', 'move');
let newloc = this.currentLoc + (evt2.clientX - this.startLoc);
if (newloc < 0) newloc = 0;
@ -257,9 +257,9 @@ const loadBroadcastSliderJS = (fireWhenAllScriptsAreLoaded) => {
$(this).css('left', newloc);
if (getSliderPosition() !== version) _callSliderCallbacks(version);
});
$(document).mouseup((evt2) => {
$(document).unbind('mousemove');
$(document).unbind('mouseup');
$(document).on('mouseup', (evt2) => {
$(document).off('mousemove');
$(document).off('mouseup');
sliderActive = false;
let newloc = this.currentLoc + (evt2.clientX - this.startLoc);
if (newloc < 0) newloc = 0;
@ -276,12 +276,12 @@ const loadBroadcastSliderJS = (fireWhenAllScriptsAreLoaded) => {
});
// play/pause toggling
$('#playpause_button_icon').click((evt) => {
$('#playpause_button_icon').on('click', (evt) => {
BroadcastSlider.playpause();
});
// next/prev saved revision and changeset
$('.stepper').click(function (evt) {
$('.stepper').on('click', function (evt) {
switch ($(this).attr('id')) {
case 'leftstep':
setSliderPosition(getSliderPosition() - 1);

View File

@ -42,11 +42,14 @@ exports.chat = (() => {
},
focus: () => {
setTimeout(() => {
$('#chatinput').focus();
$('#chatinput').trigger('focus');
}, 100);
},
// Make chat stick to right hand side of screen
stickToScreen(fromInitialCall) {
if ($('#options-stickychat').prop('checked')) {
$('#options-stickychat').prop('checked', false);
}
if (pad.settings.hideChat) {
return;
}
@ -68,7 +71,7 @@ exports.chat = (() => {
this.stickToScreen(true);
$('#options-stickychat').prop('checked', true);
$('#options-chatandusers').prop('checked', true);
$('#options-stickychat').prop('disabled', 'disabled');
$('#options-stickychat').prop('disabled', true);
userAndChat = true;
} else {
$('#options-stickychat').prop('disabled', false);
@ -223,14 +226,14 @@ exports.chat = (() => {
// Send the users focus back to the pad
if ((evt.altKey === true && evt.which === 67) || evt.which === 27) {
// If we're in chat already..
$(':focus').blur(); // required to do not try to remove!
$(':focus').trigger('blur'); // required to do not try to remove!
padeditor.ace.focus(); // Sends focus back to pad
evt.preventDefault();
return false;
}
});
// Clear the chat mentions when the user clicks on the chat input box
$('#chatinput').click(() => {
$('#chatinput').on('click', () => {
chatMentions = 0;
Tinycon.setBubble(0);
});
@ -239,14 +242,14 @@ exports.chat = (() => {
$('body:not(#chatinput)').on('keypress', function (evt) {
if (evt.altKey && evt.which === 67) {
// Alt c focuses on the Chat window
$(this).blur();
$(this).trigger('blur');
self.show();
$('#chatinput').focus();
$('#chatinput').trigger('focus');
evt.preventDefault();
}
});
$('#chatinput').keypress((evt) => {
$('#chatinput').on('keypress', (evt) => {
// if the user typed enter, fire the send
if (evt.key === 'Enter' && !evt.shiftKey) {
evt.preventDefault();
@ -257,7 +260,7 @@ exports.chat = (() => {
// initial messages are loaded in pad.js' _afterHandshake
$('#chatcounter').text(0);
$('#chatloadmessagesbutton').click(() => {
$('#chatloadmessagesbutton').on('click', () => {
const start = Math.max(this.historyPointer - 20, 0);
const end = this.historyPointer;

View File

@ -66,7 +66,7 @@ const getCollabClient = (ace2editor, serverVars, initialUserInfo, options, _pad)
if (browser.firefox) {
// Prevent "escape" from taking effect and canceling a comet connection;
// doesn't work if focus is on an iframe.
$(window).bind('keydown', (evt) => {
$(window).on('keydown', (evt) => {
if (evt.which === 27) {
evt.preventDefault();
}

View File

@ -41,7 +41,7 @@ const randomPadName = () => {
};
$(() => {
$('#go2Name').submit(() => {
$('#go2Name').on('submit', () => {
const padname = $('#padname').val();
if (padname.length > 0) {
window.location = `p/${encodeURIComponent(padname.trim())}`;
@ -51,7 +51,7 @@ $(() => {
return false;
});
$('#button').click(() => {
$('#button').on('click', () => {
window.location = `p/${randomPadName()}`;
});

View File

@ -412,10 +412,12 @@ const pad = {
setTimeout(() => {
padeditor.ace.focus();
}, 0);
const optionsStickyChat = $('#options-stickychat');
optionsStickyChat.on('click', () => { chat.stickToScreen(); });
// if we have a cookie for always showing chat then show it
if (padcookie.getPref('chatAlwaysVisible')) {
chat.stickToScreen(true); // stick it to the screen
$('#options-stickychat').prop('checked', true); // set the checkbox to on
optionsStickyChat.prop('checked', true); // set the checkbox to on
}
// if we have a cookie for always showing chat then show it
if (padcookie.getPref('chatAndUsers')) {
@ -437,8 +439,8 @@ const pad = {
// Prevent sticky chat or chat and users to be checked for mobiles
const checkChatAndUsersVisibility = (x) => {
if (x.matches) { // If media query matches
$('#options-chatandusers:checked').click();
$('#options-stickychat:checked').click();
$('#options-chatandusers:checked').trigger('click');
$('#options-stickychat:checked').trigger('click');
}
};
const mobileMatch = window.matchMedia('(max-width: 800px)');
@ -711,7 +713,7 @@ const pad = {
$('form#reconnectform input.diagnosticInfo').val(JSON.stringify(pad.diagnosticInfo));
$('form#reconnectform input.missedChanges')
.val(JSON.stringify(pad.collabClient.getMissedChanges()));
$('form#reconnectform').submit();
$('form#reconnectform').trigger('submit');
},
callWhenNotCommitting: (f) => {
pad.collabClient.callWhenNotCommitting(f);

View File

@ -96,7 +96,7 @@ const whenConnectionIsRestablishedWithServer = (callback, pad) => {
};
const forceReconnection = ($modal) => {
$modal.find('#forcereconnect').click();
$modal.find('#forcereconnect').trigger('click');
};
const updateCountDownTimerMessage = ($modal, minutes, seconds) => {

View File

@ -31,7 +31,7 @@ const padconnectionstatus = (() => {
const self = {
init: () => {
$('button#forcereconnect').click(() => {
$('button#forcereconnect').on('click', () => {
window.location.reload();
});
},

View File

@ -65,13 +65,13 @@ class ToolbarItem {
bind(callback) {
if (this.isButton()) {
this.$el.click((event) => {
$(':focus').blur();
this.$el.on('click', (event) => {
$(':focus').trigger('blur');
callback(this.getCommand(), this);
event.preventDefault();
});
} else if (this.isSelect()) {
this.$el.find('select').change(() => {
this.$el.find('select').on('change', () => {
callback(this.getCommand(), this);
});
}
@ -134,7 +134,7 @@ exports.padeditbar = new class {
$('#editbar .editbarbutton').attr('unselectable', 'on'); // for IE
this.enable();
$('#editbar [data-key]').each((i, elt) => {
$(elt).unbind('click');
$(elt).off('click');
new ToolbarItem($(elt)).bind((command, item) => {
this.triggerCommand(command, item);
});
@ -144,11 +144,11 @@ exports.padeditbar = new class {
this._bodyKeyEvent(evt);
});
$('.show-more-icon-btn').click(() => {
$('.show-more-icon-btn').on('click', () => {
$('.toolbar').toggleClass('full-icons');
});
this.checkAllIconsAreDisplayedInToolbar();
$(window).resize(_.debounce(() => this.checkAllIconsAreDisplayedInToolbar(), 100));
$(window).on('resize', _.debounce(() => this.checkAllIconsAreDisplayedInToolbar(), 100));
this._registerDefaultCommands();
@ -168,7 +168,7 @@ exports.padeditbar = new class {
}
// When editor is scrolled, we add a class to style the editbar differently
$('iframe[name="ace_outer"]').contents().scroll((ev) => {
$('iframe[name="ace_outer"]').contents().on('scroll', (ev) => {
$('#editbar').toggleClass('editor-scrolled', $(ev.currentTarget).scrollTop() > 2);
});
}
@ -305,12 +305,12 @@ exports.padeditbar = new class {
// Close any dropdowns we have open..
this.toggleDropDown('none');
// Shift focus away from any drop downs
$(':focus').blur(); // required to do not try to remove!
$(':focus').trigger('blur'); // required to do not try to remove!
// Check we're on a pad and not on the timeslider
// Or some other window I haven't thought about!
if (typeof pad === 'undefined') {
// Timeslider probably..
$('#editorcontainerbox').focus(); // Focus back onto the pad
$('#editorcontainerbox').trigger('focus'); // Focus back onto the pad
} else {
padeditor.ace.focus(); // Sends focus back to pad
// The above focus doesn't always work in FF, you have to hit enter afterwards
@ -318,10 +318,10 @@ exports.padeditbar = new class {
}
} else {
// Focus on the editbar :)
const firstEditbarElement = parent.parent.$('#editbar button').first();
const firstEditbarElement = $('#editbar button').first();
$(evt.currentTarget).blur();
firstEditbarElement.focus();
$(evt.currentTarget).trigger('blur');
firstEditbarElement.trigger('focus');
evt.preventDefault();
}
}
@ -341,7 +341,7 @@ exports.padeditbar = new class {
this._editbarPosition--;
// Allow focus to shift back to end of row and start of row
if (this._editbarPosition === -1) this._editbarPosition = focusItems.length - 1;
$(focusItems[this._editbarPosition]).focus();
$(focusItems[this._editbarPosition]).trigger('focus');
}
// On right arrow move to next button in editbar
@ -352,7 +352,7 @@ exports.padeditbar = new class {
this._editbarPosition++;
// Allow focus to shift back to end of row and start of row
if (this._editbarPosition >= focusItems.length) this._editbarPosition = 0;
$(focusItems[this._editbarPosition]).focus();
$(focusItems[this._editbarPosition]).trigger('focus');
}
}
}
@ -366,7 +366,7 @@ exports.padeditbar = new class {
this.registerCommand('settings', () => {
this.toggleDropDown('settings');
$('#options-stickychat').focus();
$('#options-stickychat').trigger('focus');
});
this.registerCommand('import_export', () => {
@ -374,22 +374,22 @@ exports.padeditbar = new class {
// If Import file input exists then focus on it..
if ($('#importfileinput').length !== 0) {
setTimeout(() => {
$('#importfileinput').focus();
$('#importfileinput').trigger('focus');
}, 100);
} else {
$('.exportlink').first().focus();
$('.exportlink').first().trigger('focus');
}
});
this.registerCommand('showusers', () => {
this.toggleDropDown('users');
$('#myusernameedit').focus();
$('#myusernameedit').trigger('focus');
});
this.registerCommand('embed', () => {
this.setEmbedLinks();
this.toggleDropDown('embed');
$('#linkinput').focus().select();
$('#linkinput').trigger('focus').trigger('select');
});
this.registerCommand('savedRevision', () => {

View File

@ -76,7 +76,7 @@ const padeditor = (() => {
});
// font family change
$('#viewfontmenu').change(() => {
$('#viewfontmenu').on('change', () => {
pad.changeViewOption('padFontFamily', $('#viewfontmenu').val());
});
@ -97,7 +97,7 @@ const padeditor = (() => {
});
});
$('#languagemenu').val(html10n.getLanguage());
$('#languagemenu').change(() => {
$('#languagemenu').on('change', () => {
Cookies.set('language', $('#languagemenu').val());
window.html10n.localize([$('#languagemenu').val(), 'en']);
if ($('select').niceSelect) {

View File

@ -38,7 +38,7 @@ const padimpexp = (() => {
const fileInputUpdated = () => {
$('#importsubmitinput').addClass('throbbold');
$('#importformfilediv').addClass('importformenabled');
$('#importsubmitinput').removeAttr('disabled');
$('#importsubmitinput').prop('disabled', false);
$('#importmessagefail').fadeOut('fast');
};
@ -69,8 +69,8 @@ const padimpexp = (() => {
$('#import_export').removeClass('popup-show');
if (directDatabaseAccess) window.location.reload();
}
$('#importsubmitinput').removeAttr('disabled').val(html10n.get('pad.impexp.importbutton'));
window.setTimeout(() => $('#importfileinput').removeAttr('disabled'), 0);
$('#importsubmitinput').prop('disabled', false).val(html10n.get('pad.impexp.importbutton'));
window.setTimeout(() => $('#importfileinput').prop('disabled', false), 0);
$('#importstatusball').hide();
addImportFrames();
})();
@ -162,9 +162,9 @@ const padimpexp = (() => {
}
addImportFrames();
$('#importfileinput').change(fileInputUpdated);
$('#importform').unbind('submit').submit(fileInputSubmit);
$('.disabledexport').click(cantExport);
$('#importfileinput').on('change', fileInputUpdated);
$('#importform').off('submit').on('submit', fileInputSubmit);
$('.disabledexport').on('click', cantExport);
},
disable: () => {
$('#impexp-disabled-clickcatcher').show();

View File

@ -325,23 +325,23 @@ const paduserlist = (() => {
};
const setUpEditable = (jqueryNode, valueGetter, valueSetter) => {
jqueryNode.bind('focus', (evt) => {
jqueryNode.on('focus', (evt) => {
const oldValue = valueGetter();
if (jqueryNode.val() !== oldValue) {
jqueryNode.val(oldValue);
}
jqueryNode.addClass('editactive').removeClass('editempty');
});
jqueryNode.bind('blur', (evt) => {
jqueryNode.on('blur', (evt) => {
const newValue = jqueryNode.removeClass('editactive').val();
valueSetter(newValue);
});
padutils.bindEnterAndEscape(jqueryNode, () => {
jqueryNode.blur();
jqueryNode.trigger('blur');
}, () => {
jqueryNode.val(valueGetter()).blur();
jqueryNode.val(valueGetter()).trigger('blur');
});
jqueryNode.removeAttr('disabled').addClass('editable');
jqueryNode.prop('disabled', false).addClass('editable');
};
let pad = undefined;
@ -369,15 +369,15 @@ const paduserlist = (() => {
});
// color picker
$('#myswatchbox').click(showColorPicker);
$('#mycolorpicker .pickerswatchouter').click(function () {
$('#myswatchbox').on('click', showColorPicker);
$('#mycolorpicker .pickerswatchouter').on('click', function () {
$('#mycolorpicker .pickerswatchouter').removeClass('picked');
$(this).addClass('picked');
});
$('#mycolorpickersave').click(() => {
$('#mycolorpickersave').on('click', () => {
closeColorPicker(true);
});
$('#mycolorpickercancel').click(() => {
$('#mycolorpickercancel').on('click', () => {
closeColorPicker(false);
});
//
@ -587,7 +587,7 @@ const showColorPicker = () => {
li.appendTo(colorsList);
li.bind('click', (event) => {
li.on('click', (event) => {
$('#colorpickerswatches li').removeClass('picked');
$(event.target).addClass('picked');

View File

@ -224,7 +224,7 @@ const padutils = {
// It is work on Windows (IE8, Chrome 6.0.472), CentOs (Firefox 3.0) and Mac OSX (Firefox
// 3.6.10, Chrome 6.0.472, Safari 5.0).
if (onEnter) {
node.keypress((evt) => {
node.on('keypress', (evt) => {
if (evt.which === 13) {
onEnter(evt);
}
@ -232,7 +232,7 @@ const padutils = {
}
if (onEscape) {
node.keydown((evt) => {
node.on('keydown', (evt) => {
if (evt.which === 27) {
onEscape(evt);
}
@ -299,7 +299,7 @@ const padutils = {
}
field.removeClass('editempty');
});
field.blur(() => {
field.on('blur', () => {
if (!field.val()) {
clear();
}
@ -313,11 +313,11 @@ const padutils = {
if (value) {
$(node).attr('checked', 'checked');
} else {
$(node).removeAttr('checked');
$(node).prop('checked', false);
}
},
bindCheckboxChange: (node, func) => {
$(node).change(func);
$(node).on('change', func);
},
encodeUserId: (userId) => userId.replace(/[^a-y0-9]/g, (c) => {
if (c === '.') return '-';

View File

@ -46,7 +46,7 @@ if (window.location.hash.toLowerCase() === '#skinvariantsbuilder') {
$('#skin-variant-full-width').prop('checked', $('html').hasClass('full-width-editor'));
};
$('.skin-variant').change(() => {
$('.skin-variant').on('change', () => {
updateSkinVariantsClasses();
});

View File

@ -82,7 +82,7 @@ const init = () => {
// get all the export links
exportLinks = $('#export > .exportlink');
$('button#forcereconnect').click(() => {
$('button#forcereconnect').on('click', () => {
window.location.reload();
});
@ -159,7 +159,7 @@ const handleClientVars = (message) => {
$('#rightstep').attr('title', html10n.get('timeslider.forwardRevision'));
// font family change
$('#viewfontmenu').change(function () {
$('#viewfontmenu').on('change', function () {
$('#innerdocbody').css('font-family', $(this).val() || '');
});
};

View File

@ -33,7 +33,7 @@ $._farbtastic = function (container, options) {
fb.linkTo = function (callback) {
// Unbind previous nodes
if (typeof fb.callback == 'object') {
$(fb.callback).unbind('keyup', fb.updateValue);
$(fb.callback).off('keyup').on('keyup', fb.updateValue);
}
// Reset color
@ -45,7 +45,7 @@ $._farbtastic = function (container, options) {
}
else if (typeof callback == 'object' || typeof callback == 'string') {
fb.callback = $(callback);
fb.callback.bind('keyup', fb.updateValue);
fb.callback.on('keyup', fb.updateValue);
if (fb.callback[0].value) {
fb.setColor(fb.callback[0].value);
}
@ -388,7 +388,7 @@ $._farbtastic = function (container, options) {
fb.mousedown = function (event) {
// Capture mouse
if (!$._farbtastic.dragging) {
$(document).bind('mousemove', fb.mousemove).bind('mouseup', fb.mouseup);
$(document).on('mousemove', fb.mousemove).on('mouseup', fb.mouseup);
$._farbtastic.dragging = true;
}
@ -429,8 +429,8 @@ $._farbtastic = function (container, options) {
*/
fb.mouseup = function () {
// Uncapture mouse
$(document).unbind('mousemove', fb.mousemove);
$(document).unbind('mouseup', fb.mouseup);
$(document).off('mousemove', fb.mousemove);
$(document).off('mouseup', fb.mouseup);
$._farbtastic.dragging = false;
}
@ -519,7 +519,7 @@ $._farbtastic = function (container, options) {
fb.initWidget();
// Install mousedown handler (the others are set on the document on-demand)
$('canvas.farbtastic-overlay', container).mousedown(fb.mousedown);
$('canvas.farbtastic-overlay', container).on('mousedown',fb.mousedown);
// Set linked elements/callback
if (options.callback) {

File diff suppressed because it is too large Load Diff

View File

@ -123,7 +123,7 @@
$dropdown.find('.list').css('max-height', $maxListHeight + 'px');
} else {
$dropdown.focus();
$dropdown.trigger('focus');
}
});

View File

@ -2,6 +2,6 @@
window.customStart = () => {
$('#pad_title').show();
$('.buttonicon').mousedown(function () { $(this).parent().addClass('pressed'); });
$('.buttonicon').mouseup(function () { $(this).parent().removeClass('pressed'); });
$('.buttonicon').on('mousedown', function () { $(this).parent().addClass('pressed'); });
$('.buttonicon').on('mouseup', function () { $(this).parent().removeClass('pressed'); });
};

View File

@ -2,10 +2,10 @@
<html lang="en">
<head>
<title><%- padId %></title>
<meta name="generator" content="Etherpad">
<meta name="author" content="Etherpad">
<meta name="changedby" content="Etherpad">
<meta charset="utf-8">
<meta name="generator" content="Etherpad"/>
<meta name="author" content="Etherpad"/>
<meta name="changedby" content="Etherpad"/>
<meta charset="utf-8"/>
<style>
ol {
counter-reset: item;

View File

@ -122,7 +122,7 @@
<% e.begin_block("mySettings"); %>
<h2 data-l10n-id="pad.settings.myView"></h2>
<p class="hide-for-mobile">
<input type="checkbox" id="options-stickychat" onClick="chat.stickToScreen();">
<input type="checkbox" id="options-stickychat">
<label for="options-stickychat" data-l10n-id="pad.settings.stickychat"></label>
</p>
<p class="hide-for-mobile">

View File

@ -42,8 +42,6 @@ exports.init = async function () {
if (!logLevel.isLessThanOrEqualTo(log4js.levels.DEBUG)) {
logger.warn('Disabling non-test logging for the duration of the test. ' +
'To enable non-test logging, change the loglevel setting to DEBUG.');
log4js.setGlobalLogLevel(log4js.levels.OFF);
logger.setLevel(logLevel);
}
// Note: This is only a shallow backup.
@ -51,7 +49,7 @@ exports.init = async function () {
// Start the Etherpad server on a random unused port.
settings.port = 0;
settings.ip = 'localhost';
settings.importExportRateLimiting = {max: 0};
settings.importExportRateLimiting = {max: 999999};
settings.commitRateLimiting = {duration: 0.001, points: 1e6};
exports.httpServer = await server.start();
exports.baseUrl = `http://localhost:${exports.httpServer.address().port}`;
@ -66,7 +64,6 @@ exports.init = async function () {
webaccess.authnFailureDelayMs = backups.authnFailureDelayMs;
// Note: This does not unset settings that were added.
Object.assign(settings, backups.settings);
log4js.setGlobalLogLevel(logLevel);
await server.exit();
});

View File

@ -1,6 +1,7 @@
'use strict';
const common = require('../../common');
const assert = require('assert').strict;
let agent;
const apiKey = common.apiKey;
@ -15,14 +16,14 @@ describe(__filename, function () {
before(async function () { agent = await common.init(); });
describe('API Versioning', function () {
it('errors if can not connect', function (done) {
agent.get('/api/')
it('errors if can not connect', async function () {
await agent.get('/api/')
.expect((res) => {
apiVersion = res.body.currentVersion;
if (!res.body.currentVersion) throw new Error('No version set in API');
return;
})
.expect(200, done);
.expect(200);
});
});
@ -38,20 +39,18 @@ describe(__filename, function () {
-> getChatHistory(padID)
*/
describe('createPad', function () {
it('creates a new Pad', function (done) {
agent.get(`${endPoint('createPad')}&padID=${padID}`)
describe('Chat functionality', function () {
it('creates a new Pad', async function () {
await agent.get(`${endPoint('createPad')}&padID=${padID}`)
.expect((res) => {
if (res.body.code !== 0) throw new Error('Unable to create new Pad');
})
.expect('Content-Type', /json/)
.expect(200, done);
.expect(200);
});
});
describe('createAuthor', function () {
it('Creates an author with a name set', function (done) {
agent.get(endPoint('createAuthor'))
it('Creates an author with a name set', async function () {
await agent.get(endPoint('createAuthor'))
.expect((res) => {
if (res.body.code !== 0 || !res.body.data.authorID) {
throw new Error('Unable to create author');
@ -59,47 +58,51 @@ describe(__filename, function () {
authorID = res.body.data.authorID; // we will be this author for the rest of the tests
})
.expect('Content-Type', /json/)
.expect(200, done);
.expect(200);
});
});
describe('appendChatMessage', function () {
it('Adds a chat message to the pad', function (done) {
agent.get(`${endPoint('appendChatMessage')}&padID=${padID}&text=blalblalbha` +
it('Gets the head of chat before the first chat msg', async function () {
await agent.get(`${endPoint('getChatHead')}&padID=${padID}`)
.expect((res) => {
if (res.body.data.chatHead !== -1) throw new Error('Chat Head Length is wrong');
if (res.body.code !== 0) throw new Error('Unable to get chat head');
})
.expect('Content-Type', /json/)
.expect(200);
});
it('Adds a chat message to the pad', async function () {
await agent.get(`${endPoint('appendChatMessage')}&padID=${padID}&text=blalblalbha` +
`&authorID=${authorID}&time=${timestamp}`)
.expect((res) => {
if (res.body.code !== 0) throw new Error('Unable to create chat message');
})
.expect('Content-Type', /json/)
.expect(200, done);
.expect(200);
});
});
describe('getChatHead', function () {
it('Gets the head of chat', function (done) {
agent.get(`${endPoint('getChatHead')}&padID=${padID}`)
it('Gets the head of chat', async function () {
await agent.get(`${endPoint('getChatHead')}&padID=${padID}`)
.expect((res) => {
if (res.body.data.chatHead !== 0) throw new Error('Chat Head Length is wrong');
if (res.body.code !== 0) throw new Error('Unable to get chat head');
})
.expect('Content-Type', /json/)
.expect(200, done);
.expect(200);
});
});
describe('getChatHistory', function () {
it('Gets Chat History of a Pad', function (done) {
agent.get(`${endPoint('getChatHistory')}&padID=${padID}`)
.expect((res) => {
if (res.body.data.messages.length !== 1) {
throw new Error('Chat History Length is wrong');
}
if (res.body.code !== 0) throw new Error('Unable to get chat history');
})
it('Gets Chat History of a Pad', async function () {
await agent.get(`${endPoint('getChatHistory')}&padID=${padID}`)
.expect('Content-Type', /json/)
.expect(200, done);
.expect(200)
.expect((res) => {
assert.equal(res.body.code, 0, 'Unable to get chat history');
assert.equal(res.body.data.messages.length, 1, 'Chat History Length is wrong');
assert.equal(res.body.data.messages[0].text, 'blalblalbha', 'Chat text does not match');
assert.equal(res.body.data.messages[0].userId, authorID, 'Message author does not match');
assert.equal(res.body.data.messages[0].time, timestamp.toString(), 'Message time does not match');
});
});
});
});

View File

@ -17,16 +17,16 @@ describe(__filename, function () {
before(async function () { agent = await common.init(); });
describe('Connectivity for instance-level API tests', function () {
it('can connect', function (done) {
agent.get('/api/')
it('can connect', async function () {
await agent.get('/api/')
.expect('Content-Type', /json/)
.expect(200, done);
.expect(200);
});
});
describe('getStats', function () {
it('Gets the stats of a running instance', function (done) {
agent.get(endPoint('getStats'))
it('Gets the stats of a running instance', async function () {
await agent.get(endPoint('getStats'))
.expect((res) => {
if (res.body.code !== 0) throw new Error('getStats() failed');
@ -48,7 +48,7 @@ describe(__filename, function () {
}
})
.expect('Content-Type', /json/)
.expect(200, done);
.expect(200);
});
});
});

View File

@ -17,6 +17,7 @@ let apiVersion = 1;
const testPadId = makeid();
const newPadId = makeid();
const copiedPadId = makeid();
const anotherPadId = makeid();
let lastEdited = '';
const text = generateLongText();
@ -502,6 +503,31 @@ describe(__filename, function () {
.expect('Content-Type', /json/);
assert.equal(res.body.data.revisions, revCount);
});
it('creates a new Pad with empty text', async function () {
await agent.get(`${endPoint('createPad')}&padID=${anotherPadId}&text=`)
.expect('Content-Type', /json/)
.expect(200)
.expect((res) => {
assert.equal(res.body.code, 0, 'Unable to create new Pad');
});
await agent.get(`${endPoint('getText')}&padID=${anotherPadId}`)
.expect('Content-Type', /json/)
.expect(200)
.expect((res) => {
assert.equal(res.body.code, 0, 'Unable to get pad text');
assert.equal(res.body.data.text, '\n', 'Pad text is not empty');
});
});
it('deletes with empty text', async function () {
await agent.get(`${endPoint('deletePad')}&padID=${anotherPadId}`)
.expect('Content-Type', /json/)
.expect(200)
.expect((res) => {
assert.equal(res.body.code, 0, 'Unable to delete empty Pad');
});
});
});
describe('copyPadWithoutHistory', function () {

View File

@ -37,7 +37,7 @@ helper.edit = async (message, line) => {
await helper.withFastCommit(async (incorp) => {
helper.linesDiv()[line].sendkeys(message);
incorp();
await helper.waitForPromise(() => editsNum + 1 === helper.commits.length);
await helper.waitForPromise(() => editsNum + 1 === helper.commits.length, 10000);
});
};
@ -94,7 +94,7 @@ helper.sendChatMessage = async (message) => {
*/
helper.showSettings = async () => {
if (helper.isSettingsShown()) return;
helper.settingsButton().click();
helper.settingsButton().trigger('click');
await helper.waitForPromise(() => helper.isSettingsShown(), 2000);
};
@ -106,7 +106,7 @@ helper.showSettings = async () => {
*/
helper.hideSettings = async () => {
if (!helper.isSettingsShown()) return;
helper.settingsButton().click();
helper.settingsButton().trigger('click');
await helper.waitForPromise(() => !helper.isSettingsShown(), 2000);
};
@ -119,7 +119,7 @@ helper.hideSettings = async () => {
helper.enableStickyChatviaSettings = async () => {
const stickyChat = helper.padChrome$('#options-stickychat');
if (!helper.isSettingsShown() || stickyChat.is(':checked')) return;
stickyChat.click();
stickyChat.trigger('click');
await helper.waitForPromise(() => helper.isChatboxSticky(), 2000);
};
@ -132,7 +132,7 @@ helper.enableStickyChatviaSettings = async () => {
helper.disableStickyChatviaSettings = async () => {
const stickyChat = helper.padChrome$('#options-stickychat');
if (!helper.isSettingsShown() || !stickyChat.is(':checked')) return;
stickyChat.click();
stickyChat.trigger('click');
await helper.waitForPromise(() => !helper.isChatboxSticky(), 2000);
};
@ -145,7 +145,7 @@ helper.disableStickyChatviaSettings = async () => {
helper.enableStickyChatviaIcon = async () => {
const stickyChat = helper.padChrome$('#titlesticky');
if (!helper.isChatboxShown() || helper.isChatboxSticky()) return;
stickyChat.click();
stickyChat.trigger('click');
await helper.waitForPromise(() => helper.isChatboxSticky(), 2000);
};
@ -157,7 +157,7 @@ helper.enableStickyChatviaIcon = async () => {
*/
helper.disableStickyChatviaIcon = async () => {
if (!helper.isChatboxShown() || !helper.isChatboxSticky()) return;
helper.titlecross().click();
helper.titlecross().trigger('click');
await helper.waitForPromise(() => !helper.isChatboxSticky(), 2000);
};

View File

@ -16,7 +16,7 @@ helper.contentWindow = () => $('#iframe-container iframe')[0].contentWindow;
helper.showChat = async () => {
const chaticon = helper.chatIcon();
if (!chaticon.hasClass('visible')) return;
chaticon.click();
chaticon.trigger('click');
await helper.waitForPromise(() => !chaticon.hasClass('visible'), 2000);
};
@ -27,7 +27,7 @@ helper.showChat = async () => {
*/
helper.hideChat = async () => {
if (!helper.isChatboxShown() || helper.isChatboxSticky()) return;
helper.titlecross().click();
helper.titlecross().trigger('click');
await helper.waitForPromise(() => !helper.isChatboxShown(), 2000);
};
@ -80,7 +80,7 @@ helper.settingsButton =
helper.toggleUserList = async () => {
const isVisible = helper.userListShown();
const button = helper.padChrome$("button[data-l10n-id='pad.toolbar.showusers.title']");
button.click();
button.trigger('click');
await helper.waitForPromise(() => !isVisible);
};
@ -104,9 +104,9 @@ helper.userListShown = () => helper.padChrome$('div#users').hasClass('popup-show
*/
helper.setUserName = async (name) => {
const userElement = helper.usernameField();
userElement.click();
userElement.trigger('click');
userElement.val(name);
userElement.blur();
userElement.trigger('blur');
await helper.waitForPromise(() => !helper.usernameField().hasClass('editactive'));
};

View File

@ -27,7 +27,7 @@ describe('Admin > Settings', function () {
observer.observe(
helper.admin$('#response')[0], {attributes: true, childList: false, subtree: false});
});
helper.admin$('#saveSettings').click();
helper.admin$('#saveSettings').trigger('click');
await p;
};
@ -80,8 +80,8 @@ describe('Admin > Settings', function () {
await helper.waitForPromise(async () => {
oldStartTime = await getStartTime();
return oldStartTime != null && oldStartTime > 0;
}, 1000, 500);
helper.admin$('#restartEtherpad').click();
}, 2100, 500);
helper.admin$('#restartEtherpad').trigger('click');
await helper.waitForPromise(async () => {
const startTime = await getStartTime();
return startTime != null && startTime > oldStartTime;

View File

@ -56,7 +56,7 @@ describe('Plugins page', function () {
await timeout(500); // HACK! Please submit better fix..
const $doUpdateButton = helper.admin$('.ep_align .do-update');
$doUpdateButton.click();
$doUpdateButton.trigger('click');
// ensure its showing as Updating
await helper.waitForPromise(
@ -79,7 +79,7 @@ describe('Plugins page', function () {
// skip if we already have ep_headings2 installed..
if (helper.admin$('.ep_headings2 .do-install').is(':visible') === false) this.skip();
helper.admin$('.ep_headings2 .do-install').click();
helper.admin$('.ep_headings2 .do-install').trigger('click');
// ensure install has attempted to be started
await helper.waitForPromise(
() => helper.admin$('.ep_headings2 .do-install').length !== 0, 120000);
@ -96,7 +96,7 @@ describe('Plugins page', function () {
await helper.waitForPromise(
() => helper.admin$('.ep_headings2 .do-uninstall').length !== 0, 120000);
helper.admin$('.ep_headings2 .do-uninstall').click();
helper.admin$('.ep_headings2 .do-uninstall').trigger('click');
// ensure its showing uninstalling
await helper.waitForPromise(

View File

@ -25,7 +25,7 @@ describe('author of pad edition', function () {
$lineWithUnorderedList.sendkeys('{selectall}');
const $insertUnorderedListButton = helper.padChrome$('.buttonicon-insertunorderedlist');
$insertUnorderedListButton.click();
$insertUnorderedListButton.trigger('click');
await helper.waitForPromise(() => (
getLine(LINE_WITH_UNORDERED_LIST).find('ul li').length === 1 &&
@ -36,7 +36,7 @@ describe('author of pad edition', function () {
$lineWithOrderedList.sendkeys('{selectall}');
const $insertOrderedListButton = helper.padChrome$('.buttonicon-insertorderedlist');
$insertOrderedListButton.click();
$insertOrderedListButton.trigger('click');
await helper.waitForPromise(() => (
getLine(LINE_WITH_ORDERED_LIST).find('ol li').length === 1 &&

View File

@ -18,7 +18,7 @@ describe('bold button', function () {
// get the bold button and click it
const $boldButton = chrome$('.buttonicon-bold');
$boldButton.click();
$boldButton.trigger('click');
const $newFirstTextElement = inner$('div').first();

View File

@ -13,10 +13,10 @@ describe('change user color', function () {
// click on the settings button to make settings visible
let $userButton = chrome$('.buttonicon-showusers');
$userButton.click();
$userButton.trigger('click');
let $userSwatch = chrome$('#myswatch');
$userSwatch.click();
$userSwatch.trigger('click');
const fb = chrome$.farbtastic('#colorpicker');
const $colorPickerSave = chrome$('#mycolorpickersave');
@ -34,7 +34,7 @@ describe('change user color', function () {
// The swatch updates as the test color is picked.
fb.setColor(testColorHash);
expect($colorPickerPreview.css('background-color')).to.be(testColorRGB);
$colorPickerSave.click();
$colorPickerSave.trigger('click');
expect($userSwatch.css('background-color')).to.be(testColorRGB);
// give it a second to save the color on the server side
@ -47,10 +47,10 @@ describe('change user color', function () {
// click on the settings button to make settings visible
$userButton = chrome$('.buttonicon-showusers');
$userButton.click();
$userButton.trigger('click');
$userSwatch = chrome$('#myswatch');
$userSwatch.click();
$userSwatch.trigger('click');
$colorPickerPreview = chrome$('#mycolorpickerpreview');
@ -64,15 +64,15 @@ describe('change user color', function () {
const $colorOption = helper.padChrome$('#options-colorscheck');
if (!$colorOption.is(':checked')) {
$colorOption.click();
$colorOption.trigger('click');
}
// click on the settings button to make settings visible
const $userButton = chrome$('.buttonicon-showusers');
$userButton.click();
$userButton.trigger('click');
const $userSwatch = chrome$('#myswatch');
$userSwatch.click();
$userSwatch.trigger('click');
const fb = chrome$.farbtastic('#colorpicker');
const $colorPickerSave = chrome$('#mycolorpickersave');
@ -82,11 +82,11 @@ describe('change user color', function () {
const testColorRGB = 'rgb(171, 205, 239)';
fb.setColor(testColorHash);
$colorPickerSave.click();
$colorPickerSave.trigger('click');
// click on the chat button to make chat visible
const $chatButton = chrome$('#chaticon');
$chatButton.click();
$chatButton.trigger('click');
const $chatInput = chrome$('#chatinput');
$chatInput.sendkeys('O hi'); // simulate a keypress of typing user
$chatInput.sendkeys('{enter}');

View File

@ -10,7 +10,7 @@ describe('chat-load-messages', function () {
it('adds a lot of messages', async function () {
const chrome$ = helper.padChrome$;
const chatButton = chrome$('#chaticon');
chatButton.click();
chatButton.trigger('click');
const chatInput = chrome$('#chatinput');
const chatText = chrome$('#chattext');
@ -33,7 +33,7 @@ describe('chat-load-messages', function () {
const chrome$ = helper.padChrome$;
helper.waitFor(() => {
const chatButton = chrome$('#chaticon');
chatButton.click();
chatButton.trigger('click');
chatText = chrome$('#chattext');
return chatText.children('p').length === expectedCount;
}).always(() => {
@ -47,11 +47,11 @@ describe('chat-load-messages', function () {
const expectedCount = 122;
const chrome$ = helper.padChrome$;
const chatButton = chrome$('#chaticon');
chatButton.click();
chatButton.trigger('click');
const chatText = chrome$('#chattext');
const loadMsgBtn = chrome$('#chatloadmessagesbutton');
loadMsgBtn.click();
loadMsgBtn.trigger('click');
helper.waitFor(() => chatText.children('p').length === expectedCount).always(() => {
expect(chatText.children('p').length).to.be(expectedCount);
done();
@ -63,11 +63,11 @@ describe('chat-load-messages', function () {
const expectedDisplay = 'none';
const chrome$ = helper.padChrome$;
const chatButton = chrome$('#chaticon');
chatButton.click();
chatButton.trigger('click');
const loadMsgBtn = chrome$('#chatloadmessagesbutton');
const loadMsgBall = chrome$('#chatloadmessagesball');
loadMsgBtn.click();
loadMsgBtn.trigger('click');
helper.waitFor(() => loadMsgBtn.css('display') === expectedDisplay &&
loadMsgBall.css('display') === expectedDisplay).always(() => {
expect(loadMsgBtn.css('display')).to.be(expectedDisplay);

View File

@ -32,11 +32,11 @@ describe('clear authorship colors button', function () {
() => inner$('div span').first().attr('class').indexOf('author') !== -1);
// IE hates you if you don't give focus to the inner frame bevore you do a clearAuthorship
inner$('div').first().focus();
inner$('div').first().trigger('focus');
// get the clear authorship colors button and click it
const $clearauthorshipcolorsButton = chrome$('.buttonicon-clearauthorship');
$clearauthorshipcolorsButton.click();
$clearauthorshipcolorsButton.trigger('click');
// does the first div include an author class?
const hasAuthorClass = inner$('div').first().attr('class').indexOf('author') !== -1;
@ -70,11 +70,11 @@ describe('clear authorship colors button', function () {
() => inner$('div span').first().attr('class').indexOf('author') !== -1);
// IE hates you if you don't give focus to the inner frame bevore you do a clearAuthorship
inner$('div').first().focus();
inner$('div').first().trigger('focus');
// get the clear authorship colors button and click it
const $clearauthorshipcolorsButton = chrome$('.buttonicon-clearauthorship');
$clearauthorshipcolorsButton.click();
$clearauthorshipcolorsButton.trigger('click');
// does the first div include an author class?
let hasAuthorClass = inner$('div').first().attr('class').indexOf('author') !== -1;
@ -93,7 +93,7 @@ describe('clear authorship colors button', function () {
const $undoButton = chrome$('.buttonicon-undo');
// click the button
$undoButton.click(); // shouldn't do anything
$undoButton.trigger('click'); // shouldn't do anything
hasAuthorClass = inner$('div').first().attr('class').indexOf('author') !== -1;
expect(hasAuthorClass).to.be(false);

View File

@ -24,7 +24,7 @@ describe('drag and drop', function () {
before(async function () {
const originalHTML = helper.padInner$('body').html();
const $undoButton = helper.padChrome$('.buttonicon-undo');
$undoButton.click();
$undoButton.trigger('click');
await helper.waitForPromise(() => helper.padInner$('body').html() !== originalHTML);
});
@ -59,7 +59,7 @@ describe('drag and drop', function () {
before(async function () {
const originalHTML = helper.padInner$('body').html();
const $undoButton = helper.padChrome$('.buttonicon-undo');
$undoButton.click();
$undoButton.trigger('click');
await helper.waitForPromise(() => helper.padInner$('body').html() !== originalHTML);
});

Some files were not shown because too many files have changed in this diff Show More