mikuli.cz

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

commit b9a0b709eddaa7e603045812b7b455f96e0d76cb
parent 28704f6f9d0ad5e27d56b0364aa4eb3c2e8495b6
Author: markseu <mark2011@mayberg.se>
Date:   Wed, 21 Oct 2015 14:28:56 +0200

Core update (fika remix)

Diffstat:
Msystem/plugins/core.php | 36++++++++++++++++++++++++++++++------
Msystem/plugins/markdown.php | 1-
Msystem/plugins/webinterface.css | 2+-
Msystem/plugins/webinterface.php | 69++++++++++++++++++++++++++++-----------------------------------------
4 files changed, 59 insertions(+), 49 deletions(-)

diff --git a/system/plugins/core.php b/system/plugins/core.php @@ -540,6 +540,30 @@ class YellowPage if(!is_null($output)) break; } } + if(is_null($output)) + { + if($name=="debug" && $shortcut) + { + $output = "<span class=\"".htmlspecialchars($name)."\">\n"; + if(empty($text)) + { + $serverSoftware = $this->yellow->toolbox->getServerSoftware(); + $output .= "Yellow ".YellowCore::Version.", PHP ".PHP_VERSION.", $serverSoftware\n"; + } else if($text == "version") { + foreach($this->yellow->plugins->getData() as $key=>$value) + { + $output .= htmlspecialchars("$key: $value")."<br />\n"; + } + } else { + foreach($this->yellow->config->getData($text) as $key=>$value) + { + $output .= htmlspecialchars(ucfirst($key).": ".$value)."<br />\n"; + } + } + if(!empty($text) && $this->parserSafeMode) $this->error(500, "Debug '$text' is not allowed in safe mode!"); + $output .= "</span>\n"; + } + } if(defined("DEBUG") && DEBUG>=3 && !empty($name)) echo "YellowPage::parseContentBlock name:$name shortcut:$shortcut<br/>\n"; return $output; } @@ -1934,14 +1958,14 @@ class YellowLookup } if(!$directory) { - $fileFolder = $tokens[$i-1].$fileExtension; if(!empty($tokens[$i])) { $token = $tokens[$i].$fileExtension; + $fileFolder = $tokens[$i-1].$fileExtension; if($token==$fileDefault || $token==$fileFolder) $invalid = true; $path .= $this->findFileDirectory($path, $token, true, false, $found, $invalid); } else { - $path .= $this->findFileDefault($path, $fileDefault, $fileFolder); + $path .= $this->findFileDefault($path, $fileDefault, $fileExtension, false); } if(defined("DEBUG") && DEBUG>=2) { @@ -1970,11 +1994,12 @@ class YellowLookup } // Return default file in directory - function findFileDefault($path, $fileDefault, $fileFolder) + function findFileDefault($path, $fileDefault, $fileExtension, $includePath = true) { $token = $fileDefault; if(!is_file($path."/".$fileDefault)) { + $fileFolder = $this->normaliseName(basename($path)).$fileExtension; $regex = "/^[\d\-\_\.]*($fileDefault|$fileFolder)$/"; foreach($this->yellow->toolbox->getDirectoryEntries($path, $regex, true, false, false) as $entry) { @@ -1982,7 +2007,7 @@ class YellowLookup if($this->normaliseName($entry) == $fileFolder) { $token = $entry; break; } } } - return $token; + return $includePath ? "$path/$token" : $token; } // Return children from location @@ -1996,8 +2021,7 @@ class YellowLookup $path = $this->findFileFromLocation($location, true); foreach($this->yellow->toolbox->getDirectoryEntries($path, "/.*/", true, true, false) as $entry) { - $fileFolder = $this->normaliseName($entry).$fileExtension; - $token = $this->findFileDefault($path.$entry, $fileDefault, $fileFolder); + $token = $this->findFileDefault($path.$entry, $fileDefault, $fileExtension, false); array_push($fileNames, $path.$entry."/".$token); } if(!$this->isRootLocation($location)) diff --git a/system/plugins/markdown.php b/system/plugins/markdown.php @@ -35,7 +35,6 @@ class YellowMarkdownParser extends MarkdownExtraParser $this->page = $page; $this->idAttributes = array(); $this->no_markup = $page->parserSafeMode; - $this->no_entities = $page->parserSafeMode; $this->url_filter_func = function($url) use ($yellow, $page) { return $yellow->lookup->normaliseLocation($url, $page->base, $page->location, diff --git a/system/plugins/webinterface.css b/system/plugins/webinterface.css @@ -96,7 +96,7 @@ #yellow-pane-login input { width:15em; box-sizing:border-box; } #yellow-pane-login .yellow-btn { width:15em; margin:1em 1em 0.5em 0; } #yellow-pane-edit { } -#yellow-pane-edit h1 { margin:0 0 10px 0; font-size:1.5em; } +#yellow-pane-edit h1 { margin:0 0 10px 0; font-size:1.5em; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } #yellow-pane-edit-page { padding:5px; outline:none; resize:none; } #yellow-pane-edit-buttons { margin-top:5px; } #yellow-pane-edit-buttons input { margin-right:10px; } diff --git a/system/plugins/webinterface.php b/system/plugins/webinterface.php @@ -83,27 +83,6 @@ class YellowWebinterface if(substru($text, 0, 2)=="- ") $editText = trim(substru($text, 2)); $output = "<a href=\"".$page->get("pageEdit")."\">".htmlspecialchars($editText)."</a>"; } - if($name=="debug" && $shortcut) - { - $output = "<div class=\"".htmlspecialchars($name)."\">\n"; - if(empty($text)) - { - $serverSoftware = $this->yellow->toolbox->getServerSoftware(); - $output .= "Yellow ".YellowCore::Version.", PHP ".PHP_VERSION.", $serverSoftware\n"; - } else if($text == "version") { - foreach($this->yellow->plugins->getData() as $key=>$value) - { - $output .= htmlspecialchars("$key: $value")."<br />\n"; - } - } else { - foreach($this->yellow->config->getData($text) as $key=>$value) - { - $output .= htmlspecialchars(ucfirst($key).": ".$value)."<br />\n"; - } - } - if(!empty($text) && $page->parserSafeMode) $page->error(500, "Debug '$text' is not allowed in safe mode!"); - $output .= "</div>\n"; - } return $output; } @@ -470,26 +449,29 @@ class YellowWebinterface $page = new YellowPage($this->yellow); $page->setRequestInformation($serverScheme, $serverName, $base, $location, $fileName); $page->parseData($rawData, false, 0); - $page->fileName = $this->yellow->lookup->findFileFromTitle( - $page->get($this->yellow->config->get("webinterfaceMetaFilePrefix")), $page->get("title"), $fileName, - $this->yellow->config->get("contentDefaultFile"), $this->yellow->config->get("contentExtension")); - $page->location = $this->yellow->lookup->findLocationFromFile($page->fileName); - if($this->yellow->pages->find($page->location)) - { - preg_match("/^(.*?)(\d*)$/", $page->get("title"), $matches); - $titleText = $matches[1]; - $titleNumber = $matches[2]; - if(strempty($titleNumber)) { $titleNumber = 2; $titleText = $titleText.' '; } - for(; $titleNumber<=999; ++$titleNumber) + if($this->yellow->lookup->isFileLocation($location) || is_file($fileName)) + { + $page->fileName = $this->yellow->lookup->findFileFromTitle( + $page->get($this->yellow->config->get("webinterfaceMetaFilePrefix")), $page->get("title"), $fileName, + $this->yellow->config->get("contentDefaultFile"), $this->yellow->config->get("contentExtension")); + $page->location = $this->yellow->lookup->findLocationFromFile($page->fileName); + if($this->yellow->pages->find($page->location)) { - $page->rawData = $this->updateDataTitle($rawData, $titleText.$titleNumber); - $page->fileName = $this->yellow->lookup->findFileFromTitle( - $page->get($this->yellow->config->get("webinterfaceMetaFilePrefix")), $titleText.$titleNumber, $fileName, - $this->yellow->config->get("contentDefaultFile"), $this->yellow->config->get("contentExtension")); - $page->location = $this->yellow->lookup->findLocationFromFile($page->fileName); - if(!$this->yellow->pages->find($page->location)) { $ok = true; break; } + preg_match("/^(.*?)(\d*)$/", $page->get("title"), $matches); + $titleText = $matches[1]; + $titleNumber = $matches[2]; + if(strempty($titleNumber)) { $titleNumber = 2; $titleText = $titleText.' '; } + for(; $titleNumber<=999; ++$titleNumber) + { + $page->rawData = $this->updateDataTitle($rawData, $titleText.$titleNumber); + $page->fileName = $this->yellow->lookup->findFileFromTitle( + $page->get($this->yellow->config->get("webinterfaceMetaFilePrefix")), $titleText.$titleNumber, $fileName, + $this->yellow->config->get("contentDefaultFile"), $this->yellow->config->get("contentExtension")); + $page->location = $this->yellow->lookup->findLocationFromFile($page->fileName); + if(!$this->yellow->pages->find($page->location)) { $ok = true; break; } + } + if(!$ok) $page->error(500, "Page '".$page->get("title")."' can not be created!"); } - if(!$ok) $page->error(500, "Page '".$page->get("title")."' can not be created!"); } if(!$this->getUserPermission($page->location, $page->fileName)) $page->error(500, "Page '".$page->get("title")."' is not allowed!"); return $page; @@ -514,9 +496,14 @@ class YellowWebinterface $page->get($prefix), $page->get("title"), $fileName, $this->yellow->config->get("contentDefaultFile"), $this->yellow->config->get("contentExtension")); $page->location = $this->yellow->lookup->findLocationFromFile($page->fileName); - if($pageSource->location!=$page->location && $this->yellow->pages->find($page->location)) + if($pageSource->location != $page->location) { - $page->error(500, "Page '".$page->get("title")."' already exists!"); + if(!$this->yellow->lookup->isFileLocation($page->location)) + { + $page->error(500, "Page '".$page->get("title")."' is not allowed!"); + } else if($this->yellow->pages->find($page->location)) { + $page->error(500, "Page '".$page->get("title")."' already exists!"); + } } } }