발견된 문제점들을 해결하기 위해서 위젯을 업데이트 했습니다.

많은것이 변경되었으나 짬짬이 수정하는 바람에 많은 테스트를 하지못했습니다.

오류는 댓글로 알려주세요.

 

변경사항

1. 나의메뉴 저장 공간을 파일형태로 변경 했습니다.
- files/member_extra_info/favorite 디렉토리 아래에 사용자별 설정 파일및 위젯 설정 파일을 저장합니다.

 

2. 이전 버전 사용자의 설정값은 자동으로 이전됩니다.
- 기존 DB자료는 이 과정에서 자동으로 삭제 합니다.

 

3. 나의메뉴 사용 개수를 지정가능하며 최대 36개까지 지정 가능합니다.

- 설정 저장공간 변경하는김에 메뉴개수를 지정가능하도록 변경하였습니다. 최대 36개인 이유는 숫자 + 알파벳 개수가 36개이기때문에...

 

4. 단축키 사용시 shift, alt, ctrl, win키등의 조합으로 눌렸을 경우는 작동하지 않도록 변경 되었습니다.

- 기존 단축키 스크립트가 shift등의 조합으로 눌리는 경우도 페이지 이동을 해  버려서 이를 보강했습니다.

- 단축키 스크립트 부분은 js파일로 만들어서 따로 로드하도록 변경하였습니다.

 

5. 단축키 시작 번호를 지정할 수 있습니다.
- 단축키 스크립트 손보는김에 자료형을 변경해서 단축키 번호를 변경 가능하도록 했습니다. 단, 숫자나 알파벳(대문자)로 한정 합니다.

- 기존에는 '1 2 3 4 5 6 7 8 9 0'으로 고정되어있던 것을 단축키 시작번호를 'A'로 변경하고 메뉴 5개를 사용한다면 'A B C D E'의 단축키를 사용합니다.

 

6. 기본스킨을 3가지 제공합니다. (default, button, button-flex)

mymenu_0.3.skin.png

 

7. 기본메뉴 지정이 가능합니다. 
- 이를 사용하기 위해서는 위젯 설정에서 기본메뉴 관리자번호(member_srl)를 입력하면 됩니다.

- 관리자로 지정된 사용자의경우 나의메뉴창에 기본메뉴 관리용 버튼이 하나더 출력 되며 이를 눌렸을경우 편집창 타이틀 색이 변경되고 기본메뉴 수정이 가능한 창이 나타납니다.

mymenu_0.3.manager.png

 

8. IE에서 javascript Map이 잘 작동하지 않는거 같아서 변수 설정을 변경 했습니다.

- IE에서 메뉴출력등 스크립트가 잘 작동하지 않는경우가 있어서 자료 생성 방식을 변경 해 봤습니다.

 

9. 위젯 설정이 변경되면서 메뉴트리가 변경되었을경우 오류가 발생하던 문제를 수정 했습니다.

 

