page: editable meta tags without xml closure
[minimedit.git] / page.php
index ed0ec1b9af93772e0b9cbbbc15e1721846ad9ffe..c5ade115caf5b67a12564423f5a825810d7d5af4 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
        );
@@ -177,7 +175,7 @@ if (isset($Article->raw)) {
                # 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;
                }