mirror of
				https://github.com/paperless-ngx/paperless-ngx.git
				synced 2025-10-31 02:27:10 -04:00 
			
		
		
		
	Merge branch 'dev' into feature-ai
This commit is contained in:
		
						commit
						d21d0eaf08
					
				| @ -534,7 +534,7 @@ | |||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> | ||||||
|           <context context-type="linenumber">366</context> |           <context context-type="linenumber">374</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="3768927257183755959" datatype="html"> |       <trans-unit id="3768927257183755959" datatype="html"> | ||||||
| @ -593,11 +593,11 @@ | |||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> | ||||||
|           <context context-type="linenumber">359</context> |           <context context-type="linenumber">367</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html</context> |           <context context-type="sourcefile">src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html</context> | ||||||
|           <context context-type="linenumber">79</context> |           <context context-type="linenumber">83</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html</context> |           <context context-type="sourcefile">src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html</context> | ||||||
| @ -739,7 +739,7 @@ | |||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> | ||||||
|           <context context-type="linenumber">379</context> |           <context context-type="linenumber">387</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> |           <context context-type="sourcefile">src/app/components/document-list/document-list.component.html</context> | ||||||
| @ -1197,7 +1197,7 @@ | |||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> | ||||||
|           <context context-type="linenumber">335</context> |           <context context-type="linenumber">343</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.html</context> |           <context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.html</context> | ||||||
| @ -1492,7 +1492,7 @@ | |||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html</context> |           <context context-type="sourcefile">src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html</context> | ||||||
|           <context context-type="linenumber">77</context> |           <context context-type="linenumber">81</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html</context> |           <context context-type="sourcefile">src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.html</context> | ||||||
| @ -2544,11 +2544,11 @@ | |||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">1023</context> |           <context context-type="linenumber">1025</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">1388</context> |           <context context-type="linenumber">1390</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.ts</context> | ||||||
| @ -3156,7 +3156,7 @@ | |||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">976</context> |           <context context-type="linenumber">978</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.ts</context> | ||||||
| @ -4291,7 +4291,7 @@ | |||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> | ||||||
|           <context context-type="linenumber">301</context> |           <context context-type="linenumber">309</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="8057014866157903311" datatype="html"> |       <trans-unit id="8057014866157903311" datatype="html"> | ||||||
| @ -6611,7 +6611,7 @@ | |||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">1387</context> |           <context context-type="linenumber">1389</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="6490688569532630280" datatype="html"> |       <trans-unit id="6490688569532630280" datatype="html"> | ||||||
| @ -6764,14 +6764,14 @@ | |||||||
|         <source>Content</source> |         <source>Content</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> | ||||||
|           <context context-type="linenumber">231</context> |           <context context-type="linenumber">239</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="218403386307979629" datatype="html"> |       <trans-unit id="218403386307979629" datatype="html"> | ||||||
|         <source>Metadata</source> |         <source>Metadata</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> | ||||||
|           <context context-type="linenumber">240</context> |           <context context-type="linenumber">248</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/metadata-collapse/metadata-collapse.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/metadata-collapse/metadata-collapse.component.ts</context> | ||||||
| @ -6782,175 +6782,175 @@ | |||||||
|         <source>Date modified</source> |         <source>Date modified</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> | ||||||
|           <context context-type="linenumber">247</context> |           <context context-type="linenumber">255</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="6392918669949841614" datatype="html"> |       <trans-unit id="6392918669949841614" datatype="html"> | ||||||
|         <source>Date added</source> |         <source>Date added</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> | ||||||
|           <context context-type="linenumber">251</context> |           <context context-type="linenumber">259</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="146828917013192897" datatype="html"> |       <trans-unit id="146828917013192897" datatype="html"> | ||||||
|         <source>Media filename</source> |         <source>Media filename</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> | ||||||
|           <context context-type="linenumber">255</context> |           <context context-type="linenumber">263</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="4500855521601039868" datatype="html"> |       <trans-unit id="4500855521601039868" datatype="html"> | ||||||
|         <source>Original filename</source> |         <source>Original filename</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> | ||||||
|           <context context-type="linenumber">259</context> |           <context context-type="linenumber">267</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="7985558498848210210" datatype="html"> |       <trans-unit id="7985558498848210210" datatype="html"> | ||||||
|         <source>Original MD5 checksum</source> |         <source>Original MD5 checksum</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> | ||||||
|           <context context-type="linenumber">263</context> |           <context context-type="linenumber">271</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="5888243105821763422" datatype="html"> |       <trans-unit id="5888243105821763422" datatype="html"> | ||||||
|         <source>Original file size</source> |         <source>Original file size</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> | ||||||
|           <context context-type="linenumber">267</context> |           <context context-type="linenumber">275</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="2696647325713149563" datatype="html"> |       <trans-unit id="2696647325713149563" datatype="html"> | ||||||
|         <source>Original mime type</source> |         <source>Original mime type</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> | ||||||
|           <context context-type="linenumber">271</context> |           <context context-type="linenumber">279</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="342875990758166588" datatype="html"> |       <trans-unit id="342875990758166588" datatype="html"> | ||||||
|         <source>Archive MD5 checksum</source> |         <source>Archive MD5 checksum</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> | ||||||
|           <context context-type="linenumber">276</context> |           <context context-type="linenumber">284</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="6033581412811562084" datatype="html"> |       <trans-unit id="6033581412811562084" datatype="html"> | ||||||
|         <source>Archive file size</source> |         <source>Archive file size</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> | ||||||
|           <context context-type="linenumber">282</context> |           <context context-type="linenumber">290</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="6992781481378431874" datatype="html"> |       <trans-unit id="6992781481378431874" datatype="html"> | ||||||
|         <source>Original document metadata</source> |         <source>Original document metadata</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> | ||||||
|           <context context-type="linenumber">291</context> |           <context context-type="linenumber">299</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="2846565152091361585" datatype="html"> |       <trans-unit id="2846565152091361585" datatype="html"> | ||||||
|         <source>Archived document metadata</source> |         <source>Archived document metadata</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> | ||||||
|           <context context-type="linenumber">294</context> |           <context context-type="linenumber">302</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="7206723502037428235" datatype="html"> |       <trans-unit id="7206723502037428235" datatype="html"> | ||||||
|         <source>Notes <x id="START_BLOCK_IF" equiv-text="@if (document?.notes.length) {"/><x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span class="badge text-bg-secondary ms-1">"/><x id="INTERPOLATION" equiv-text="ngth}}"/><x id="CLOSE_TAG_SPAN" ctype="x-span"/><x id="CLOSE_BLOCK_IF" equiv-text="}"/></source> |         <source>Notes <x id="START_BLOCK_IF" equiv-text="@if (document?.notes.length) {"/><x id="START_TAG_SPAN" ctype="x-span" equiv-text="<span class="badge text-bg-secondary ms-1">"/><x id="INTERPOLATION" equiv-text="ngth}}"/><x id="CLOSE_TAG_SPAN" ctype="x-span"/><x id="CLOSE_BLOCK_IF" equiv-text="}"/></source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> | ||||||
|           <context context-type="linenumber">313,316</context> |           <context context-type="linenumber">321,324</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="186236568870281953" datatype="html"> |       <trans-unit id="186236568870281953" datatype="html"> | ||||||
|         <source>History</source> |         <source>History</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> | ||||||
|           <context context-type="linenumber">324</context> |           <context context-type="linenumber">332</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="5129524307369213584" datatype="html"> |       <trans-unit id="5129524307369213584" datatype="html"> | ||||||
|         <source>Save & next</source> |         <source>Save & next</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> | ||||||
|           <context context-type="linenumber">361</context> |           <context context-type="linenumber">369</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="4910102545766233758" datatype="html"> |       <trans-unit id="4910102545766233758" datatype="html"> | ||||||
|         <source>Save & close</source> |         <source>Save & close</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> | ||||||
|           <context context-type="linenumber">364</context> |           <context context-type="linenumber">372</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="1309556917227148591" datatype="html"> |       <trans-unit id="1309556917227148591" datatype="html"> | ||||||
|         <source>Document loading...</source> |         <source>Document loading...</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> | ||||||
|           <context context-type="linenumber">374</context> |           <context context-type="linenumber">382</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="8191371354890763172" datatype="html"> |       <trans-unit id="8191371354890763172" datatype="html"> | ||||||
|         <source>Enter Password</source> |         <source>Enter Password</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.html</context> | ||||||
|           <context context-type="linenumber">428</context> |           <context context-type="linenumber">436</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="2218903673684131427" datatype="html"> |       <trans-unit id="2218903673684131427" datatype="html"> | ||||||
|         <source>An error occurred loading content: <x id="PH" equiv-text="err.message ?? err.toString()"/></source> |         <source>An error occurred loading content: <x id="PH" equiv-text="err.message ?? err.toString()"/></source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">414,416</context> |           <context context-type="linenumber">416,418</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="3200733026060976258" datatype="html"> |       <trans-unit id="3200733026060976258" datatype="html"> | ||||||
|         <source>Document changes detected</source> |         <source>Document changes detected</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">448</context> |           <context context-type="linenumber">450</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="2887155916749964" datatype="html"> |       <trans-unit id="2887155916749964" datatype="html"> | ||||||
|         <source>The version of this document in your browser session appears older than the existing version.</source> |         <source>The version of this document in your browser session appears older than the existing version.</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">449</context> |           <context context-type="linenumber">451</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="237142428785956348" datatype="html"> |       <trans-unit id="237142428785956348" datatype="html"> | ||||||
|         <source>Saving the document here may overwrite other changes that were made. To restore the existing version, discard your changes or close the document.</source> |         <source>Saving the document here may overwrite other changes that were made. To restore the existing version, discard your changes or close the document.</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">450</context> |           <context context-type="linenumber">452</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="8720977247725652816" datatype="html"> |       <trans-unit id="8720977247725652816" datatype="html"> | ||||||
|         <source>Ok</source> |         <source>Ok</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">452</context> |           <context context-type="linenumber">454</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="6142395741265832184" datatype="html"> |       <trans-unit id="6142395741265832184" datatype="html"> | ||||||
|         <source>Next document</source> |         <source>Next document</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">578</context> |           <context context-type="linenumber">580</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="651985345816518480" datatype="html"> |       <trans-unit id="651985345816518480" datatype="html"> | ||||||
|         <source>Previous document</source> |         <source>Previous document</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">588</context> |           <context context-type="linenumber">590</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="2885986061416655600" datatype="html"> |       <trans-unit id="2885986061416655600" datatype="html"> | ||||||
|         <source>Close document</source> |         <source>Close document</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">596</context> |           <context context-type="linenumber">598</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/services/open-documents.service.ts</context> |           <context context-type="sourcefile">src/app/services/open-documents.service.ts</context> | ||||||
| @ -6961,67 +6961,67 @@ | |||||||
|         <source>Save document</source> |         <source>Save document</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">603</context> |           <context context-type="linenumber">605</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="1784543155727940353" datatype="html"> |       <trans-unit id="1784543155727940353" datatype="html"> | ||||||
|         <source>Save and close / next</source> |         <source>Save and close / next</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">612</context> |           <context context-type="linenumber">614</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="5758784066858623886" datatype="html"> |       <trans-unit id="5758784066858623886" datatype="html"> | ||||||
|         <source>Error retrieving metadata</source> |         <source>Error retrieving metadata</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">664</context> |           <context context-type="linenumber">666</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="3456881259945295697" datatype="html"> |       <trans-unit id="3456881259945295697" datatype="html"> | ||||||
|         <source>Error retrieving suggestions.</source> |         <source>Error retrieving suggestions.</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">693</context> |           <context context-type="linenumber">695</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="2194092841814123758" datatype="html"> |       <trans-unit id="2194092841814123758" datatype="html"> | ||||||
|         <source>Document "<x id="PH" equiv-text="newValues.title"/>" saved successfully.</source> |         <source>Document "<x id="PH" equiv-text="newValues.title"/>" saved successfully.</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">865</context> |           <context context-type="linenumber">867</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">889</context> |           <context context-type="linenumber">891</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="6626387786259219838" datatype="html"> |       <trans-unit id="6626387786259219838" datatype="html"> | ||||||
|         <source>Error saving document "<x id="PH" equiv-text="this.document.title"/>"</source> |         <source>Error saving document "<x id="PH" equiv-text="this.document.title"/>"</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">895</context> |           <context context-type="linenumber">897</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="448882439049417053" datatype="html"> |       <trans-unit id="448882439049417053" datatype="html"> | ||||||
|         <source>Error saving document</source> |         <source>Error saving document</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">945</context> |           <context context-type="linenumber">947</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="8410796510716511826" datatype="html"> |       <trans-unit id="8410796510716511826" datatype="html"> | ||||||
|         <source>Do you really want to move the document "<x id="PH" equiv-text="this.document.title"/>" to the trash?</source> |         <source>Do you really want to move the document "<x id="PH" equiv-text="this.document.title"/>" to the trash?</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">977</context> |           <context context-type="linenumber">979</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="282586936710748252" datatype="html"> |       <trans-unit id="282586936710748252" datatype="html"> | ||||||
|         <source>Documents can be restored prior to permanent deletion.</source> |         <source>Documents can be restored prior to permanent deletion.</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">978</context> |           <context context-type="linenumber">980</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.ts</context> | ||||||
| @ -7032,7 +7032,7 @@ | |||||||
|         <source>Move to trash</source> |         <source>Move to trash</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">980</context> |           <context context-type="linenumber">982</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.ts</context> | ||||||
| @ -7043,14 +7043,14 @@ | |||||||
|         <source>Error deleting document</source> |         <source>Error deleting document</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">999</context> |           <context context-type="linenumber">1001</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="619486176823357521" datatype="html"> |       <trans-unit id="619486176823357521" datatype="html"> | ||||||
|         <source>Reprocess confirm</source> |         <source>Reprocess confirm</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">1019</context> |           <context context-type="linenumber">1021</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-list/bulk-editor/bulk-editor.component.ts</context> | ||||||
| @ -7061,81 +7061,81 @@ | |||||||
|         <source>This operation will permanently recreate the archive file for this document.</source> |         <source>This operation will permanently recreate the archive file for this document.</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">1020</context> |           <context context-type="linenumber">1022</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="302054111564709516" datatype="html"> |       <trans-unit id="302054111564709516" datatype="html"> | ||||||
|         <source>The archive file will be re-generated with the current settings.</source> |         <source>The archive file will be re-generated with the current settings.</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">1021</context> |           <context context-type="linenumber">1023</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="8251197608401006898" datatype="html"> |       <trans-unit id="8251197608401006898" datatype="html"> | ||||||
|         <source>Reprocess operation for "<x id="PH" equiv-text="this.document.title"/>" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content.</source> |         <source>Reprocess operation for "<x id="PH" equiv-text="this.document.title"/>" will begin in the background. Close and re-open or reload this document after the operation has completed to see new content.</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">1031</context> |           <context context-type="linenumber">1033</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="4409560272830824468" datatype="html"> |       <trans-unit id="4409560272830824468" datatype="html"> | ||||||
|         <source>Error executing operation</source> |         <source>Error executing operation</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">1042</context> |           <context context-type="linenumber">1044</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="6030453331794586802" datatype="html"> |       <trans-unit id="6030453331794586802" datatype="html"> | ||||||
|         <source>Error downloading document</source> |         <source>Error downloading document</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">1091</context> |           <context context-type="linenumber">1093</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="4458954481601077369" datatype="html"> |       <trans-unit id="4458954481601077369" datatype="html"> | ||||||
|         <source>Page Fit</source> |         <source>Page Fit</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">1168</context> |           <context context-type="linenumber">1170</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="4663705961777238777" datatype="html"> |       <trans-unit id="4663705961777238777" datatype="html"> | ||||||
|         <source>PDF edit operation for "<x id="PH" equiv-text="this.document.title"/>" will begin in the background.</source> |         <source>PDF edit operation for "<x id="PH" equiv-text="this.document.title"/>" will begin in the background.</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">1406</context> |           <context context-type="linenumber">1408</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="9043972994040261999" datatype="html"> |       <trans-unit id="9043972994040261999" datatype="html"> | ||||||
|         <source>Error executing PDF edit operation</source> |         <source>Error executing PDF edit operation</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">1418</context> |           <context context-type="linenumber">1420</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="3740891324955700797" datatype="html"> |       <trans-unit id="3740891324955700797" datatype="html"> | ||||||
|         <source>Print failed.</source> |         <source>Print failed.</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">1450</context> |           <context context-type="linenumber">1452</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="6457245677384603573" datatype="html"> |       <trans-unit id="6457245677384603573" datatype="html"> | ||||||
|         <source>Error loading document for printing.</source> |         <source>Error loading document for printing.</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">1458</context> |           <context context-type="linenumber">1460</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="6085793215710522488" datatype="html"> |       <trans-unit id="6085793215710522488" datatype="html"> | ||||||
|         <source>An error occurred loading tiff: <x id="PH" equiv-text="err.toString()"/></source> |         <source>An error occurred loading tiff: <x id="PH" equiv-text="err.toString()"/></source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">1523</context> |           <context context-type="linenumber">1525</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> |           <context context-type="sourcefile">src/app/components/document-detail/document-detail.component.ts</context> | ||||||
|           <context context-type="linenumber">1527</context> |           <context context-type="linenumber">1529</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="4958946940233632319" datatype="html"> |       <trans-unit id="4958946940233632319" datatype="html"> | ||||||
| @ -7560,7 +7560,7 @@ | |||||||
|           remove <x id="INTERPOLATION"/> custom fields from the selected documents.}}</source> |           remove <x id="INTERPOLATION"/> custom fields from the selected documents.}}</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html</context> |           <context context-type="sourcefile">src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.html</context> | ||||||
|           <context context-type="linenumber">69,74</context> |           <context context-type="linenumber">73,78</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="2784168796433474565" datatype="html"> |       <trans-unit id="2784168796433474565" datatype="html"> | ||||||
| @ -7699,7 +7699,7 @@ | |||||||
|         </context-group> |         </context-group> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/data/custom-field.ts</context> |           <context context-type="sourcefile">src/app/data/custom-field.ts</context> | ||||||
|           <context context-type="linenumber">50</context> |           <context context-type="linenumber">51</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="5145213156408463657" datatype="html"> |       <trans-unit id="5145213156408463657" datatype="html"> | ||||||
| @ -9148,56 +9148,63 @@ | |||||||
|         <source>Boolean</source> |         <source>Boolean</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/data/custom-field.ts</context> |           <context context-type="sourcefile">src/app/data/custom-field.ts</context> | ||||||
|           <context context-type="linenumber">18</context> |           <context context-type="linenumber">19</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="3973931101896534797" datatype="html"> |       <trans-unit id="3973931101896534797" datatype="html"> | ||||||
|         <source>Date</source> |         <source>Date</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/data/custom-field.ts</context> |           <context context-type="sourcefile">src/app/data/custom-field.ts</context> | ||||||
|           <context context-type="linenumber">22</context> |           <context context-type="linenumber">23</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="362956598863566327" datatype="html"> |       <trans-unit id="362956598863566327" datatype="html"> | ||||||
|         <source>Integer</source> |         <source>Integer</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/data/custom-field.ts</context> |           <context context-type="sourcefile">src/app/data/custom-field.ts</context> | ||||||
|           <context context-type="linenumber">26</context> |           <context context-type="linenumber">27</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="6370642728789544052" datatype="html"> |       <trans-unit id="6370642728789544052" datatype="html"> | ||||||
|         <source>Number</source> |         <source>Number</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/data/custom-field.ts</context> |           <context context-type="sourcefile">src/app/data/custom-field.ts</context> | ||||||
|           <context context-type="linenumber">30</context> |           <context context-type="linenumber">31</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="6430409302408843009" datatype="html"> |       <trans-unit id="6430409302408843009" datatype="html"> | ||||||
|         <source>Monetary</source> |         <source>Monetary</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/data/custom-field.ts</context> |           <context context-type="sourcefile">src/app/data/custom-field.ts</context> | ||||||
|           <context context-type="linenumber">34</context> |           <context context-type="linenumber">35</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="6162693758764653365" datatype="html"> |       <trans-unit id="6162693758764653365" datatype="html"> | ||||||
|         <source>Text</source> |         <source>Text</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/data/custom-field.ts</context> |           <context context-type="sourcefile">src/app/data/custom-field.ts</context> | ||||||
|           <context context-type="linenumber">38</context> |           <context context-type="linenumber">39</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="8308045076391224954" datatype="html"> |       <trans-unit id="8308045076391224954" datatype="html"> | ||||||
|         <source>Url</source> |         <source>Url</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/data/custom-field.ts</context> |           <context context-type="sourcefile">src/app/data/custom-field.ts</context> | ||||||
|           <context context-type="linenumber">42</context> |           <context context-type="linenumber">43</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="3650316326183661476" datatype="html"> |       <trans-unit id="3650316326183661476" datatype="html"> | ||||||
|         <source>Document Link</source> |         <source>Document Link</source> | ||||||
|         <context-group purpose="location"> |         <context-group purpose="location"> | ||||||
|           <context context-type="sourcefile">src/app/data/custom-field.ts</context> |           <context context-type="sourcefile">src/app/data/custom-field.ts</context> | ||||||
|           <context context-type="linenumber">46</context> |           <context context-type="linenumber">47</context> | ||||||
|  |         </context-group> | ||||||
|  |       </trans-unit> | ||||||
|  |       <trans-unit id="2541053474781098515" datatype="html"> | ||||||
|  |         <source>Long Text</source> | ||||||
|  |         <context-group purpose="location"> | ||||||
|  |           <context context-type="sourcefile">src/app/data/custom-field.ts</context> | ||||||
|  |           <context context-type="linenumber">55</context> | ||||||
|         </context-group> |         </context-group> | ||||||
|       </trans-unit> |       </trans-unit> | ||||||
|       <trans-unit id="4460262093225954455" datatype="html"> |       <trans-unit id="4460262093225954455" datatype="html"> | ||||||
|  | |||||||
| @ -35,6 +35,9 @@ | |||||||
|             @case (CustomFieldDataType.Select) { |             @case (CustomFieldDataType.Select) { | ||||||
|                 <span [ngbTooltip]="nameTooltip">{{getSelectValue(field, value)}}</span> |                 <span [ngbTooltip]="nameTooltip">{{getSelectValue(field, value)}}</span> | ||||||
|             } |             } | ||||||
|  |             @case (CustomFieldDataType.LongText) { | ||||||
|  |                 <p class="mb-0" [ngbTooltip]="nameTooltip">{{value | slice:0:20}}{{value.length > 20 ? '...' : ''}}</p> | ||||||
|  |             } | ||||||
|             @default { |             @default { | ||||||
|               <span [ngbTooltip]="nameTooltip">{{value}}</span> |               <span [ngbTooltip]="nameTooltip">{{value}}</span> | ||||||
|             } |             } | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| import { CurrencyPipe, getLocaleCurrencyCode } from '@angular/common' | import { CurrencyPipe, getLocaleCurrencyCode, SlicePipe } from '@angular/common' | ||||||
| import { Component, Input, LOCALE_ID, OnInit, inject } from '@angular/core' | import { Component, inject, Input, LOCALE_ID, OnInit } from '@angular/core' | ||||||
| import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap' | import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap' | ||||||
| import { takeUntil } from 'rxjs' | import { takeUntil } from 'rxjs' | ||||||
| import { CustomField, CustomFieldDataType } from 'src/app/data/custom-field' | import { CustomField, CustomFieldDataType } from 'src/app/data/custom-field' | ||||||
| @ -14,7 +14,7 @@ import { LoadingComponentWithPermissions } from '../../loading-component/loading | |||||||
|   selector: 'pngx-custom-field-display', |   selector: 'pngx-custom-field-display', | ||||||
|   templateUrl: './custom-field-display.component.html', |   templateUrl: './custom-field-display.component.html', | ||||||
|   styleUrl: './custom-field-display.component.scss', |   styleUrl: './custom-field-display.component.scss', | ||||||
|   imports: [CustomDatePipe, CurrencyPipe, NgbTooltipModule], |   imports: [CustomDatePipe, CurrencyPipe, NgbTooltipModule, SlicePipe], | ||||||
| }) | }) | ||||||
| export class CustomFieldDisplayComponent | export class CustomFieldDisplayComponent | ||||||
|   extends LoadingComponentWithPermissions |   extends LoadingComponentWithPermissions | ||||||
|  | |||||||
| @ -68,6 +68,11 @@ | |||||||
|           [allowNull]="true" |           [allowNull]="true" | ||||||
|           [horizontal]="true"></pngx-input-select> |           [horizontal]="true"></pngx-input-select> | ||||||
|         } |         } | ||||||
|  |         @case (CustomFieldDataType.LongText) { | ||||||
|  |           <pngx-input-textarea [(ngModel)]="value[fieldId]" (ngModelChange)="onChange(value)" | ||||||
|  |           [title]="getCustomField(fieldId)?.name" | ||||||
|  |           class="flex-grow-1"></pngx-input-textarea> | ||||||
|  |         } | ||||||
|       } |       } | ||||||
|       <button type="button" class="btn btn-link text-danger" (click)="removeSelectedField.next(fieldId)"> |       <button type="button" class="btn btn-link text-danger" (click)="removeSelectedField.next(fieldId)"> | ||||||
|         <i-bs name="trash"></i-bs> |         <i-bs name="trash"></i-bs> | ||||||
|  | |||||||
| @ -24,6 +24,7 @@ import { MonetaryComponent } from '../monetary/monetary.component' | |||||||
| import { NumberComponent } from '../number/number.component' | import { NumberComponent } from '../number/number.component' | ||||||
| import { SelectComponent } from '../select/select.component' | import { SelectComponent } from '../select/select.component' | ||||||
| import { TextComponent } from '../text/text.component' | import { TextComponent } from '../text/text.component' | ||||||
|  | import { TextAreaComponent } from '../textarea/textarea.component' | ||||||
| import { UrlComponent } from '../url/url.component' | import { UrlComponent } from '../url/url.component' | ||||||
| 
 | 
 | ||||||
