Files
plugins/Ueditor/Plugin.php
chorblack e75f275ef4
Some checks failed
定时更新GitHub源插件 / 自动更新GitHub插件 (push) Has been cancelled
Initial commit
2026-03-07 11:19:25 +08:00

158 lines
4.1 KiB
PHP

<?php
/**
* 集成百度编辑器
*
* @package Ueditor
* @author zhulin3141
* @version 1.0.0
* @link http://zhulin31410.blog.163.com/
*/
class Ueditor_Plugin implements Typecho_Plugin_Interface
{
/**
* 默认设置的值
*
* @access private
* @static var
*/
private static $_defaultConfig = array(
'theme' => 'default',
);
/**
* 获取默认的配置
*
* @access private
* @return mixed
*/
private static function getDefaultConfig($key = null)
{
if( isset($key) )
return self::$_defaultConfig[$key];
return (object)self::$_defaultConfig;
}
/**
* 获取目录下的文件夹
*
* @access private
* @return array
*/
private static function getDir($targetDir)
{
$dirs = array();
$files = scandir($targetDir);
foreach($files as $file){
if( is_dir($targetDir . '/' . $file) && !in_array($file, array('.', '..')) ){
$dirs[] = $file;
}
}
return $dirs;
}
/**
* 激活插件方法,如果激活失败,直接抛出异常
*
* @access public
* @return void
* @throws Typecho_Plugin_Exception
*/
public static function activate()
{
Typecho_Plugin::factory('admin/write-post.php')->richEditor = array('Ueditor_Plugin', 'render');
Typecho_Plugin::factory('admin/write-page.php')->richEditor = array('Ueditor_Plugin', 'render');
//去除段落
Typecho_Plugin::factory('Widget_Contents_Post_Edit')->write = array('Ueditor_Plugin', 'filter');
Typecho_Plugin::factory('Widget_Contents_Page_Edit')->write = array('Ueditor_Plugin', 'filter');
}
/**
* 禁用插件方法,如果禁用失败,直接抛出异常
*
* @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){
$defaultConfig = self::getDefaultConfig();
//皮肤
$skins = self::getDir(dirname(__FILE__) . '/ueditor/themes');
$skins = array_combine($skins, $skins);
$skin = new Typecho_Widget_Helper_Form_Element_Select(
'skin' ,
$skins ,
in_array($defaultConfig->theme, $skins) ? $defaultConfig->theme : $skins[0] ,
_t('皮肤'),
null
);
$form->addInput($skin);
}
/**
* 个人用户的配置面板
*
* @access public
* @param Typecho_Widget_Helper_Form $form
* @return void
*/
public static function personalConfig(Typecho_Widget_Helper_Form $form){}
/**
* 去除段落
*
* @access public
* @param array $post 数据结构体
* @return array
*/
public static function filter($post)
{
$post['text'] = str_replace("\n", '', $post['text']);
return $post;
}
/**
* 插件实现方法
*
* @access public
* @return void
*/
public static function render($post)
{
$options = Helper::options();
$plugin_options = $options->plugin('Ueditor');
$pluginRoot = Typecho_Common::url('Ueditor/ueditor', $options->pluginUrl);
$isEdit = isset($_GET['cid']) && $_GET['cid'] > 0 ? 'false' : 'true';
//调用编辑器
echo <<<CODE
<script type="text/javascript" charset="utf-8" src="{$pluginRoot}/ueditor.config.js"></script>
<script type="text/javascript" charset="utf-8" src="{$pluginRoot}/ueditor.all.min.js"> </script>
<script type="text/javascript">
var ue = UE.getEditor('text');
window.onbeforeunload = function(event){
if(getContent() != '' && {$isEdit}){
event.returnValue = '即将离开页面,是否确认编辑的内容已使用?';
}
}
</script>
CODE;
}
}