diff --git a/common/js/tree_menu.js b/common/js/tree_menu.js index 9ea730a5e..0357a0cc7 100644 --- a/common/js/tree_menu.js +++ b/common/js/tree_menu.js @@ -38,7 +38,7 @@ function moveTreeMenu(menu_id, node) { } // 트리메뉴의 정보를 담고 있는 xml파일을 읽고 drawTreeMenu()를 호출하는 함수 -function loadTreeMenu(url, menu_id, zone_id, title, callback_func) { +function loadTreeMenu(url, menu_id, zone_id, title, callback_func, manual_select_node_srl) { // 일단 그릴 곳을 찾아서 사전 작업을 함 (그릴 곳이 없다면 아예 시도를 안함) var zone = xGetElementById(zone_id); if(typeof(zone)=="undefined") return; @@ -57,8 +57,10 @@ function loadTreeMenu(url, menu_id, zone_id, title, callback_func) { node_callback_func[menu_id] = callback_func; + if(typeof(manual_select_node_srl)=='undefined') manual_select_node_srl = ''; + // menu_id, zone_id는 계속 달고 다녀야함 - var param = {menu_id:menu_id, zone_id:zone_id, title:title} + var param = {menu_id:menu_id, zone_id:zone_id, title:title, manual_select_node_srl:manual_select_node_srl} // 요청후 drawTreeMenu()함수를 호출 oXml.request(drawTreeMenu, oXml, null, null, param); @@ -70,6 +72,7 @@ function drawTreeMenu(oXml, callback_func, resopnse_tags, param) { var menu_id = param.menu_id; var zone_id = param.zone_id; var title = param.title; + var manual_select_node_srl = param.manual_select_node_srl; var zone = xGetElementById(zone_id); var html = ""; html = '
root'+title+'
'; @@ -89,6 +92,8 @@ function drawTreeMenu(oXml, callback_func, resopnse_tags, param) { } xInnerHtml(zone, html); + + if(manual_select_node_srl) manualSelectNode(menu_id, manual_select_node_srl); } // root부터 시작해서 recursive하게 노트를 표혐 @@ -174,6 +179,12 @@ function drawNode(parent_node, menu_id) { return html; } +// 수동으로 메뉴를 선택하도록 함 +function manualSelectNode(menu_id, node_srl) { + var zone_id = "menu_"+menu_id+"_"+node_srl; + selectNode(menu_id,node_srl,zone_id); +} + // 노드의 폴더 아이콘 클릭시 function toggleFolder(zone_id) { // 아이콘을 클릭한 대상을 찾아봄 @@ -214,7 +225,7 @@ function selectNode(menu_id, node_srl, zone_id) { if(!node_zone) return; // 선택된 노드의 글자를 변경 - node_zone.style.backgroundColor = "#000000"; + node_zone.style.backgroundColor = "#0e078f"; node_zone.style.fontWeight = "bold"; node_zone.style.color = "#FFFFFF"; prev_selected_node = node_zone; @@ -224,6 +235,16 @@ function selectNode(menu_id, node_srl, zone_id) { func(menu_id, node_info_list[node_srl]); } +// 선택된 노드의 표시를 없앰 +function deSelectNode() { + // 이전에 선택된 노드가 있었다면 원래데로 돌림 + if(!prev_selected_node) return; + prev_selected_node.style.backgroundColor = "#ffffff"; + prev_selected_node.style.fontWeight = "normal"; + prev_selected_node.style.color = "#000000"; +} + + // 모두 닫기 function closeAllTreeMenu(menu_id) { for(var i in tree_menu_folder_list[menu_id]) { diff --git a/modules/layout/conf/module.xml b/modules/layout/conf/module.xml index 4c8c7841e..19fc9eeba 100644 --- a/modules/layout/conf/module.xml +++ b/modules/layout/conf/module.xml @@ -10,5 +10,6 @@ + diff --git a/modules/layout/layout.controller.php b/modules/layout/layout.controller.php index 13361c1dd..b07c319dc 100644 --- a/modules/layout/layout.controller.php +++ b/modules/layout/layout.controller.php @@ -90,6 +90,37 @@ $this->add('menu_title', $menu_title); } + /** + * @brief 레이아웃 메뉴 삭제 + **/ + function procDeleteLayoutMenu() { + // 변수 정리 + $args = Context::gets('layout_srl','layout','menu_srl','menu_id'); + + // DB에서 삭제 + $oDB = &DB::getInstance(); + $output = $oDB->executeQuery("layout.deleteLayoutMenu", $args); + if(!$output->toBool()) return $output; + + // 해당 메뉴의 정보를 구함 + $layout_info = $oLayoutModel->getLayoutInfoXml($args->layout); + $navigations = $layout_info->navigations; + if(count($navigations)) { + foreach($navigations as $key => $val) { + if($args->menu_id == $val->id) { + $menu_title = $val->name; + } + } + } + + // XML 파일을 갱신하고 위치을 넘겨 받음 + $xml_file = $this->makeXmlFile($args->layout_srl); + + $this->add('xml_file', $xml_file[$args->menu_id]); + $this->add('menu_id', $args->menu_id); + $this->add('menu_title', $menu_title); + } + /** * @brief 메뉴의 xml 파일을 만들고 위치를 return **/ diff --git a/modules/layout/layout.model.php b/modules/layout/layout.model.php index e22256dc0..e906b4d06 100644 --- a/modules/layout/layout.model.php +++ b/modules/layout/layout.model.php @@ -181,7 +181,6 @@ $oDB = &DB::getInstance(); $menu_info->menu_srl = $oDB->getNextSequence(); } - Context::set('menu_info', $menu_info); // template 파일을 직접 컴파일한후 tpl변수에 담아서 return한다. diff --git a/modules/layout/queries/deleteLayoutMenu.xml b/modules/layout/queries/deleteLayoutMenu.xml new file mode 100644 index 000000000..d4f203deb --- /dev/null +++ b/modules/layout/queries/deleteLayoutMenu.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/modules/layout/tpl.admin/filter/delete_layout_menu.xml b/modules/layout/tpl.admin/filter/delete_layout_menu.xml new file mode 100644 index 000000000..4a9de5f93 --- /dev/null +++ b/modules/layout/tpl.admin/filter/delete_layout_menu.xml @@ -0,0 +1,16 @@ + +
+ + + + + + + + + + + + + +
diff --git a/modules/layout/tpl.admin/js/admin.js b/modules/layout/tpl.admin/js/admin.js index 2914b216e..86770b9ee 100644 --- a/modules/layout/tpl.admin/js/admin.js +++ b/modules/layout/tpl.admin/js/admin.js @@ -10,9 +10,17 @@ function completeInsertLayoutMenu(ret_obj) { var xml_file = ret_obj['xml_file']; var menu_title = ret_obj['menu_title']; var menu_srl = ret_obj['menu_srl']; - loadTreeMenu(xml_file, menu_id, "menu_zone_"+menu_id, menu_title, doGetMenuInfo); + loadTreeMenu(xml_file, menu_id, "menu_zone_"+menu_id, menu_title, doGetMenuInfo, menu_srl); } +/* 레이아웃 멘뉴 삭제 */ +function doDeleteLayoutMenu(menu_srl, menu_id) { + var fo_obj = xGetElementById("fo_"+menu_id); + if(!fo_obj) return; + + procFilter(fo_obj, delete_layout_menu); +} + /* 레이아웃 메뉴에를 클릭시 적용할 함수 */ function doGetMenuInfo(menu_id, obj) { // layout, menu_id, node_srl을 추출 @@ -39,6 +47,7 @@ function doGetMenuInfo(menu_id, obj) { function doInsertLayoutMenu(menu_id) { var params = {node_srl:0} doGetMenuInfo(menu_id, params); + deSelectNode(); } /* 서버로부터 받아온 메뉴 정보를 출력 */ diff --git a/modules/layout/tpl.admin/layout_info.html b/modules/layout/tpl.admin/layout_info.html index b6ad64082..c36111fad 100644 --- a/modules/layout/tpl.admin/layout_info.html +++ b/modules/layout/tpl.admin/layout_info.html @@ -1,5 +1,6 @@ + @@ -50,7 +51,7 @@ ({$val->maxdepth} {$lang->depth})
- + diff --git a/modules/layout/tpl.admin/layout_menu_info.html b/modules/layout/tpl.admin/layout_menu_info.html index 5e7aa4575..11c3db327 100644 --- a/modules/layout/tpl.admin/layout_menu_info.html +++ b/modules/layout/tpl.admin/layout_menu_info.html @@ -55,6 +55,9 @@
+ + +