diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml new file mode 100644 index 000000000..e047b54ed --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -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 diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000..b68154433 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -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 diff --git a/docs/_static/css/custom.css b/docs/_static/css/custom.css new file mode 100644 index 000000000..5bc7ab2a8 --- /dev/null +++ b/docs/_static/css/custom.css @@ -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; +} diff --git a/docs/_static/custom.css b/docs/_static/custom.css deleted file mode 100644 index bb60b53d3..000000000 --- a/docs/_static/custom.css +++ /dev/null @@ -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; - } - -} diff --git a/docs/_static/js/darkmode.js b/docs/_static/js/darkmode.js new file mode 100644 index 000000000..49cf0eeec --- /dev/null +++ b/docs/_static/js/darkmode.js @@ -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 + 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 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); diff --git a/docs/_static/screenshot.png b/docs/_static/screenshot.png deleted file mode 100644 index 581e14a1d..000000000 Binary files a/docs/_static/screenshot.png and /dev/null differ diff --git a/docs/_static/screenshots/bulk-edit.png b/docs/_static/screenshots/bulk-edit.png new file mode 100644 index 000000000..61589f052 Binary files /dev/null and b/docs/_static/screenshots/bulk-edit.png differ diff --git a/docs/_static/screenshots/correspondents.png b/docs/_static/screenshots/correspondents.png index 269543b26..4b1283797 100644 Binary files a/docs/_static/screenshots/correspondents.png and b/docs/_static/screenshots/correspondents.png differ diff --git a/docs/_static/screenshots/dashboard.png b/docs/_static/screenshots/dashboard.png index 3a3494e72..41fe23ffc 100644 Binary files a/docs/_static/screenshots/dashboard.png and b/docs/_static/screenshots/dashboard.png differ diff --git a/docs/_static/screenshots/documents-filter.png b/docs/_static/screenshots/documents-filter.png index feb0f58d5..beb419722 100644 Binary files a/docs/_static/screenshots/documents-filter.png and b/docs/_static/screenshots/documents-filter.png differ diff --git a/docs/_static/screenshots/documents-largecards.png b/docs/_static/screenshots/documents-largecards.png index d65c4a0d7..17faf4e91 100644 Binary files a/docs/_static/screenshots/documents-largecards.png and b/docs/_static/screenshots/documents-largecards.png differ diff --git a/docs/_static/screenshots/documents-smallcards-dark.png b/docs/_static/screenshots/documents-smallcards-dark.png new file mode 100644 index 000000000..e2892f457 Binary files /dev/null and b/docs/_static/screenshots/documents-smallcards-dark.png differ diff --git a/docs/_static/screenshots/documents-smallcards.png b/docs/_static/screenshots/documents-smallcards.png index 77de7a04d..dddbbaa65 100644 Binary files a/docs/_static/screenshots/documents-smallcards.png and b/docs/_static/screenshots/documents-smallcards.png differ diff --git a/docs/_static/screenshots/documents-table.png b/docs/_static/screenshots/documents-table.png index a5f2a3d7f..f7833c521 100644 Binary files a/docs/_static/screenshots/documents-table.png and b/docs/_static/screenshots/documents-table.png differ diff --git a/docs/_static/screenshots/editing.png b/docs/_static/screenshots/editing.png index 21a0bcdf2..47f04518b 100644 Binary files a/docs/_static/screenshots/editing.png and b/docs/_static/screenshots/editing.png differ diff --git a/docs/_static/screenshots/logs.png b/docs/_static/screenshots/logs.png index 10a0d393a..c2dfe0a54 100644 Binary files a/docs/_static/screenshots/logs.png and b/docs/_static/screenshots/logs.png differ diff --git a/docs/_static/screenshots/mobile.png b/docs/_static/screenshots/mobile.png index 1217f06b3..06e782373 100644 Binary files a/docs/_static/screenshots/mobile.png and b/docs/_static/screenshots/mobile.png differ diff --git a/docs/_static/screenshots/new-tag.png b/docs/_static/screenshots/new-tag.png index 4ea438530..f763c0ecf 100644 Binary files a/docs/_static/screenshots/new-tag.png and b/docs/_static/screenshots/new-tag.png differ diff --git a/docs/_static/screenshots/search-preview.png b/docs/_static/screenshots/search-preview.png index 78925ae18..5e7c29049 100644 Binary files a/docs/_static/screenshots/search-preview.png and b/docs/_static/screenshots/search-preview.png differ diff --git a/docs/_static/screenshots/search-results.png b/docs/_static/screenshots/search-results.png index f9db14190..7ba399d56 100644 Binary files a/docs/_static/screenshots/search-results.png and b/docs/_static/screenshots/search-results.png differ diff --git a/docs/_templates/layout.html b/docs/_templates/layout.html new file mode 100644 index 000000000..cf648b606 --- /dev/null +++ b/docs/_templates/layout.html @@ -0,0 +1,13 @@ +{% extends "!layout.html" %} +{% block extrahead %} + + {{ super() }} +{% endblock %} diff --git a/docs/conf.py b/docs/conf.py index ef1948dab..19efbbdf8 100644 --- a/docs/conf.py +++ b/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. diff --git a/docs/usage_overview.rst b/docs/usage_overview.rst index e6bb8f31e..a90a51cb4 100644 --- a/docs/usage_overview.rst +++ b/docs/usage_overview.rst @@ -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: