commit b7821909bb8651a9dc70b4f9384dd6f2a9c90e48
parent 3c0fc3d017106d7d29e0d49c97a1e8e07d5c2696
Author: markseu <mark2011@mayberg.se>
Date: Tue, 19 May 2015 16:15:24 +0200
Core update (Nikke remix)
Diffstat:
3 files changed, 77 insertions(+), 53 deletions(-)
diff --git a/README.md b/README.md
@@ -1,4 +1,4 @@
-Yellow 0.5.10
+Yellow 0.5.11
=============
[](http://datenstrom.se/yellow)
diff --git a/system/core/core.php b/system/core/core.php
@@ -5,7 +5,7 @@
// Yellow main class
class Yellow
{
- const Version = "0.5.10";
+ const Version = "0.5.11";
var $page; //current page
var $pages; //pages from file system
var $files; //files from file system
@@ -268,6 +268,12 @@ class Yellow
return $this->pages->requestHandler;
}
+ // Return snippet arguments
+ function getSnippetArgs()
+ {
+ return $this->pages->snippetArgs;
+ }
+
// Return static file from cache if available
function getStaticFileFromCache($location, $fileName, $cacheable, $statusCode)
{
@@ -333,41 +339,10 @@ class Yellow
return $statusCode;
}
- // Execute template
- function template($name)
- {
- $fileNameTemplate = $this->config->get("templateDir")."$name.html";
- if(is_file($fileNameTemplate))
- {
- $this->page->setLastModified(filemtime($fileNameTemplate));
- global $yellow;
- require($fileNameTemplate);
- } else {
- $this->page->error(500, "Template '$name' does not exist!");
- echo "Template error<br/>\n";
- }
- }
-
// Execute snippet
function snippet($name, $args = NULL)
{
- $fileNameSnippet = $this->config->get("snippetDir")."$name.php";
- if(is_file($fileNameSnippet))
- {
- $this->page->setLastModified(filemtime($fileNameSnippet));
- $this->pages->snippetArgs = func_get_args();
- global $yellow;
- require($fileNameSnippet);
- } else {
- $this->page->error(500, "Snippet '$name' does not exist!");
- echo "Snippet error<br/>\n";
- }
- }
-
- // Return snippet arguments
- function getSnippetArgs()
- {
- return $this->pages->snippetArgs;
+ $this->page->parseSnippet(func_get_args());
}
}
@@ -555,6 +530,13 @@ class YellowPage
if(!is_null($output)) break;
}
}
+ if(is_null($output) && $name=="snippet" && $typeShortcut && !$this->parserSafeMode)
+ {
+ ob_start();
+ $this->parseSnippet($this->yellow->toolbox->getTextArgs($text));
+ $output = ob_get_contents();
+ ob_end_clean();
+ }
if(defined("DEBUG") && DEBUG>=3 && !empty($name)) echo "YellowPage::parseContentBlock name:$name shortcut:$typeShortcut<br/>\n";
return $output;
}
@@ -573,7 +555,7 @@ class YellowPage
if(is_null($this->outputData))
{
ob_start();
- $this->yellow->template($this->get("template"));
+ $this->parseTemplate($this->get("template"));
$this->outputData = ob_get_contents();
ob_end_clean();
}
@@ -606,6 +588,37 @@ class YellowPage
if($this->isExisting("pageClean")) $this->page->outputData = NULL;
}
+ // Parse template
+ function parseTemplate($name)
+ {
+ $fileNameTemplate = $this->yellow->config->get("templateDir")."$name.html";
+ if(is_file($fileNameTemplate))
+ {
+ $this->setLastModified(filemtime($fileNameTemplate));
+ global $yellow;
+ require($fileNameTemplate);
+ } else {
+ $this->error(500, "Template '$name' does not exist!");
+ echo "Template error<br/>\n";
+ }
+ }
+
+ // Parse snippet
+ function parseSnippet($args)
+ {
+ list($name) = $this->yellow->pages->snippetArgs = $args;
+ $fileNameSnippet = $this->yellow->config->get("snippetDir")."$name.php";
+ if(is_file($fileNameSnippet))
+ {
+ $this->setLastModified(filemtime($fileNameSnippet));
+ global $yellow;
+ require($fileNameSnippet);
+ } else {
+ $this->error(500, "Snippet '$name' does not exist!");
+ echo "Snippet error<br/>\n";
+ }
+ }
+
// Set page meta data
function set($key, $value)
{
@@ -650,6 +663,18 @@ class YellowPage
return $text;
}
+ // Return page custom block, HTML encoded
+ function getContentBlock($text)
+ {
+ $output = NULL;
+ if(preg_match("/\[(\w+)\s+(.*?)\]/", $text, $matches))
+ {
+ $output = $this->parseContentBlock($matches[1], $matches[2], true);
+ }
+ if(is_null($output)) $output = htmlspecialchars($text, ENT_NOQUOTES);
+ return $output;
+ }
+
// Return parent page relative to current page, NULL if none
function getParent()
{
@@ -712,10 +737,9 @@ class YellowPage
}
// Return page extra HTML data
- function getExtra($name = "")
+ function getExtra($name)
{
$output = "";
- if(empty($name)) list($name) = $this->yellow->getSnippetArgs();
foreach($this->yellow->plugins->plugins as $key=>$value)
{
if(method_exists($value["obj"], "onExtra")) $output .= $value["obj"]->onExtra($name);
@@ -886,6 +910,18 @@ class YellowPageCollection extends ArrayObject
return $this;
}
+ // Filter page collection by file name
+ function match($regex = "/.*/")
+ {
+ $array = array();
+ foreach($this->getArrayCopy() as $page)
+ {
+ if(preg_match($regex, basename($page->fileName))) array_push($array, $page);
+ }
+ $this->exchangeArray($array);
+ return $this;
+ }
+
// Sort page collection by meta data
function sort($key, $ascendingOrder = true)
{
@@ -901,18 +937,6 @@ class YellowPageCollection extends ArrayObject
return $this;
}
- // Filter page collection by file
- function match($regex = "/.*/")
- {
- $array = array();
- foreach($this->getArrayCopy() as $page)
- {
- if(preg_match($regex, basename($page->fileName))) array_push($array, $page);
- }
- $this->exchangeArray($array);
- return $this;
- }
-
// Merge page collection
function merge($input)
{
@@ -2481,7 +2505,8 @@ class YellowToolbox
// Return arguments from text string
function getTextArgs($text, $optional = "-")
{
- $tokens = str_getcsv(trim($text), ' ', '"');
+ $text = preg_replace("/\s+/s", " ", trim($text));
+ $tokens = str_getcsv($text, ' ', '"');
foreach($tokens as $key=>$value) if($value == $optional) $tokens[$key] = "";
return $tokens;
}
diff --git a/system/plugins/markdown.php b/system/plugins/markdown.php
@@ -5,7 +5,7 @@
// Markdown plugin
class YellowMarkdown
{
- const Version = "0.5.1";
+ const Version = "0.5.2";
var $yellow; //access to API
// Handle initialisation
@@ -82,8 +82,7 @@ class YellowMarkdownParser extends MarkdownExtraParser
// Handle shortcuts
function _doAutoLinks_shortcut_callback($matches)
{
- $text = preg_replace("/\s+/s", " ", $matches[2]);
- $output = $this->page->parseContentBlock($matches[1], $text, true);
+ $output = $this->page->parseContentBlock($matches[1], $matches[2], true);
if(is_null($output)) $output = htmlspecialchars($matches[0], ENT_NOQUOTES);
return substr($output, 0, 4)=="<div" ? $this->hashBlock($output) : $this->hashPart($output);
}