diff --git a/app.php b/app.php index 31be522..79a6fd7 100644 --- a/app.php +++ b/app.php @@ -355,8 +355,6 @@ $f3->route('POST /organize', $f3->route('GET /metadata', function($f3) { - $f3->set('maxSize', min(array(convertPHPSizeToBytes(ini_get('post_max_size')), convertPHPSizeToBytes(ini_get('upload_max_filesize'))))); - echo View::instance()->render('metadata.html.php'); } ); diff --git a/config/config.ini.example b/config/config.ini.example index ee6842a..7611cbd 100644 --- a/config/config.ini.example +++ b/config/config.ini.example @@ -9,3 +9,6 @@ PDF_STORAGE_PATH=/path/to/folder ; Manage demo link pdf : true (by default, show), false (hide), or custom link ;PDF_DEMO_LINK=true + +; Metadata default fields +;METADATA_DEFAULT_FIELDS[metadata_key].type = "text" diff --git a/public/js/metadata.js b/public/js/metadata.js index b033351..7f2597b 100644 --- a/public/js/metadata.js +++ b/public/js/metadata.js @@ -35,18 +35,23 @@ var loadPDF = async function(pdfBlob, filename, pdfIndex) { await loadingTask.promise.then(function(pdf) { pdf.getMetadata().then(function(metadata) { console.log(metadata); + for(fieldKey in defaultFields) { + addMetadata(fieldKey, null, defaultFields[fieldKey]['type'], false); + } + for(metaKey in metadata.info) { if(metaKey == "Custom" || metaKey == "PDFFormatVersion" || metaKey.match(/^Is/) || metaKey == "Trapped") { continue; } - addMetadata(metaKey, metadata.info[metaKey]); + addMetadata(metaKey, metadata.info[metaKey], "text", false); } + for(metaKey in metadata.info.Custom) { if(metaKey == "sha256") { continue; } - addMetadata(metaKey, metadata.info.Custom[metaKey]); + addMetadata(metaKey, metadata.info.Custom[metaKey], "text", false); } for(let pageNumber = 1; pageNumber <= pdf.numPages; pageNumber++ ) { @@ -56,6 +61,11 @@ var loadPDF = async function(pdfBlob, filename, pdfIndex) { pageRender(pageIndex); }); } + if(document.querySelector('.input-metadata input')) { + document.querySelector('.input-metadata input').focus(); + } else { + document.getElementById('input_metadata_key').focus(); + } }); }, function (reason) { console.error(reason); @@ -91,12 +101,26 @@ var pageRender = async function(pageIndex) { }); } -var addMetadata = function(key, value) { +var addMetadata = function(key, value, type, focus) { + let input = document.querySelector('.input-metadata input[name="'+key+'"]'); + + if(input && input.value === null) { + input.value = value; + } + if(input && focus) { + input.focus(); + } + if(input) { + return; + } + let div = document.createElement('div'); div.classList.add('form-floating', 'mt-3', 'input-metadata'); - let input = document.createElement('input'); + input = document.createElement('input'); input.value = value; + input.type = type; + input.name = key; input.classList.add('form-control'); let label = document.createElement('label'); @@ -111,7 +135,9 @@ var addMetadata = function(key, value) { div.appendChild(deleteButton); document.getElementById('form-metadata-container').appendChild(div); - input.focus(); + if(focus) { + input.focus(); + } } const deleteMetadata = function(el) { @@ -158,7 +184,7 @@ const save = async function () { var createEventsListener = function() { document.getElementById('form_metadata_add').addEventListener('submit', function(e) { let formData = new FormData(this); - addMetadata(formData.get('metadata_key'), ""); + addMetadata(formData.get('metadata_key'), "", "text", true); this.classList.add('invisible'); setTimeout(function() { document.getElementById('form_metadata_add').classList.remove('invisible'); }, 400); this.reset(); @@ -221,12 +247,6 @@ var pageUpload = async function() { document.getElementById('input_pdf_upload').focus(); const cache = await caches.open('pdf'); document.getElementById('input_pdf_upload').addEventListener('change', async function(event) { - if(document.getElementById('input_pdf_upload').files[0].size > maxSize) { - - alert("Le PDF ne doit pas dépasser " + Math.round(maxSize/1024/1024) + " Mo"); - document.getElementById('input_pdf_upload').value = ""; - return; - } let filename = document.getElementById('input_pdf_upload').files[0].name; let response = new Response(document.getElementById('input_pdf_upload').files[0], { "status" : 200, "statusText" : "OK" }); let urlPdf = '/pdf/'+filename; diff --git a/templates/metadata.html.php b/templates/metadata.html.php index 1ceac5c..e65127e 100644 --- a/templates/metadata.html.php +++ b/templates/metadata.html.php @@ -10,7 +10,7 @@ - Métadonnées d'un PDF + Édition des métadonnées d'un PDF