Mercurial > SimpleWebPresenter
changeset 11:ba6f0818018b
Made recursive input evaluation into a function.
| author | Tom Fredrik "BFG" Klaussen <bfg@blenning.no> |
|---|---|
| date | Mon, 28 May 2012 22:57:30 +0200 |
| parents | 1ac66bef193a |
| children | a20bb1b51aad |
| files | index.php |
| diffstat | 1 files changed, 121 insertions(+), 74 deletions(-) [+] |
line wrap: on
line diff
--- a/index.php Sat May 21 12:46:02 2011 +0200 +++ b/index.php Mon May 28 22:57:30 2012 +0200 @@ -3,6 +3,11 @@ define(MAX_RECURSE,50); define(CACHING,0); +/* +var_dump($_SERVER); +exit; +*/ + if (DEBUG) { error_reporting(E_ALL); ini_set("display_errors", 1); @@ -29,78 +34,16 @@ if(!$lang) { $lang="no"; $langs=acceptedLanguages(); - foreach ($langs as $l => $val) { - if (file_exists($l)) { - $lang=$l; - break; + if ($langs) { + foreach ($langs as $l => $val) { + if (file_exists($l)) { + $lang=$l; + break; + } } } } -$title="Dummy title"; - -$config=loadFile("${lang}/${name}.xml"); - -$confFile="${lang}/${name}.xml"; -if (!file_exists($confFile)) { - errorPage("Resource not available"); -} -$doc = new DOMDocument(); -$doc->load($confFile); - -$includes=$doc->getElementsByTagName("include"); -$recurse=0; - -while($includes->length>0) { - if(++$recurse>MAX_RECURSE) { - errorPage('Recursion limit exceeded', 500); - } - foreach ($includes as $include) { - $src=$include->getAttribute("src"); - $subdoc = new DOMDocument(); - $subdoc->load("${lang}/${src}"); - $parent=$include->parentNode; - $xml=getElementByTagName($subdoc,"xml"); - foreach($xml->childNodes as $child) { - $text=$subdoc->saveXml($child); - $clonedChild=$doc->importNode($child,true); - $parent->insertBefore($clonedChild,$include); - } - $parent->removeChild($include); - } - $includes=$doc->getElementsByTagName("include"); -} - -$head=getElementByTagName($doc,"head"); -$title=$head->getAttribute("title"); - -$css=getElementByTagName($head,"css"); -$css=$doc->saveXML($css); -$css=preg_replace('/\s*<\/?\s*css\s*>\s*/s', '', $css); - -$body=getElementByTagName($doc,"body"); -$files=$body->getElementsByTagName("file"); - - -$out= '<?xml version="1.0" encoding="UTF-8"?>'; - -$out.= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" - "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> - <head> - <title>'; - -$out.= "$title"; -$out.= ' - </title> -'; -$out.= "$css"; -$out.= ' - </head> - <body> - <div id="container"> -'; - function getParam($param) { $param_type=$param->getAttribute("type"); $param_value; @@ -130,6 +73,91 @@ return $param_value; } +function getInput($master, $param) { + $out=''; + + $lang=$GLOBALS['lang']; + $name=$param->getAttribute("id"); + $conf=$_GET[$name]; + $GLOBALS[$name]=$conf; + if (!$conf) + $conf=$param->getAttribute("default"); + $config=loadFile("${lang}/${conf}.xml"); + + $confFile="${lang}/${conf}.xml"; + if (!file_exists($confFile)) { + errorPage("Resource not available"); + } + $doc = new DOMDocument(); + $doc->load($confFile); + + $includes=$doc->getElementsByTagName("include"); + $recurse=0; + + while($includes->length>0) { + if(++$recurse>MAX_RECURSE) { + errorPage('Recursion limit exceeded', 500); + } + foreach ($includes as $include) { + $src=$include->getAttribute("src"); + $subdoc = new DOMDocument(); + $subdoc->load("${lang}/${src}"); + $parent=$include->parentNode; + $xml=getElementByTagName($subdoc,"xml"); + foreach($xml->childNodes as $child) { + $text=$subdoc->saveXml($child); + $clonedChild=$doc->importNode($child,true); + $parent->insertBefore($clonedChild,$include); + } + $parent->removeChild($include); + } + $includes=$doc->getElementsByTagName("include"); + } + + $head=getElementByTagName($doc,"head"); + $title=$head->getAttribute("title"); + + if($title) { + $values=$master->getElementsByTagName("param"); + foreach ($values as $value) { + if ($value->getAttribute("type")=="input_config") { + if ($value->getAttribute("id")=="title") { + $tmp = new DOMDocument(); + $tmp->loadXml("<xml>${title}</xml>"); + $parent=$value->parentNode; + $parent->removeChild($value); + $parent->appendChild(new DOMText($tmp->textContent)); + } + } + } + } + + $css=getElementByTagName($head,"css"); + $css=$doc->saveXML($css); + $css=preg_replace('/\s*<\/?\s*css\s*>\s*/s', '', $css); + + if($css) { + $values=$master->getElementsByTagName("param"); + foreach ($values as $value) { + if ($value->getAttribute("type")=="input_config") { + if ($value->getAttribute("id")=="css") { + $tmp = new DOMDocument(); + $tmp->loadXml("<xml>${css}</xml>"); + $parent=$value->parentNode; + foreach($tmp->firstChild->childNodes as $node) { + $clonedChild=$master->importNode($node,true); + $parent->insertBefore($clonedChild,$value); + } + $parent->removeChild($value); + } + } + } + } + + + $body=getElementByTagName($doc,"body"); + $files=$body->getElementsByTagName("file"); + foreach ($files as $file) { $src=$file->getAttribute("src"); $file_content=loadFile("${lang}/${src}"); @@ -158,11 +186,30 @@ $out.= $file_content; } -$out.=' - </div> - </body> -</html> -'; + $doc = new DOMDocument(); + $doc->loadXml("<xml>${out}</xml>"); + + return $doc; +} + +$master = new DOMDocument(); +$master->load("master.xml"); + +$params=$master->getElementsByTagName("param"); +foreach ($params as $param) { + if ($param->getAttribute("type") == "input") { + $doc=getInput($master,$param); -print $out; + $parent=$param->parentNode; + foreach ($doc->firstChild->childNodes as $child) { + $clonedChild=$master->importNode($child,true); + $parent->insertBefore($clonedChild,$param); + } + $parent->removeChild($param); + + } +} + +print $master->saveXml($master); + ?>
