1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
16: class Horde_Core_Mime_Viewer_Syntaxhighlighter extends Horde_Mime_Viewer_Syntaxhighlighter
17: {
18: protected static $_shLoaded = false;
19: protected static $_shBrushes = array();
20:
21: 22: 23: 24: 25:
26: protected function _renderInline()
27: {
28:
29: $mimeType = $this->_mimepart->getType();
30: $language = $this->_mimeTypeToLanguage($mimeType);
31: $brush = $this->_languageToBrush($language);
32:
33: if (!self::$_shLoaded) {
34: Horde::addScriptFile('syntaxhighlighter/scripts/shCore.js', 'horde', true);
35: Horde::addInlineScript(array(
36: 'SyntaxHighlighter.defaults[\'toolbar\'] = false',
37: 'SyntaxHighlighter.highlight()',
38: ), 'dom');
39: self::$_shLoaded = true;
40:
41: $sh_js_fs = $this->getConfigParam('registry')->get('jsfs', 'horde') . '/syntaxhighlighter/styles/';
42: $sh_js_uri = Horde::url($this->getConfigParam('registry')->get('jsuri', 'horde'), false, -1) . '/syntaxhighlighter/styles/';
43:
44: $css = $GLOBALS['injector']->getInstance('Horde_Themes_Css');
45: $css->addStylesheet($sh_js_fs . 'shCoreEclipse.css', $sh_js_uri . 'shCoreEclipse.css');
46: $css->addStylesheet($sh_js_fs . 'shThemeEclipse.css', $sh_js_uri . 'shThemeEclipse.css');
47: }
48:
49: if (empty(self::$_shBrushes[$brush])) {
50: Horde::addScriptFile('syntaxhighlighter/scripts/shBrush' . $brush . '.js', 'horde', true);
51: self::$_shBrushes[$brush] = true;
52: }
53:
54: $results = '<pre class="brush: ' . $language . '; toolbar: false;">' . htmlspecialchars(Horde_String::convertCharset($this->_mimepart->getContents(), $this->_mimepart->getCharset(), $this->getConfigParam('charset')), ENT_QUOTES, $this->getConfigParam('charset')) . '</pre>';
55: return $this->_renderReturn(
56: $results,
57: 'text/html; charset=' . $this->getConfigParam('charset')
58: );
59: }
60: }
61: