From c5c7ebff04aef21ce8952e259b49c7448e0242bd Mon Sep 17 00:00:00 2001 From: Matthew Dawson Date: Wed, 1 Sep 2010 14:50:04 +0200 Subject: [PATCH] Improved the wiki links to have better descripting links. --- src/IDF/Template/Markdown.php | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/IDF/Template/Markdown.php b/src/IDF/Template/Markdown.php index feb8512..3054ca8 100644 --- a/src/IDF/Template/Markdown.php +++ b/src/IDF/Template/Markdown.php @@ -46,25 +46,32 @@ class IDF_Template_Markdown extends Pluf_Template_Tag array($this, 'callbackEmbeddedDoc'), $text); } + // Replace [Page]([[PageName]]) with corresponding link to the page, with link text being Page. + $text = preg_replace_callback('#\[([^\]]+)\]\(\[\[([A-Za-z0-9\-]+)\]\]\)#im', + array($this, 'callbackWikiPage'), + $text); // Replace [[PageName]] with corresponding link to the page. $text = preg_replace_callback('#\[\[([A-Za-z0-9\-]+)\]\]#im', - array($this, 'callbackWikiPage'), + array($this, 'callbackWikiPageNoName'), $text); $filter = new IDF_Template_MarkdownPrefilter(); echo $filter->go(Pluf_Text_MarkDown_parse($text)); } + function callbackWikiPageNoName($m) + { + $m[2] = $m[1]; //Set the link text to be the same as the page name. + return $this->callbackWikiPage($m); + } + function callbackWikiPage($m) { $sql = new Pluf_SQL('project=%s AND title=%s', - array($this->project->id, $m[1])); + array($this->project->id, $m[2])); $pages = Pluf::factory('IDF_WikiPage')->getList(array('filter'=>$sql->gen())); - if ($pages->count() != 1 and !$this->request->rights['hasWikiAccess']) { - return $m[0]; - } if ($pages->count() != 1 and $this->request->rights['hasWikiAccess'] and !$this->request->user->isAnonymous()) { - return ' '.$m[1].''; + return ' '.$m[1].''; } if (!$this->request->rights['hasWikiAccess'] or $pages->count() == 0) { return $m[1];