--- /dev/null
+<?php
+ob_clean();
+
+if (empty($User['admin']))
+ abort("geen beheersrechten", '401 unauthorised');
+
+if (!$_POST)
+ abort("niets te doen", '405 post error');
+if (!$Args)
+ abort("pagina niet opgegeven", '409 input error');
+
+$pagename = ltrim($Args, '/').'.html';
+@list ($category, $year, $article) = explode('/', $pagename);
+if (empty($article) or !file_exists($pagename))
+ abort("artikel onbekend: $pagename", '404 page error');
+
+if (!isset($_REQUEST['value']))
+ abort("ongeldige tagwaarde {$_REQUEST['value']}", '403 missing value');
+
+if (!isset($_REQUEST['tag']))
+ abort("geen tag ontvangen", '403 input error');
+
+$target = "$category/.tags/{$_REQUEST['tag']}";
+if (!file_exists($target))
+ abort("tag onbekend: $target", '404 tag error');
+
+$target .= "/$year-$article";
+if (is_link($target) or file_exists($target)) {
+ if (!unlink($target))
+ abort("kon bestaande link niet weghalen op $target", '500 unlink error');
+}
+
+$pagelink = "../../../$pagename";
+if ($_REQUEST['value'] and !symlink($pagelink, $target))
+ abort("fout bij link aanmaken op $target", '500 link error');
+
+abort("Tag {$_REQUEST['tag']} aangepast");
+
};
overview.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}`);
+ });
+ });
+ });
+ });
});
$tagtarget = is_writable($tagpath);
$taglist[] = sprintf(
'<input type="checkbox" name="%s" value="%s" id="%s"%s%s />' .
- '<label for="%2$s"> %s</label>',
+ '<label for="%3$s"> %s</label>',
"tags[$tagname]", $tagname, "tag-$tagname",
$tagvalue ? ' checked' : '',
- ' onclick="return false"',
+ ' disabled',
ucfirst($tagname)
);
}
- printf("<p><strong>Tags:</strong> %s</p>\n",
+ printf('<p class="tags"><strong>Tags:</strong> %s</p>'."\n",
implode("\n\t", $taglist)
);
}