| @Component({ | @Component({ | ||||||
| @ -51,6 +52,7 @@ import { UrlComponent } from '../url/url.component' | |||||||
|     ReactiveFormsModule, |     ReactiveFormsModule, | ||||||
|     RouterModule, |     RouterModule, | ||||||
|     NgxBootstrapIconsModule, |     NgxBootstrapIconsModule, | ||||||
|  |     TextAreaComponent, | ||||||
|   ], |   ], | ||||||
| }) | }) | ||||||
| export class CustomFieldsValuesComponent extends AbstractInputComponent<Object> { | export class CustomFieldsValuesComponent extends AbstractInputComponent<Object> { | ||||||
|  | |||||||
| @ -4,6 +4,7 @@ import { | |||||||
|   NG_VALUE_ACCESSOR, |   NG_VALUE_ACCESSOR, | ||||||
|   ReactiveFormsModule, |   ReactiveFormsModule, | ||||||
| } from '@angular/forms' | } from '@angular/forms' | ||||||
|  | import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' | ||||||
| import { SafeHtmlPipe } from 'src/app/pipes/safehtml.pipe' | import { SafeHtmlPipe } from 'src/app/pipes/safehtml.pipe' | ||||||
| import { AbstractInputComponent } from '../abstract-input' | import { AbstractInputComponent } from '../abstract-input' | ||||||
| 
 | 
 | ||||||
| @ -18,7 +19,12 @@ import { AbstractInputComponent } from '../abstract-input' | |||||||
|   selector: 'pngx-input-textarea', |   selector: 'pngx-input-textarea', | ||||||
|   templateUrl: './textarea.component.html', |   templateUrl: './textarea.component.html', | ||||||
|   styleUrls: ['./textarea.component.scss'], |   styleUrls: ['./textarea.component.scss'], | ||||||
|   imports: [FormsModule, ReactiveFormsModule, SafeHtmlPipe], |   imports: [ | ||||||
|  |     FormsModule, | ||||||
|  |     ReactiveFormsModule, | ||||||
|  |     SafeHtmlPipe, | ||||||
|  |     NgxBootstrapIconsModule, | ||||||
|  |   ], | ||||||
| }) | }) | ||||||
| export class TextAreaComponent extends AbstractInputComponent<string> { | export class TextAreaComponent extends AbstractInputComponent<string> { | ||||||
|   @Input() |   @Input() | ||||||
|  | |||||||
| @ -30,7 +30,7 @@ | |||||||
|       <div class="page-item rounded p-2" cdkDrag (click)="toggleSelection(i)" [class.selected]="p.selected"> |       <div class="page-item rounded p-2" cdkDrag (click)="toggleSelection(i)" [class.selected]="p.selected"> | ||||||
|         <div class="btn-toolbar hover-actions z-10"> |         <div class="btn-toolbar hover-actions z-10"> | ||||||
|           <div class="btn-group me-2"> |           <div class="btn-group me-2"> | ||||||
|             <button class="btn btn-sm btn-dark" (click)="rotate(i); $event.stopPropagation()" title="Rotate page counter-clockwise" i18n-title> |             <button class="btn btn-sm btn-dark" (click)="rotate(i, true); $event.stopPropagation()" title="Rotate page counter-clockwise" i18n-title> | ||||||
|               <i-bs name="arrow-counterclockwise"></i-bs> |               <i-bs name="arrow-counterclockwise"></i-bs> | ||||||
|             </button> |             </button> | ||||||
|             <button class="btn btn-sm btn-dark" (click)="rotate(i); $event.stopPropagation()" title="Rotate page clockwise" i18n-title> |             <button class="btn btn-sm btn-dark" (click)="rotate(i); $event.stopPropagation()" title="Rotate page clockwise" i18n-title> | ||||||
|  | |||||||
| @ -67,8 +67,9 @@ export class PDFEditorComponent extends ConfirmDialogComponent { | |||||||
|     this.pages[i].selected = !this.pages[i].selected |     this.pages[i].selected = !this.pages[i].selected | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   rotate(i: number) { |   rotate(i: number, counterclockwise: boolean = false) { | ||||||
|     this.pages[i].rotate = (this.pages[i].rotate + 90) % 360 |     this.pages[i].rotate = | ||||||
|  |       (this.pages[i].rotate + (counterclockwise ? -90 : 90) + 360) % 360 | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   rotateSelected(dir: number) { |   rotateSelected(dir: number) { | ||||||
|  | |||||||
| @ -17,7 +17,7 @@ | |||||||
|             <i-bs width="0.9em" height="0.9em" name="exclamation-triangle"></i-bs> |             <i-bs width="0.9em" height="0.9em" name="exclamation-triangle"></i-bs> | ||||||
|         } |         } | ||||||
|         <div> |         <div> | ||||||
|             <p class="ms-2 mb-0">{{toast.content}}</p> |             <p class="ms-2 mb-0 text-break">{{toast.content}}</p> | ||||||
|             @if (toast.error) { |             @if (toast.error) { | ||||||
|             <details class="ms-2"> |             <details class="ms-2"> | ||||||
|                 <div class="mt-2 ms-n4 me-n2 small"> |                 <div class="mt-2 ms-n4 me-n2 small"> | ||||||
|  | |||||||
| @ -232,6 +232,14 @@ | |||||||
|                       (removed)="removeField(fieldInstance)" |                       (removed)="removeField(fieldInstance)" | ||||||
|                       [error]="getCustomFieldError(i)"></pngx-input-select> |                       [error]="getCustomFieldError(i)"></pngx-input-select> | ||||||
|                     } |                     } | ||||||
|  |                     @case (CustomFieldDataType.LongText) { | ||||||
|  |                       <pngx-input-textarea formControlName="value" | ||||||
|  |                       [title]="getCustomFieldFromInstance(fieldInstance)?.name" | ||||||
|  |                       [removable]="userCanEdit" | ||||||
|  |                       (removed)="removeField(fieldInstance)" | ||||||
|  |                       [horizontal]="true" | ||||||
|  |                       [error]="getCustomFieldError(i)"></pngx-input-textarea> | ||||||
|  |                     } | ||||||
|                   } |                   } | ||||||
|                 </div> |                 </div> | ||||||
|               } |               } | ||||||
|  | |||||||
| @ -100,6 +100,7 @@ import { PermissionsFormComponent } from '../common/input/permissions/permission | |||||||
| import { SelectComponent } from '../common/input/select/select.component' | import { SelectComponent } from '../common/input/select/select.component' | ||||||
| import { TagsComponent } from '../common/input/tags/tags.component' | import { TagsComponent } from '../common/input/tags/tags.component' | ||||||
| import { TextComponent } from '../common/input/text/text.component' | import { TextComponent } from '../common/input/text/text.component' | ||||||
|  | import { TextAreaComponent } from '../common/input/textarea/textarea.component' | ||||||
| import { UrlComponent } from '../common/input/url/url.component' | import { UrlComponent } from '../common/input/url/url.component' | ||||||
| import { PageHeaderComponent } from '../common/page-header/page-header.component' | import { PageHeaderComponent } from '../common/page-header/page-header.component' | ||||||
| import { | import { | ||||||
| @ -177,6 +178,7 @@ export enum ZoomSetting { | |||||||
|     NgbDropdownModule, |     NgbDropdownModule, | ||||||
|     NgxBootstrapIconsModule, |     NgxBootstrapIconsModule, | ||||||
|     PdfViewerModule, |     PdfViewerModule, | ||||||
|  |     TextAreaComponent, | ||||||
|   ], |   ], | ||||||
| }) | }) | ||||||
| export class DocumentDetailComponent | export class DocumentDetailComponent | ||||||
|  | |||||||
| @ -56,6 +56,10 @@ | |||||||
|                 [items]="field.extra_data.select_options" bindLabel="label" [allowNull]="true" [horizontal]="true"> |                 [items]="field.extra_data.select_options" bindLabel="label" [allowNull]="true" [horizontal]="true"> | ||||||
|               </pngx-input-select> |               </pngx-input-select> | ||||||
|             } |             } | ||||||
|  |             @case (CustomFieldDataType.LongText) { | ||||||
|  |               <pngx-input-textarea formControlName="{{field.id}}" class="w-100" [title]="field.name" [horizontal]="true"> | ||||||
|  |               </pngx-input-textarea> | ||||||
|  |             } | ||||||
|           } |           } | ||||||
|           <button type="button" class="btn btn-outline-danger mb-3" (click)="removeField(field.id)"> |           <button type="button" class="btn btn-outline-danger mb-3" (click)="removeField(field.id)"> | ||||||
|             <i-bs name="x"></i-bs> |             <i-bs name="x"></i-bs> | ||||||
|  | |||||||
| @ -18,6 +18,7 @@ import { TextComponent } from 'src/app/components/common/input/text/text.compone | |||||||
| import { UrlComponent } from 'src/app/components/common/input/url/url.component' | import { UrlComponent } from 'src/app/components/common/input/url/url.component' | ||||||
| import { CustomField, CustomFieldDataType } from 'src/app/data/custom-field' | import { CustomField, CustomFieldDataType } from 'src/app/data/custom-field' | ||||||
| import { DocumentService } from 'src/app/services/rest/document.service' | import { DocumentService } from 'src/app/services/rest/document.service' | ||||||
|  | import { TextAreaComponent } from '../../../common/input/textarea/textarea.component' | ||||||
| 
 | 
 | ||||||
