<?php /* 加强后台编辑器功能 */ Typecho_Plugin::factory('admin/write-post.php')->bottom = array('Editor', 'edit'); Typecho_Plugin::factory('admin/write-page.php')->bottom = array('Editor', 'edit'); class Editor { public static function edit() { echo "<link rel='stylesheet' href='" . Helper::options()->themeUrl . '/typecho/editor/css/joe.editor.min.css' . "'>\n"; echo "<script src='" . Helper::options()->themeUrl . '/typecho/editor/js/joe.extend.min.js' . "'></script>\n"; echo "<script src='" . Helper::options()->themeUrl . '/typecho/editor/js/joe.editor.min.js' . "'></script>\n"; if (Helper::options()->JPasteUpload === "on") { ?> <script> $("#text").on("paste", event => { let clipboardData = event.clipboardData || window.clipboardData || event.originalEvent.clipboardData; if (!clipboardData || !clipboardData.items) return; let items = clipboardData.items; let file = null; if (items.length === 0) return; for (let i = 0; i < items.length; i++) { if (items[i].kind === 'file' && items[i].type.match(/^image/)) { event.preventDefault(), file = items[i].getAsFile() } } if (!file) return; let uploadUrl = '<?php Helper::security()->index('/action/upload'); ?>'; let cid = $('input[name="cid"]').val() cid && (uploadUrl = uploadUrl + '&cid=' + cid); let random = Date.now().toString(36); let fileName = random + '.png' let uploadText = '[图片上传中...(' + random + ')]'; $('#text').insertContent(uploadText) let formData = new FormData(); formData.append('name', fileName); formData.append('file', file, fileName); $.ajax({ url: uploadUrl, method: 'post', data: formData, contentType: false, processData: false, success(res) { $("#text").val($("#text").val().replace(uploadText, '![' + res[1].title + '](' + res[0] + ')')) }, error() { $("#text").val($("#text").val().replace(uploadText, '[图片上传失败!(' + random + ')]')) } }); }) </script> <?php } } } /* 加强评论拦截功能 */ Typecho_Plugin::factory('Widget_Feedback')->comment = array('Intercept', 'message'); class Intercept { public static function message($comment) { /* 判断评论内容是否包含敏感词 */ if (Helper::options()->JSensitiveWords) { if (_checkSensitiveWords(Helper::options()->JSensitiveWords, $comment['text'])) { throw new Typecho_Widget_Exception("评论内容包含敏感词汇!", 403); } } /* 判断评论是否至少包含一个中文 */ if (Helper::options()->JLimitOneChinese === "on") { if (!preg_match("/\{!\{.{0,}/", $comment['text']) && preg_match("/[\x{4e00}-\x{9fa5}]/u", $comment['text']) == 0) { throw new Typecho_Widget_Exception("评论至少包含一个中文!", 403); } } return $comment; } }