TF社区维护版】
*
* @package Magike Editor
* @author 羽中, Hanny
* @version 1.1.1
* @dependence 13.10.18-*
* @link https://github.com/typecho-fans/plugins/tree/master/MagikeEditor
*
* version 1.1.1 at 2020-07-10
* 修正自定义按键默认值及引号转义问题
* 修正搭配Attachment插件获取cid问题
*
* 历史版本
* version 1.1.0 at 2014-01-15
* 支持Typecho 0.9
* 新方法兼容Attachment插件
* 小小修改图片的插入方式
* version 1.0.3 at 2010-10-13
* 修正一个JS的Bug
* version 1.0.2 at 2010-10-08
* 与附件管理器插件相接
* 多动插入图片的方式选择
* 允许自定义一些简单按钮
* 自动转换 http https ftp 地址
* version 1.0.1 at 2009-12-01
* 修正一个插入图片的Bug
* version 1.0.0 at 2009-11-27
* 完成从Magike的移植
*/
class MagikeEditor_Plugin implements Typecho_Plugin_Interface
{
/**
* 激活插件方法,如果激活失败,直接抛出异常
*
* @access public
* @return void
* @throws Typecho_Plugin_Exception
*/
public static function activate()
{
Typecho_Plugin::factory('admin/write-post.php')->richEditor = array('MagikeEditor_Plugin', 'render');
Typecho_Plugin::factory('admin/write-page.php')->richEditor = array('MagikeEditor_Plugin', 'render');
Typecho_Plugin::factory('Widget_Contents_Post_Edit')->write = array('MagikeEditor_Plugin', 'write');
Typecho_Plugin::factory('Widget_Contents_Page_Edit')->write = array('MagikeEditor_Plugin', 'write');
}
/**
* 禁用插件方法,如果禁用失败,直接抛出异常
*
* @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)
{
$form->addInput(new Typecho_Widget_Helper_Form_Element_Textarea('buttons', NULL,
"ul,
,u\nol,,
,o\nli,,,l\npage,,,p",
_t('自定义按键'), _t('按键参数用逗号隔开,多个按键请用换行符隔开')));
$form->addInput(new Typecho_Widget_Helper_Form_Element_Radio('picmode', array("piconly" => "仅插入图片", "piclink" => "插入图片和图片链接"), "piconly",
_t('图片插入方式'), _t('修改附件中图片的插入方式')));
$form->addInput(new Typecho_Widget_Helper_Form_Element_Checkbox('autourl', array('autourl'=>'自动转换URL'), NULL,
_t('URL插入方式'), _t('自动为URL添加链接(包括http:// https:// ftp://)')));
}
/**
* 个人用户的配置面板
*
* @access public
* @param Typecho_Widget_Helper_Form $form
* @return void
*/
public static function personalConfig(Typecho_Widget_Helper_Form $form){}
/**
* 插件实现方法
*
* @access public
* @return void
*/
public static function render($post)
{
$options = Helper::options();
$css = Typecho_Common::url('MagikeEditor/magike_style.css?v=1.0.0', $options->pluginUrl);
$js1 = Typecho_Common::url('MagikeEditor/magike_control.js?v=1.1.0', $options->pluginUrl);
$js2 = Typecho_Common::url('MagikeEditor/magike_editor.js?v=1.1.0', $options->pluginUrl);
$autoSave = $options->autoSave ? 'true' : 'false';
$autoSaveLeaveMessage = '您的内容尚未保存, 是否离开此页面?';
$resizeUrl = Typecho_Common::url('/action/ajax', $options->index);
$insMode = 0;
if (isset($options->plugins['activated']['Attachment'])) {
$insMode |= (1 << 0); //如果安装了附件管理器,就改变附件的插入方式
}
$picmode = $options->plugin('MagikeEditor')->picmode;
if ($picmode == "piconly") {
$insMode |= (1 << 1);
} else if ($picmode == "piclink") {
$insMode |= (2 << 1);
}
echo <<
EOT;
}
public static function parseCallback($matches)
{
if ($matches[2] != '"' && $matches[2] != '<' && $matches[2] != '>') { //防止重复识别
$matches[1] = ''.$matches[1].'';
}
return $matches[1];
}
//URL自动识别
public static function write($contents, $pedit)
{
$options = Helper::options();
$autourl = $options->plugin('MagikeEditor')->autourl;
if ($autourl) {
$pattern = '/((\S)*((http)|(https)|(ftp)):\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"\s])*)/i';
$contents['text'] = preg_replace_callback($pattern, array('MagikeEditor_Plugin', 'parseCallback'), $contents['text']);
}
return $contents;
}
}