diff --git a/README.md b/README.md
index e59535af4..45c71ab67 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,6 @@
[](https://github.com/jonaswinkler/paperless-ng/actions)

+[](https://crowdin.com/project/paperless-ng)
[](https://paperless-ng.readthedocs.io/en/latest/?badge=latest)
[](https://gitter.im/paperless-ng/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[](https://hub.docker.com/r/jonaswinkler/paperless-ng)
@@ -77,9 +78,9 @@ The documentation for Paperless-ng is available on [ReadTheDocs](https://paperle
# Translation
-Paperless is currently available in English, German, Dutch, French, and Portuguese.
+Paperless is currently available in English, German, Dutch, French, Portuguese, Italian, and Romanian.
-There's an active translation project at transifex! If you want to help out by translating paperless into your language, please head over to https://github.com/jonaswinkler/paperless-ng/issues/212 for details.
+There's an active translation project at crowdin! If you want to help out by translating paperless into your language, please head over to https://github.com/jonaswinkler/paperless-ng/issues/212 for details.
# Feature Requests
diff --git a/install-paperless-ng.sh b/install-paperless-ng.sh
index 8fb44e222..c550d253c 100755
--- a/install-paperless-ng.sh
+++ b/install-paperless-ng.sh
@@ -1,7 +1,5 @@
#!/bin/bash
-set -e
-
ask() {
while true ; do
if [[ -z $3 ]] ; then
@@ -64,6 +62,19 @@ if [[ -z $(which docker-compose) ]] ; then
exit 1
fi
+# Check if user has permissions to run Docker by trying to get the status of Docker (docker status).
+# If this fails, the user probably does not have permissions for Docker.
+docker stats --no-stream 2>/dev/null 1>&2
+if [ $? -ne 0 ] ; then
+ echo ""
+ echo "WARN: It look like the current user does not have Docker permissions."
+ echo "WARN: Use 'sudo usermod -aG docker $USER' to assign Docker permissions to the user."
+ echo ""
+ sleep 3
+fi
+
+set -e
+
echo ""
echo "############################################"
echo "### Paperless-ng docker installation ###"
diff --git a/src-ui/messages.xlf b/src-ui/messages.xlf
index 7049f88ae..4b0456899 100644
--- a/src-ui/messages.xlf
+++ b/src-ui/messages.xlf
@@ -1043,63 +1043,77 @@
Title
src/app/components/document-list/filter-editor/filter-editor.component.ts
- 73
+ 77
Title & content
src/app/components/document-list/filter-editor/filter-editor.component.ts
- 74
+ 78
+
+
+
+ ASN
+
+ src/app/components/document-list/filter-editor/filter-editor.component.ts
+ 79
Correspondent:
src/app/components/document-list/filter-editor/filter-editor.component.ts
- 32
+ 33
Without correspondent
src/app/components/document-list/filter-editor/filter-editor.component.ts
- 34
+ 35
Type:
src/app/components/document-list/filter-editor/filter-editor.component.ts
- 39
+ 40
Without document type
src/app/components/document-list/filter-editor/filter-editor.component.ts
- 41
+ 42
Tag:
src/app/components/document-list/filter-editor/filter-editor.component.ts
- 45
+ 46
Without any tag
src/app/components/document-list/filter-editor/filter-editor.component.ts
- 49
+ 50
Title:
src/app/components/document-list/filter-editor/filter-editor.component.ts
- 53
+ 54
+
+
+
+ ASN:
+
+ src/app/components/document-list/filter-editor/filter-editor.component.ts
+ 57
@@ -1826,13 +1840,6 @@
39
-
- ASN
-
- src/app/services/rest/document.service.ts
- 17
-
-
Correspondent
diff --git a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts
index 3ac9df1ff..43387c08f 100644
--- a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts
+++ b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts
@@ -8,12 +8,13 @@ import { DocumentTypeService } from 'src/app/services/rest/document-type.service
import { TagService } from 'src/app/services/rest/tag.service';
import { CorrespondentService } from 'src/app/services/rest/correspondent.service';
import { FilterRule } from 'src/app/data/filter-rule';
-import { FILTER_ADDED_AFTER, FILTER_ADDED_BEFORE, FILTER_CORRESPONDENT, FILTER_CREATED_AFTER, FILTER_CREATED_BEFORE, FILTER_DOCUMENT_TYPE, FILTER_HAS_ANY_TAG, FILTER_HAS_TAG, FILTER_TITLE, FILTER_TITLE_CONTENT } from 'src/app/data/filter-rule-type';
+import { FILTER_ADDED_AFTER, FILTER_ADDED_BEFORE, FILTER_ASN, FILTER_CORRESPONDENT, FILTER_CREATED_AFTER, FILTER_CREATED_BEFORE, FILTER_DOCUMENT_TYPE, FILTER_HAS_ANY_TAG, FILTER_HAS_TAG, FILTER_TITLE, FILTER_TITLE_CONTENT } from 'src/app/data/filter-rule-type';
import { FilterableDropdownSelectionModel } from '../../common/filterable-dropdown/filterable-dropdown.component';
import { ToggleableItemState } from '../../common/filterable-dropdown/toggleable-dropdown-button/toggleable-dropdown-button.component';
const TEXT_FILTER_TARGET_TITLE = "title"
const TEXT_FILTER_TARGET_TITLE_CONTENT = "title-content"
+const TEXT_FILTER_TARGET_ASN = "asn"
@Component({
selector: 'app-filter-editor',
@@ -51,6 +52,9 @@ export class FilterEditorComponent implements OnInit, OnDestroy {
case FILTER_TITLE:
return $localize`Title: ${rule.value}`
+
+ case FILTER_ASN:
+ return $localize`ASN: ${rule.value}`
}
}
@@ -71,7 +75,8 @@ export class FilterEditorComponent implements OnInit, OnDestroy {
textFilterTargets = [
{id: TEXT_FILTER_TARGET_TITLE, name: $localize`Title`},
- {id: TEXT_FILTER_TARGET_TITLE_CONTENT, name: $localize`Title & content`}
+ {id: TEXT_FILTER_TARGET_TITLE_CONTENT, name: $localize`Title & content`},
+ {id: TEXT_FILTER_TARGET_ASN, name: $localize`ASN`}
]
textFilterTarget = TEXT_FILTER_TARGET_TITLE_CONTENT
@@ -111,6 +116,10 @@ export class FilterEditorComponent implements OnInit, OnDestroy {
this._textFilter = rule.value
this.textFilterTarget = TEXT_FILTER_TARGET_TITLE_CONTENT
break
+ case FILTER_ASN:
+ this._textFilter = rule.value
+ this.textFilterTarget = TEXT_FILTER_TARGET_ASN
+ break
case FILTER_CREATED_AFTER:
this.dateCreatedAfter = rule.value
break
@@ -147,6 +156,9 @@ export class FilterEditorComponent implements OnInit, OnDestroy {
if (this._textFilter && this.textFilterTarget == TEXT_FILTER_TARGET_TITLE) {
filterRules.push({rule_type: FILTER_TITLE, value: this._textFilter})
}
+ if (this._textFilter && this.textFilterTarget == TEXT_FILTER_TARGET_ASN) {
+ filterRules.push({rule_type: FILTER_ASN, value: this._textFilter})
+ }
if (this.tagSelectionModel.isNoneSelected()) {
filterRules.push({rule_type: FILTER_HAS_ANY_TAG, value: "false"})
} else {