Merge branch 'main' into beta
							
								
								
									
										91
									
								
								.github/ISSUE_TEMPLATE/bug-report.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,91 @@ | ||||
| name: Bug report | ||||
| description: Something is not working | ||||
| title: "[BUG] Concise description of the issue" | ||||
| labels: ["bug", "unconfirmed"] | ||||
| body: | ||||
|   - type: markdown | ||||
|     attributes: | ||||
|       value: | | ||||
|         Have a question? 👉 [Start a new discussion](https://github.com/paperless-ngx/paperless-ngx/discussions/new) or [ask in chat](https://matrix.to/#/#paperless:adnidor.de). | ||||
|          | ||||
|         Before opening an issue, please check [the documentation](https://paperless-ngx.readthedocs.io/en/latest/troubleshooting.html) and see if it helps you resolve your issue. Please also make sure that you followed the installation instructions. | ||||
|          | ||||
|         If you encounter issues while installing or configuring Paperless-ngx, please post in the ["Support" section of the discussions](https://github.com/paperless-ngx/paperless-ngx/discussions/new?category=support). Remember that Paperless successfully runs on a variety of different systems. If Paperless-ngx does not start, it's likely an issue with your system, not an issue of Paperless-ngx. | ||||
|          | ||||
|         Finally, please search issues and discussions before opening a new bug report. | ||||
|   - type: textarea | ||||
|     id: description | ||||
|     attributes: | ||||
|       label: Description | ||||
|       description: A clear and concise description of what the bug is. | ||||
|       placeholder: Currently... | ||||
|     validations: | ||||
|       required: true | ||||
|   - type: textarea | ||||
|     id: expected-behavior | ||||
|     attributes: | ||||
|       label: Expected behavior | ||||
|       description: A clear and concise description of what you expected to happen. | ||||
|       placeholder: In this situation... | ||||
|     validations: | ||||
|       required: true | ||||
|   - type: textarea | ||||
|     id: reproduction | ||||
|     attributes: | ||||
|       label: Steps to reproduce | ||||
|       description: Steps to reproduce the behavior | ||||
|       placeholder: "1. Go to '...', 2. Click on '....', 3. See error" | ||||
|     validations: | ||||
|       required: true | ||||
|   - type: textarea | ||||
|     id: logs | ||||
|     attributes: | ||||
|       label: Webserver logs | ||||
|       description: If available, post any logs from the web server related to your issue. | ||||
|       render: bash | ||||
|   - type: textarea | ||||
|     id: screenshots | ||||
|     attributes: | ||||
|       label: Screenshots | ||||
|       description: If applicable, add screenshots to help explain your problem. | ||||
|   - type: input | ||||
|     id: version | ||||
|     attributes: | ||||
|       label: Paperless-ngx version | ||||
|       placeholder: e.g. 1.6.0 | ||||
|     validations: | ||||
|       required: true | ||||
|   - type: input | ||||
|     id: host-os | ||||
|     attributes: | ||||
|       label: Host OS | ||||
|       description: Host OS of the machine running paperless-ngx | ||||
|       placeholder: e.g. Archlinux / Ubuntu 20.04 | ||||
|     validations: | ||||
|       required: true | ||||
|   - type: dropdown | ||||
|     id: install-method | ||||
|     attributes: | ||||
|       label: Installation method | ||||
|       options: | ||||
|         - Docker | ||||
|         - Bare metal | ||||
|         - Other (please describe above) | ||||
|     validations: | ||||
|       required: true | ||||
|   - type: input | ||||
|     id: browser | ||||
|     attributes: | ||||
|       label: Browser | ||||
|       description: Which browser you are using, if relevant | ||||
|       placeholder: e.g. Chrome, Safari | ||||
|   - type: input | ||||
|     id: config-changes | ||||
|     attributes: | ||||
|       label: Configuration changes | ||||
|       description: Any configuration changes you made in `docker-compose.yml`, `docker-compose.env` or `paperless.conf`. | ||||
|   - type: input | ||||
|     id: other | ||||
|     attributes: | ||||
|       label: Other | ||||
|       description: Any other relevant details | ||||
							
								
								
									
										11
									
								
								.github/ISSUE_TEMPLATE/config.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,11 @@ | ||||
| blank_issues_enabled: false | ||||
| contact_links: | ||||
|   - name: 🤔 Questions and Help | ||||
|     url: https://github.com/paperless-ngx/paperless-ngx/discussions | ||||
|     about: This issue tracker is not for support questions. Please refer to our Discussions. | ||||
|   - name: 💬 Chat | ||||
|     url: https://matrix.to/#/#paperless:adnidor.de | ||||
|     about: Want to discuss Paperless-ngx with others? Check out our chat. | ||||
|   - name: 🚀 Feature Request | ||||
|     url: https://github.com/paperless-ngx/paperless-ngx/discussions/new?category=feature-requests | ||||
|     about: Remember to search for existing feature requests and "up-vote" any you like | ||||
							
								
								
									
										588
									
								
								docs/_static/css/custom.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,588 @@ | ||||
| /* Variables */ | ||||
| :root { | ||||
|   --color-text-body: #5c5962; | ||||
|   --color-text-body-light: #fcfcfc; | ||||
|   --color-text-anchor: #7253ed; | ||||
|   --color-text-alt: rgba(0, 0, 0, 0.3); | ||||
|   --color-text-title: #27262b; | ||||
|   --color-text-code-inline: #e74c3c; | ||||
|   --color-text-code-nt: #062873; | ||||
|   --color-text-selection: #b19eff; | ||||
|   --color-bg-body: #fcfcfc; | ||||
|   --color-bg-body-alt: #f3f6f6; | ||||
|   --color-bg-side-nav: #f5f6fa; | ||||
|   --color-bg-side-nav-hover: #ebedf5; | ||||
|   --color-bg-code-block: var(--color-bg-side-nav); | ||||
|   --color-border: #eeebee; | ||||
|   --color-btn-neutral-bg: #f3f6f6; | ||||
|   --color-btn-neutral-bg-hover: #e5ebeb; | ||||
|   --color-success-title: #1abc9c; | ||||
|   --color-success-body: #dbfaf4; | ||||
|   --color-warning-title: #f0b37e; | ||||
|   --color-warning-body: #ffedcc; | ||||
|   --color-danger-title: #f29f97; | ||||
|   --color-danger-body: #fdf3f2; | ||||
|   --color-info-title: #6ab0de; | ||||
|   --color-info-body: #e7f2fa; | ||||
| } | ||||
|  | ||||
| .dark-mode { | ||||
|   --color-text-body: #abb2bf; | ||||
|   --color-text-body-light: #9499a2; | ||||
|   --color-text-alt: rgba(0255, 255, 255, 0.5); | ||||
|   --color-text-title: var(--color-text-anchor); | ||||
|   --color-text-code-inline: #abb2bf; | ||||
|   --color-text-code-nt: #2063f3; | ||||
|   --color-text-selection: #030303; | ||||
|   --color-bg-body: #1d1d20 !important; | ||||
|   --color-bg-body-alt: #131315; | ||||
|   --color-bg-side-nav: #18181a; | ||||
|   --color-bg-side-nav-hover: #101216; | ||||
|   --color-bg-code-block: #101216; | ||||
|   --color-border: #47494f; | ||||
|   --color-btn-neutral-bg: #242529; | ||||
|   --color-btn-neutral-bg-hover: #101216; | ||||
|   --color-success-title: #02120f; | ||||
|   --color-success-body: #041b17; | ||||
|   --color-warning-title: #1b0e03; | ||||
|   --color-warning-body: #371d06; | ||||
|   --color-danger-title: #120902; | ||||
|   --color-danger-body: #1b0503; | ||||
|   --color-info-title: #020608; | ||||
|   --color-info-body: #06141e; | ||||
| } | ||||
|  | ||||
| * { | ||||
|   transition: background-color 0.3s ease, border-color 0.3s ease; | ||||
| } | ||||
|  | ||||
| /* Typography */ | ||||
| body { | ||||
|   font-family: system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif; | ||||
|   font-size: inherit; | ||||
|   line-height: 1.4; | ||||
|   color: var(--color-text-body); | ||||
| } | ||||
|  | ||||
| h1, h2, h3, h4, h5, h6 { | ||||
|   font-family: inherit; | ||||
| } | ||||
|  | ||||
| .rst-content .toctree-wrapper>p.caption, .rst-content h1, .rst-content h2, .rst-content h3, .rst-content h4, .rst-content h5, .rst-content h6 { | ||||
|   padding-top: .5em; | ||||
| } | ||||
|  | ||||
| p, .main-content-wrap, .rst-content .section ul, .rst-content .toctree-wrapper ul, .rst-content section ul, .wy-plain-list-disc, article ul { | ||||
|   line-height: 1.6; | ||||
| } | ||||
|  | ||||
| pre, .code, .rst-content .linenodiv pre, .rst-content div[class^=highlight] pre, .rst-content pre.literal-block { | ||||
|   font-family: "SFMono-Regular", Menlo,Consolas, Monospace; | ||||
|   font-size: 0.75em; | ||||
|   line-height: 1.8; | ||||
| } | ||||
|  | ||||
| .wy-menu-vertical li.toctree-l3,.wy-menu-vertical li.toctree-l4 { | ||||
|   font-size: 1rem | ||||
| } | ||||
|  | ||||
| .rst-versions { | ||||
|   font-family: inherit; | ||||
|   line-height: 1; | ||||
| } | ||||
|  | ||||
| footer, footer p { | ||||
|   font-size: .8rem; | ||||
| } | ||||
|  | ||||
| footer .rst-footer-buttons { | ||||
|   font-size: 1rem; | ||||
| } | ||||
|  | ||||
| @media (max-width: 400px) { | ||||
|   /* break code lines on mobile */ | ||||
|   pre, code { | ||||
|     word-break: break-word; | ||||
|   } | ||||
| } | ||||
|  | ||||
|  | ||||
| /* Layout */ | ||||
| .wy-side-nav-search, .wy-menu-vertical { | ||||
|   width: auto; | ||||
| } | ||||
|  | ||||
| .wy-nav-side { | ||||
|   z-index: 0; | ||||
|   display: flex; | ||||
|   flex-wrap: wrap; | ||||
|   background-color: var(--color-bg-side-nav); | ||||
| } | ||||
|  | ||||
| .wy-side-scroll { | ||||
|   width: 100%; | ||||
|   overflow-y: auto; | ||||
| } | ||||
|  | ||||
| @media (min-width: 66.5rem) { | ||||
|   .wy-side-scroll { | ||||
|       width:264px | ||||
|   } | ||||
| } | ||||
|  | ||||
| @media (min-width: 50rem) { | ||||
|   .wy-nav-side { | ||||
|       flex-wrap: nowrap; | ||||
|       position: fixed; | ||||
|       width: 248px; | ||||
|       height: 100%; | ||||
|       flex-direction: column; | ||||
|       border-right: 1px solid var(--color-border); | ||||
|       align-items:flex-end | ||||
|   } | ||||
| } | ||||
|  | ||||
| @media (min-width: 66.5rem) { | ||||
|   .wy-nav-side { | ||||
|       width: calc((100% - 1064px) / 2 + 264px); | ||||
|       min-width:264px | ||||
|   } | ||||
| } | ||||
|  | ||||
| @media (min-width: 50rem) { | ||||
|   .wy-nav-content-wrap { | ||||
|       position: relative; | ||||
|       max-width: 800px; | ||||
|       margin-left:248px | ||||
|   } | ||||
| } | ||||
|  | ||||
| @media (min-width: 66.5rem) { | ||||
|   .wy-nav-content-wrap { | ||||
|       margin-left:calc((100% - 1064px) / 2 + 264px) | ||||
|   } | ||||
| } | ||||
|  | ||||
|  | ||||
| /* Colors */ | ||||
| body.wy-body-for-nav, | ||||
| .wy-nav-content { | ||||
|   background: var(--color-bg-body); | ||||
| } | ||||
|  | ||||
| .wy-nav-side { | ||||
|   border-right: 1px solid var(--color-border); | ||||
| } | ||||
|  | ||||
| .wy-side-nav-search, .wy-nav-top { | ||||
|   background: var(--color-bg-side-nav); | ||||
|   border-bottom: 1px solid var(--color-border); | ||||
| } | ||||
|  | ||||
| .wy-nav-content-wrap { | ||||
|   background: inherit; | ||||
| } | ||||
|  | ||||
| .wy-side-nav-search > a, .wy-nav-top a, .wy-nav-top i { | ||||
|   color: var(--color-text-title); | ||||
| } | ||||
|  | ||||
| .wy-side-nav-search > a:hover, .wy-nav-top a:hover { | ||||
|   background: transparent; | ||||
| } | ||||
|  | ||||
| .wy-side-nav-search > div.version { | ||||
|   color: var(--color-text-alt) | ||||
| } | ||||
|  | ||||
| .wy-side-nav-search > div[role="search"] { | ||||
|   border-top: 1px solid var(--color-border); | ||||
| } | ||||
|  | ||||
| .wy-menu-vertical li.toctree-l2.current>a, .wy-menu-vertical li.toctree-l2.current li.toctree-l3>a, | ||||
| .wy-menu-vertical li.toctree-l3.current>a, .wy-menu-vertical li.toctree-l3.current li.toctree-l4>a { | ||||
|   background: var(--color-bg-side-nav); | ||||
| } | ||||
|  | ||||
| .rst-content .highlighted { | ||||
|   background: #eedd85; | ||||
|   box-shadow: 0 0 0 2px #eedd85; | ||||
|   font-weight: 600; | ||||
| } | ||||
|  | ||||
| .wy-side-nav-search input[type=text], | ||||
| html.writer-html5 .rst-content table.docutils th { | ||||
|   color: var(--color-text-body); | ||||
| } | ||||
|  | ||||
| .rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td, | ||||
| .wy-table-backed, | ||||
| .wy-table-odd td, | ||||
| .wy-table-striped tr:nth-child(2n-1) td { | ||||
|   background-color: var(--color-bg-body-alt); | ||||
| } | ||||
|  | ||||
| .rst-content table.docutils, | ||||
| .wy-table-bordered-all, | ||||
| html.writer-html5 .rst-content table.docutils th, | ||||
| .rst-content table.docutils td, | ||||
| .wy-table-bordered-all td, | ||||
| hr { | ||||
|   border-color: var(--color-border) !important; | ||||
| } | ||||
|  | ||||
| ::selection { | ||||
|   background: var(--color-text-selection); | ||||
| } | ||||
|  | ||||
| /* Ridiculous rules are taken from sphinx_rtd */ | ||||
| .rst-content .admonition-title, | ||||
| .wy-alert-title { | ||||
|   color: var(--color-text-body-light); | ||||
| } | ||||
|  | ||||
| .rst-content .hint, | ||||
| .rst-content .important, | ||||
| .rst-content .tip, | ||||
| .rst-content .wy-alert-success, | ||||
| .wy-alert.wy-alert-success { | ||||
|   background: var(--color-success-body); | ||||
| } | ||||
|  | ||||
| .rst-content .hint .admonition-title, | ||||
| .rst-content .hint .wy-alert-title, | ||||
| .rst-content .important .admonition-title, | ||||
| .rst-content .important .wy-alert-title, | ||||
| .rst-content .tip .admonition-title, | ||||
| .rst-content .tip .wy-alert-title, | ||||
| .rst-content .wy-alert-success .admonition-title, | ||||
| .rst-content .wy-alert-success .wy-alert-title, | ||||
| .wy-alert.wy-alert-success .rst-content .admonition-title, | ||||
| .wy-alert.wy-alert-success .wy-alert-title { | ||||
|   background-color: var(--color-success-title); | ||||
| } | ||||
|  | ||||
| .rst-content .admonition-todo, | ||||
| .rst-content .attention, | ||||
| .rst-content .caution, | ||||
| .rst-content .warning, | ||||
| .rst-content .wy-alert-warning, | ||||
| .wy-alert.wy-alert-warning { | ||||
|   background: var(--color-warning-body); | ||||
| } | ||||
|  | ||||
| .rst-content .admonition-todo .admonition-title, | ||||
| .rst-content .admonition-todo .wy-alert-title, | ||||
| .rst-content .attention .admonition-title, | ||||
| .rst-content .attention .wy-alert-title, | ||||
| .rst-content .caution .admonition-title, | ||||
| .rst-content .caution .wy-alert-title, | ||||
| .rst-content .warning .admonition-title, | ||||
| .rst-content .warning .wy-alert-title, | ||||
| .rst-content .wy-alert-warning .admonition-title, | ||||
| .rst-content .wy-alert-warning .wy-alert-title, | ||||
| .rst-content .wy-alert.wy-alert-warning .admonition-title, | ||||
| .wy-alert.wy-alert-warning .rst-content .admonition-title, | ||||
| .wy-alert.wy-alert-warning .wy-alert-title { | ||||
|   background: var(--color-warning-title); | ||||
| } | ||||
|  | ||||
| .rst-content .danger, | ||||
| .rst-content .error, | ||||
| .rst-content .wy-alert-danger, | ||||
| .wy-alert.wy-alert-danger { | ||||
|   background: var(--color-danger-body); | ||||
| } | ||||
|  | ||||
| .rst-content .danger .admonition-title, | ||||
| .rst-content .danger .wy-alert-title, | ||||
| .rst-content .error .admonition-title, | ||||
| .rst-content .error .wy-alert-title, | ||||
| .rst-content .wy-alert-danger .admonition-title, | ||||
| .rst-content .wy-alert-danger .wy-alert-title, | ||||
| .wy-alert.wy-alert-danger .rst-content .admonition-title, | ||||
| .wy-alert.wy-alert-danger .wy-alert-title { | ||||
|   background: var(--color-danger-title); | ||||
| } | ||||
|  | ||||
| .rst-content .note, | ||||
| .rst-content .seealso, | ||||
| .rst-content .wy-alert-info, | ||||
| .wy-alert.wy-alert-info { | ||||
|   background: var(--color-info-body); | ||||
| } | ||||
|  | ||||
| .rst-content .note .admonition-title, | ||||
| .rst-content .note .wy-alert-title, | ||||
| .rst-content .seealso .admonition-title, | ||||
| .rst-content .seealso .wy-alert-title, | ||||
| .rst-content .wy-alert-info .admonition-title, | ||||
| .rst-content .wy-alert-info .wy-alert-title, | ||||
| .wy-alert.wy-alert-info .rst-content .admonition-title, | ||||
| .wy-alert.wy-alert-info .wy-alert-title { | ||||
|   background: var(--color-info-title); | ||||
| } | ||||
|  | ||||
|  | ||||
|  | ||||
| /* Links */ | ||||
| a, a:visited, | ||||
| .wy-menu-vertical a, | ||||
| a.icon.icon-home, | ||||
| .wy-menu-vertical li.toctree-l1.current > a.current { | ||||
|   color: var(--color-text-anchor); | ||||
|   text-decoration: none; | ||||
| } | ||||
|  | ||||
| a:hover, .wy-breadcrumbs-aside a { | ||||
|   color: var(--color-text-anchor); /* reset */ | ||||
| } | ||||
|  | ||||
| .rst-versions a, .rst-versions .rst-current-version { | ||||
|   color: #var(--color-text-anchor); | ||||
| } | ||||
|  | ||||
| .wy-nav-content a.reference, .wy-nav-content a:not([class]) { | ||||
|   background-image: linear-gradient(var(--color-border) 0%, var(--color-border) 100%); | ||||
|   background-repeat: repeat-x; | ||||
|   background-position: 0 100%; | ||||
|   background-size: 1px 1px; | ||||
| } | ||||
|  | ||||
| .wy-nav-content a.reference:hover, .wy-nav-content a:not([class]):hover { | ||||
|   background-image: linear-gradient(rgba(114,83,237,0.45) 0%, rgba(114,83,237,0.45) 100%); | ||||
|   background-size: 1px 1px; | ||||
| } | ||||
|  | ||||
| .wy-menu-vertical a:hover, | ||||
| .wy-menu-vertical li.current a:hover, | ||||
| .wy-menu-vertical a:active { | ||||
|   background: var(--color-bg-side-nav-hover) !important; | ||||
|   color: var(--color-text-body); | ||||
| } | ||||
|  | ||||
| .wy-menu-vertical li.toctree-l1.current>a, | ||||
| .wy-menu-vertical li.current>a, | ||||
| .wy-menu-vertical li.on a { | ||||
|   background-color: var(--color-bg-side-nav-hover); | ||||
|   border: none; | ||||
|   font-weight: normal; | ||||
| } | ||||
|  | ||||
| .wy-menu-vertical li.current { | ||||
|   background-color: inherit; | ||||
| } | ||||
|  | ||||
| .wy-menu-vertical li.current a { | ||||
|   border-right: none; | ||||
| } | ||||
|  | ||||
| .wy-menu-vertical li.toctree-l2 a, | ||||
| .wy-menu-vertical li.toctree-l3 a, | ||||
| .wy-menu-vertical li.toctree-l4 a, | ||||
| .wy-menu-vertical li.toctree-l5 a, | ||||
| .wy-menu-vertical li.toctree-l6 a, | ||||
| .wy-menu-vertical li.toctree-l7 a, | ||||
| .wy-menu-vertical li.toctree-l8 a, | ||||
| .wy-menu-vertical li.toctree-l9 a, | ||||
| .wy-menu-vertical li.toctree-l10 a { | ||||
|   color: var(--color-text-body); | ||||
| } | ||||
|  | ||||
| a.image-reference, a.image-reference:hover { | ||||
|   background: none !important; | ||||
| } | ||||
|  | ||||
| a.image-reference img { | ||||
|   cursor: zoom-in; | ||||
| } | ||||
|  | ||||
|  | ||||
| /* Code blocks */ | ||||
| .rst-content code, .rst-content tt, code { | ||||
|   padding: 0.25em; | ||||
|   font-weight: 400; | ||||
|   background-color: var(--color-bg-code-block); | ||||
|   border: 1px solid var(--color-border); | ||||
|   border-radius: 4px; | ||||
| } | ||||
|  | ||||
| .rst-content div[class^=highlight], .rst-content pre.literal-block { | ||||
|   padding: 0.7rem; | ||||
|   margin-top: 0; | ||||
|   margin-bottom: 0.75rem; | ||||
|   overflow-x: auto; | ||||
|   background-color: var(--color-bg-side-nav); | ||||
|   border-color: var(--color-border); | ||||
|   border-radius: 4px; | ||||
|   box-shadow: none; | ||||
| } | ||||
|  | ||||
| .rst-content .admonition-title, | ||||
| .rst-content div.admonition, | ||||
| .wy-alert-title { | ||||
|   padding: 10px 12px; | ||||
|   border-top-left-radius: 4px; | ||||
|   border-top-right-radius: 4px; | ||||
| } | ||||
|  | ||||
| .highlight .go { | ||||
|   color: inherit; | ||||
| } | ||||
|  | ||||
| .highlight .nt { | ||||
|   color: var(--color-text-code-nt); | ||||
| } | ||||
|  | ||||
| .rst-content code.literal, | ||||
| .rst-content tt.literal { | ||||
|   border-color: var(--color-border); | ||||
|   background-color: var(--color-border); | ||||
|   color: var(--color-text-code-inline) | ||||
| } | ||||
|  | ||||
|  | ||||
| /* Search */ | ||||
| .wy-side-nav-search input[type=text] { | ||||
|   border: none; | ||||
|   border-radius: 0; | ||||
|   background-color: transparent; | ||||
|   font-family: inherit; | ||||
|   font-size: .85rem; | ||||
|   box-shadow: none; | ||||
|   padding: .7rem 1rem .7rem 2.8rem; | ||||
|   margin: 0; | ||||
| } | ||||
|  | ||||
| #rtd-search-form { | ||||
|   position: relative; | ||||
| } | ||||
|  | ||||
| #rtd-search-form:before { | ||||
|   font: normal normal normal 14px/1 FontAwesome; | ||||
|   font-size: inherit; | ||||
|   text-rendering: auto; | ||||
|   -webkit-font-smoothing: antialiased; | ||||
|   -moz-osx-font-smoothing: grayscale; | ||||
|   content: "\f002"; | ||||
|   color: var(--color-text-alt); | ||||
|   position: absolute; | ||||
|   left: 1.5rem; | ||||
|   top: .7rem; | ||||
| } | ||||
|  | ||||
| /* Side nav */ | ||||
| .wy-side-nav-search { | ||||
|   padding: 1rem 0 0 0; | ||||
| } | ||||
|  | ||||
| .wy-menu-vertical li a button.toctree-expand { | ||||
|   float: right; | ||||
|   margin-right: -1.5em; | ||||
|   padding: 0 .5em; | ||||
| } | ||||
|  | ||||
| .wy-menu-vertical a, | ||||
| .wy-menu-vertical li.current>a, | ||||
| .wy-menu-vertical li.current li>a { | ||||
|   padding-right: 1.5em !important; | ||||
| } | ||||
|  | ||||
| .wy-menu-vertical li.current li>a.current { | ||||
|   font-weight: 600; | ||||
| } | ||||
|  | ||||
| /* Misc spacing */ | ||||
| .rst-content .admonition-title, .wy-alert-title { | ||||
|   padding: 10px 12px; | ||||
| } | ||||
|  | ||||
| /* Buttons */ | ||||
| .btn { | ||||
|   display: inline-block; | ||||
|   box-sizing: border-box; | ||||
|   padding: 0.3em 1em; | ||||
|   margin: 0; | ||||
|   font-family: inherit; | ||||
|   font-size: inherit; | ||||
|   font-weight: 500; | ||||
|   line-height: 1.5; | ||||
|   color: #var(--color-text-anchor); | ||||
|   text-decoration: none; | ||||
|   vertical-align: baseline; | ||||
|   background-color: #f7f7f7; | ||||
|   border-width: 0; | ||||
|   border-radius: 4px; | ||||
|   box-shadow: 0 1px 2px rgba(0,0,0,0.12),0 3px 10px rgba(0,0,0,0.08); | ||||
|   appearance: none; | ||||
| } | ||||
|  | ||||
| .btn:active { | ||||
|   padding: 0.3em 1em; | ||||
| } | ||||
|  | ||||
| .rst-content .btn:focus { | ||||
|   outline: 1px solid #ccc; | ||||
| } | ||||
|  | ||||
| .rst-content .btn-neutral, .rst-content .btn span.fa { | ||||
|   color: var(--color-text-body) !important; | ||||
| } | ||||
|  | ||||
| .btn-neutral { | ||||
|   background-color: var(--color-btn-neutral-bg) !important; | ||||
|   color: var(--color-btn-neutral-text) !important; | ||||
|   border: 1px solid var(--color-btn-neutral-bg); | ||||
| } | ||||
|  | ||||
| .btn:hover, .btn-neutral:hover { | ||||
|   background-color: var(--color-btn-neutral-bg-hover) !important; | ||||
| } | ||||
|  | ||||
|  | ||||
| /* Icon overrides */ | ||||
| .wy-side-nav-search a.icon-home:before { | ||||
|   display: none; | ||||
| } | ||||
|  | ||||
| .fa-minus-square-o:before,.wy-menu-vertical li.current>a button.toctree-expand:before,.wy-menu-vertical li.on a button.toctree-expand:before { | ||||
|   content: "\f106"; /* fa-angle-up */ | ||||
| } | ||||
|  | ||||
| .fa-plus-square-o:before, .wy-menu-vertical li button.toctree-expand:before { | ||||
|   content: "\f107"; /* fa-angle-down */ | ||||
| } | ||||
|  | ||||
|  | ||||
| /* Misc */ | ||||
| .wy-nav-top { | ||||
|   line-height: 36px; | ||||
| } | ||||
|  | ||||
| .wy-nav-top > i { | ||||
|   font-size: 24px; | ||||
|   padding: 8px 0 0 2px; | ||||
|   color:#var(--color-text-anchor); | ||||
| } | ||||
|  | ||||
| .rst-content table.docutils td, | ||||
| .rst-content table.docutils th, | ||||
| .rst-content table.field-list td, | ||||
| .rst-content table.field-list th, | ||||
| .wy-table td, | ||||
| .wy-table th { | ||||
|   padding: 8px 14px; | ||||
| } | ||||
|  | ||||
| .dark-mode-toggle { | ||||
|   position: absolute; | ||||
|   top: 14px; | ||||
|   right: 12px; | ||||
|   height: 20px; | ||||
|   width: 24px; | ||||
|   z-index: 1000; | ||||
|   border: none; | ||||
|   background-color: transparent; | ||||
|   color: inherit; | ||||
|   opacity: 0.7; | ||||
| } | ||||
							
								
								
									
										14
									
								
								docs/_static/custom.css
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -1,14 +0,0 @@ | ||||
| /* override table width restrictions */ | ||||
| @media screen and (min-width: 767px) { | ||||
|  | ||||
|   .wy-table-responsive table td { | ||||
|     /* !important prevents the common CSS stylesheets from | ||||
|        overriding this as on RTD they are loaded after this stylesheet */ | ||||
|     white-space: normal !important; | ||||
|   } | ||||
|  | ||||
|   .wy-table-responsive { | ||||
|     overflow: visible !important; | ||||
|   } | ||||
|  | ||||
| } | ||||
							
								
								
									
										47
									
								
								docs/_static/js/darkmode.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,47 @@ | ||||
| let toggleButton; | ||||
| let icon; | ||||
|  | ||||
| function load() { | ||||
| 	"use strict"; | ||||
|  | ||||
| 	toggleButton = document.createElement("button"); | ||||
| 	toggleButton.setAttribute("title", "Toggle dark mode"); | ||||
| 	toggleButton.classList.add("dark-mode-toggle"); | ||||
| 	icon = document.createElement("i"); | ||||
| 	icon.classList.add("fa", darkModeState ? "fa-sun-o" : "fa-moon-o"); | ||||
| 	toggleButton.appendChild(icon); | ||||
| 	document.body.prepend(toggleButton); | ||||
|  | ||||
| 	// Listen for changes in the OS settings | ||||
| 	// addListener is used because older versions of Safari don't support addEventListener | ||||
| 	// prefersDarkQuery set in <head> | ||||
| 	if (prefersDarkQuery) { | ||||
| 		prefersDarkQuery.addListener(function (evt) { | ||||
| 			toggleDarkMode(evt.matches); | ||||
| 		}); | ||||
| 	} | ||||
|  | ||||
| 	// Initial setting depending on the prefers-color-mode or localstorage | ||||
| 	// darkModeState should be set in the document <head> to prevent flash | ||||
| 	if (darkModeState == undefined) darkModeState = false; | ||||
| 	toggleDarkMode(darkModeState); | ||||
|  | ||||
| 	// Toggles the "dark-mode" class on click and sets localStorage state | ||||
| 	toggleButton.addEventListener("click", () => { | ||||
| 		darkModeState = !darkModeState; | ||||
|  | ||||
| 		toggleDarkMode(darkModeState); | ||||
| 		localStorage.setItem("dark-mode", darkModeState); | ||||
| 	}); | ||||
| } | ||||
|  | ||||
| function toggleDarkMode(state) { | ||||
| 	document.documentElement.classList.toggle("dark-mode", state); | ||||
| 	document.documentElement.classList.toggle("light-mode", !state); | ||||
| 	icon.classList.remove("fa-sun-o"); | ||||
| 	icon.classList.remove("fa-moon-o"); | ||||
| 	icon.classList.add(state ? "fa-sun-o" : "fa-moon-o"); | ||||
| 	darkModeState = state; | ||||
| } | ||||
|  | ||||
| document.addEventListener("DOMContentLoaded", load); | ||||
							
								
								
									
										
											BIN
										
									
								
								docs/_static/screenshot.png
									
									
									
									
										vendored
									
									
								
							
							
						
						| Before Width: | Height: | Size: 445 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/_static/screenshots/bulk-edit.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 661 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/_static/screenshots/correspondents.png
									
									
									
									
										vendored
									
									
								
							
							
						
						| Before Width: | Height: | Size: 106 KiB After Width: | Height: | Size: 457 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/_static/screenshots/dashboard.png
									
									
									
									
										vendored
									
									
								
							
							
						
						| Before Width: | Height: | Size: 167 KiB After Width: | Height: | Size: 436 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/_static/screenshots/documents-filter.png
									
									
									
									
										vendored
									
									
								
							
							
						
						| Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 462 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/_static/screenshots/documents-largecards.png
									
									
									
									
										vendored
									
									
								
							
							
						
						| Before Width: | Height: | Size: 306 KiB After Width: | Height: | Size: 608 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/_static/screenshots/documents-smallcards-dark.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 698 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/_static/screenshots/documents-smallcards.png
									
									
									
									
										vendored
									
									
								
							
							
						
						| Before Width: | Height: | Size: 410 KiB After Width: | Height: | Size: 706 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/_static/screenshots/documents-table.png
									
									
									
									
										vendored
									
									
								
							
							
						
						| Before Width: | Height: | Size: 137 KiB After Width: | Height: | Size: 480 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/_static/screenshots/editing.png
									
									
									
									
										vendored
									
									
								
							
							
						
						| Before Width: | Height: | Size: 293 KiB After Width: | Height: | Size: 848 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/_static/screenshots/logs.png
									
									
									
									
										vendored
									
									
								
							
							
						
						| Before Width: | Height: | Size: 260 KiB After Width: | Height: | Size: 703 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/_static/screenshots/mobile.png
									
									
									
									
										vendored
									
									
								
							
							
						
						| Before Width: | Height: | Size: 158 KiB After Width: | Height: | Size: 388 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/_static/screenshots/new-tag.png
									
									
									
									
										vendored
									
									
								
							
							
						
						| Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 26 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/_static/screenshots/search-preview.png
									
									
									
									
										vendored
									
									
								
							
							
						
						| Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 54 KiB | 
							
								
								
									
										
											BIN
										
									
								
								docs/_static/screenshots/search-results.png
									
									
									
									
										vendored
									
									
								
							
							
						
						| Before Width: | Height: | Size: 261 KiB After Width: | Height: | Size: 517 KiB | 
							
								
								
									
										13
									
								
								docs/_templates/layout.html
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,13 @@ | ||||
| {% extends "!layout.html" %} | ||||
| {% block extrahead %} | ||||
|     <script> | ||||
|         // MediaQueryList object | ||||
|         const prefersDarkQuery = window.matchMedia("(prefers-color-scheme: dark)"); | ||||
|         const lsDark = localStorage.getItem("dark-mode"); | ||||
|         let darkModeState = lsDark !== null ? lsDark == "true" : prefersDarkQuery.matches; | ||||
|  | ||||
|         document.documentElement.classList.toggle("dark-mode", darkModeState); | ||||
|         document.documentElement.classList.toggle("light-mode", !darkModeState); | ||||
|     </script> | ||||
|     {{ super() }} | ||||
| {% endblock %} | ||||
							
								
								
									
										12
									
								
								docs/conf.py
									
									
									
									
									
								
							
							
						
						| @@ -15,7 +15,7 @@ extensions = [ | ||||
| ] | ||||
|  | ||||
| # Add any paths that contain templates here, relative to this directory. | ||||
| # templates_path = ['_templates'] | ||||
| templates_path = ["_templates"] | ||||
|  | ||||
| # The suffix of source filenames. | ||||
| source_suffix = ".rst" | ||||
| @@ -119,6 +119,16 @@ html_theme_path = [] | ||||
| # so a file named "default.css" will overwrite the builtin "default.css". | ||||
| html_static_path = ["_static"] | ||||
|  | ||||
| # These paths are either relative to html_static_path | ||||
| # or fully qualified paths (eg. https://...) | ||||
| html_css_files = [ | ||||
|     "css/custom.css", | ||||
| ] | ||||
|  | ||||
| html_js_files = [ | ||||
|     "js/darkmode.js", | ||||
| ] | ||||
|  | ||||
| # Add any extra paths that contain custom files (such as robots.txt or | ||||
| # .htaccess) here, relative to this directory. These files are copied | ||||
| # directly to the root of the documentation. | ||||
|   | ||||
| @@ -102,12 +102,14 @@ files from the scanner.  Typically, you're looking at an FTP server like | ||||
|  | ||||
| .. TODO: hyperref to configuration of the location of this magic folder. | ||||
|  | ||||
| Dashboard upload | ||||
| ================ | ||||
| Web UI Upload | ||||
| ============= | ||||
|  | ||||
| The dashboard has a file drop field to upload documents to paperless. Simply drag a file | ||||
| onto this field or select a file with the file dialog. Multiple files are supported. | ||||
|  | ||||
| You can also upload documents on any other page of the web UI by dragging-and-dropping | ||||
| files into your browser window. | ||||
|  | ||||
| .. _usage-mobile_upload: | ||||
|  | ||||
|   | ||||
 shamoon
					shamoon