Q&A

저희와 같은 웹사이트 운영자들은 XE의 쪽지 답장할때 방식 같은 것을 너무나 잘 알고 있기 때문에 회원들이 쉽게 사용법을 이해하지 못할 수 있다는 것을 모르는 경우가 많은 것 같습니다.

 

특히 웹사이트 운영 경험이 없는 개발자분들은 이러한 사소한 문제를 전혀 알지 못할 것 입니다.

 

 

보통 쪽지를 받게 되면 답장으로 쪽지를 보내게 됩니다. 그런데 XE의 쪽지 디자인은 답장을 할때 먼저 받은 쪽지 내용 위쪽에 답장을 적게 되어 있습니다.

 

그런데 이런 것을 알지 못하는 일반인은 굳이 아래로 내려서 원문 아래로 답장을 하게 됩니다.

 

이런 분과 대화를 하다보면 대화의 연속성이나 문맥을 파악하기 힘들어지게 될 것입니다.

좌측에 세로 막대 표시로 연관된 글을 이어주는 디자인을 하고 있는게 XE 쪽지 디자인이죠..

 

그래서 말인데 운영자로서 회원들이 문의해 오는 쪽지를 답장하고 다시 또 답장을 받다보면 굉장히 많은 회원이 이렇게 잘못된 사용을 하고 있는 것을 보고 좀 안타까운 생각도 듭니다.

 

 

그래서 답장하기를 누르면 열리는 에디터(CK에디터)에 커서를 깜빡이게 처리하려고 시도했었는데 저는 성공하지 못했습니다.

 

혹시 가능하신분 계시면 방법좀 알려주세요..

 

댓글 15

  • CKEditor를 로딩할 때 startupFocus: true 설정을 주면 에디터 맨 위에 커서가 깜빡입니다.

    쪽지 답장시 에디터에 커서가 들어가도록 라이믹스에 시험적으로 적용해 보았습니다.
    에디터 모듈은 라이믹스에서 가장 많은 변화가 있었던 부분이라, XE에서는 관련소스가 많이 다를 거예요.
    https://github.com/rhymix/rhymix/commit/9ba0b1e

    글쓰기 화면이나 새 쪽지를 보낼 때는 에디터가 아닌 제목에 포커스가 들어가야 하고,
    글읽기 화면에서도 댓글 에디터에 포커스가 들어가 버리면 스크롤이 원활하지 않을 테니
    아주 조심해서 써야 할 기능인 것 같네요.

  • @기진곰
    네. 그래서 쪽지 답장 부분에만 적용하면 좋을 것 같아 질문을 드렸어요. 왜냐면 답장할때 원문 아래로 입력하시는 분이 너무 많으셔서요. 굳이 더 불편할텐데 아래에 입력하시더라구요.
  • @기진곰

    쪽지발송 스킨에서 처리할 수는 없을까요???

     

    쪽지 발송에서 답장의 경우는 

    dispCommunicationSendMessage act에 message_srl 을 가지고 있는 것 같습니다.

  • @웹지기
    포커스 설정은 에디터 모듈 스킨(modules/editor/skins/ckeditor/editor.html)에서 해야 하더라구요.

    에디터 로딩시 설정하지 않고 바깥에서 CKEDITOR.instances[에디터시퀀스].focus() 이렇게 할 수도 있는데, 타이밍이 안 맞아서 포커스가 잘 들어가지 않습니다.
  • @기진곰
    에디터모듈 스킨에 dispCommunicationSendMessage act에 message_srl 이 조건으로 넣을 수 없을까요?
  • @웹지기

    에디터 설정을 스킨에서 하는 게 아니라서요...

    <script cond="$source_message">
        jQuery(function() {
            setTimeout(function() {
                for (var editor_id in CKEDITOR.instances) {
                    CKEDITOR.instances[editor_id].focus();
                    break;
                }
            }, 1000);
        });
    </script>


    에디터 로딩하는 부분 이후에 이렇게 한번 넣어보세요. 에디터가 완전히 로딩될 때까지 1초 기다린 후 커서를 넣도록 해보았는데, 너무 늦거나 너무 빠르면 적당히 조정하시고요.

  • @기진곰
    와! 됩니다!!!
    <block cond="$source_message">
    <script cond="$source_message">
    jQuery(function() {
    setTimeout(function() {
    for (var editor_id in CKEDITOR.instances) {
    CKEDITOR.instances[editor_id].focus();
    break;
    }
    }, 1000);
    });
    </script>
    </block>

    이거 시도하가 포기했는데 정말 감사합니다.

    앗.. cond도 이미 넣어주셨군요...
  • <block cond="$source_message">
    <script cond="$source_message">
    CKEDITOR.on('instanceReady', function () {
    CKEDITOR.instances[editor_id].focus();
    });
    </script>
    </block>

    요렇게 하면 settimeout 을 사용하지 않아도 될거에요.
    테스트는 안해봤습니다.
  • @구름이
    $source_message 조건은 이미 스크립트에 넣어주셨더라구요 ㅋ
    그럼 바꿔서 한번 해보겠습니다.
  • @구름이
    앗.. 요건 안되네요....
  • Document loading 후 시작이 되어야 될건데 그 부분을 빼 먹었네요.

     

    jQuery(function() {
        CKEDITOR.on('instanceReady', function () {
           CKEDITOR.instances[editor_id].focus();
        });
    });

  • @구름이
    요것도 안되네요....
  • @웹지기

      jQuery(function() {
            CKEDITOR.on('instanceReady', function (ev) {
                jQuery('.cke_wysiwyg_frame').contents().find('body').focus();
            });
        });

     

    라이믹스에서 테스트 해봤습니다.

    XE 에서도 잘될거에요.

  • @구름이

    오~~ 잘됩니다! 

  • @구름이
    CKEditor 로딩 시점이 상당히 애매합니다... ㅋㅋㅋ