mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-04-02 13:45:10 -05:00
Save and edit next button appears on documents without viewer as well.
Made the new recent correspondents filter optional. Disabled by default.
This commit is contained in:
parent
0dc3644cc1
commit
8d003a6a85
@ -94,9 +94,10 @@ class RecentCorrespondentFilter(admin.RelatedFieldListFilter):
|
|||||||
|
|
||||||
def field_choices(self, field, request, model_admin):
|
def field_choices(self, field, request, model_admin):
|
||||||
lookups = []
|
lookups = []
|
||||||
date_limit = datetime.now() - timedelta(days=365*settings.PAPERLESS_RECENT_CORRESPONDENT_YEARS)
|
if settings.PAPERLESS_RECENT_CORRESPONDENT_YEARS and settings.PAPERLESS_RECENT_CORRESPONDENT_YEARS > 0:
|
||||||
for c in Correspondent.objects.filter(documents__created__gte = date_limit).distinct():
|
date_limit = datetime.now() - timedelta(days=365*settings.PAPERLESS_RECENT_CORRESPONDENT_YEARS)
|
||||||
lookups.append( (c.id, c.name) )
|
for c in Correspondent.objects.filter(documents__created__gte = date_limit).distinct():
|
||||||
|
lookups.append( (c.id, c.name) )
|
||||||
return lookups
|
return lookups
|
||||||
|
|
||||||
|
|
||||||
|
25
src/documents/templates/admin/documents/document/change_form.html
Executable file → Normal file
25
src/documents/templates/admin/documents/document/change_form.html
Executable file → Normal file
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
{{ block.super }}
|
{{ block.super }}
|
||||||
|
|
||||||
{% if file_type in "pdf jpg png" %}
|
{% if file_type in "asd" %}
|
||||||
|
|
||||||
<div id="change_form_twocolumn_parent">
|
<div id="change_form_twocolumn_parent">
|
||||||
<div id="change_form_form_parent"></div>
|
<div id="change_form_form_parent"></div>
|
||||||
@ -23,16 +23,17 @@
|
|||||||
django.jQuery("#content-main").append(django.jQuery("#change_form_twocolumn_parent"));
|
django.jQuery("#content-main").append(django.jQuery("#change_form_twocolumn_parent"));
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{% if next_object %}
|
{% endif %}
|
||||||
<script type="text/javascript">//<![CDATA[
|
|
||||||
(function($){
|
{% if next_object %}
|
||||||
$('<input type="submit" value="Save and edit next" name="_saveandeditnext" />')
|
<script type="text/javascript">//<![CDATA[
|
||||||
.prependTo('div.submit-row');
|
(function($){
|
||||||
$('<input type="hidden" value="{{next_object}}" name="_next_object" />')
|
$('<input type="submit" value="Save and edit next" name="_saveandeditnext" />')
|
||||||
.prependTo('div.submit-row');
|
.prependTo('div.submit-row');
|
||||||
})(django.jQuery);
|
$('<input type="hidden" value="{{next_object}}" name="_next_object" />')
|
||||||
//]]></script>
|
.prependTo('div.submit-row');
|
||||||
{% endif %}
|
})(django.jQuery);
|
||||||
|
//]]></script>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% endblock content %}
|
{% endblock content %}
|
||||||
@ -46,4 +47,4 @@
|
|||||||
django.jQuery(".field-created input").first().attr("type", "date")
|
django.jQuery(".field-created input").first().attr("type", "date")
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{% endblock footer %}
|
{% endblock footer %}
|
||||||
|
@ -38,9 +38,9 @@
|
|||||||
<input type="hidden" name="action" value="{{action}}"/>
|
<input type="hidden" name="action" value="{{action}}"/>
|
||||||
<input type="hidden" name="post" value="yes"/>
|
<input type="hidden" name="post" value="yes"/>
|
||||||
<p>
|
<p>
|
||||||
<input type="submit" value="{% trans " Confirm" %}" />
|
<input type="submit" value="{% trans "Confirm" %}" />
|
||||||
<a href="#" class="button cancel-link">{% trans "Go back" %}</a>
|
<a href="#" class="button cancel-link">{% trans "Go back" %}</a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
1
src/documents/templates/admin/documents/document/viewers/viewer_image.html
Executable file → Normal file
1
src/documents/templates/admin/documents/document/viewers/viewer_image.html
Executable file → Normal file
@ -1,2 +1 @@
|
|||||||
<img src="{{download_url}}" style="max-width: 100%">
|
<img src="{{download_url}}" style="max-width: 100%">
|
||||||
|
|
||||||
|
163
src/documents/templates/admin/documents/document/viewers/viewer_pdf.html
Executable file → Normal file
163
src/documents/templates/admin/documents/document/viewers/viewer_pdf.html
Executable file → Normal file
@ -3,117 +3,128 @@
|
|||||||
<div>
|
<div>
|
||||||
<input id="prev" value="Previous" class="default" type="button">
|
<input id="prev" value="Previous" class="default" type="button">
|
||||||
<input id="next" value="Next" class="default" type="button">
|
<input id="next" value="Next" class="default" type="button">
|
||||||
|
|
||||||
<span>Page: <span id="page_num"></span> / <span id="page_count"></span></span>
|
<span>Page: <span id="page_num"></span> / <span id="page_count"></span></span>
|
||||||
|
|
||||||
<input id="zoomin" value="+" class="default" type="button">
|
<input id="zoomin" value="+" class="default" type="button">
|
||||||
<input id="zoomout" value="-" class="default" type="button">
|
<input id="zoomout" value="-" class="default" type="button">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="width: 100%; overflow: auto;">
|
<div style="width: 100%; overflow: auto;">
|
||||||
<canvas id="the-canvas"></canvas>
|
<canvas id="the-canvas"></canvas>
|
||||||
</div>
|
</div>
|
||||||
<script type="text/javascript" src="{% static 'documents/js/pdf.js' %}"></script>
|
<script type="text/javascript" src="{% static 'documents/js/pdf.js' %}"></script>
|
||||||
<script type="text/javascript" src="{% static 'documents/js/pdf.worker.js' %}"></script>
|
<script type="text/javascript" src="{% static 'documents/js/pdf.worker.js' %}"></script>
|
||||||
{# Load and display PDF document#}
|
|
||||||
<script>
|
{# Load and display PDF document#}
|
||||||
|
<script>
|
||||||
var pdfjsLib = window['pdfjs-dist/build/pdf'];
|
var pdfjsLib = window['pdfjs-dist/build/pdf'];
|
||||||
|
|
||||||
var pdfDoc = null,
|
var pdfDoc = null,
|
||||||
pageNum = 1,
|
pageNum = 1,
|
||||||
pageRendering = false,
|
pageRendering = false,
|
||||||
pageNumPending = null,
|
pageNumPending = null,
|
||||||
scale = 1.0,
|
scale = 1.0,
|
||||||
canvas = document.getElementById('the-canvas'),
|
canvas = document.getElementById('the-canvas'),
|
||||||
ctx = canvas.getContext('2d');
|
ctx = canvas.getContext('2d');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get page info from document, resize canvas accordingly, and render page.
|
* Get page info from document, resize canvas accordingly, and render page.
|
||||||
* @param num Page number.
|
* @param num Page number.
|
||||||
*/
|
*/
|
||||||
function renderPage(num) {
|
function renderPage(num) {
|
||||||
pageRendering = true;
|
pageRendering = true;
|
||||||
// Using promise to fetch the page
|
// Using promise to fetch the page
|
||||||
pdfDoc.getPage(num).then(function(page) {
|
pdfDoc.getPage(num).then(function(page) {
|
||||||
var viewport = page.getViewport(scale);
|
var viewport = page.getViewport(scale);
|
||||||
canvas.height = viewport.height;
|
canvas.height = viewport.height;
|
||||||
canvas.width = viewport.width;
|
canvas.width = viewport.width;
|
||||||
// Render PDF page into canvas context
|
// Render PDF page into canvas context
|
||||||
var renderContext = {
|
var renderContext = {
|
||||||
canvasContext: ctx,
|
canvasContext: ctx,
|
||||||
viewport: viewport
|
viewport: viewport
|
||||||
};
|
};
|
||||||
var renderTask = page.render(renderContext);
|
var renderTask = page.render(renderContext);
|
||||||
// Wait for rendering to finish
|
// Wait for rendering to finish
|
||||||
renderTask.promise.then(function () {
|
renderTask.promise.then(function () {
|
||||||
pageRendering = false;
|
pageRendering = false;
|
||||||
if (pageNumPending !== null) {
|
if (pageNumPending !== null) {
|
||||||
// New page rendering is pending
|
// New page rendering is pending
|
||||||
renderPage(pageNumPending);
|
renderPage(pageNumPending);
|
||||||
pageNumPending = null;
|
pageNumPending = null;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
// Update page counters
|
// Update page counters
|
||||||
document.getElementById('page_num').textContent = num;
|
document.getElementById('page_num').textContent = num;
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* If another page rendering in progress, waits until the rendering is
|
/**
|
||||||
* finised. Otherwise, executes rendering immediately.
|
* If another page rendering in progress, waits until the rendering is
|
||||||
*/
|
* finised. Otherwise, executes rendering immediately.
|
||||||
function queueRenderPage(num) {
|
*/
|
||||||
|
function queueRenderPage(num) {
|
||||||
if (pageRendering) {
|
if (pageRendering) {
|
||||||
pageNumPending = num;
|
pageNumPending = num;
|
||||||
} else {
|
} else {
|
||||||
renderPage(num);
|
renderPage(num);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* Displays previous page.
|
/**
|
||||||
*/
|
* Displays previous page.
|
||||||
function onPrevPage() {
|
*/
|
||||||
|
function onPrevPage() {
|
||||||
if (pageNum <= 1) {
|
if (pageNum <= 1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
pageNum--;
|
pageNum--;
|
||||||
queueRenderPage(pageNum);
|
queueRenderPage(pageNum);
|
||||||
}
|
}
|
||||||
document.getElementById('prev').addEventListener('click', onPrevPage);
|
|
||||||
/**
|
document.getElementById('prev').addEventListener('click', onPrevPage);
|
||||||
* Displays next page.
|
|
||||||
*/
|
/**
|
||||||
function onNextPage() {
|
* Displays next page.
|
||||||
|
*/
|
||||||
|
function onNextPage() {
|
||||||
if (pageNum >= pdfDoc.numPages) {
|
if (pageNum >= pdfDoc.numPages) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
pageNum++;
|
pageNum++;
|
||||||
queueRenderPage(pageNum);
|
queueRenderPage(pageNum);
|
||||||
}
|
}
|
||||||
document.getElementById('next').addEventListener('click', onNextPage);
|
|
||||||
/**
|
document.getElementById('next').addEventListener('click', onNextPage);
|
||||||
* Displays next page.
|
|
||||||
*/
|
/**
|
||||||
function onZoomIn() {
|
* Displays next page.
|
||||||
|
*/
|
||||||
|
function onZoomIn() {
|
||||||
scale *= 1.2;
|
scale *= 1.2;
|
||||||
queueRenderPage(pageNum);
|
queueRenderPage(pageNum);
|
||||||
}
|
}
|
||||||
document.getElementById('zoomin').addEventListener('click', onZoomIn);
|
|
||||||
/**
|
document.getElementById('zoomin').addEventListener('click', onZoomIn);
|
||||||
* Displays next page.
|
|
||||||
*/
|
/**
|
||||||
function onZoomOut() {
|
* Displays next page.
|
||||||
|
*/
|
||||||
|
function onZoomOut() {
|
||||||
scale /= 1.2;
|
scale /= 1.2;
|
||||||
queueRenderPage(pageNum);
|
queueRenderPage(pageNum);
|
||||||
}
|
}
|
||||||
document.getElementById('zoomout').addEventListener('click', onZoomOut);
|
|
||||||
/**
|
document.getElementById('zoomout').addEventListener('click', onZoomOut);
|
||||||
* Asynchronously downloads PDF.
|
|
||||||
*/
|
/**
|
||||||
pdfjsLib.getDocument("{{download_url}}").then(function (pdfDoc_) {
|
* Asynchronously downloads PDF.
|
||||||
|
*/
|
||||||
|
pdfjsLib.getDocument("{{download_url}}").then(function (pdfDoc_) {
|
||||||
pdfDoc = pdfDoc_;
|
pdfDoc = pdfDoc_;
|
||||||
document.getElementById('page_count').textContent = pdfDoc.numPages;
|
document.getElementById('page_count').textContent = pdfDoc.numPages;
|
||||||
// Initial/first page rendering
|
// Initial/first page rendering
|
||||||
renderPage(pageNum);
|
renderPage(pageNum);
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -298,4 +298,8 @@ FY_END = os.getenv("PAPERLESS_FINANCIAL_YEAR_END")
|
|||||||
# Specify the default date order (for autodetected dates)
|
# Specify the default date order (for autodetected dates)
|
||||||
DATE_ORDER = os.getenv("PAPERLESS_DATE_ORDER", "DMY")
|
DATE_ORDER = os.getenv("PAPERLESS_DATE_ORDER", "DMY")
|
||||||
|
|
||||||
PAPERLESS_RECENT_CORRESPONDENT_YEARS = int(os.getenv("PAPERLESS_RECENT_CORRESPONDENT_YEARS", 1))
|
# Specify for how many years a correspondent is considered recent. Recent
|
||||||
|
# correspondents will be shown in a separate "Recent correspondents" filter as
|
||||||
|
# well. Set to 0 to disable this filter.
|
||||||
|
PAPERLESS_RECENT_CORRESPONDENT_YEARS = int(os.getenv(
|
||||||
|
"PAPERLESS_RECENT_CORRESPONDENT_YEARS", 0))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user