Mercurial > SimpleWebPresenter
changeset 4:74196528fc64
Refac to use xml as input, and remove filters and helper-functions from
main script.
| author | Tom Fredrik "BFG" Klaussen <bfg@blenning.no> |
|---|---|
| date | Thu, 19 May 2011 18:04:33 +0200 |
| parents | 238c5127b78c |
| children | 18aafb1a8986 |
| files | common-functions.inc filters.inc index.php |
| diffstat | 3 files changed, 118 insertions(+), 70 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/common-functions.inc Thu May 19 18:04:33 2011 +0200 @@ -0,0 +1,24 @@ +<?php +function loadFile($sFilename, $sCharset = 'UTF-8') +{ + if (floatval(phpversion()) >= 4.3) { + if (!file_exists($sFilename)) return -3; + $sData = file_get_contents($sFilename); + } else { + if (!file_exists($sFilename)) return -3; + $rHandle = fopen($sFilename, 'r'); + if (!$rHandle) return -2; + + $sData = ''; + while(!feof($rHandle)) + $sData .= fread($rHandle, filesize($sFilename)); + fclose($rHandle); + } + if ($sEncoding = mb_detect_encoding($sData, 'auto', true) != $sCharset) { + if ($sEncoding != 1) { + $sData = mb_convert_encoding($sData, $sCharset, $sEncoding); + } + } + return $sData; +} +?>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/filters.inc Thu May 19 18:04:33 2011 +0200 @@ -0,0 +1,35 @@ +<?php +function activeNav($input, $name, $lang) +{ + $pattern = "/<li id=\"${name}\"\s?([^>]*)>/is"; + $replacement = "<li id=\"${name}\" class=\"active\" $1>"; + $output= preg_replace($pattern, $replacement, $input); + + $pattern = '/<li id="([^"]+)"\s?([^>]*)>(.*?)<\/li>/is'; + $replacement = "<li id=\"\$1\" \$2><a href=\"?name=$1&lang=${lang}\">\$3</a></li>"; + $output=preg_replace($pattern, $replacement, $output); + + return $output; +} + +function addLangBar($input, $lang) { + $languages = array("no","en"); + $langbar='<ul id="language-select">'; + + foreach($languages as $l) { + $active=($l == $lang)?1:0; + $langbar.= " + <li class=\"${l}\"> + <img src=\"http://dev.bfginvest.no/php/flag.php?lang=${l}&active=${active}\" width=\"20\" height=\"16\" alt=\"Norsk versjon - inaktiv\" title=\"Norsk\"/> + </li> +"; + + } + $langbar.='</ul>'; + $pattern = '/<ul id="language-select"\/>/'; + $replacement = $langbar; + $output=preg_replace($pattern, $replacement, $input); + + return $output; +} +?> \ No newline at end of file
--- a/index.php Tue May 10 19:08:48 2011 +0200 +++ b/index.php Thu May 19 18:04:33 2011 +0200 @@ -1,30 +1,8 @@ <?php include 'php/cache_check.inc'; include 'php/accept-language.inc'; - -function loadFile($sFilename, $sCharset = 'UTF-8') -{ - if (floatval(phpversion()) >= 4.3) { - if (!file_exists($sFilename)) return -3; - $sData = file_get_contents($sFilename); - } else { - if (!file_exists($sFilename)) return -3; - $rHandle = fopen($sFilename, 'r'); - if (!$rHandle) return -2; - - $sData = ''; - while(!feof($rHandle)) - $sData .= fread($rHandle, filesize($sFilename)); - fclose($rHandle); - } - if ($sEncoding = mb_detect_encoding($sData, 'auto', true) != $sCharset) { - if ($sEncoding != 1) { - $sData = mb_convert_encoding($sData, $sCharset, $sEncoding); - } - } - return $sData; -} - +include 'php/filters.inc'; +include 'php/common-functions.inc'; $name = $_GET['name']; $lang = $_GET['lang']; @@ -44,23 +22,30 @@ } $title="Dummy title"; -$header="header.html"; -$footer="footer.html"; -$body="body.html"; + +$config=loadFile("${lang}/${name}.xml"); -$config=loadFile("${lang}/${name}.cfg"); +function getElementByTagName($obj, $name) { + $elems=$obj->getElementsByTagName($name); + if ($elems->length != 1) { + exit; + } + $elem=$elems->item(0); + return $elem; +} -eval($config); -$body_content=loadFile("${lang}/${body}"); -if(floatval($body_content)<0) { - header('HTTP/1.0 404 Not Found'); - $body_content='<div id="page"><h1>Resource not found</h1></div>'; -} -if (!file_exists($lang)) { - $lang=no; - header('HTTP/1.0 404 Not Found'); - $body_content='<div id="page"><h1>Language is not available</h1></div>'; -} +$doc = new DOMDocument(); +$doc->load("${lang}/${name}.xml"); + +$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"); print '<?xml version="1.0" encoding="UTF-8"?>'; ?> @@ -81,38 +66,42 @@ <div id="container"> <?php -$header_content=loadFile("${lang}/${header}"); -$footer_content=loadFile("${lang}/${footer}"); - -$pattern = "/<li id=\"${name}\"\s?([^>]*)>/is"; -$replacement = "<li id=\"${name}\" class=\"active\" $1>"; -$header_content= preg_replace($pattern, $replacement, $header_content); - -$pattern = '/<li id="([^"]+)"\s?([^>]*)>(.*?)<\/li>/is'; -$replacement = "<li id=\"\$1\" \$2><a href=\"?name=$1&lang=${lang}\">\$3</a></li>"; -$header_content=preg_replace($pattern, $replacement, $header_content); - -$languages = array("no","en"); -$langbar='<ul id="language-select">'; - -foreach($languages as $l) { - $active=($l == $lang)?1:0; - $langbar.= " - <li class=\"norwegian\"> - <img src=\"http://dev.bfginvest.no/php/flag.php?lang=${l}&active=${active}\" width=\"20\" height=\"16\" alt=\"Norsk versjon - inaktiv\" title=\"Norsk\"/> - </li> -"; - +foreach ( $files as $file) { + $src=$file->getAttribute("src"); + $file_content=loadFile("${lang}/${src}"); +// print $file_content; + $filters=$file->getElementsByTagName("filter"); + foreach($filters as $filter) { + $func=$filter->getAttribute("function"); + $params=$filter->getElementsByTagName("param"); + $callString="\$file_content=${func}(\$file_content"; + foreach ($params as $param) { + $param_subst=$param->getAttribute("subst"); + $param_value=$param->getAttribute("value"); + if ($param_subst) { + $param_value=preg_replace("/name/", $name, $param_subst); + $param_value=preg_replace('/lang/', $lang, $param_value); + } + $callString.=",\"${param_value}\""; + } + $callString.=");"; + eval($callString); + } + print $file_content; } -$langbar.='</ul>'; -$pattern = '/<ul id="language-select"\/>/'; -$replacement = $langbar; -$header_content=preg_replace($pattern, $replacement, $header_content); - -print $header_content; -print $body_content; -print $footer_content; - + +/* +$body_content=loadFile("${lang}/${body}"); +if(floatval($body_content)<0) { + header('HTTP/1.0 404 Not Found'); + $body_content='<div id="page"><h1>Resource not found</h1></div>'; +} +if (!file_exists($lang)) { + $lang=no; + header('HTTP/1.0 404 Not Found'); + $body_content='<div id="page"><h1>Language is not available</h1></div>'; +} +*/ ?>
