summaryrefslogtreecommitdiff
path: root/inc
diff options
context:
space:
mode:
authorChris Smith <chris.eureka@jalakai.co.uk>2008-11-19 15:07:58 +0100
committerChris Smith <chris.eureka@jalakai.co.uk>2008-11-19 15:07:58 +0100
commitfe9ec250a6558c8352a35b6537cdc30d6c9f5477 (patch)
tree47380d5a506ce55edac27e7b228cb9e292616c7f /inc
parent078467f9a746c4f129640c45b549b194de3fe7d2 (diff)
downloadrpg-fe9ec250a6558c8352a35b6537cdc30d6c9f5477.tar.gz
rpg-fe9ec250a6558c8352a35b6537cdc30d6c9f5477.tar.bz2
FS#630: allow $conf['useheading'] to individually apply to content links and/or navigation links
$conf['useheading'] values are now: - 0 : off, use page name in link text - 'content' : use first heading text for links in wiki page content - 'navigation' : use first heading text for links in non-page content, e.g. breadcrumps, backlinks, search results, etc. - 1 : use first heading text in all links (for backwards compatibility, any other values are mapped to 0 or 1 by empty() function.) $conf['useheading'] value should now be checked using the useHeading($linktype) function, where linktype can be "content" or "navigation" darcs-hash:20081119140758-f07c6-6e26456d50dcecc949fada31b0d4e72877fde1cc.gz
Diffstat (limited to 'inc')
-rw-r--r--inc/common.php4
-rw-r--r--inc/confutils.php31
-rw-r--r--inc/html.php8
-rw-r--r--inc/parser/metadata.php2
-rw-r--r--inc/parser/xhtml.php10
-rw-r--r--inc/parserutils.php3
-rw-r--r--inc/template.php8
7 files changed, 48 insertions, 18 deletions
diff --git a/inc/common.php b/inc/common.php
index faee93623..9f6920378 100644
--- a/inc/common.php
+++ b/inc/common.php
@@ -288,7 +288,7 @@ function breadcrumbs(){
// page names
$name = noNSorNS($ID);
- if ($conf['useheading']) {
+ if (useHeading('navigation')) {
// get page title
$title = p_get_first_heading($ID,true);
if ($title) {
@@ -1006,7 +1006,7 @@ function saveWikiText($id,$text,$summary,$minor=false){
io_saveFile($conf['cachedir'].'/purgefile',time());
// if useheading is enabled, purge the cache of all linking pages
- if($conf['useheading']){
+ if(useHeading('content')){
require_once(DOKU_INC.'inc/fulltext.php');
$pages = ft_backlinks($id);
foreach ($pages as $page) {
diff --git a/inc/confutils.php b/inc/confutils.php
index d735b8b82..a7799b9d4 100644
--- a/inc/confutils.php
+++ b/inc/confutils.php
@@ -205,5 +205,36 @@ function actionOK($action){
return !in_array($action,$disabled);
}
+/**
+ * check if headings should be used as link text for the specified link type
+ *
+ * @author Chris Smith <chris@jalakai.co.uk>
+ *
+ * @param string $linktype 'content'|'navigation', content applies to links in wiki text
+ * navigation applies to all other links
+ * @returns boolean true if headings should be used for $linktype, false otherwise
+ */
+function useHeading($linktype) {
+ static $useHeading = null;
+
+ if (is_null($useHeading)) {
+ global $conf;
+
+ if (!empty($conf['useheading'])) {
+ switch ($conf['useheading']) {
+ case 'content' : $useHeading['content'] = true; break;
+ case 'navigation' : $useHeading['navigation'] = true; break;
+ default:
+ $useHeading['content'] = true;
+ $useHeading['navigation'] = true;
+ }
+ } else {
+ $useHeading = array();
+ }
+ }
+
+ return (!empty($useHeading[$linktype]));
+}
+
//Setup VIM: ex: et ts=2 enc=utf-8 :
diff --git a/inc/html.php b/inc/html.php
index 8390a7b09..636c93a13 100644
--- a/inc/html.php
+++ b/inc/html.php
@@ -23,7 +23,7 @@ function html_wikilink($id,$name=NULL,$search=''){
$xhtml_renderer = new Doku_Renderer_xhtml();
}
- return $xhtml_renderer->internallink($id,$name,$search,true);
+ return $xhtml_renderer->internallink($id,$name,$search,true,'navigation');
}
/**
@@ -353,7 +353,7 @@ function html_search(){
$num = 1;
foreach($data as $id => $cnt){
print '<div class="search_result">';
- print html_wikilink(':'.$id,$conf['useheading']?NULL:$id,$regex);
+ print html_wikilink(':'.$id,useHeading('navigation')?NULL:$id,$regex);
print ': <span class="search_cnt">'.$cnt.' '.$lang['hits'].'</span><br />';
if($num < 15){ // create snippets for the first number of matches only #FIXME add to conf ?
print '<div class="search_snippet">'.ft_snippet($id,$regex).'</div>';
@@ -628,7 +628,7 @@ function html_recent($first=0){
)));
$form->addElement(form_makeCloseTag('a'));
- $form->addElement(html_wikilink(':'.$recent['id'],$conf['useheading']?NULL:$recent['id']));
+ $form->addElement(html_wikilink(':'.$recent['id'],useHeading('navigation')?NULL:$recent['id']));
$form->addElement(form_makeOpenTag('span', array('class' => 'sum')));
$form->addElement(' &ndash; '.htmlspecialchars($recent['sum']));
@@ -839,7 +839,7 @@ function html_backlinks(){
print '<ul class="idx">';
foreach($data as $blink){
print '<li><div class="li">';
- print html_wikilink(':'.$blink,$conf['useheading']?NULL:$blink);
+ print html_wikilink(':'.$blink,useHeading('navigation')?NULL:$blink);
print '</div></li>';
}
print '</ul>';
diff --git a/inc/parser/metadata.php b/inc/parser/metadata.php
index 640306f87..5994a4dd1 100644
--- a/inc/parser/metadata.php
+++ b/inc/parser/metadata.php
@@ -427,7 +427,7 @@ class Doku_Renderer_metadata extends Doku_Renderer {
$isImage = false;
if (is_null($title)){
- if ($conf['useheading'] && $id){
+ if (useHeading('content') && $id){
$heading = p_get_first_heading($id,false);
if ($heading) return $heading;
}
diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php
index 96afd1593..4fb6cb548 100644
--- a/inc/parser/xhtml.php
+++ b/inc/parser/xhtml.php
@@ -472,12 +472,12 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
/**
* Render an internal Wiki Link
*
- * $search and $returnonly are not for the renderer but are used
+ * $search,$returnonly & $linktype are not for the renderer but are used
* elsewhere - no need to implement them in other renderers
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
- function internallink($id, $name = NULL, $search=NULL,$returnonly=false) {
+ function internallink($id, $name = NULL, $search=NULL,$returnonly=false,$linktype='content') {
global $conf;
global $ID;
// default name is based on $id as given
@@ -485,7 +485,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
// now first resolve and clean up the $id
resolve_pageid(getNS($ID),$id,$exists);
- $name = $this->_getLinkTitle($name, $default, $isImage, $id);
+ $name = $this->_getLinkTitle($name, $default, $isImage, $id, $linktype);
if ( !$isImage ) {
if ( $exists ) {
$class='wikilink1';
@@ -1026,12 +1026,12 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
*
* @author Harry Fuecks <hfuecks@gmail.com>
*/
- function _getLinkTitle($title, $default, & $isImage, $id=NULL) {
+ function _getLinkTitle($title, $default, & $isImage, $id=NULL, $linktype='content') {
global $conf;
$isImage = false;
if ( is_null($title) || trim($title)=='') {
- if ($conf['useheading'] && $id) {
+ if (useHeading($linktype) && $id) {
$heading = p_get_first_heading($id,true);
if ($heading) {
return $this->_xmlEntities($heading);
diff --git a/inc/parserutils.php b/inc/parserutils.php
index 95d9647ff..ce4e8e995 100644
--- a/inc/parserutils.php
+++ b/inc/parserutils.php
@@ -618,8 +618,7 @@ function & p_get_renderer($mode) {
* @author Andreas Gohr <andi@splitbrain.org>
*/
function p_get_first_heading($id, $render=true){
- global $conf;
- return $conf['useheading'] ? p_get_metadata($id,'title',$render) : null;
+ return p_get_metadata($id,'title',$render);
}
/**
diff --git a/inc/template.php b/inc/template.php
index f5f2e7760..690f4ff41 100644
--- a/inc/template.php
+++ b/inc/template.php
@@ -860,7 +860,7 @@ function tpl_youarehere($sep=' &raquo; '){
echo '<span class="bchead">'.$lang['youarehere'].': </span>';
// always print the startpage
- $title = p_get_first_heading($conf['start']);
+ $title = useHeading('navigation') ? p_get_first_heading($conf['start']) : $conf['start'];
if(!$title) $title = $conf['start'];
tpl_link(wl($conf['start']),hsc($title),'title="'.$conf['start'].'"');
@@ -875,7 +875,7 @@ function tpl_youarehere($sep=' &raquo; '){
// output
echo $sep;
if($exists){
- $title = p_get_first_heading($page);
+ $title = useHeading($page) ? p_get_first_heading($page) : $page;
if(!$title) $title = $parts[$i];
tpl_link(wl($page),hsc($title),'title="'.$page.'"');
}else{
@@ -889,7 +889,7 @@ function tpl_youarehere($sep=' &raquo; '){
if($page == $conf['start']) return;
echo $sep;
if(page_exists($page)){
- $title = p_get_first_heading($page);
+ $title = useHeading($page) ? p_get_first_heading($page) : $page;
if(!$title) $title = $parts[$i];
tpl_link(wl($page),hsc($title),'title="'.$page.'"');
}else{
@@ -989,7 +989,7 @@ function tpl_pagetitle($id=null, $ret=false){
}
$name = $id;
- if ($conf['useheading']) {
+ if (useHeading('navigation')) {
$title = p_get_first_heading($id);
if ($title) $name = $title;
}