Editor.md for Typecho * * @package EditorMD * @author DT27 * @version 1.4.0 * @link https://dt27.org/php/editormd-for-typecho/ */ class EditorMD_Plugin implements Typecho_Plugin_Interface { public static $count = 0; /** * 激活插件方法,如果激活失败,直接抛出异常 * * @access public * @return void * @throws Typecho_Plugin_Exception */ public static function activate() { Typecho_Plugin::factory('admin/write-post.php')->richEditor = array('EditorMD_Plugin', 'Editor'); Typecho_Plugin::factory('admin/write-page.php')->richEditor = array('EditorMD_Plugin', 'Editor'); Typecho_Plugin::factory('Widget_Abstract_Contents')->content = array('EditorMD_Plugin', 'content'); Typecho_Plugin::factory('Widget_Abstract_Contents')->excerpt = array('EditorMD_Plugin', 'excerpt'); Typecho_Plugin::factory('Widget_Archive')->footer = array('EditorMD_Plugin','footerJS'); } /** * 禁用插件方法,如果禁用失败,直接抛出异常 * * @static * @access public * @return void * @throws Typecho_Plugin_Exception */ public static function deactivate(){} /** * 获取插件配置面板 * * @access public * @param Typecho_Widget_Helper_Form $form 配置面板 * @return void */ public static function config(Typecho_Widget_Helper_Form $form) { $emoji = new Typecho_Widget_Helper_Form_Element_Radio('emoji', array( '1' => '是', '0' => '否', ),'1', _t('启用 Emoji 表情'), _t('启用后可在编辑器里插入 Emoji 表情符号,前台会加载13KB的js文件将表情符号转为表情图片(图片来自Staticfile CDN)')); $form->addInput($emoji); $isActive = new Typecho_Widget_Helper_Form_Element_Radio('isActive', array( '1' => '是', '0' => '否', ),'1', _t('接管前台Markdown解析'), _t('启用后,插件将接管前台 Markdown 解析,使用与后台编辑器一致的 marked.js 解析器。')); $form->addInput($isActive); $isToc = new Typecho_Widget_Helper_Form_Element_Radio('isToc', array( '1' => '是', '0' => '否', ),'1', _t('启用自动生成目录(下拉菜单) ToC/ToCM功能'), _t('Table of Contents (ToC)')); $form->addInput($isToc); $isTask = new Typecho_Widget_Helper_Form_Element_Radio('isTask', array( '1' => '是', '0' => '否', ),'1', _t('启用Github Flavored Markdown task lists'), _t('')); $form->addInput($isTask); $isTex = new Typecho_Widget_Helper_Form_Element_Radio('isTex', array( '1' => '是', '0' => '否', ),'1', _t('启用科学公式 TeX'), _t('TeX/LaTeX (Based on KaTeX)')); $form->addInput($isTex); $isFlow = new Typecho_Widget_Helper_Form_Element_Radio('isFlow', array( '1' => '是', '0' => '否', ),'0', _t('启用流程图'), _t('FlowChart example')); $form->addInput($isFlow); $isSeq = new Typecho_Widget_Helper_Form_Element_Radio('isSeq', array( '1' => '是', '0' => '否', ),'0', _t('启用时序/序列图'), _t('Sequence Diagram example')); $form->addInput($isSeq); } /** * 个人用户的配置面板 * * @access public * @param Typecho_Widget_Helper_Form $form * @return void */ public static function personalConfig(Typecho_Widget_Helper_Form $form){} /** * 插入编辑器 */ public static function Editor() { $options = Helper::options(); $cssUrl = $options->pluginUrl.'/EditorMD/css/editormd.min.css'; $jsUrl = $options->pluginUrl.'/EditorMD/js/editormd.min.js'; $editormd = Typecho_Widget::widget('Widget_Options')->plugin('EditorMD'); ?> pluginUrl.'/EditorMD'; $editormd = Typecho_Widget::widget('Widget_Options')->plugin('EditorMD'); if($editormd->emoji){ ?> emoji || ($editormd->isActive == 1 && $conent->isMarkdown)){ ?> isActive == 1 && $conent->isMarkdown){ ?> isSeq == 1||$editormd->isFlow == 1){ ?> isFlow == 1){ ?> isSeq == 1){ ?> emoji){ ?> emoji||($editormd->isActive == 1 && $conent->isMarkdown)){?> plugin('EditorMD'); $text = $conent->isMarkdown ? ($editormd->isActive == 1?$text:$conent->markdown($text)) : $conent->autoP($text); if($editormd->isActive == 1 && $conent->isMarkdown) return '
'; else return $text; } public static function excerpt($text, $conent){ self::$count++; $text = $conent->isMarkdown ? $conent->markdown($text) : $conent->autoP($text); return $text; } }