10.메뉴 저장 실패시 기존보다 자세한 오류 메시지를 표시하도록 수정 했습니다.
 

  • ?
    수고하셨습니다~
  • profile
    감사합니다.
  • profile

    감사합니다 매번 이렇게 도움주셔서~매우 매우 감사합니다

     

    ps : 나의메뉴 말고 같이보는메뉴도 나왔으면 좋겠습니다 ㅎㅎㅎ

  • profile
    업데이트 감사합니다. 그냥 덮어 씌우면 되나요???
  • profile
    7번 기본메뉴 잘 이해가 안되네요 ^^
  • profile profile
    기본메뉴를 설정 해 놓으면 나의 메뉴를 특별히 저장해놓지 않은 유저들에게 기본값으로 보여지는 메뉴라고 생각하시면 됩니다.
  • profile profile
    아 그런기능이군요 이해했습니다. ^^
  • profile

    다운로드.png

     

    업데이트 후 메뉴 편집이 이상하네요.  가로폭 때문에 그런건지.....

     

    글자크기를 줄여서 해결을 보고 있는데 수정쪽에서는 new,update 이미지까지 가려야 해결이 될 것 같습니다. 이거 가리려면 css가......?

     

    .pr_mymenu_edit ul li span.pr_text img {display:none;}

  • profile profile
    굉장히 좁게 사용하시네요 ㅎㅎㅎ
    span.pr_text쪽 css살펴보시면 max-width: 60%;지정되어 있을꺼에요. 이값을 조정 해보세요.
  • profile

    붉은색 편집창에서 추가한 메뉴는 나오지 않는데요?

     

    아.. 아무것도 설정하지 않은 대상에게 노출시키기 위한 것이었군요...

  • profile profile
    네, 메뉴를 특별히 저장하지 않은 사용자에게 노출되는 기봅값입니다. 그마저도 다 지우고 저장한다면 기본값도 나타나지 않습니다.
  • profile
    메뉴를 1개 등록하고 저장버튼을 클릭하니 메뉴미스메치란 오류메세지가 나옵니다. ㅜㅜ
    nongong.org
  • profile profile
    혹시 사용하시는 브라우저 종류, 버전이 어떻게 되시죠?
    Menu Mismatch: 10 이런식으로 오류가 표시될텐데요. 제일 뒤쪽 숫자가 몇이였나요?
    이 오류는 사용하는 메뉴수와 post로 넘어온 저장할 array개수가 다를때 발생하는 오류 입니다.
  • profile profile

     

    감사합니다.
    나타나는 오류는 Menu Mismatch: 0

    블라우저 정보는
    ie 11.726.15063.0
    크롬 62.0.3202.94
    모바일크롬에서도 똑같은 현상이 발생합니다.


    https://nongong.org/xe/test_page

     

    Cap 2017-11-18 08-16-20-018.png

  • profile profile
    이상하네요. 말씀 하신 브라우저라면 제가 테스트했던 환경과 같은데요.
    혹시 테스트가능한 아이디 있다면 쪽지등으로 알려주세요.
  • profile profile
    잘됩니다.. 감사합니다 ^^
  • profile

    기존에 li  맨마지막에 제가 home 버튼을 임의로 넣었는데요. 바뀐 뒤로 여기에 집어 넣을 방법이 없을까요??

    home 버튼을 달아주면 무척 편리해서요. 특히 모바일에서는 엄청 편리한데 사라져서 아쉽네요.

     

    기존에는 li loop 뒷단에

            <!--@if(0 < $count)-->
            <li><a href="/"><span class="pr_iboard">H</span>홈으로</a></li>
            <!--@end-->

     

    이렇게 처리햇었습니다.

  • profile profile

    이렇게 사용하셨다면 메뉴 저장이벤트가 일어나면 지워졌을텐데요?

    스킨파일 열어서 127라인 근처 var dspMyMenu = function(mymenu) {} 찾으신다음...

    아래 조건문 에 140라인처럼 else를 추가 해 보세요.

     

    if(0 == count) {
    html = '<li><span class="pr_trymymenu">'+pr_MsgEmpty+'</span></li>';
    }
    else {
        html += '<li><a href="/"><span class="pr_scut">H</span>홈으로</a></li>';
    }

     

  • profile profile
    와~ 잘되네요. 감사합니다!
  • profile
    멋지네요~~ ^____________^
  • profile

    0.3 업데이트 기념 자랑질 합니다 ㅋ 이제 회원정보 수정해도 나의 메뉴가 초기화 되지 않아요!

     

    Screenshot_20171117-213100 (1).png

  • profile

     혹시 이전버전처럼 로딩시 메뉴로딩과 동시에 상단 타이틀이 노출되게 하려면 어디를 수정해야 할까요? 타이틀이 먼저 노출되고 메뉴가 로딩되니 약간 어색해서요.

  • profile profile

    많이 어색하신가요? 메뉴값이 배열로 넘어오던걸을 아예 문자열로 변경해서 넘겨받는걸로 변경해 버려서 그냥 출력 방식도 변경했거든요.

    자바스크립트 json은 반복문 돌리면 입력 순서 상관없이 지가 정렬해서 출력을 해버려서 map을 이용했는데... 이게또 ie에서 인식하지 못하는 경우가 있어서 map생성 방식을 변경 했거든요 ㅎㅎㅎ

     

    문자열이라 아래처럼 자료형 변경을 우선해주고 반복문 돌려야 할꺼 같네요.

    아래 템플릿을 상단쪽에 입력 하시고...

    <!--@$mymenu = array(); foreach(explode(',', $widget_info->my_menu) as $val)-->
    {@$tmp = explode(':', $val); $mymenu[$tmp[0]] = $tmp[1];}
    <!--@end-->
    {@$count = count($mymenu);}

     

    <ul id="prmymenu">
           <!--javascript에서 출력-->

    </ul>

    위의 메뉴 출력 부분을 아래처럼 변경 해 보세요. default스킨 기준이니 출력부분 html코드들은 스킨에 맞춰서 변경해 주시면 될꺼같습니다.

    <ul id="prmymenu">
    <!--@if(0 == $count)-->
    <li><span class="pr_trymymenu">나만의 메뉴를 사용해 보세요. 자주 사용하시는 메뉴 10개까지 등록 가능합니다.</span></li>
    <!--@else-->
    <!--@foreach($mymenu as $key => $val)-->
    <!--@if(0 < $val)-->
    <li><a href="{$widget_info->menu->data[$val]->href}" target="_blank"|cond="$widget_info->menu->data[$val]->is_window=='Y'"><span class="pr_scut">{$key}</span>{$widget_info->menu->data[$val]->text}</a></li>
    <!--@end-->
    <!--@end-->
    <!--@end-->
    </ul>

     

    그리고 하단의 자바 스크립트 150라인 근처에 dspMyMenu(pr_MyMenu); 를 삭제 하시면 됩니다.

  • profile profile

    아! 그리고 홈 버튼 사용하실꺼면 아지막 end사이에 사용하시는 코드 삽입하시면 됩니다.

     

    <ul id="prmymenu">
    <!--@if(0 == $count)-->
    <li><span class="pr_trymymenu">나만의 메뉴를 사용해 보세요. 자주 사용하시는 메뉴 10개까지 등록 가능합니다.</span></li>
    <!--@else-->
    <!--@foreach($mymenu as $key => $val)-->
    <!--@if(0 < $val)-->
    <li><a href="{$widget_info->menu->data[$val]->href}" target="_blank"|cond="$widget_info->menu->data[$val]->is_window=='Y'"><span class="pr_scut">{$key}</span>{$widget_info->menu->data[$val]->text}</a></li>
    <!--@end-->
    <!--@end-->
    <li><a href="/"><span class="pr_scut">H</span>홈으로</a></li>
    <!--@end-->
    </ul>

     

  • profile profile
    감사합니다. 아주 잘되네요.

    타이틀만 먼저 노출되고 아래 li 부분이 늦게 출력되니 좀 어색하네요. 특히 디자인을 위해 ul쪽에 마진을 준경우는 더 티가 나는게 마진 정도의ul 빈박스가 노출되고 li가 채워지는게 보여서 더 그런 느낌이 강하게 들고요.

    알려주신 방법으로 고쳤더니 이전처럼 한번에 나타나서 보기 좋네요~
  • profile profile

    그런데
    {$count} 출력을 해보니 메뉴 등록이 안된 경우도 10으로 출력이 되네요.
    그래서 나의메뉴 미등록자에게 문구가 출력이 안되는 문제가 있네요.

     

  • profile profile

    엇! 지금보니 그렇겠네요 ㅎㅎㅎ

    아래처럼 해 보세요!!!

    <!--@$mymenu = array(); foreach(explode(',', $widget_info->my_menu) as $val)-->
    {@$tmp = explode(':', $val); if(0 < $tmp[1]) $mymenu[$tmp[0]] = $tmp[1];}
    <!--@end-->
    {@$count = count($mymenu);}
    
    
    
    <ul id="prmymenu">
    <!--@if(0 == $count)-->
    <li><span class="pr_trymymenu">나만의 메뉴를 사용해 보세요. 자주 사용하시는 메뉴 10개까지 등록 가능합니다.</span></li>
    <!--@else-->
    <!--@foreach($mymenu as $key => $val)-->
    <li><a href="{$widget_info->menu->data[$val]->href}" target="_blank"|cond="$widget_info->menu->data[$val]->is_window=='Y'"><span class="pr_scut">{$key}</span>{$widget_info->menu->data[$val]->text}</a></li>
    <!--@end-->
    <li><a href="/"><span class="pr_scut">H</span>홈으로</a></li>
    <!--@end-->
    </ul>

     

  • profile profile
    감사합니다. 잘 됩니다~~~
  • profile

    새글,업데이트 표시가 수동으로 캐시파일재생성 하기 전에는 반영이 안되는 것 같은데 맞는가요??

  • profile profile
    새글, 업데이트 표시기능은 고려되어 있지 않는데요?
    특정 모듈이나 애드온 사용하시는 것인가요? 알려주시면 살펴보고 가능하다면 호환되도록 할께요.
  • profile profile
    저도 한번 확인한거라 더 현상을 지켜봐야 할 것 같지만 메뉴 새글 모듈을 사용하면 메뉴를 이용해 출력하는 곳에 새글 업데이트 이미지가 출력 됩니다.
    모듈은 공홈에 배포되는 자료 그리고 XE타운에서 배포되는 자료를 많이 사용합니다.

    그런데 위젯에서 캐시를 이용하는지 다른 메뉴들에서 갱신된 것이 나의메뉴에서는 갱신이 안되고 있더라구요.
  • profile profile
    https://xetown.com/rxe_point/12592 이 모듈 말씀하시는 거죠?
    다른 모듈이 더 있다면 링크 알려주세요. 살펴보겠습니다.
    위젯에서 메뉴트리 넘길때 맴버 그룹별로 오브젝트 캐시 사용하도록 되어있습니다만... 어차피 메뉴 읽어들일때 이미 캐시된 파일을 디스크에서 읽어서 처리하기 때문에 캐시 설정을 따로 안해도 성능에 큰 문제는 없을꺼 같습니다.
  • profile profile
    저희는 https://xe1.xpressengine.com/index.php?mid=download&package_id=18351409

    이자료 사용중입니다.
  • profile profile
    새글표시 모듈 살펴봤는데 해당 모듈 사용시 말씀하신 문제가 발생하겠네요.
    해당 문제는 간단하게 해결 가능합니다만 다른 문제가 더 발생하는지 좀더 기켜보고 업데이트 하도록 하겠습니다.
  • profile
    안녕하세요 prologos님. 혹시 위에 새글표시모듈이랑 이 위젯이랑 연동하는게 지금도 가능한지요.
    그리고 php8에서 설치시.. array_diff($args->manager_srl, $cache_args->manager_srl) 이 코드에서 오류가 있던데 확인 수정 가능하신가요?
    일단 처음에 배열이 아니라고 해서 해당 코드는 지워준 다음, 위젯 설정을 한 뒤에
    다시 해당 코드를 넣으면 실행이 되긴 하는데요.