Вход Регистрация
Файл: wordpress/wp-admin/js/image-edit.js
Строк: 415
<?php
/* global imageEditL10n, ajaxurl, confirm */

(function($) {
var 
imageEdit window.imageEdit = {
    
iasapi : {},
    
hold : {},
    
postid '',
    
_view false,

    
intval : function(f) {
        return 
0;
    },

    
setDisabled : function(els) {
        if ( 
) {
            
el.removeClass('disabled');
            $(
'input'el).removeAttr('disabled');
        } else {
            
el.addClass('disabled');
            $(
'input'el).prop('disabled'true);
        }
    },

    
init : function(postid) {
        var 
thisold = $('#image-editor-' t.postid),
            
t.intval( $('#imgedit-x-' postid).val() ),
            
t.intval( $('#imgedit-y-' postid).val() );

        if ( 
t.postid !== postid && old.length ) {
            
t.close(t.postid);
        }

        
t.hold.t.hold.ow x;
        
t.hold.t.hold.oh y;
        
t.hold.xy_ratio y;
        
t.hold.sizer parseFloat( $('#imgedit-sizer-' postid).val() );
        
t.postid postid;
        $(
'#imgedit-response-' postid).empty();

        $(
'input[type="text"]''#imgedit-panel-' postid).keypress(function(e) {
            var 
e.keyCode;

            if ( 
36 && 41 ) {
                $(
this).blur();
            }

            if ( 
13 === ) {
                
e.preventDefault();
                
e.stopPropagation();
                return 
false;
            }
        });
    },

    
toggleEditor : function(postidtoggle) {
        var 
wait = $('#imgedit-wait-' postid);

        if ( 
toggle ) {
            
wait.height( $('#imgedit-panel-' postid).height() ).fadeIn('fast');
        } else {
            
wait.fadeOut('fast');
        }
    },

    
toggleHelp : function(el) {
        $( 
el ).parents'.imgedit-group-top' ).toggleClass'imgedit-help-toggled' ).find'.imgedit-help' ).slideToggle'fast' );
        return 
false;
    },

    
getTarget : function(postid) {
        return $(
'input[name="imgedit-target-' postid '"]:checked''#imgedit-save-target-' postid).val() || 'full';
    },

    
scaleChanged : function(postidx) {
        var 
= $('#imgedit-scale-width-' postid), = $('#imgedit-scale-height-' postid),
        
warn = $('#imgedit-scale-warn-' postid), w1 ''h1 '';

        if ( 
) {
            
h1 = ( w.val() !== '' ) ? Math.roundw.val() / this.hold.xy_ratio ) : '';
            
h.valh1 );
        } else {
            
w1 = ( h.val() !== '' ) ? Math.roundh.val() * this.hold.xy_ratio ) : '';
            
w.valw1 );
        }

        if ( ( 
h1 && h1 this.hold.oh ) || ( w1 && w1 this.hold.ow ) ) {
            
warn.css('visibility''visible');
        } else {
            
warn.css('visibility''hidden');
        }
    },

    
getSelRatio : function(postid) {
        var 
this.hold.wthis.hold.h,
            
this.intval( $('#imgedit-crop-width-' postid).val() ),
            
this.intval( $('#imgedit-crop-height-' postid).val() );

        if ( 
&& ) {
            return 
':' Y;
        }

        if ( 
&& ) {
            return 
':' y;
        }

        return 
'1:1';
    },

    
filterHistory : function(postidsetSize) {
        
// apply undo state to history
        
var history = $('#imgedit-history-' postid).val(), popnoiop = [];

        if ( 
history !== '' ) {
            
history JSON.parse(history);
            
pop this.intval( $('#imgedit-undone-' postid).val() );
            if ( 
pop ) {
                while ( 
pop ) {
                    
history.pop();
                    
pop--;
                }
            }

            if ( 
setSize ) {
                if ( !
history.length ) {
                    
this.hold.this.hold.ow;
                    
this.hold.this.hold.oh;
                    return 
'';
                }

                
// restore
                
history[history.length 1];
                
o.|| o.|| o.|| false;

                if ( 
) {
                    
this.hold.o.fw;
                    
this.hold.o.fh;
                }
            }

            
// filter the values
            
for ( n in history ) {
                
history[n];
                if ( 
i.hasOwnProperty('c') ) {
                    
op[n] = { 'c': { 'x'i.c.x'y'i.c.y'w'i.c.w'h'i.c.} };
                } else if ( 
i.hasOwnProperty('r') ) {
                    
op[n] = { 'r'i.r.};
                } else if ( 
i.hasOwnProperty('f') ) {
                    
op[n] = { 'f'i.f.};
                }
            }
            return 
JSON.stringify(op);
        }
        return 
'';
    },

    
