Browse Source

made template functions more flexible

* attention: incompatible to previous version!
* introduced _tpl_action() (wrapper similar to tpl_action())
* improved discussion and user page functions
  * made them work independent from config
  * added full control to how the page links are built (with placeholders @ID@ and @USER@)
* config option changes: removed 'discussNSreverse', renamed 'discussionNS' and 'userNS' to 'discussionPage' and 'userPage'
master
Anika Henke 14 years ago
parent
commit
afe47fae3b
  1. 5
      conf/default.php
  2. 5
      conf/metadata.php
  3. 5
      lang/en/settings.php
  4. 8
      main.php
  5. 53
      tpl_functions.php

5
conf/default.php

@ -5,8 +5,7 @@
*/
$conf['tagline'] = 'This is the tagline - explaining what this site is about.';
$conf['discussionNS'] = 'discussion';
$conf['discussNSreverse'] = 0;
$conf['userNS'] = 'user';
$conf['discussionPage'] = 'discussion:@ID@';
$conf['userPage'] = 'user:@USER@:';
$conf['sidebarID'] = 'sidebar';
$conf['hideTools'] = 0;

5
conf/metadata.php

@ -5,8 +5,7 @@
*/
$meta['tagline'] = array('string');
$meta['discussionNS'] = array('string');
$meta['discussNSreverse'] = array('onoff');
$meta['userNS'] = array('string');
$meta['discussionPage'] = array('string');
$meta['userPage'] = array('string');
$meta['sidebarID'] = array('string');
$meta['hideTools'] = array('onoff');

5
lang/en/settings.php

@ -5,8 +5,7 @@
*/
$lang['tagline'] = 'Tagline';
$lang['discussionNS'] = 'Discussion namespace (leave empty to disable discussions)';
$lang['discussNSreverse'] = 'Reverse discussion namespace? (e.g. "foo:bar:discussion" instead of "discussion:foo:bar")';
$lang['userNS'] = 'User namespace (leave empty to disable user pages)';
$lang['discussionPage'] = 'Discussion page (leave empty to disable discussions)';
$lang['userPage'] = 'User page (leave empty to disable user pages)';
$lang['sidebarID'] = 'page name of page included in sidebar';
$lang['hideTools'] = 'Hide tools when not logged in?';

8
main.php

@ -66,9 +66,7 @@ $showTools = !tpl_getConf('hideTools') || ( tpl_getConf('hideTools') && $_SERVER
echo '</li>';
}
tpl_action('admin', 1, 'li');
if (tpl_getConf('userNS')) {
_tpl_userpage(tpl_getConf('userNS'),1,'li');
}
_tpl_action('userpage', 1, 'li');
tpl_action('profile', 1, 'li');
tpl_action('login', 1, 'li');
?>
@ -138,9 +136,7 @@ $showTools = !tpl_getConf('hideTools') || ( tpl_getConf('hideTools') && $_SERVER
<ul>
<?php
tpl_action('edit', 1, 'li');
if (tpl_getConf('discussionNS')) {
_tpl_discussion(tpl_getConf('discussionNS'),1,'li',tpl_getConf('discussNSreverse'));
}
_tpl_action('discussion', 1, 'li');
tpl_action('history', 1, 'li');
tpl_action('backlink', 1, 'li');
tpl_action('subscribe', 1, 'li');

53
tpl_functions.php

@ -16,31 +16,26 @@ if (!defined('DOKU_INC')) die();
*
* @author Anika Henke <anika@selfthinker.org>
*/
function _tpl_discussion($discussNS='discussion',$link=0,$wrapper=0,$reverse=0) {
function _tpl_discussion($discussionPage,$title,$backTitle,$link=0,$wrapper=0) {
global $ID;
if ($reverse) {
$discussPage = $ID.':'.$discussNS;
$isDiscussPage = substr($ID,-strlen($discussNS),strlen($discussNS))==$discussNS;
$backID = substr($ID,0,-strlen($discussNS));
} else {
$discussPage = $discussNS.':'.$ID;
$isDiscussPage = substr($ID,0,strlen($discussNS))==$discussNS;
$backID = strstr($ID,':');
}
$discussPage = str_replace('@ID@',$ID,$discussionPage);
$discussPageRaw = str_replace('@ID@','',$discussionPage);
$isDiscussPage = strpos($ID,$discussPageRaw)!==false;
$backID = str_replace($discussPageRaw,'',$ID);
if ($wrapper) echo "<$wrapper>";
if($isDiscussPage) {
if ($isDiscussPage) {
if ($link)
tpl_pagelink($backID,tpl_getLang('back_to_article'));
tpl_pagelink($backID,$backTitle);
else
echo html_btn('back2article',$backID,'',array(),0,0,tpl_getLang('back_to_article'));
echo html_btn('back2article',$backID,'',array(),0,0,$backTitle);
} else {
if ($link)
tpl_pagelink($discussPage,tpl_getLang('discussion'));
tpl_pagelink($discussPage,$title);
else
echo html_btn('discussion',$discussPage,'',array(),0,0,tpl_getLang('discussion'));
echo html_btn('discussion',$discussPage,'',array(),0,0,$title);
}
if ($wrapper) echo "</$wrapper>";
@ -51,22 +46,42 @@ function _tpl_discussion($discussNS='discussion',$link=0,$wrapper=0,$reverse=0)
*
* @author Anika Henke <anika@selfthinker.org>
*/
function _tpl_userpage($userNS='user',$link=0,$wrapper=false) {
function _tpl_userpage($userPage,$title,$link=0,$wrapper=0) {
if (!$_SERVER['REMOTE_USER']) return;
global $conf;
$userPage = $userNS.':'.$_SERVER['REMOTE_USER'].':'.$conf['start'];
$userPage = str_replace('@USER@',$_SERVER['REMOTE_USER'],$userPage);
if ($wrapper) echo "<$wrapper>";
if ($link)
tpl_pagelink($userPage,tpl_getLang('userpage'));
tpl_pagelink($userPage,$title);
else
echo html_btn('userpage',$userPage,'',array(),0,0,tpl_getLang('userpage'));
echo html_btn('userpage',$userPage,'',array(),0,0,$title);
if ($wrapper) echo "</$wrapper>";
}
/**
* Wrapper around custom template actions
*
* @author Anika Henke <anika@selfthinker.org>
*/
function _tpl_action($type,$link=0,$wrapper=0) {
switch ($type) {
case 'discussion':
if (tpl_getConf('discussionPage')) {
_tpl_discussion(tpl_getConf('discussionPage'),tpl_getLang('discussion'),tpl_getLang('back_to_article'),$link,$wrapper);
}
break;
case 'userpage':
if (tpl_getConf('userPage')) {
_tpl_userpage(tpl_getConf('userPage'),tpl_getLang('userpage'),$link,$wrapper);
}
break;
}
}
/**
* Use favicon.ico from data/media root directory if it exists, otherwise use
* the one in the template's image directory.

Loading…
Cancel
Save