nieuws: append create link to navigation block
[minimedit.git] / nieuws / edit.js
index 13ca8da917203f42f2bcdb19a8411e44b746e191..2bb0c2004e50d12afe7063e7d9634eb137ff1fa1 100644 (file)
@@ -1,18 +1,48 @@
-var editlink = document.createElement('a');
-editlink.className = 'nav';
-editlink.appendChild(document.createTextNode('Nieuw artikel'));
-editlink.onclick = function () {
-       var today = new Date().toJSON().slice(0, 10);
-       var input = prompt('Artikelnaam (plaatsingsdatum en paginatitel)', today + ' ');
-       if (!input) return false;
-       if (!/^\d{4}-\d\d-\d\d[- :]+\S/.test(input)) {
-               alert('Artikelnaam moet beginnen met een datum in de vorm jaar-mm-dd.');
-               return false;
+document.addEventListener('DOMContentLoaded', () => {
+       var nav = document.querySelector('#news .nav');
+       if (nav) {
+               var editlink = document.createElement('a');
+               editlink.appendChild(document.createTextNode('Nieuw artikel'));
+               editlink.onclick = function () {
+                       var today = new Date().toJSON().slice(0, 10).split('-');
+                       var input = prompt('Paginalink (beknopte titel)', '');
+                       if (!input) return false;
+                       var url = today[0] + '/' + today[1] + '-' + today[2] + '-' +
+                               input.toLowerCase().replace(/[^a-z0-9]+/g, '-').trim();
+                       var title = encodeURIComponent(input.trim());
+                       window.location = window.location.pathname+'/'+url+'?edit='+title+'#edit';
+                       return false;
+               };
+               nav.appendChild(document.createTextNode(' '));
+               nav.appendChild(editlink);
        }
-       var url = input.toLowerCase().replace(/[^a-z0-9]+/g, ' ').trim()
-                                  .replace(/ /g, '-').replace('-', '/');
-       var title = encodeURIComponent(input.substr(11).trim());
-       window.location = '/nieuws/'+url+'?edit='+title+'#edit';
-       return false;
-};
-document.getElementById('news').appendChild(editlink);
+
+       var editlink = document.querySelector('a[href="#edit"]');
+       if (!editlink) return;
+       editlink.addEventListener('click', () => {
+               document.querySelectorAll('.tags input').forEach(tagoption => {
+                       tagoption.removeAttribute('disabled');
+                       tagoption.addEventListener('change', () => {
+                               let editpost = '/edit/nieuws/tag' + window.location.pathname;
+                               let params = new URLSearchParams;
+                               params.append('tag', tagoption.value);
+                               params.append('value', tagoption.checked ? 1 : 0);
+                               fetch(editpost, {
+                                       method: 'POST',
+                                       body: params,
+                                       credentials: 'same-origin',
+                               })
+                               .then(res => {
+                                       if (res.status != 200) {
+                                               return res.text().then(body => {
+                                                       throw `foutcode ${res.status}: ${body}`;
+                                               });
+                                       }
+                               })
+                               .catch(error => {
+                                       alert(`Tag aanpassen mislukt: ${error}`);
+                               });
+                       });
+               });
+       });
+});