Forum(질의응답)

한국센차유저그룹 – 포럼 (Korea Sencha User Group – Forum)

드디어 숙원 과제였던 토론 장소를 만들게 되었습니다.!!

우리 한국센차유저그룹은 Facebook 중심으로 활동해 왔습니다.
Blog가 있었지만, WordPress 기반이라 가입을 해야 하는 등 불편한 사항이 많았습니다.

Q/A가 Facebook 에서 이루어 지니 검색엔진에도 노출되지 않고 불편한 점이 많았습니다.
이번에 Discourse 기반의 Forum을 개설하였습니다.

저도 열심히 답변 달고 좋은 글 많이 올리도록 하겠습니다.
많은 질문과 좋은 글 부탁드립니다.!!

회원 가입 없이 로그인 할 수 있습니다.

OAuth 로그인이 가능합니다.!!

  • G-Mail
  • Facebook
  • Twitter

계정을 통해 로그인 하실 수 있고, 글도 쓸 수 있습니다.

Markdown 문법을 지원합니다.

개발자라면 Markdown 이죠!!

글을 작성 하실 때, Markdown 문법으로 작성이 가능합니다.
그동안 WordPress 에서 “HTML 편집기” 로 글을 어떻게 썼는지… 생각만 해도 끔찍 했습니다.

마크다운(Markdown) 문법이 생소하신 분은 아래 경로를 참고 하세요

