mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-30 03:56:23 -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:
		| @@ -94,9 +94,10 @@ class RecentCorrespondentFilter(admin.RelatedFieldListFilter): | ||||
|  | ||||
|     def field_choices(self, field, request, model_admin): | ||||
|         lookups = [] | ||||
|         date_limit = datetime.now() - timedelta(days=365*settings.PAPERLESS_RECENT_CORRESPONDENT_YEARS) | ||||
|         for c in Correspondent.objects.filter(documents__created__gte = date_limit).distinct(): | ||||
|             lookups.append( (c.id, c.name) ) | ||||
|         if settings.PAPERLESS_RECENT_CORRESPONDENT_YEARS and settings.PAPERLESS_RECENT_CORRESPONDENT_YEARS > 0: | ||||
|             date_limit = datetime.now() - timedelta(days=365*settings.PAPERLESS_RECENT_CORRESPONDENT_YEARS) | ||||
|             for c in Correspondent.objects.filter(documents__created__gte = date_limit).distinct(): | ||||
|                 lookups.append( (c.id, c.name) ) | ||||
|         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 }} | ||||
|  | ||||
| {% if file_type in "pdf jpg png" %} | ||||
| {% if file_type in "asd" %} | ||||
|  | ||||
| 	<div id="change_form_twocolumn_parent"> | ||||
| 		<div id="change_form_form_parent"></div> | ||||
| @@ -23,16 +23,17 @@ | ||||
| 		django.jQuery("#content-main").append(django.jQuery("#change_form_twocolumn_parent")); | ||||
| 	</script> | ||||
|  | ||||
| 	{% if next_object %} | ||||
| 		<script type="text/javascript">//<![CDATA[ | ||||
| 			(function($){ | ||||
| 				$('<input type="submit" value="Save and edit next" name="_saveandeditnext" />') | ||||
| 				.prependTo('div.submit-row'); | ||||
| 				$('<input type="hidden" value="{{next_object}}" name="_next_object" />') | ||||
| 				.prependTo('div.submit-row'); | ||||
| 			})(django.jQuery); | ||||
| 		//]]></script> | ||||
| 	{% endif %} | ||||
| {% endif %} | ||||
|  | ||||
| {% if next_object %} | ||||
| 	<script type="text/javascript">//<![CDATA[ | ||||
| 		(function($){ | ||||
| 			$('<input type="submit" value="Save and edit next" name="_saveandeditnext" />') | ||||
| 			.prependTo('div.submit-row'); | ||||
| 			$('<input type="hidden" value="{{next_object}}" name="_next_object" />') | ||||
| 			.prependTo('div.submit-row'); | ||||
| 		})(django.jQuery); | ||||
| 	//]]></script> | ||||
| {% endif %} | ||||
|  | ||||
| {% endblock content %} | ||||
| @@ -46,4 +47,4 @@ | ||||
| 		django.jQuery(".field-created input").first().attr("type", "date") | ||||
| 	</script> | ||||
|  | ||||
| {% endblock footer %} | ||||
| {% endblock footer %} | ||||
|   | ||||
| @@ -38,9 +38,9 @@ | ||||
|         <input type="hidden" name="action" value="{{action}}"/> | ||||
|         <input type="hidden" name="post" value="yes"/> | ||||
|         <p> | ||||
|             <input type="submit" value="{% trans " Confirm" %}" /> | ||||
|             <input type="submit" value="{% trans "Confirm" %}" /> | ||||
|             <a href="#" class="button cancel-link">{% trans "Go back" %}</a> | ||||
|         </p> | ||||
|     </div> | ||||
| </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%"> | ||||
|  | ||||
|   | ||||
							
								
								
									
										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> | ||||
