티스토리 툴바


모두 함께 해요~~ ^^
Posted by (김영근) naucika
제 11회 2011 한국자바개발자 컨퍼런스 같이 가시죠~ :-)
Posted by (김영근) naucika

Posted by (김영근) naucika
이번에 swfupload 를 쓰기는 좀 버겁고, 그렇다고 기본제공하는 파일업로드는 너무 단순해서 재미없고, 해서 봤더니 ext-ux 의 fileupload 모듈이 있어서, 그걸 좀 썻습니다. 다 좋은데, 최종 처리결과를 받는중 계속해서 xml 태그가 잘못됬다고 파징 오류가 납니다. 아래결과를 파징하는동안 말이죠.

하지만, 아무리 봐도 응답값은 별 문제도 없었는데, 왜 그런가 했는데, 엉뚱한 ext core 의 오류였습니다. 이것도 IE계열에서만 발생합니다. 아래처럼 코딩되어 있더군요. 따옴표까 짱구입니다. 왜 그랬을까요. 흠.. 더불어, 리턴되는 json 결과물이 없으면 역시 스크립트 오류가 발생됩니다.

doDecode = function(json){
return "("+json+')');
},

걍 간단하게 아래처럼 코딩해서 엎어쳤습니다. Ext.Ajax 쪽이라, 오버라이드 하기도 삐리리 하더군요.

 doDecode = function(json){
            return json==="" ? "" : eval("("+json+")")    
        },

더불어! 응답측에서 일반송신을 하면 html 로 인식해 <pre> 태그가 붙어서 갑니다. 응답할때 헤더에 "text/plain"을 명시해 주어야 합니다.

더불어! 파일업로드시 Ajax 방식이 아닌, 그냥 일반 POST 로 처리하려면 폼패널에 simpleupload 를 'true" 로 주시면 됩니다. 그러면 페이지를 대상으로 일반 송신으로 처리됩니다. (이것도 때로는 유용할듯.)

더불어! api 에 설명이 잘 나와있습니다. 무조건 api 는 잘 읽어봐야 하는데...쩝.

Posted by (김영근) naucika
ext 이전 버젼에선, 메뉴 컨텍스트가 하단을 클릭해도 자동으로 사이즈가 맞춰졌었는데, ext3 부터는 사이즈가 강제로 조정되고, 대신 아래그림 처럼, 스크롤 방향키가 나옵니다. 이걸 좋아졌다고 해야하나.. 어쨋거나 저를 포함한 많은 사용자들은 오히려 불편해 합니다. 보기엔 좋을지 몰라도 말이죠..


덕분에, 또 오버라이드가 필요하게 되었습니다. 아래처럼 Menu 를 오버라이드 하게되면, 스크롤바 대신에, 사이즈를 재조정하여 맞추게 됩니다. enableScrolling 속성은 false 로 주시구요.

Ext.override(Ext.menu.Menu, {
    show: function(el, pos, parentMenu) {
        if (this.floating) {
            this.parentMenu = parentMenu;
            if (!this.el) {
                this.render();
                this.doLayout(false, true);
            }
            //if(this.fireEvent('beforeshow', this) !== false){
            this.showAt(this.el.getAlignToXY(el, pos || this.defaultAlign, this.defaultOffsets), parentMenu, false);
            //}
        } else {
            Ext.menu.Menu.superclass.show.call(this);
        }
    },
    showAt: function(xy, parentMenu, _e) {
        if (this.fireEvent('beforeshow', this) !== false) {
            this.parentMenu = parentMenu;
            if (!this.el) {
                this.render();
            }
            if (_e !== false) {
                xy = this.el.adjustForConstraints(xy);
            }
            this.el.setXY(xy);
            if (this.enableScrolling) {
                this.constrainScroll(xy[1]);
            }
            this.el.show();
            Ext.menu.Menu.superclass.onShow.call(this);
            if (Ext.isIE) {
                this.layout.doAutoSize();
                if (!Ext.isIE8) {
                    this.el.repaint();
                }
            }
            this.hidden = false;
            this.focus();
            this.fireEvent("show", this);
        }
    }
});
Posted by (김영근) naucika