• 通过xajax给fckeditor增加自动保存草稿功能


    使用的xajax版本是0.5.4beta,fckeditor版本是2.4.3,通过xajax给fckeditor增加自动保存草稿功能,

    本文侧重于演示,使用sessionid记录对应关系,用户关闭浏览器後数据就会消失,在实际应用中可以使用数据库存储数据,修改保存函数autosave和调用函数loadcache 即可.

    <?php

    session_start();

    define('ROOT_DIR',str_replace("/","/",dirname(__FILE__)));

    $cachedir = './cache/';



    //清除超过1天的记录文件

    function clearcache($dir,$date = 1) {

    $now = time();

    $time = $date * 60 * 60 * 24;

    if(!is_dir($dir)){

    die('error :dir' . $dir . ' is not exist');

    }

    $handle = opendir($dir);

    while(false !== ($filename = readdir($handle))) {

    if($filename == '.' OR $filename == '..' OR $filename == ''){

    continue;

    }

    if(($now - filemtime($dir.$filename)) > $time){

    @unlink($dir.$filename);

    }

    }

    }



    function xml_escape($string) {

    return str_replace(array('&','"',"'",'<','>'),

    array('&amp;','&quot;','&apos;','&lt;','&gt;'),

    $string

    );

    }



    //执行清理

    clearcache($cachedir);



    require_once('./xajax/xajax.inc.php');



    $xajax = new xajax();

    $xajax->registerFunction('autosave');

    $xajax->registerFunction('loadcache');

    $xajax->processRequest();

    echo $xajax->getJavascript('./xajax');



    //定义载入数据函数

    function loadcache() {

    global $cachedir;

    $filename = $cachedir . session_id().'.txt';

    if(file_exists($filename)){

    $content = '';

    $handle = file($filename);

    foreach($handle as $key=>$val) {

    $content .= $val;

    }

    }else{

    $content = '';

    }

    $content = xml_escape($content);

    $obj = new xajaxResponse();

    $obj->call("SetContents('$content')");

    //$obj->alert($content);

    $obj->assign('autosavemsg','innerHTML',"成功载入数据");

    return $obj;

    }



    //定义自动保存函数

    function autosave($content) {

    global $cachedir;

    $obj = new xajaxResponse();

    $content = mysql_escape_string($content);

    $filename = $cachedir . session_id() . ".txt";

    $fp = fopen($filename,"w+");

    fwrite($fp,$content);

    fclose($fp);

    if(file_exists($filename)){

    $obj->assign("autosavemsg","innerHTML","成功保存数据...");

    }

    //$obj->alert($content);

    return $obj;

    }



    function editor($editorid,$content = '') {

    //载入编辑器

    require_once('../../includes/fckeditor/fckeditor.php');

    $editor = new fckeditor($editorid);

    $editor->BasePath = '../../includes/fckeditor/';

    $editor->Value = $content;

    return $editor->createhtml();

    }



    ?>

    <!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">

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title></title>

    <meta name="Description" content="" />

    </head>

    <style type="text/css">

    <!--

    a {

    cursor: pointer;

    }

    -->

    </style>

    <body>



    <form name="f1" id="f1" method="post" action="" enctype="multipart/form-data">

    <?php

    //载入编辑器

    echo editor('content');

    ?>

    <script language="javascript">

    <!--

    // 自动保存时间间隔

    var AutoSaveTime=90000;

    // 计时器对象

    var AutoSaveTimer;

    // 首先设置一次自动保存状态

    SetAutoSave();

    // 设置自动保存状态函数

    function SetAutoSave() {

    AutoSaveTimer=setInterval("GetContents('content')",AutoSaveTime);

    }



    //获取内容

    function GetContents(contentid) {

    var oEditor = FCKeditorAPI.GetInstance(contentid) ;

    content = oEditor.GetXHTML( true );

    xajax_autosave(content);

    }



    //设置编辑器内容

    function SetContents(content)

    {

    // Get the editor instance that we want to interact with.

    var oEditor = FCKeditorAPI.GetInstance('content') ;

    // Set the editor contents (replace the actual one).

    oEditor.SetHTML( content ) ;

    }

    //-->

    </script>

    </form>

    <div id="autosavemsg">



    </div>



    <a href="#" onclick="xajax_loadcache();" title="">载入自动保存内容</a> <a href="#" onclick="GetContents('content');" title="">手动保存</a>

    </body>

    </html>

    http://www.corange.cn/archives/2008/10/2082.html

  • 相关阅读:
    经典回溯问题- 迷宫
    关于二叉树的一点补充。
    二叉树重难点总结(判断完全二叉树,非递归前、中、后序遍历的实现等...)
    栈、队列常规操作
    贪吃蛇小游戏
    链表重点问题(下)
    链表常见问题(上)
    动态顺序表
    时间 空间复杂度小结(斐波那契 二分查找举例)
    每天一个linux命令-id,输出用户的uid、gid
  • 原文地址:https://www.cnblogs.com/zerogo/p/2209177.html
Copyright © 2020-2023  润新知