RadarURL

조회 수 3011 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

제(sejin7940)  나름 수정한 menu 모듈 올려드립니다.

현재 XE 1.7.3 의 메뉴체계 에 불만이 있으신 분들만 써보세요

 

어떤 문제가 생길지 모르니  (저만 테스트한거기에..  ^^;)

실제 사이트에는 아직 적용하지 마시고,  테스트 사이트 등을 운영하시는 분들만  한번 깔아서 사용해보세요

(실제 사이트는,  추후 이걸 적용해보신 분들이  버그 없다고 할때...  반응 보고 하시길.. 책임 안 집니다 ^^;)

 

 

XE 1.7.3  기반의  메뉴 기능을 개선해보았습니다.

 

1) 메뉴 삭제와 모듈 삭제를 분리

 

-> 메뉴가 삭제될때 원본 모듈(게시판/위젯/페이지 등)  이 삭제 안 되도록 해두었습니다.  

 

    그러면, 메뉴 삭제 후  다른 메뉴에서 이 생성되어있는 모듈을 연결할 수 있어야겠죠?

    또한 게시판에서 모듈을 복사해서 생성한 뒤에,  메뉴에서 연결할 방법이 있어야겠죠?   

 

 

2) 바로가기를 통해  미리 생성된 게시판/모듈등을 메뉴에 바로 연결 가능  (두가지형태로)

 

->  메뉴추가 / 바로가기    한 다음에

    utl 링크탭의  주소란의  http:// 를 지우고,  그냥  mid  값을 기재하시면 되는데..

    이 때, '모듈 설정과 직접 연결 '  에 체크를 해두면,  마치  메뉴추가에서 직접 게시판 생성한 것처럼 게시판과 연결이 되고

         (바로가기가 아니라 생성과 같은 형태가 되기에 아이콘도 바로가기 아이콘이 안 나올겁니다.

          모듈 설정과 연결되기에 메뉴수정에서 메뉴ID 를 바꾸면  모듈의 id 도 같이 바뀌게 되겠죠. )

    '모듈 설정과 직접 연결' 를 체크 안 하고 mid 를 기재하면,  바로가기 로 연결이 걸립니다.

         (바로가기가 아닌 경우..  수정시 모듈자체에 영향은 안 줍니다)

 

    추후 관리 원하는 방식에 맞춰서 '모듈 설정과 직접 연결 ' 를 체크하시면 됩니다. 

   (물론 어느 경우든 메뉴 삭제시 모듈이 같이 삭제되진 않습니다.  관리의 편이를 생각해서 결정하시면 됩니다.

 

 05f2cf88a273157011a52862a895adc1.gif

 

3) 홈페이지 첫페이지 설정 메뉴 도 삭제 가능

-> 홈 아이콘이 있는 메뉴도 삭제 가능합니다.

     물론 재연결도 가능합니다. 

 

 

 

설치 방법 :

 

moduls/menu  를 지우지 마시고..  (제가 올리는 수정모듈에 흠이 있을수도 있으니 ^^;;)

기존 걸 menu_bk  로 폴더명을 변경하신 후에

첨부파일 중에,  menu.zip 을 압축풀고,   modules/  폴더 안에,  첨부한 menu  폴더를 올려보세요

참고로 수정내용은 txt 파일로 같이 첨부해드립니다.

 

다운로드:menu.zip


혹시나 이거 적용후,  사이트가 박살나면...

새로 올린 menu 폴더 지우고,  menu_bk 를 menu 로 변경해서 복원하시면 될겁니다 ^^;;

 

(혹시나의 상황에 대해 절대 책임지지 않습니다 ^^;)

 

 

테스트해보시고, 

잘 되면 잘된다...  고 의견 남겨주시고  (다른 분들도 도전해보시도록..    피해자를 늘려야죠 ^^;; )

