aboutsummaryrefslogtreecommitdiff
path: root/app/class
diff options
context:
space:
mode:
authorvincent-peugnet <v.peugnet@free.fr>2018-11-12 12:03:39 +0100
committervincent-peugnet <v.peugnet@free.fr>2018-11-12 12:03:39 +0100
commit0f44c6d918a2932b68019c02de5bc55e7057600a (patch)
tree304bc817aa158582a3eab32ee81e06fd0b7e0829 /app/class
parent89b05effb2eb45382762fcfcfae2373b7754caa7 (diff)
downloadwcms-0f44c6d918a2932b68019c02de5bc55e7057600a.tar.gz
wcms-0f44c6d918a2932b68019c02de5bc55e7057600a.zip
wiki-url
Diffstat (limited to 'app/class')
-rw-r--r--app/class/config.php6
-rw-r--r--app/class/controller.php5
-rw-r--r--app/class/controllerart.php2
-rw-r--r--app/class/modelrender.php32
4 files changed, 39 insertions, 6 deletions
diff --git a/app/class/config.php b/app/class/config.php
index 39c741a..bfc0c9e 100644
--- a/app/class/config.php
+++ b/app/class/config.php
@@ -177,9 +177,11 @@ abstract class Config
self::$basepath = strip_tags($basepath);
}
- public static function setroute404(string $id)
+ public static function setroute404($id)
{
- self::$route404 = idclean($id);
+ if(is_string($id)) {
+ self::$route404 = idclean($id);
+ }
}
diff --git a/app/class/controller.php b/app/class/controller.php
index 1c3fee5..f7a3bd6 100644
--- a/app/class/controller.php
+++ b/app/class/controller.php
@@ -96,7 +96,10 @@ class Controller
$this->redirect($this->router->generate($route, $vars));
}
-
+ public function uart($id)
+ {
+ return $this->router->generate('artread/', ['art' => $id]);
+ }
}
diff --git a/app/class/controllerart.php b/app/class/controllerart.php
index bec4b1d..e385201 100644
--- a/app/class/controllerart.php
+++ b/app/class/controllerart.php
@@ -12,7 +12,7 @@ class Controllerart extends Controller
parent::__construct($router);
$this->artmanager = new Modelart();
- $this->renderengine = new Modelrender();
+ $this->renderengine = new Modelrender($router);
}
diff --git a/app/class/modelrender.php b/app/class/modelrender.php
index ed50893..0951537 100644
--- a/app/class/modelrender.php
+++ b/app/class/modelrender.php
@@ -2,12 +2,21 @@
class Modelrender extends Modelart
{
+ protected $router;
+
const SUMMARY = '%SUMMARY%';
- public function __construct()
+ public function __construct($router)
{
parent::__construct();
+
+ $this->router = $router;
+ }
+
+ public function uart($id)
+ {
+ return $this->router->generate('artread/', ['art' => $id]);
}
public function renderhead(Art2 $art)
@@ -142,7 +151,7 @@ class Modelrender extends Modelart
$text = str_replace(self::SUMMARY, $this->sumparser($text), $text);
- $text = str_replace('href="=', 'href="?id=', $text);
+ $text = $this->wikiurl($text);
$text = $this->tooltip($art->linkfrom('array'), $text);
@@ -161,6 +170,25 @@ class Modelrender extends Modelart
return $text;
}
+ public function wikiurl(string $text)
+ {
+ $rend = $this;
+ $artlist = [];
+ $text = preg_replace_callback(
+ '%\[([\w-]+)\]%',
+ function ($matches) use ($rend) {
+ $matchart = $rend->get($matches[1]);
+ if (!$matchart) {
+ return '<a href="' . $rend->uart($matches[1]) . '">' . $matches[1] . '</a>';
+ } else {
+ return '<a href="' . $rend->uart($matches[1]) . '" title="' . $matchart->description() . '">' . $matchart->title() . '</a>';
+ }
+ },
+ $text
+ );
+ return $text;
+ }
+
public function markdown($text)
{