Wordpress/wp-admin/js/revisions.min.js

1 line
14 KiB
JavaScript
Raw Normal View History

window.wp=window.wp||{};(function(b){var a;a=wp.revisions={model:{},view:{},controller:{}};a.settings=typeof _wpRevisionsSettings==="undefined"?{}:_wpRevisionsSettings;a.debug=true;a.log=function(){if(a.debug){console.log.apply(console,arguments)}};if(a.settings.selectedRevision){a.settings.selectedRevision=parseInt(a.settings.selectedRevision,10)}a.model.Slider=Backbone.Model.extend({defaults:{value:0,min:0,max:1,step:1}});a.model.Tooltip=Backbone.Model.extend({defaults:{revision:null,position:0}});a.model.Revision=Backbone.Model.extend({});a.model.Revisions=Backbone.Collection.extend({model:a.model.Revision,comparator:function(e,c){var g=e.get("dateUnix");var d=c.get("dateUnix");var f=(g>d)-(g<d);if(f===0&&e.id!=c.id){f=e.id<c.id?-1:1}return f},next:function(d){var c=this.indexOf(d);if(c!==-1&&c!==this.length-1){return this.at(c+1)}},prev:function(d){var c=this.indexOf(d);if(c!==-1&&c!==0){return this.at(c-1)}}});a.model.Field=Backbone.Model.extend({});a.model.Fields=Backbone.Collection.extend({model:a.model.Field});a.model.Diff=Backbone.Model.extend({initialize:function(d,e){var c=this.get("fields");this.unset("fields");this.fields=new a.model.Fields(c)}});a.model.Diffs=Backbone.Collection.extend({initialize:function(d,c){this.revisions=c.revisions;this.requests={}},model:a.model.Diff,ensure:function(h,d){var g=this.get(h);var f=this.requests[h];var c=b.Deferred();var e={};if(g){c.resolveWith(d,[g])}else{this.trigger("ensure:load",e);_.each(e,_.bind(function(i){if(this.requests[i]){delete e[i]}},this));if(!f){e[h]=true;f=this.load(_.keys(e))}f.done(_.bind(function(){c.resolveWith(d,[this.get(h)])},this))}return c.promise()},loadNew:function(d){var c=this;_.each(d,function(f,e){if(c.get(f)){delete d[e]}});wp.revisions.log("loadNew",d);if(d.length){return this.load(d)}else{return b.Deferred().resolve().promise()}},load:function(c){wp.revisions.log("load",c);return this.fetch({data:{compare:c},remove:false})},loadLast:function(c){var d;c=c||1;d=_.last(this.getProximalDiffIds(),c);if(d.length){return this.loadNew(d)}else{return b.Deferred().resolve().promise()}},loadLastUnloaded:function(c){var d;c=c||1;d=_.last(this.getUnloadedProximalDiffIds(),c);if(d.length){return this.loadNew(d)}else{return b.Deferred().resolve().promise()}},getProximalDiffIds:function(){var d=0,c=[];this.revisions.each(_.bind(function(e){c.push(d+":"+e.id);d=e.id},this));return c},getUnloadedProximalDiffIds:function(){var c=this.getProximalDiffIds();c=_.object(c,c);_.each(c,_.bind(function(d){if(this.get(d)){delete c[d]}},this));return _.toArray(c)},loadAllBy:function(d){d=d||20;var c=this.getUnloadedProximalDiffIds();if(c.length){return this.loadLastUnloaded(d).always(_.bind(function(){this.loadAllBy(d)},this))}},sync:function(g,e,d){if("read"===g){d=d||{};d.context=this;d.data=_.extend(d.data||{},{action:"get-revision-diffs",post_id:a.settings.postId});var c=wp.xhr.send(d);var f=this.requests;if(d.data.compare){_.each(d.data.compare,function(h){f[h]=c})}c.always(function(){if(d.data.compare){_.each(d.data.compare,function(h){delete f[h]})}});return c}else{return Backbone.Model.prototype.sync.apply(this,arguments)}}});a.model.FrameState=Backbone.Model.extend({initialize:function(c,d){var e={};this._debouncedEnsureDiff=_.debounce(this._ensureDiff,200);this.revisions=d.revisions;this.diffs=new a.model.Diffs([],{revisions:this.revisions});e.to=this.revisions.get(a.settings.selectedRevision);e.from=this.revisions.prev(e.to);this.set(e);this.router=new a.Router({model:this});Backbone.history.start();this.listenTo(this,"change:from",this.changeRevisionHandler);this.listenTo(this,"change:to",this.changeRevisionHandler);this.listenTo(this,"update:revisions",this.loadSurrounding);this.listenTo(this,"change:compareTwoMode",this.changedMode);this.updateDiff({immediate:true})},changedMode:function(){this.loadSurrounding(this.get("from"),this.get("to"))},loadSurrounding:function(d,c){if(this.get("compareTwoMode")){}else{if(this.revisions.length){this.diffs.loadLastUnloaded(10).always(_.bind(function(){this.diffs.loadAllBy(50)},this))}}},diff:function(){return