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 = '

'+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 @@
+