| @Component({ | @Component({ | ||||||
|   selector: 'pngx-custom-fields-bulk-edit-dialog', |   selector: 'pngx-custom-fields-bulk-edit-dialog', | ||||||
| @ -35,6 +36,7 @@ import { DocumentService } from 'src/app/services/rest/document.service' | |||||||
|     FormsModule, |     FormsModule, | ||||||
|     ReactiveFormsModule, |     ReactiveFormsModule, | ||||||
|     NgxBootstrapIconsModule, |     NgxBootstrapIconsModule, | ||||||
|  |     TextAreaComponent, | ||||||
|   ], |   ], | ||||||
| }) | }) | ||||||
| export class CustomFieldsBulkEditDialogComponent { | export class CustomFieldsBulkEditDialogComponent { | ||||||
|  | |||||||
| @ -114,6 +114,10 @@ export const CUSTOM_FIELD_QUERY_OPERATOR_GROUPS_BY_TYPE = { | |||||||
|     CustomFieldQueryOperatorGroups.Exact, |     CustomFieldQueryOperatorGroups.Exact, | ||||||
|     CustomFieldQueryOperatorGroups.Subset, |     CustomFieldQueryOperatorGroups.Subset, | ||||||
|   ], |   ], | ||||||
|  |   [CustomFieldDataType.LongText]: [ | ||||||
|  |     CustomFieldQueryOperatorGroups.Basic, | ||||||
|  |     CustomFieldQueryOperatorGroups.String, | ||||||
|  |   ], | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export const CUSTOM_FIELD_QUERY_VALUE_TYPES_BY_OPERATOR = { | export const CUSTOM_FIELD_QUERY_VALUE_TYPES_BY_OPERATOR = { | ||||||
|  | |||||||
| @ -10,6 +10,7 @@ export enum CustomFieldDataType { | |||||||
|   Monetary = 'monetary', |   Monetary = 'monetary', | ||||||
|   DocumentLink = 'documentlink', |   DocumentLink = 'documentlink', | ||||||
|   Select = 'select', |   Select = 'select', | ||||||
|  |   LongText = 'longtext', | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export const DATA_TYPE_LABELS = [ | export const DATA_TYPE_LABELS = [ | ||||||
| @ -49,6 +50,10 @@ export const DATA_TYPE_LABELS = [ | |||||||
|     id: CustomFieldDataType.Select, |     id: CustomFieldDataType.Select, | ||||||
|     name: $localize`Select`, |     name: $localize`Select`, | ||||||
|   }, |   }, | ||||||
|  |   { | ||||||
|  |     id: CustomFieldDataType.LongText, | ||||||
|  |     name: $localize`Long Text`, | ||||||
|  |   }, | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| export interface CustomField extends ObjectWithId { | export interface CustomField extends ObjectWithId { | ||||||
|  | |||||||
| @ -181,6 +181,7 @@ def modify_custom_fields( | |||||||
|                 defaults[value_field] = value |                 defaults[value_field] = value | ||||||
|                 if ( |                 if ( | ||||||
|                     custom_field.data_type == CustomField.FieldDataType.DOCUMENTLINK |                     custom_field.data_type == CustomField.FieldDataType.DOCUMENTLINK | ||||||
|  |                     and value | ||||||
|                     and doc_id in value |                     and doc_id in value | ||||||
|                 ): |                 ): | ||||||
|                     # Prevent self-linking |                     # Prevent self-linking | ||||||
|  | |||||||
| @ -230,6 +230,7 @@ class CustomFieldsFilter(Filter): | |||||||
|                 | qs.filter(custom_fields__value_monetary__icontains=value) |                 | qs.filter(custom_fields__value_monetary__icontains=value) | ||||||
|                 | qs.filter(custom_fields__value_document_ids__icontains=value) |                 | qs.filter(custom_fields__value_document_ids__icontains=value) | ||||||
|                 | qs.filter(custom_fields__value_select__in=option_ids) |                 | qs.filter(custom_fields__value_select__in=option_ids) | ||||||
|  |                 | qs.filter(custom_fields__value_long_text__icontains=value) | ||||||
|             ) |             ) | ||||||
|         else: |         else: | ||||||
|             return qs |             return qs | ||||||
| @ -314,6 +315,7 @@ class CustomFieldQueryParser: | |||||||
|         CustomField.FieldDataType.MONETARY: ("basic", "string", "arithmetic"), |         CustomField.FieldDataType.MONETARY: ("basic", "string", "arithmetic"), | ||||||
|         CustomField.FieldDataType.DOCUMENTLINK: ("basic", "containment"), |         CustomField.FieldDataType.DOCUMENTLINK: ("basic", "containment"), | ||||||
|         CustomField.FieldDataType.SELECT: ("basic",), |         CustomField.FieldDataType.SELECT: ("basic",), | ||||||
|  |         CustomField.FieldDataType.LONG_TEXT: ("basic", "string"), | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     DATE_COMPONENTS = [ |     DATE_COMPONENTS = [ | ||||||
| @ -845,7 +847,10 @@ class DocumentsOrderingFilter(OrderingFilter): | |||||||
| 
 | 
 | ||||||
|             annotation = None |             annotation = None | ||||||
|             match field.data_type: |             match field.data_type: | ||||||
|                 case CustomField.FieldDataType.STRING: |                 case ( | ||||||
|  |                     CustomField.FieldDataType.STRING | ||||||
|  |                     | CustomField.FieldDataType.LONG_TEXT | ||||||
|  |                 ): | ||||||
|                     annotation = Subquery( |                     annotation = Subquery( | ||||||
|                         CustomFieldInstance.objects.filter( |                         CustomFieldInstance.objects.filter( | ||||||
|                             document_id=OuterRef("id"), |                             document_id=OuterRef("id"), | ||||||
|  | |||||||
| @ -0,0 +1,39 @@ | |||||||
|  | # Generated by Django 5.2.6 on 2025-09-13 17:11 | ||||||
|  | 
 | ||||||
|  | from django.db import migrations | ||||||
|  | from django.db import models | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class Migration(migrations.Migration): | ||||||
|  |     dependencies = [ | ||||||
|  |         ("documents", "1069_workflowtrigger_filter_has_storage_path_and_more"), | ||||||
|  |     ] | ||||||
|  | 
 | ||||||
|  |     operations = [ | ||||||
|  |         migrations.AddField( | ||||||
|  |             model_name="customfieldinstance", | ||||||
|  |             name="value_long_text", | ||||||
|  |             field=models.TextField(null=True), | ||||||
|  |         ), | ||||||
|  |         migrations.AlterField( | ||||||
|  |             model_name="customfield", | ||||||
|  |             name="data_type", | ||||||
|  |             field=models.CharField( | ||||||
|  |                 choices=[ | ||||||
|  |                     ("string", "String"), | ||||||
|  |                     ("url", "URL"), | ||||||
|  |                     ("date", "Date"), | ||||||
|  |                     ("boolean", "Boolean"), | ||||||
|  |                     ("integer", "Integer"), | ||||||
|  |                     ("float", "Float"), | ||||||
|  |                     ("monetary", "Monetary"), | ||||||
|  |                     ("documentlink", "Document Link"), | ||||||
|  |                     ("select", "Select"), | ||||||
|  |                     ("longtext", "Long Text"), | ||||||
|  |                 ], | ||||||
|  |                 editable=False, | ||||||
|  |                 max_length=50, | ||||||
|  |                 verbose_name="data type", | ||||||
|  |             ), | ||||||
|  |         ), | ||||||
|  |     ] | ||||||
| @ -760,6 +760,7 @@ class CustomField(models.Model): | |||||||
|         MONETARY = ("monetary", _("Monetary")) |         MONETARY = ("monetary", _("Monetary")) | ||||||
|         DOCUMENTLINK = ("documentlink", _("Document Link")) |         DOCUMENTLINK = ("documentlink", _("Document Link")) | ||||||
|         SELECT = ("select", _("Select")) |         SELECT = ("select", _("Select")) | ||||||
|  |         LONG_TEXT = ("longtext", _("Long Text")) | ||||||
| 
 | 
 | ||||||
|     created = models.DateTimeField( |     created = models.DateTimeField( | ||||||
|         _("created"), |         _("created"), | ||||||
| @ -817,6 +818,7 @@ class CustomFieldInstance(SoftDeleteModel): | |||||||
|         CustomField.FieldDataType.MONETARY: "value_monetary", |         CustomField.FieldDataType.MONETARY: "value_monetary", | ||||||
|         CustomField.FieldDataType.DOCUMENTLINK: "value_document_ids", |         CustomField.FieldDataType.DOCUMENTLINK: "value_document_ids", | ||||||
|         CustomField.FieldDataType.SELECT: "value_select", |         CustomField.FieldDataType.SELECT: "value_select", | ||||||
|  |         CustomField.FieldDataType.LONG_TEXT: "value_long_text", | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     created = models.DateTimeField( |     created = models.DateTimeField( | ||||||
| @ -884,6 +886,8 @@ class CustomFieldInstance(SoftDeleteModel): | |||||||
| 
 | 
 | ||||||
|     value_select = models.CharField(null=True, max_length=16) |     value_select = models.CharField(null=True, max_length=16) | ||||||
| 
 | 
 | ||||||
|  |     value_long_text = models.TextField(null=True) | ||||||
|  | 
 | ||||||
|     class Meta: |     class Meta: | ||||||
|         ordering = ("created",) |         ordering = ("created",) | ||||||
|         verbose_name = _("custom field instance") |         verbose_name = _("custom field instance") | ||||||
|  | |||||||
| @ -202,6 +202,7 @@ def get_custom_fields_context( | |||||||
|             CustomField.FieldDataType.MONETARY, |             CustomField.FieldDataType.MONETARY, | ||||||
|             CustomField.FieldDataType.STRING, |             CustomField.FieldDataType.STRING, | ||||||
|             CustomField.FieldDataType.URL, |             CustomField.FieldDataType.URL, | ||||||
|  |             CustomField.FieldDataType.LONG_TEXT, | ||||||
|         }: |         }: | ||||||
|             value = pathvalidate.sanitize_filename( |             value = pathvalidate.sanitize_filename( | ||||||
|                 field_instance.value, |                 field_instance.value, | ||||||
|  | |||||||
| @ -18,14 +18,17 @@ class TestDocument(TestCase): | |||||||
|         self.originals_dir = tempfile.mkdtemp() |         self.originals_dir = tempfile.mkdtemp() | ||||||
|         self.thumb_dir = tempfile.mkdtemp() |         self.thumb_dir = tempfile.mkdtemp() | ||||||
| 
 | 
 | ||||||
|         override_settings( |         self.overrides = override_settings( | ||||||
|             ORIGINALS_DIR=self.originals_dir, |             ORIGINALS_DIR=self.originals_dir, | ||||||
|             THUMBNAIL_DIR=self.thumb_dir, |             THUMBNAIL_DIR=self.thumb_dir, | ||||||
|         ).enable() |         ) | ||||||
|  | 
 | ||||||
|  |         self.overrides.enable() | ||||||
| 
 | 
 | ||||||
|     def tearDown(self) -> None: |     def tearDown(self) -> None: | ||||||
|         shutil.rmtree(self.originals_dir) |         shutil.rmtree(self.originals_dir) | ||||||
|         shutil.rmtree(self.thumb_dir) |         shutil.rmtree(self.thumb_dir) | ||||||
|  |         self.overrides.disable() | ||||||
| 
 | 
 | ||||||
|     def test_file_deletion(self): |     def test_file_deletion(self): | ||||||
|         document = Document.objects.create( |         document = Document.objects.create( | ||||||
|  | |||||||
| @ -97,12 +97,6 @@ class TestArchiver(DirectoriesMixin, FileSystemAssertsMixin, TestCase): | |||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class TestDecryptDocuments(FileSystemAssertsMixin, TestCase): | class TestDecryptDocuments(FileSystemAssertsMixin, TestCase): | ||||||
|     @override_settings( |  | ||||||
|         ORIGINALS_DIR=(Path(__file__).parent / "samples" / "originals"), |  | ||||||
|         THUMBNAIL_DIR=(Path(__file__).parent / "samples" / "thumb"), |  | ||||||
|         PASSPHRASE="test", |  | ||||||
|         FILENAME_FORMAT=None, |  | ||||||
|     ) |  | ||||||
|     @mock.patch("documents.management.commands.decrypt_documents.input") |     @mock.patch("documents.management.commands.decrypt_documents.input") | ||||||
|     def test_decrypt(self, m): |     def test_decrypt(self, m): | ||||||
|         media_dir = tempfile.mkdtemp() |         media_dir = tempfile.mkdtemp() | ||||||
| @ -111,55 +105,55 @@ class TestDecryptDocuments(FileSystemAssertsMixin, TestCase): | |||||||
|         originals_dir.mkdir(parents=True, exist_ok=True) |         originals_dir.mkdir(parents=True, exist_ok=True) | ||||||
|         thumb_dir.mkdir(parents=True, exist_ok=True) |         thumb_dir.mkdir(parents=True, exist_ok=True) | ||||||
| 
 | 
 | ||||||
|         override_settings( |         with override_settings( | ||||||
|             ORIGINALS_DIR=originals_dir, |             ORIGINALS_DIR=originals_dir, | ||||||
|             THUMBNAIL_DIR=thumb_dir, |             THUMBNAIL_DIR=thumb_dir, | ||||||
|             PASSPHRASE="test", |             PASSPHRASE="test", | ||||||
|         ).enable() |             FILENAME_FORMAT=None, | ||||||
|  |         ): | ||||||
|  |             doc = Document.objects.create( | ||||||
|  |                 checksum="82186aaa94f0b98697d704b90fd1c072", | ||||||
|  |                 title="wow", | ||||||
|  |                 filename="0000004.pdf.gpg", | ||||||
|  |                 mime_type="application/pdf", | ||||||
|  |                 storage_type=Document.STORAGE_TYPE_GPG, | ||||||
|  |             ) | ||||||
| 
 | 
 | ||||||
|         doc = Document.objects.create( |             shutil.copy( | ||||||
|             checksum="82186aaa94f0b98697d704b90fd1c072", |                 ( | ||||||
|             title="wow", |                     Path(__file__).parent | ||||||
|             filename="0000004.pdf.gpg", |                     / "samples" | ||||||
|             mime_type="application/pdf", |                     / "documents" | ||||||
|             storage_type=Document.STORAGE_TYPE_GPG, |                     / "originals" | ||||||
|         ) |                     / "0000004.pdf.gpg" | ||||||
|  |                 ), | ||||||
|  |                 originals_dir / "0000004.pdf.gpg", | ||||||
|  |             ) | ||||||
|  |             shutil.copy( | ||||||
|  |                 ( | ||||||
|  |                     Path(__file__).parent | ||||||
|  |                     / "samples" | ||||||
|  |                     / "documents" | ||||||
|  |                     / "thumbnails" | ||||||
|  |                     / "0000004.webp.gpg" | ||||||
|  |                 ), | ||||||
|  |                 thumb_dir / f"{doc.id:07}.webp.gpg", | ||||||
|  |             ) | ||||||
| 
 | 
 | ||||||
|         shutil.copy( |             call_command("decrypt_documents") | ||||||
|             ( |  | ||||||
|                 Path(__file__).parent |  | ||||||
|                 / "samples" |  | ||||||
|                 / "documents" |  | ||||||
|                 / "originals" |  | ||||||
|                 / "0000004.pdf.gpg" |  | ||||||
|             ), |  | ||||||
|             originals_dir / "0000004.pdf.gpg", |  | ||||||
|         ) |  | ||||||
|         shutil.copy( |  | ||||||
|             ( |  | ||||||
|                 Path(__file__).parent |  | ||||||
|                 / "samples" |  | ||||||
|                 / "documents" |  | ||||||
|                 / "thumbnails" |  | ||||||
|                 / "0000004.webp.gpg" |  | ||||||
|             ), |  | ||||||
|             thumb_dir / f"{doc.id:07}.webp.gpg", |  | ||||||
|         ) |  | ||||||
| 
 | 
 | ||||||
|         call_command("decrypt_documents") |             doc.refresh_from_db() | ||||||
| 
 | 
 | ||||||
|         doc.refresh_from_db() |             self.assertEqual(doc.storage_type, Document.STORAGE_TYPE_UNENCRYPTED) | ||||||
|  |             self.assertEqual(doc.filename, "0000004.pdf") | ||||||
|  |             self.assertIsFile(Path(originals_dir) / "0000004.pdf") | ||||||
|  |             self.assertIsFile(doc.source_path) | ||||||
|  |             self.assertIsFile(Path(thumb_dir) / f"{doc.id:07}.webp") | ||||||
|  |             self.assertIsFile(doc.thumbnail_path) | ||||||
| 
 | 
 | ||||||
|         self.assertEqual(doc.storage_type, Document.STORAGE_TYPE_UNENCRYPTED) |             with doc.source_file as f: | ||||||
|         self.assertEqual(doc.filename, "0000004.pdf") |                 checksum: str = hashlib.md5(f.read()).hexdigest() | ||||||
|         self.assertIsFile(Path(originals_dir) / "0000004.pdf") |                 self.assertEqual(checksum, doc.checksum) | ||||||
|         self.assertIsFile(doc.source_path) |  | ||||||
|         self.assertIsFile(Path(thumb_dir) / f"{doc.id:07}.webp") |  | ||||||
|         self.assertIsFile(doc.thumbnail_path) |  | ||||||
| 
 |  | ||||||
|         with doc.source_file as f: |  | ||||||
|             checksum: str = hashlib.md5(f.read()).hexdigest() |  | ||||||
|             self.assertEqual(checksum, doc.checksum) |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| class TestMakeIndex(TestCase): | class TestMakeIndex(TestCase): | ||||||
|  | |||||||
| @ -3410,8 +3410,8 @@ class TestDateWorkflowLocalization( | |||||||
|         w.actions.add(action) |         w.actions.add(action) | ||||||
|         w.save() |         w.save() | ||||||
| 
 | 
 | ||||||
|         settings.SCRATCH_DIR = tmp_path / "scratch" |  | ||||||
|         (tmp_path / "scratch").mkdir(parents=True, exist_ok=True) |         (tmp_path / "scratch").mkdir(parents=True, exist_ok=True) | ||||||
|  |         (tmp_path / "thumbnails").mkdir(parents=True, exist_ok=True) | ||||||
| 
 | 
 | ||||||
|         # Temporarily override "now" for the environment so templates using |         # Temporarily override "now" for the environment so templates using | ||||||
|         # added/created placeholders behave as if it's a different system date. |         # added/created placeholders behave as if it's a different system date. | ||||||
| @ -3424,6 +3424,10 @@ class TestDateWorkflowLocalization( | |||||||
|                 "django.utils.timezone.now", |                 "django.utils.timezone.now", | ||||||
|                 return_value=self.TEST_DATETIME, |                 return_value=self.TEST_DATETIME, | ||||||
|             ), |             ), | ||||||
|  |             override_settings( | ||||||
|  |                 SCRATCH_DIR=tmp_path / "scratch", | ||||||
|  |                 THUMBNAIL_DIR=tmp_path / "thumbnails", | ||||||
|  |             ), | ||||||
|         ): |         ): | ||||||
|             tasks.consume_file( |             tasks.consume_file( | ||||||
|                 ConsumableDocument( |                 ConsumableDocument( | ||||||
|  | |||||||
| @ -2,7 +2,7 @@ msgid "" | |||||||
| msgstr "" | msgstr "" | ||||||
| "Project-Id-Version: paperless-ngx\n" | "Project-Id-Version: paperless-ngx\n" | ||||||
| "Report-Msgid-Bugs-To: \n" | "Report-Msgid-Bugs-To: \n" | ||||||
| "POT-Creation-Date: 2025-09-11 17:43+0000\n" | "POT-Creation-Date: 2025-09-14 03:21+0000\n" | ||||||
| "PO-Revision-Date: 2022-02-17 04:17\n" | "PO-Revision-Date: 2022-02-17 04:17\n" | ||||||
| "Last-Translator: \n" | "Last-Translator: \n" | ||||||
| "Language-Team: English\n" | "Language-Team: English\n" | ||||||
| @ -21,39 +21,39 @@ msgstr "" | |||||||
| msgid "Documents" | msgid "Documents" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/filters.py:384 | #: documents/filters.py:386 | ||||||
| msgid "Value must be valid JSON." | msgid "Value must be valid JSON." | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/filters.py:403 | #: documents/filters.py:405 | ||||||
| msgid "Invalid custom field query expression" | msgid "Invalid custom field query expression" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/filters.py:413 | #: documents/filters.py:415 | ||||||
| msgid "Invalid expression list. Must be nonempty." | msgid "Invalid expression list. Must be nonempty." | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/filters.py:434 | #: documents/filters.py:436 | ||||||
| msgid "Invalid logical operator {op!r}" | msgid "Invalid logical operator {op!r}" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/filters.py:448 | #: documents/filters.py:450 | ||||||
| msgid "Maximum number of query conditions exceeded." | msgid "Maximum number of query conditions exceeded." | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/filters.py:513 | #: documents/filters.py:515 | ||||||
| msgid "{name!r} is not a valid custom field." | msgid "{name!r} is not a valid custom field." | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/filters.py:550 | #: documents/filters.py:552 | ||||||
| msgid "{data_type} does not support query expr {expr!r}." | msgid "{data_type} does not support query expr {expr!r}." | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/filters.py:658 | #: documents/filters.py:660 | ||||||
| msgid "Maximum nesting depth exceeded." | msgid "Maximum nesting depth exceeded." | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/filters.py:843 | #: documents/filters.py:845 | ||||||
| msgid "Custom field not found" | msgid "Custom field not found" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| @ -61,27 +61,27 @@ msgstr "" | |||||||
| msgid "owner" | msgid "owner" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:53 documents/models.py:946 | #: documents/models.py:53 documents/models.py:950 | ||||||
| msgid "None" | msgid "None" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:54 documents/models.py:947 | #: documents/models.py:54 documents/models.py:951 | ||||||
| msgid "Any word" | msgid "Any word" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:55 documents/models.py:948 | #: documents/models.py:55 documents/models.py:952 | ||||||
| msgid "All words" | msgid "All words" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:56 documents/models.py:949 | #: documents/models.py:56 documents/models.py:953 | ||||||
| msgid "Exact match" | msgid "Exact match" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:57 documents/models.py:950 | #: documents/models.py:57 documents/models.py:954 | ||||||
| msgid "Regular expression" | msgid "Regular expression" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:58 documents/models.py:951 | #: documents/models.py:58 documents/models.py:955 | ||||||
| msgid "Fuzzy word" | msgid "Fuzzy word" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| @ -89,20 +89,20 @@ msgstr "" | |||||||
| msgid "Automatic" | msgid "Automatic" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:62 documents/models.py:423 documents/models.py:1447 | #: documents/models.py:62 documents/models.py:423 documents/models.py:1451 | ||||||
| #: paperless_mail/models.py:23 paperless_mail/models.py:143 | #: paperless_mail/models.py:23 paperless_mail/models.py:143 | ||||||
| msgid "name" | msgid "name" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:64 documents/models.py:1015 | #: documents/models.py:64 documents/models.py:1019 | ||||||
| msgid "match" | msgid "match" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:67 documents/models.py:1018 | #: documents/models.py:67 documents/models.py:1022 | ||||||
| msgid "matching algorithm" | msgid "matching algorithm" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:72 documents/models.py:1023 | #: documents/models.py:72 documents/models.py:1027 | ||||||
| msgid "is insensitive" | msgid "is insensitive" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| @ -207,7 +207,7 @@ msgid "The number of pages of the document." | |||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:217 documents/models.py:655 documents/models.py:693 | #: documents/models.py:217 documents/models.py:655 documents/models.py:693 | ||||||
| #: documents/models.py:764 documents/models.py:822 | #: documents/models.py:765 documents/models.py:824 | ||||||
| msgid "created" | msgid "created" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| @ -256,7 +256,7 @@ msgid "The position of this document in your physical document archive." | |||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:294 documents/models.py:666 documents/models.py:720 | #: documents/models.py:294 documents/models.py:666 documents/models.py:720 | ||||||
| #: documents/models.py:1490 | #: documents/models.py:1494 | ||||||
| msgid "document" | msgid "document" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| @ -280,11 +280,11 @@ msgstr "" | |||||||
| msgid "Title" | msgid "Title" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:410 documents/models.py:967 | #: documents/models.py:410 documents/models.py:971 | ||||||
| msgid "Created" | msgid "Created" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:411 documents/models.py:966 | #: documents/models.py:411 documents/models.py:970 | ||||||
| msgid "Added" | msgid "Added" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| @ -752,430 +752,434 @@ msgstr "" | |||||||
| msgid "Select" | msgid "Select" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:773 | #: documents/models.py:762 | ||||||
|  | msgid "Long Text" | ||||||
|  | msgstr "" | ||||||
|  | 
 | ||||||
|  | #: documents/models.py:774 | ||||||
| msgid "data type" | msgid "data type" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:780 | #: documents/models.py:781 | ||||||
| msgid "extra data" | msgid "extra data" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:784 | #: documents/models.py:785 | ||||||
| msgid "Extra data for the custom field, such as select options" | msgid "Extra data for the custom field, such as select options" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:790 | #: documents/models.py:791 | ||||||
| msgid "custom field" | msgid "custom field" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:791 | #: documents/models.py:792 | ||||||
| msgid "custom fields" | msgid "custom fields" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:888 | #: documents/models.py:892 | ||||||
| msgid "custom field instance" | msgid "custom field instance" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:889 | #: documents/models.py:893 | ||||||
| msgid "custom field instances" | msgid "custom field instances" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:954 | #: documents/models.py:958 | ||||||
| msgid "Consumption Started" | msgid "Consumption Started" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:955 | #: documents/models.py:959 | ||||||
| msgid "Document Added" | msgid "Document Added" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:956 | #: documents/models.py:960 | ||||||
| msgid "Document Updated" | msgid "Document Updated" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:957 | #: documents/models.py:961 | ||||||
| msgid "Scheduled" | msgid "Scheduled" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:960 | #: documents/models.py:964 | ||||||
| msgid "Consume Folder" | msgid "Consume Folder" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:961 | #: documents/models.py:965 | ||||||
| msgid "Api Upload" | msgid "Api Upload" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:962 | #: documents/models.py:966 | ||||||
| msgid "Mail Fetch" | msgid "Mail Fetch" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:963 | #: documents/models.py:967 | ||||||
| msgid "Web UI" | msgid "Web UI" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:968 | #: documents/models.py:972 | ||||||
| msgid "Modified" | msgid "Modified" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:969 | #: documents/models.py:973 | ||||||
| msgid "Custom Field" | msgid "Custom Field" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:972 | #: documents/models.py:976 | ||||||
| msgid "Workflow Trigger Type" | msgid "Workflow Trigger Type" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:984 | #: documents/models.py:988 | ||||||
| msgid "filter path" | msgid "filter path" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:989 | #: documents/models.py:993 | ||||||
| msgid "" | msgid "" | ||||||
| "Only consume documents with a path that matches this if specified. Wildcards " | "Only consume documents with a path that matches this if specified. Wildcards " | ||||||
| "specified as * are allowed. Case insensitive." | "specified as * are allowed. Case insensitive." | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:996 | #: documents/models.py:1000 | ||||||
| msgid "filter filename" | msgid "filter filename" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1001 paperless_mail/models.py:200 | #: documents/models.py:1005 paperless_mail/models.py:200 | ||||||
| msgid "" | msgid "" | ||||||
| "Only consume documents which entirely match this filename if specified. " | "Only consume documents which entirely match this filename if specified. " | ||||||
| "Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." | "Wildcards such as *.pdf or *invoice* are allowed. Case insensitive." | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1012 | #: documents/models.py:1016 | ||||||
| msgid "filter documents from this mail rule" | msgid "filter documents from this mail rule" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1028 | #: documents/models.py:1032 | ||||||
| msgid "has these tag(s)" | msgid "has these tag(s)" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1036 | #: documents/models.py:1040 | ||||||
| msgid "has this document type" | msgid "has this document type" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1044 | #: documents/models.py:1048 | ||||||
| msgid "has this correspondent" | msgid "has this correspondent" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1052 | #: documents/models.py:1056 | ||||||
| msgid "has this storage path" | msgid "has this storage path" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1056 | #: documents/models.py:1060 | ||||||
| msgid "schedule offset days" | msgid "schedule offset days" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1059 | #: documents/models.py:1063 | ||||||
| msgid "The number of days to offset the schedule trigger by." | msgid "The number of days to offset the schedule trigger by." | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1064 | #: documents/models.py:1068 | ||||||
| msgid "schedule is recurring" | msgid "schedule is recurring" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1067 | #: documents/models.py:1071 | ||||||
| msgid "If the schedule should be recurring." | msgid "If the schedule should be recurring." | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1072 | #: documents/models.py:1076 | ||||||
| msgid "schedule recurring delay in days" | msgid "schedule recurring delay in days" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1076 | #: documents/models.py:1080 | ||||||
| msgid "The number of days between recurring schedule triggers." | msgid "The number of days between recurring schedule triggers." | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1081 | #: documents/models.py:1085 | ||||||
| msgid "schedule date field" | msgid "schedule date field" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1086 | #: documents/models.py:1090 | ||||||
| msgid "The field to check for a schedule trigger." | msgid "The field to check for a schedule trigger." | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1095 | #: documents/models.py:1099 | ||||||
| msgid "schedule date custom field" | msgid "schedule date custom field" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1099 | #: documents/models.py:1103 | ||||||
| msgid "workflow trigger" | msgid "workflow trigger" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1100 | #: documents/models.py:1104 | ||||||
| msgid "workflow triggers" | msgid "workflow triggers" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1108 | #: documents/models.py:1112 | ||||||
| msgid "email subject" | msgid "email subject" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1112 | #: documents/models.py:1116 | ||||||
| msgid "" | msgid "" | ||||||
| "The subject of the email, can include some placeholders, see documentation." | "The subject of the email, can include some placeholders, see documentation." | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1118 | #: documents/models.py:1122 | ||||||
| msgid "email body" | msgid "email body" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1121 | #: documents/models.py:1125 | ||||||
| msgid "" | msgid "" | ||||||
| "The body (message) of the email, can include some placeholders, see " | "The body (message) of the email, can include some placeholders, see " | ||||||
| "documentation." | "documentation." | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1127 | #: documents/models.py:1131 | ||||||
| msgid "emails to" | msgid "emails to" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1130 | #: documents/models.py:1134 | ||||||
| msgid "The destination email addresses, comma separated." | msgid "The destination email addresses, comma separated." | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1136 | #: documents/models.py:1140 | ||||||
| msgid "include document in email" | msgid "include document in email" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1147 | #: documents/models.py:1151 | ||||||
| msgid "webhook url" | msgid "webhook url" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1150 | #: documents/models.py:1154 | ||||||
| msgid "The destination URL for the notification." | msgid "The destination URL for the notification." | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1155 | #: documents/models.py:1159 | ||||||
| msgid "use parameters" | msgid "use parameters" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1160 | #: documents/models.py:1164 | ||||||
| msgid "send as JSON" | msgid "send as JSON" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1164 | #: documents/models.py:1168 | ||||||
| msgid "webhook parameters" | msgid "webhook parameters" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1167 | #: documents/models.py:1171 | ||||||
| msgid "The parameters to send with the webhook URL if body not used." | msgid "The parameters to send with the webhook URL if body not used." | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1171 | #: documents/models.py:1175 | ||||||
| msgid "webhook body" | msgid "webhook body" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1174 | #: documents/models.py:1178 | ||||||
| msgid "The body to send with the webhook URL if parameters not used." | msgid "The body to send with the webhook URL if parameters not used." | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1178 | #: documents/models.py:1182 | ||||||
| msgid "webhook headers" | msgid "webhook headers" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1181 | #: documents/models.py:1185 | ||||||
| msgid "The headers to send with the webhook URL." | msgid "The headers to send with the webhook URL." | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1186 | #: documents/models.py:1190 | ||||||
| msgid "include document in webhook" | msgid "include document in webhook" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1197 | #: documents/models.py:1201 | ||||||
| msgid "Assignment" | msgid "Assignment" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1201 | #: documents/models.py:1205 | ||||||
| msgid "Removal" | msgid "Removal" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1205 documents/templates/account/password_reset.html:15 | #: documents/models.py:1209 documents/templates/account/password_reset.html:15 | ||||||
| msgid "Email" | msgid "Email" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1209 | #: documents/models.py:1213 | ||||||
| msgid "Webhook" | msgid "Webhook" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1213 | #: documents/models.py:1217 | ||||||
| msgid "Workflow Action Type" | msgid "Workflow Action Type" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1219 | #: documents/models.py:1223 | ||||||
| msgid "assign title" | msgid "assign title" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1223 | #: documents/models.py:1227 | ||||||
| msgid "Assign a document title, must  be a Jinja2 template, see documentation." | msgid "Assign a document title, must  be a Jinja2 template, see documentation." | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1231 paperless_mail/models.py:274 | #: documents/models.py:1235 paperless_mail/models.py:274 | ||||||
| msgid "assign this tag" | msgid "assign this tag" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1240 paperless_mail/models.py:282 | #: documents/models.py:1244 paperless_mail/models.py:282 | ||||||
| msgid "assign this document type" | msgid "assign this document type" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1249 paperless_mail/models.py:296 | #: documents/models.py:1253 paperless_mail/models.py:296 | ||||||
| msgid "assign this correspondent" | msgid "assign this correspondent" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1258 | #: documents/models.py:1262 | ||||||
| msgid "assign this storage path" | msgid "assign this storage path" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1267 | #: documents/models.py:1271 | ||||||
| msgid "assign this owner" | msgid "assign this owner" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1274 | #: documents/models.py:1278 | ||||||
| msgid "grant view permissions to these users" | msgid "grant view permissions to these users" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1281 | #: documents/models.py:1285 | ||||||
| msgid "grant view permissions to these groups" | msgid "grant view permissions to these groups" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1288 | #: documents/models.py:1292 | ||||||
| msgid "grant change permissions to these users" | msgid "grant change permissions to these users" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1295 | #: documents/models.py:1299 | ||||||
| msgid "grant change permissions to these groups" | msgid "grant change permissions to these groups" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1302 | #: documents/models.py:1306 | ||||||
| msgid "assign these custom fields" | msgid "assign these custom fields" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1306 | #: documents/models.py:1310 | ||||||
| msgid "custom field values" | msgid "custom field values" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1310 | #: documents/models.py:1314 | ||||||
| msgid "Optional values to assign to the custom fields." | msgid "Optional values to assign to the custom fields." | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1319 | #: documents/models.py:1323 | ||||||
| msgid "remove these tag(s)" | msgid "remove these tag(s)" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1324 | #: documents/models.py:1328 | ||||||
| msgid "remove all tags" | msgid "remove all tags" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1331 | #: documents/models.py:1335 | ||||||
| msgid "remove these document type(s)" | msgid "remove these document type(s)" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1336 | #: documents/models.py:1340 | ||||||
| msgid "remove all document types" | msgid "remove all document types" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1343 | #: documents/models.py:1347 | ||||||
| msgid "remove these correspondent(s)" | msgid "remove these correspondent(s)" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1348 | #: documents/models.py:1352 | ||||||
| msgid "remove all correspondents" | msgid "remove all correspondents" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1355 | #: documents/models.py:1359 | ||||||
| msgid "remove these storage path(s)" | msgid "remove these storage path(s)" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1360 | #: documents/models.py:1364 | ||||||
| msgid "remove all storage paths" | msgid "remove all storage paths" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1367 | #: documents/models.py:1371 | ||||||
| msgid "remove these owner(s)" | msgid "remove these owner(s)" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1372 | #: documents/models.py:1376 | ||||||
| msgid "remove all owners" | msgid "remove all owners" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1379 | #: documents/models.py:1383 | ||||||
| msgid "remove view permissions for these users" | msgid "remove view permissions for these users" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1386 | #: documents/models.py:1390 | ||||||
| msgid "remove view permissions for these groups" | msgid "remove view permissions for these groups" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1393 | #: documents/models.py:1397 | ||||||
| msgid "remove change permissions for these users" | msgid "remove change permissions for these users" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1400 | #: documents/models.py:1404 | ||||||
| msgid "remove change permissions for these groups" | msgid "remove change permissions for these groups" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1405 | #: documents/models.py:1409 | ||||||
| msgid "remove all permissions" | msgid "remove all permissions" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1412 | #: documents/models.py:1416 | ||||||
| msgid "remove these custom fields" | msgid "remove these custom fields" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1417 | #: documents/models.py:1421 | ||||||
| msgid "remove all custom fields" | msgid "remove all custom fields" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1426 | #: documents/models.py:1430 | ||||||
| msgid "email" | msgid "email" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1435 | #: documents/models.py:1439 | ||||||
| msgid "webhook" | msgid "webhook" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1439 | #: documents/models.py:1443 | ||||||
| msgid "workflow action" | msgid "workflow action" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1440 | #: documents/models.py:1444 | ||||||
| msgid "workflow actions" | msgid "workflow actions" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1449 paperless_mail/models.py:145 | #: documents/models.py:1453 paperless_mail/models.py:145 | ||||||
| msgid "order" | msgid "order" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1455 | #: documents/models.py:1459 | ||||||
| msgid "triggers" | msgid "triggers" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1462 | #: documents/models.py:1466 | ||||||
| msgid "actions" | msgid "actions" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1465 paperless_mail/models.py:154 | #: documents/models.py:1469 paperless_mail/models.py:154 | ||||||
| msgid "enabled" | msgid "enabled" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1476 | #: documents/models.py:1480 | ||||||
| msgid "workflow" | msgid "workflow" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1480 | #: documents/models.py:1484 | ||||||
| msgid "workflow trigger type" | msgid "workflow trigger type" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1494 | #: documents/models.py:1498 | ||||||
| msgid "date run" | msgid "date run" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1500 | #: documents/models.py:1504 | ||||||
| msgid "workflow run" | msgid "workflow run" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
| #: documents/models.py:1501 | #: documents/models.py:1505 | ||||||
| msgid "workflow runs" | msgid "workflow runs" | ||||||
| msgstr "" | msgstr "" | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user