12 Comments

  1. kimdaeil

    안녕하세요. 센챠로 개발을 해보고 싶어서 찾던 중 들어왔습니다.
    더욱 좋은 사이트가 되면 좋겠습니다.

    Reply

    • 김종광

      아악… 죄송합니다.
      3년전 글이 군요. ㅠㅠ

      댓글 알람 메일이 왔을텐데 확인을 못했습니다. 죄송합니다.

      말씀 감사합니다.^^

      Reply

  2. 강필규

    운영자님

    오늘 공개소프트웨어 행사에서 만나게되 반가웠읍니다.

    sencha touch는 익숙하지 않지만 유저그룹 사이트가 보기 좋읍니다

    이 게시판 좋은데 어떤 기술을 적용한건지요.

    또 봅시다

    Reply

    • 김종광

      아악… 죄송합니다.
      3년전 글이 군요. ㅠㅠ

      댓글 알람 메일이 왔을텐데 확인을 못했습니다. 죄송합니다.

      그냥 워드프레스로 만들었습니다.^^
      테마 이쁘고 저렴한 걸로 교체만 했습니다.

      사이트 맨 아래 보시면, 구매한 곳 주소가 있습니다. ^^

      Reply

  3. 박정환

    질문좀 올려도되나요?

    http://intern.event-page.co.kr/parkjh/sencha/park.zip
    위파일을 보시면
    어떤 가이드문서를보고 빌드까지해놧어요

    로컬서버에서 보여지는거까진햇는데
    이클립스로옮겨서 안드로이드프로젝트?로 한다음에
    기기에서 테스트해보고싶은데 몰르겟습니다.

    조언좀요..

    Reply

    • 김종광

      아악… 죄송합니다.
      3년전 글이 군요. ㅠㅠ

      댓글 알람 메일이 왔을텐데 확인을 못했습니다. 죄송합니다.

      잘 되셨길 바래요. ㅠㅠ

      Reply

  4. 고산묵월

    금액이 상당하던데…어떤건 30일 trial이 있고…
    5인이하는 무료인가요?
    센차 제품별 라이센스 정책을 알고 싶습니다.

    Reply

    • 김종광

      아악… 죄송합니다.
      3년전 글이 군요. ㅠㅠ

      댓글 알람 메일이 왔을텐데 확인을 못했습니다. 죄송합니다.

      소규모 SI 개발사는
      무료 정책이 생겼습니다.

      하지만, 나머지 경우는 구매를 하셔야 합니다. ㅠㅠ

      Reply

  5. lee

    그런데 제가 요즈음 프로그램을 만들고 있는데요

    트리인데요

    이 트리는 CURD를 이 트리에서 다 이루어지게 하고 이동도 되게 하는 프로그램을 만들고 있습니다

    그런데 책을 참조해서 만들었습니다

    그런데 삭제를 하면 destroy에 있는 url을 타야 하는데 create, update, destroy가 다 같이 실행이 되어버리더군요

    저는 삭제를 하면 삭제만 수정하면 수정만 , 생성하게 되면 생성에 해당되는 url로 가게 하고 싶습니다

    그리고 제가 소스도 첨부해서 보내드리오니 혹시 안되는 이유가 뭔지에 대해서 좀 알려주시면 너무나 감사하겠습니다

    read : ‘/auto/tree/json/jsonobject.do’,
    create: ‘/auto/tree/EgovTreeCreateInsert.do’,
    update: ‘/auto/tree/EgovTreeCreateUpdate.do’,
    destroy: ‘/auto/tree/EgovTreeCreateDelete.do’
    로딩시에 read만 정상으로 불러오고 나머지는 삭제할때, 수정할때 추가할때는 create,upate,destatroy가 다 실행이 되더군요

    저는 트리에 아이템을 추가하면 create만 실행되고, 트리에 아이템을 수정하면 udate만 수정되고 , 트리에 아이템을 삭제하면 destroy만 실행되게 하고 싶은데 이게 잘 안되네요

    고수님 께서 저의 미숙한사람에게 한수 일깨워 주십시요

    그럼 답변을 기다리겠습니다

    소스는 다음과 같습니다

    test

    Ext.onReady(function(){
    var selNodeObj=null;

    var store = Ext.create(‘Ext.data.TreeStore’, {
    id: ‘store’,
    autoHeight:true,

    autoLoad: false,
    // autoSync: true,
    root :{
    text : ‘프로젝트명’,
    name : ’1단’,
    expanded : false,
    /* children : [{text : ‘공종1′,name : ’2단’,expanded : true,
    children : [{text : ‘공종1_1′,name : ’3단’,expanded : true,
    children : [{text : ‘공종1_1_1′,name : ’4단’,expanded : true,
    children : [{text : '공종1_1_1_1',name : '5단',expanded : true}]
    }]
    }]
    },
    {text : ‘공종2′,name : ’2단’,expanded : true,
    children : [{text : '공종1_1',name : '3단',expanded : true},{text : '공종1_1',name : '3단',expanded : true}],
    },
    {text : ‘공종3′,name : ’2단’,expanded : true},
    {text : ‘공종4′,name : ’2단’,expanded : true}] */
    },
    proxy : {
    type : ‘ajax’,
    api: {
    read : ‘/auto/tree/json/jsonobject.do’,
    create: ‘/auto/tree/EgovTreeCreateInsert.do’,
    update: ‘/auto/tree/EgovTreeCreateUpdate.do’,
    destroy: ‘/auto/tree/EgovTreeCreateDelete.do’

    },
    reader: {
    type: ‘json’,
    successProperty:’success’,
    rootProperty: ‘children’,
    // rootProperty: ‘items’,
    messageProperty:’message’
    // ,root:’tree’
    }
    ,writer:{
    type:’json’,
    writeAllFields:true,
    // root:’auto’
    encode:true,
    rootProperty:’children’
    }

    },
    listeners: {

    /* update: function(records, operation, success) {
    console.log(“트리에서 글 수정 후 여기를 탑니다.”);
    // var treePanels = Ext.getCmp(‘tree’);
    // var selNodes = treePanels.getSelectionModel().getSelection()[0];
    //alert(rec);
    console.log(“success :: “+success);
    console.log(“operation :: “+operation);
    console.log(“records :: “+records);
    console.log(“records.id ::”+records.id);

    // console.log(selNodes.data.text);

    if(selNodeObj !=null){
    console.log(“hhh”+selNodeObj.id);
    console.log(selNodeObj.data.text);
    var treePanel = Ext.getCmp(‘tree’);
    var tp= treePanel.getSelectionModel().getSelection()[0];
    console.log(tp.id);
    console.log(tp.data.text);

    }

    }

    /* Ext.Msg.show({
    title:st,
    msg: ‘저장되지않은 사항이 있습니다. 변경사항을 저장하시겠습니까?’,
    buttons: Ext.Msg.YESNOCANCEL,
    animEl: ‘elId’,
    icon: Ext.MessageBox.QUESTION
    }); */
    }

    });

    /* store.on(‘load’,function(){
    var updated = store.getUpdatedRecords();
    Ext.each(updated, function(record,index){
    console.log(‘New(‘,index,’)’,record.data);
    });
    store.sync();
    });
    */
    var tree = Ext.create(‘Ext.tree.Panel’, {
    title: ‘에스제이테크시스템’,
    id: ‘tree’,
    rootVisible: true,
    multiSelect: true,
    store: store,
    viewConfig: {
    plugins: {
    ptype: ‘treeviewdragdrop’,
    enableDrag: true,
    enableDrop: true
    }
    },
    multiSelect: true,
    plugins: ‘cellediting’,
    columns: [{
    header:'프로젝트명',
    xtype: 'treecolumn',
    dataIndex: 'text',
    flex: 1,
    editor: {
    xtype: 'textfield',
    allowBlank: false,
    allowOnlyWhitespace: false
    }
    },{header:'합계',dataIndex:'disable',flex:1, editor: {
    xtype: 'textfield',
    allowBlank: false,
    allowOnlyWhitespace: false
    },width:500}],
    renderTo: Ext.get(‘treeList’),
    listeners:{
    itemcontextmenu : function( object, record, item, index, e){
    e.stopEvent();
    var menu = Ext.create(‘Ext.menu.Menu’,{
    items : [
    {
    text: '추가',
    handler: onItemClick,
    iconCls: 'icon-edit'
    },
    {
    text: '삭제',

    handler: onItemClick
    }
    ]
    });
    menu.showAt(e.getXY());
    }
    /* ,itemdblclick: function( record, item, index, e, eOpts ){
    item.appendChild({
    text: ‘Hi! I am a leaf’,
    leaf: true
    });
    }
    */
    }

    });
    function onItemClick(item){
    node = store.getNodeById(“Node1″);
    var treePanel = Ext.getCmp(‘tree’);
    if(item.text==’삭제’){

    var record = treePanel.getSelectionModel().getSelection()[0];

    //record.destroy() ;
    record.remove(true);
    //store.remove(true);
    store.sync();

    }else if(item.text==’추가’){
    // alert(‘추가’);

    // var thisNode = Ext.getCmp(‘tree’).getRootNode().appendChild({
    /* var thisNode = Ext.getCmp(‘tree’).getRootNode().appendChild({

    text:”

    });
    Ext.getCmp(“tree”).selectPath(thisNode.getPath());
    */

    var selNode = treePanel.getSelectionModel().getSelection()[0];
    selNodeObj=selNode;
    var appendedChild = selNode.appendChild({
    // task: ‘Task1′,
    // user: ‘Name’,
    // duration: ’10′,
    text : ‘추가’,
    name : ’1단’,
    leaf: true
    });
    var newRecords = store.getNewRecords();
    Ext.each(newRecords, function(record,index){
    console.log(‘New (‘,index,’)’,record.get(‘name’));
    });
    store.sync();

    }

    }

    });

    #treeListbox{width:30%; height:500px; border:3px solid #ddd;}

    Reply

    • 김종광

      아악… 죄송합니다.
      2년전 글이 군요. ㅠㅠ

      댓글 알람 메일이 왔을텐데 확인을 못했습니다. 죄송합니다.

      잘 되셨길 바래요. ㅠㅠ

      Reply

  6. Emily

    안녕하세요 검색하다가 보게 되서 궁금한게 있어 질문드려보아요
    혹시 아실까해서요
    제가 https://icomoon.io/ 에서 아이콘으로 쓸려고 저만의 웹폰트를 만들어서 센차에 awesome 폰트 있는곳에 같이 넣고 이리저리 파일을 수정해봤는데 안나와서요 혹시 센차에 웹폰트 넣는 방법 아시나요?? 알려주심 너무 감사할거 같아요

    Reply

kimdaeil 에 응답 남기기 Cancel

*


7 + = fifteen

Leather Throw Pillows