XE Tips 는 제가 XE 공홈에 쓴 XE 관련 유용한 팁들입니다. 기능개선은 공홈에 안 적어둔 XE 유용 개선팁들입니다.
유용정보는 외부 검색을 통해 알아낸 소스등을 기재해둔 곳입니다.
버그 신고내역들은 XE 사용하다가 발견한 버그 패치방법들로, Core Issue 에 기록해뒀기에 XE 에 적용이 되었을 가능성이 있겠죠
제가 쓴 글들에 대해 퍼가실때는 꼭 출처를남겨주시고.. (다만 플래시뷰 기반이기에 퍼가기는조금 힘들 수 있겠죠 ^^;)
타회원의 글들도 적혀있는 출처를 같이 꼭 기재해주세요
출처 | sejin7940 |
---|
관리자페이지->관리자설정-> 관리자메뉴설정 에서 삭제가 안 되는 현상 수정하는 방법
원인은 jquery 에서 parents() 를 사용해서이다. parents 는 최상위부터 다 검토하게 되는데, 동일하 li._item_key 형태가 1차 / 2차 형태에 둘 다 나오다보니
정작 jquery 로 menu_item_srl 값을 넣을때 삭제버튼을 눌렀던 해당 2차 메뉴의 값이 들어가는게 아니라 그 상위의 1차 메뉴 값이 들어가면서...
삭제하면 무조건 '하위메뉴가 존재하여 삭제할 수 없습니다' 라는 메세지가 나오게 되는 것이다
(참고로 해당 메뉴도 안 나온다 ^^;; && $XE_VALIDATOR_ID == 'modules/admin/tpl/admin_setup/1' 가 문제가 좀 있는듯.. 이건 생략)
결국, parents 대신에 closest 를 사용하면 된다.
이 둘의 차이는, http://findfun.tistory.com/183 를 참조해서 보면 된다
(쉽게 설명해 closest 는 해당 현재 요소에서부터 차례대로 부모를 찾아 올라가게 된다. 즉, 삭제버튼 있는 곳에서부터 찾으니 2차 메뉴의 li._item_key 가 된다)
수정방법은.
modules/admin/tpl/js/menu_setup.js 에서 45번째줄 즈음의
var menu_item_srl = $(this).parents('li').find('._item_key').val();
를 아래걸로 바꾸면 된다
var menu_item_srl = $(this).closest('li').find('._item_key').val();
혹시나 이걸로 안 고쳐질경우
menu_setup.min.js 에서 관련부분 찾아서 고치시면 됩니다.