').append(constr, reset)),
(quality? jQuery(row).append(jQuery(label).text(fm.i18n('quality')), quality, jQuery('
')) : jQuery()),
(isJpeg? jQuery(row).append(jQuery(label).text(fm.i18n('8pxgrid')).addClass('elfinder-resize-grid8'), grid8px) : jQuery()),
jQuery(row).append(jQuery(label).text(fm.i18n('scale')), uiprop),
jQuery(row).append(preset)
);
if (api2) {
uicrop.append(
jQuery(row).append(jQuery(label).text('X'), pointX),
jQuery(row).append(jQuery(label).text('Y')).append(pointY),
jQuery(row).append(jQuery(label).text(fm.i18n('width')), offsetX),
jQuery(row).append(jQuery(label).text(fm.i18n('height')), offsetY, jQuery('
').append(constrc, reset.clone(true))),
(quality? jQuery(row).append(jQuery(label).text(fm.i18n('quality')), quality.clone(true), jQuery('
')) : jQuery()),
(isJpeg? jQuery(row).append(jQuery(label).text(fm.i18n('8pxgrid')).addClass('elfinder-resize-grid8')) : jQuery()),
jQuery(row).append(presetc)
);
uirotate.append(
jQuery(row).addClass('elfinder-resize-degree').append(
jQuery(label).text(fm.i18n('rotate')),
degree,
jQuery('
').text(fm.i18n('degree')),
jQuery('
').append(uideg270, uideg90)[ctrgrup]()
),
jQuery(row).css('height', '20px').append(uidegslider),
((quality)? jQuery(row)[losslessRotate < 1? 'show' : 'hide']().addClass('elfinder-resize-quality').append(
jQuery(label).text(fm.i18n('quality')),
quality.clone(true),
jQuery('
')) : jQuery()
),
jQuery(row).append(jQuery(label).text(fm.i18n('bgcolor')), bg, picker, reseter),
jQuery(row).css('height', '20px').append(pallet)
);
uideg270.on('click', function() {
rdegree = rdegree - 90;
rotate.update(rdegree);
});
uideg90.on('click', function(){
rdegree = rdegree + 90;
rotate.update(rdegree);
});
}
dialog.append(uitype).on('resize', function(e){
e.stopPropagation();
});
if (api2) {
control.append(/*jQuery(row), */uiresize, uicrop.hide(), uirotate.hide());
} else {
control.append(/*jQuery(row), */uiresize);
}
rhandle.append('
',
'
',
'
',
'
',
'
',
'
',
'
');
preview.append(spinner).append(rhandle.hide()).append(img.hide());
if (api2) {
rhandlec.css('position', 'absolute')
.append('
',
'
',
'
',
'
',
'
',
'
',
'
',
'
',
'
',
'
',
'
',
'
');
preview.append(basec.css('position', 'absolute').hide().append(imgc, rhandlec.append(coverc)));
preview.append(imgr.hide());
}
preview.css('overflow', 'hidden');
dialog.append(preview, control);
buttons[fm.i18n('btnApply')] = save;
if (useSaveAs) {
buttons[fm.i18n('btnSaveAs')] = function() { requestAnimationFrame(saveAs); };
}
buttons[fm.i18n('btnCancel')] = function() { dialog.elfinderdialog('close'); };
dialog.find('input,button').addClass('elfinder-tabstop');
base = self.fmDialog(dialog, {
title : fm.escape(file.name),
width : dialogWidth,
resizable : false,
buttons : buttons,
open : function() {
var doDimReq = function(force) {
dimreq = fm.request({
data : {cmd : 'dim', target : file.hash, substitute : substituteImg? 400 : ''},
preventDefault : true
})
.done(function(data) {
if (!data.url && needPng) {
dialog.elfinderdialog('close');
fm.error(['errOpen', file.name]);
} else {
if (data.dim) {
var dim = data.dim.split('x');
file.width = dim[0];
file.height = dim[1];
setdim(dim);
if (data.url) {
img.attr('src', data.url);
imgc.attr('src', data.url);
imgr.attr('src', data.url);
}
return init();
}
}
});
},
needPng = !{'image/jpeg':true,'image/png':true,'image/gif':true,}[file.mime],
substituteImg = fm.option('substituteImg', file.hash) && (needPng || file.size > options.dimSubImgSize)? true : false,
hasSize = (file.width && file.height)? true : false;
dMinBtn = base.find('.ui-dialog-titlebar .elfinder-titlebar-minimize').hide();
fm.bind('resize', dinit);
img.attr('src', src).one('error.dimreq', function() {
doDimReq(true);
});
imgc.attr('src', src);
imgr.attr('src', src);
if (api2) {
imgr.on('mousedown touchstart', rotate.start)
.on('touchend', rotate.stop);
base.on('mouseup', rotate.stop);
}
if (hasSize && !substituteImg) {
return init();
}
if (file.size > (options.getDimThreshold || 0)) {
img.off('error.dimreq');
doDimReq();
} else if (hasSize) {
return init();
}
},
close : function() {
if (api2) {
imgr.off('mousedown touchstart', rotate.start)
.off('touchend', rotate.stop);
jQuery(document).off('mouseup', rotate.stop);
}
fm.unbind('resize', dinit);
jQuery(this).elfinderdialog('destroy');
},
resize : function(e, data) {
if (data && data.minimize === 'off') {
dinit();
}
}
}).attr('id', id).closest('.ui-dialog').addClass(clsediting);
// for IE < 9 dialog mising at open second+ time.
if (fm.UA.ltIE8) {
jQuery('.elfinder-dialog').css('filter', '');
}
coverc.css({ 'opacity': 0.2, 'background-color': '#fff', 'position': 'absolute'}),
rhandlec.css('cursor', 'move');
rhandlec.find('.elfinder-resize-handle-point').css({
'background-color' : '#fff',
'opacity': 0.5,
'border-color':'#000'
});
if (! api2) {
uitype.find('.api2').remove();
}
control.find('input,select').prop('disabled', true);
control.find('input.elfinder-resize-quality')
.next('span').addClass('elfinder-resize-jpgsize').attr('title', fm.i18n('roughFileSize'));
},
id, dialog, size0, size1
;
if (!files.length || files[0].mime.indexOf('image/') === -1) {
return dfrd.reject();
}
id = 'resize-'+fm.namespace+'-'+files[0].hash;
dialog = fmnode.find('#'+id);
if (dialog.length) {
dialog.elfinderdialog('toTop');
return dfrd.resolve();
}
fm.openUrl(files[0].hash, 'sameorigin', function(src) {
open(files[0], id, src);
});
return dfrd;
};
};
(function ($) {
var findProperty = function (styleObject, styleArgs) {
var i = 0 ;
for( i in styleArgs) {
if (typeof styleObject[styleArgs[i]] != 'undefined')
return styleArgs[i];
}
styleObject[styleArgs[i]] = '';
return styleArgs[i];
};
jQuery.cssHooks.rotate = {
get: function(elem, computed, extra) {
return jQuery(elem).rotate();
},
set: function(elem, value) {
jQuery(elem).rotate(value);
return value;
}
};
jQuery.cssHooks.transform = {
get: function(elem, computed, extra) {
var name = findProperty( elem.style ,
['WebkitTransform', 'MozTransform', 'OTransform' , 'msTransform' , 'transform'] );
return elem.style[name];
},
set: function(elem, value) {
var name = findProperty( elem.style ,
['WebkitTransform', 'MozTransform', 'OTransform' , 'msTransform' , 'transform'] );
elem.style[name] = value;
return value;
}
};
jQuery.fn.rotate = function(val) {
var r;
if (typeof val == 'undefined') {
if (!!window.opera) {
r = this.css('transform').match(/rotate\((.*?)\)/);
return ( r && r[1])?
Math.round(parseFloat(r[1]) * 180 / Math.PI) : 0;
} else {
r = this.css('transform').match(/rotate\((.*?)\)/);
return ( r && r[1])? parseInt(r[1]) : 0;
}
}
this.css('transform',
this.css('transform').replace(/none|rotate\(.*?\)/, '') + 'rotate(' + parseInt(val) + 'deg)');
return this;
};
jQuery.fx.step.rotate = function(fx) {
if ( fx.state == 0 ) {
fx.start = jQuery(fx.elem).rotate();
fx.now = fx.start;
}
jQuery(fx.elem).rotate(fx.now);
};
if (typeof window.addEventListener == "undefined" && typeof document.getElementsByClassName == "undefined") { // IE & IE<9
var GetAbsoluteXY = function(element) {
var pnode = element;
var x = pnode.offsetLeft;
var y = pnode.offsetTop;
while ( pnode.offsetParent ) {
pnode = pnode.offsetParent;
if (pnode != document.body && pnode.currentStyle['position'] != 'static') {
break;
}
if (pnode != document.body && pnode != document.documentElement) {
x -= pnode.scrollLeft;
y -= pnode.scrollTop;
}
x += pnode.offsetLeft;
y += pnode.offsetTop;
}
return { x: x, y: y };
};
var StaticToAbsolute = function (element) {
if ( element.currentStyle['position'] != 'static') {
return ;
}
var xy = GetAbsoluteXY(element);
element.style.position = 'absolute' ;
element.style.left = xy.x + 'px';
element.style.top = xy.y + 'px';
};
var IETransform = function(element,transform){
var r;
var m11 = 1;
var m12 = 1;
var m21 = 1;
var m22 = 1;
if (typeof element.style['msTransform'] != 'undefined'){
return true;
}
StaticToAbsolute(element);
r = transform.match(/rotate\((.*?)\)/);
var rotate = ( r && r[1]) ? parseInt(r[1]) : 0;
rotate = rotate % 360;
if (rotate < 0) rotate = 360 + rotate;
var radian= rotate * Math.PI / 180;
var cosX =Math.cos(radian);
var sinY =Math.sin(radian);
m11 *= cosX;
m12 *= -sinY;
m21 *= sinY;
m22 *= cosX;
element.style.filter = (element.style.filter || '').replace(/progid:DXImageTransform\.Microsoft\.Matrix\([^)]*\)/, "" ) +
("progid:DXImageTransform.Microsoft.Matrix(" +
"M11=" + m11 +
",M12=" + m12 +
",M21=" + m21 +
",M22=" + m22 +
",FilterType='bilinear',sizingMethod='auto expand')")
;
var ow = parseInt(element.style.width || element.width || 0 );
var oh = parseInt(element.style.height || element.height || 0 );
radian = rotate * Math.PI / 180;
var absCosX =Math.abs(Math.cos(radian));
var absSinY =Math.abs(Math.sin(radian));
var dx = (ow - (ow * absCosX + oh * absSinY)) / 2;
var dy = (oh - (ow * absSinY + oh * absCosX)) / 2;
element.style.marginLeft = Math.floor(dx) + "px";
element.style.marginTop = Math.floor(dy) + "px";
return(true);
};
var transform_set = jQuery.cssHooks.transform.set;
jQuery.cssHooks.transform.set = function(elem, value) {
transform_set.apply(this, [elem, value] );
IETransform(elem,value);
return value;
};
}
})(jQuery);;