|     <input id="prev" value="Previous" 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="zoomout" value="-" class="default" type="button"> | ||||
| </div> | ||||
|  | ||||
| <div style="width: 100%; overflow: auto;"> | ||||
| <canvas id="the-canvas"></canvas> | ||||
|     </div> | ||||
|     <canvas id="the-canvas"></canvas> | ||||
| </div> | ||||
| <script type="text/javascript" src="{% static 'documents/js/pdf.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 pdfDoc = null, | ||||
|       pageNum = 1, | ||||
|       pageRendering = false, | ||||
|       pageNumPending = null, | ||||
|       scale = 1.0, | ||||
|       canvas = document.getElementById('the-canvas'), | ||||
|       ctx = canvas.getContext('2d'); | ||||
|     pageNum = 1, | ||||
|     pageRendering = false, | ||||
|     pageNumPending = null, | ||||
|     scale = 1.0, | ||||
|     canvas = document.getElementById('the-canvas'), | ||||
|     ctx = canvas.getContext('2d'); | ||||
|  | ||||
| /** | ||||
|    * Get page info from document, resize canvas accordingly, and render page. | ||||
|    * @param num Page number. | ||||
|    */ | ||||
|   function renderPage(num) { | ||||
|  * Get page info from document, resize canvas accordingly, and render page. | ||||
|  * @param num Page number. | ||||
|  */ | ||||
| function renderPage(num) { | ||||
|     pageRendering = true; | ||||
|     // Using promise to fetch the page | ||||
|     pdfDoc.getPage(num).then(function(page) { | ||||
|       var viewport = page.getViewport(scale); | ||||
|       canvas.height = viewport.height; | ||||
|       canvas.width = viewport.width; | ||||
|       // Render PDF page into canvas context | ||||
|       var renderContext = { | ||||
|         canvasContext: ctx, | ||||
|         viewport: viewport | ||||
|       }; | ||||
|       var renderTask = page.render(renderContext); | ||||
|       // Wait for rendering to finish | ||||
|       renderTask.promise.then(function () { | ||||
|         pageRendering = false; | ||||
|         if (pageNumPending !== null) { | ||||
|           // New page rendering is pending | ||||
|           renderPage(pageNumPending); | ||||
|           pageNumPending = null; | ||||
|         } | ||||
|       }); | ||||
|         var viewport = page.getViewport(scale); | ||||
|         canvas.height = viewport.height; | ||||
|         canvas.width = viewport.width; | ||||
|         // Render PDF page into canvas context | ||||
|         var renderContext = { | ||||
|             canvasContext: ctx, | ||||
|             viewport: viewport | ||||
|         }; | ||||
|         var renderTask = page.render(renderContext); | ||||
|         // Wait for rendering to finish | ||||
|         renderTask.promise.then(function () { | ||||
|             pageRendering = false; | ||||
|             if (pageNumPending !== null) { | ||||
|                 // New page rendering is pending | ||||
|                 renderPage(pageNumPending); | ||||
|                 pageNumPending = null; | ||||
|             } | ||||
|         }); | ||||
|     }); | ||||
|     // Update page counters | ||||
|     document.getElementById('page_num').textContent = num; | ||||
|   } | ||||
|   /** | ||||
|    * If another page rendering in progress, waits until the rendering is | ||||
|    * finised. Otherwise, executes rendering immediately. | ||||
|    */ | ||||
|   function queueRenderPage(num) { | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * If another page rendering in progress, waits until the rendering is | ||||
|  * finised. Otherwise, executes rendering immediately. | ||||
|  */ | ||||
| function queueRenderPage(num) { | ||||
|     if (pageRendering) { | ||||
|       pageNumPending = num; | ||||
|         pageNumPending = num; | ||||
|     } else { | ||||
|       renderPage(num); | ||||
|         renderPage(num); | ||||
|     } | ||||
|   } | ||||
|   /** | ||||
|    * Displays previous page. | ||||
|    */ | ||||
|   function onPrevPage() { | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Displays previous page. | ||||
|  */ | ||||
| function onPrevPage() { | ||||
|     if (pageNum <= 1) { | ||||
|       return; | ||||
|         return; | ||||
|     } | ||||
|     pageNum--; | ||||
|     queueRenderPage(pageNum); | ||||
|   } | ||||
|   document.getElementById('prev').addEventListener('click', onPrevPage); | ||||
|   /** | ||||
|    * Displays next page. | ||||
|    */ | ||||
|   function onNextPage() { | ||||
| } | ||||
|  | ||||
| document.getElementById('prev').addEventListener('click', onPrevPage); | ||||
|  | ||||
| /** | ||||
|  * Displays next page. | ||||
|  */ | ||||
| function onNextPage() { | ||||
|     if (pageNum >= pdfDoc.numPages) { | ||||
|       return; | ||||
|         return; | ||||
|     } | ||||
|     pageNum++; | ||||
|     queueRenderPage(pageNum); | ||||
|   } | ||||
|   document.getElementById('next').addEventListener('click', onNextPage); | ||||
|   /** | ||||
|    * Displays next page. | ||||
|    */ | ||||
|   function onZoomIn() { | ||||
| } | ||||
|  | ||||
| document.getElementById('next').addEventListener('click', onNextPage); | ||||
|  | ||||
| /** | ||||
|  * Displays next page. | ||||
|  */ | ||||
| function onZoomIn() { | ||||
|     scale *= 1.2; | ||||
|     queueRenderPage(pageNum); | ||||
|   } | ||||
|   document.getElementById('zoomin').addEventListener('click', onZoomIn); | ||||
|   /** | ||||
|    * Displays next page. | ||||
|    */ | ||||
|   function onZoomOut() { | ||||
| } | ||||
|  | ||||
| document.getElementById('zoomin').addEventListener('click', onZoomIn); | ||||
|  | ||||
| /** | ||||
|  * Displays next page. | ||||
|  */ | ||||
| function onZoomOut() { | ||||
|     scale /= 1.2; | ||||
|     queueRenderPage(pageNum); | ||||
|   } | ||||
|   document.getElementById('zoomout').addEventListener('click', onZoomOut); | ||||
|   /** | ||||
|    * Asynchronously downloads PDF. | ||||
|    */ | ||||
|   pdfjsLib.getDocument("{{download_url}}").then(function (pdfDoc_) { | ||||
| } | ||||
|  | ||||
| document.getElementById('zoomout').addEventListener('click', onZoomOut); | ||||
|  | ||||
| /** | ||||
|  * Asynchronously downloads PDF. | ||||
|  */ | ||||
| pdfjsLib.getDocument("{{download_url}}").then(function (pdfDoc_) { | ||||
|     pdfDoc = pdfDoc_; | ||||
|     document.getElementById('page_count').textContent = pdfDoc.numPages; | ||||
|     // Initial/first page rendering | ||||
|     renderPage(pageNum); | ||||
|   }); | ||||
| 	</script> | ||||
| }); | ||||
| </script> | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Jonas Winkler
					Jonas Winkler