mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-02-21 10:56:25 +00:00
Compare commits
49 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ec4814a76e | ||
|
|
69b53d70c5 | ||
|
|
02875f5a34 | ||
|
|
29d8c4e08d | ||
|
|
df203311fe | ||
|
|
10f9b91c44 | ||
|
|
cd861364a2 | ||
|
|
90b52abc04 | ||
|
|
093b726c52 | ||
|
|
fd84fc9dbe | ||
|
|
4353646b3a | ||
|
|
7545e5312c | ||
|
|
bd494ce9ec | ||
|
|
ee3cf8e6d1 | ||
|
|
df524fdc1f | ||
|
|
f0c0cfee1d | ||
|
|
cf1bf3c163 | ||
|
|
b9d703fe25 | ||
|
|
46f7e685b6 | ||
|
|
8023331fca | ||
|
|
597db7d4bd | ||
|
|
773bd32cd0 | ||
|
|
c7e3756de1 | ||
|
|
64bf122c95 | ||
|
|
a92b0411fd | ||
|
|
728d61762a | ||
|
|
d9783e2a4d | ||
|
|
b6303d2c16 | ||
|
|
dd673a62b5 | ||
|
|
b7577038a0 | ||
|
|
613b71d23b | ||
|
|
0284100c2d | ||
|
|
26cd470d31 | ||
|
|
ebaf509a42 | ||
|
|
646db73061 | ||
|
|
e6df581909 | ||
|
|
a8e12409b5 | ||
|
|
b7c7e293f7 | ||
|
|
fe85aff052 | ||
|
|
12d8bcad6e | ||
|
|
bbfc244f16 | ||
|
|
e275a2736a | ||
|
|
d2a8076596 | ||
|
|
83344f748f | ||
|
|
1d5dbc454d | ||
|
|
16e2dc60aa | ||
|
|
a6fd4a8472 | ||
|
|
c25698dfa7 | ||
|
|
2ab2064a72 |
6
Pipfile.lock
generated
6
Pipfile.lock
generated
@@ -569,11 +569,11 @@
|
||||
},
|
||||
"filelock": {
|
||||
"hashes": [
|
||||
"sha256:75997740323c5f12e18f10b494bc11c03e42843129f980f17c04352cc7b09d40",
|
||||
"sha256:eb8f0f2d37ed68223ea63e3bddf2fac99667e4362c88b3f762e434d160190d18"
|
||||
"sha256:ad98852315c2ab702aeb628412cbf7e95b7ce8c3bf9565670b4eaecf1db370a9",
|
||||
"sha256:fc03ae43288c013d2ea83c8597001b1129db351aad9c57fe2409327916b8e718"
|
||||
],
|
||||
"index": "pypi",
|
||||
"version": "==3.10.2"
|
||||
"version": "==3.12.0"
|
||||
},
|
||||
"flower": {
|
||||
"hashes": [
|
||||
|
||||
@@ -80,7 +80,7 @@ django_checks() {
|
||||
|
||||
search_index() {
|
||||
|
||||
local -r index_version=4
|
||||
local -r index_version=5
|
||||
local -r index_version_file=${DATA_DIR}/.index_version
|
||||
|
||||
if [[ (! -f "${index_version_file}") || $(<"${index_version_file}") != "$index_version" ]]; then
|
||||
|
||||
@@ -15,6 +15,10 @@ do
|
||||
env_name=${line%%=*}
|
||||
# Check if it starts with "PAPERLESS_" and ends in "_FILE"
|
||||
if [[ ${env_name} == PAPERLESS_*_FILE ]]; then
|
||||
# This should have been named different..
|
||||
if [[ ${env_name} == "PAPERLESS_OCR_SKIP_ARCHIVE_FILE" ]]; then
|
||||
continue
|
||||
fi
|
||||
# Extract the value of the environment
|
||||
env_value=${line#*=}
|
||||
|
||||
|
||||
@@ -1,5 +1,80 @@
|
||||
# Changelog
|
||||
|
||||
## paperless-ngx 1.14.3
|
||||
|
||||
### Features
|
||||
|
||||
- Enhancement: better keyboard nav for filter/edit dropdowns [@shamoon](https://github.com/shamoon) ([#3227](https://github.com/paperless-ngx/paperless-ngx/pull/3227))
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Bump filelock from 3.10.2 to 3.12.0 to fix permissions bug [@rbrownwsws](https://github.com/rbrownwsws) ([#3282](https://github.com/paperless-ngx/paperless-ngx/pull/3282))
|
||||
- Fix: Handle cases where media files aren't all in the same filesystem [@stumpylog](https://github.com/stumpylog) ([#3261](https://github.com/paperless-ngx/paperless-ngx/pull/3261))
|
||||
- Fix: Prevent erroneous warning when starting container [@stumpylog](https://github.com/stumpylog) ([#3262](https://github.com/paperless-ngx/paperless-ngx/pull/3262))
|
||||
- Retain doc changes on tab switch after refresh doc [@shamoon](https://github.com/shamoon) ([#3243](https://github.com/paperless-ngx/paperless-ngx/pull/3243))
|
||||
- Fix: Don't send Gmail related setting if the server doesn't support it [@stumpylog](https://github.com/stumpylog) ([#3240](https://github.com/paperless-ngx/paperless-ngx/pull/3240))
|
||||
- Fix: close all docs on logout [@shamoon](https://github.com/shamoon) ([#3232](https://github.com/paperless-ngx/paperless-ngx/pull/3232))
|
||||
- Fix: Respect superuser for advanced queries, test coverage for object perms [@shamoon](https://github.com/shamoon) ([#3222](https://github.com/paperless-ngx/paperless-ngx/pull/3222))
|
||||
- Fix: ALLOWED_HOSTS logic being overwritten when \* is set [@ikaruswill](https://github.com/ikaruswill) ([#3218](https://github.com/paperless-ngx/paperless-ngx/pull/3218))
|
||||
|
||||
### Dependencies
|
||||
|
||||
<details>
|
||||
<summary>7 changes</summary>
|
||||
|
||||
- Bump eslint from 8.38.0 to 8.39.0 in /src-ui [@dependabot](https://github.com/dependabot) ([#3276](https://github.com/paperless-ngx/paperless-ngx/pull/3276))
|
||||
- Bump [@<!---->typescript-eslint/parser from 5.58.0 to 5.59.2 in /src-ui @dependabot](https://github.com/<!---->typescript-eslint/parser from 5.58.0 to 5.59.2 in /src-ui @dependabot) ([#3278](https://github.com/paperless-ngx/paperless-ngx/pull/3278))
|
||||
- Bump [@<!---->types/node from 18.15.11 to 18.16.3 in /src-ui @dependabot](https://github.com/<!---->types/node from 18.15.11 to 18.16.3 in /src-ui @dependabot) ([#3275](https://github.com/paperless-ngx/paperless-ngx/pull/3275))
|
||||
- Bump rxjs from 7.8.0 to 7.8.1 in /src-ui [@dependabot](https://github.com/dependabot) ([#3277](https://github.com/paperless-ngx/paperless-ngx/pull/3277))
|
||||
- Bump [@<!---->typescript-eslint/eslint-plugin from 5.58.0 to 5.59.2 in /src-ui @dependabot](https://github.com/<!---->typescript-eslint/eslint-plugin from 5.58.0 to 5.59.2 in /src-ui @dependabot) ([#3274](https://github.com/paperless-ngx/paperless-ngx/pull/3274))
|
||||
- Bump cypress from 12.9.0 to 12.11.0 in /src-ui [@dependabot](https://github.com/dependabot) ([#3268](https://github.com/paperless-ngx/paperless-ngx/pull/3268))
|
||||
- Bulk bump angular packages to 15.2.8 in /src-ui [@dependabot](https://github.com/dependabot) ([#3270](https://github.com/paperless-ngx/paperless-ngx/pull/3270))
|
||||
</details>
|
||||
|
||||
### All App Changes
|
||||
|
||||
<details>
|
||||
<summary>14 changes</summary>
|
||||
|
||||
- Bump eslint from 8.38.0 to 8.39.0 in /src-ui [@dependabot](https://github.com/dependabot) ([#3276](https://github.com/paperless-ngx/paperless-ngx/pull/3276))
|
||||
- Bump [@<!---->typescript-eslint/parser from 5.58.0 to 5.59.2 in /src-ui @dependabot](https://github.com/<!---->typescript-eslint/parser from 5.58.0 to 5.59.2 in /src-ui @dependabot) ([#3278](https://github.com/paperless-ngx/paperless-ngx/pull/3278))
|
||||
- Bump [@<!---->types/node from 18.15.11 to 18.16.3 in /src-ui @dependabot](https://github.com/<!---->types/node from 18.15.11 to 18.16.3 in /src-ui @dependabot) ([#3275](https://github.com/paperless-ngx/paperless-ngx/pull/3275))
|
||||
- Bump rxjs from 7.8.0 to 7.8.1 in /src-ui [@dependabot](https://github.com/dependabot) ([#3277](https://github.com/paperless-ngx/paperless-ngx/pull/3277))
|
||||
- Bump [@<!---->typescript-eslint/eslint-plugin from 5.58.0 to 5.59.2 in /src-ui @dependabot](https://github.com/<!---->typescript-eslint/eslint-plugin from 5.58.0 to 5.59.2 in /src-ui @dependabot) ([#3274](https://github.com/paperless-ngx/paperless-ngx/pull/3274))
|
||||
- Bump cypress from 12.9.0 to 12.11.0 in /src-ui [@dependabot](https://github.com/dependabot) ([#3268](https://github.com/paperless-ngx/paperless-ngx/pull/3268))
|
||||
- Bulk bump angular packages to 15.2.8 in /src-ui [@dependabot](https://github.com/dependabot) ([#3270](https://github.com/paperless-ngx/paperless-ngx/pull/3270))
|
||||
- Fix: Handle cases where media files aren't all in the same filesystem [@stumpylog](https://github.com/stumpylog) ([#3261](https://github.com/paperless-ngx/paperless-ngx/pull/3261))
|
||||
- Retain doc changes on tab switch after refresh doc [@shamoon](https://github.com/shamoon) ([#3243](https://github.com/paperless-ngx/paperless-ngx/pull/3243))
|
||||
- Fix: Don't send Gmail related setting if the server doesn't support it [@stumpylog](https://github.com/stumpylog) ([#3240](https://github.com/paperless-ngx/paperless-ngx/pull/3240))
|
||||
- Fix: close all docs on logout [@shamoon](https://github.com/shamoon) ([#3232](https://github.com/paperless-ngx/paperless-ngx/pull/3232))
|
||||
- Enhancement: better keyboard nav for filter/edit dropdowns [@shamoon](https://github.com/shamoon) ([#3227](https://github.com/paperless-ngx/paperless-ngx/pull/3227))
|
||||
- Fix: Respect superuser for advanced queries, test coverage for object perms [@shamoon](https://github.com/shamoon) ([#3222](https://github.com/paperless-ngx/paperless-ngx/pull/3222))
|
||||
- Fix: ALLOWED_HOSTS logic being overwritten when \* is set [@ikaruswill](https://github.com/ikaruswill) ([#3218](https://github.com/paperless-ngx/paperless-ngx/pull/3218))
|
||||
</details>
|
||||
|
||||
## paperless-ngx 1.14.2
|
||||
|
||||
### Features
|
||||
|
||||
- Feature: Finnish translation [@shamoon](https://github.com/shamoon) ([#3215](https://github.com/paperless-ngx/paperless-ngx/pull/3215))
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix: Load saved views from app frame, not dashboard [@shamoon](https://github.com/shamoon) ([#3211](https://github.com/paperless-ngx/paperless-ngx/pull/3211))
|
||||
- Fix: advanced search or date searching + doc type/correspondent/storage path broken [@shamoon](https://github.com/shamoon) ([#3209](https://github.com/paperless-ngx/paperless-ngx/pull/3209))
|
||||
- Fix MixedContentTypeError in add_inbox_tags handler [@e1mo](https://github.com/e1mo) ([#3212](https://github.com/paperless-ngx/paperless-ngx/pull/3212))
|
||||
|
||||
### All App Changes
|
||||
|
||||
<details>
|
||||
<summary>4 changes</summary>
|
||||
|
||||
- Feature: Finnish translation [@shamoon](https://github.com/shamoon) ([#3215](https://github.com/paperless-ngx/paperless-ngx/pull/3215))
|
||||
- Fix: Load saved views from app frame, not dashboard [@shamoon](https://github.com/shamoon) ([#3211](https://github.com/paperless-ngx/paperless-ngx/pull/3211))
|
||||
- Fix: advanced search or date searching + doc type/correspondent/storage path broken [@shamoon](https://github.com/shamoon) ([#3209](https://github.com/paperless-ngx/paperless-ngx/pull/3209))
|
||||
- Fix MixedContentTypeError in add_inbox_tags handler [@e1mo](https://github.com/e1mo) ([#3212](https://github.com/paperless-ngx/paperless-ngx/pull/3212))
|
||||
</details>
|
||||
|
||||
## paperless-ngx 1.14.1
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
@@ -322,8 +322,7 @@ You can read more about this in [the Django project's documentation](https://doc
|
||||
|
||||
Can also be set using PAPERLESS_URL (see above).
|
||||
|
||||
If manually set, please remember to include "localhost". Otherwise
|
||||
docker healthcheck will fail.
|
||||
"localhost" is always allowed for docker healthcheck
|
||||
|
||||
Defaults to "\*", which is all hosts.
|
||||
|
||||
|
||||
378
src-ui/package-lock.json
generated
378
src-ui/package-lock.json
generated
@@ -8,14 +8,14 @@
|
||||
"name": "paperless-ui",
|
||||
"version": "0.0.0",
|
||||
"dependencies": {
|
||||
"@angular/common": "~15.2.7",
|
||||
"@angular/compiler": "~15.2.7",
|
||||
"@angular/core": "~15.2.7",
|
||||
"@angular/forms": "~15.2.7",
|
||||
"@angular/localize": "~15.2.7",
|
||||
"@angular/platform-browser": "~15.2.7",
|
||||
"@angular/platform-browser-dynamic": "~15.2.7",
|
||||
"@angular/router": "~15.2.7",
|
||||
"@angular/common": "~15.2.8",
|
||||
"@angular/compiler": "~15.2.8",
|
||||
"@angular/core": "~15.2.8",
|
||||
"@angular/forms": "~15.2.8",
|
||||
"@angular/localize": "~15.2.8",
|
||||
"@angular/platform-browser": "~15.2.8",
|
||||
"@angular/platform-browser-dynamic": "~15.2.8",
|
||||
"@angular/router": "~15.2.8",
|
||||
"@ng-bootstrap/ng-bootstrap": "^14.1.0",
|
||||
"@ng-select/ng-select": "^10.0.4",
|
||||
"@ngneat/dirty-check-forms": "^3.0.3",
|
||||
@@ -28,7 +28,7 @@
|
||||
"ngx-cookie-service": "^15.0.0",
|
||||
"ngx-file-drop": "^15.0.0",
|
||||
"ngx-ui-tour-ng-bootstrap": "^12.6.0",
|
||||
"rxjs": "^7.8.0",
|
||||
"rxjs": "^7.8.1",
|
||||
"tslib": "^2.4.1",
|
||||
"uuid": "^9.0.0",
|
||||
"zone.js": "^0.13.0"
|
||||
@@ -41,14 +41,14 @@
|
||||
"@angular-eslint/eslint-plugin-template": "15.2.1",
|
||||
"@angular-eslint/schematics": "15.2.1",
|
||||
"@angular-eslint/template-parser": "15.2.1",
|
||||
"@angular/cli": "~15.2.6",
|
||||
"@angular/compiler-cli": "~15.2.7",
|
||||
"@angular/cli": "~15.2.7",
|
||||
"@angular/compiler-cli": "~15.2.8",
|
||||
"@types/jest": "^29.5.0",
|
||||
"@types/node": "^18.15.11",
|
||||
"@typescript-eslint/eslint-plugin": "^5.58.0",
|
||||
"@typescript-eslint/parser": "^5.58.0",
|
||||
"@types/node": "^18.16.3",
|
||||
"@typescript-eslint/eslint-plugin": "^5.59.2",
|
||||
"@typescript-eslint/parser": "^5.59.2",
|
||||
"concurrently": "^8.0.1",
|
||||
"eslint": "^8.38.0",
|
||||
"eslint": "^8.39.0",
|
||||
"jest": "28.1.3",
|
||||
"jest-environment-jsdom": "^29.5.0",
|
||||
"jest-preset-angular": "^12.2.6",
|
||||
@@ -58,7 +58,7 @@
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@cypress/schematic": "^2.1.1",
|
||||
"cypress": "^12.9.0"
|
||||
"cypress": "^12.11.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ampproject/remapping": {
|
||||
@@ -306,12 +306,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@angular-devkit/architect": {
|
||||
"version": "0.1502.6",
|
||||
"resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1502.6.tgz",
|
||||
"integrity": "sha512-n4oJ9vzFWwabf+AfgqqevVzdJhNKNCav7ytefjD/Y01vkNwlXqWnHcvyyHCLkVibJ6WR8J9lK4t77j/HFlDvWQ==",
|
||||
"version": "0.1502.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1502.7.tgz",
|
||||
"integrity": "sha512-MzB6D/yUo6cBJfQ31zNDHJ3C3iKmBtxP3i9WIRnnkZwS1VUfO8OX3TZ6lycYbREF1oL/AQ/r9GK+KA5DNEBSAw==",
|
||||
"devOptional": true,
|
||||
"dependencies": {
|
||||
"@angular-devkit/core": "15.2.6",
|
||||
"@angular-devkit/core": "15.2.7",
|
||||
"rxjs": "6.6.7"
|
||||
},
|
||||
"engines": {
|
||||
@@ -339,15 +339,15 @@
|
||||
"devOptional": true
|
||||
},
|
||||
"node_modules/@angular-devkit/build-angular": {
|
||||
"version": "15.2.6",
|
||||
"resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-15.2.6.tgz",
|
||||
"integrity": "sha512-OmMcdXXUrAdZNxwxDE8SUx1FMcq9FyMnrSv1PmP9sHPBoxAdBVc/qNdGA9V7C5yHvWHGgzsx7ZK5TDuvifzS5g==",
|
||||
"version": "15.2.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-15.2.7.tgz",
|
||||
"integrity": "sha512-zZ+tlt5aNGY9APUdjQHeVFJpVLeixlZRNHmfdXD+rN4WR2q9E0pTvLUThrkOmO8YrVyGbdvcw1O7XNdL+3b02w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@ampproject/remapping": "2.2.0",
|
||||
"@angular-devkit/architect": "0.1502.6",
|
||||
"@angular-devkit/build-webpack": "0.1502.6",
|
||||
"@angular-devkit/core": "15.2.6",
|
||||
"@angular-devkit/architect": "0.1502.7",
|
||||
"@angular-devkit/build-webpack": "0.1502.7",
|
||||
"@angular-devkit/core": "15.2.7",
|
||||
"@babel/core": "7.20.12",
|
||||
"@babel/generator": "7.20.14",
|
||||
"@babel/helper-annotate-as-pure": "7.18.6",
|
||||
@@ -359,7 +359,7 @@
|
||||
"@babel/runtime": "7.20.13",
|
||||
"@babel/template": "7.20.7",
|
||||
"@discoveryjs/json-ext": "0.5.7",
|
||||
"@ngtools/webpack": "15.2.6",
|
||||
"@ngtools/webpack": "15.2.7",
|
||||
"ansi-colors": "4.1.3",
|
||||
"autoprefixer": "10.4.13",
|
||||
"babel-loader": "9.1.2",
|
||||
@@ -479,12 +479,12 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@angular-devkit/build-webpack": {
|
||||
"version": "0.1502.6",
|
||||
"resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1502.6.tgz",
|
||||
"integrity": "sha512-X7XQ11QDz2Bs5qpJ3a5glIytvI+S74ORQxdzvT6a6KB8ayW0SgZEhTwD+GF7pa5My8draIaXBGzzQR1qmpWK5Q==",
|
||||
"version": "0.1502.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1502.7.tgz",
|
||||
"integrity": "sha512-sNE4t4shSwxagqm+jdojbkYfuo/CHNMi4faItDWTTsCOf9wQxCxV4Waxee4akAkv3K6fzrnZy3ad/oQQMUl0Iw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@angular-devkit/architect": "0.1502.6",
|
||||
"@angular-devkit/architect": "0.1502.7",
|
||||
"rxjs": "6.6.7"
|
||||
},
|
||||
"engines": {
|
||||
@@ -516,9 +516,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@angular-devkit/core": {
|
||||
"version": "15.2.6",
|
||||
"resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-15.2.6.tgz",
|
||||
"integrity": "sha512-YVTWZ+M+xNKdFX4EnY9QX49PZraawiaA0iTd2CUW8ZoTUvU7yOGMKZLSdz6aokTMRVfm0449wt6YL994ibOo1g==",
|
||||
"version": "15.2.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-15.2.7.tgz",
|
||||
"integrity": "sha512-k2MKUm4ygTD9+89neqMmBphDr0o8Tp9RtgfzbS8VHgGkGYlbu0KPsxHyHB3Mvzl1EkSz6EHyrU3t89m+Rcj1lw==",
|
||||
"devOptional": true,
|
||||
"dependencies": {
|
||||
"ajv": "8.12.0",
|
||||
@@ -560,12 +560,12 @@
|
||||
"devOptional": true
|
||||
},
|
||||
"node_modules/@angular-devkit/schematics": {
|
||||
"version": "15.2.6",
|
||||
"resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-15.2.6.tgz",
|
||||
"integrity": "sha512-f7VgnAcok7AwR/DhX0ZWskB0rFBo/KsvtIUA2qZSrpKMf8eFiwu03dv/b2mI0vnf+1FBfIQzJvO0ww45zRp6dA==",
|
||||
"version": "15.2.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-15.2.7.tgz",
|
||||
"integrity": "sha512-umQ+SgEMjqPHimHOBVhDn5NNGVoMLKQkI2fwbENXV72BqQqdh1K3D4QSNlUXitTaH0NEZZaAawE1vZHzzeAoNA==",
|
||||
"devOptional": true,
|
||||
"dependencies": {
|
||||
"@angular-devkit/core": "15.2.6",
|
||||
"@angular-devkit/core": "15.2.7",
|
||||
"jsonc-parser": "3.2.0",
|
||||
"magic-string": "0.29.0",
|
||||
"ora": "5.4.1",
|
||||
@@ -700,15 +700,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/cli": {
|
||||
"version": "15.2.6",
|
||||
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-15.2.6.tgz",
|
||||
"integrity": "sha512-wNkQ/qCVbd4pERaGVagKJPifEvjRNY5otwsd4iRVubY/XOcIHcYChUThZwgQdVfNAImfJPMZNrhbGxejuWLA9w==",
|
||||
"version": "15.2.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-15.2.7.tgz",
|
||||
"integrity": "sha512-gGUIjaVN//bO72zRK3GNcCRVeism56BCRfkXSywKedCWFK4IZsatIL1IXT6OiJC22NsUCMaAFPD0wygSUCZaig==",
|
||||
"devOptional": true,
|
||||
"dependencies": {
|
||||
"@angular-devkit/architect": "0.1502.6",
|
||||
"@angular-devkit/core": "15.2.6",
|
||||
"@angular-devkit/schematics": "15.2.6",
|
||||
"@schematics/angular": "15.2.6",
|
||||
"@angular-devkit/architect": "0.1502.7",
|
||||
"@angular-devkit/core": "15.2.7",
|
||||
"@angular-devkit/schematics": "15.2.7",
|
||||
"@schematics/angular": "15.2.7",
|
||||
"@yarnpkg/lockfile": "1.1.0",
|
||||
"ansi-colors": "4.1.3",
|
||||
"ini": "3.0.1",
|
||||
@@ -734,9 +734,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/common": {
|
||||
"version": "15.2.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular/common/-/common-15.2.7.tgz",
|
||||
"integrity": "sha512-CbmrQeZ0yChQrF/ab3v+gv6x2uLbv/s1wZNUBSO/p1STz6BZzHRJqObVlfPlQvyBx5btBBy/+I1sUh1yumARDA==",
|
||||
"version": "15.2.8",
|
||||
"resolved": "https://registry.npmjs.org/@angular/common/-/common-15.2.8.tgz",
|
||||
"integrity": "sha512-yLDQihiRcVl38HrWMPbqgzOaSUw85AQH5BsGdjbS6BpoBQj3EXOpccCMFsuxOKxPG4toatgawNqrEnK0Jpv9Mw==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
@@ -744,14 +744,14 @@
|
||||
"node": "^14.20.0 || ^16.13.0 || >=18.10.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/core": "15.2.7",
|
||||
"@angular/core": "15.2.8",
|
||||
"rxjs": "^6.5.3 || ^7.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/compiler": {
|
||||
"version": "15.2.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-15.2.7.tgz",
|
||||
"integrity": "sha512-SesyYI2ExUa13XukXgIsmfg3ar90HbWeWDJTgmzsIfph0M9t6+SaPGpf3FCtdBgNADIpUFp3cieCOJgLESzxYQ==",
|
||||
"version": "15.2.8",
|
||||
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-15.2.8.tgz",
|
||||
"integrity": "sha512-+dvspIDvuGoYqdL7r/3o9ojkR3fH1zevgC0ISJivcIrMi+WcJ0FV2JmJdnm8V52oNsHy+sMF9eEZGEbCbACE/A==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
@@ -759,7 +759,7 @@
|
||||
"node": "^14.20.0 || ^16.13.0 || >=18.10.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/core": "15.2.7"
|
||||
"@angular/core": "15.2.8"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@angular/core": {
|
||||
@@ -768,9 +768,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/compiler-cli": {
|
||||
"version": "15.2.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-15.2.7.tgz",
|
||||
"integrity": "sha512-4v51dOaT8GDUzRh6+mCLZOaYuU9FYX6vOHaLod9np3tVWPhcpoF2ZklRSiQDeFqrhr5B4vuCp/Lh9N2wzc22XQ==",
|
||||
"version": "15.2.8",
|
||||
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-15.2.8.tgz",
|
||||
"integrity": "sha512-fFxaDlbILo0t2t662qA0cjgn+kWItGlc1tFYKU6X7bvYb3t2e0cd9FzrFPLXUQVboGis83ULcJ2zkDxScnuPuQ==",
|
||||
"dependencies": {
|
||||
"@babel/core": "7.19.3",
|
||||
"@jridgewell/sourcemap-codec": "^1.4.14",
|
||||
@@ -792,7 +792,7 @@
|
||||
"node": "^14.20.0 || ^16.13.0 || >=18.10.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/compiler": "15.2.7",
|
||||
"@angular/compiler": "15.2.8",
|
||||
"typescript": ">=4.8.2 <5.0"
|
||||
}
|
||||
},
|
||||
@@ -834,9 +834,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/core": {
|
||||
"version": "15.2.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular/core/-/core-15.2.7.tgz",
|
||||
"integrity": "sha512-iS7JCJubRFqdndoUdAnvNkQRT3tY5tNFupBQS/sytkwxVrdBg+Is5jpdgk741n824vTMsE+CnuY0SETar8rN6g==",
|
||||
"version": "15.2.8",
|
||||
"resolved": "https://registry.npmjs.org/@angular/core/-/core-15.2.8.tgz",
|
||||
"integrity": "sha512-NDs+g4uM4EhyCvluf8a0YBCFXsDAEfCMHOD5cS00Bl+liTQ7JwtmepkWXMyjLB92irC9JaR79kdy4BoIKOh8WA==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
@@ -849,9 +849,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/forms": {
|
||||
"version": "15.2.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-15.2.7.tgz",
|
||||
"integrity": "sha512-rzrebDIrtxxOeMcBzRBxqaOBZ+T1DJrysG/6YWZy428W/Z3MfPxUarPxgfx/oZI+x5uUsDaZmyoRdhVPJ2KhZg==",
|
||||
"version": "15.2.8",
|
||||
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-15.2.8.tgz",
|
||||
"integrity": "sha512-VyevVj20DdQWjAQUyiFTe+DAzqG9GqfAOWn376Y/lhPcwxAojXePTGNgtQud566/urDrNrP5haaLD6O36/3n+w==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
@@ -859,16 +859,16 @@
|
||||
"node": "^14.20.0 || ^16.13.0 || >=18.10.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/common": "15.2.7",
|
||||
"@angular/core": "15.2.7",
|
||||
"@angular/platform-browser": "15.2.7",
|
||||
"@angular/common": "15.2.8",
|
||||
"@angular/core": "15.2.8",
|
||||
"@angular/platform-browser": "15.2.8",
|
||||
"rxjs": "^6.5.3 || ^7.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/localize": {
|
||||
"version": "15.2.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular/localize/-/localize-15.2.7.tgz",
|
||||
"integrity": "sha512-ySuy35QKApWH9sW3PfnAAnZjLl3NT+SacvlEWigrTeCqfBEuDPUG57ugvc1/Lzuo09UOh3HQkrQBbdWAILd8JA==",
|
||||
"version": "15.2.8",
|
||||
"resolved": "https://registry.npmjs.org/@angular/localize/-/localize-15.2.8.tgz",
|
||||
"integrity": "sha512-wJLBp0MUnET9kHzBtqIlZ3RQ56JFItXSgmBXagQq+MU+uJZmGvuw6fez0i5wkgv9Rgnr25oCULVtpTF+T5RGYA==",
|
||||
"dependencies": {
|
||||
"@babel/core": "7.19.3",
|
||||
"glob": "8.1.0",
|
||||
@@ -883,8 +883,8 @@
|
||||
"node": "^14.20.0 || ^16.13.0 || >=18.10.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/compiler": "15.2.7",
|
||||
"@angular/compiler-cli": "15.2.7"
|
||||
"@angular/compiler": "15.2.8",
|
||||
"@angular/compiler-cli": "15.2.8"
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/localize/node_modules/@babel/core": {
|
||||
@@ -925,9 +925,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/platform-browser": {
|
||||
"version": "15.2.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-15.2.7.tgz",
|
||||
"integrity": "sha512-aCbd7xyuP7c2eDITkOTDO2mqP550WHCBN8U6VnjysqtB5ocbJtR6z/MIRItN/Zx+xj3piiaKei//XIkb3Q5fXQ==",
|
||||
"version": "15.2.8",
|
||||
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-15.2.8.tgz",
|
||||
"integrity": "sha512-8sKFUld54inj0FnQ1ydhFxnDgsbbf43W9FALye/5uEtLgwwE/ZvkNYMaQ7hq1JPuQRMDj3gJkFqaLeFjplpHDA==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
@@ -935,9 +935,9 @@
|
||||
"node": "^14.20.0 || ^16.13.0 || >=18.10.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/animations": "15.2.7",
|
||||
"@angular/common": "15.2.7",
|
||||
"@angular/core": "15.2.7"
|
||||
"@angular/animations": "15.2.8",
|
||||
"@angular/common": "15.2.8",
|
||||
"@angular/core": "15.2.8"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@angular/animations": {
|
||||
@@ -946,9 +946,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/platform-browser-dynamic": {
|
||||
"version": "15.2.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-15.2.7.tgz",
|
||||
"integrity": "sha512-t1Nf7hgbcYvhmxuzgUtsV47jrI5CXUBqrtz5I0ilWG92zZTig5qvfd1/2Ub8NHz87uHNrnggyZpL2+4MJ26nyQ==",
|
||||
"version": "15.2.8",
|
||||
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-15.2.8.tgz",
|
||||
"integrity": "sha512-75HyoZNibA3u/FvdK4Aw5KMzUmS/nDk5N8s7gfM09fe1resSPgFiW8JJEkr1xiUdA2WtSRbHs34y5rHLDe7n1Q==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
@@ -956,16 +956,16 @@
|
||||
"node": "^14.20.0 || ^16.13.0 || >=18.10.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/common": "15.2.7",
|
||||
"@angular/compiler": "15.2.7",
|
||||
"@angular/core": "15.2.7",
|
||||
"@angular/platform-browser": "15.2.7"
|
||||
"@angular/common": "15.2.8",
|
||||
"@angular/compiler": "15.2.8",
|
||||
"@angular/core": "15.2.8",
|
||||
"@angular/platform-browser": "15.2.8"
|
||||
}
|
||||
},
|
||||
"node_modules/@angular/router": {
|
||||
"version": "15.2.7",
|
||||
"resolved": "https://registry.npmjs.org/@angular/router/-/router-15.2.7.tgz",
|
||||
"integrity": "sha512-Wkk+oJSUrVafJjmv9uE1SoY4wDE9bjX7ald+UXePz+QyM/PFoLkm/CzLYjFBkJnsOkOVxw1VmvacoUjWN6BCTQ==",
|
||||
"version": "15.2.8",
|
||||
"resolved": "https://registry.npmjs.org/@angular/router/-/router-15.2.8.tgz",
|
||||
"integrity": "sha512-C62QBEeJSBTNTrQHZiklPrxwJwuENoZzWX22MMJ7dxl+7VjRgnmj8J7mcX9fLjHlL+mC3RvesMlX7sGZRQV1cg==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
},
|
||||
@@ -973,9 +973,9 @@
|
||||
"node": "^14.20.0 || ^16.13.0 || >=18.10.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@angular/common": "15.2.7",
|
||||
"@angular/core": "15.2.7",
|
||||
"@angular/platform-browser": "15.2.7",
|
||||
"@angular/common": "15.2.8",
|
||||
"@angular/core": "15.2.8",
|
||||
"@angular/platform-browser": "15.2.8",
|
||||
"rxjs": "^6.5.3 || ^7.4.0"
|
||||
}
|
||||
},
|
||||
@@ -3262,9 +3262,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@eslint/js": {
|
||||
"version": "8.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.38.0.tgz",
|
||||
"integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==",
|
||||
"version": "8.39.0",
|
||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz",
|
||||
"integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
@@ -4119,9 +4119,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@ngtools/webpack": {
|
||||
"version": "15.2.6",
|
||||
"resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-15.2.6.tgz",
|
||||
"integrity": "sha512-I+kekKItfsCLdX+ZjjmsWqd0AyoYGTQPjlbQAiPtmdH73/rfPOF4Q/3AU4tzTdn0n0GXqZWv6VOs91w99ydi0A==",
|
||||
"version": "15.2.7",
|
||||
"resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-15.2.7.tgz",
|
||||
"integrity": "sha512-iUCSR03PzGSpwwZ5soioTIWsTPBayzkZfhKMkfz1RqtkbcxC4I07NRoQ1djofhsYyW2I1n7XS8w3K7NILtN3gQ==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^14.20.0 || ^16.13.0 || >=18.10.0",
|
||||
@@ -4332,13 +4332,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@schematics/angular": {
|
||||
"version": "15.2.6",
|
||||
"resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-15.2.6.tgz",
|
||||
"integrity": "sha512-OcBUvVAxZEMBX+fi0ytybeAdmStra+GwtlvipS70yOxcAgJ84ZrnZGN7a072cCVQcq7AgqUfssnyqCx1wu+yCg==",
|
||||
"version": "15.2.7",
|
||||
"resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-15.2.7.tgz",
|
||||
"integrity": "sha512-5fC6Es6HWpvmCnpPwTxHQq6KQuxtPaheFgoElHJM6uBgJDTr993MIw/3FsZvqLkO9hv/yWbr4gilqjEoesJSWg==",
|
||||
"devOptional": true,
|
||||
"dependencies": {
|
||||
"@angular-devkit/core": "15.2.6",
|
||||
"@angular-devkit/schematics": "15.2.6",
|
||||
"@angular-devkit/core": "15.2.7",
|
||||
"@angular-devkit/schematics": "15.2.7",
|
||||
"jsonc-parser": "3.2.0"
|
||||
},
|
||||
"engines": {
|
||||
@@ -4495,9 +4495,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@types/connect-history-api-fallback": {
|
||||
"version": "1.3.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz",
|
||||
"integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==",
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz",
|
||||
"integrity": "sha512-4x5FkPpLipqwthjPsF7ZRbOv3uoLUFkTA9G9v583qi4pACvq0uTELrB8OLUzPWUI4IJIyvM85vzkV1nyiI2Lig==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/express-serve-static-core": "*",
|
||||
@@ -4543,14 +4543,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@types/express-serve-static-core": {
|
||||
"version": "4.17.33",
|
||||
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz",
|
||||
"integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==",
|
||||
"version": "4.17.34",
|
||||
"resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz",
|
||||
"integrity": "sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/node": "*",
|
||||
"@types/qs": "*",
|
||||
"@types/range-parser": "*"
|
||||
"@types/range-parser": "*",
|
||||
"@types/send": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/graceful-fs": {
|
||||
@@ -4563,9 +4564,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@types/http-proxy": {
|
||||
"version": "1.17.10",
|
||||
"resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.10.tgz",
|
||||
"integrity": "sha512-Qs5aULi+zV1bwKAg5z1PWnDXWmsn+LxIvUGv6E2+OOMYhclZMO+OXd9pYVf2gLykf2I7IV2u7oTHwChPNsvJ7g==",
|
||||
"version": "1.17.11",
|
||||
"resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.11.tgz",
|
||||
"integrity": "sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/node": "*"
|
||||
@@ -4891,15 +4892,15 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/mime": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz",
|
||||
"integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==",
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz",
|
||||
"integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "18.15.11",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz",
|
||||
"integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==",
|
||||
"version": "18.16.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz",
|
||||
"integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==",
|
||||
"devOptional": true
|
||||
},
|
||||
"node_modules/@types/parse-json": {
|
||||
@@ -4944,6 +4945,16 @@
|
||||
"integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/send": {
|
||||
"version": "0.17.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz",
|
||||
"integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@types/mime": "^1",
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/serve-index": {
|
||||
"version": "1.9.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz",
|
||||
@@ -5030,15 +5041,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/eslint-plugin": {
|
||||
"version": "5.58.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.58.0.tgz",
|
||||
"integrity": "sha512-vxHvLhH0qgBd3/tW6/VccptSfc8FxPQIkmNTVLWcCOVqSBvqpnKkBTYrhcGlXfSnd78azwe+PsjYFj0X34/njA==",
|
||||
"version": "5.59.2",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.2.tgz",
|
||||
"integrity": "sha512-yVrXupeHjRxLDcPKL10sGQ/QlVrA8J5IYOEWVqk0lJaSZP7X5DfnP7Ns3cc74/blmbipQ1htFNVGsHX6wsYm0A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@eslint-community/regexpp": "^4.4.0",
|
||||
"@typescript-eslint/scope-manager": "5.58.0",
|
||||
"@typescript-eslint/type-utils": "5.58.0",
|
||||
"@typescript-eslint/utils": "5.58.0",
|
||||
"@typescript-eslint/scope-manager": "5.59.2",
|
||||
"@typescript-eslint/type-utils": "5.59.2",
|
||||
"@typescript-eslint/utils": "5.59.2",
|
||||
"debug": "^4.3.4",
|
||||
"grapheme-splitter": "^1.0.4",
|
||||
"ignore": "^5.2.0",
|
||||
@@ -5064,13 +5075,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": {
|
||||
"version": "5.58.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.58.0.tgz",
|
||||
"integrity": "sha512-FF5vP/SKAFJ+LmR9PENql7fQVVgGDOS+dq3j+cKl9iW/9VuZC/8CFmzIP0DLKXfWKpRHawJiG70rVH+xZZbp8w==",
|
||||
"version": "5.59.2",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.2.tgz",
|
||||
"integrity": "sha512-b1LS2phBOsEy/T381bxkkywfQXkV1dWda/z0PhnIy3bC5+rQWQDS7fk9CSpcXBccPY27Z6vBEuaPBCKCgYezyQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/typescript-estree": "5.58.0",
|
||||
"@typescript-eslint/utils": "5.58.0",
|
||||
"@typescript-eslint/typescript-estree": "5.59.2",
|
||||
"@typescript-eslint/utils": "5.59.2",
|
||||
"debug": "^4.3.4",
|
||||
"tsutils": "^3.21.0"
|
||||
},
|
||||
@@ -5091,17 +5102,17 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": {
|
||||
"version": "5.58.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.58.0.tgz",
|
||||
"integrity": "sha512-gAmLOTFXMXOC+zP1fsqm3VceKSBQJNzV385Ok3+yzlavNHZoedajjS4UyS21gabJYcobuigQPs/z71A9MdJFqQ==",
|
||||
"version": "5.59.2",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.2.tgz",
|
||||
"integrity": "sha512-kSuF6/77TZzyGPhGO4uVp+f0SBoYxCDf+lW3GKhtKru/L8k/Hd7NFQxyWUeY7Z/KGB2C6Fe3yf2vVi4V9TsCSQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@eslint-community/eslint-utils": "^4.2.0",
|
||||
"@types/json-schema": "^7.0.9",
|
||||
"@types/semver": "^7.3.12",
|
||||
"@typescript-eslint/scope-manager": "5.58.0",
|
||||
"@typescript-eslint/types": "5.58.0",
|
||||
"@typescript-eslint/typescript-estree": "5.58.0",
|
||||
"@typescript-eslint/scope-manager": "5.59.2",
|
||||
"@typescript-eslint/types": "5.59.2",
|
||||
"@typescript-eslint/typescript-estree": "5.59.2",
|
||||
"eslint-scope": "^5.1.1",
|
||||
"semver": "^7.3.7"
|
||||
},
|
||||
@@ -5139,14 +5150,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/parser": {
|
||||
"version": "5.58.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.58.0.tgz",
|
||||
"integrity": "sha512-ixaM3gRtlfrKzP8N6lRhBbjTow1t6ztfBvQNGuRM8qH1bjFFXIJ35XY+FC0RRBKn3C6cT+7VW1y8tNm7DwPHDQ==",
|
||||
"version": "5.59.2",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.2.tgz",
|
||||
"integrity": "sha512-uq0sKyw6ao1iFOZZGk9F8Nro/8+gfB5ezl1cA06SrqbgJAt0SRoFhb9pXaHvkrxUpZaoLxt8KlovHNk8Gp6/HQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/scope-manager": "5.58.0",
|
||||
"@typescript-eslint/types": "5.58.0",
|
||||
"@typescript-eslint/typescript-estree": "5.58.0",
|
||||
"@typescript-eslint/scope-manager": "5.59.2",
|
||||
"@typescript-eslint/types": "5.59.2",
|
||||
"@typescript-eslint/typescript-estree": "5.59.2",
|
||||
"debug": "^4.3.4"
|
||||
},
|
||||
"engines": {
|
||||
@@ -5166,13 +5177,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/scope-manager": {
|
||||
"version": "5.58.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.58.0.tgz",
|
||||
"integrity": "sha512-b+w8ypN5CFvrXWQb9Ow9T4/6LC2MikNf1viLkYTiTbkQl46CnR69w7lajz1icW0TBsYmlpg+mRzFJ4LEJ8X9NA==",
|
||||
"version": "5.59.2",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.2.tgz",
|
||||
"integrity": "sha512-dB1v7ROySwQWKqQ8rEWcdbTsFjh2G0vn8KUyvTXdPoyzSL6lLGkiXEV5CvpJsEe9xIdKV+8Zqb7wif2issoOFA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "5.58.0",
|
||||
"@typescript-eslint/visitor-keys": "5.58.0"
|
||||
"@typescript-eslint/types": "5.59.2",
|
||||
"@typescript-eslint/visitor-keys": "5.59.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
@@ -5267,9 +5278,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/types": {
|
||||
"version": "5.58.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.58.0.tgz",
|
||||
"integrity": "sha512-JYV4eITHPzVQMnHZcYJXl2ZloC7thuUHrcUmxtzvItyKPvQ50kb9QXBkgNAt90OYMqwaodQh2kHutWZl1fc+1g==",
|
||||
"version": "5.59.2",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.2.tgz",
|
||||
"integrity": "sha512-LbJ/HqoVs2XTGq5shkiKaNTuVv5tTejdHgfdjqRUGdYhjW1crm/M7og2jhVskMt8/4wS3T1+PfFvL1K3wqYj4w==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
@@ -5280,13 +5291,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/typescript-estree": {
|
||||
"version": "5.58.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.58.0.tgz",
|
||||
"integrity": "sha512-cRACvGTodA+UxnYM2uwA2KCwRL7VAzo45syNysqlMyNyjw0Z35Icc9ihPJZjIYuA5bXJYiJ2YGUB59BqlOZT1Q==",
|
||||
"version": "5.59.2",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.2.tgz",
|
||||
"integrity": "sha512-+j4SmbwVmZsQ9jEyBMgpuBD0rKwi9RxRpjX71Brr73RsYnEr3Lt5QZ624Bxphp8HUkSKfqGnPJp1kA5nl0Sh7Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "5.58.0",
|
||||
"@typescript-eslint/visitor-keys": "5.58.0",
|
||||
"@typescript-eslint/types": "5.59.2",
|
||||
"@typescript-eslint/visitor-keys": "5.59.2",
|
||||
"debug": "^4.3.4",
|
||||
"globby": "^11.1.0",
|
||||
"is-glob": "^4.0.3",
|
||||
@@ -5429,12 +5440,12 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@typescript-eslint/visitor-keys": {
|
||||
"version": "5.58.0",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.58.0.tgz",
|
||||
"integrity": "sha512-/fBraTlPj0jwdyTwLyrRTxv/3lnU2H96pNTVM6z3esTWLtA5MZ9ghSMJ7Rb+TtUAdtEw9EyJzJ0EydIMKxQ9gA==",
|
||||
"version": "5.59.2",
|
||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.2.tgz",
|
||||
"integrity": "sha512-EEpsO8m3RASrKAHI9jpavNv9NlEUebV4qmF1OWxSTtKSFBpC1NCmWazDQHFivRf0O1DV11BA645yrLEVQ0/Lig==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@typescript-eslint/types": "5.58.0",
|
||||
"@typescript-eslint/types": "5.59.2",
|
||||
"eslint-visitor-keys": "^3.3.0"
|
||||
},
|
||||
"engines": {
|
||||
@@ -6988,9 +6999,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/commander": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
|
||||
"integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
|
||||
"version": "6.2.1",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
|
||||
"integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
|
||||
"optional": true,
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
@@ -7563,9 +7574,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/cypress": {
|
||||
"version": "12.9.0",
|
||||
"resolved": "https://registry.npmjs.org/cypress/-/cypress-12.9.0.tgz",
|
||||
"integrity": "sha512-Ofe09LbHKgSqX89Iy1xen2WvpgbvNxDzsWx3mgU1mfILouELeXYGwIib3ItCwoRrRifoQwcBFmY54Vs0zw7QCg==",
|
||||
"version": "12.11.0",
|
||||
"resolved": "https://registry.npmjs.org/cypress/-/cypress-12.11.0.tgz",
|
||||
"integrity": "sha512-TJE+CCWI26Hwr5Msb9GpQhFLubdYooW0fmlPwTsfiyxmngqc7+SZGLPeIkj2dTSSZSEtpQVzOzvcnzH0o8G7Vw==",
|
||||
"hasInstallScript": true,
|
||||
"optional": true,
|
||||
"dependencies": {
|
||||
@@ -7583,7 +7594,7 @@
|
||||
"check-more-types": "^2.24.0",
|
||||
"cli-cursor": "^3.1.0",
|
||||
"cli-table3": "~0.6.1",
|
||||
"commander": "^5.1.0",
|
||||
"commander": "^6.2.1",
|
||||
"common-tags": "^1.8.0",
|
||||
"dayjs": "^1.10.4",
|
||||
"debug": "^4.3.4",
|
||||
@@ -7601,7 +7612,7 @@
|
||||
"listr2": "^3.8.3",
|
||||
"lodash": "^4.17.21",
|
||||
"log-symbols": "^4.0.0",
|
||||
"minimist": "^1.2.6",
|
||||
"minimist": "^1.2.8",
|
||||
"ospath": "^1.2.2",
|
||||
"pretty-bytes": "^5.6.0",
|
||||
"proxy-from-env": "1.0.0",
|
||||
@@ -8013,9 +8024,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/dns-packet": {
|
||||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.5.0.tgz",
|
||||
"integrity": "sha512-USawdAUzRkV6xrqTjiAEp6M9YagZEzWcSUaZTcIFAiyQWW1SoI6KyId8y2+/71wbgHKQAKd+iupLv4YvEwYWvA==",
|
||||
"version": "5.6.0",
|
||||
"resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.0.tgz",
|
||||
"integrity": "sha512-rza3UH1LwdHh9qyPXp8lkwpjSNk/AMD3dPytUoRoqnypDUhY0xvbdmVhWOfxO68frEfV9BU8V12Ez7ZsHGZpCQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@leichtgewicht/ip-codec": "^2.0.1"
|
||||
@@ -8447,15 +8458,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint": {
|
||||
"version": "8.38.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz",
|
||||
"integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==",
|
||||
"version": "8.39.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz",
|
||||
"integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@eslint-community/eslint-utils": "^4.2.0",
|
||||
"@eslint-community/regexpp": "^4.4.0",
|
||||
"@eslint/eslintrc": "^2.0.2",
|
||||
"@eslint/js": "8.38.0",
|
||||
"@eslint/js": "8.39.0",
|
||||
"@humanwhocodes/config-array": "^0.11.8",
|
||||
"@humanwhocodes/module-importer": "^1.0.1",
|
||||
"@nodelib/fs.walk": "^1.2.8",
|
||||
@@ -8465,7 +8476,7 @@
|
||||
"debug": "^4.3.2",
|
||||
"doctrine": "^3.0.0",
|
||||
"escape-string-regexp": "^4.0.0",
|
||||
"eslint-scope": "^7.1.1",
|
||||
"eslint-scope": "^7.2.0",
|
||||
"eslint-visitor-keys": "^3.4.0",
|
||||
"espree": "^9.5.1",
|
||||
"esquery": "^1.4.2",
|
||||
@@ -8504,9 +8515,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-scope": {
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz",
|
||||
"integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==",
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz",
|
||||
"integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"esrecurse": "^4.3.0",
|
||||
@@ -8514,6 +8525,9 @@
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://opencollective.com/eslint"
|
||||
}
|
||||
},
|
||||
"node_modules/eslint-utils": {
|
||||
@@ -14071,9 +14085,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/minimist": {
|
||||
"version": "1.2.7",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
|
||||
"integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
|
||||
"version": "1.2.8",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
|
||||
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
|
||||
"devOptional": true,
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
@@ -16249,9 +16263,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rxjs": {
|
||||
"version": "7.8.0",
|
||||
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz",
|
||||
"integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==",
|
||||
"version": "7.8.1",
|
||||
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz",
|
||||
"integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
|
||||
@@ -13,14 +13,14 @@
|
||||
},
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"@angular/common": "~15.2.7",
|
||||
"@angular/compiler": "~15.2.7",
|
||||
"@angular/core": "~15.2.7",
|
||||
"@angular/forms": "~15.2.7",
|
||||
"@angular/localize": "~15.2.7",
|
||||
"@angular/platform-browser": "~15.2.7",
|
||||
"@angular/platform-browser-dynamic": "~15.2.7",
|
||||
"@angular/router": "~15.2.7",
|
||||
"@angular/common": "~15.2.8",
|
||||
"@angular/compiler": "~15.2.8",
|
||||
"@angular/core": "~15.2.8",
|
||||
"@angular/forms": "~15.2.8",
|
||||
"@angular/localize": "~15.2.8",
|
||||
"@angular/platform-browser": "~15.2.8",
|
||||
"@angular/platform-browser-dynamic": "~15.2.8",
|
||||
"@angular/router": "~15.2.8",
|
||||
"@ng-bootstrap/ng-bootstrap": "^14.1.0",
|
||||
"@ng-select/ng-select": "^10.0.4",
|
||||
"@ngneat/dirty-check-forms": "^3.0.3",
|
||||
@@ -33,7 +33,7 @@
|
||||
"ngx-cookie-service": "^15.0.0",
|
||||
"ngx-file-drop": "^15.0.0",
|
||||
"ngx-ui-tour-ng-bootstrap": "^12.6.0",
|
||||
"rxjs": "^7.8.0",
|
||||
"rxjs": "^7.8.1",
|
||||
"tslib": "^2.4.1",
|
||||
"uuid": "^9.0.0",
|
||||
"zone.js": "^0.13.0"
|
||||
@@ -46,14 +46,14 @@
|
||||
"@angular-eslint/eslint-plugin-template": "15.2.1",
|
||||
"@angular-eslint/schematics": "15.2.1",
|
||||
"@angular-eslint/template-parser": "15.2.1",
|
||||
"@angular/cli": "~15.2.6",
|
||||
"@angular/compiler-cli": "~15.2.7",
|
||||
"@angular/cli": "~15.2.7",
|
||||
"@angular/compiler-cli": "~15.2.8",
|
||||
"@types/jest": "^29.5.0",
|
||||
"@types/node": "^18.15.11",
|
||||
"@typescript-eslint/eslint-plugin": "^5.58.0",
|
||||
"@typescript-eslint/parser": "^5.58.0",
|
||||
"@types/node": "^18.16.3",
|
||||
"@typescript-eslint/eslint-plugin": "^5.59.2",
|
||||
"@typescript-eslint/parser": "^5.59.2",
|
||||
"concurrently": "^8.0.1",
|
||||
"eslint": "^8.38.0",
|
||||
"eslint": "^8.39.0",
|
||||
"jest": "28.1.3",
|
||||
"jest-environment-jsdom": "^29.5.0",
|
||||
"jest-preset-angular": "^12.2.6",
|
||||
@@ -63,6 +63,6 @@
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@cypress/schematic": "^2.1.1",
|
||||
"cypress": "^12.9.0"
|
||||
"cypress": "^12.11.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
<use xlink:href="assets/bootstrap-icons.svg#gear"/>
|
||||
</svg><ng-container i18n>Settings</ng-container>
|
||||
</a>
|
||||
<a ngbDropdownItem class="nav-link" href="accounts/logout/">
|
||||
<a ngbDropdownItem class="nav-link" href="accounts/logout/" (click)="onLogout()">
|
||||
<svg class="sidebaricon me-2" fill="currentColor">
|
||||
<use xlink:href="assets/bootstrap-icons.svg#door-open"/>
|
||||
</svg><ng-container i18n>Logout</ng-container>
|
||||
|
||||
@@ -243,4 +243,8 @@ export class AppFrameComponent
|
||||
this.checkForUpdates()
|
||||
}
|
||||
}
|
||||
|
||||
onLogout() {
|
||||
this.openDocumentsService.closeAll()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div class="btn-group w-100" ngbDropdown role="group" (openChange)="dropdownOpenChange($event)" #dropdown="ngbDropdown">
|
||||
<div class="btn-group w-100" ngbDropdown role="group" (openChange)="dropdownOpenChange($event)" #dropdown="ngbDropdown" (keydown)="listKeyDown($event)">
|
||||
<button class="btn btn-sm" id="dropdown_{{name}}" ngbDropdownToggle [ngClass]="!editing && selectionModel.selectionSize() > 0 ? 'btn-primary' : 'btn-outline-primary'" [disabled]="disabled">
|
||||
<svg class="toolbaricon" fill="currentColor">
|
||||
<use attr.xlink:href="assets/bootstrap-icons.svg#{{icon}}" />
|
||||
@@ -31,9 +31,11 @@
|
||||
<input class="form-control" type="text" [(ngModel)]="filterText" [placeholder]="filterPlaceholder" (keyup.enter)="listFilterEnter()" #listFilterTextInput>
|
||||
</div>
|
||||
</div>
|
||||
<div *ngIf="selectionModel.items" class="items">
|
||||
<ng-container *ngFor="let item of selectionModel.itemsSorted | filter: filterText">
|
||||
<app-toggleable-dropdown-button *ngIf="allowSelectNone || item.id" [item]="item" [state]="selectionModel.get(item.id)" [count]="getUpdatedDocumentCount(item.id)" (toggle)="selectionModel.toggle(item.id)" (exclude)="excludeClicked(item.id)" [disabled]="disabled"></app-toggleable-dropdown-button>
|
||||
<div *ngIf="selectionModel.items" class="items" #buttonItems>
|
||||
<ng-container *ngFor="let item of selectionModel.itemsSorted | filter: filterText; let i = index">
|
||||
<app-toggleable-dropdown-button
|
||||
*ngIf="allowSelectNone || item.id" [item]="item" [state]="selectionModel.get(item.id)" [count]="getUpdatedDocumentCount(item.id)" (toggle)="selectionModel.toggle(item.id)" (exclude)="excludeClicked(item.id)" (click)="setButtonItemIndex(i)" [disabled]="disabled">
|
||||
</app-toggleable-dropdown-button>
|
||||
</ng-container>
|
||||
</div>
|
||||
<button *ngIf="editing" class="list-group-item list-group-item-action bg-light" (click)="applyClicked()" [disabled]="!modelIsDirty || disabled">
|
||||
|
||||
@@ -324,6 +324,7 @@ export class FilterableDropdownSelectionModel {
|
||||
export class FilterableDropdownComponent {
|
||||
@ViewChild('listFilterTextInput') listFilterTextInput: ElementRef
|
||||
@ViewChild('dropdown') dropdown: NgbDropdown
|
||||
@ViewChild('buttonItems') buttonItems: ElementRef
|
||||
|
||||
filterText: string
|
||||
|
||||
@@ -416,14 +417,10 @@ export class FilterableDropdownComponent {
|
||||
return this.title ? this.title.replace(/\s/g, '_').toLowerCase() : null
|
||||
}
|
||||
|
||||
getUpdatedDocumentCount(id: number) {
|
||||
if (this.documentCounts) {
|
||||
return this.documentCounts.find((c) => c.id === id)?.document_count
|
||||
}
|
||||
}
|
||||
|
||||
modelIsDirty: boolean = false
|
||||
|
||||
private keyboardIndex: number
|
||||
|
||||
constructor(private filterPipe: FilterPipe) {
|
||||
this.selectionModelChange.subscribe((updatedModel) => {
|
||||
this.modelIsDirty = updatedModel.isDirty()
|
||||
@@ -461,11 +458,13 @@ export class FilterableDropdownComponent {
|
||||
let filtered = this.filterPipe.transform(this.items, this.filterText)
|
||||
if (filtered.length == 1) {
|
||||
this.selectionModel.toggle(filtered[0].id)
|
||||
if (this.editing) {
|
||||
this.applyClicked()
|
||||
} else {
|
||||
this.dropdown.close()
|
||||
}
|
||||
setTimeout(() => {
|
||||
if (this.editing) {
|
||||
this.applyClicked()
|
||||
} else {
|
||||
this.dropdown.close()
|
||||
}
|
||||
}, 200)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -481,4 +480,76 @@ export class FilterableDropdownComponent {
|
||||
this.selectionModel.reset(true)
|
||||
this.selectionModelChange.emit(this.selectionModel)
|
||||
}
|
||||
|
||||
getUpdatedDocumentCount(id: number) {
|
||||
if (this.documentCounts) {
|
||||
return this.documentCounts.find((c) => c.id === id)?.document_count
|
||||
}
|
||||
}
|
||||
|
||||
listKeyDown(event: KeyboardEvent) {
|
||||
switch (event.key) {
|
||||
case 'ArrowDown':
|
||||
if (event.target instanceof HTMLInputElement) {
|
||||
if (
|
||||
!this.filterText ||
|
||||
event.target.selectionStart === this.filterText.length
|
||||
) {
|
||||
this.keyboardIndex = -1
|
||||
this.focusNextButtonItem()
|
||||
event.preventDefault()
|
||||
}
|
||||
} else if (event.target instanceof HTMLButtonElement) {
|
||||
this.focusNextButtonItem()
|
||||
event.preventDefault()
|
||||
}
|
||||
break
|
||||
case 'ArrowUp':
|
||||
if (event.target instanceof HTMLButtonElement) {
|
||||
if (this.keyboardIndex === 0) {
|
||||
this.listFilterTextInput.nativeElement.focus()
|
||||
} else {
|
||||
this.focusPreviousButtonItem()
|
||||
}
|
||||
event.preventDefault()
|
||||
}
|
||||
break
|
||||
case 'Tab':
|
||||
// just track the index in case user uses arrows
|
||||
if (event.target instanceof HTMLInputElement) {
|
||||
this.keyboardIndex = 0
|
||||
} else if (event.target instanceof HTMLButtonElement) {
|
||||
if (event.shiftKey) {
|
||||
if (this.keyboardIndex > 0) {
|
||||
this.focusPreviousButtonItem(false)
|
||||
}
|
||||
} else {
|
||||
this.focusNextButtonItem(false)
|
||||
}
|
||||
}
|
||||
default:
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
focusNextButtonItem(setFocus: boolean = true) {
|
||||
this.keyboardIndex = Math.min(this.items.length - 1, this.keyboardIndex + 1)
|
||||
if (setFocus) this.setButtonItemFocus()
|
||||
}
|
||||
|
||||
focusPreviousButtonItem(setFocus: boolean = true) {
|
||||
this.keyboardIndex = Math.max(0, this.keyboardIndex - 1)
|
||||
if (setFocus) this.setButtonItemFocus()
|
||||
}
|
||||
|
||||
setButtonItemFocus() {
|
||||
this.buttonItems.nativeElement.children[
|
||||
this.keyboardIndex
|
||||
]?.children[0].focus()
|
||||
}
|
||||
|
||||
setButtonItemIndex(index: number) {
|
||||
// just track the index in case user uses arrows
|
||||
this.keyboardIndex = index
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,5 +20,5 @@
|
||||
<app-tag *ngIf="isTag; else displayName" [tag]="item" [clickable]="false"></app-tag>
|
||||
<ng-template #displayName><small>{{item.name}}</small></ng-template>
|
||||
</div>
|
||||
<div class="badge badge-light rounded-pill ms-auto me-1">{{count ?? item.document_count}}</div>
|
||||
<div class="badge bg-light text-dark rounded-pill ms-auto me-1">{{count ?? item.document_count}}</div>
|
||||
</button>
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
<a ngbNavLink i18n>Metadata</a>
|
||||
<ng-template ngbNavContent>
|
||||
|
||||
<table class="table table-borderless">
|
||||
<table class="table table-borderless" *ngIf="document">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td i18n>Date modified</td>
|
||||
|
||||
@@ -236,10 +236,21 @@ export class DocumentDetailComponent
|
||||
true
|
||||
)
|
||||
this.suggestions = null
|
||||
if (this.openDocumentService.getOpenDocument(this.documentId)) {
|
||||
this.updateComponent(
|
||||
this.openDocumentService.getOpenDocument(this.documentId)
|
||||
)
|
||||
const openDocument = this.openDocumentService.getOpenDocument(
|
||||
this.documentId
|
||||
)
|
||||
if (openDocument) {
|
||||
if (this.documentForm.dirty) {
|
||||
Object.assign(openDocument, this.documentForm.value)
|
||||
openDocument['owner'] =
|
||||
this.documentForm.get('permissions_form').value['owner']
|
||||
openDocument['permissions'] =
|
||||
this.documentForm.get('permissions_form').value[
|
||||
'set_permissions'
|
||||
]
|
||||
delete openDocument['permissions_form']
|
||||
}
|
||||
this.updateComponent(openDocument)
|
||||
} else {
|
||||
this.openDocumentService.openDocument(doc)
|
||||
this.updateComponent(doc)
|
||||
@@ -317,6 +328,10 @@ export class DocumentDetailComponent
|
||||
if (navIDKey) {
|
||||
this.activeNavID = DocumentDetailNavIDs[navIDKey]
|
||||
}
|
||||
} else if (paramMap.get('id')) {
|
||||
this.router.navigate(['documents', +paramMap.get('id'), 'details'], {
|
||||
replaceUrl: true,
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@ export class DocumentNotesComponent extends ComponentWithPermissions {
|
||||
|
||||
displayName(note: PaperlessDocumentNote): string {
|
||||
if (!note.user) return ''
|
||||
const user = this.users.find((u) => u.id === note.user)
|
||||
const user = this.users?.find((u) => u.id === note.user)
|
||||
if (!user) return ''
|
||||
const nameComponents = []
|
||||
if (user.first_name) nameComponents.unshift(user.first_name)
|
||||
|
||||
@@ -5,7 +5,7 @@ export const environment = {
|
||||
apiBaseUrl: document.baseURI + 'api/',
|
||||
apiVersion: '2',
|
||||
appTitle: 'Paperless-ngx',
|
||||
version: '1.14.2',
|
||||
version: '1.14.4',
|
||||
webSocketHost: window.location.host,
|
||||
webSocketProtocol: window.location.protocol == 'https:' ? 'wss:' : 'ws:',
|
||||
webSocketBaseUrl: base_url.pathname + 'ws/',
|
||||
|
||||
@@ -5671,7 +5671,7 @@
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">177</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Catalan</target>
|
||||
<target state="translated">اللغة الكتالونية</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="2719780722934172508" datatype="html">
|
||||
<source>Czech</source>
|
||||
@@ -5719,7 +5719,7 @@
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">213</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Finnish</target>
|
||||
<target state="translated">الفنلندية</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7633754075223722162" datatype="html">
|
||||
<source>French</source>
|
||||
|
||||
@@ -4570,7 +4570,7 @@
|
||||
<context context-type="sourcefile">src/app/components/manage/settings/settings.component.html</context>
|
||||
<context context-type="linenumber">135</context>
|
||||
</context-group>
|
||||
<target state="translated">Comprova actualització</target>
|
||||
<target state="translated">Comprovant actualització</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7578076359386888824" datatype="html">
|
||||
<source> Update checking works by pinging the public <x id="START_LINK" ctype="x-a" equiv-text="<a href="https://api.github.com/repos/paperless-ngx/paperless-ngx/releases/latest" target="_blank" rel="noopener noreferrer">"/>Github API<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for the latest release to determine whether a new version is available.<x id="LINE_BREAK" ctype="lb" equiv-text="<br/>"/> Actual updating of the app must still be performed manually. </source>
|
||||
@@ -4578,7 +4578,7 @@
|
||||
<context context-type="sourcefile">src/app/components/manage/settings/settings.component.html</context>
|
||||
<context context-type="linenumber">140,142</context>
|
||||
</context-group>
|
||||
<target state="translated"> Comprovació d'actualització funciona fent ping a <x id="START_LINK" ctype="x-a" equiv-text="<a href="https://api.github.com/repos/paperless-ngx/paperless-ngx/releases/latest" target="_blank" rel="noopener noreferrer">"/>Github API<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> per a la darrera versió per determinar si hi ha una versió nova disponible<x id="LINE_BREAK" ctype="lb" equiv-text="<br/>"/> Aactualització real de l'aplicació s'ha de fer manualment. </target>
|
||||
<target state="translated"> Comprovació d'actualització funciona fent ping a <x id="START_LINK" ctype="x-a" equiv-text="<a href="https://api.github.com/repos/paperless-ngx/paperless-ngx/releases/latest" target="_blank" rel="noopener noreferrer">"/>Github API<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> per a la darrera versió per determinar si hi ha una versió nova disponible<x id="LINE_BREAK" ctype="lb" equiv-text="<br/>"/> l'Actualització real de l'aplicació s'ha de fer manualment. </target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5489945693955857309" datatype="html">
|
||||
<source><x id="START_EMPHASISED_TEXT" ctype="x-em" equiv-text="No track"/>No tracking data is collected by the app in any way.<x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="</em>"/></source>
|
||||
@@ -5719,7 +5719,7 @@
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">213</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Finnish</target>
|
||||
<target state="translated">Finès</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7633754075223722162" datatype="html">
|
||||
<source>French</source>
|
||||
|
||||
@@ -3402,7 +3402,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.ts</context>
|
||||
<context context-type="linenumber">316,320</context>
|
||||
</context-group>
|
||||
<target state="translated">Diese Aktion wird die Tags <x id="PH" equiv-text="this._localizeList( changedTags.itemsToAdd )"/> hinzufügen und die Tags <x id="PH_1" equiv-text="this._localizeList( changedTags.itemsToRemove )"/> ertfernen von <x id="PH_2" equiv-text="this.list.selected.size"/> ausgewählten Dokument(en).</target>
|
||||
<target state="translated">Diese Aktion wird die Tags <x id="PH" equiv-text="this._localizeList( changedTags.itemsToAdd )"/> hinzufügen und die Tags <x id="PH_1" equiv-text="this._localizeList( changedTags.itemsToRemove )"/> entfernen von <x id="PH_2" equiv-text="this.list.selected.size"/> ausgewählten Dokument(en).</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="2996713129519325161" datatype="html" approved="yes">
|
||||
<source>Confirm correspondent assignment</source>
|
||||
@@ -5719,7 +5719,7 @@
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">213</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Finnish</target>
|
||||
<target state="translated">Finnisch</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7633754075223722162" datatype="html" approved="yes">
|
||||
<source>French</source>
|
||||
|
||||
@@ -404,7 +404,7 @@
|
||||
<context context-type="sourcefile">src/app/app.component.ts</context>
|
||||
<context context-type="linenumber">178</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">The filtering tools allow you to quickly find documents using various searches, dates, tags, etc.</target>
|
||||
<target state="translated">Las herramientas de filtrado le permiten encontrar rápidamente documentos usando diferentes búsquedas, fechas, etiquetas, etc.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5427326625898532358" datatype="html">
|
||||
<source>Any combination of filters can be saved as a 'view' which can then be displayed on the dashboard and / or sidebar.</source>
|
||||
@@ -412,7 +412,7 @@
|
||||
<context context-type="sourcefile">src/app/app.component.ts</context>
|
||||
<context context-type="linenumber">189</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Any combination of filters can be saved as a 'view' which can then be displayed on the dashboard and / or sidebar.</target>
|
||||
<target state="translated">Cualquier combinación de filtros puede ser guardada como una "vista" que puede ser luego mostrada en el panel de control y/o panel lateral.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="2804886236408698479" datatype="html">
|
||||
<source>Tags, correspondents, document types and storage paths can all be managed using these pages. They can also be created from the document edit view.</source>
|
||||
@@ -1257,7 +1257,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.html</context>
|
||||
<context context-type="linenumber">81</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Permissions</target>
|
||||
<target state="translated">Permisos</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7878445132438733225" datatype="html">
|
||||
<source>Create new user group</source>
|
||||
@@ -1449,7 +1449,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts</context>
|
||||
<context context-type="linenumber">88</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Successfully connected to the mail server</target>
|
||||
<target state="translated">Conectado con éxito al servidor de correo</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6533084895896956145" datatype="html">
|
||||
<source>Unable to connect to the mail server</source>
|
||||
@@ -1457,7 +1457,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts</context>
|
||||
<context context-type="linenumber">89</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Unable to connect to the mail server</target>
|
||||
<target state="translated">No se ha podido conectar con el servidor de correo</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="4086606389696938932" datatype="html">
|
||||
<source>Account</source>
|
||||
@@ -1525,7 +1525,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">16</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Rule order</target>
|
||||
<target state="translated">Orden de las reglas</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5488632521862493221" datatype="html">
|
||||
<source>Paperless will only process mails that match <x id="START_EMPHASISED_TEXT" ctype="x-em" equiv-text="<em>"/>all<x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="</em>"/> of the filters specified below.</source>
|
||||
@@ -1557,7 +1557,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">22</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Filter subject</target>
|
||||
<target state="translated">Filtrar asunto</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7314357616097563149" datatype="html">
|
||||
<source>Filter body</source>
|
||||
@@ -1573,7 +1573,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">24</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Filter attachment filename</target>
|
||||
<target state="translated">Filtrar nombre del fichero adjunto</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="4245210767172267486" datatype="html">
|
||||
<source>Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive.</source>
|
||||
@@ -1777,7 +1777,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts</context>
|
||||
<context context-type="linenumber">60</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Mark as read, don't process read mails</target>
|
||||
<target state="translated">Marcar como leído, no procesar archivos leídos</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="2378921144019636516" datatype="html">
|
||||
<source>Flag the mail, don't process flagged mails</source>
|
||||
@@ -1793,7 +1793,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts</context>
|
||||
<context context-type="linenumber">68</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Tag the mail with specified tag, don't process tagged mails</target>
|
||||
<target state="translated">Etiqueta el correo con la etiqueta especificada, no procesar correos etiquetados</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="4673329664686432878" datatype="html">
|
||||
<source>Use subject as title</source>
|
||||
@@ -2017,7 +2017,7 @@
|
||||
<context context-type="sourcefile">src/app/components/manage/settings/settings.component.html</context>
|
||||
<context context-type="linenumber">367</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Groups</target>
|
||||
<target state="translated">Grupos</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="1436831433675346331" datatype="html">
|
||||
<source>Create new user account</source>
|
||||
@@ -2025,7 +2025,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts</context>
|
||||
<context context-type="linenumber">42</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Create new user account</target>
|
||||
<target state="translated">Crear nuevo usuario</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="2887331217965896363" datatype="html">
|
||||
<source>Edit user account</source>
|
||||
@@ -2033,7 +2033,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts</context>
|
||||
<context context-type="linenumber">46</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Edit user account</target>
|
||||
<target state="translated">Editar cuenta de usuario</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="1616102757855967475" datatype="html" approved="yes">
|
||||
<source>All</source>
|
||||
|
||||
@@ -5719,7 +5719,7 @@
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">213</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Finnish</target>
|
||||
<target state="translated">Suomi</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7633754075223722162" datatype="html">
|
||||
<source>French</source>
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
|
||||
<context context-type="linenumber">13</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Increment hours</target>
|
||||
<target state="translated">Penambahan jam</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ngb.pagination.first-aria" datatype="html">
|
||||
<source>First</source>
|
||||
@@ -194,7 +194,7 @@
|
||||
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
|
||||
<context context-type="linenumber">13</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Decrement hours</target>
|
||||
<target state="translated">Pengurangan jam</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ngb.pagination.next-aria" datatype="html">
|
||||
<source>Next</source>
|
||||
@@ -210,7 +210,7 @@
|
||||
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
|
||||
<context context-type="linenumber">13</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Increment minutes</target>
|
||||
<target state="translated">Penambahan menit</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ngb.pagination.last-aria" datatype="html">
|
||||
<source>Last</source>
|
||||
@@ -226,7 +226,7 @@
|
||||
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
|
||||
<context context-type="linenumber">13</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Decrement minutes</target>
|
||||
<target state="translated">Pengurangan menit</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ngb.timepicker.SS" datatype="html">
|
||||
<source>SS</source>
|
||||
@@ -250,7 +250,7 @@
|
||||
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
|
||||
<context context-type="linenumber">13</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Increment seconds</target>
|
||||
<target state="translated">Penambahan detik</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ngb.timepicker.decrement-seconds" datatype="html">
|
||||
<source>Decrement seconds</source>
|
||||
@@ -258,7 +258,7 @@
|
||||
<context context-type="sourcefile">node_modules/src/ngb-config.ts</context>
|
||||
<context context-type="linenumber">13</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Decrement seconds</target>
|
||||
<target state="translated">Pengurangan detik</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="ngb.timepicker.PM" datatype="html">
|
||||
<source>
|
||||
@@ -284,7 +284,7 @@
|
||||
<context context-type="sourcefile">src/app/app.component.html</context>
|
||||
<context context-type="linenumber">7</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Drop files to begin upload</target>
|
||||
<target state="translated">Jatuhkan file untuk mulai mengunggah</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="9103526311244275943" datatype="html">
|
||||
<source>Document added</source>
|
||||
@@ -308,7 +308,7 @@
|
||||
<context context-type="sourcefile">src/app/app.component.ts</context>
|
||||
<context context-type="linenumber">102</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Document <x id="PH" equiv-text="status.filename"/> was added to paperless.</target>
|
||||
<target state="translated">Dokumen <x id="PH" equiv-text="status.filename"/> telah ditambahkan ke paperless.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="1931214133925051574" datatype="html">
|
||||
<source>Open document</source>
|
||||
@@ -380,7 +380,7 @@
|
||||
<context context-type="sourcefile">src/app/app.component.ts</context>
|
||||
<context context-type="linenumber">145</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">The dashboard can be used to show saved views, such as an 'Inbox'. Those settings are found under Settings > Saved Views once you have created some.</target>
|
||||
<target state="translated">Dasbor dapat digunakan untuk menampilkan tampilan tersimpan, seperti sebagai 'Kotak Masuk'. Pengaturan tersebut ditemukan di bawah Pengaturan > Tampilan tersimpan setelah Anda membuatnya.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="9075755296812854717" datatype="html">
|
||||
<source>Drag-and-drop documents here to start uploading or place them in the consume folder. You can also drag-and-drop documents anywhere on all other pages of the web app. Once you do, Paperless-ngx will start training its machine learning algorithms.</source>
|
||||
@@ -460,7 +460,7 @@
|
||||
<context context-type="sourcefile">src/app/app.component.ts</context>
|
||||
<context context-type="linenumber">233</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Lastly, on behalf of every contributor to this community-supported project, thank you for using Paperless-ngx!</target>
|
||||
<target state="translated">Terakhir, atas nama setiap kontributor untuk proyek yang didukung komunitas ini, terima kasih telah menggunakan Paperless-ngx!</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5749300816154614125" datatype="html">
|
||||
<source>Initiating upload...</source>
|
||||
@@ -493,7 +493,7 @@
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">39</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Logged in as <x id="INTERPOLATION" equiv-text="{{this.settingsService.displayName}}"/></target>
|
||||
<target state="translated">Masuk sebagai <x id="INTERPOLATION" equiv-text="{{this.settingsService.displayName}}"/></target>
|
||||
</trans-unit>
|
||||
<trans-unit id="4930506384627295710" datatype="html">
|
||||
<source>Settings</source>
|
||||
@@ -517,7 +517,7 @@
|
||||
<context context-type="sourcefile">src/app/components/manage/settings/settings.component.html</context>
|
||||
<context context-type="linenumber">192</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Settings</target>
|
||||
<target state="translated">Pengaturan</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="3797778920049399855" datatype="html">
|
||||
<source>Logout</source>
|
||||
@@ -585,7 +585,7 @@
|
||||
<context context-type="sourcefile">src/app/components/manage/settings/settings.component.html</context>
|
||||
<context context-type="linenumber">189</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Saved views</target>
|
||||
<target state="translated">Tampilan disimpan</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6988090220128974198" datatype="html">
|
||||
<source>Open documents</source>
|
||||
@@ -613,7 +613,7 @@
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">127</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Manage</target>
|
||||
<target state="translated">Kelola</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7437910965833684826" datatype="html">
|
||||
<source>Correspondents</source>
|
||||
@@ -673,7 +673,7 @@
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">155</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Storage paths</target>
|
||||
<target state="translated">Lokasi penyimpanan</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="2991443309752293110" datatype="html">
|
||||
<source>File Tasks</source>
|
||||
@@ -685,7 +685,7 @@
|
||||
<context context-type="sourcefile">src/app/components/manage/tasks/tasks.component.html</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">File Tasks</target>
|
||||
<target state="translated">Tugas File</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5537285341303594392" datatype="html">
|
||||
<source>File Tasks<x id="START_TAG_SPAN_1" ctype="x-span_1" equiv-text="<span *ngIf="tasksService.failedFileTasks.length > 0">"/><x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span class="badge bg-danger ms-2">"/><x id="INTERPOLATION" equiv-text="{{tasksService.failedFileTasks.length}}"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/></source>
|
||||
@@ -693,7 +693,7 @@
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">163</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">File Tasks<x id="START_TAG_SPAN_1" ctype="x-span_1" equiv-text="<span *ngIf="tasksService.failedFileTasks.length > 0">"/><x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span class="badge bg-danger ms-2">"/><x id="INTERPOLATION" equiv-text="{{tasksService.failedFileTasks.length}}"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/></target>
|
||||
<target state="translated">Tugas File<x id="START_TAG_SPAN_1" ctype="x-span_1" equiv-text="<span *ngIf="tasksService.failedFileTasks.length > 0">"/><x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span class="badge bg-danger ms-2">"/><x id="INTERPOLATION" equiv-text="{{tasksService.failedFileTasks.length}}"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/></target>
|
||||
</trans-unit>
|
||||
<trans-unit id="4804785061014590286" datatype="html">
|
||||
<source>Logs</source>
|
||||
@@ -709,7 +709,7 @@
|
||||
<context context-type="sourcefile">src/app/components/manage/logs/logs.component.html</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Logs</target>
|
||||
<target state="translated">Log</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="314315645942131479" datatype="html">
|
||||
<source>Info</source>
|
||||
@@ -781,7 +781,7 @@
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">217</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Paperless-ngx can automatically check for updates</target>
|
||||
<target state="translated">Paperless-ngx dapat secara otomatis memeriksa pembaruan</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="894819944961861800" datatype="html">
|
||||
<source> How does this work? </source>
|
||||
@@ -809,7 +809,7 @@
|
||||
<context context-type="sourcefile">src/app/components/manage/settings/settings.component.ts</context>
|
||||
<context context-type="linenumber">593</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">An error occurred while saving settings.</target>
|
||||
<target state="translated">Terjadi kesalahan saat menyimpan setelan.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="2526035785704676448" datatype="html">
|
||||
<source>An error occurred while saving update checking settings.</source>
|
||||
@@ -817,7 +817,7 @@
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.ts</context>
|
||||
<context context-type="linenumber">222</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">An error occurred while saving update checking settings.</target>
|
||||
<target state="translated">Terjadi kesalahan saat menyimpan setelan pemeriksaan pembaruan.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8700121026680200191" datatype="html">
|
||||
<source>Clear</source>
|
||||
@@ -833,7 +833,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/date-dropdown/date-dropdown.component.html</context>
|
||||
<context context-type="linenumber">47</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Clear</target>
|
||||
<target state="translated">Bersihkan</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5000042972069710005" datatype="html">
|
||||
<source><x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span class="d-inline-block" style="padding-bottom: 1px;" >"/>Cancel<x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/></source>
|
||||
@@ -877,7 +877,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.ts</context>
|
||||
<context context-type="linenumber">440</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Confirm</target>
|
||||
<target state="translated">Konfirmasi</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6371576811194810854" datatype="html">
|
||||
<source>After</source>
|
||||
@@ -1017,7 +1017,7 @@
|
||||
<context context-type="sourcefile">src/app/components/manage/tasks/tasks.component.html</context>
|
||||
<context context-type="linenumber">40</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Name</target>
|
||||
<target state="translated">Nama</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8743659855412792665" datatype="html">
|
||||
<source>Matching algorithm</source>
|
||||
@@ -1037,7 +1037,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">13</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Matching algorithm</target>
|
||||
<target state="translated">Mencocokkan algoritma</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="2656329676292524585" datatype="html">
|
||||
<source>Matching pattern</source>
|
||||
@@ -1193,7 +1193,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.ts</context>
|
||||
<context context-type="linenumber">29</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Edit correspondent</target>
|
||||
<target state="translated">Ubah koresponden</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6672809941092516947" datatype="html">
|
||||
<source>Create new document type</source>
|
||||
@@ -1201,7 +1201,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.ts</context>
|
||||
<context context-type="linenumber">25</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Create new document type</target>
|
||||
<target state="translated">Buat jenis dokumen baru</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="36335016091244220" datatype="html">
|
||||
<source>Edit document type</source>
|
||||
@@ -1217,7 +1217,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/edit-dialog.component.ts</context>
|
||||
<context context-type="linenumber">71</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Create new item</target>
|
||||
<target state="translated">Buat barang baru</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5324147361912094446" datatype="html">
|
||||
<source>Edit item</source>
|
||||
@@ -1225,7 +1225,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/edit-dialog.component.ts</context>
|
||||
<context context-type="linenumber">75</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Edit item</target>
|
||||
<target state="translated">Sunting barang</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="1699589597032579396" datatype="html">
|
||||
<source>Could not save element: <x id="PH" equiv-text="error"/></source>
|
||||
@@ -1257,7 +1257,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.html</context>
|
||||
<context context-type="linenumber">81</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Permissions</target>
|
||||
<target state="translated">Akses</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7878445132438733225" datatype="html">
|
||||
<source>Create new user group</source>
|
||||
@@ -1265,7 +1265,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.ts</context>
|
||||
<context context-type="linenumber">24</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Create new user group</target>
|
||||
<target state="translated">Membuat grup pengguna baru</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="200893957904793797" datatype="html">
|
||||
<source>Edit user group</source>
|
||||
@@ -1273,7 +1273,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.ts</context>
|
||||
<context context-type="linenumber">28</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Edit user group</target>
|
||||
<target state="translated">Ubah grup pengguna</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="1505107477868159986" datatype="html">
|
||||
<source>IMAP Server</source>
|
||||
@@ -1281,7 +1281,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">11</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">IMAP Server</target>
|
||||
<target state="translated">Server IMAP</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6575044156016560168" datatype="html">
|
||||
<source>IMAP Port</source>
|
||||
@@ -1289,7 +1289,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">12</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">IMAP Port</target>
|
||||
<target state="translated">Port IMAP</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5418425343712813426" datatype="html">
|
||||
<source>IMAP Security</source>
|
||||
@@ -1297,7 +1297,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">13</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">IMAP Security</target>
|
||||
<target state="translated">Keamanan IMAP</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5248717555542428023" datatype="html">
|
||||
<source>Username</source>
|
||||
@@ -1313,7 +1313,7 @@
|
||||
<context context-type="sourcefile">src/app/components/manage/settings/settings.component.html</context>
|
||||
<context context-type="linenumber">344</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Username</target>
|
||||
<target state="translated">Nama pengguna</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="1431416938026210429" datatype="html">
|
||||
<source>Password</source>
|
||||
@@ -1417,7 +1417,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts</context>
|
||||
<context context-type="linenumber">14</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">SSL</target>
|
||||
<target state="translated">SSL</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="2620794666957669114" datatype="html">
|
||||
<source>STARTTLS</source>
|
||||
@@ -1425,7 +1425,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts</context>
|
||||
<context context-type="linenumber">15</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">STARTTLS</target>
|
||||
<target state="translated">STARTTLS</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8758081884575368561" datatype="html">
|
||||
<source>Create new mail account</source>
|
||||
@@ -1501,7 +1501,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">14</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Attachment type</target>
|
||||
<target state="translated">Jenis lampiran</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="559099472394646919" datatype="html">
|
||||
<source>Consumption scope</source>
|
||||
@@ -1565,7 +1565,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">23</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Filter body</target>
|
||||
<target state="translated">Saring badan</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5031687746498952417" datatype="html">
|
||||
<source>Filter attachment filename</source>
|
||||
@@ -1573,7 +1573,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">24</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Filter attachment filename</target>
|
||||
<target state="translated">Saring nama file lampiran</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="4245210767172267486" datatype="html">
|
||||
<source>Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive.</source>
|
||||
@@ -1685,7 +1685,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts</context>
|
||||
<context context-type="linenumber">45</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Process message as .eml and attachments separately</target>
|
||||
<target state="translated">Proses pesan sebagai .eml dan lampiran terpisah</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7022070615528435141" datatype="html">
|
||||
<source>Delete</source>
|
||||
@@ -1909,7 +1909,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.ts</context>
|
||||
<context context-type="linenumber">39</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Edit storage path</target>
|
||||
<target state="translated">Ubah lokasi penyimpanan</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="9011959596901584887" datatype="html">
|
||||
<source>Color</source>
|
||||
@@ -2069,7 +2069,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/filterable-dropdown/filterable-dropdown.component.html</context>
|
||||
<context context-type="linenumber">24</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Include</target>
|
||||
<target state="translated">Sertakan</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5668077948386857930" datatype="html">
|
||||
<source>Exclude</source>
|
||||
@@ -2077,7 +2077,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/filterable-dropdown/filterable-dropdown.component.html</context>
|
||||
<context context-type="linenumber">26</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Exclude</target>
|
||||
<target state="translated">Kecuali</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="4391289919356861627" datatype="html">
|
||||
<source>Apply</source>
|
||||
@@ -2093,7 +2093,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/filterable-dropdown/filterable-dropdown.component.html</context>
|
||||
<context context-type="linenumber">46</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Click again to exclude items.</target>
|
||||
<target state="translated">Klik lagi untuk mengecualikan barang.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7593728289020204896" datatype="html">
|
||||
<source>Not assigned</source>
|
||||
@@ -2110,7 +2110,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/input/date/date.component.html</context>
|
||||
<context context-type="linenumber">13</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Invalid date.</target>
|
||||
<target state="translated">Tanggal tidak valid.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="524422427194414813" datatype="html">
|
||||
<source>Suggestions:</source>
|
||||
@@ -2126,7 +2126,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/input/tags/tags.component.html</context>
|
||||
<context context-type="linenumber">43</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Suggestions:</target>
|
||||
<target state="translated">Saran:</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="594042705136125260" datatype="html">
|
||||
<source>Edit Permissions</source>
|
||||
@@ -2134,7 +2134,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/input/permissions/permissions-form/permissions-form.component.html</context>
|
||||
<context context-type="linenumber">7</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Edit Permissions</target>
|
||||
<target state="translated">Ubah akses</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6035283612400841811" datatype="html">
|
||||
<source>Owner:</source>
|
||||
@@ -2166,7 +2166,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context>
|
||||
<context context-type="linenumber">56</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">View</target>
|
||||
<target state="translated">Lihat</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="2191775412581217688" datatype="html">
|
||||
<source>Users:</source>
|
||||
@@ -2271,7 +2271,7 @@
|
||||
<context context-type="linenumber">12</context>
|
||||
</context-group>
|
||||
<note priority="1" from="description">Used for both types, correspondents, storage paths</note>
|
||||
<target state="needs-translation">Add item</target>
|
||||
<target state="translated">Tambah barang</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="3686284950598311784" datatype="html">
|
||||
<source>Private</source>
|
||||
@@ -2319,7 +2319,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/permissions-select/permissions-select.component.html</context>
|
||||
<context context-type="linenumber">5</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Type</target>
|
||||
<target state="translated">Jenis</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="3249513483374643425" datatype="html">
|
||||
<source>Add</source>
|
||||
@@ -2327,7 +2327,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/permissions-select/permissions-select.component.html</context>
|
||||
<context context-type="linenumber">7</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Add</target>
|
||||
<target state="translated">Tambah</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="1230154438678955604" datatype="html">
|
||||
<source>Change</source>
|
||||
@@ -2335,7 +2335,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/permissions-select/permissions-select.component.html</context>
|
||||
<context context-type="linenumber">8</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Change</target>
|
||||
<target state="translated">Ubah</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="187187500641108332" datatype="html">
|
||||
<source>
|
||||
@@ -2389,7 +2389,7 @@
|
||||
<context context-type="sourcefile">src/app/components/dashboard/dashboard.component.ts</context>
|
||||
<context context-type="linenumber">36</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Hello <x id="PH" equiv-text="this.settingsService.displayName"/>, welcome to Paperless-ngx</target>
|
||||
<target state="translated">Halo <x id="PH" equiv-text="this.settingsService.displayName"/>, selamat datang ke Paperless-ngx</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5334686081082652461" datatype="html">
|
||||
<source>Welcome to Paperless-ngx</source>
|
||||
@@ -2397,7 +2397,7 @@
|
||||
<context context-type="sourcefile">src/app/components/dashboard/dashboard.component.ts</context>
|
||||
<context context-type="linenumber">38</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Welcome to Paperless-ngx</target>
|
||||
<target state="translated">Selamat datang ke Paperless-ngx</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="2946624699882754313" datatype="html">
|
||||
<source>Show all</source>
|
||||
@@ -2433,7 +2433,7 @@
|
||||
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
|
||||
<context context-type="linenumber">22</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Created</target>
|
||||
<target state="translated">Dibuat</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5701618810648052610" datatype="html">
|
||||
<source>Title</source>
|
||||
@@ -2473,7 +2473,7 @@
|
||||
<context context-type="sourcefile">src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html</context>
|
||||
<context context-type="linenumber">4</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Go to inbox</target>
|
||||
<target state="translated">Pergi ke kotak masuk</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="3497361602348932709" datatype="html">
|
||||
<source>Documents in inbox</source>
|
||||
@@ -2481,7 +2481,7 @@
|
||||
<context context-type="sourcefile">src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html</context>
|
||||
<context context-type="linenumber">5</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Documents in inbox</target>
|
||||
<target state="translated">Dokumen dalam kotak masuk</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8809281703097241399" datatype="html">
|
||||
<source>Go to documents</source>
|
||||
@@ -2489,7 +2489,7 @@
|
||||
<context context-type="sourcefile">src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html</context>
|
||||
<context context-type="linenumber">8</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Go to documents</target>
|
||||
<target state="translated">Pergi ke dokumen</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="3823413855067727192" datatype="html">
|
||||
<source>Total documents</source>
|
||||
@@ -2538,7 +2538,7 @@
|
||||
<context context-type="sourcefile">src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.html</context>
|
||||
<context context-type="linenumber">13</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Drop documents here or</target>
|
||||
<target state="translated">Jatuhkan dokumen di sini atau</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8133800334834354642" datatype="html">
|
||||
<source>Browse files</source>
|
||||
@@ -2592,7 +2592,7 @@
|
||||
<context context-type="linenumber">269</context>
|
||||
</context-group>
|
||||
<note priority="1" from="description">this string is used to separate processing, failed and added on the file upload widget</note>
|
||||
<target state="needs-translation">, </target>
|
||||
<target state="translated">, </target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7915903586014997661" datatype="html">
|
||||
<source>Paperless-ngx is running!</source>
|
||||
@@ -2608,7 +2608,7 @@
|
||||
<context context-type="sourcefile">src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html</context>
|
||||
<context context-type="linenumber">4</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">You're ready to start uploading documents! Explore the various features of this web app on your own, or start a quick tour using the button below.</target>
|
||||
<target state="translated">Anda siap untuk mulai mengunggah dokumen! Jelajahi berbagai fitur aplikasi web ini, atau mulai tur singkat menggunakan tombol di bawah ini.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="4474647174688421179" datatype="html">
|
||||
<source>More detail on how to use and configure Paperless-ngx is always available in the <x id="START_LINK" ctype="x-a" equiv-text="<a href="https://docs.paperless-ngx.com" target="_blank">"/>documentation<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.</source>
|
||||
@@ -2616,7 +2616,7 @@
|
||||
<context context-type="sourcefile">src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html</context>
|
||||
<context context-type="linenumber">5</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">More detail on how to use and configure Paperless-ngx is always available in the <x id="START_LINK" ctype="x-a" equiv-text="<a href="https://docs.paperless-ngx.com" target="_blank">"/>documentation<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.</target>
|
||||
<target state="translated">Detail lebih lanjut tentang cara menggunakan dan mengonfigurasi Paperless-ngx selalu tersedia di <x id="START_LINK" ctype="x-a" equiv-text="<a href="https://docs.paperless-ngx.com" target="_blank">"/>dokumentasi<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/>.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="4294899532887357745" datatype="html">
|
||||
<source>Thanks for being a part of the Paperless-ngx community!</source>
|
||||
@@ -2624,7 +2624,7 @@
|
||||
<context context-type="sourcefile">src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.html</context>
|
||||
<context context-type="linenumber">8</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Thanks for being a part of the Paperless-ngx community!</target>
|
||||
<target state="translated">Terima kasih telah menjadi bagian dalam komunitas Paperless-ngx!</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="1415832194529539652" datatype="html">
|
||||
<source>Start the tour</source>
|
||||
@@ -2640,7 +2640,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-asn/document-asn.component.html</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Searching document with asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></target>
|
||||
<target state="translated">Mencari dokumen dengan asn <x id="INTERPOLATION" equiv-text="{{asn}}"/></target>
|
||||
</trans-unit>
|
||||
<trans-unit id="1407560924967345762" datatype="html">
|
||||
<source>Page</source>
|
||||
@@ -2660,7 +2660,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
|
||||
<context context-type="linenumber">5,6</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">of <x id="INTERPOLATION" equiv-text="{{previewNumPages}}"/></target>
|
||||
<target state="translated">dari <x id="INTERPOLATION" equiv-text="{{previewNumPages}}"/></target>
|
||||
</trans-unit>
|
||||
<trans-unit id="3099741642167775297" datatype="html">
|
||||
<source>Download</source>
|
||||
@@ -2700,7 +2700,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.html</context>
|
||||
<context context-type="linenumber">92</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Redo OCR</target>
|
||||
<target state="translated">Lakukan ulang pengenalan karakter</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="1418444397960583910" datatype="html">
|
||||
<source>More like this</source>
|
||||
@@ -2712,7 +2712,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-list/document-card-large/document-card-large.component.html</context>
|
||||
<context context-type="linenumber">44</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">More like this</target>
|
||||
<target state="translated">Lebih seperti ini</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7819314041543176992" datatype="html">
|
||||
<source>Close</source>
|
||||
@@ -2748,7 +2748,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
|
||||
<context context-type="linenumber">76</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Archive serial number</target>
|
||||
<target state="translated">Nomor serial arsip</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5114742157723900905" datatype="html">
|
||||
<source>Date created</source>
|
||||
@@ -2780,7 +2780,7 @@
|
||||
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
|
||||
<context context-type="linenumber">19</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Correspondent</target>
|
||||
<target state="translated">Koresponden</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5066119607229701477" datatype="html">
|
||||
<source>Document type</source>
|
||||
@@ -2804,7 +2804,7 @@
|
||||
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
|
||||
<context context-type="linenumber">21</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Document type</target>
|
||||
<target state="translated">Jenis dokumen</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="2091353339965748767" datatype="html">
|
||||
<source>Storage path</source>
|
||||
@@ -2824,7 +2824,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-list/filter-editor/filter-editor.component.html</context>
|
||||
<context context-type="linenumber">52</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Storage path</target>
|
||||
<target state="translated">Lokasi penyimpanan</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5607669932062416162" datatype="html">
|
||||
<source>Default</source>
|
||||
@@ -2852,7 +2852,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-detail/metadata-collapse/metadata-collapse.component.ts</context>
|
||||
<context context-type="linenumber">17</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Metadata</target>
|
||||
<target state="translated">Metadata</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="1826652001816486190" datatype="html">
|
||||
<source>Date modified</source>
|
||||
@@ -2924,7 +2924,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
|
||||
<context context-type="linenumber">138</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Archive file size</target>
|
||||
<target state="translated">Ukuran file arsip</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6992781481378431874" datatype="html">
|
||||
<source>Original document metadata</source>
|
||||
@@ -2948,7 +2948,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
|
||||
<context context-type="linenumber">151</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Preview</target>
|
||||
<target state="translated">Pratinjau</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8191371354890763172" datatype="html">
|
||||
<source>Enter Password</source>
|
||||
@@ -2960,7 +2960,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
|
||||
<context context-type="linenumber">215</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Enter Password</target>
|
||||
<target state="translated">Masukan Kata Sandi</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8460995830263484763" datatype="html">
|
||||
<source>Notes <x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span *ngIf="document?.notes.length" class="badge text-bg-secondary ms-1">"/><x id="INTERPOLATION" equiv-text="ngth}}"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</a>"/></source>
|
||||
@@ -2976,7 +2976,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
|
||||
<context context-type="linenumber">194</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Discard</target>
|
||||
<target state="translated">Batalkan</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5129524307369213584" datatype="html">
|
||||
<source>Save & next</source>
|
||||
@@ -2984,7 +2984,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context>
|
||||
<context context-type="linenumber">195</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Save & next</target>
|
||||
<target state="translated">Simpan & lanjut</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="2218903673684131427" datatype="html">
|
||||
<source>An error occurred loading content: <x id="PH" equiv-text="err.message ?? err.toString()"/></source>
|
||||
@@ -2992,7 +2992,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
|
||||
<context context-type="linenumber">226,228</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">An error occurred loading content: <x id="PH" equiv-text="err.message ?? err.toString()"/></target>
|
||||
<target state="translated">Terjadi masalah saat memuat konten: <x id="PH" equiv-text="err.message ?? err.toString()"/></target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5758784066858623886" datatype="html">
|
||||
<source>Error retrieving metadata</source>
|
||||
@@ -3000,7 +3000,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
|
||||
<context context-type="linenumber">354</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Error retrieving metadata</target>
|
||||
<target state="translated">Kesalahan saat mendapatkan metadata</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="2374084708811774419" datatype="html">
|
||||
<source>Error retrieving suggestions</source>
|
||||
@@ -3032,7 +3032,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
|
||||
<context context-type="linenumber">542</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Error saving document</target>
|
||||
<target state="translated">Kesalahan saat menyimpan dokumen</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="9021887951960049161" datatype="html">
|
||||
<source>Confirm delete</source>
|
||||
@@ -3044,7 +3044,7 @@
|
||||
<context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
|
||||
<context context-type="linenumber">210</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Confirm delete</target>
|
||||
<target state="translated">Konfirmasi hapus</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5382975254277698192" datatype="html">
|
||||
<source>Do you really want to delete document "<x id="PH" equiv-text="this.document.title"/>"?</source>
|
||||
@@ -3052,7 +3052,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
|
||||
<context context-type="linenumber">572</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Do you really want to delete document "<x id="PH" equiv-text="this.document.title"/>"?</target>
|
||||
<target state="translated">Apakah Anda yakin ingin menghapus dokumen "<x id="PH" equiv-text="this.document.title"/>"?</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6691075929777935948" datatype="html">
|
||||
<source>The files for this document will be deleted permanently. This operation cannot be undone.</source>
|
||||
@@ -3060,7 +3060,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
|
||||
<context context-type="linenumber">573</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">The files for this document will be deleted permanently. This operation cannot be undone.</target>
|
||||
<target state="translated">File untuk dokumen akan dihapus secara permanen. Operasi ini tidak dapat diurungkan.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="719892092227206532" datatype="html">
|
||||
<source>Delete document</source>
|
||||
@@ -3076,7 +3076,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
|
||||
<context context-type="linenumber">595,597</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Error deleting document: <x id="PH" equiv-text="error.error?.detail ?? error.message ?? JSON.stringify(error)"/></target>
|
||||
<target state="translated">Kesalahan saat menghapus dokumen: <x id="PH" equiv-text="error.error?.detail ?? error.message ?? JSON.stringify(error)"/></target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7362691899087997122" datatype="html">
|
||||
<source>Redo OCR confirm</source>
|
||||
@@ -3172,7 +3172,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
|
||||
<context context-type="linenumber">641,643</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Error executing operation: <x id="PH" equiv-text="JSON.stringify( error.error )"/></target>
|
||||
<target state="translated">Kesalahan menjalankan operasi: <x id="PH" equiv-text="JSON.stringify( error.error )"/></target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6857598786757174736" datatype="html">
|
||||
<source>Select:</source>
|
||||
@@ -4474,7 +4474,7 @@
|
||||
<context context-type="sourcefile">src/app/components/manage/settings/settings.component.html</context>
|
||||
<context context-type="linenumber">72</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Items per page</target>
|
||||
<target state="translated">Barang per halaman</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8028535997917730106" datatype="html">
|
||||
<source>Document editor</source>
|
||||
|
||||
@@ -1333,7 +1333,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">18</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Password is token</target>
|
||||
<target state="translated">Wachtwoord is token</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8313198211675984619" datatype="html">
|
||||
<source>Check if the password above is a token used for authentication</source>
|
||||
@@ -1341,7 +1341,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">18</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Check if the password above is a token used for authentication</target>
|
||||
<target state="translated">Controleer of het bovenstaande wachtwoord een token is dat wordt gebruikt voor authenticatie</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6124167940736826613" datatype="html">
|
||||
<source>Character Set</source>
|
||||
@@ -1401,7 +1401,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.html</context>
|
||||
<context context-type="linenumber">32</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Test</target>
|
||||
<target state="translated">Testen</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="451418349275958054" datatype="html">
|
||||
<source>No encryption</source>
|
||||
@@ -1449,7 +1449,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts</context>
|
||||
<context context-type="linenumber">88</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Successfully connected to the mail server</target>
|
||||
<target state="translated">Succesvol verbonden met de mailserver</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6533084895896956145" datatype="html">
|
||||
<source>Unable to connect to the mail server</source>
|
||||
@@ -1457,7 +1457,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts</context>
|
||||
<context context-type="linenumber">89</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Unable to connect to the mail server</target>
|
||||
<target state="translated">Kan geen verbinding maken met de mailserver</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="4086606389696938932" datatype="html">
|
||||
<source>Account</source>
|
||||
@@ -2357,7 +2357,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/permissions-select/permissions-select.component.ts</context>
|
||||
<context context-type="linenumber">62</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Inherited from group</target>
|
||||
<target state="translated">Overgenomen van groep</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="3797570084942068182" datatype="html" approved="yes">
|
||||
<source>Select</source>
|
||||
@@ -2992,7 +2992,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
|
||||
<context context-type="linenumber">226,228</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">An error occurred loading content: <x id="PH" equiv-text="err.message ?? err.toString()"/></target>
|
||||
<target state="translated">Er is een fout opgetreden bij het laden van de inhoud: <x id="PH" equiv-text="err.message ?? err.toString()"/></target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5758784066858623886" datatype="html">
|
||||
<source>Error retrieving metadata</source>
|
||||
@@ -3020,7 +3020,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
|
||||
<context context-type="linenumber">492</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Document saved successfully.</target>
|
||||
<target state="translated">Document succesvol opgeslagen.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="448882439049417053" datatype="html">
|
||||
<source>Error saving document</source>
|
||||
@@ -3076,7 +3076,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context>
|
||||
<context context-type="linenumber">595,597</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Error deleting document: <x id="PH" equiv-text="error.error?.detail ?? error.message ?? JSON.stringify(error)"/></target>
|
||||
<target state="translated">Fout bij verwijderen document: <x id="PH" equiv-text="error.error?.detail ?? error.message ?? JSON.stringify(error)"/></target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7362691899087997122" datatype="html">
|
||||
<source>Redo OCR confirm</source>
|
||||
@@ -3746,7 +3746,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
|
||||
<context context-type="linenumber">126</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Sort by ASN</target>
|
||||
<target state="translated">Sorteer op ASN</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7517688192215738656" datatype="html" approved="yes">
|
||||
<source>ASN</source>
|
||||
@@ -3770,7 +3770,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
|
||||
<context context-type="linenumber">133</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Sort by correspondent</target>
|
||||
<target state="translated">Sorteer op correspondent</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="2066713941761361709" datatype="html">
|
||||
<source>Sort by title</source>
|
||||
@@ -3778,7 +3778,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
|
||||
<context context-type="linenumber">140</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Sort by title</target>
|
||||
<target state="translated">Sorteer op titel</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="3557446856808034218" datatype="html">
|
||||
<source>Sort by notes</source>
|
||||
@@ -3786,7 +3786,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
|
||||
<context context-type="linenumber">147</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Sort by notes</target>
|
||||
<target state="translated">Sorteer op notities</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8104421162933956065" datatype="html">
|
||||
<source>Notes</source>
|
||||
@@ -3810,7 +3810,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
|
||||
<context context-type="linenumber">154</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Sort by document type</target>
|
||||
<target state="translated">Sorteer op documenttype</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6213829731736042759" datatype="html">
|
||||
<source>Sort by storage path</source>
|
||||
@@ -3818,7 +3818,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
|
||||
<context context-type="linenumber">161</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Sort by storage path</target>
|
||||
<target state="translated">Sorteer op opslagpad</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="3406167410329973166" datatype="html">
|
||||
<source>Sort by created date</source>
|
||||
@@ -3826,7 +3826,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
|
||||
<context context-type="linenumber">168</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Sort by created date</target>
|
||||
<target state="translated">Sorteer op aanmaakdatum</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="3769035778779263084" datatype="html">
|
||||
<source>Sort by added date</source>
|
||||
@@ -3834,7 +3834,7 @@
|
||||
<context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context>
|
||||
<context context-type="linenumber">175</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Sort by added date</target>
|
||||
<target state="translated">Sorteer op datum toegevoegd</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="231679111972850796" datatype="html" approved="yes">
|
||||
<source>Added</source>
|
||||
@@ -4338,7 +4338,7 @@
|
||||
<context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
|
||||
<context context-type="linenumber">175,177</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Error occurred while saving <x id="PH" equiv-text="this.typeName"/><x id="PH_1" equiv-text="errorDetail ? ': ' + errorDetail : ''"/>.</target>
|
||||
<target state="translated">Fout opgetreden tijdens opslaan <x id="PH" equiv-text="this.typeName"/><x id="PH_1" equiv-text="errorDetail ? ': ' + errorDetail : ''"/>.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="2541368547549828690" datatype="html">
|
||||
<source>Successfully updated <x id="PH" equiv-text="this.typeName"/>.</source>
|
||||
@@ -4354,7 +4354,7 @@
|
||||
<context context-type="sourcefile">src/app/components/manage/management-list/management-list.component.ts</context>
|
||||
<context context-type="linenumber">188,190</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Error occurred while saving <x id="PH" equiv-text="this.typeName"/> : <x id="PH_1" equiv-text="e.toString()"/>.</target>
|
||||
<target state="translated">Fout opgetreden tijdens opslaan <x id="PH" equiv-text="this.typeName"/> : <x id="PH_1" equiv-text="e.toString()"/>.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="4012132330507560812" datatype="html">
|
||||
<source>Do you really want to delete the <x id="PH" equiv-text="this.typeName"/>?</source>
|
||||
@@ -4578,7 +4578,7 @@
|
||||
<context context-type="sourcefile">src/app/components/manage/settings/settings.component.html</context>
|
||||
<context context-type="linenumber">140,142</context>
|
||||
</context-group>
|
||||
<target state="needs-translation"> Update checking works by pinging the public <x id="START_LINK" ctype="x-a" equiv-text="<a href="https://api.github.com/repos/paperless-ngx/paperless-ngx/releases/latest" target="_blank" rel="noopener noreferrer">"/>Github API<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> for the latest release to determine whether a new version is available.<x id="LINE_BREAK" ctype="lb" equiv-text="<br/>"/> Actual updating of the app must still be performed manually. </target>
|
||||
<target state="translated"> Updatecontrole werkt door de openbare <x id="START_LINK" ctype="x-a" equiv-text="<a href="https://api.github.com/repos/paperless-ngx/paperless-ngx/releases/latest" target="_blank" rel="noopener noreferrer">"/>Github API<x id="CLOSE_LINK" ctype="x-a" equiv-text="</a>"/> te pingen voor de nieuwste release om te bepalen of er een nieuwe versie beschikbaar is.<x id="LINE_BREAK" ctype="lb" equiv-text="<br/>"/> Het daadwerkelijk updaten van de app moet nog handmatig worden gedaan. </target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5489945693955857309" datatype="html">
|
||||
<source><x id="START_EMPHASISED_TEXT" ctype="x-em" equiv-text="No track"/>No tracking data is collected by the app in any way.<x id="CLOSE_EMPHASISED_TEXT" ctype="x-em" equiv-text="</em>"/></source>
|
||||
@@ -5671,7 +5671,7 @@
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">177</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Catalan</target>
|
||||
<target state="translated">Catalaans</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="2719780722934172508" datatype="html">
|
||||
<source>Czech</source>
|
||||
@@ -5719,7 +5719,7 @@
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">213</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Finnish</target>
|
||||
<target state="translated">Fins</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7633754075223722162" datatype="html" approved="yes">
|
||||
<source>French</source>
|
||||
|
||||
@@ -1825,7 +1825,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/edit-dialog/mail-rule-edit-dialog/mail-rule-edit-dialog.component.ts</context>
|
||||
<context context-type="linenumber">90</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Use mail address</target>
|
||||
<target state="translated">Użyj adresu e-mail</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="445154175758965852" datatype="html">
|
||||
<source>Use name (or mail address if not available)</source>
|
||||
|
||||
@@ -380,7 +380,7 @@
|
||||
<context context-type="sourcefile">src/app/app.component.ts</context>
|
||||
<context context-type="linenumber">145</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">The dashboard can be used to show saved views, such as an 'Inbox'. Those settings are found under Settings > Saved Views once you have created some.</target>
|
||||
<target state="translated">O painel pode usar usado para mostrar visualizações salvas, como uma 'Caixa de Entrada'. Essas configurações são encontradas em Configurações > Visualizações assim que você criar algumas.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="9075755296812854717" datatype="html">
|
||||
<source>Drag-and-drop documents here to start uploading or place them in the consume folder. You can also drag-and-drop documents anywhere on all other pages of the web app. Once you do, Paperless-ngx will start training its machine learning algorithms.</source>
|
||||
@@ -388,7 +388,7 @@
|
||||
<context context-type="sourcefile">src/app/app.component.ts</context>
|
||||
<context context-type="linenumber">155</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Drag-and-drop documents here to start uploading or place them in the consume folder. You can also drag-and-drop documents anywhere on all other pages of the web app. Once you do, Paperless-ngx will start training its machine learning algorithms.</target>
|
||||
<target state="translated">Arraste e solte documentos aqui para começar a carregá-los ou coloque-os na pasta de consumo. Você também pode arrastar e soltar documentos em qualquer lugar em todas as outras páginas do aplicativo web. Quando o fizer, Paperless-ngx vai começar a treinar seus algoritmos de aprendizado de máquina.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7495498057594070122" datatype="html">
|
||||
<source>The documents list shows all of your documents and allows for filtering as well as bulk-editing. There are three different view styles: list, small cards and large cards. A list of documents currently opened for editing is shown in the sidebar.</source>
|
||||
@@ -396,7 +396,7 @@
|
||||
<context context-type="sourcefile">src/app/app.component.ts</context>
|
||||
<context context-type="linenumber">165</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">The documents list shows all of your documents and allows for filtering as well as bulk-editing. There are three different view styles: list, small cards and large cards. A list of documents currently opened for editing is shown in the sidebar.</target>
|
||||
<target state="translated">A lista de documentos mostra todos seus documentos e permite filtragem e edição em massa. Há três diferentes estilos de visualização: lista, cartões pequenos e cartões grandes. Uma lista com documentos atualmente abertos para edição é mostrada na barra lateral.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="1334220418719920556" datatype="html">
|
||||
<source>The filtering tools allow you to quickly find documents using various searches, dates, tags, etc.</source>
|
||||
@@ -404,7 +404,7 @@
|
||||
<context context-type="sourcefile">src/app/app.component.ts</context>
|
||||
<context context-type="linenumber">178</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">The filtering tools allow you to quickly find documents using various searches, dates, tags, etc.</target>
|
||||
<target state="translated">As ferramentas de filtragem permitem que você encontre documentos rapidamente usando várias pesquisas, datas, etiquetas, etc.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5427326625898532358" datatype="html">
|
||||
<source>Any combination of filters can be saved as a 'view' which can then be displayed on the dashboard and / or sidebar.</source>
|
||||
@@ -420,7 +420,7 @@
|
||||
<context context-type="sourcefile">src/app/app.component.ts</context>
|
||||
<context context-type="linenumber">199</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Tags, correspondents, document types and storage paths can all be managed using these pages. They can also be created from the document edit view.</target>
|
||||
<target state="translated">Etiquetas, correspondentes, tipos de documentos e caminhos de armazenamento podem ser gerenciados usando essas páginas. Eles também podem ser criados a partir da visualização da edição do documento.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="4680387114119209483" datatype="html">
|
||||
<source>File Tasks shows you documents that have been consumed, are waiting to be, or may have failed during the process.</source>
|
||||
@@ -673,7 +673,7 @@
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">155</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Storage paths</target>
|
||||
<target state="translated">Caminhos de Armazenamento</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="2991443309752293110" datatype="html">
|
||||
<source>File Tasks</source>
|
||||
@@ -685,7 +685,7 @@
|
||||
<context context-type="sourcefile">src/app/components/manage/tasks/tasks.component.html</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">File Tasks</target>
|
||||
<target state="translated">Tarefas de Arquivo</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5537285341303594392" datatype="html">
|
||||
<source>File Tasks<x id="START_TAG_SPAN_1" ctype="x-span_1" equiv-text="<span *ngIf="tasksService.failedFileTasks.length > 0">"/><x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span class="badge bg-danger ms-2">"/><x id="INTERPOLATION" equiv-text="{{tasksService.failedFileTasks.length}}"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/><x id="CLOSE_TAG_SPAN" ctype="x-span" equiv-text="</span>"/></source>
|
||||
@@ -789,7 +789,7 @@
|
||||
<context context-type="sourcefile">src/app/components/app-frame/app-frame.component.html</context>
|
||||
<context context-type="linenumber">224,226</context>
|
||||
</context-group>
|
||||
<target state="translated"> Como é que isso funciona? </target>
|
||||
<target state="translated"> Como isto funciona? </target>
|
||||
</trans-unit>
|
||||
<trans-unit id="509090351011426949" datatype="html">
|
||||
<source>Update available</source>
|
||||
@@ -2150,7 +2150,7 @@
|
||||
<context context-type="sourcefile">src/app/components/common/input/permissions/permissions-form/permissions-form.component.html</context>
|
||||
<context context-type="linenumber">25</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Objects without an owner can be viewed and edited by all users</target>
|
||||
<target state="translated">Documentos sem um proprietário podem ser visualizados e editados por todos os usuários</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="2509141182388535183" datatype="html" approved="yes">
|
||||
<source>View</source>
|
||||
@@ -2389,7 +2389,7 @@
|
||||
<context context-type="sourcefile">src/app/components/dashboard/dashboard.component.ts</context>
|
||||
<context context-type="linenumber">36</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Hello <x id="PH" equiv-text="this.settingsService.displayName"/>, welcome to Paperless-ngx</target>
|
||||
<target state="translated">Olá <x id="PH" equiv-text="this.settingsService.displayName"/>, bem-vindo(a) ao Paperless-ngx</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5334686081082652461" datatype="html">
|
||||
<source>Welcome to Paperless-ngx</source>
|
||||
@@ -2481,7 +2481,7 @@
|
||||
<context context-type="sourcefile">src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html</context>
|
||||
<context context-type="linenumber">5</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Documents in inbox</target>
|
||||
<target state="translated">Documentos na caixa de entrada</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8809281703097241399" datatype="html">
|
||||
<source>Go to documents</source>
|
||||
@@ -2497,7 +2497,7 @@
|
||||
<context context-type="sourcefile">src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html</context>
|
||||
<context context-type="linenumber">9</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Total documents</target>
|
||||
<target state="translated">Total de documentos</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6503529145162789855" datatype="html">
|
||||
<source>Total characters</source>
|
||||
@@ -2505,7 +2505,7 @@
|
||||
<context context-type="sourcefile">src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.html</context>
|
||||
<context context-type="linenumber">13</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Total characters</target>
|
||||
<target state="translated">Total de caracteres</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8693603235657020323" datatype="html">
|
||||
<source>Other</source>
|
||||
@@ -3802,7 +3802,7 @@
|
||||
<context context-type="sourcefile">src/app/services/rest/document.service.ts</context>
|
||||
<context context-type="linenumber">25</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Notes</target>
|
||||
<target state="translated">Notas</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="5499001829734502606" datatype="html">
|
||||
<source>Sort by document type</source>
|
||||
@@ -4794,7 +4794,7 @@
|
||||
<context context-type="sourcefile">src/app/components/manage/settings/settings.component.html</context>
|
||||
<context context-type="linenumber">327</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Users & Groups</target>
|
||||
<target state="translated">Usuários & Grupos</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="4555457172864212828" datatype="html">
|
||||
<source>Users</source>
|
||||
@@ -5174,7 +5174,7 @@
|
||||
<context context-type="sourcefile">src/app/components/manage/tasks/tasks.component.ts</context>
|
||||
<context context-type="linenumber">62</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Dismiss</target>
|
||||
<target state="translated">Dispensar</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="2134950584701094962" datatype="html">
|
||||
<source>Open Document</source>
|
||||
@@ -5222,7 +5222,7 @@
|
||||
<context context-type="sourcefile">src/app/components/manage/tasks/tasks.component.ts</context>
|
||||
<context context-type="linenumber">26</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Dismiss selected</target>
|
||||
<target state="translated">Dispensar selecionado</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="8829078752502782653" datatype="html">
|
||||
<source>Dismiss all</source>
|
||||
@@ -5234,7 +5234,7 @@
|
||||
<context context-type="sourcefile">src/app/components/manage/tasks/tasks.component.ts</context>
|
||||
<context context-type="linenumber">60</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Dismiss all</target>
|
||||
<target state="translated">Dispensar todos</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="1323591410517879795" datatype="html">
|
||||
<source>Confirm Dismiss All</source>
|
||||
@@ -5242,7 +5242,7 @@
|
||||
<context context-type="sourcefile">src/app/components/manage/tasks/tasks.component.ts</context>
|
||||
<context context-type="linenumber">58</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Confirm Dismiss All</target>
|
||||
<target state="translated">Confirmar Dispensar Todos</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6566358716882976903" datatype="html">
|
||||
<source>tasks?</source>
|
||||
|
||||
@@ -5719,7 +5719,7 @@
|
||||
<context context-type="sourcefile">src/app/services/settings.service.ts</context>
|
||||
<context context-type="linenumber">213</context>
|
||||
</context-group>
|
||||
<target state="needs-translation">Finnish</target>
|
||||
<target state="translated">Finski</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="7633754075223722162" datatype="html">
|
||||
<source>French</source>
|
||||
|
||||
@@ -54,6 +54,7 @@ def get_schema():
|
||||
path_id=NUMERIC(),
|
||||
has_path=BOOLEAN(),
|
||||
notes=TEXT(),
|
||||
num_notes=NUMERIC(sortable=True, signed=False),
|
||||
owner=TEXT(),
|
||||
owner_id=NUMERIC(),
|
||||
has_owner=BOOLEAN(),
|
||||
@@ -138,6 +139,7 @@ def update_document(writer: AsyncWriter, doc: Document):
|
||||
path_id=doc.storage_path.id if doc.storage_path else None,
|
||||
has_path=doc.storage_path is not None,
|
||||
notes=notes,
|
||||
num_notes=len(notes),
|
||||
owner=doc.owner.username if doc.owner else None,
|
||||
owner_id=doc.owner.id if doc.owner else None,
|
||||
has_owner=doc.owner is not None,
|
||||
@@ -173,8 +175,12 @@ class DelayedQuery:
|
||||
if k == "correspondent__id":
|
||||
criterias.append(query.Term("correspondent_id", v))
|
||||
elif k == "correspondent__id__in":
|
||||
correspondents_in = []
|
||||
for correspondent_id in v.split(","):
|
||||
criterias.append(query.Term("correspondent_id", correspondent_id))
|
||||
correspondents_in.append(
|
||||
query.Term("correspondent_id", correspondent_id),
|
||||
)
|
||||
criterias.append(query.Or(correspondents_in))
|
||||
elif k == "correspondent__id__none":
|
||||
for correspondent_id in v.split(","):
|
||||
criterias.append(
|
||||
@@ -186,11 +192,18 @@ class DelayedQuery:
|
||||
elif k == "tags__id__none":
|
||||
for tag_id in v.split(","):
|
||||
criterias.append(query.Not(query.Term("tag_id", tag_id)))
|
||||
elif k == "tags__id__in":
|
||||
tags_in = []
|
||||
for tag_id in v.split(","):
|
||||
tags_in.append(query.Term("tag_id", tag_id))
|
||||
criterias.append(query.Or(tags_in))
|
||||
elif k == "document_type__id":
|
||||
criterias.append(query.Term("type_id", v))
|
||||
elif k == "document_type__id__in":
|
||||
document_types_in = []
|
||||
for document_type_id in v.split(","):
|
||||
criterias.append(query.Term("type_id", document_type_id))
|
||||
document_types_in.append(query.Term("type_id", document_type_id))
|
||||
criterias.append(query.Or(document_types_in))
|
||||
elif k == "document_type__id__none":
|
||||
for document_type_id in v.split(","):
|
||||
criterias.append(query.Not(query.Term("type_id", document_type_id)))
|
||||
@@ -215,8 +228,10 @@ class DelayedQuery:
|
||||
elif k == "storage_path__id":
|
||||
criterias.append(query.Term("path_id", v))
|
||||
elif k == "storage_path__id__in":
|
||||
storage_paths_in = []
|
||||
for storage_path_id in v.split(","):
|
||||
criterias.append(query.Term("path_id", storage_path_id))
|
||||
storage_paths_in.append(query.Term("path_id", storage_path_id))
|
||||
criterias.append(query.Or(storage_paths_in))
|
||||
elif k == "storage_path__id__none":
|
||||
for storage_path_id in v.split(","):
|
||||
criterias.append(query.Not(query.Term("path_id", storage_path_id)))
|
||||
@@ -225,15 +240,19 @@ class DelayedQuery:
|
||||
|
||||
user_criterias = [query.Term("has_owner", False)]
|
||||
if "user" in self.query_params:
|
||||
user_criterias.append(query.Term("owner_id", self.query_params["user"]))
|
||||
user_criterias.append(
|
||||
query.Term("viewer_id", str(self.query_params["user"])),
|
||||
)
|
||||
if self.query_params["is_superuser"]: # superusers see all docs
|
||||
user_criterias = []
|
||||
else:
|
||||
user_criterias.append(query.Term("owner_id", self.query_params["user"]))
|
||||
user_criterias.append(
|
||||
query.Term("viewer_id", str(self.query_params["user"])),
|
||||
)
|
||||
if len(criterias) > 0:
|
||||
criterias.append(query.Or(user_criterias))
|
||||
if len(user_criterias) > 0:
|
||||
criterias.append(query.Or(user_criterias))
|
||||
return query.And(criterias)
|
||||
else:
|
||||
return query.Or(user_criterias)
|
||||
return query.Or(user_criterias) if len(user_criterias) > 0 else None
|
||||
|
||||
def _get_query_sortedby(self):
|
||||
if "ordering" not in self.query_params:
|
||||
@@ -249,6 +268,7 @@ class DelayedQuery:
|
||||
"correspondent__name": "correspondent",
|
||||
"document_type__name": "type",
|
||||
"archive_serial_number": "asn",
|
||||
"num_notes": "num_notes",
|
||||
}
|
||||
|
||||
if field.startswith("-"):
|
||||
|
||||
@@ -10,8 +10,8 @@ from documents.models import Document
|
||||
from documents.parsers import get_parser_class_for_mime_type
|
||||
|
||||
|
||||
def _process_document(doc_in):
|
||||
document: Document = Document.objects.get(id=doc_in)
|
||||
def _process_document(doc_id):
|
||||
document: Document = Document.objects.get(id=doc_id)
|
||||
parser_class = get_parser_class_for_mime_type(document.mime_type)
|
||||
|
||||
if parser_class:
|
||||
|
||||
@@ -429,12 +429,12 @@ def update_filename_and_move_files(sender, instance: Document, **kwargs):
|
||||
if move_original:
|
||||
validate_move(instance, old_source_path, instance.source_path)
|
||||
create_source_path_directory(instance.source_path)
|
||||
os.rename(old_source_path, instance.source_path)
|
||||
shutil.move(old_source_path, instance.source_path)
|
||||
|
||||
if move_archive:
|
||||
validate_move(instance, old_archive_path, instance.archive_path)
|
||||
create_source_path_directory(instance.archive_path)
|
||||
os.rename(old_archive_path, instance.archive_path)
|
||||
shutil.move(old_archive_path, instance.archive_path)
|
||||
|
||||
# Don't save() here to prevent infinite recursion.
|
||||
Document.objects.filter(pk=instance.pk).update(
|
||||
@@ -453,11 +453,11 @@ def update_filename_and_move_files(sender, instance: Document, **kwargs):
|
||||
try:
|
||||
if move_original and os.path.isfile(instance.source_path):
|
||||
logger.info("Restoring previous original path")
|
||||
os.rename(instance.source_path, old_source_path)
|
||||
shutil.move(instance.source_path, old_source_path)
|
||||
|
||||
if move_archive and os.path.isfile(instance.archive_path):
|
||||
logger.info("Restoring previous archive path")
|
||||
os.rename(instance.archive_path, old_archive_path)
|
||||
shutil.move(instance.archive_path, old_archive_path)
|
||||
|
||||
except Exception:
|
||||
# This is fine, since:
|
||||
|
||||
@@ -27,6 +27,7 @@ from django.contrib.auth.models import Permission
|
||||
from django.contrib.auth.models import User
|
||||
from django.test import override_settings
|
||||
from django.utils import timezone
|
||||
from guardian.shortcuts import assign_perm
|
||||
from rest_framework import status
|
||||
from rest_framework.test import APITestCase
|
||||
from whoosh.writing import AsyncWriter
|
||||
@@ -253,8 +254,6 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
|
||||
response = self.client.get(f"/api/documents/{doc.pk}/thumb/")
|
||||
self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)
|
||||
|
||||
from guardian.shortcuts import assign_perm
|
||||
|
||||
assign_perm("view_document", user2, doc)
|
||||
|
||||
response = self.client.get(f"/api/documents/{doc.pk}/download/")
|
||||
@@ -1064,7 +1063,95 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
|
||||
),
|
||||
)
|
||||
|
||||
def test_search_filtering_respect_owner(self):
|
||||
"""
|
||||
GIVEN:
|
||||
- Documents with owners set & without
|
||||
WHEN:
|
||||
- API reuqest for advanced query (search) is made by non-superuser
|
||||
- API reuqest for advanced query (search) is made by superuser
|
||||
THEN:
|
||||
- Only owned docs are returned for regular users
|
||||
- All docs are returned for superuser
|
||||
"""
|
||||
superuser = User.objects.create_superuser("superuser")
|
||||
u1 = User.objects.create_user("user1")
|
||||
u2 = User.objects.create_user("user2")
|
||||
u1.user_permissions.add(*Permission.objects.filter(codename="view_document"))
|
||||
u2.user_permissions.add(*Permission.objects.filter(codename="view_document"))
|
||||
|
||||
Document.objects.create(checksum="1", content="test 1", owner=u1)
|
||||
Document.objects.create(checksum="2", content="test 2", owner=u2)
|
||||
Document.objects.create(checksum="3", content="test 3", owner=u2)
|
||||
Document.objects.create(checksum="4", content="test 4")
|
||||
|
||||
with AsyncWriter(index.open_index()) as writer:
|
||||
for doc in Document.objects.all():
|
||||
index.update_document(writer, doc)
|
||||
|
||||
self.client.force_authenticate(user=u1)
|
||||
r = self.client.get("/api/documents/?query=test")
|
||||
self.assertEqual(r.data["count"], 2)
|
||||
r = self.client.get("/api/documents/?query=test&document_type__id__none=1")
|
||||
self.assertEqual(r.data["count"], 2)
|
||||
|
||||
self.client.force_authenticate(user=u2)
|
||||
r = self.client.get("/api/documents/?query=test")
|
||||
self.assertEqual(r.data["count"], 3)
|
||||
r = self.client.get("/api/documents/?query=test&document_type__id__none=1")
|
||||
self.assertEqual(r.data["count"], 3)
|
||||
|
||||
self.client.force_authenticate(user=superuser)
|
||||
r = self.client.get("/api/documents/?query=test")
|
||||
self.assertEqual(r.data["count"], 4)
|
||||
r = self.client.get("/api/documents/?query=test&document_type__id__none=1")
|
||||
self.assertEqual(r.data["count"], 4)
|
||||
|
||||
def test_search_filtering_with_object_perms(self):
|
||||
"""
|
||||
GIVEN:
|
||||
- Documents with granted view permissions to others
|
||||
WHEN:
|
||||
- API reuqest for advanced query (search) is made by user
|
||||
THEN:
|
||||
- Only docs with granted view permissions are returned
|
||||
"""
|
||||
u1 = User.objects.create_user("user1")
|
||||
u2 = User.objects.create_user("user2")
|
||||
u1.user_permissions.add(*Permission.objects.filter(codename="view_document"))
|
||||
u2.user_permissions.add(*Permission.objects.filter(codename="view_document"))
|
||||
|
||||
Document.objects.create(checksum="1", content="test 1", owner=u1)
|
||||
d2 = Document.objects.create(checksum="2", content="test 2", owner=u2)
|
||||
d3 = Document.objects.create(checksum="3", content="test 3", owner=u2)
|
||||
Document.objects.create(checksum="4", content="test 4")
|
||||
|
||||
with AsyncWriter(index.open_index()) as writer:
|
||||
for doc in Document.objects.all():
|
||||
index.update_document(writer, doc)
|
||||
|
||||
self.client.force_authenticate(user=u1)
|
||||
r = self.client.get("/api/documents/?query=test")
|
||||
self.assertEqual(r.data["count"], 2)
|
||||
r = self.client.get("/api/documents/?query=test&document_type__id__none=1")
|
||||
self.assertEqual(r.data["count"], 2)
|
||||
|
||||
assign_perm("view_document", u1, d2)
|
||||
assign_perm("view_document", u1, d3)
|
||||
|
||||
with AsyncWriter(index.open_index()) as writer:
|
||||
for doc in [d2, d3]:
|
||||
index.update_document(writer, doc)
|
||||
|
||||
self.client.force_authenticate(user=u1)
|
||||
r = self.client.get("/api/documents/?query=test")
|
||||
self.assertEqual(r.data["count"], 4)
|
||||
r = self.client.get("/api/documents/?query=test&document_type__id__none=1")
|
||||
self.assertEqual(r.data["count"], 4)
|
||||
|
||||
def test_search_sorting(self):
|
||||
u1 = User.objects.create_user("user1")
|
||||
u2 = User.objects.create_user("user2")
|
||||
c1 = Correspondent.objects.create(name="corres Ax")
|
||||
c2 = Correspondent.objects.create(name="corres Cx")
|
||||
c3 = Correspondent.objects.create(name="corres Bx")
|
||||
@@ -1074,6 +1161,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
|
||||
content="test",
|
||||
archive_serial_number=2,
|
||||
title="3",
|
||||
owner=u1,
|
||||
)
|
||||
d2 = Document.objects.create(
|
||||
checksum="2",
|
||||
@@ -1081,6 +1169,7 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
|
||||
content="test",
|
||||
archive_serial_number=3,
|
||||
title="2",
|
||||
owner=u2,
|
||||
)
|
||||
d3 = Document.objects.create(
|
||||
checksum="3",
|
||||
@@ -1089,6 +1178,21 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
|
||||
archive_serial_number=1,
|
||||
title="1",
|
||||
)
|
||||
Note.objects.create(
|
||||
note="This is a note.",
|
||||
document=d1,
|
||||
user=u1,
|
||||
)
|
||||
Note.objects.create(
|
||||
note="This is a note.",
|
||||
document=d1,
|
||||
user=u1,
|
||||
)
|
||||
Note.objects.create(
|
||||
note="This is a note.",
|
||||
document=d3,
|
||||
user=u1,
|
||||
)
|
||||
|
||||
with AsyncWriter(index.open_index()) as writer:
|
||||
for doc in Document.objects.all():
|
||||
@@ -1117,6 +1221,14 @@ class TestDocumentApi(DirectoriesMixin, DocumentConsumeDelayMixin, APITestCase):
|
||||
search_query("&ordering=-correspondent__name"),
|
||||
[d2.id, d3.id, d1.id],
|
||||
)
|
||||
self.assertListEqual(
|
||||
search_query("&ordering=num_notes"),
|
||||
[d2.id, d3.id, d1.id],
|
||||
)
|
||||
self.assertListEqual(
|
||||
search_query("&ordering=-num_notes"),
|
||||
[d1.id, d3.id, d2.id],
|
||||
)
|
||||
|
||||
def test_statistics(self):
|
||||
doc1 = Document.objects.create(
|
||||
|
||||
@@ -697,7 +697,7 @@ class TestFileHandlingWithArchive(DirectoriesMixin, FileSystemAssertsMixin, Test
|
||||
self.assertIsFile(doc.archive_path)
|
||||
|
||||
@override_settings(FILENAME_FORMAT="{correspondent}/{title}")
|
||||
@mock.patch("documents.signals.handlers.os.rename")
|
||||
@mock.patch("documents.signals.handlers.shutil.move")
|
||||
def test_move_archive_error(self, m):
|
||||
def fake_rename(src, dst):
|
||||
if "archive" in str(src):
|
||||
@@ -748,7 +748,7 @@ class TestFileHandlingWithArchive(DirectoriesMixin, FileSystemAssertsMixin, Test
|
||||
self.assertIsFile(doc.archive_path)
|
||||
|
||||
@override_settings(FILENAME_FORMAT="{correspondent}/{title}")
|
||||
@mock.patch("documents.signals.handlers.os.rename")
|
||||
@mock.patch("documents.signals.handlers.shutil.move")
|
||||
def test_move_file_error(self, m):
|
||||
def fake_rename(src, dst):
|
||||
if "original" in str(src):
|
||||
|
||||
@@ -47,12 +47,16 @@ class TestMakeThumbnails(DirectoriesMixin, FileSystemAssertsMixin, TestCase):
|
||||
self.assertIsFile(self.d1.thumbnail_path)
|
||||
|
||||
@mock.patch("documents.management.commands.document_thumbnails.shutil.move")
|
||||
def test_process_document_invalid_mime_type(self, m):
|
||||
def test_process_document_invalid_mime_type(self, m: mock.Mock):
|
||||
self.d1.mime_type = "asdasdasd"
|
||||
self.d1.save()
|
||||
|
||||
# .save() triggers filename handling
|
||||
m.reset_mock()
|
||||
|
||||
_process_document(self.d1.id)
|
||||
|
||||
# Not called during processing of document
|
||||
m.assert_not_called()
|
||||
|
||||
def test_command(self):
|
||||
|
||||
@@ -604,6 +604,9 @@ class UnifiedSearchViewSet(DocumentViewSet):
|
||||
# pass user to query for perms
|
||||
self.request.query_params._mutable = True
|
||||
self.request.query_params["user"] = self.request.user.id
|
||||
self.request.query_params[
|
||||
"is_superuser"
|
||||
] = self.request.user.is_superuser
|
||||
self.request.query_params._mutable = False
|
||||
|
||||
if "query" in self.request.query_params:
|
||||
|
||||
@@ -3,7 +3,7 @@ msgstr ""
|
||||
"Project-Id-Version: paperless-ngx\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-03-03 19:15+0000\n"
|
||||
"PO-Revision-Date: 2023-03-07 19:40\n"
|
||||
"PO-Revision-Date: 2023-05-01 13:00\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Arabic\n"
|
||||
"Language: ar_SA\n"
|
||||
@@ -420,7 +420,7 @@ msgstr "اسم ملف المهمة"
|
||||
|
||||
#: documents/models.py:577
|
||||
msgid "Name of the file which the Task was run for"
|
||||
msgstr "اسم الملف الذي وكل بالمهمة"
|
||||
msgstr "اسم المِلَفّ الذي وكل بالمهمة"
|
||||
|
||||
#: documents/models.py:583
|
||||
msgid "Task Name"
|
||||
@@ -670,7 +670,7 @@ msgstr "إجراءات"
|
||||
|
||||
#: paperless_mail/admin.py:69
|
||||
msgid "The action applied to the mail. This action is only performed when the mail body or attachments were consumed from the mail."
|
||||
msgstr "الإجراء المطبق على البريد. يتم تنفيذ هذا الإجراء فقط عندما يتم إستهلاك البريد أو المرفقات من البريد."
|
||||
msgstr "الإجراء المطبق على البريد. يتم تنفيذ هذا الإجراء فقط عندما يتم أستهلاك البريد أو المرفقات من البريد."
|
||||
|
||||
#: paperless_mail/admin.py:77
|
||||
msgid "Metadata"
|
||||
@@ -834,11 +834,11 @@ msgstr "تصفية الجسم"
|
||||
|
||||
#: paperless_mail/models.py:130
|
||||
msgid "filter attachment filename"
|
||||
msgstr "تصفية اسم الملف المرفق"
|
||||
msgstr "تصفية اسم المِلَفّ المرفق"
|
||||
|
||||
#: paperless_mail/models.py:135
|
||||
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
|
||||
msgstr "فقط المستندات التي تتطابق تماما مع اسم هذا الملف إذا تم تحديدها. المحارف البديلة مثل *.pdf أو *الفواتير* مسموح بها. لأنها غير حساسة."
|
||||
msgstr "فقط المستندات التي تتطابق تماما مع اسم هذا المِلَفّ إذا تم تحديدها. المحارف البديلة مثل *.pdf أو *الفواتير* مسموح بها. لأنها غير حساسة."
|
||||
|
||||
#: paperless_mail/models.py:142
|
||||
msgid "maximum age"
|
||||
|
||||
@@ -3,7 +3,7 @@ msgstr ""
|
||||
"Project-Id-Version: paperless-ngx\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-03-03 19:15+0000\n"
|
||||
"PO-Revision-Date: 2023-04-20 13:20\n"
|
||||
"PO-Revision-Date: 2023-04-28 09:40\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Indonesian\n"
|
||||
"Language: id_ID\n"
|
||||
@@ -212,7 +212,7 @@ msgstr "dokumen"
|
||||
|
||||
#: documents/models.py:269
|
||||
msgid "documents"
|
||||
msgstr ""
|
||||
msgstr "dokumen"
|
||||
|
||||
#: documents/models.py:359
|
||||
msgid "debug"
|
||||
@@ -224,7 +224,7 @@ msgstr "informasi"
|
||||
|
||||
#: documents/models.py:361
|
||||
msgid "warning"
|
||||
msgstr ""
|
||||
msgstr "peringatan"
|
||||
|
||||
#: documents/models.py:362 paperless_mail/models.py:276
|
||||
msgid "error"
|
||||
@@ -232,7 +232,7 @@ msgstr "kesalahan"
|
||||
|
||||
#: documents/models.py:363
|
||||
msgid "critical"
|
||||
msgstr ""
|
||||
msgstr "kritis"
|
||||
|
||||
#: documents/models.py:366
|
||||
msgid "group"
|
||||
@@ -244,7 +244,7 @@ msgstr "pesan"
|
||||
|
||||
#: documents/models.py:371
|
||||
msgid "level"
|
||||
msgstr ""
|
||||
msgstr "tingkat"
|
||||
|
||||
#: documents/models.py:380
|
||||
msgid "log"
|
||||
@@ -276,15 +276,15 @@ msgstr ""
|
||||
|
||||
#: documents/models.py:409
|
||||
msgid "sort reverse"
|
||||
msgstr ""
|
||||
msgstr "urutkan terbalik"
|
||||
|
||||
#: documents/models.py:414
|
||||
msgid "title contains"
|
||||
msgstr ""
|
||||
msgstr "judul memiliki"
|
||||
|
||||
#: documents/models.py:415
|
||||
msgid "content contains"
|
||||
msgstr ""
|
||||
msgstr "konten memiliki"
|
||||
|
||||
#: documents/models.py:416
|
||||
msgid "ASN is"
|
||||
@@ -300,7 +300,7 @@ msgstr ""
|
||||
|
||||
#: documents/models.py:419
|
||||
msgid "is in inbox"
|
||||
msgstr ""
|
||||
msgstr "di dalam kotak masuk"
|
||||
|
||||
#: documents/models.py:420
|
||||
msgid "has tag"
|
||||
@@ -380,11 +380,11 @@ msgstr ""
|
||||
|
||||
#: documents/models.py:439
|
||||
msgid "storage path is"
|
||||
msgstr ""
|
||||
msgstr "lokasi penyimpanan"
|
||||
|
||||
#: documents/models.py:449
|
||||
msgid "rule type"
|
||||
msgstr ""
|
||||
msgstr "jenis peraturan"
|
||||
|
||||
#: documents/models.py:451
|
||||
msgid "value"
|
||||
@@ -392,15 +392,15 @@ msgstr "nilai"
|
||||
|
||||
#: documents/models.py:454
|
||||
msgid "filter rule"
|
||||
msgstr ""
|
||||
msgstr "saring aturan"
|
||||
|
||||
#: documents/models.py:455
|
||||
msgid "filter rules"
|
||||
msgstr ""
|
||||
msgstr "saring aturan"
|
||||
|
||||
#: documents/models.py:563
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
msgstr "ID Tugas"
|
||||
|
||||
#: documents/models.py:564
|
||||
msgid "Celery ID for the Task that was run"
|
||||
@@ -432,11 +432,11 @@ msgstr ""
|
||||
|
||||
#: documents/models.py:591
|
||||
msgid "Task State"
|
||||
msgstr ""
|
||||
msgstr "Status Tugas"
|
||||
|
||||
#: documents/models.py:592
|
||||
msgid "Current state of the task being run"
|
||||
msgstr ""
|
||||
msgstr "Status tugas sekarang yang sedang dijalankan"
|
||||
|
||||
#: documents/models.py:597
|
||||
msgid "Created DateTime"
|
||||
@@ -464,53 +464,53 @@ msgstr ""
|
||||
|
||||
#: documents/models.py:615
|
||||
msgid "Result Data"
|
||||
msgstr ""
|
||||
msgstr "Data Hasil"
|
||||
|
||||
#: documents/models.py:617
|
||||
msgid "The data returned by the task"
|
||||
msgstr ""
|
||||
msgstr "Data yang dikembalikan dari tugas"
|
||||
|
||||
#: documents/models.py:626
|
||||
msgid "Comment for the document"
|
||||
msgstr ""
|
||||
msgstr "Komentar pada dokumen"
|
||||
|
||||
#: documents/models.py:650
|
||||
msgid "user"
|
||||
msgstr ""
|
||||
msgstr "pengguna"
|
||||
|
||||
#: documents/models.py:655
|
||||
msgid "comment"
|
||||
msgstr ""
|
||||
msgstr "komentar"
|
||||
|
||||
#: documents/models.py:656
|
||||
msgid "comments"
|
||||
msgstr ""
|
||||
msgstr "komentar"
|
||||
|
||||
#: documents/serialisers.py:80
|
||||
#, python-format
|
||||
msgid "Invalid regular expression: %(error)s"
|
||||
msgstr ""
|
||||
msgstr "Ekspresi reguler tidak valid: %(error)s"
|
||||
|
||||
#: documents/serialisers.py:320
|
||||
msgid "Invalid color."
|
||||
msgstr ""
|
||||
msgstr "Warna tidak valid."
|
||||
|
||||
#: documents/serialisers.py:700
|
||||
#, python-format
|
||||
msgid "File type %(type)s not supported"
|
||||
msgstr ""
|
||||
msgstr "Jenis file %(type)s tidak didukung"
|
||||
|
||||
#: documents/serialisers.py:794
|
||||
msgid "Invalid variable detected."
|
||||
msgstr ""
|
||||
msgstr "Variabel ilegal terdeteksi."
|
||||
|
||||
#: documents/templates/index.html:78
|
||||
msgid "Paperless-ngx is loading..."
|
||||
msgstr ""
|
||||
msgstr "Paperless-ngx sedang memuat..."
|
||||
|
||||
#: documents/templates/index.html:79
|
||||
msgid "Still here?! Hmm, something might be wrong."
|
||||
msgstr ""
|
||||
msgstr "Masih disini?! Hmm, sepertinya ada yang salah."
|
||||
|
||||
#: documents/templates/index.html:79
|
||||
msgid "Here's a link to the docs."
|
||||
@@ -526,7 +526,7 @@ msgstr ""
|
||||
|
||||
#: documents/templates/registration/logged_out.html:60
|
||||
msgid "Sign in again"
|
||||
msgstr ""
|
||||
msgstr "Masuk lagi"
|
||||
|
||||
#: documents/templates/registration/login.html:15
|
||||
msgid "Paperless-ngx sign in"
|
||||
@@ -534,23 +534,23 @@ msgstr ""
|
||||
|
||||
#: documents/templates/registration/login.html:61
|
||||
msgid "Please sign in."
|
||||
msgstr ""
|
||||
msgstr "Mohon masuk."
|
||||
|
||||
#: documents/templates/registration/login.html:64
|
||||
msgid "Your username and password didn't match. Please try again."
|
||||
msgstr ""
|
||||
msgstr "Nama pengguna dan sandi tidak cocok. Silahkan coba kembali."
|
||||
|
||||
#: documents/templates/registration/login.html:67
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
msgstr "Nama pengguna"
|
||||
|
||||
#: documents/templates/registration/login.html:68
|
||||
msgid "Password"
|
||||
msgstr ""
|
||||
msgstr "Kata sandi"
|
||||
|
||||
#: documents/templates/registration/login.html:73
|
||||
msgid "Sign in"
|
||||
msgstr ""
|
||||
msgstr "Masuk"
|
||||
|
||||
#: paperless/apps.py:9
|
||||
msgid "Paperless"
|
||||
@@ -558,15 +558,15 @@ msgstr ""
|
||||
|
||||
#: paperless/settings.py:521
|
||||
msgid "English (US)"
|
||||
msgstr ""
|
||||
msgstr "Inggris (AS)"
|
||||
|
||||
#: paperless/settings.py:522
|
||||
msgid "Arabic"
|
||||
msgstr ""
|
||||
msgstr "Arab"
|
||||
|
||||
#: paperless/settings.py:523
|
||||
msgid "Belarusian"
|
||||
msgstr ""
|
||||
msgstr "Belarusia"
|
||||
|
||||
#: paperless/settings.py:524
|
||||
msgid "Czech"
|
||||
@@ -582,11 +582,11 @@ msgstr ""
|
||||
|
||||
#: paperless/settings.py:527
|
||||
msgid "English (GB)"
|
||||
msgstr ""
|
||||
msgstr "Inggris (GB)"
|
||||
|
||||
#: paperless/settings.py:528
|
||||
msgid "Spanish"
|
||||
msgstr ""
|
||||
msgstr "Spanyol"
|
||||
|
||||
#: paperless/settings.py:529
|
||||
msgid "French"
|
||||
@@ -602,71 +602,71 @@ msgstr ""
|
||||
|
||||
#: paperless/settings.py:532
|
||||
msgid "Dutch"
|
||||
msgstr ""
|
||||
msgstr "Belanda"
|
||||
|
||||
#: paperless/settings.py:533
|
||||
msgid "Polish"
|
||||
msgstr ""
|
||||
msgstr "Polandia"
|
||||
|
||||
#: paperless/settings.py:534
|
||||
msgid "Portuguese (Brazil)"
|
||||
msgstr ""
|
||||
msgstr "Portugis (Brasil)"
|
||||
|
||||
#: paperless/settings.py:535
|
||||
msgid "Portuguese"
|
||||
msgstr ""
|
||||
msgstr "Portugis"
|
||||
|
||||
#: paperless/settings.py:536
|
||||
msgid "Romanian"
|
||||
msgstr ""
|
||||
msgstr "Rumania"
|
||||
|
||||
#: paperless/settings.py:537
|
||||
msgid "Russian"
|
||||
msgstr ""
|
||||
msgstr "Rusia"
|
||||
|
||||
#: paperless/settings.py:538
|
||||
msgid "Slovenian"
|
||||
msgstr ""
|
||||
msgstr "Slovenia"
|
||||
|
||||
#: paperless/settings.py:539
|
||||
msgid "Serbian"
|
||||
msgstr ""
|
||||
msgstr "Serbia"
|
||||
|
||||
#: paperless/settings.py:540
|
||||
msgid "Swedish"
|
||||
msgstr ""
|
||||
msgstr "Swedia"
|
||||
|
||||
#: paperless/settings.py:541
|
||||
msgid "Turkish"
|
||||
msgstr ""
|
||||
msgstr "Turki"
|
||||
|
||||
#: paperless/settings.py:542
|
||||
msgid "Chinese Simplified"
|
||||
msgstr ""
|
||||
msgstr "Mandarin Sederhana"
|
||||
|
||||
#: paperless/urls.py:169
|
||||
msgid "Paperless-ngx administration"
|
||||
msgstr ""
|
||||
msgstr "Administrasi Paperless-ngx"
|
||||
|
||||
#: paperless_mail/admin.py:30
|
||||
msgid "Authentication"
|
||||
msgstr ""
|
||||
msgstr "Autentikasi"
|
||||
|
||||
#: paperless_mail/admin.py:31
|
||||
msgid "Advanced settings"
|
||||
msgstr ""
|
||||
msgstr "Pengaturan lanjutan"
|
||||
|
||||
#: paperless_mail/admin.py:48
|
||||
msgid "Filter"
|
||||
msgstr ""
|
||||
msgstr "Saring"
|
||||
|
||||
#: paperless_mail/admin.py:51
|
||||
msgid "Paperless will only process mails that match ALL of the filters given below."
|
||||
msgstr ""
|
||||
msgstr "Paperless hanya akan memproses SEMUA surat yang cocok dengan filter yang diberikan."
|
||||
|
||||
#: paperless_mail/admin.py:66
|
||||
msgid "Actions"
|
||||
msgstr ""
|
||||
msgstr "Aksi"
|
||||
|
||||
#: paperless_mail/admin.py:69
|
||||
msgid "The action applied to the mail. This action is only performed when the mail body or attachments were consumed from the mail."
|
||||
@@ -682,35 +682,35 @@ msgstr ""
|
||||
|
||||
#: paperless_mail/apps.py:10
|
||||
msgid "Paperless mail"
|
||||
msgstr ""
|
||||
msgstr "Surat Paperless"
|
||||
|
||||
#: paperless_mail/models.py:9
|
||||
msgid "mail account"
|
||||
msgstr ""
|
||||
msgstr "akun surat"
|
||||
|
||||
#: paperless_mail/models.py:10
|
||||
msgid "mail accounts"
|
||||
msgstr ""
|
||||
msgstr "akun surat"
|
||||
|
||||
#: paperless_mail/models.py:13
|
||||
msgid "No encryption"
|
||||
msgstr ""
|
||||
msgstr "Tanpa enkripsi"
|
||||
|
||||
#: paperless_mail/models.py:14
|
||||
msgid "Use SSL"
|
||||
msgstr ""
|
||||
msgstr "Gunakan SSL"
|
||||
|
||||
#: paperless_mail/models.py:15
|
||||
msgid "Use STARTTLS"
|
||||
msgstr ""
|
||||
msgstr "Gunakan STARTTLS"
|
||||
|
||||
#: paperless_mail/models.py:19
|
||||
msgid "IMAP server"
|
||||
msgstr ""
|
||||
msgstr "Server IMAP"
|
||||
|
||||
#: paperless_mail/models.py:22
|
||||
msgid "IMAP port"
|
||||
msgstr ""
|
||||
msgstr "Port IMAP"
|
||||
|
||||
#: paperless_mail/models.py:26
|
||||
msgid "This is usually 143 for unencrypted and STARTTLS connections, and 993 for SSL connections."
|
||||
@@ -722,11 +722,11 @@ msgstr ""
|
||||
|
||||
#: paperless_mail/models.py:37
|
||||
msgid "username"
|
||||
msgstr ""
|
||||
msgstr "nama pengguna"
|
||||
|
||||
#: paperless_mail/models.py:39
|
||||
msgid "password"
|
||||
msgstr ""
|
||||
msgstr "kata sandi"
|
||||
|
||||
#: paperless_mail/models.py:42
|
||||
msgid "character set"
|
||||
@@ -738,11 +738,11 @@ msgstr ""
|
||||
|
||||
#: paperless_mail/models.py:57
|
||||
msgid "mail rule"
|
||||
msgstr ""
|
||||
msgstr "peraturan surat"
|
||||
|
||||
#: paperless_mail/models.py:58
|
||||
msgid "mail rules"
|
||||
msgstr ""
|
||||
msgstr "peraturan surat"
|
||||
|
||||
#: paperless_mail/models.py:61 paperless_mail/models.py:69
|
||||
msgid "Only process attachments."
|
||||
@@ -762,7 +762,7 @@ msgstr ""
|
||||
|
||||
#: paperless_mail/models.py:73
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
msgstr "Hapus"
|
||||
|
||||
#: paperless_mail/models.py:74
|
||||
msgid "Move to specified folder"
|
||||
@@ -794,11 +794,11 @@ msgstr ""
|
||||
|
||||
#: paperless_mail/models.py:85
|
||||
msgid "Use mail address"
|
||||
msgstr ""
|
||||
msgstr "Gunakan alamat surat"
|
||||
|
||||
#: paperless_mail/models.py:86
|
||||
msgid "Use name (or mail address if not available)"
|
||||
msgstr ""
|
||||
msgstr "Gunakan nama (atau alamat surat jika tidak tersedia)"
|
||||
|
||||
#: paperless_mail/models.py:87
|
||||
msgid "Use correspondent selected below"
|
||||
@@ -806,15 +806,15 @@ msgstr ""
|
||||
|
||||
#: paperless_mail/models.py:91
|
||||
msgid "order"
|
||||
msgstr ""
|
||||
msgstr "urut"
|
||||
|
||||
#: paperless_mail/models.py:97
|
||||
msgid "account"
|
||||
msgstr ""
|
||||
msgstr "akun"
|
||||
|
||||
#: paperless_mail/models.py:101 paperless_mail/models.py:231
|
||||
msgid "folder"
|
||||
msgstr ""
|
||||
msgstr "direktori"
|
||||
|
||||
#: paperless_mail/models.py:105
|
||||
msgid "Subfolders must be separated by a delimiter, often a dot ('.') or slash ('/'), but it varies by mail server."
|
||||
@@ -822,19 +822,19 @@ msgstr ""
|
||||
|
||||
#: paperless_mail/models.py:111
|
||||
msgid "filter from"
|
||||
msgstr ""
|
||||
msgstr "saring dari"
|
||||
|
||||
#: paperless_mail/models.py:117
|
||||
msgid "filter subject"
|
||||
msgstr ""
|
||||
msgstr "saring subjek"
|
||||
|
||||
#: paperless_mail/models.py:123
|
||||
msgid "filter body"
|
||||
msgstr ""
|
||||
msgstr "saring badan"
|
||||
|
||||
#: paperless_mail/models.py:130
|
||||
msgid "filter attachment filename"
|
||||
msgstr ""
|
||||
msgstr "saring nama file lampiran"
|
||||
|
||||
#: paperless_mail/models.py:135
|
||||
msgid "Only consume documents which entirely match this filename if specified. Wildcards such as *.pdf or *invoice* are allowed. Case insensitive."
|
||||
@@ -842,7 +842,7 @@ msgstr ""
|
||||
|
||||
#: paperless_mail/models.py:142
|
||||
msgid "maximum age"
|
||||
msgstr ""
|
||||
msgstr "umur maksimal"
|
||||
|
||||
#: paperless_mail/models.py:144
|
||||
msgid "Specified in days."
|
||||
@@ -850,7 +850,7 @@ msgstr ""
|
||||
|
||||
#: paperless_mail/models.py:148
|
||||
msgid "attachment type"
|
||||
msgstr ""
|
||||
msgstr "jenis lampiran"
|
||||
|
||||
#: paperless_mail/models.py:152
|
||||
msgid "Inline attachments include embedded images, so it's best to combine this option with a filename filter."
|
||||
@@ -862,11 +862,11 @@ msgstr ""
|
||||
|
||||
#: paperless_mail/models.py:164
|
||||
msgid "action"
|
||||
msgstr ""
|
||||
msgstr "aksi"
|
||||
|
||||
#: paperless_mail/models.py:170
|
||||
msgid "action parameter"
|
||||
msgstr ""
|
||||
msgstr "parameter aksi"
|
||||
|
||||
#: paperless_mail/models.py:175
|
||||
msgid "Additional parameter for the action selected above, i.e., the target folder of the move to folder action. Subfolders must be separated by dots."
|
||||
@@ -898,17 +898,17 @@ msgstr ""
|
||||
|
||||
#: paperless_mail/models.py:247
|
||||
msgid "subject"
|
||||
msgstr ""
|
||||
msgstr "subjek"
|
||||
|
||||
#: paperless_mail/models.py:255
|
||||
msgid "received"
|
||||
msgstr ""
|
||||
msgstr "diterima"
|
||||
|
||||
#: paperless_mail/models.py:262
|
||||
msgid "processed"
|
||||
msgstr ""
|
||||
msgstr "diproses"
|
||||
|
||||
#: paperless_mail/models.py:268
|
||||
msgid "status"
|
||||
msgstr ""
|
||||
msgstr "status"
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ msgstr ""
|
||||
"Project-Id-Version: paperless-ngx\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-03-03 19:15+0000\n"
|
||||
"PO-Revision-Date: 2023-03-04 19:07\n"
|
||||
"PO-Revision-Date: 2023-05-03 20:18\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: Portuguese, Brazilian\n"
|
||||
"Language: pt_BR\n"
|
||||
@@ -35,7 +35,7 @@ msgstr "Todas as palavras"
|
||||
|
||||
#: documents/models.py:39
|
||||
msgid "Exact match"
|
||||
msgstr "Detecção exata"
|
||||
msgstr "Correspondência exata"
|
||||
|
||||
#: documents/models.py:40
|
||||
msgid "Regular expression"
|
||||
@@ -56,11 +56,11 @@ msgstr "nome"
|
||||
|
||||
#: documents/models.py:47
|
||||
msgid "match"
|
||||
msgstr "detecção"
|
||||
msgstr "correspondência"
|
||||
|
||||
#: documents/models.py:50
|
||||
msgid "matching algorithm"
|
||||
msgstr "algoritmo de detecção"
|
||||
msgstr "algoritmo de correspondência"
|
||||
|
||||
#: documents/models.py:55
|
||||
msgid "is insensitive"
|
||||
@@ -144,7 +144,7 @@ msgstr "tipo mime"
|
||||
|
||||
#: documents/models.py:178
|
||||
msgid "checksum"
|
||||
msgstr "some de verificação"
|
||||
msgstr "soma de verificação"
|
||||
|
||||
#: documents/models.py:182
|
||||
msgid "The checksum of the original document."
|
||||
@@ -368,15 +368,15 @@ msgstr "mais como este"
|
||||
|
||||
#: documents/models.py:436
|
||||
msgid "has tags in"
|
||||
msgstr "contém etiqueta em"
|
||||
msgstr "contém etiquetas em"
|
||||
|
||||
#: documents/models.py:437
|
||||
msgid "ASN greater than"
|
||||
msgstr ""
|
||||
msgstr "NSA maior que"
|
||||
|
||||
#: documents/models.py:438
|
||||
msgid "ASN less than"
|
||||
msgstr ""
|
||||
msgstr "NSA menor que"
|
||||
|
||||
#: documents/models.py:439
|
||||
msgid "storage path is"
|
||||
@@ -400,55 +400,55 @@ msgstr "regras de filtragem"
|
||||
|
||||
#: documents/models.py:563
|
||||
msgid "Task ID"
|
||||
msgstr ""
|
||||
msgstr "ID da tarefa"
|
||||
|
||||
#: documents/models.py:564
|
||||
msgid "Celery ID for the Task that was run"
|
||||
msgstr ""
|
||||
msgstr "ID da Celery para a tarefa que foi executada"
|
||||
|
||||
#: documents/models.py:569
|
||||
msgid "Acknowledged"
|
||||
msgstr ""
|
||||
msgstr "Confirmado"
|
||||
|
||||
#: documents/models.py:570
|
||||
msgid "If the task is acknowledged via the frontend or API"
|
||||
msgstr ""
|
||||
msgstr "Se a tarefa é reconhecida através do frontend ou API"
|
||||
|
||||
#: documents/models.py:576
|
||||
msgid "Task Filename"
|
||||
msgstr ""
|
||||
msgstr "Nome do arquivo da tarefa"
|
||||
|
||||
#: documents/models.py:577
|
||||
msgid "Name of the file which the Task was run for"
|
||||
msgstr ""
|
||||
msgstr "Nome do arquivo para o qual a tarefa foi executada"
|
||||
|
||||
#: documents/models.py:583
|
||||
msgid "Task Name"
|
||||
msgstr ""
|
||||
msgstr "Nome da tarefa"
|
||||
|
||||
#: documents/models.py:584
|
||||
msgid "Name of the Task which was run"
|
||||
msgstr ""
|
||||
msgstr "Nome da tarefa executada"
|
||||
|
||||
#: documents/models.py:591
|
||||
msgid "Task State"
|
||||
msgstr ""
|
||||
msgstr "Estado da tarefa"
|
||||
|
||||
#: documents/models.py:592
|
||||
msgid "Current state of the task being run"
|
||||
msgstr ""
|
||||
msgstr "Estado atual da tarefa sendo executada"
|
||||
|
||||
#: documents/models.py:597
|
||||
msgid "Created DateTime"
|
||||
msgstr ""
|
||||
msgstr "Data/Hora de criação"
|
||||
|
||||
#: documents/models.py:598
|
||||
msgid "Datetime field when the task result was created in UTC"
|
||||
msgstr ""
|
||||
msgstr "Campo Data/Hora quando o resultado da tarefa foi criado, em UTC"
|
||||
|
||||
#: documents/models.py:603
|
||||
msgid "Started DateTime"
|
||||
msgstr ""
|
||||
msgstr "Data/Hora de início"
|
||||
|
||||
#: documents/models.py:604
|
||||
msgid "Datetime field when the task was started in UTC"
|
||||
@@ -472,7 +472,7 @@ msgstr ""
|
||||
|
||||
#: documents/models.py:626
|
||||
msgid "Comment for the document"
|
||||
msgstr ""
|
||||
msgstr "Comentário para o documento"
|
||||
|
||||
#: documents/models.py:650
|
||||
msgid "user"
|
||||
@@ -562,11 +562,11 @@ msgstr "Inglês (EUA)"
|
||||
|
||||
#: paperless/settings.py:522
|
||||
msgid "Arabic"
|
||||
msgstr ""
|
||||
msgstr "Árabe"
|
||||
|
||||
#: paperless/settings.py:523
|
||||
msgid "Belarusian"
|
||||
msgstr ""
|
||||
msgstr "Bielorrusso"
|
||||
|
||||
#: paperless/settings.py:524
|
||||
msgid "Czech"
|
||||
@@ -626,11 +626,11 @@ msgstr "Russo"
|
||||
|
||||
#: paperless/settings.py:538
|
||||
msgid "Slovenian"
|
||||
msgstr ""
|
||||
msgstr "Esloveno"
|
||||
|
||||
#: paperless/settings.py:539
|
||||
msgid "Serbian"
|
||||
msgstr ""
|
||||
msgstr "Sérvio"
|
||||
|
||||
#: paperless/settings.py:540
|
||||
msgid "Swedish"
|
||||
@@ -638,11 +638,11 @@ msgstr "Sueco"
|
||||
|
||||
#: paperless/settings.py:541
|
||||
msgid "Turkish"
|
||||
msgstr ""
|
||||
msgstr "Turco"
|
||||
|
||||
#: paperless/settings.py:542
|
||||
msgid "Chinese Simplified"
|
||||
msgstr ""
|
||||
msgstr "Chinês Simplificado"
|
||||
|
||||
#: paperless/urls.py:169
|
||||
msgid "Paperless-ngx administration"
|
||||
@@ -662,7 +662,7 @@ msgstr "Filtro"
|
||||
|
||||
#: paperless_mail/admin.py:51
|
||||
msgid "Paperless will only process mails that match ALL of the filters given below."
|
||||
msgstr "Paperless processará somente e-mails que se encaixam em TODOS os filtros abaixo."
|
||||
msgstr "Paperless processará somente e-mails que se encaixem em TODOS os filtros abaixo."
|
||||
|
||||
#: paperless_mail/admin.py:66
|
||||
msgid "Actions"
|
||||
@@ -670,7 +670,7 @@ msgstr "Ações"
|
||||
|
||||
#: paperless_mail/admin.py:69
|
||||
msgid "The action applied to the mail. This action is only performed when the mail body or attachments were consumed from the mail."
|
||||
msgstr ""
|
||||
msgstr "A ação aplicada ao e-mail. Essa ação só é executada quando o corpo do e-mail ou anexos forem consumidos."
|
||||
|
||||
#: paperless_mail/admin.py:77
|
||||
msgid "Metadata"
|
||||
@@ -678,7 +678,7 @@ msgstr "Metadados"
|
||||
|
||||
#: paperless_mail/admin.py:80
|
||||
msgid "Assign metadata to documents consumed from this rule automatically. If you do not assign tags, types or correspondents here, paperless will still process all matching rules that you have defined."
|
||||
msgstr "Atribua metadados aos documentos consumidos por esta regra automaticamente. Se você não atribuir etiquetas, tipos ou correspondentes aqui, paperless ainda sim processará todas as regras de detecção que você definiu."
|
||||
msgstr "Atribua metadados aos documentos consumidos por esta regra automaticamente. Se você não atribuir etiquetas, tipos ou correspondentes aqui, Paperless ainda sim processará todas as regras de correspondência que você definiu."
|
||||
|
||||
#: paperless_mail/apps.py:10
|
||||
msgid "Paperless mail"
|
||||
@@ -750,11 +750,11 @@ msgstr "Processar somente anexos."
|
||||
|
||||
#: paperless_mail/models.py:62
|
||||
msgid "Process full Mail (with embedded attachments in file) as .eml"
|
||||
msgstr ""
|
||||
msgstr "Processar e-mail completo (com anexos incorporados no arquivo) como .eml"
|
||||
|
||||
#: paperless_mail/models.py:64
|
||||
msgid "Process full Mail (with embedded attachments in file) as .eml + process attachments as separate documents"
|
||||
msgstr ""
|
||||
msgstr "Processar e-mail completo (com anexos incorporados no arquivo) como .eml + processar anexos como documentos separados"
|
||||
|
||||
#: paperless_mail/models.py:70
|
||||
msgid "Process all files, including 'inline' attachments."
|
||||
@@ -778,7 +778,7 @@ msgstr "Sinalizar o e-mail, não processar e-mails sinalizados"
|
||||
|
||||
#: paperless_mail/models.py:77
|
||||
msgid "Tag the mail with specified tag, don't process tagged mails"
|
||||
msgstr ""
|
||||
msgstr "Marcar o e-mail com a etiqueta especificada, não processar e-mails marcados"
|
||||
|
||||
#: paperless_mail/models.py:80
|
||||
msgid "Use subject as title"
|
||||
@@ -818,7 +818,7 @@ msgstr "pasta"
|
||||
|
||||
#: paperless_mail/models.py:105
|
||||
msgid "Subfolders must be separated by a delimiter, often a dot ('.') or slash ('/'), but it varies by mail server."
|
||||
msgstr ""
|
||||
msgstr "Subpastas devem ser separadas por um delimitador, muitas vezes um ponto ('.') ou uma barra ('/'), mas varia de acordo com o servidor de e-mail."
|
||||
|
||||
#: paperless_mail/models.py:111
|
||||
msgid "filter from"
|
||||
@@ -859,7 +859,7 @@ msgstr "Anexos inline incluem imagens inseridas, por isso é melhor combinar ess
|
||||
|
||||
#: paperless_mail/models.py:158
|
||||
msgid "consumption scope"
|
||||
msgstr ""
|
||||
msgstr "escopo do consumo"
|
||||
|
||||
#: paperless_mail/models.py:164
|
||||
msgid "action"
|
||||
|
||||
@@ -422,11 +422,12 @@ if _paperless_url:
|
||||
_paperless_uri = urlparse(_paperless_url)
|
||||
CSRF_TRUSTED_ORIGINS.append(_paperless_url)
|
||||
CORS_ALLOWED_ORIGINS.append(_paperless_url)
|
||||
if ["*"] != ALLOWED_HOSTS:
|
||||
|
||||
if ["*"] != ALLOWED_HOSTS:
|
||||
# always allow localhost. Necessary e.g. for healthcheck in docker.
|
||||
ALLOWED_HOSTS.append("localhost")
|
||||
if _paperless_url:
|
||||
ALLOWED_HOSTS.append(_paperless_uri.hostname)
|
||||
else:
|
||||
# always allow localhost. Necessary e.g. for healthcheck in docker.
|
||||
ALLOWED_HOSTS = [_paperless_uri.hostname] + ["localhost"]
|
||||
|
||||
# For use with trusted proxies
|
||||
TRUSTED_PROXIES = __get_list("PAPERLESS_TRUSTED_PROXIES")
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
from typing import Final
|
||||
from typing import Tuple
|
||||
|
||||
__version__: Final[Tuple[int, int, int]] = (1, 14, 2)
|
||||
__version__: Final[Tuple[int, int, int]] = (1, 14, 4)
|
||||
# Version string like X.Y.Z
|
||||
__full_version_str__: Final[str] = ".".join(map(str, __version__))
|
||||
# Version string like X.Y
|
||||
|
||||
@@ -2,7 +2,6 @@ import datetime
|
||||
import itertools
|
||||
import logging
|
||||
import os
|
||||
import re
|
||||
import tempfile
|
||||
import traceback
|
||||
from datetime import date
|
||||
@@ -145,7 +144,7 @@ class TagMailAction(BaseMailAction):
|
||||
A mail action that tags mails after processing.
|
||||
"""
|
||||
|
||||
def __init__(self, parameter):
|
||||
def __init__(self, parameter: str, supports_gmail_labels: bool):
|
||||
# The custom tag should look like "apple:<color>"
|
||||
if "apple:" in parameter.lower():
|
||||
_, self.color = parameter.split(":")
|
||||
@@ -159,18 +158,22 @@ class TagMailAction(BaseMailAction):
|
||||
else:
|
||||
self.keyword = parameter
|
||||
self.color = None
|
||||
self.supports_gmail_labels = supports_gmail_labels
|
||||
|
||||
def get_criteria(self):
|
||||
# AppleMail: We only need to check if mails are \Flagged
|
||||
if self.color:
|
||||
return {"flagged": False}
|
||||
elif self.keyword:
|
||||
return AND(NOT(gmail_label=self.keyword), no_keyword=self.keyword)
|
||||
if self.supports_gmail_labels:
|
||||
return AND(NOT(gmail_label=self.keyword), no_keyword=self.keyword)
|
||||
else:
|
||||
return {"no_keyword": self.keyword}
|
||||
else: # pragma: nocover
|
||||
raise ValueError("This should never happen.")
|
||||
|
||||
def post_consume(self, M: MailBox, message_uid: str, parameter: str):
|
||||
if re.search(r"gmail\.com$|googlemail\.com$", M._host):
|
||||
if self.supports_gmail_labels:
|
||||
M.client.uid("STORE", message_uid, "+X-GM-LABELS", self.keyword)
|
||||
|
||||
# AppleMail
|
||||
@@ -248,15 +251,18 @@ def apply_mail_action(
|
||||
message_date = make_aware(message_date)
|
||||
|
||||
try:
|
||||
action = get_rule_action(rule)
|
||||
|
||||
with get_mailbox(
|
||||
server=account.imap_server,
|
||||
port=account.imap_port,
|
||||
security=account.imap_security,
|
||||
) as M:
|
||||
# Need to know the support for the possible tagging
|
||||
supports_gmail_labels = "X-GM-EXT-1" in M.client.capabilities
|
||||
|
||||
mailbox_login(M, account)
|
||||
M.folder.set(rule.folder)
|
||||
|
||||
action = get_rule_action(rule, supports_gmail_labels)
|
||||
action.post_consume(M, message_uid, rule.action_parameter)
|
||||
|
||||
ProcessedMail.objects.create(
|
||||
@@ -337,7 +343,7 @@ def queue_consumption_tasks(
|
||||
).delay()
|
||||
|
||||
|
||||
def get_rule_action(rule) -> BaseMailAction:
|
||||
def get_rule_action(rule: MailRule, supports_gmail_labels: bool) -> BaseMailAction:
|
||||
"""
|
||||
Returns a BaseMailAction instance for the given rule.
|
||||
"""
|
||||
@@ -351,12 +357,12 @@ def get_rule_action(rule) -> BaseMailAction:
|
||||
elif rule.action == MailRule.MailAction.MARK_READ:
|
||||
return MarkReadMailAction()
|
||||
elif rule.action == MailRule.MailAction.TAG:
|
||||
return TagMailAction(rule.action_parameter)
|
||||
return TagMailAction(rule.action_parameter, supports_gmail_labels)
|
||||
else:
|
||||
raise NotImplementedError("Unknown action.") # pragma: nocover
|
||||
|
||||
|
||||
def make_criterias(rule):
|
||||
def make_criterias(rule: MailRule, supports_gmail_labels: bool):
|
||||
"""
|
||||
Returns criteria to be applied to MailBox.fetch for the given rule.
|
||||
"""
|
||||
@@ -374,7 +380,7 @@ def make_criterias(rule):
|
||||
if rule.filter_body:
|
||||
criterias["body"] = rule.filter_body
|
||||
|
||||
rule_query = get_rule_action(rule).get_criteria()
|
||||
rule_query = get_rule_action(rule, supports_gmail_labels).get_criteria()
|
||||
if isinstance(rule_query, dict):
|
||||
if len(rule_query) or len(criterias):
|
||||
return AND(**rule_query, **criterias)
|
||||
@@ -490,6 +496,7 @@ class MailAccountHandler(LoggingMixin):
|
||||
total_processed_files += self._handle_mail_rule(
|
||||
M,
|
||||
rule,
|
||||
supports_gmail_labels,
|
||||
)
|
||||
except Exception as e:
|
||||
self.log(
|
||||
@@ -512,6 +519,7 @@ class MailAccountHandler(LoggingMixin):
|
||||
self,
|
||||
M: MailBox,
|
||||
rule: MailRule,
|
||||
supports_gmail_labels: bool,
|
||||
):
|
||||
self.log("debug", f"Rule {rule}: Selecting folder {rule.folder}")
|
||||
|
||||
@@ -537,7 +545,7 @@ class MailAccountHandler(LoggingMixin):
|
||||
f"does not exist in account {rule.account}",
|
||||
) from err
|
||||
|
||||
criterias = make_criterias(rule)
|
||||
criterias = make_criterias(rule, supports_gmail_labels)
|
||||
|
||||
self.log(
|
||||
"debug",
|
||||
|
||||
@@ -737,6 +737,7 @@ class TestMail(
|
||||
MailError,
|
||||
TagMailAction,
|
||||
"apple:black",
|
||||
False,
|
||||
)
|
||||
|
||||
def test_handle_mail_account_tag_applemail(self):
|
||||
|
||||
Reference in New Issue
Block a user