refreshEditor : function(postidnoncecallback) {
        var 
thisdataimg;

        
t.toggleEditor(postid1);
        
data = {
            
'action''imgedit-preview',
            
'_ajax_nonce'nonce,
            
'postid'postid,
            
'history't.filterHistory(postid1),
            
'rand't.intval(Math.random() * 1000000)
        };

        
img = $('<img id="image-preview-' postid '" />')
            .
on('load', function() {
                var 
max1max2parent = $('#imgedit-crop-' postid), imageEdit;

                
parent.empty().append(img);

                
// w, h are the new full size dims
                
max1 Math.maxt.hold.wt.hold.);
                
max2 Math.max( $(img).width(), $(img).height() );
                
t.hold.sizer max1 max2 max2 max1 1;

                
t.initCrop(postidimgparent);
                
t.setCropSelection(postid0);

                if ( (
typeof callback !== 'undefined') && callback !== null ) {
                    
callback();
                }

                if ( $(
'#imgedit-history-' postid).val() && $('#imgedit-undone-' postid).val() === '0' ) {
                    $(
'input.imgedit-submit-btn''#imgedit-panel-' postid).removeAttr('disabled');
                } else {
                    $(
'input.imgedit-submit-btn''#imgedit-panel-' postid).prop('disabled'true);
                }

                
t.toggleEditor(postid0);
            })
            .
on('error', function() {
                $(
'#imgedit-crop-' postid).empty().append('<div class="error"><p>' imageEditL10n.error '</p></div>');
                
t.toggleEditor(postid0);
            })
            .
attr('src'ajaxurl '?' + $.param(data));
    },

    
action : function(postidnonceaction) {
        var 
thisdatawhfwfh;

        if ( 
t.notsaved(postid) ) {
            return 
false;
        }

        
data = {
            
'action''image-editor',
            
'_ajax_nonce'nonce,
            
'postid'postid
        
};

        if ( 
'scale' === action ) {
            
= $('#imgedit-scale-width-' postid),
            
= $('#imgedit-scale-height-' postid),
            
fw t.intval(w.val()),
            
fh t.intval(h.val());

            if ( 
fw ) {
                
w.focus();
                return 
false;
            } else if ( 
fh ) {
                
h.focus();
                return 
false;
            }

            if ( 
fw === t.hold.ow || fh === t.hold.oh ) {
                return 
false;
            }

            
data['do'] = 'scale';
            
data.fwidth fw;
            
data.fheight fh;
        } else if ( 
'restore' === action ) {
            
data['do'] = 'restore';
        } else {
            return 
false;
        }

        
t.toggleEditor(postid1);
        $.
post(ajaxurldata, function(r) {
            $(
'#image-editor-' postid).empty().append(r);
            
t.toggleEditor(postid0);
            
// refresh the attachment model so that changes propagate
            
if ( t._view ) {
                
t._view.refresh();
            }
        });
    },

    
save : function(postidnonce) {
        var 
data,
            
target this.getTarget(postid),
            
history this.filterHistory(postid0),
            
self this;

        if ( 
'' === history ) {
            return 
false;
        }

        
this.toggleEditor(postid1);
        
data = {
            
'action''image-editor',
            
'_ajax_nonce'nonce,
            
'postid'postid,
            
'history'history,
            
'target'target,
            
'context': $('#image-edit-context').length ? $('#image-edit-context').val() : null,
            
'do''save'
        
};

        $.
post(ajaxurldata, function(r) {
            var 
ret JSON.parse(r);

            if ( 
ret.error ) {
                $(
'#imgedit-response-' postid).html('<div class="error"><p>' ret.error '</p></div>');
                
imageEdit.close(postid);
                return;
            }

            if ( 
ret.fw && ret.fh ) {
                $(
'#media-dims-' postid).htmlret.fw ' &times; ' ret.fh );
            }

            if ( 
ret.thumbnail ) {
                $(
'.thumbnail''#thumbnail-head-' postid).attr('src'''+ret.thumbnail);
            }

            if ( 
ret.msg ) {
                $(
'#imgedit-response-' postid).html('<div class="updated"><p>' ret.msg '</p></div>');
            }

            if ( 
self._view ) {
                
self._view.save();
            } else {
                
imageEdit.close(postid);
            }
        });
    },

    
open : function( postidnonceview ) {
        
this._view view;

        var 
dfddataelem = $('#image-editor-' postid), head = $('#media-head-' postid),
            
btn = $('#imgedit-open-btn-' postid), spin btn.siblings('.spinner');

        
btn.prop('disabled'true);
        
spin.addClass'is-active' );

        
data = {
            
'action''image-editor',
            
'_ajax_nonce'nonce,
            
'postid'postid,
            
'do''open'
        
};

        
dfd = $.ajax({
            
url:  ajaxurl,
            
type'post',
            
datadata
        
}).done(function( html ) {
            
elem.htmlhtml );
            
head.fadeOut('fast', function(){
                
elem.fadeIn('fast');
                
btn.removeAttr('disabled');
                
spin.removeClass'is-active' );
            });
        });

        return 
