123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- UE.plugin.register('autosave', function (){
- var me = this,
- //无限循环保护
- lastSaveTime = new Date(),
- //最小保存间隔时间
- MIN_TIME = 20,
- //auto save key
- saveKey = null;
- function save ( editor ) {
- var saveData;
- if ( new Date() - lastSaveTime < MIN_TIME ) {
- return;
- }
- if ( !editor.hasContents() ) {
- //这里不能调用命令来删除, 会造成事件死循环
- saveKey && me.removePreferences( saveKey );
- return;
- }
- lastSaveTime = new Date();
- editor._saveFlag = null;
- saveData = me.body.innerHTML;
- if ( editor.fireEvent( "beforeautosave", {
- content: saveData
- } ) === false ) {
- return;
- }
- me.setPreferences( saveKey, saveData );
- editor.fireEvent( "afterautosave", {
- content: saveData
- } );
- }
- return {
- defaultOptions: {
- //默认间隔时间
- saveInterval: 500,
- enableAutoSave: true
- },
- bindEvents:{
- 'ready':function(){
- var _suffix = "-drafts-data",
- key = null;
- if ( me.key ) {
- key = me.key + _suffix;
- } else {
- key = ( me.container.parentNode.id || 'ue-common' ) + _suffix;
- }
- //页面地址+编辑器ID 保持唯一
- saveKey = ( location.protocol + location.host + location.pathname ).replace( /[.:\/]/g, '_' ) + key;
- },
- 'contentchange': function () {
- if (!me.getOpt('enableAutoSave')) {
- return;
- }
- if ( !saveKey ) {
- return;
- }
- if ( me._saveFlag ) {
- window.clearTimeout( me._saveFlag );
- }
- if ( me.options.saveInterval > 0 ) {
- me._saveFlag = window.setTimeout( function () {
- save( me );
- }, me.options.saveInterval );
- } else {
- save(me);
- }
- }
- },
- commands:{
- 'clearlocaldata':{
- execCommand:function (cmd, name) {
- if ( saveKey && me.getPreferences( saveKey ) ) {
- me.removePreferences( saveKey )
- }
- },
- notNeedUndo: true,
- ignoreContentChange:true
- },
- 'getlocaldata':{
- execCommand:function (cmd, name) {
- return saveKey ? me.getPreferences( saveKey ) || '' : '';
- },
- notNeedUndo: true,
- ignoreContentChange:true
- },
- 'drafts':{
- execCommand:function (cmd, name) {
- if ( saveKey ) {
- me.body.innerHTML = me.getPreferences( saveKey ) || '<p>'+domUtils.fillHtml+'</p>';
- me.focus(true);
- }
- },
- queryCommandState: function () {
- return saveKey ? ( me.getPreferences( saveKey ) === null ? -1 : 0 ) : -1;
- },
- notNeedUndo: true,
- ignoreContentChange:true
- }
- }
- }
- });
|