Für die Nachwelt und diejenigen, die Verbesserungsvorschläge haben einmal, wie ich vorgegangen bin:
includes/message_parser.php geöffnet
Code: Alles auswählen
'email' => array('bbcode_id' => 10, 'regexp' => array('#\[email=?(.*?)?\](.*?)\[/email\]#ise' => "\$this->validate_email('\$1', '\$2')")),
gesucht und danach eingefügt:
Code: Alles auswählen
'wiki' => array('bbcode_id' => 99, 'regexp' => array('#\[wiki(=([a-zA-Z0-9-+.,_:]+))?\](.*)\[/wiki\]#iUe' => "\$this->bbcode_wiki('\$2', '\$3')")),
Code: Alles auswählen
/**
* Validate url
*
* @param string $var1 optional url parameter for url bbcode: [url(=$var1)]$var2[/url]
* @param string $var2 url bbcode content: [url(=$var1)]$var2[/url]
*/
function validate_url($var1, $var2)
gesucht und davor eingefügt:
Code: Alles auswählen
/**
* bbcode_wiki
*/
function bbcode_wiki($var1, $var2)
{
global $config;
$id = ($var1) ? $var1 : $var2;
$id = trim($id);
if(!$config['wiki_bbcode_enabled'] || !$id)
{
return '[wiki' . (($var1) ? '=' . $var1 : '') . ']' . $var2 . '[/wiki]';
}
$this->parsed_items['wiki']++;
return ($var1) ? '[wiki=' . $this->bbcode_specialchars($id) . ':' . $this->bbcode_uid . ']' . $var2 . '[/wiki:' . $this->bbcode_uid . ']' : '[wiki:' . $this->bbcode_uid . ']' . $this->bbcode_specialchars($id) . '[/wiki:' . $this->bbcode_uid . ']';
}
dann includes/bbcode.php geöffnet und
gesucht und davor eingefügt:
Code: Alles auswählen
case 99:
global $phpbb_root_path, $phpEx, $config;
include($phpbb_root_path . 'includes/functions_wiki.' . $phpEx);
$this->bbcode_cache[$bbcode_id] = array(
'preg' => array(
'#\[wiki:$uid\]((.*?))\[/wiki:$uid\]#se' => "\wiki_second_pass_replace('\$1')",
'#\[wiki=([^\[]+?):$uid\](.*?)\[/wiki:$uid\]#se' => "\wiki_second_pass_replace('\$1','\$2')",
)
);
break;
und in includes/functions_wiki.php nun die Funktion wiki_second_pass_replace() eingefügt:
Code: Alles auswählen
function wiki_second_pass_replace($var1, $var2='')
{
global $config, $user;
if(defined('CORRECT_WIKI_PATH') && $config['wiki_bbcode_enabled'] && $config['wikimod_activate'])
{
list($id, $hash) = explode('#',$var1,2);
$id = cleanID($id);
$desc = ($var2) ? $var2 : $id;
$title = $id;
$link = wl($id,null,null,null,true);
$link .= ($hash) ? '#' . $hash : '';
if(useHeading('content') && p_get_first_heading($id))
{
$title = p_get_first_heading($id);
if(!$var2) $desc = $title;
}
if(page_exists($id))
{
$style = 'style="color: #090 !important"';
}
else
{
$style = 'style="color: #f30 !important"';
}
return '<a ' . $style . ' href="' . $link . '" title="' . $title . '">' . $desc . '</a>';
}
return "[wiki" . (($var2) ? "=" . $var1 : '') . "]" . (($var2) ? $var2 : $var1) . "[/wiki]";
}
Vielleicht ist das Ganze ja zu umständlich. Ich lasse mich gerne belehren (vielleicht Methoden zur Klasse bbcode hinzufügen über functions_wiki.php?). Aber ich denke, dass diese Methode Funktionalität und Dynamik gewährleistet.
Gruß faraday