⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serendipity_event_textile.php

📁 中国源码站下载
💻 PHP
字号:
<?php # $Id: serendipity_event_textile.php,v 1.3.4.1 2004/04/13 10:01:14 garvinhicking Exp $/*******************************************************汉化作者:youngong(http://youngong.tk)                **如果有问题,欢迎和作者及汉化作者联系。                **youngong@163.com                                     ********************************************************/require_once S9Y_INCLUDE_PATH . 'plugins/serendipity_event_textile/textile.php';switch ($serendipity['lang']) {    case 'de':        @define('PLUGIN_EVENT_TEXTILE_NAME',     'Textformatierung: Textile');        @define('PLUGIN_EVENT_TEXTILE_DESC',     'Textile-Formatierung durchf黨ren');        @define('PLUGIN_EVENT_TEXTILE_TRANSFORM', '<a href="http://www.textism.com/tools/textile/">Textile</a>-Formatierung erlaubt');        break;    case 'cn':        @define('PLUGIN_EVENT_TEXTILE_NAME', '标记: Textile');        @define('PLUGIN_EVENT_TEXTILE_DESC', '通过Textile转换器解析所有输出');        @define('PLUGIN_EVENT_TEXTILE_TRANSFORM', '<a href="http://www.textism.com/tools/textile/">Textile</a>-格式标准');        break;            case 'en':    default:        @define('PLUGIN_EVENT_TEXTILE_NAME', 'Markup: Textile');        @define('PLUGIN_EVENT_TEXTILE_DESC', 'Parse all output through the Textile converter');        @define('PLUGIN_EVENT_TEXTILE_TRANSFORM', '<a href="http://www.textism.com/tools/textile/">Textile</a>-formatting allowed');        break;}class serendipity_event_textile extends serendipity_event{    function introspect(&$propbag)    {        global $serendipity;        $propbag->add('name',          PLUGIN_EVENT_TEXTILE_NAME);        $propbag->add('description',   PLUGIN_EVENT_TEXTILE_DESC);        $propbag->add('event_hooks', array('frontend_display' => true, 'frontend_comment' => true));        $propbag->add('preserve_tags',          array(            'php',            'output',            'name'          )        );        $this->markup_elements = array(            array(              'name'     => ENTRY_BODY,              'element'  => 'body',            ),            array(              'name'     => EXTENDED_BODY,              'element'  => 'extended',            ),            array(              'name'     => COMMENT,              'element'  => 'comment',            ),            array(              'name'     => HTML_NUGGET,              'element'  => 'html_nugget',            )        );        $conf_array = array();        foreach($this->markup_elements as $element) {            $conf_array[] = $element['name'];        }        $propbag->add('configuration', $conf_array);    }    function generate_content(&$title) {        $title = PLUGIN_EVENT_TEXTILE_NAME;    }    function introspect_config_item($name, &$propbag)    {        $propbag->add('type',        'boolean');        $propbag->add('name',        $name);        $propbag->add('description', sprintf(APPLY_MARKUP_TO, $name));        return true;    }    function event_hook($event, &$bag, &$eventData) {        global $serendipity;        $hooks = &$bag->get('event_hooks');        if (isset($hooks[$event])) {            switch($event) {              case 'frontend_display':                $preserve_tags = &$bag->get('preserve_tags');                foreach ($this->markup_elements as $temp) {                    if (serendipity_db_bool($this->get_config($temp['name'], true))) {                        $element = $temp['element'];        /* find all the tags and store them in $blocks */                        $blocks = array();                        foreach($preserve_tags as $tag) {                            if (preg_match_all('/(<'.$tag.'[^>]?>.*<\/'.$tag.'>)/msU', $eventData[$element], $matches )) {                                foreach($matches[1] as $match) {                                    $blocks[] = $match;                                }                            }                        }        /* replace all the blocks with some code */                        foreach($blocks as $id=>$block) {                            $eventData[$element] = str_replace($block, '@BLOCK::'.$id.'@', $eventData[$element]);                        }        /* textile it */                        $eventData[$element] = textile($eventData[$element]);        /* each block will now be "<code>BLOCK::2</code>"         * so look for those place holders and replace         * them with the original blocks */                        if (preg_match_all('/<code>BLOCK::(\d+)<\/code>/', $eventData[$element], $matches )) {                            foreach($matches[1] as $key=>$match) {                                $eventData[$element] = str_replace($matches[0][$key], $blocks[$match], $eventData[$element]);                            }                        }        /* post-process each block */                        foreach($preserve_tags as $tag) {                            $method = '_process_tag_' . $tag;                            if (method_exists($this,$method)) {                                if (preg_match_all('/<'.$tag.'[^>]?>(.*)<\/'.$tag.'>/msU', $eventData[$element], $matches )) {                                    foreach($matches[1] as $key=>$match) {                                        $eventData[$element] = str_replace($matches[0][$key], $this->$method($match), $eventData[$element]);                                    }                                }                            }                        }        /* end textile processing */                    }                }                return true;                case 'frontend_comment':                    if (serendipity_db_bool($this->get_config(COMMENT, true))) {                        echo PLUGIN_EVENT_TEXTILE_TRANSFORM . '<br />';                    }                    return true;                    break;                default:                  return false;            }        } else {            return false;        }    }    function _process_tag_php($text) {        $code = "<?php\n" . trim($text) . "\n?>";        # Using OB, as highlight_string() only supports        # returning the result from 4.2.0        ob_start();        highlight_string($code);        $highlighted = ob_get_contents();        ob_end_clean();        # Fix output to use CSS classes and wrap well        $highlighted = '<p><div class="phpcode">' . str_replace(            array(                '&nbsp;',                '<br />',                '<font color="',                '</font>',                "\n ",                '

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -