* @cfg {Array} buttons default ['rotateLeft', 'pictureBtn', 'rotateRight']
* @cfg {Boolean} isDocument (true|false) default false
* @cfg {String} url action url
+ * @cfg {String} paramName default 'imageUpload'
+ * @cfg {String} method default POST
+ * @cfg {Boolean} loadMask (true|false) default true
+ * @cfg {Boolean} loadingText default 'Loading...'
*
* @constructor
* Create a new UploadCropbox
* @event exception
* Fire when get exception
* @param {Roo.bootstrap.UploadCropbox} this
- * @param {String} type
- * @param {Object} exception
+ * @param {XMLHttpRequest} xhr
*/
"exception" : true,
/**
buttons : false,
canvasLoaded : false,
isDocument : false,
+ method : 'POST',
+ paramName : 'imageUpload',
+ loadMask : true,
+ loadingText : 'Loading...',
+ maskEl : false,
getAutoCreate : function()
{
tag : 'div',
cls : 'roo-upload-cropbox',
cn : [
+ {
+ tag : 'input',
+ cls : 'roo-upload-cropbox-selector',
+ type : 'file'
+ },
{
tag : 'div',
cls : 'roo-upload-cropbox-body',
style : 'cursor:pointer',
cn : [
- {
- tag : 'input',
- cls : 'roo-upload-cropbox-selector',
- type : 'file'
- },
{
tag : 'div',
cls : 'roo-upload-cropbox-preview'
}, this);
}
+
+ if(this.loadMask){
+ this.maskEl = this.el;
+ }
},
initEvents : function()
this.bodyEl.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay = 'block';
this.selectorEl = this.el.select('.roo-upload-cropbox-selector', true).first();
- this.selectorEl.setVisibilityMode(Roo.Element.DISPLAY).originalDisplay = 'block';
this.selectorEl.hide();
this.previewEl = this.el.select('.roo-upload-cropbox-preview', true).first();
this.imageEl.OriginWidth = this.imageEl.naturalWidth || this.imageEl.width;
this.imageEl.OriginHeight = this.imageEl.naturalHeight || this.imageEl.height;
- if(this.imageEl.OriginWidth < this.minWidth || this.imageEl.OriginHeight < this.minHeight){
- this.reset();
- this.fireEvent('exception', this, 'volume', this.imageEl);
- return;
- }
-
this.bodyEl.un('click', this.beforeSelectFile, this);
this.notifyEl.hide();
this.thumbEl.show();
this.footerEl.show();
-
-
this.baseRotateLevel();
if(this.isDocument){
this.canvasLoaded = true;
+ if(this.loadMask){
+ this.maskEl.unmask();
+ }
+
},
setCanvasPosition : function()
this.cropData = canvas.toDataURL(this.cropType);
- this.fireEvent('crop', this, this.cropData);
+ if(this.fireEvent('crop', this, this.cropData) !== false){
+ this.process(this.file, this.cropData);
+ }
return;
process : function(file, crop)
{
- this.xhr = new XMLHttpRequest();
-
- if(typeof(this.file.id) != 'undefined' && this.file.id * 1 > 0){
- return;
+ if(this.loadMask){
+ this.maskEl.mask(this.loadingText);
}
+ this.xhr = new XMLHttpRequest();
+
file.xhr = this.xhr;
this.xhr.open(this.method, this.url, true);
formData.append('crop', crop);
}
- formData.append(this.paramName, file, file.name);
+ if(typeof(file) != 'undefined' && (typeof(file.id) == 'undefined' || file.id * 1 < 1)){
+ formData.append(this.paramName, file, file.name);
+ }
+
+ if(typeof(file.filename) != 'undefined'){
+ formData.append('filename', file.filename);
+ }
+
+ if(typeof(file.mimetype) != 'undefined'){
+ formData.append('mimetype', file.mimetype);
+ }
if(this.fireEvent('arrange', this, formData) != false){
this.xhr.send(formData);
xhrOnLoad : function(xhr)
{
+ if(this.loadMask){
+ this.maskEl.unmask();
+ }
+
if (xhr.readyState !== 4) {
- this.fireEvent('exception', this, 'xhr', xhr);
+ this.fireEvent('exception', this, xhr);
return;
}
var response = Roo.decode(xhr.responseText);
if(!response.success){
- this.fireEvent('exception', this, 'xhr', xhr);
+ this.fireEvent('exception', this, xhr);
return;
}
xhrOnError : function()
{
+ if(this.loadMask){
+ this.maskEl.unmask();
+ }
+
Roo.log('xhr on error');
var response = Roo.decode(xhr.responseText);
},
- uploadFromSource : function(file, crop)
- {
- this.xhr = new XMLHttpRequest();
-
- this.xhr.open(this.method, this.url, true);
-
- var headers = {
- "Accept": "application/json",
- "Cache-Control": "no-cache",
- "X-Requested-With": "XMLHttpRequest"
- };
-
- for (var headerName in headers) {
- var headerValue = headers[headerName];
- if (headerValue) {
- this.xhr.setRequestHeader(headerName, headerValue);
- }
- }
-
- var _this = this;
-
- this.xhr.onload = function()
- {
- _this.xhrOnLoad(_this.xhr);
- }
-
- this.xhr.onerror = function()
- {
- _this.xhrOnError(_this.xhr);
- }
-
- var formData = new FormData();
-
- formData.append('returnHTML', 'NO');
-
- formData.append('crop', crop);
-
- if(typeof(file.filename) != 'undefined'){
- formData.append('filename', file.filename);
- }
-
- if(typeof(file.mimetype) != 'undefined'){
- formData.append('mimetype', file.mimetype);
- }
-
- if(this.fireEvent('arrange', this, formData) != false){
- this.xhr.send(formData);
- };
- },
-
prepare : function(file)
{
+ if(this.loadMask){
+ this.maskEl.mask(this.loadingText);
+ }
+
this.file = false;
this.exif = {};