mikuli.cz

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

commit f98a98be1a82c48e3a81f33f26c8dc4295fcee9a
parent 7867b1fe4150791bafc0cdd5045c60f30a53615f
Author: markseu <mark2011@mayberg.se>
Date:   Sat, 30 May 2015 17:25:27 +0200

Core update (better sidebar)

Diffstat:
MREADME.md | 2+-
Msystem/core/core.php | 46+++++++++++++++++++++++++++++++++++++++++++++-
Msystem/themes/snippets/content-sidebar.php | 1+
3 files changed, 47 insertions(+), 2 deletions(-)

diff --git a/README.md b/README.md @@ -1,4 +1,4 @@ -Yellow 0.5.17 +Yellow 0.5.18 ============= [![Yellow](https://raw.githubusercontent.com/wiki/datenstrom/yellow/images/yellow.jpg)](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.17"; + const Version = "0.5.18"; var $page; //current page var $pages; //pages from file system var $files; //files from file system @@ -363,6 +363,7 @@ class YellowPage var $headerData; //response header var $outputData; //response output var $pages; //page collection + var $relations; //page relations var $parser; //content parser var $parserData; //content data of page var $parserSafeMode; //page is parsed in safe mode? (boolean) @@ -378,6 +379,7 @@ class YellowPage $this->metaData = array(); $this->headerData = array(); $this->pages = new YellowPageCollection($yellow); + $this->relations = array(); } // Set request information @@ -707,6 +709,18 @@ class YellowPage return $this->pages; } + // Set page relation + function setPage($type, $page) + { + $page->relations[$type] = $this; + } + + // Return related page + function getPage($type) + { + return !is_null($this->relations[$type]) ? $this->relations[$type] : $this; + } + // Return absolute page location function getLocation() { @@ -923,6 +937,36 @@ class YellowPageCollection extends ArrayObject $this->exchangeArray($array); return $this; } + + // Sort page collection by meta data similarity + function similar($page, $ascendingOrder = false) + { + $location = $page->location; + $keywords = $page->get("keywords").",".$page->get("tag").",".$page->get("author"); + $tokens = array_unique(array_filter(explode(',', $keywords), "strlen")); + if(!empty($tokens)) + { + $array = array(); + foreach($this->getArrayCopy() as $page) + { + $searchScore = 0; + foreach($tokens as $token) + { + if(stristr($page->get("title"), $token)) $searchScore += 10; + if(stristr($page->get("tag"), $token)) $searchScore += 5; + if(stristr($page->get("author"), $token)) $searchScore += 2; + } + if($page->location != $location) + { + $page->set("searchscore", $searchScore); + array_push($array, $page); + } + } + $this->exchangeArray($array); + $this->sort("searchscore", $ascendingOrder); + } + return $this; + } // Merge page collection function merge($input) diff --git a/system/themes/snippets/content-sidebar.php b/system/themes/snippets/content-sidebar.php @@ -2,6 +2,7 @@ <div class="content sidebar"> <?php $location = $yellow->lookup->getDirectoryLocation($yellow->page->location).$yellow->page->get("sidebar"); ?> <?php if($page = $yellow->pages->find($location)): ?> +<?php $yellow->page->setPage("main", $page) ?> <?php $yellow->page->setLastModified($page->getModified()) ?> <?php echo $page->getContent() ?> <?php else: ?>