`
化蝶自在飞
  • 浏览: 2329345 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

phpcms v9编辑器ckeditor数据恢复功能

阅读更多
为phpcms v9的ckeditor编辑器开发的数据恢复功能.下面直接上步骤说明吧.
1.\statics\js\ckeditor\config.js文件最后增加以下代码:
//化蝶自在飞 add 2011-11-12 自动保存数据
var timer = counttimer = '30';//每?秒保存一次
var delays = 10;//延迟多少秒执行,因为firefox下无法显示,建议设置为10000
var editorid = 'content';
var fromid = 'myform';
$(function(){
var str = '<a href="javascript:void(0);" onclick="open_databak();return false;">恢复数据</a><span id="tuzwu_timer">'+timer+'</span>秒后自动保存';
setTimeout('$(".cke_footer").append(\''+str+'\')',delays*1000);
setInterval('tuzwu_posts()',timer*1000);
setInterval('tuzwu_timer()',1000);
});
function tuzwu_posts(){ //post提交数据
var editor = CKEDITOR.instances[editorid];
data = editor.getData();
$('#'+editorid).val(data);
$.post("api.php?op=editor_data", $("#"+fromid).serializeArray(),function(data){
$('#'+editorid).val();
});
}
function tuzwu_timer(){ //每秒执行1次,倒数计时
if(timer<=0) timer = counttimer;
$('#tuzwu_timer').html(--timer);
}
function open_databak(){
omnipotent('databak_area','?m=content&c=databak&a=init&target=dialog','恢复数据',1,600,400);
}


2.建数据表用于保存数据:
CREATE TABLE `v9_editor_data` (
  `id` mediumint(8) NOT NULL auto_increment,
  `data` mediumtext character set gbk NOT NULL COMMENT '数据',
  `time` int(10) NOT NULL,
  `userid` mediumint(8) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

注意:表前缀和数据库编码,推荐自己手工用phpmyadmin建表;

3.\phpcms\model\editor_data_model.class.php新建该文件,用以下代码填充文件:
<?php
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_sys_class('model', '', 0);
class editor_data_model extends model {
	public function __construct() {
		$this->db_config = pc_base::load_config('database');
		$this->db_setting = 'default';
		$this->table_name = 'editor_data';
		parent::__construct();
	}
}
?>


4.\api\editor_data.php新建改文件,用以下代码填充该文件:
<?php
defined('IN_PHPCMS') or exit('No permission resources.');
header('Content-type: text/html; charset=utf-8');
$db = pc_base::load_model('editor_data_model');
$_userid = param::get_cookie('userid');
if(!$_POST['info']['content']) exit('0');
$postinfo = array2string($_POST['info']);
$postdata = CHARSET != 'utf-8' ? iconv('utf-8', CHARSET, $postinfo ):$postinfo;
$posts = array(
'data'=>$postdata,
'userid'=>$_userid,
'time'=>SYS_TIME
);
$r = $db->get_one( array('userid'=>$_userid,'data'=>$postdata),'id' );//如果没有改变就不用备份
if($r) exit('0');
$db->insert($posts);
exit('1');
?>


5.\phpcms\modules\content\databak.php新建该文件,代码如下:
<?php
defined('IN_PHPCMS') or exit('No permission resources.');
//模型缓存路径
define('CACHE_MODEL_PATH',CACHE_PATH.'caches_model'.DIRECTORY_SEPARATOR.'caches_data'.DIRECTORY_SEPARATOR);
pc_base::load_app_func('util','content');
pc_base::load_app_class('admin','admin',0);
class databak extends admin {
	private $db;
	function __construct() {
		$this->db = pc_base::load_model('editor_data_model');
		$this->_userid = param::get_cookie('userid')?param::get_cookie('userid'):param::get_cookie('admin_userid');
		$this->_username = param::get_cookie('_username');
		$this->_groupid = param::get_cookie('_groupid');
	}

		public function init() {
        if(!$this->_userid) exit('用户ID校验失败');
		$page = $_GET['page']?$_GET['page']:1;
		$infos = $this->db->listinfo( array('userid'=>$this->_userid),'time DESC',$page,20,'',10 );
        $pages = $this->db->pages;
		$target = $_GET['target'];
		include $this->admin_tpl('databak');
		}
}
?>


6.\phpcms\modules\content\templates\databak.tpl.php新建改文件,代码如下:
<?php
header('Content-Type:text/html;charset=utf-8');
defined('IN_ADMIN') or exit('No permission resources.');
$show_dialog = 1;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"<?php if(isset($addbg)) { ?> class="addbg"<?php } ?>>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=7" />
<title><?php echo L('website_manage');?></title>
<link href="<?php echo CSS_PATH?>reset.css" rel="stylesheet" type="text/css" />
<link href="<?php echo CSS_PATH.SYS_STYLE;?>-system.css" rel="stylesheet" type="text/css" />
<link href="<?php echo CSS_PATH?>table_form.css" rel="stylesheet" type="text/css" />
<?php
if(isset($show_dialog)) {
?>
<link href="<?php echo CSS_PATH?>dialog.css" rel="stylesheet" type="text/css" />
<script language="javascript" type="text/javascript" src="<?php echo JS_PATH?>dialog.js"></script>
<?php } ?>
	<link rel="stylesheet" type="text/css" href="<?php echo CSS_PATH?>style/<?php echo SYS_STYLE;?>-styles1.css" title="styles1" media="screen" />
	<link rel="alternate stylesheet" type="text/css" href="<?php echo CSS_PATH?>style/<?php echo SYS_STYLE;?>-styles2.css" title="styles2" media="screen" />
	<link rel="alternate stylesheet" type="text/css" href="<?php echo CSS_PATH?>style/<?php echo SYS_STYLE;?>-styles3.css" title="styles3" media="screen" />
    <link rel="alternate stylesheet" type="text/css" href="<?php echo CSS_PATH?>style/<?php echo SYS_STYLE;?>-styles4.css" title="styles4" media="screen" />
<script language="javascript" type="text/javascript" src="<?php echo JS_PATH?>jquery.min.js"></script>
<script language="javascript" type="text/javascript" src="<?php echo JS_PATH?>admin_common.js"></script>
<script language="javascript" type="text/javascript" src="<?php echo JS_PATH?>styleswitch.js"></script>
<?php if(isset($show_validator)) { ?>
<script language="javascript" type="text/javascript" src="<?php echo JS_PATH?>formvalidator.js" charset="UTF-8"></script>
<script language="javascript" type="text/javascript" src="<?php echo JS_PATH?>formvalidatorregex.js" charset="UTF-8"></script>
<?php } ?>
<script type="text/javascript">
	window.focus();
	var pc_hash = '<?php echo $_SESSION['pc_hash'];?>';
	<?php if(!isset($show_pc_hash)) { ?>
		window.onload = function(){
		var html_a = document.getElementsByTagName('a');
		var num = html_a.length;
		for(var i=0;i<num;i++) {
			var href = html_a[i].href;
			if(href && href.indexOf('javascript:') == -1) {
				if(href.indexOf('?') != -1) {
					html_a[i].href = href+'&pc_hash='+pc_hash;
				} else {
					html_a[i].href = href+'?pc_hash='+pc_hash;
				}
			}
		}

		var html_form = document.forms;
		var num = html_form.length;
		for(var i=0;i<num;i++) {
			var newNode = document.createElement("input");
			newNode.name = 'pc_hash';
			newNode.type = 'hidden';
			newNode.value = pc_hash;
			html_form[i].appendChild(newNode);
		}
	}
<?php } ?>
</script>
</head>
<body>
<?php if(!isset($show_header)) { ?>
<th>备份生成时间</th>
			<th>标题</th>
		</tr>
	</thead>
<tbody>
<?php
if(is_array($infos)){
	foreach($infos as $info){
	$data = string2array(CHARSET != 'utf-8' ? iconv( CHARSET,'utf-8', $info['data'] ):$info['data']);
	$info['title'] = $data['title'] ? $data['title'] : '暂无标题';
	$jsondata = json_encode($data);
		?>
	<tr onclick="return_id(<?php echo $info['id'];?>)" style="cursor:hand" title="请选择">
	<script language="JavaScript">
var jsondata<?php echo $info['id'];?> = [<?php echo $jsondata;?>];
	</script>
	<td width='40%'><?php echo date("Y-m-d h:i:s",$info['time']);?></td>
		<td><?php echo $info['title']?></td>
		
	</tr>
	<?php
	}
}
?>
</tbody>
</table>
<div id="pages"><?php echo $pages?>
<div style="text-align:right;">by 化蝶自在飞</div>
</div>
<SCRIPT LANGUAGE="JavaScript">
	function return_id(id) {
    var objstr = eval('jsondata'+ id);
	for(x in objstr[0]){
	value = eval('objstr[0].'+x);
	if(x == 'content') { //编辑器特殊对待
	var editorid = 'content';
	var editor = window.top.CKEDITOR.instances[editorid];
    editor.setData(value);
	}
	if( window.top.$('#'+x) ) window.top.$('#'+x).val( value );
	}
}
</SCRIPT>
</body>
</html>


完毕.2011-11-12 for http://www.xiaojudeng.com,转载请注明出处,谢谢.
0
0
分享到:
评论

相关推荐

    PHPCMS V9 Ckeditor编辑器添加排版功能

    PHPCMSv9使用的Ckeditor编辑器,在使用过程中有些不尽人意的地方,下面我来修改一下编辑器,改动几个地方,让Ckeditor编辑更加实用一些。 此次修改的内容有批量去除超链接、上传图片自动添加ALT参数、修改编辑器...

    phpcmsV9.6.3默认编辑器CKeditor升级最新版 - 含源码

    总结大全:含文章教程&&效果图对比、压缩包、代码文件等等。直接覆盖也可轻松完成全部设置。 phpcmsV9 完整更新ckeditor编辑器到最新版!

    功能5_CKeditor编辑器【成功】.rar_CKeditor编辑器 升级_motherpy8_phpcms_phpcms c

    本教程将详细讲解如何将phpcms v9中的CKeditor编辑器升级到最新版本,以确保系统功能的稳定性和安全性。 首先,我们要了解CKeditor的基本概念。CKeditor是一款开源的JavaScript富文本编辑器,它提供了丰富的文本...

    phpcms V9 fckeditor编辑器 换 kindeditor编辑器

    在本文中,我们将深入探讨如何将phpcms V9系统中的默认fckeditor编辑器替换为kindeditor编辑器。这个过程涉及到对网站后台管理系统的修改,以提供更好的文本编辑体验。首先,我们来了解一下这两个编辑器的基本情况。...

    PHPCMS V9 表单向导数据导出为EXCEL 插件

    PHPCMS V9 是一款流行的开源内容管理系统,其表单向导功能允许用户自定义创建各种表单,用于收集和管理网站用户的数据。这个“表单向导数据导出为EXCEL 插件”则是专门为PHPCMS V9 设计的一个扩展工具,旨在帮助管理...

    phpcms v9 整合 百度编辑器

    整合百度编辑器到phpcms v9后,不仅可以提供更强大的编辑功能,还能提升内容创作者的工作效率。但需要注意的是,这种整合可能会增加系统的复杂性,所以要确保维护和更新时考虑到编辑器部分的兼容性和安全性。在实际...

    PHPCMS V9 数据结构

    在深入理解PHPCMS V9的数据结构之前,我们需要先了解一些基本概念。 1. **数据库设计**:PHPCMS V9的核心在于其数据库设计,它使用MySQL作为主要的数据库管理系统。数据库设计包括了表的创建、字段定义、索引设置等...

    PhpCMS V9代码生成器

    本压缩包中的"PhpCMS V9代码生成器 V1.5 Final.exe"是该工具的1.5最终版本,通常包含了更多的功能优化和bug修复,确保了更好的稳定性和兼容性。 总之,**PhpCMS V9代码生成器**是提升PhpCMS V9开发效率的得力助手,...

    PHPCMS V9多功能地图插件

    【PHPCMS V9多功能地图插件】是一个专为PHPCMS内容管理系统设计的扩展插件,它提供了多接口地图标注功能,使用户能够在不同版本的PHPCMS V9系统中方便地集成地图服务。这款插件的核心特性是支持多种地图服务商的接入...

    phpcms v9 购物车+商品模块+订单 最新V9商城插件

    phpcms v9作为一款强大的内容管理系统,其最新的V9商城插件为开发者提供了构建高效、稳定且功能丰富的购物平台的可能。本文将深入解析phpcms v9的购物车、商品模块以及订单处理机制。 一、购物车模块 购物车是电商...

    PHPCMS V9 UTF8

    12. **API接口**:通过提供的API接口,PHPCMS V9可以与其他系统集成,实现数据交换和功能扩展。 13. **移动适配**:随着移动互联网的发展,PHPCMS V9也考虑到了移动设备的适配,确保在手机和平板电脑上也能有良好的...

    PHPCMS V9 修改flash上传为H5上传方案 webuploader.tpl.php

    PHPCMS V9 修改flash上传为H5上传方案

    PHPCMS V9留言板2.2 [10月26号更新]

    这个系统的最新更新,即“PHPCMS V9留言板2.2”,是在2010年10月26日发布,主要针对系统中留言板功能进行了一些关键性的改进。 在之前的版本中,PHPCMS V9的留言板功能存在一个显著的问题:非超级管理员用户无法...

    PHPCMS V9 Ckeditor编辑器添加排版功能实现介绍

    综上所述,通过对PHPCMS V9所使用的Ckeditor编辑器的几个关键点进行修改,可以有效地提升编辑器的实用性和用户满意度。具体操作包括批量去除超链接、上传图片自动添加ALT参数、修改回车换行行为以及添加一键排版功能...

    PHPCMS V9 代码生成器

    PHPCMS V9 代码生成器是一款专为PHPCMS内容管理系统设计的高效开发辅助工具。这款工具的主要目的是为了简化PHPCMS模板的编写过程,提高开发效率,使得开发者能够更加专注于业务逻辑的设计,而非重复性的编码工作。 ...

    PHPCMS V9用户手册

    4. 插件机制:PHPCMS V9支持插件开发,可以快速添加额外的功能,如SEO优化、数据分析等。 三、数据库管理 PHPCMS V9采用MySQL作为默认数据库,手册会讲解如何进行数据表结构的设计,以及如何使用系统提供的后台管理...

    PHPCMS V9应用程序

    在安全性方面,PHPCMS V9采用了一些安全机制,如SQL防注入、XSS防护等,有效保护了网站数据的安全。此外,系统还提供了权限管理功能,可以对不同角色的用户分配不同的操作权限,确保了网站管理的规范性和安全性。 ...

    PHPCMS V9代码生成器 2.0

    PHPCMS V9是一款流行的开源内容管理系统,而“PHPCMS V9代码生成器 2.0”则是针对这个系统的一个重要辅助工具。这个代码生成器的主要目标是提高开发效率,减少手动编写重复代码的工作量,使开发者能够更加专注于业务...

    phpcms v9二次开发文档资料汇总

    PHPCMS V9 产品开发权威指南,phpcms_v9_代码分析(一、二、三),phpcms_v9_二次开发及标签制作讲义,PHPCMS_V9安装教程,PHPCMS_V9帮助中心,PHPCMS_V9开发文档,PHPCMS_V9模板制作,phpcms_v9数据表结构,PHPCMS_V9...

Global site tag (gtag.js) - Google Analytics