Skip to content
Snippets Groups Projects

Existing signature warning

Merged Reiter, Christoph requested to merge existing-sig-warning into master
@@ -17,6 +17,7 @@ import nextcloudWebDavURL from 'consts:nextcloudWebDavURL';
@@ -17,6 +17,7 @@ import nextcloudWebDavURL from 'consts:nextcloudWebDavURL';
import nextcloudName from 'consts:nextcloudName';
import nextcloudName from 'consts:nextcloudName';
import {FileSink} from "@dbp-toolkit/file-handling";
import {FileSink} from "@dbp-toolkit/file-handling";
import {name as pkgName} from './../package.json';
import {name as pkgName} from './../package.json';
 
import {getPDFSignatureCount} from './utils.js';
const i18n = createI18nInstance();
const i18n = createI18nInstance();
@@ -42,6 +43,7 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitElem
@@ -42,6 +43,7 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitElem
this.withSigBlock = false;
this.withSigBlock = false;
this.queuedFilesSignaturePlacements = [];
this.queuedFilesSignaturePlacements = [];
this.queuedFilesPlacementModes = [];
this.queuedFilesPlacementModes = [];
 
this.queuedFilesMissingPlacement = [];
this.currentPreviewQueueKey = '';
this.currentPreviewQueueKey = '';
}
}
@@ -101,12 +103,28 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitElem
@@ -101,12 +103,28 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitElem
if (!this.signingProcessEnabled || this.uploadInProgress) {
if (!this.signingProcessEnabled || this.uploadInProgress) {
return;
return;
}
}
this.signaturePlacementInProgress = false;
this.signaturePlacementInProgress = false;
const key = Object.keys(this.queuedFiles)[0];
// Validate that all PDFs with a signature have manual placement
 
this.queuedFilesMissingPlacement = [];
 
for (const [key, file] of Object.entries(this.queuedFiles)) {
 
let isManual = this.queuedFilesPlacementModes[key] === 'manual';
 
if (!isManual) {
 
let sigCount = await getPDFSignatureCount(file);
 
if (sigCount > 0)
 
this.queuedFilesMissingPlacement[key] = true;
 
}
 
}
 
 
// Some have a signature but are not "manual", stop everything
 
if (Object.keys(this.queuedFilesMissingPlacement).length) {
 
this.signingProcessEnabled = false;
 
this.signingProcessActive = false;
 
return;
 
}
// take the file off the queue
// take the file off the queue
 
const key = Object.keys(this.queuedFiles)[0];
let file = this.takeFileFromQueue(key);
let file = this.takeFileFromQueue(key);
this.currentFile = file;
this.currentFile = file;
@@ -136,7 +154,13 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitElem
@@ -136,7 +154,13 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitElem
}
}
storePDFData(event) {
storePDFData(event) {
this.queuedFilesSignaturePlacements[this.currentPreviewQueueKey] = event.detail;
let placement = event.detail;
 
let placementMode = 'manual';
 
 
let key = this.currentPreviewQueueKey;
 
this.queuedFilesSignaturePlacements[key] = placement;
 
this.queuedFilesPlacementModes[key] = placementMode;
 
delete this.queuedFilesMissingPlacement[key];
this.signaturePlacementInProgress = false;
this.signaturePlacementInProgress = false;
}
}
@@ -338,6 +362,7 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitElem
@@ -338,6 +362,7 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitElem
clearQueuedFiles() {
clearQueuedFiles() {
this.queuedFilesSignaturePlacements = [];
this.queuedFilesSignaturePlacements = [];
this.queuedFilesPlacementModes = [];
this.queuedFilesPlacementModes = [];
 
this.queuedFilesMissingPlacement = [];
super.clearQueuedFiles();
super.clearQueuedFiles();
}
}
@@ -492,9 +517,14 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitElem
@@ -492,9 +517,14 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitElem
.file-block div.bottom-line {
.file-block div.bottom-line {
display: grid;
display: grid;
align-items: center;
align-items: center;
grid-template-columns: auto 190px;
grid-template-columns: auto auto;
grid-gap: 10px;
grid-gap: 6px;
margin-top: 10px;
margin-top: 6px;
 
}
 
 
.file-block .error-line {
 
margin-top: 6px;
 
color: var(--dbp-override-danger-bg-color);
}
}
.file-block.error div.bottom-line {
.file-block.error div.bottom-line {
@@ -558,6 +588,10 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitElem
@@ -558,6 +588,10 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitElem
border-top: 1px solid black;
border-top: 1px solid black;
}
}
 
.placement-missing {
 
border: solid 2px var(--dbp-override-danger-bg-color);
 
}
 
/* Handling for small displays (like mobile devices) */
/* Handling for small displays (like mobile devices) */
@media (max-width: 680px) {
@media (max-width: 680px) {
/* Modal preview, upload and external auth */
/* Modal preview, upload and external auth */
@@ -601,10 +635,12 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitElem
@@ -601,10 +635,12 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitElem
*/
*/
getQueuedFilesHtml() {
getQueuedFilesHtml() {
const ids = Object.keys(this.queuedFiles);
const ids = Object.keys(this.queuedFiles);
 
let results = [];
let results = [];
ids.forEach((id) => {
ids.forEach((id) => {
const file = this.queuedFiles[id];
const file = this.queuedFiles[id];
 
const placementMissing = this.queuedFilesMissingPlacement[id];
results.push(html`
results.push(html`
<div class="file-block">
<div class="file-block">
@@ -625,12 +661,17 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitElem
@@ -625,12 +661,17 @@ class OfficialSignaturePdfUpload extends ScopedElementsMixin(DBPSignatureLitElem
<dbp-textswitch name1="auto"
<dbp-textswitch name1="auto"
name2="manual"
name2="manual"
name="${this.queuedFilesPlacementModes[id] || "auto"}"
name="${this.queuedFilesPlacementModes[id] || "auto"}"
class="switch"
class="${classMap({'placement-missing': placementMissing, 'switch': true})}"
value1="${i18n.t('official-pdf-upload.positioning-automatic')}"
value1="${i18n.t('official-pdf-upload.positioning-automatic')}"
value2="${i18n.t('official-pdf-upload.positioning-manual')}"
value2="${i18n.t('official-pdf-upload.positioning-manual')}"
?disabled="${this.signingProcessEnabled}"
?disabled="${this.signingProcessEnabled}"
@change=${ (e) => this.queuePlacementSwitch(id, e.target.name) }></dbp-textswitch>
@change=${ (e) => this.queuePlacementSwitch(id, e.target.name) }></dbp-textswitch>
</div>
</div>
 
<div class="error-line">
 
${ this.queuedFilesMissingPlacement[id] ? html`
 
Bestehende Signatur vorhanden, manuelle Positionierung nötig.
 
` : '' }
 
</div>
</div>
</div>
`);
`);
});
});
Loading