문제가 있거나 어떤 문제가 있는지 댓글 달아주세요 ^^;  ( 보완하고, 정 못 쓸정도가 되면 이 글 지워버리게요 ^^;;;)

 

 

 

참고로,    게시판 1.7 에 게시판 신규생성 버튼 넣는 방법은

modules/board/tpl/index.html 에서..

<a class="x_btn modalAnchor x_pull-right _manage_selected" href="#manageSelectedModule">{$lang->cmd_manage_selected_board}</a>

로 된 코드 밑에 아래의 1번 코드를 추가해주시면 됩니다.

<a class="x_btn x_pull-right" style="margin-right:10px" href="{getUrl('act','dispBoardAdminInsertBoard','module_srl','')}">{$lang->cmd_create_board}</a>


또는 다른방법으론 

<span class="x_btn-gruop x_pull-right"><a class="btn" href="{getUrl('act','dispBoardAdminInsertBoard', 'selected_var_idx', '', 'type', '')}">{$lang->cmd_create_board}</a>&nbsp;<a class="x_btn modalAnchor x_pull-right _manage_selected" href="#manageSelectedModule">{$lang->cmd_manage_selected_board}</a></span>

 와 같이 해도 됩니다.

그러면 아래 그림처럼 게시판등록 버튼이 생깁니다.

bd1533c81a120e760a8a7dc9f269b1d3.gif



 

 

참고2.  XE 1.7 의  페이지 모듈에서 페이지 생성하는 방법 은

http://joinjobs.net/xe/jj_xetip/3717 에 적어두었습니다 ^^ 

 

 

 

ps. 현재 XE 1.7.3 자체의 몇가지 하자는 이 개선에서는 그냥 무시합니다. ^^;;

예를들어,  모듈 연결된 설정의 메뉴ID 를 변경하면,   바로가기 링크걸린 다른 메뉴의 ID 값은 같이 변경 안 된다든지 등..

 

 

=======================================

 

1. 1차수정 (130316 20:35)

   1) 기존에는 바로가기로 생성된 mid 만 연결가능하게 했었는데 (없으면 에러뜨게)

       사이트맵을 먼저 생성 후 게시판을 복사할 수도 있으니 생성되지 않은 게시판들에 대해서도

       사이트맵에서 먼저 메뉴 생성하고 지정가능하게 변경

 

   2) 메뉴 수정시 이상한 alert 창 하나 뜨던거 삭제


2.수정방법

function deleteMenu  안에서



// Delete modules

$output = executeQueryArray('menu.getMenuItems', $args);

if(!$output->toBool())

{

return $output;

}


$oModuleController = getController('module');

$oModuleModel = &getModel('module');


foreach($output->data as $itemInfo)

{

if($itemInfo->is_shortcut != 'Y' && !preg_match('/^http/i',$itemInfo->url))

{

$moduleInfo = $oModuleModel->getModuleInfoByMid($itemInfo->url, $menuInfo->site_srl);

if($moduleInfo->module_srl)

{

$output = $oModuleController->onlyDeleteModule($moduleInfo->module_srl);

if(!$output->toBool())

{

$oDB->rollback();

return $output;

}

}

}

}


전체를 주석처리




private function _deleteMenuItem 에서



$moduleInfo = $oModuleModel->getModuleInfoByMid($node['url'], $menuInfo->site_srl);

if($moduleInfo->module_srl)

{

$output = $oModuleController->onlyDeleteModule($moduleInfo->module_srl);

if(!$output->toBool())

{

$oDB->rollback();

return $output;

}

}


부분 삭제 또는 주석처리





2. 시작메뉴 삭제방법


1)

modules/menu/menu.admin.controller.php 에서


function procMenuAdminDelete()  함수에서



if($isStartmenuInclude)

{

return new Object(-1, 'msg_cannot_delete_homemenu');

}


를 삭제하거나 주석처리




2)

modules/menu/menu.admin.controller.php 에서


public function deleteItem 함수에서


if($isStartmenuInclude)