dfd;
    },

    
imgLoaded : function(postid) {
        var 
img = $('#image-preview-' postid), parent = $('#imgedit-crop-' postid);

        
this.initCrop(postidimgparent);
        
this.setCropSelection(postid0);
        
this.toggleEditor(postid0);
    },

    
initCrop : function(postidimageparent) {
        var 
this,
            
selW = $('#imgedit-sel-width-' postid),
            
selH = $('#imgedit-sel-height-' postid),
            
$img;

        
t.iasapi = $(image).imgAreaSelect({
            
parentparent,
            
instancetrue,
            
handlestrue,
            
keystrue,
            
minWidth3,
            
minHeight3,

            
onInit: function( img ) {
                
// Ensure that the imgareaselect wrapper elements are position:absolute
                // (even if we're in a position:fixed modal)
                
$img = $( img );
                
$img.next().css'position''absolute' )
                    .
nextAll'.imgareaselect-outer' ).css'position''absolute' );

                
parent.children().mousedown(function(e){
                    var 
ratio falseseldefRatio;

                    if ( 
e.shiftKey ) {
                        
sel t.iasapi.getSelection();
                        
defRatio t.getSelRatio(postid);
                        
ratio = ( sel && sel.width && sel.height ) ? sel.width ':' sel.height defRatio;
                    }

                    
t.iasapi.setOptions({
                        
aspectRatioratio
                    
});
                });
            },

            
onSelectStart: function() {
                
imageEdit.setDisabled($('#imgedit-crop-sel-' postid), 1);
            },

            
onSelectEnd: function(imgc) {
                
imageEdit.setCropSelection(postidc);
            },

            
onSelectChange: function(imgc) {
                var 
sizer imageEdit.hold.sizer;
                
selW.valimageEdit.round(c.width sizer) );
                
selH.valimageEdit.round(c.height sizer) );
            }
        });
    },

    
setCropSelection : function(postidc) {
        var 
sel;

        
|| 0;

        if ( !
|| ( c.width && c.height ) ) {
            
this.setDisabled($('.imgedit-crop''#imgedit-panel-' postid), 0);
            
this.setDisabled($('#imgedit-crop-sel-' postid), 0);
            $(
'#imgedit-sel-width-' postid).val('');
            $(
'#imgedit-sel-height-' postid).val('');
            $(
'#imgedit-selection-' postid).val('');
            return 
false;
        }

        
sel = { 'x'c.x1'y'c.y1'w'c.width'h'c.height };
        
this.setDisabled($('.imgedit-crop''#imgedit-panel-' postid), 1);
        $(
'#imgedit-selection-' postid).valJSON.stringify(sel) );
    },

    
close : function(postidwarn) {
        
warn warn || false;

        if ( 
warn && this.notsaved(postid) ) {
            return 
false;
        }

        
this.iasapi = {};
        
this.hold = {};

        
// If we've loaded the editor in the context of a Media Modal, then switch to the previous view,
        // whatever that might have been.
        
if ( this._view ){
            
this._view.back();
        }

        
// In case we are not accessing the image editor in the context of a View, close the editor the old-skool way
        
else {
            $(
'#image-editor-' postid).fadeOut('fast', function() {
                $(
'#media-head-' postid).fadeIn('fast');
                $(
this).empty();
            });
        }


    },

    
notsaved : function(postid) {
        var 
= $('#imgedit-history-' postid).val(),
            
history = ( !== '' ) ? JSON.parse(h) : [],
            
pop this.intval( $('#imgedit-undone-' postid).val() );

        if ( 
pop history.length ) {
            if ( 
confirm( $('#imgedit-leaving-' postid).html() ) ) {
                return 
false;
            }
            return 
true;
        }
        return 
false;
    },

    
addStep : function(oppostidnonce) {
        var 
thiselem = $('#imgedit-history-' postid),
        
history = ( elem.val() !== '' ) ? JSON.parseelem.val() ) : [],
        
undone = $('#imgedit-undone-' postid),
        
pop t.intval(undone.val());

        while ( 
pop ) {
            
history.pop();
            
pop--;
        }
        
undone.val(0); // reset

        
history.push(op);
        
elem.valJSON.stringify(history) );

        
t.refreshEditor(postidnonce, function() {
            
t.setDisabled($('#image-undo-' postid), true);
            
t.setDisabled($('#image-redo-' postid), false);
        });
    },

    
