mikuli.cz

:)
git clone https://git.sr.ht/~ashymad/mikuli.cz
Log | Files | Refs

commit 0d7b59c5d88ed582b6e358f358578863feaf9141
parent 830928e8f75b120d56950105f2c378783a81244d
Author: markseu <mark2011@mayberg.se>
Date:   Thu, 23 Aug 2018 22:12:14 +0200

Performance improvements and refactoring

Diffstat:
Msystem/config/config.ini | 3++-
Msystem/plugins/command.php | 30+++++++++++++++---------------
Msystem/plugins/core.php | 107++++++++++++++++++++++++++++++++++++++-----------------------------------------
Msystem/plugins/edit.php | 14+++++++-------
Msystem/plugins/image.php | 12++++++------
Msystem/plugins/markdown.php | 4++--
Msystem/plugins/update-blog.installation | 0
Msystem/plugins/update-wiki.installation | 0
Msystem/plugins/update.php | 63+--------------------------------------------------------------
Msystem/themes/snippets/header.php | 2+-
10 files changed, 86 insertions(+), 149 deletions(-)

diff --git a/system/config/config.ini b/system/config/config.ini @@ -43,6 +43,7 @@ NewFile: page-new-(.*).txt RobotsFile: robots.txt FaviconFile: favicon.ico ServerUrl: +StartupUpdate: none Template: default Navigation: navigation Sidebar: sidebar @@ -52,7 +53,7 @@ Parser: markdown ParserSafeMode: 0 MultiLanguageMode: 0 InstallationMode: 1 -StartupUpdate: none +BundleAndMinify: 1 EditLocation: /edit/ EditUploadNewLocation: /media/@group/@filename EditUploadExtensions: .gif, .jpg, .pdf, .png, .svg, .tgz, .zip diff --git a/system/plugins/command.php b/system/plugins/command.php @@ -4,7 +4,7 @@ // This file may be used and distributed under the terms of the public license. class YellowCommand { - const VERSION = "0.7.8"; + const VERSION = "0.7.9"; public $yellow; //access to API public $files; //number of files public $links; //number of links @@ -130,7 +130,7 @@ class YellowCommand { } else { $statusCode = $this->copyStaticFile($path, $location); } - if ($statusCode==200 && $analyse) $this->analyseStaticFile($scheme, $address, $base, $fileData); + if ($statusCode==200 && $analyse) $this->analyseLocations($scheme, $address, $base, $fileData); if ($statusCode==404 && $probe) $statusCode = 100; if ($statusCode==404 && $error) $statusCode = 200; if ($statusCode>=200) ++$this->files; @@ -190,8 +190,8 @@ class YellowCommand { return $statusCode; } - // Analyse static file, detect locations with arguments - public function analyseStaticFile($scheme, $address, $base, $rawData) { + // Analyse locations with arguments + public function analyseLocations($scheme, $address, $base, $rawData) { $pagination = $this->yellow->config->get("contentPagination"); preg_match_all("/<(.*?)href=\"([^\"]+)\"(.*?)>/i", $rawData, $matches); foreach ($matches[2] as $match) { @@ -209,13 +209,13 @@ class YellowCommand { $location = rtrim($location, "/")."/"; if (is_null($this->locationsArgs[$location])) { $this->locationsArgs[$location] = $location; - if (defined("DEBUG") && DEBUG>=2) echo "YellowCommand::analyseStaticFile detected location:$location<br/>\n"; + if (defined("DEBUG") && DEBUG>=2) echo "YellowCommand::analyseLocations detected location:$location<br/>\n"; } } else { $location = rtrim($location, "0..9"); if (is_null($this->locationsArgsPagination[$location])) { $this->locationsArgsPagination[$location] = $location; - if (defined("DEBUG") && DEBUG>=2) echo "YellowCommand::analyseStaticFile detected location:$location<br/>\n"; + if (defined("DEBUG") && DEBUG>=2) echo "YellowCommand::analyseLocations detected location:$location<br/>\n"; } } } @@ -249,8 +249,8 @@ class YellowCommand { $this->files = $this->links = 0; $regex = "/^[^.]+$|".$this->yellow->config->get("staticDefaultFile")."$/"; $fileNames = $this->yellow->toolbox->getDirectoryEntriesRecursive($path, $regex, false, false); - list($statusCodeFiles, $links) = $this->analyseStaticFiles($path, $locationFilter, $fileNames); - list($statusCodeLinks, $broken, $redirect) = $this->analyseLinks($path, $links); + list($statusCodeFiles, $links) = $this->analyseLinks($path, $locationFilter, $fileNames); + list($statusCodeLinks, $broken, $redirect) = $this->analyseStatus($path, $links); if ($statusCodeLinks!=200) { $this->showLinks($broken, "Broken links"); $this->showLinks($redirect, "Redirect links"); @@ -258,8 +258,8 @@ class YellowCommand { return max($statusCodeFiles, $statusCodeLinks); } - // Analyse static files, detect links - public function analyseStaticFiles($path, $locationFilter, $fileNames) { + // Analyse links in static files + public function analyseLinks($path, $locationFilter, $fileNames) { $statusCode = 200; $links = array(); if (!empty($fileNames)) { @@ -278,12 +278,12 @@ class YellowCommand { $url = $location.(empty($matches[3]) ? "/" : ""); if (!is_null($links[$url])) $links[$url] .= ","; $links[$url] .= $locationSource; - if (defined("DEBUG") && DEBUG>=2) echo "YellowCommand::analyseStaticFiles detected url:$url<br/>\n"; + if (defined("DEBUG") && DEBUG>=2) echo "YellowCommand::analyseLinks detected url:$url<br/>\n"; } elseif ($location[0]=="/") { $url = "$scheme://$address$location"; if (!is_null($links[$url])) $links[$url] .= ","; $links[$url] .= $locationSource; - if (defined("DEBUG") && DEBUG>=2) echo "YellowCommand::analyseStaticFiles detected url:$url<br/>\n"; + if (defined("DEBUG") && DEBUG>=2) echo "YellowCommand::analyseLinks detected url:$url<br/>\n"; } } ++$this->files; @@ -300,8 +300,8 @@ class YellowCommand { return array($statusCode, $links); } - // Analyse links, detect status - public function analyseLinks($path, $links) { + // Analyse link status + public function analyseStatus($path, $links) { $statusCode = 200; $broken = $redirect = $data = array(); $staticUrl = $this->yellow->config->get("staticUrl"); @@ -310,7 +310,7 @@ class YellowCommand { $staticLocations = $this->getContentLocations(true); uksort($links, "strnatcasecmp"); foreach ($links as $url=>$value) { - if (defined("DEBUG") && DEBUG>=1) echo "YellowCommand::analyseLinks url:$url\n"; + if (defined("DEBUG") && DEBUG>=1) echo "YellowCommand::analyseStatus url:$url\n"; if (preg_match("#^$staticUrl#", $url)) { $location = substru($url, $staticUrlLength); $fileName = $path.substru($url, $staticUrlLength); diff --git a/system/plugins/core.php b/system/plugins/core.php @@ -4,7 +4,7 @@ // This file may be used and distributed under the terms of the public license. class YellowCore { - const VERSION = "0.7.5"; + const VERSION = "0.7.6"; public $page; //current page public $pages; //pages from file system public $files; //files from file system @@ -68,6 +68,7 @@ class YellowCore { $this->config->setDefault("robotsFile", "robots.txt"); $this->config->setDefault("faviconFile", "favicon.ico"); $this->config->setDefault("serverUrl", ""); + $this->config->setDefault("startupUpdate", "none"); $this->config->setDefault("template", "default"); $this->config->setDefault("navigation", "navigation"); $this->config->setDefault("sidebar", "sidebar"); @@ -77,7 +78,6 @@ class YellowCore { $this->config->setDefault("parserSafeMode", "0"); $this->config->setDefault("multiLanguageMode", "0"); $this->config->setDefault("installationMode", "0"); - $this->config->setDefault("startupUpdate", "none"); } public function __destruct() { @@ -315,10 +315,10 @@ class YellowCore { } } - // Parse snippet + // Include snippet public function snippet($name, $args = null) { $this->lookup->snippetArgs = func_get_args(); - $this->page->parseSnippet($name); + $this->page->includePageSnippet($name); } // Return snippet arguments @@ -551,18 +551,7 @@ class YellowPage { // Parse page public function parsePage() { - $this->outputData = null; - if (!$this->isError()) { - foreach ($this->yellow->plugins->plugins as $key=>$value) { - if (method_exists($value["obj"], "onParsePage")) $value["obj"]->onParsePage(); - } - } - if (is_null($this->outputData)) { - ob_start(); - $this->parseTemplate($this->get("template")); - $this->outputData = ob_get_contents(); - ob_end_clean(); - } + $this->parsePageTemplate($this->get("template")); if (!$this->isCacheable()) $this->setHeader("Cache-Control", "no-cache, must-revalidate"); if (!$this->isHeader("Content-Type")) $this->setHeader("Content-Type", "text/html; charset=utf-8"); if (!$this->isHeader("Page-Modified")) $this->setHeader("Page-Modified", $this->getModified(true)); @@ -592,10 +581,36 @@ class YellowPage { $this->error(404); } if ($this->isExisting("pageClean")) $this->outputData = null; + foreach ($this->yellow->plugins->plugins as $key=>$value) { + if (method_exists($value["obj"], "onParsePageOutput")) { + $output = $value["obj"]->onParsePageOutput($this, $this->outputData); + if (!is_null($output)) $this->outputData = $output; + } + } } - // Parse template - public function parseTemplate($name) { + // Parse page template + public function parsePageTemplate($name) { + $this->outputData = null; + if (!$this->isError()) { + foreach ($this->yellow->plugins->plugins as $key=>$value) { + if (method_exists($value["obj"], "onParsePageTemplate")) { + $value["obj"]->onParsePageTemplate($this, $name); + } elseif (method_exists($value["obj"], "onParsePage")) { //TODO: remove later, old event handler + $value["obj"]->onParsePage(); + } + } + } + if (is_null($this->outputData)) { + ob_start(); + $this->includePageTemplate($name); + $this->outputData = ob_get_contents(); + ob_end_clean(); + } + } + + // Include page template + public function includePageTemplate($name) { $fileNameTemplate = $this->yellow->config->get("templateDir").$this->yellow->lookup->normaliseName($name).".html"; if (is_file($fileNameTemplate)) { $this->setLastModified(filemtime($fileNameTemplate)); @@ -607,8 +622,8 @@ class YellowPage { } } - // Parse snippet - public function parseSnippet($name) { + // Include page snippet + public function includePageSnippet($name) { $fileNameSnippet = $this->yellow->config->get("snippetDir").$this->yellow->lookup->normaliseName($name).".php"; if (is_file($fileNameSnippet)) { $this->setLastModified(filemtime($fileNameSnippet)); @@ -687,13 +702,13 @@ class YellowPage { return $sizeMax ? substrb($text, 0, $sizeMax) : $text; } - // Return parent page of current page, null if none + // Return parent page, null if none public function getParent() { $parentLocation = $this->yellow->pages->getParentLocation($this->location); return $this->yellow->pages->find($parentLocation); } - // Return top-level page for current page, null if none + // Return top-level parent page, null if none public function getParentTop($homeFailback = true) { $parentTopLocation = $this->yellow->pages->getParentTopLocation($this->location); if (!$this->yellow->pages->find($parentTopLocation) && $homeFailback) { @@ -702,28 +717,28 @@ class YellowPage { return $this->yellow->pages->find($parentTopLocation); } - // Return page collection with pages on the same level as current page + // Return page collection with pages on the same level public function getSiblings($showInvisible = false) { $parentLocation = $this->yellow->pages->getParentLocation($this->location); return $this->yellow->pages->getChildren($parentLocation, $showInvisible); } - // Return page collection with child pages of current page + // Return page collection with child pages public function getChildren($showInvisible = false) { return $this->yellow->pages->getChildren($this->location, $showInvisible); } - // Return page collection with sub pages of current page + // Return page collection with sub pages public function getChildrenRecursive($showInvisible = false, $levelMax = 0) { return $this->yellow->pages->getChildrenRecursive($this->location, $showInvisible, $levelMax); } - // Set page collection with additional pages for current page + // Set page collection with additional pages public function setPages($pages) { $this->pageCollection = $pages; } - // Return page collection with additional pages for current page + // Return page collection with additional pages public function getPages() { return $this->pageCollection; } @@ -753,11 +768,14 @@ class YellowPage { return $this->yellow->lookup->normaliseUrl($this->scheme, $this->address, $this->base, $this->location); } - // Return page extra HTML data + // Return page extra data public function getExtra($name) { $output = ""; foreach ($this->yellow->plugins->plugins as $key=>$value) { - if (method_exists($value["obj"], "onExtra")) { + if (method_exists($value["obj"], "onParsePageExtra")) { + $outputPlugin = $value["obj"]->onParsePageExtra($this, $name); + if (!is_null($outputPlugin)) $output .= $outputPlugin; + } elseif (method_exists($value["obj"], "onExtra")) { //TODO: remove later, old event handler $outputPlugin = $value["obj"]->onExtra($name); if (!is_null($outputPlugin)) $output .= $outputPlugin; } @@ -781,28 +799,7 @@ class YellowPage { $output .= "<link rel=\"apple-touch-icon\" type=\"$contentType\" href=\"".htmlspecialchars($location)."\" />\n"; } } - return $this->normaliseExtra($output); - } - - // Normalise page extra HTML data - public function normaliseExtra($text) { - $outputScript = $outputStylesheet = $outputOther = $locations = array(); - foreach ($this->yellow->toolbox->getTextLines($text) as $line) { - if (preg_match("/^<script (.*?)src=\"([^\"]+)\"(.*?)><\/script>$/i", $line, $matches)) { - if (is_null($locations[$matches[2]])) { - $locations[$matches[2]] = $matches[2]; - array_push($outputScript, $line); - } - } elseif (preg_match("/^<link rel=\"stylesheet\"(.*?)href=\"([^\"]+)\"(.*?)>$/i", $line, $matches)) { - if (is_null($locations[$matches[2]])) { - $locations[$matches[2]] = $matches[2]; - array_push($outputStylesheet, $line); - } - } else { - array_push($outputOther, $line); - } - } - return implode($outputScript).implode($outputStylesheet).implode($outputOther); + return $output; } // Set page response output @@ -880,7 +877,7 @@ class YellowPage { return $this->visible; } - // Check if page is within current request + // Check if page is within current HTTP request public function isActive() { return $this->active; } @@ -1546,7 +1543,7 @@ class YellowThemes { if (defined("DEBUG") && DEBUG>=3) echo "YellowThemes::load file:$entry<br/>\n"; $this->modified = max($this->modified, filemtime($entry)); $name = $this->yellow->lookup->normaliseName(basename($entry), true, true); - $this->register($name, "", ""); + if (substru($name, 0, 7)!="bundle-") $this->register($name, "", ""); } $callback = function ($a, $b) { return $a["priority"] - $b["priority"]; @@ -2295,7 +2292,7 @@ class YellowLookup { return $visible; } - // Check if location is within current request + // Check if location is within current HTTP request public function isActiveLocation($location, $currentLocation) { if ($this->isFileLocation($location)) { $active = $currentLocation==$location; @@ -2994,7 +2991,7 @@ class YellowToolbox { } // Detect image dimensions and type for gif/jpg/png/svg - public function detectImageInfo($fileName) { + public function detectImageInformation($fileName) { $width = $height = 0; $type = ""; $fileHandle = @fopen($fileName, "rb"); diff --git a/system/plugins/edit.php b/system/plugins/edit.php @@ -4,7 +4,7 @@ // This file may be used and distributed under the terms of the public license. class YellowEdit { - const VERSION = "0.7.27"; + const VERSION = "0.7.28"; public $yellow; //access to API public $response; //web response public $users; //user accounts @@ -73,7 +73,7 @@ class YellowEdit { return $statusCode; } - // Handle page meta data parsing + // Handle page meta data public function onParseMeta($page) { if ($page==$this->yellow->page && $this->response->isActive()) { if ($this->response->isUser()) { @@ -89,7 +89,7 @@ class YellowEdit { } } - // Handle page content parsing of custom block + // Handle page content of custom block public function onParseContentBlock($page, $name, $text, $shortcut) { $output = null; if ($name=="edit" && $shortcut) { @@ -100,13 +100,13 @@ class YellowEdit { return $output; } - // Handle page extra HTML data - public function onExtra($name) { + // Handle page extra data + public function onParsePageExtra($page, $name) { $output = null; if ($name=="header" && $this->response->isActive()) { $pluginLocation = $this->yellow->config->get("serverBase").$this->yellow->config->get("pluginLocation"); - $output = "<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" href=\"{$pluginLocation}edit.css\" />\n"; - $output .= "<script type=\"text/javascript\" src=\"{$pluginLocation}edit.js\"></script>\n"; + $output = "<link rel=\"stylesheet\" type=\"text/css\" media=\"all\" data-bundle=\"none\" href=\"{$pluginLocation}edit.css\" />\n"; + $output .= "<script type=\"text/javascript\" data-bundle=\"none\" src=\"{$pluginLocation}edit.js\"></script>\n"; $output .= "<script type=\"text/javascript\">\n"; $output .= "// <![CDATA[\n"; $output .= "yellow.page = ".json_encode($this->response->getPageData()).";\n"; diff --git a/system/plugins/image.php b/system/plugins/image.php @@ -4,7 +4,7 @@ // This file may be used and distributed under the terms of the public license. class YellowImage { - const VERSION = "0.7.3"; + const VERSION = "0.7.4"; public $yellow; //access to API public $graphicsLibrary; //graphics library support? (boolean) @@ -18,7 +18,7 @@ class YellowImage { $this->graphicsLibrary = $this->isGraphicsLibrary(); } - // Handle page content parsing of custom block + // Handle page content of custom block public function onParseContentBlock($page, $name, $text, $shortcut) { $output = null; if ($name=="image" && $shortcut) { @@ -31,7 +31,7 @@ class YellowImage { if (empty($alt)) $alt = $this->yellow->config->get("imageAlt"); if (empty($width)) $width = "100%"; if (empty($height)) $height = $width; - list($src, $width, $height) = $this->getImageInfo($this->yellow->config->get("imageDir").$name, $width, $height); + list($src, $width, $height) = $this->getImageInformation($this->yellow->config->get("imageDir").$name, $width, $height); } else { if (empty($alt)) $alt = $this->yellow->config->get("imageAlt"); $src = $this->yellow->lookup->normaliseUrl("", "", "", $name); @@ -71,9 +71,9 @@ class YellowImage { } // Return image info, create thumbnail on demand - public function getImageInfo($fileName, $widthOutput, $heightOutput) { + public function getImageInformation($fileName, $widthOutput, $heightOutput) { $fileNameShort = substru($fileName, strlenu($this->yellow->config->get("imageDir"))); - list($widthInput, $heightInput, $type) = $this->yellow->toolbox->detectImageInfo($fileName); + list($widthInput, $heightInput, $type) = $this->yellow->toolbox->detectImageInformation($fileName); $widthOutput = $this->convertValueAndUnit($widthOutput, $widthInput); $heightOutput = $this->convertValueAndUnit($heightOutput, $heightInput); if (($widthInput==$widthOutput && $heightInput==$heightOutput) || $type=="svg") { @@ -94,7 +94,7 @@ class YellowImage { } } $src = $this->yellow->config->get("serverBase").$this->yellow->config->get("imageThumbnailLocation").$fileNameThumb; - list($width, $height) = $this->yellow->toolbox->detectImageInfo($fileNameOutput); + list($width, $height) = $this->yellow->toolbox->detectImageInformation($fileNameOutput); } return array($src, $width, $height); } diff --git a/system/plugins/markdown.php b/system/plugins/markdown.php @@ -12,7 +12,7 @@ class YellowMarkdown { $this->yellow = $yellow; } - // Handle page content parsing of raw format + // Handle page content in raw format public function onParseContentRaw($page, $text) { $markdown = new YellowMarkdownExtraParser($this->yellow, $page); return $markdown->transform($text); @@ -3848,7 +3848,7 @@ class YellowMarkdownExtraParser extends MarkdownExtraParser { $width = $height = 0; $src = $matches[3]=="" ? $matches[4] : $matches[3]; if (!preg_match("/^\w+:/", $src)) { - list($width, $height) = $this->yellow->toolbox->detectImageInfo($this->yellow->config->get("imageDir").$src); + list($width, $height) = $this->yellow->toolbox->detectImageInformation($this->yellow->config->get("imageDir").$src); $src = $this->yellow->config->get("serverBase").$this->yellow->config->get("imageLocation").$src; } $alt = $matches[2]; diff --git a/system/plugins/update-blog.installation b/system/plugins/update-blog.installation Binary files differ. diff --git a/system/plugins/update-wiki.installation b/system/plugins/update-wiki.installation Binary files differ. diff --git a/system/plugins/update.php b/system/plugins/update.php @@ -4,7 +4,7 @@ // This file may be used and distributed under the terms of the public license. class YellowUpdate { - const VERSION = "0.7.16"; + const VERSION = "0.7.17"; public $yellow; //access to API public $updates; //number of updates @@ -40,67 +40,6 @@ class YellowUpdate { } if ($fileData!=$fileDataNew) $this->yellow->toolbox->createFile($fileNameConfig, $fileDataNew); } - if ($update) { //TODO: remove later, converts old theme - $path = $this->yellow->config->get("themeDir"); - foreach ($this->yellow->toolbox->getDirectoryEntries($path, "/^.*\.css$/", true, false) as $entry) { - $fileNameAsset = $this->yellow->config->get("assetDir").basename($entry); - if (!is_file($fileNameAsset)) { - $fileData = $this->yellow->toolbox->readFile($entry); - $fileData = preg_replace("#url\(assets/(.*?)\)#", "url($1)", $fileData); - $this->yellow->toolbox->createFile($fileNameAsset, $fileData); - } - $this->yellow->toolbox->deleteFile($entry, $this->yellow->config->get("trashDir")); - $_GET["clean-url"] = "theme-has-been-updated"; - } - } - if ($update) { //TODO: remove later, converts old error page - $fileName = $this->yellow->config->get("configDir")."page-error-500.txt"; - if (is_file($fileName)) { - $fileData = $this->yellow->toolbox->readFile($fileName); - $fileDataNew = preg_replace("/@pageerror/", "[yellow error]", $fileData); - if ($fileData!=$fileDataNew) $this->yellow->toolbox->createFile($fileName, $fileDataNew); - } - } - if ($update) { //TODO: remove later, converts new blog page - $fileName = $this->yellow->config->get("configDir")."page-new-blog.txt"; - if (is_file($fileName)) { - $fileData = $this->yellow->toolbox->readFile($fileName); - $fileDataNew = $this->yellow->toolbox->setMetaData($fileData, "template", "blog"); - if ($fileData!=$fileDataNew) $this->yellow->toolbox->createFile($fileName, $fileDataNew); - } - } - if ($update) { //TODO: remove later, converts new wiki page - $fileName = $this->yellow->config->get("configDir")."page-new-wiki.txt"; - if (is_file($fileName)) { - $fileData = $this->yellow->toolbox->readFile($fileName); - $fileDataNew = $this->yellow->toolbox->setMetaData($fileData, "template", "wiki"); - if ($fileData!=$fileDataNew) $this->yellow->toolbox->createFile($fileName, $fileDataNew); - } - } - if ($update) { //TODO: remove later, converts template settings - $valueDefault = $this->yellow->config->get("template"); - foreach ($this->yellow->pages->index(true, true) as $page) { - preg_match("/^.*\/(.+?)$/", dirname($page->fileName), $matches); - $value = $this->yellow->lookup->normaliseName($matches[1], true, false, true); - if (!is_file($this->yellow->config->get("templateDir").$value.".html")) $value = $valueDefault; - $pageTemplate = $this->yellow->toolbox->getMetaData($page->rawData, "template"); - $pagePublished = $this->yellow->toolbox->getMetaData($page->rawData, "published"); - if (empty($pagePublished) && $value=="blog") $value = $valueDefault; - if (empty($pageTemplate) && $value!=$valueDefault) { - $rawDataNew = $this->yellow->toolbox->setMetaData($page->rawData, "template", $value); - if ($page->rawData!=$rawDataNew) $this->yellow->toolbox->createFile($page->fileName, $rawDataNew); - } - } - foreach ($this->yellow->pages->index(true, true)->filter("template", "blogpages") as $page) { - $rawDataNew = $this->yellow->toolbox->setMetaData($page->rawData, "templateNew", "blog"); - if ($page->rawData!=$rawDataNew) $this->yellow->toolbox->createFile($page->fileName, $rawDataNew); - } - foreach ($this->yellow->pages->index(true, true)->filter("template", "wikipages") as $page) { - $rawDataNew = $this->yellow->toolbox->setMetaData($page->rawData, "templateNew", "wiki"); - if ($page->rawData!=$rawDataNew) $this->yellow->toolbox->createFile($page->fileName, $rawDataNew); - } - $this->yellow->pages = new YellowPages($this->yellow); - } } // Handle request diff --git a/system/themes/snippets/header.php b/system/themes/snippets/header.php @@ -1,12 +1,12 @@ <!DOCTYPE html><html lang="<?php echo $yellow->page->getHtml("language") ?>"> <head> +<title><?php echo $yellow->page->getHtml("titleHeader") ?></title> <meta charset="utf-8" /> <meta name="description" content="<?php echo $yellow->page->getHtml("description") ?>" /> <meta name="keywords" content="<?php echo $yellow->page->getHtml("keywords") ?>" /> <meta name="author" content="<?php echo $yellow->page->getHtml("author") ?>" /> <meta name="generator" content="Datenstrom Yellow" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> -<title><?php echo $yellow->page->getHtml("titleHeader") ?></title> <?php echo $yellow->page->getExtra("header") ?> </head> <body>