{

return new Object(-1, 'msg_cannot_delete_homemenu');

}


를 삭제하거나 주석처리



3)




3. 메뉴 바로가기에서 바로가기  를 mid 로 연결하는 방법


modules/menu/menu.admin.model.php  에서



1) private function _insertShortcut  함수에서



// empty target shortcut

else



위에다가 아래 항목 추가



// 게시판 모듈 mid 지정시 (sejin7940)

elseif($request->shortcut_target) {


$args = new stdClass();

$args->menu_srl = $request->menu_srl;

$args->name = $request->menu_name;

$args->parent_srl = $request->parent_srl;


if($request->shortcut_link_module) {

$args->is_shortcut = 'N';

}

else {

$args->is_shortcut = 'Y';

}


/*

// check already created module instance

$oModuleModel = &getModel('module');

// if not exist module, return error

$moduleInfo = $oModuleModel->getModuleInfoByMid($request->shortcut_target);

if(!$moduleInfo)

{

// return new Object(-1, 'msg_module_is_not_exists');

// $args->is_shortcut = 'Y';

}

*/


$args->url = $request->shortcut_target;

}




2) public function procMenuAdminUpdateItem()  함수에서


// type is module short cut

else if(is_numeric($request->shortcut_target))

{

// Get new original information

$newItemInfo = $oMenuAdminModel->getMenuItemInfo($request->shortcut_target);

if(!$newItemInfo->menu_item_srl)

{

return new Object(-1, 'msg_invalid_request');

}


$args->url = $newItemInfo->url;

$args->is_shortcut = 'Y';

}



아래쪽에다가  아래 문구 통째로 추가


// 게시판 모듈 mid 지정시 (sejin7940)

elseif($request->shortcut_target) {


// check already created module instance

$oModuleModel = &getModel('module');


if($request->shortcut_link_module) {

$args->is_shortcut = 'N';

}

else {

$args->is_shortcut = 'Y';

}


/*

// if not exist module, return error

$moduleInfo = $oModuleModel->getModuleInfoByMid($request->shortcut_target);

if(!$moduleInfo)

{

// return new Object(-1, 'msg_module_is_not_exists');

// $args->is_shortcut = 'Y';

}

*/

$args->url = $request->shortcut_target;


}




3. modules/menu/tpl/sitemap.html 에서


1) 

sMID = $('#default ._url_link').val();  


아래에다가 추가


params['shortcut_link_module'] = $('#default ._url_link_module').attr("checked");  // sejin7940 (모듈과 직접 설정 링크 값 전달)



2)

1834번째줄 즈음의


params[sTargetKey] = sUrl;   아래에다가 추가


if(isShortCut=='Y') params['shortcut_link_module'] = $('#add_menu .x_active ._url_link_module').attr("checked");  // sejin7940 (모듈과 직접 설정 링크 값 전달)





3) 

<input type="url" class="_linkUrl" required title="{$lang->url_link}" /> 


아래에다가 추가


<br><input type="checkbox" class="_url_link_module">모듈 설정과 직접 연결 <!-- sejin7940 -->




4) 

<input type="text" class="_url_link" title="{$lang->url_link}" />


아래에다가 추가


<br><input type="checkbox" class="_url_link_module">모듈 설정과 직접 연결 <!-- sejin7940 -->




4) 대략 1884번째줄 즈음의


if(htInfo.href !== htInfo.url){

// Menu shortcut

$(this).find('a[href="#fix_linkMenu"]').click();

//$(this).find('._menu_link').val();

showMenuSelector($(this).find('._menuSelector_menuTreeContainer'), htInfo.url);

}else{

// URL shortcut

$(this).find('a[href="#fix_linkUrl"]').click();

$(this).find('._url_link').val(htInfo.url);

showMenuSelector($(this).find('._menuSelector_menuTreeContainer'));

}*/


주석처리하고 그 아래에다가 기재



