SyntaxHighlighter Plugin ported from SyntaxHighlighter 1.5.1 created by Alex Gorbatchev.
Compatible with DokuWiki
2008-05-05, !Hogfather
This extension has not been updated in over 2 years. It may no longer be maintained or supported and may have compatibility issues.
Similar to code, code2, code3, highlightjs, jquery-syntax, syntaxhighlighter2, syntaxhighlighter3, syntaxhighlighter4
Search and install the plugin using the Extension Manager. Refer to Plugins on how to install plugins manually.
The project is hosted at GitHub. Public Git Repository
I was not able to get the JavaScript files to load properly via the Action Plugin. To get it to work, I had to modify the _tpl_metaheaders_action function in the inc\template.php file. The change I made was to use '></$tag>' as the closure tag instead of '/>'.
function _tpl_metaheaders_action($data){
foreach($data as $tag => $inst){
foreach($inst as $attr){
echo '<',$tag,' ',buildAttributes($attr);
if(isset($attr['_data'])){
if($tag == 'script' && $attr['_data']) {
$attr['_data'] = "<!--//--><![CDATA[//><!--\n".
$attr['_data'].
"\n//--><!]]>";
}
echo '>',$attr['_data'],'</',$tag,'>';
}else{
echo '></',$tag,'>';
}
echo "\n";
}
}
}
I have had the same problem. The problem seems to a bug of all the browsers except Opera, to cheat, instead of change dokuwiki's functions, you can add an empty “_data” parameter to the array you use to add the js file:
e.g.$event->data["script"][] = array ("type" => "text/javascript", "src" => DOKU_BASE."lib/plugins/syntaxhighlighter/Uncompressed/shCore.js", "_data" => "" );
in this way dokuwiki will render also the </$tag> and the problema is gone (at least for me…).
There needs to be a snippet of JavaScript at the end of the template to execute the HighlightAll function. I've placed the following code at the end of my lib/tpl/default/footer.html file. If someone can put this in the action.php script, this would be greatly appreciated. I do not know what action to trigger on to add the JavaScript snippet to the end of the template.
<script language="javascript">
dp.SyntaxHighlighter.ClipboardSwf = '/flash/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');
</script>
I used following solution
add tofunction register(Doku_Event_Handler $controller):
$controller->register_hook('TPL_ACT_RENDER', 'AFTER', $this, '_hookjsprocessing');
and add following function:
/** * Inject the SyntaxHightlighter javascript processing * * @author David Shin <[email protected]> * @param $event object target event * @param $param mixed event parameters passed from register_hook * */ function _hookjsprocessing (&$event, $param) { global $ID; global $INFO; //this ensures that code will be written only on base page //not on other inlined wiki pages (e.g. when using monobook template) if ($ID != $INFO["id"]) return; ptln(""); ptln("<script language='javascript'>"); ptln(" dp.SyntaxHighlighter.ClipboardSwf = '" .DOKU_BASE. "lib/plugins/syntaxhighlighter/Scripts/clipboard.swf';"); ptln(" dp.SyntaxHighlighter.HighlightAll('code');"); ptln("</script>"); }
with the code change suggested above no other code changes are required
hth Dominik
<code> some code </code>
<code python> some code </code>
<code firstline[10]:collapse> some code </code>
The options are passed together with the alias and are separated by a colon : character. This is how SyntaxHighlight is configured (Also I was too lazy to program it to use spaces instead of ':')
| Options | |
|---|---|
| lang | Language specified by the Language Alias. |
| nogutter | Will display no gutter. |
| nocontrols | Will display no controls at the top. |
| collapse | Will collapse the block by default. |
| firstline[value] | Will begin line count at value. Default value is 1. |
| showcolumns | Will show row columns in the first line. |
The options are passed together with the alias and are separated by a colon : character.
Warning: Do not use nocontrols and collapse together. You will not be able to expand the code
| Language | Aliases |
|---|---|
| C++ | cpp, c, c++ |
| C# | c#, c-sharp, csharp |
| CSS | css |
| Delphi | delphi, pascal |
| Java | java |
| Java Script | js, jscript, javascript |
| PHP | php |
| Python | py, python |
| Ruby | rb, ruby, rails, ror |
| Sql | sql |
| VB | vb, vb.net |
| XML/HTML | xml, html, xhtml, xslt |
Please refer to the language aliases page at Google Code for user contributed languages.
This can be accomplished by modifying the lib/plugins/syntaxhighlighter/action.php file.
lib/plugins/syntaxhighlighter/Uncompressed folder.lib/plugins/syntaxhighlighter/action.php file._hooksh function:$event->data["script"][] = array ("type" => "text/javascript", "src" => DOKU_BASE."lib/plugins/syntaxhighlighter/Uncompressed/shBrush{NewLanguage}.js" );
lib/plugins/syntaxhighlighter/action.php file._hooksh function for the language to be removed.