1 line
11 KiB
JavaScript
1 line
11 KiB
JavaScript
window.wp=window.wp||{};(function(f){var b,e,c,a,d;d=wp.revisions=function(){c=d.Diff=new c()};_.extend(d,{model:{},view:{},controller:{}});a=d.model.l10n=typeof wpRevisionsL10n==="undefined"?{}:wpRevisionsL10n;d.model.settings=a.settings||{};delete a.settings;c=d.controller.Diff=Backbone.Model.extend({rightDiff:1,leftDiff:1,revisions:null,leftHandleRevisions:null,rightHandleRevisions:null,revisionsInteractions:null,autosaves:true,showSplitView:true,singleRevision:true,leftModelLoading:false,rightModelLoading:false,tickmarkView:null,slider:null,constructor:function(){this.slider=new d.view.Slider();if(null===this.revisions){this.revisions=new e();this.startRightModelLoading();var g=this;this.revisions.fetch({success:function(){g.stopRightModelLoading();g.completeApplicationSetup()}})}},reloadToLoadRevisions:function(k,i){var g=this,j=k.where({revision_toload:true}),h=0;_.each(j,function(l){if(l.get("ID")==d.model.settings.revision_id){g.rightDiff=g.revisions.indexOf(l)+1}});_.each(j,function(l){_.delay(function(){l.fetch({update:true,add:false,remove:false,success:function(n){n.set("revision_toload","false");if(0===k.where({revision_toload:true}).length){g.stopModelLoadingSpinner()}g.tickmarkView.render();var m=n.get("lines_added")+n.get("lines_deleted"),o="vsmall";if(m>1&&m<=3){o="small"}else{if(m>3&&m<=5){o="med"}else{if(m>5&&m<=10){o="large"}else{if(m>10){o="vlarge"}}}}n.set("scope_of_changes",o);if(0!==g.rightDiff&&n.get("ID")===g.revisions.at(g.rightDiff-1).get("ID")){g.revisionView.render()}}})},h);h=h+150})},startLeftModelLoading:function(){this.leftModelLoading=true;f("#revision-diff-container").addClass("left-model-loading")},stopLeftModelLoading:function(){this.leftModelLoading=false},startRightModelLoading:function(){this.rightModelLoading=true;f("#revision-diff-container").addClass("right-model-loading")},stopRightModelLoading:function(){this.rightModelLoading=false},stopModelLoadingSpinner:function(){f("#revision-diff-container").removeClass("right-model-loading");f("#revision-diff-container").removeClass("left-model-loading")},reloadModel:function(){if(this.singleRevision){this.reloadModelSingle()}else{this.reloadLeftRight()}},reloadModelSingle:function(){var g=this;g.revisions.reload({showAutosaves:g.autosaves,showSplitView:g.showSplitView});g.startRightModelLoading();g.revisions.fetch({success:function(){var h=g.revisions.length;g.revisionView.model=g.revisions;g.revisionView.render();g.reloadToLoadRevisions(g.revisions);g.tickmarkView.model=g.revisions;g.tickmarkView.render();g.slider.refresh({max:h-1,value:g.rightDiff-1},true)},error:function(){g.stopRightModelLoading()}})},reloadLeft:function(){var g=this;g.startLeftModelLoading();g.leftHandleRevisions=new e({},{compareTo:g.revisions.at(g.rightDiff-1).get("ID"),showAutosaves:g.autosaves,showSplitView:g.showSplitView,rightHandleAt:g.rightDiff});g.leftHandleRevisions.fetch({success:function(){g.stopLeftModelLoading();g.reloadToLoadRevisions(g.leftHandleRevisions);g.tickmarkView.model=g.leftHandleRevisions;g.slider.refresh({max:g.revisions.length});if(g.rightDiff>g.revisions.length){g.rightDiff=g.revisions.length}},error:function(){g.stopLeftModelLoading()}})},reloadRight:function(){var g=this;g.startRightModelLoading();g.rightHandleRevisions=new e({},{compareTo:g.revisions.at(g.leftDiff).get("ID")-1,showAutosaves:g.autosaves,showSplitView:g.showSplitView,leftHandleAt:g.leftDiff});g.rightHandleRevisions.fetch({success:function(){g.stopRightModelLoading();g.reloadToLoadRevisions(g.rightHandleRevisions);g.tickmarkView.model=g.rightHandleRevisions;g.slider.refresh({max:g.revisions.length,values:[g.leftDiff,g.rightDiff]},true)},error:function(h){g.stopRightModelLoading()}})},reloadLeftRight:function(){this.startRightModelLoading();this.startLeftModelLoading();this.reloadLeft();this.reloadRight()},completeApplicationSetup:function(){this.revisionView=new d.view.Diff({model:this.revisions});this.revisionView.render();this.reloadToLoadRevisions(this.revisions);this.revisionsInteractions=new d.view.Interact({model:this.revisions});this.revisionsInteractions.render();this.tickmarkView=new d.view.Tickmarks({model:this.revisions});this.tickmarkView.render();this.tickmarkView.resetTicks()}});d.view.Slider=Backbone.View.extend({el:f("#diff-slider"),singleRevision:true,initialize:function(g){this.options=_.defaults(g||{},{value:0,min:0,max:1,step:1})},slide:function(g,h){if(this.singleRevision){c.rightDiff=(h.value+1);c.revisionView.render()}else{if(h.values[0]===h.values[1]){return false}if(f(h.handle).hasClass("left-handle")){if(c.leftModelLoading){return false}c.leftDiff=h.values[0]}else{if(c.rightModelLoading){return false}c.rightDiff=h.values[1]}if(0===c.leftDiff){f("#revision-diff-container").addClass("current-version")}else{f("#revision-diff-container").removeClass("current-version")}c.revisionView.render()}},start:function(g,h){if(this.singleRevision){return}if(f(h.handle).hasClass("left-handle")){if(c.leftModelLoading){return false}c.revisionView.draggingLeft=true;if(c.revisionView.model!==c.leftHandleRevisions&&null!==c.leftHandleRevisions){c.revisionView.model=c.leftHandleRevisions;c.tickmarkView.model=c.leftHandleRevisions;c.tickmarkView.render()}c.leftDiffStart=h.values[0]}else{if(c.rightModelLoading||0===c.rightHandleRevisions.length){return false}if(c.revisionView.model!==c.rightHandleRevisions&&null!==c.rightHandleRevisions){c.revisionView.model=c.rightHandleRevisions;c.tickmarkView.model=c.rightHandleRevisions;c.tickmarkView.render()}c.revisionView.draggingLeft=false;c.rightDiffStart=h.values[1]}},stop:function(g,h){if(this.singleRevision){return}if(f(h.handle).hasClass("left-handle")){if(c.leftDiffStart!==h.values[0]){c.reloadRight()}}else{if(c.rightDiffStart!==h.values[1]){c.reloadLeft()}}},addTooltip:function(h,g){h.attr("title","").tooltip({track:false,position:{my:"left-30 top-66",at:"top left",using:function(i,j){f(this).css(i);f("<div>").addClass("arrow").addClass(j.vertical).addClass(j.horizontal).appendTo(f(this))}},show:false,hide:false,content:function(){return g}})},width:function(){return f("#diff-slider").width()},setWidth:function(g){return f("#diff-slider").width(g)},refresh:function(h,g){f("#diff-slider").slider("option",h);if(g){f("#diff-slider").trigger("slide")}},option:function(g){return f("#diff-slider").slider("option",g)},render:function(){var g=this;f("#diff-slider").slider({slide:f.proxy(g.slide,g),start:f.proxy(g.start,g),stop:f.proxy(g.stop,g)});this.refresh(this.options)}});d.view.Tickmarks=Backbone.View.extend({el:f("#diff-slider-ticks"),template:wp.template("revision-ticks"),model:b,resetTicks:function(){var k=c.slider.option("max");var j=c.slider.width();var h=c.singleRevision?0:1;var g=Math.floor(j/(k-h));g=(g>50)?50:g;g=(g<10)?10:g;j=g*(k-h)+1;c.slider.setWidth(j);f(".diff-slider-ticks-wrapper").width(j);f("#diff-slider-ticks").width(j);var i=f(".revision-tick").width();if(g!==i){f(".revision-tick").each(function(){f(this).css("margin-right",g-1+"px")});if(!c.singleRevision){f(".revision-tick").first().remove()}f(".revision-tick").last().css("margin-right","0")}},render:function(){var g=this;if(null!==g.model){var h="";_.each(g.model.models,function(i){h=h+g.template(i.toJSON())});g.$el.html(h)}g.resetTicks();return g}});d.view.Interact=Backbone.View.extend({el:f("#revision-interact"),template:wp.template("revision-interact"),events:{"click #next":"nextRevision","click #previous":"previousRevision"},render:function(){this.$el.html(this.template);var g=c.revisions.length;c.slider.singleRevision=c.singleRevision;c.slider.render();if(c.singleRevision){c.slider.refresh({value:c.rightDiff-1,min:0,max:g-1});f("#revision-diff-container").removeClass("comparing-two-revisions")}else{c.slider.refresh({values:[c.leftDiff,c.rightDiff+1],min:1,max:g+1,range:true});f("#revision-diff-container").addClass("comparing-two-revisions");f("#diff-slider a.ui-slider-handle").first().addClass("left-handle");f("#diff-slider a.ui-slider-handle").last().addClass("right-handle")}return this},nextRevision:function(){if(c.rightDiff<this.model.length){c.rightDiff=c.rightDiff+1}c.revisionView.render();c.slider.refresh({value:c.rightDiff-1},true)},previousRevision:function(){if(c.rightDiff>1){c.rightDiff=c.rightDiff-1}c.revisionView.render();c.slider.refresh({value:c.rightDiff-1},true)}});d.view.Diff=Backbone.View.extend({el:f("#revisions-diff"),template:wp.template("revisions-diff"),draggingLeft:false,events:{"click #compare-two-revisions":"compareTwo","click #restore-revision":"restore"},render:function(){var h="";var g;if(!c.singleRevision){if(this.draggingLeft){g=c.leftDiff-1;if(this.model.at(g)){h=this.template(this.model.at(g).toJSON())}}else{g=c.rightDiff-1;if(this.model.at(g)){h=this.template(this.model.at(g).toJSON())}}}else{if(this.model.at(c.rightDiff-1)){h=this.template(this.model.at(c.rightDiff-1).toJSON())}}this.$el.html(h);if(this.model.length<2){f("#diff-slider").hide();f(".diff-slider-ticks-wrapper").hide()}if(!c.singleRevision){c.slider.addTooltip(f("a.ui-slider-handle.left-handle"),(c.leftDiff<0)?"":c.revisions.at(c.leftDiff-1).get("titleTooltip"));c.slider.addTooltip(f("a.ui-slider-handle.right-handle"),(c.rightDiff>c.revisions.length)?"":c.revisions.at(c.rightDiff-1).get("titleTooltip"))}else{c.slider.addTooltip(f("a.ui-slider-handle"),(c.rightDiff>c.revisions.length)?"":c.revisions.at(c.rightDiff-1).get("titleTooltip"))}this.toggleCompareTwoCheckbox();f("#restore-revision").toggle(!c.revisions.at(c.rightDiff-1).get("is_current_revision"));return this},toggleCompareTwoCheckbox:function(){if(this.model.length<3){f("#toggle-revision-compare-mode").hide()}f("#compare-two-revisions").prop("checked",!c.singleRevision)},compareTwo:function(){if(f("#compare-two-revisions").is(":checked")){c.singleRevision=false;if(1===c.rightDiff){c.rightDiff=2}c.revisionView.draggingLeft=false;d.model.settings.revision_id="";c.reloadLeftRight();c.revisionView.model=c.rightHandleRevisions}else{c.singleRevision=true;c.revisionView.draggingLeft=false;c.reloadModelSingle()}c.revisionsInteractions.render();c.tickmarkView.render()},restore:function(){document.location=f("#restore-revision").data("restoreLink")}});b=d.model.Revision=Backbone.Model.extend({idAttribute:"ID",urlRoot:ajaxurl+"?action=revisions-data&show_autosaves=true&show_split_view=true&nonce="+d.model.settings.nonce,defaults:{ID:0,titleTo:"",titleTooltip:"",titleFrom:"",diff:'<div class="diff-loading"><div class="spinner"></div></div>',restoreLink:"",revision_toload:false,lines_added:0,lines_deleted:0,scope_of_changes:"none",previous_revision_id:0,is_current_revision:false},url:function(){if(c.singleRevision){return this.urlRoot+"&single_revision_id="+this.id+"&compare_to="+this.get("previous_revision_id")+"&post_id="+d.model.settings.post_id}else{return this.collection.url()+"&single_revision_id="+this.id}}});e=d.Revisions=Backbone.Collection.extend({model:b,urlRoot:ajaxurl+"?action=revisions-data",initialize:function(h,g){this.options=_.defaults(g||{},{compareTo:d.model.settings.post_id,post_id:d.model.settings.post_id,showAutosaves:true,showSplitView:true,rightHandleAt:0,leftHandleAt:0,nonce:d.model.settings.nonce})},url:function(){return this.urlRoot+"&compare_to="+this.options.compareTo+"&post_id="+this.options.post_id+"&show_autosaves="+this.options.showAutosaves+"&show_split_view="+this.options.showSplitView+"&right_handle_at="+this.options.rightHandleAt+"&left_handle_at="+this.options.leftHandleAt+"&nonce="+this.options.nonce},reload:function(g){this.options=_.defaults(g||{},this.options)}});f(wp.revisions)}(jQuery)); |