Skip to content

Commit 74fff77

Browse files
committed
Fix render element with merge
1 parent aff6520 commit 74fff77

File tree

1 file changed

+18
-26
lines changed

1 file changed

+18
-26
lines changed

src/renderers/render_content.php

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -13,37 +13,28 @@ public static function render($el)
1313
$id = $el->getAttribute("id");
1414
if (!$id) $id = 'content';
1515

16-
if (xml_serve::$pagedef) {
17-
$src = xml_serve::$pagedef->get("/pagedef/content[@id='$id']/@src");
18-
$type = xml_serve::$pagedef->get("/pagedef/content[@id='$id']/@type");
19-
$name = xml_serve::$pagedef->get("/pagedef/content[@id='$id']/@name");
20-
}
21-
22-
if ($src == '' && xml_serve::$template) {
23-
$src = xml_serve::$template->get("/pagetemplate/content[@id='$id']/@src");
24-
$type = xml_serve::$template->get("/pagetemplate/content[@id='$id']/@type");
25-
$name = xml_serve::$template->get("/pagetemplate/content[@id='$id']/@name");
26-
}
16+
$merged = xml_file::toDocEl(xml_file::toXml($el));
17+
if (xml_serve::$settings != null && ($k = xml_serve::$settings->nde("/site/content[@id='$id']")))
18+
foreach ($k->attributes as $attr)
19+
$merged->setAttribute($attr->localName, $attr->nodeValue);
20+
if (xml_serve::$template != null && ($k = xml_serve::$template->nde("/pagetemplate/content[@id='$id']")))
21+
foreach ($k->attributes as $attr)
22+
$merged->setAttribute($attr->localName, $attr->nodeValue);
23+
if (xml_serve::$template != null && ($k = xml_serve::$pagedef->nde("/pagedef/content[@id='$id']")))
24+
foreach ($k->attributes as $attr)
25+
$merged->setAttribute($attr->localName, $attr->nodeValue);
2726

28-
if ($src == '') {
29-
$src = xml_serve::$settings->get("/site/content[@id='$id']/@src");
30-
$type = xml_serve::$settings->get("/site/content[@id='$id']/@type");
31-
$name = xml_serve::$settings->get("/site/content[@id='$id']/@name");
32-
}
33-
34-
if ($src == '') {
35-
$src = $el->getAttribute("src");
36-
$type = $el->getAttribute("type");
37-
$name = $el->getAttribute("name");
38-
}
27+
$src = $merged->getAttribute("src");
28+
$type = $merged->getAttribute("type");
29+
$name = $merged->getAttribute("name");
3930

4031
if ($src == "") $src = "$id.html";
4132
if ($type == "") $type = strrpos($src, '.') === false ? '' : substr($src, strrpos($src, '.') + 1);
4233
php_logger::debug("id=$id", "src=$src", "type=$type", "name=$name");
4334

4435
if ($type != 'element') {
4536
$rTypes = ["template"];
46-
$rMapps = ["template"=>xml_serve::template_name()];
37+
$rMapps = ["template" => xml_serve::template_name()];
4738
if (xml_serve::$extension) {
4839
$rTypes[] = "module";
4940
$rMapps += ["module" => xml_serve::$extension];
@@ -68,7 +59,8 @@ public static function render($el)
6859
'indent' => true,
6960
'output-xml' => true,
7061
'input-xml' => true,
71-
'wrap' => '1000');
62+
'wrap' => '1000'
63+
);
7264
$tidy = new tidy();
7365
$tidy->parseString($cont, $config, 'utf8');
7466
$tidy->cleanRepair();
@@ -79,9 +71,9 @@ public static function render($el)
7971
$html = xml_serve::markdownToHtml($cont, true);
8072
return xml_serve::xml_content(Slimdown::render($html));
8173
case 'element':
82-
return xml_file::toDocEl(xml_serve::handle_element($name, $el));
74+
return xml_file::toDocEl(xml_serve::handle_element($name, $merged));
8375
default:
84-
return xml_serve::xml_content("<span>!<[CDATA[".str_replace(">", "&gt;", $cont)."]]></span>");
76+
return xml_serve::xml_content("<span>!<[CDATA[" . str_replace(">", "&gt;", $cont) . "]]></span>");
8577
}
8678

8779
return $el;

0 commit comments

Comments
 (0)