// sejin7940 - 메뉴링크 대신 무조건 URL 링크가 기본이 되도록  ( 메뉴링크에 해당되어도 현재 어떤 메뉴인지 표시도 안 되어서 의미가 적은듯)

// URL shortcut

$(this).find('a[href="#fix_linkUrl"]').click();

$(this).find('._url_link').val(htInfo.url);

showMenuSelector($(this).find('._menuSelector_menuTreeContainer'));

 

 
 

출처 : http://joinjobs.net/xe/3710

?

공부 게시판

공부에 도움되는 글을 올려주세요.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 [공지] 공부 게시판 입니다. 처누 2003.08.18 928121
2474 웹서버,WAS [apache] HTTP/HTTPS 리다이렉트(Redirect/Rewrite) 하는 방법 new JaeSoo 2025.09.11 0
2473 웹서버,WAS http를 https로 리다이렉트하는 여러가지 방법 JaeSoo 2025.09.10 0
2472 웹서버,WAS SSL인증서 없이 HTTPS에서 HTTP로 되돌리기 JaeSoo 2025.09.10 2
2471 웹서버,WAS [SSL] win-acme, Let's encrypt로 무료 SSL 인증서 발급 JaeSoo 2025.09.10 0
2470 웹서버,WAS [SSL] Windows 10에서 Let's Encrypt로 SSL 인증서 무료 발급받기 JaeSoo 2025.09.10 0
2469 웹서버,WAS 무료로 https SSL/TLS 인증서를 발급받을 수 있는 인증 기관 JaeSoo 2025.09.10 0
2468 웹서버,WAS 아파치 서버에 https SSL 인증서 적용하는 방법 (apache httpd) JaeSoo 2025.09.10 0
2467 웹서버,WAS 아파치2(Apache2) SSL HTTPS 적용하기 JaeSoo 2025.09.10 0
2466 웹서버,WAS 아파치 웹서버에 멀티 도메인에 대한 80, 443 포트 설정하는 방법 file JaeSoo 2025.09.10 0
2465 소프트웨어 Google Photo 대신 Immich를 써보자 file JaeSoo 2025.08.07 127
2464 연애 남자 혹은 여자 진국 팁 JaeSoo 2025.07.24 117
2463 기타 MBTI검사 16가지 유형 “간단 명료”하게 정리! file JaeSoo 2025.07.01 133
2462 소프트웨어 [사진관리] PhotoPrism vs LibrePhoto 비교 소감 JaeSoo 2025.05.19 14
2461 네트워크 MDF실, TPS실, EPS실 이게 뭘까? file JaeSoo 2025.04.15 33
2460 업무 알아두면 좋은 직장인 용어 정리 file JaeSoo 2025.04.15 37
2459 건강 감기·독감·코로나19의 차이점, 신촌연세병원과 함께 알아봅시다. file JaeSoo 2025.01.08 29
2458 생활 집주인이 전세 보증금을 돌려주지 않을 때 JaeSoo 2024.11.29 26
2457 자동차 자전거 타이어 종류 및 추천 2편 (승차감 타이어, 국토종주!) JaeSoo 2024.10.15 53
2456 자동차 오도바이 센타 사장들은 어떤 브랜드를 싫어하고 좋아할까? [출처] 오도바이 센타 사장들은 어떤 브랜드를 싫어하고 좋아할까?|작성자 바이크신 file JaeSoo 2024.10.15 78
2455 윈도우즈 윈도우 자동 로그온 설정이 보이지 않을 때 조치사항 JaeSoo 2024.08.16 203
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 124 Next
/ 124


즐겨찾기 (가족)

JAESOO's HOMEPAGE


YOUNGAE's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

숭실대 컴퓨터 통신연구실 (서창진)

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

아스가르드 좋은사람/나쁜사람

JServer.kr

제이서버 메타블로그

재수 티스토리


즐겨찾기 (강의, 커뮤니티)

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너