Merge branch 'master' into wip_leon_T7094_logo_image_upload_in_boilerplate
[roojs1] / roojs-debug.js
index 9f05d6a..1142247 100644 (file)
@@ -45652,6 +45652,8 @@ Roo.htmleditor.Filter.prototype = {
                     return;
                 
                 case this.tag === true: // everything
+                case e.tagName.indexOf(":") > -1 && typeof(this.tag) == 'object' && this.tag.indexOf(":") > -1:
+                case e.tagName.indexOf(":") > -1 && typeof(this.tag) == 'string' && this.tag == ":":
                 case typeof(this.tag) == 'object' && this.tag.indexOf(e.tagName) > -1: // array and it matches.
                 case typeof(this.tag) == 'string' && this.tag == e.tagName: // array and it matches.
                     if (this.replaceTag && false === this.replaceTag(e)) {
@@ -46079,6 +46081,7 @@ Roo.htmleditor.FilterWord = function(cfg)
     // no need to apply config.
     this.replaceDocBullets(cfg.node);
     
+    // this is disabled as the removal is done by other filters;
    // this.walk(cfg.node);
     
     
@@ -46208,16 +46211,29 @@ Roo.extend(Roo.htmleditor.FilterWord, Roo.htmleditor.Filter,
     replaceDocBullets : function(doc)
     {
         // this is a bit odd - but it appears some indents use ql-indent-1
+        //Roo.log(doc.innerHTML);
         
-        var listpara = doc.getElementsByClassName('ql-indent-1');
+        var listpara = doc.getElementsByClassName('MsoListParagraphCxSpFirst');
+        for( var i = 0; i < listpara.length; i ++) {
+            listpara.item(i).className = "MsoListParagraph";
+        }
+        // this is a bit hacky - we had one word document where h2 had a miso-list attribute.
+        var htwo = doc.getElementsByTagName('h2');
+        for( var i = 0; i < htwo.length; i ++) {
+            if (htwo.item(i).getAttribute('style').match(/mso-list:/)) {
+                htwo.item(i).className = "MsoListParagraph";
+            }
+        }
+        
+        listpara = doc.getElementsByClassName('ql-indent-1');
         while(listpara.length) {
             this.replaceDocBullet(listpara.item(0));
         }
-        
-        var listpara = doc.getElementsByClassName('MsoListParagraph');
+        listpara = doc.getElementsByClassName('MsoListParagraph');
         while(listpara.length) {
             this.replaceDocBullet(listpara.item(0));
         }
+      
     },
     
     replaceDocBullet : function(p)
@@ -46287,6 +46303,10 @@ Roo.extend(Roo.htmleditor.FilterWord, Roo.htmleditor.Filter,
             if (nlvl > lvl) {
                 //new indent
                 var nul = doc.createElement('ul'); // what about number lists...
+                if (!last_li) {
+                    last_li = doc.createElement('li');
+                    stack[lvl].appendChild(last_li);
+                }
                 last_li.appendChild(nul);
                 stack[nlvl] = nul;
                 
@@ -47808,7 +47828,17 @@ Roo.htmleditor.KeyEnter.prototype = {
         var pc = range.closest([ 'ol', 'ul']);
         var pli = range.closest('li');
         if (!pc || e.ctrlKey) {
-            sel.insertNode('br', 'after'); 
+            // on it list, or ctrl pressed.
+            if (!e.ctrlKey) {
+                sel.insertNode('br', 'after'); 
+            } else {
+                // only do this if we have ctrl key..
+                var br = doc.createElement('br');
+                br.className = 'clear';
+                br.setAttribute('style', 'clear: both');
+                sel.insertNode(br, 'after'); 
+            }
+            
          
             this.core.undoManager.addEvent();
             this.core.fireEditorEvent(e);
@@ -48172,9 +48202,11 @@ Roo.extend(Roo.htmleditor.BlockFigure, Roo.htmleditor.Block, {
                 store : {
                     xtype : 'SimpleStore',
                     data : [
-                        ['50%'],
+                        ['100%'],
                         ['80%'],
-                        ['100%']
+                        ['50%'],
+                        ['20%'],
+                        ['10%']
                     ],
                     fields : [ 'val'],
                     xns : Roo.data
@@ -50283,7 +50315,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
             });
             new Roo.htmleditor.FilterBlack({ node : d, tag : this.black});
             // should be fonts..
-            new Roo.htmleditor.FilterKeepChildren({node : d, tag : [ 'FONT', 'O:P' ]} );
+            new Roo.htmleditor.FilterKeepChildren({node : d, tag : [ 'FONT', ':' ]} );
             new Roo.htmleditor.FilterParagraph({ node : d });
             new Roo.htmleditor.FilterSpan({ node : d });
             new Roo.htmleditor.FilterLongBr({ node : d });
@@ -50973,6 +51005,7 @@ Roo.extend(Roo.HtmlEditorCore, Roo.Component,  {
     cleanWord : function(node)
     {
         new Roo.htmleditor.FilterWord({ node : node ? node : this.doc.body });
+        new Roo.htmleditor.FilterKeepChildren({node : node ? node : this.doc.body, tag : [ 'FONT', ':' ]} );
         
     },
    
@@ -68071,6 +68104,7 @@ Roo.XTemplate.from = function(el){
  * @cfg {Number} errorTimeout default 3000
  * @cfg {Number} minWidth default 300
  * @cfg {Number} minHeight default 300
+ * @cfg {Number} outputMaxWidth default 1200
  * @cfg {Array} buttons default ['rotateLeft', 'pictureBtn', 'rotateRight']
  * @cfg {Boolean} isDocument (true|false) default false
  * @cfg {String} url action url
@@ -68208,6 +68242,7 @@ Roo.extend(Roo.dialog.UploadCropbox, Roo.Component,  {
     cropData : false,
     minWidth : 300,
     minHeight : 300,
+    outputMaxWidth : 1200,
     file : false,
     exif : {},
     baseRotate : 1,
@@ -68274,8 +68309,6 @@ Roo.extend(Roo.dialog.UploadCropbox, Roo.Component,  {
     
     onRender : function(ct, position)
     {
-        console.log("On Render");
-        console.log(this);
         Roo.dialog.UploadCropbox.superclass.onRender.call(this, ct, position);
 
         if(this.el){
@@ -68451,7 +68484,6 @@ Roo.extend(Roo.dialog.UploadCropbox, Roo.Component,  {
         e.preventDefault();
         
         if(typeof(this.selectorEl.dom.files) == 'undefined' || !this.selectorEl.dom.files.length){
-            console.log("EMPTY RETURN");
             return;
         }
         
@@ -68494,30 +68526,6 @@ Roo.extend(Roo.dialog.UploadCropbox, Roo.Component,  {
         this.imageEl.OriginWidth = this.imageEl.naturalWidth || this.imageEl.width;
         this.imageEl.OriginHeight = this.imageEl.naturalHeight || this.imageEl.height;
 
-        var _this = this;
-
-        var errorMsg = "";
-
-        if(this.imageEl.OriginWidth < this.minWidth) {
-            errorMsg = "Image width should be at least " + this.minWidth + "\n";
-        }
-
-        if(this.imageEl.OriginHeight < this.minHeight) {
-            errorMsg = "Image height should be at least " + this.minHeight + "\n";
-        }
-
-        if(errorMsg.length != '') {
-            Roo.Msg.show({
-                title: 'Error',
-                msg: errorMsg,
-                buttons: {ok : true},
-                fn: function(res) {
-                    _this.selectorEl.dom.value = '';
-                    _this.selectorEl.dom.click();
-                }
-            });
-        }
-
         if(this.fireEvent('loadcanvas', this, this.imageEl) != false){
         
             this.bodyEl.un('click', this.beforeSelectFile, this);
@@ -68598,18 +68606,30 @@ Roo.extend(Roo.dialog.UploadCropbox, Roo.Component,  {
         
         var maxX = Math.ceil(minX + this.thumbEl.getWidth() - this.canvasEl.width);
         var maxY = Math.ceil(minY + this.thumbEl.getHeight() - this.canvasEl.height);
-        
+
+        if(minX > maxX) {
+            var tempX = minX;
+            minX = maxX;
+            maxX = tempX;
+        }
+
+        if(minY > maxY) {
+            var tempY = minY;
+            minY = maxY;
+            maxY = tempY;
+        }
+
         var x = Roo.isTouch ? e.browserEvent.touches[0].pageX : e.getPageX();
         var y = Roo.isTouch ? e.browserEvent.touches[0].pageY : e.getPageY();
         
         x = x - this.mouseX;
         y = y - this.mouseY;
-        
+
         var bgX = Math.ceil(x + this.previewEl.getLeft(true));
         var bgY = Math.ceil(y + this.previewEl.getTop(true));
         
-        bgX = (minX < bgX) ? minX : ((maxX > bgX) ? maxX : bgX);
-        bgY = (minY < bgY) ? minY : ((maxY > bgY) ? maxY : bgY);
+        bgX = (bgX < minX) ? minX : ((bgX > maxX) ? maxX : bgX);
+        bgY = (bgY < minY) ? minY : ((bgY > maxY) ? maxY : bgY);
         
         this.previewEl.setLeft(bgX);
         this.previewEl.setTop(bgY);
@@ -68630,13 +68650,13 @@ Roo.extend(Roo.dialog.UploadCropbox, Roo.Component,  {
         e.stopEvent();
         
         this.startScale = this.scale;
-        console.log("START SCALE: " + this.scale);
         this.scale = (e.getWheelDelta() == 1) ? (this.scale + 1) : (this.scale - 1);
-        console.log("END SCALE: " + this.scale);
+        
         if(!this.zoomable()){
             this.scale = this.startScale;
             return;
         }
+
         
         this.draw();
         
@@ -68645,36 +68665,18 @@ Roo.extend(Roo.dialog.UploadCropbox, Roo.Component,  {
     
     zoomable : function()
     {
-        console.log("THUMBEL");
-        console.log(this.thumbEl);
         var minScale = this.thumbEl.getWidth() / this.minWidth;
         
         if(this.minWidth < this.minHeight){
             minScale = this.thumbEl.getHeight() / this.minHeight;
         }
-
-        console.log("MINSCALE: " + minScale);
         
         var width = Math.ceil(this.imageEl.OriginWidth * this.getScaleLevel() / minScale);
         var height = Math.ceil(this.imageEl.OriginHeight * this.getScaleLevel() / minScale);
 
+
         var maxWidth = this.imageEl.OriginWidth;
         var maxHeight = this.imageEl.OriginHeight;
-
-        if(this.imageEl.OriginWidth / this.imageEl.OriginHeight  > this.minWidth / this.minHeight && this.imageEl.OriginHeight < this.minHeight) {
-            maxHeight = this.minHeight;
-            maxWidth = this.imageEl.OriginWidth / this.imageEl.OriginHeight * this.minHeight;
-        }
-        if(this.imageEl.OriginWidth / this.imageEl.OriginHeight  < this.minWidth / this.minHeight && this.imageEl.OriginWidth < this.minWidth) {
-            maxWidth = this.minWidth;
-            maxHeight = this.imageEl.OriginHeight /this.imageEl.OriginWidth * this.minWidth;
-        }
-
-        console.log("GETSCALELEVEL: " + this.getScaleLevel());
-        console.log("width: " + width);
-        console.log("height: " + height);
-        console.log("maxWidth: " + maxWidth);
-        console.log("maxHeight: " + maxHeight);
         
         if(
                 this.isDocument &&
@@ -68704,8 +68706,8 @@ Roo.extend(Roo.dialog.UploadCropbox, Roo.Component,  {
                 !this.isDocument &&
                 (this.rotate == 0 || this.rotate == 180) && 
                 (
-                    width < this.minWidth ||
-                    height < this.minHeight ||
+                    (this.imageEl.OriginWidth >= this.minWidth) && width < this.minWidth ||
+                    (this.imageEl.OriginHeight >= this.minHeight) && height < this.minHeight ||
                     width > maxWidth ||
                     height > maxHeight
                 )
@@ -68956,9 +68958,10 @@ Roo.extend(Roo.dialog.UploadCropbox, Roo.Component,  {
         var canvas = document.createElement("canvas");
         
         var context = canvas.getContext("2d");
-                
-        canvas.width = this.minWidth;
-        canvas.height = this.minHeight;
+
+        canvas.width = this.thumbEl.getWidth() / this.getScaleLevel();
+        
+        canvas.height = this.thumbEl.getHeight() / this.getScaleLevel();
 
         switch (this.rotate) {
             case 0 :
@@ -68969,35 +68972,19 @@ Roo.extend(Roo.dialog.UploadCropbox, Roo.Component,  {
                 var x = (this.thumbEl.getLeft(true) > this.previewEl.getLeft(true)) ? 0 : ((this.previewEl.getLeft(true) - this.thumbEl.getLeft(true)) / this.getScaleLevel());
                 var y = (this.thumbEl.getTop(true) > this.previewEl.getTop(true)) ? 0 : ((this.previewEl.getTop(true) - this.thumbEl.getTop(true)) / this.getScaleLevel());
                 
-                var targetWidth = this.minWidth - 2 * x;
-                var targetHeight = this.minHeight - 2 * y;
-                
-                var scale = 1;
-                
-                if((x == 0 && y == 0) || (x == 0 && y > 0)){
-                    scale = targetWidth / width;
-                }
-                
-                if(x > 0 && y == 0){
-                    scale = targetHeight / height;
-                }
-                
-                if(x > 0 && y > 0){
-                    scale = targetWidth / width;
-                    
-                    if(width < height){
-                        scale = targetHeight / height;
-                    }
-                }
-                
-                context.scale(scale, scale);
-                
-                var sx = Math.min(this.canvasEl.width - this.thumbEl.getWidth(), this.thumbEl.getLeft(true) - this.previewEl.getLeft(true));
-                var sy = Math.min(this.canvasEl.height - this.thumbEl.getHeight(), this.thumbEl.getTop(true) - this.previewEl.getTop(true));
+                var sx = this.thumbEl.getLeft(true) - this.previewEl.getLeft(true);
+                var sy = this.thumbEl.getTop(true) - this.previewEl.getTop(true);
 
                 sx = sx < 0 ? 0 : (sx / this.getScaleLevel());
                 sy = sy < 0 ? 0 : (sy / this.getScaleLevel());
 
+                if(canvas.width > this.outputMaxWidth) {
+                    var scale = this.outputMaxWidth / canvas.width;
+                    canvas.width = canvas.width * scale;
+                    canvas.height = canvas.height * scale;
+                    context.scale(scale, scale);
+                }
+
                 context.drawImage(imageCanvas, sx, sy, width, height, x, y, width, height);
                 
                 break;
@@ -69116,7 +69103,6 @@ Roo.extend(Roo.dialog.UploadCropbox, Roo.Component,  {
                 }
                 
                 context.scale(scale, scale);
-                
                 var sx = Math.min(this.canvasEl.width - this.thumbEl.getWidth(), this.thumbEl.getLeft(true) - this.previewEl.getLeft(true));
                 var sy = Math.min(this.canvasEl.height - this.thumbEl.getHeight(), this.thumbEl.getTop(true) - this.previewEl.getTop(true));
 
@@ -69274,13 +69260,16 @@ Roo.extend(Roo.dialog.UploadCropbox, Roo.Component,  {
             }
             
         }
-        
+
+        if(this.imageEl.OriginWidth < this.minWidth || this.imageEl.OriginHeight < this.minHeight) {
+            this.baseScale = width / this.minWidth;
+        }
+
         return;
     },
     
     getScaleLevel : function()
     {
-        console.log("BASESCALE: " + this.baseScale);
         return this.baseScale * Math.pow(1.02, this.scale);
     },
     
@@ -69410,13 +69399,16 @@ Roo.extend(Roo.dialog.UploadCropbox, Roo.Component,  {
         var formData = new FormData();
 
         formData.append('returnHTML', 'NO');
-        
+
         if(crop){
             formData.append('crop', crop);
-        }
-        
-        if(typeof(file) != 'undefined' && (typeof(file.id) == 'undefined' || file.id * 1 < 1)){
-            formData.append(this.paramName, file, file.name);
+            var blobBin = atob(crop.split(',')[1]);
+            var array = [];
+            for(var i = 0; i < blobBin.length; i++) {
+                array.push(blobBin.charCodeAt(i));
+            }
+            var croppedFile =new Blob([new Uint8Array(array)], {type: this.cropType});
+            formData.append(this.paramName, croppedFile, file.name);
         }
         
         if(typeof(file.filename) != 'undefined'){
@@ -69426,7 +69418,7 @@ Roo.extend(Roo.dialog.UploadCropbox, Roo.Component,  {
         if(typeof(file.mimetype) != 'undefined'){
             formData.append('mimetype', file.mimetype);
         }
-        
+
         if(this.fireEvent('arrange', this, formData) != false){
             this.xhr.send(formData);
         };
@@ -69489,7 +69481,9 @@ Roo.extend(Roo.dialog.UploadCropbox, Roo.Component,  {
         }
         
         this.file = file;
-        this.cropType = file.type;
+        if(typeof(file.type) != 'undefined' && file.type.length != 0) {
+            this.cropType = file.type;
+        }
         
         var _this = this;