Checkboxen zum Anhängen von Dokumenten; Demo-Dokumentenverwaltung (ohne Speicherung)

parent 8529420f
......@@ -173,7 +173,7 @@
# ----------------------------------------
# Konfiguration der Dokumentenverwaltung
# ----------------------------------------
$docmgmt_method = 'local'; # Aktuell nur local unterstützt
$docmgmt_method = 'local'; # Aktuell demo und local unterstützt
$docmgmt_maxAttachSize = 12 * 1024 * 1024; # Anhangsgröße in Bytes, ab wann eine Warnung angezeigt wird (Default: 12MB)
$docmgmt_class = $docmgmt_method . 'DocMGMT';
......
<?php
/**
* Implementierung einer Demo-Dateiverwaltung (ohne tatsächliche Speicherung der Dateien).
*
* @author Dustin Gawron <dustin.gawron@uni-muenster.de>
* @copyright (c) 2020 Westfälische Wilhelms-Universität Münster
* @license AGPL-3.0-or-later <https://www.gnu.org/licenses/agpl.html>
*/
/**
* Klasse zur Implementierung einer Demo-Dateiverwaltung (ohne tatsächliche Speicherung der Dateien).
* Erweitert die Grundklasse {@link DocMGMT}.
*/
class demoDocMGMT extends DocMGMT {
/**
* Holt den Inhalt eines Dokuments.
*
* @abstract
* @param int $processID ID der Dokumentation
* @param string $fileRef Dateireferenz
* @return string[] Dateiname und Dateiinhalt (base64 kodiert) (['fileName' => 'test.pdf', 'fileContent' => '...'])
* @throws Exception
*/
public function getDocument($processID, $fileRef) {
$returnVal = [
'fileName' => $fileRef,
'fileContent' => ''
];
return $returnVal;
}
/**
* Fügt ein neues Dokument hinzu.
*
* @abstract
* @param int $processID ID der Dokumentation
* @param string $fileName Dateiname
* @param string $fileContent Dateiinhalt (base64 kodiert)
* @return string Referenz zum Dokument
* @throws Exception
*/
public function addDocument($processID, $fileName, $fileContent) {
return $fileName;
}
/**
* Aktualisiert ein Dokument.
*
* @abstract
* @param int $processID ID der Dokumentation
* @param string $fileRef Dateireferenz
* @param string $fileName Dateiname
* @param string $fileContent Dateiinhalt (base64 kodiert)
* @return bool Neue Referenz zum Dokument
* @throws Exception
*/
public function updateDocument($processID, $fileRef, $fileName, $fileContent){
return $fileName;
}
/**
* Löscht ein Dokument.
*
* @abstract
* @param int $processID ID der Dokumentation
* @param string $fileRef Dateireferenz
* @return bool TRUE bei Erfolg, sonst FALSE
* @throws Exception
*/
public function deleteDocument($processID, $fileRef) {
return TRUE;
}
}
......@@ -109,4 +109,11 @@
'active' => '(|(memberof=CN=u0shk,OU=Projekt-Gruppen,DC=wwu,DC=de)(memberof=CN=u0mitarb,OU=Projekt-Gruppen,DC=wwu,DC=de)(memberof=CN=e0mitwwu,OU=Projekt-Gruppen,DC=wwu,DC=de))(!(memberof=CN=y0msexma,OU=Projekt-Gruppen,DC=wwu,DC=de))',
'employee' => '(|(memberof=CN=u0mitarb,OU=Projekt-Gruppen,DC=wwu,DC=de)(memberof=CN=e0mitwwu,OU=Projekt-Gruppen,DC=wwu,DC=de))'
];
# ----------------------------------------
# Konfiguration der Dokumentenverwaltung
# ----------------------------------------
$docmgmt_method = 'local'; # Aktuell demo und local unterstützt
$docmgmt_maxAttachSize = 12 * 1024 * 1024; # Anhangsgröße in Bytes, ab wann eine Warnung angezeigt wird (Default: 12MB)
$docmgmt_class = $docmgmt_method . 'DocMGMT';
?>
......@@ -387,7 +387,7 @@ EOH;
if($c !== $pageCount) $mpdf->WriteHTML('<pagebreak />');
}
} catch(\Exception $e) {
$mpdf->WriteHTML('<h3>Die angehängte PDF konnte nicht gelesen werden! Möglicherweise wird das Format nicht unterstützt.</h3>');
$mpdf->WriteHTML('<h6>Die angehängte PDF konnte nicht gelesen werden! Möglicherweise wird das Format nicht unterstützt.</h6>');
error_log("[SecDoc] verwaltung.php -> PDF konnte nicht gelesen werden (Dokument #{$doc['DocID']}) (Fehler: " . $e->getMessage() . ")");
unlink($tmpFile);
continue;
......@@ -1875,6 +1875,8 @@ EOH;
$newFileSize = $docDetails['FileSize'];
}
if(!array_key_exists('description', $data)) $data['description'] = $docDetails['Description'];
if(!$dbcon->updateDocument($docDetails['DocID'], !empty($data['description']) ? $data['description'] : '', $newFileRef, $newFileSize, (array_key_exists('attach', $data) && $data['attach'] ? 1 : 0))) returnError('Konnte Document nicht in Datenbank aktualisieren!');
$output['success'] = TRUE;
......
......@@ -213,10 +213,12 @@ function formatDate(dateToFormat) {
let currDate = new Date();
let formattedDate = '';
if(dateToFormat.getFullYear() === currDate.getFullYear() && dateToFormat.getMonth() === currDate.getMonth()) {
if(dateToFormat.getDate() === currDate.getDate()) formattedDate = 'Heute ';
if(dateToFormat.getDate() === (currDate.getDate() - 1)) formattedDate = 'Gestern ';
if(dateToFormat.getFullYear() === currDate.getFullYear() && dateToFormat.getMonth() === currDate.getMonth() && dateToFormat.getDate() === currDate.getDate()) {
formattedDate = 'Heute ';
formattedDate += ('0' + dateToFormat.getHours()).slice(-2) + ':' + ('0' + dateToFormat.getMinutes()).slice(-2) + ':' + ('0' + dateToFormat.getSeconds()).slice(-2);
}
else if(dateToFormat.getFullYear() === currDate.getFullYear() && dateToFormat.getMonth() === currDate.getMonth() && dateToFormat.getDate() === (currDate.getDate() - 1)) {
formattedDate = 'Gestern ';
formattedDate += ('0' + dateToFormat.getHours()).slice(-2) + ':' + ('0' + dateToFormat.getMinutes()).slice(-2) + ':' + ('0' + dateToFormat.getSeconds()).slice(-2);
}
else {
......
......@@ -1218,7 +1218,7 @@ function genHTMLforPDF(draft = false) {
toSend.find('input[type=radio]').remove();
/* Weitere Design-Anpassunge */
toSend.find('.printHide').addClass('hidden');
toSend.find('.printHide').remove();
toSend.find('.printOnly').removeClass('hidden');
toSend.find('h5').addClass('text-center');
toSend.find('table, td, th').attr('style', 'border: 1px solid darkgray; padding: 5px;');
......@@ -2232,8 +2232,26 @@ function loadDocuments() {
data['data'].forEach((val, idx) => {
let lastUpdate = formatDate(new Date(val['Date'].replace(' ', 'T')));
let fileSize = formatBytes(parseInt(val['FileSize']));
let attach = val['Attach'] > 0 ? 'Ja' : 'Nein';
$('#attached_documents').find('tbody').append('<tr><td>' + htmlEncode(val['FileRef']) + '</td><td>' + fileSize + '</td><td>' + htmlEncode(val['Description']) + '</td><td>' + attach + '</td><td>' + lastUpdate + '</td><td class="text-center"><div class="btn-group"><button type="button" class="attached_documents_show btn" data-docid="' + val['DocID'] + '">Anzeigen</button><button type="button" class="attached_documents_edit btn btn-warning" data-docid="' + val['DocID'] + '" data-docdesc="' + val['Description'] + '" data-fileref="' + val['FileRef'] + '" data-attach="' + val['Attach'] + '"'+ (canEdit ? '' : 'disabled') + '><i class="fa fa-pencil-square-o"></i> Bearbeiten</button><button type="button" class="attached_documents_del btn btn-danger" data-docid="' + val['DocID'] + '" '+ (canEdit ? '' : 'disabled') + '><i class="fa fa-minus"></i> Löschen</button></div></td></tr>');
$('#attached_documents').find('tbody').append('<tr><td>' + htmlEncode(val['FileRef']) + '</td><td>' + fileSize + '</td><td>' + htmlEncode(val['Description']) + '</td><td><input class="form-check-input attached_documents_toggle" type="checkbox" data-docid="' + val['DocID'] + '" value="1" ' + (val['Attach'] > 0 ? 'checked' : '') + ' ' + (canEdit ? '' : 'disabled') + '></td><td>' + lastUpdate + '</td><td class="text-center"><div class="btn-group"><button type="button" class="attached_documents_show btn" data-docid="' + val['DocID'] + '">Anzeigen</button><button type="button" class="attached_documents_edit btn btn-warning" data-docid="' + val['DocID'] + '" data-docdesc="' + val['Description'] + '" data-fileref="' + val['FileRef'] + '" ' + (canEdit ? '' : 'disabled') + '><i class="fa fa-pencil-square-o"></i> Bearbeiten</button><button type="button" class="attached_documents_del btn btn-danger" data-docid="' + val['DocID'] + '" '+ (canEdit ? '' : 'disabled') + '><i class="fa fa-minus"></i> Löschen</button></div></td></tr>');
});
$('#attached_documents').find('.attached_documents_toggle').change((evt) => {
setOverlay();
let attach = evt.target.checked;
$.post(backendPath, JSON.stringify({'action': 'updateDocument', 'debug': debug, 'data': {'docid': parseInt($(evt.target).data('docid')), 'attach': attach}})).done((data) => {
if(!data['success']) {
showError('Bearbeiten des angehängten Dokuments', data['error']);
$(evt.target).prop('checked', (attach ? false : true));
return;
}
}).fail((jqXHR, error, errorThrown) => {
showError('Bearbeiten des angehängten Dokuments', false, {'jqXHR': jqXHR, 'error': error, 'errorThrown': errorThrown});
$(evt.target).prop('checked', (attach ? false : true));
}).always(() => {
setOverlay(false);
});
});
$('#attached_documents').find('.attached_documents_show').click((evt) => {
......@@ -2275,7 +2293,7 @@ function loadDocuments() {
});
$('#attached_documents').find('.attached_documents_edit').click((evt) => {
showDocumentAddDialog(parseInt($(evt.target).data('docid')), $(evt.target).data('fileref'), $(evt.target).data('docdesc'), ($(evt.target).data('attach') > 0 ? true : false));
showDocumentAddDialog(parseInt($(evt.target).data('docid')), $(evt.target).data('fileref'), $(evt.target).data('docdesc'), $(evt.target).closest('tr').find('input.attached_documents_toggle').first()[0].checked);
});
$('#attached_documents').find('.attached_documents_del').click((evt) => {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment