page: record author metadata on creation
[minimedit.git] / page.php
index ed0ec1b9af93772e0b9cbbbc15e1721846ad9ffe..14b58db8060484ba3fa2f3e022b554da7d32a153 100644 (file)
--- a/page.php
+++ b/page.php
@@ -58,19 +58,17 @@ function getoutput($blocks = [])
        $doc = preg_replace('{\s*<([a-z]+) class="'.$hideclass.'">.*?</\1>}s', '', $doc);
 
        return preg_replace_callback(
-               '{ (?<! <!--BLOCK: ) \[\[ ([^] ]+) ([^]]*) \]\] }x',
+               '{ \[\[ ([^] ]+) ([^]]*) \]\] }x',
                function ($sub) use ($blocks) {
                        list ($placeholder, $name, $params) = $sub;
-                       if (isset($blocks[$name])) {
-                               $html = $blocks[$name];
+                       $html = $blocks[$name] ??
+                               placeholder_include($name, explode(' ', $params));
+                       if (empty($html) or $html[0] != '<') {
+                               $html = "<span>$html</span>";
                        }
-                       else {
-                               $html = placeholder_include($name, explode(' ', $params));
-                       }
-                       return sprintf('<!--BLOCK:%s-->%s<!--/-->',
-                               is_numeric($name) ? '' : $placeholder, # edit replacement
-                               preg_replace('{<!--[^-]*-->}', '', $html) # contents
-                       );
+                       $attr = sprintf(' data-dyn="%s"', is_numeric($name) ? '' : $name.$params);
+                       # contents with identifier in first tag
+                       return preg_replace( '/(?=>)/', $attr, $html, 1);
                },
                $doc
        );
@@ -172,21 +170,22 @@ $Place = [
        'url'   => htmlspecialchars($_SERVER['REQUEST_URI']),
 ];
 
+if (!isset($Article->raw) and $User->admin("edit {$Article->link}")) {
+       # open template as initial contents
+       $Article->raw(file_exists("$Page/template.inc.html") ? "$Page/template.inc.html" : 'template.inc.html');
+       $Article->meta['article:author'] = '/' . $User->dir;
+}
+
 if (isset($Article->raw)) {
        if ($User->admin("edit $Page$Args")) {
                # restore meta tags in static contents for editing
                foreach (array_reverse($Article->meta) as $metaprop => $val) {
                        $Article->raw = sprintf(
-                               '<meta property="%s" content="%s" />'."\n",
+                               '<meta property="%s" content="%s">'."\n",
                                $metaprop, $val
                        ) . $Article->raw;
                }
        }
-}
-elseif ($User->admin("edit {$Article->link}")) {
-       $Article->raw(file_exists("$Page/template.inc.html") ? "$Page/template.inc.html" : 'template.inc.html');
-}
-if (isset($Article->raw)) {
        $Article->raw = '<div class="static">'."\n\n".$Article->raw."</div>\n\n";
 }