rotate : function(anglepostidnoncet) {
        if ( $(
t).hasClass('disabled') ) {
            return 
false;
        }

        
this.addStep({ 'r': { 'r'angle'fw'this.hold.h'fh'this.hold.}}, postidnonce);
    },

    
flip : function (axispostidnoncet) {
        if ( $(
t).hasClass('disabled') ) {
            return 
false;
        }

        
this.addStep({ 'f': { 'f'axis'fw'this.hold.w'fh'this.hold.}}, postidnonce);
    },

    
crop : function (postidnoncet) {
        var 
sel = $('#imgedit-selection-' postid).val(),
            
this.intval( $('#imgedit-sel-width-' postid).val() ),
            
this.intval( $('#imgedit-sel-height-' postid).val() );

        if ( $(
t).hasClass('disabled') || sel === '' ) {
            return 
false;
        }

        
sel JSON.parse(sel);
        if ( 
sel.&& sel.&& && ) {
            
sel.fw w;
            
sel.fh h;
            
this.addStep({ 'c'sel }, postidnonce);
        }
    },

    
undo : function (postidnonce) {
        var 
thisbutton = $('#image-undo-' postid), elem = $('#imgedit-undone-' postid),
            
pop t.intvalelem.val() ) + 1;

        if ( 
button.hasClass('disabled') ) {
            return;
        }

        
elem.val(pop);
        
t.refreshEditor(postidnonce, function() {
            var 
elem = $('#imgedit-history-' postid),
            
history = ( elem.val() !== '' ) ? JSON.parseelem.val() ) : [];

            
t.setDisabled($('#image-redo-' postid), true);
            
t.setDisabled(buttonpop history.length);
        });
    },

    
redo : function(postidnonce) {
        var 
thisbutton = $('#image-redo-' postid), elem = $('#imgedit-undone-' postid),
            
pop t.intvalelem.val() ) - 1;

        if ( 
button.hasClass('disabled') ) {
            return;
        }

        
elem.val(pop);
        
t.refreshEditor(postidnonce, function() {
            
t.setDisabled($('#image-undo-' postid), true);
            
t.setDisabled(buttonpop 0);
        });
    },

    
setNumSelection : function(postid) {
        var 
selelX = $('#imgedit-sel-width-' postid), elY = $('#imgedit-sel-height-' postid),
            
this.intvalelX.val() ), this.intvalelY.val() ),
            
img = $('#image-preview-' postid), imgh img.height(), imgw img.width(),
            
sizer this.hold.sizerx1y1x2y2ias this.iasapi;

        if ( 
) {
            
elX.val('');
            return 
false;
        }

        if ( 
) {
            
elY.val('');
            return 
false;
        }

        if ( 
&& && ( sel ias.getSelection() ) ) {
            
x2 sel.x1 Math.roundsizer );
            
y2 sel.y1 Math.roundsizer );
            
x1 sel.x1;
            
y1 sel.y1;

            if ( 
x2 imgw ) {
                
x1 0;
                
x2 imgw;
                
elX.valMath.roundx2 sizer ) );
            }

            if ( 
y2 imgh ) {
                
y1 0;
                
y2 imgh;
                
elY.valMath.roundy2 sizer ) );
            }

            
ias.setSelectionx1y1x2y2 );
            
ias.update();
            
this.setCropSelection(postidias.getSelection());
        }
    },

    
round : function(num) {
        var 
s;
        
num Math.round(num);

        if ( 
this.hold.sizer 0.6 ) {
            return 
num;
        }

        
num.toString().slice(-1);

        if ( 
'1' === ) {
            return 
num 1;
        } else if ( 
'9' === ) {
            return 
num 1;
        }

        return 
num;
    },

    
setRatioSelection : function(postidnel) {
        var 
selrthis.intval( $('#imgedit-crop-width-' postid).val() ),
            
this.intval( $('#imgedit-crop-height-' postid).val() ),
            
= $('#image-preview-' postid).height();

        if ( !
this.intval( $(el).val() ) ) {
            $(
el).val('');
            return;
        }

        if ( 
&& ) {
            
this.iasapi.setOptions({
                
aspectRatio':' y
            
});

            if ( 
sel this.iasapi.getSelection(true) ) {
                
Math.ceilsel.y1 + ( ( sel.x2 sel.x1 ) / ( ) ) );

                if ( 
) {
                    
h;
                    if ( 
) {
                        $(
'#imgedit-crop-height-' postid).val('');
                    } else {
                        $(
'#imgedit-crop-width-' postid).val('');
                    }
                }

                
this.iasapi.setSelectionsel.x1sel.y1sel.x2);
                
this.iasapi.update();
            }
        }
    }
};
})(
jQuery);
?>
Онлайн: 0
Реклама