[Решено] IMCE открывается свернутым в точку

11 мая 2012 в 18:48
Аватар пользователя baroleg baroleg 0 10

При нажатии на кнопку imce или "Выбор на сервере" при загрузке изображения открывается новое окно, но его размеры то ли нулевые, то ли просто точка, потому что окно вообще не видно. Если найти это окно и максимизировать, то все нормально отображается.
IMCE версия - 6.x-2.3
CKEditor - 6.x-1.8

Комментарии

Тоже самое, если вместо imce поставить ckfinder. Т.е. проблема где-то при вызове окна.
Пытался в imce.js прописать явные размеры

//default file send function. sends the file to the new window.
send: function (fid) {
  fid && window.open(imce.getURL(fid), '', 'width='+ 760 +',height='+ 560 +',resizable=1');
},

не помогло

11 мая 2012 в 18:51

у меня в хроме такая же проблема, в firefox вроде нормально, но хотелось бы чтобы повсюду работало...
пробовал ковырять код ничего не помогло ((

11 мая 2012 в 20:35

Я в хроме с такой проблемой столкнулся. Потом как-то сама пропала. Может после обновления, причин не выяснил.

11 мая 2012 в 21:38

Проблема не в версии редактора а в самом Хроме. В 18 версии появился баг с функциями
.moveTo() и .resizeTo() в 19 его вроде исправили но в 20 он появился снова...
Мучался с ней и на 6 и на 7 Друпале.

но "погуглив" я решил проблему...
надо исправить файл ckeditor.js (код обфускачен)
в файде надо найти код функции popup:

e.extend(a.editor.prototype,{popup:function(m,n,o,p)...

и всю функцию заменить на

e.extend(a.editor.prototype,{
        popup:function(m,n,o,p){
                n=n||'80%';o=o||'70%';
                if(typeof n=='string'&&n.length>1&&n.substr(n.length-1,1)=='%')
                n=parseInt(window.screen.width*parseInt(n,10)/100,10);
               
                if(typeof o=='string'&&o.length>1&&o.substr(o.length-1,1)=='%')
                        o=parseInt(window.screen.height*parseInt(o,10)/100,10);
               
                if(n<640)n=640;
               
                if(o<420)o=420;
               
                var q=parseInt((window.screen.height-o)/2,10),r=parseInt((window.screen.width-n)/2,10);
                p=(p||'location=no,menubar=no,toolbar=no,dependent=no,minimizable=no,modal=yes,alwaysRaised=yes,fullscreen=yes,resizable=yes,scrollbars=yes')
                +',width='+n
                +',height='+o
                +',top='+q
                +',left='+r;
               
                var s=window.open('',null,p,true);
                if(!s)return false;
                try{
                        var ua = navigator.userAgent.toLowerCase();
                        var useResize = true;
                        if (ua.indexOf('chrome') > -1){
                                var chromeVersion = ua.replace(/^.*chrome\/([\d]+).*$/i, '$1');
                                if(chromeVersion >= 18){useResize = false;}
                        }
                        if (useResize){
                                s.moveTo( r, q );
                                s.resizeTo( n, o );
                        }
                        s.location.href=m;
                        s.focus();
                }
                catch(u){
                        s=window.open(m,null,p,true);
                }
                return true;
        }
});
24 июля 2012 в 13:35