issue 2364 menu item move bug fix

git-svn-id: http://xe-core.googlecode.com/svn/branches/maserati@11575 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
ovclas 2012-10-04 02:00:32 +00:00
parent 7588c4ecc1
commit 46c625df6a
2 changed files with 49 additions and 6 deletions

View file

@ -597,4 +597,7 @@ Menu không phải là người quản lý, nhiệm vụ của nó chỉ là li
<value xml:lang="en"><![CDATA[Exposure limits]]></value>
<value xml:lang="zh-TW"><![CDATA[Exposure limits]]></value>
</item>
<item name="msg_empty_menu_item">
<value xml:lang="ko"><![CDATA[선택된 메뉴의 정보가 없습니다.]]></value>
</item>
</lang>

View file

@ -599,11 +599,10 @@
*/
function procMenuAdminMoveItem()
{
//TODO 클라이언트가 넘기는 값을 그냥 사용하면 됨. parent_srl(부모), source_srl(같은 계층의 menu_item_srl), target_srl(나 자신의 menu_item_srl)
$mode = Context::get('mode');
$parent_srl = Context::get('parent_srl');
$source_srl = Context::get('source_srl');
$target_srl = Context::get('target_srl');
$mode = Context::get('mode'); //move
$parent_srl = Context::get('parent_srl'); // Parent menu item serial number
$source_srl = Context::get('source_srl'); // Same hierarchy's menu item serial number
$target_srl = Context::get('target_srl'); // Self menu item serial number
if(!$mode || !$parent_srl || !$target_srl) return new Object(-1,'msg_invalid_request');
@ -611,6 +610,24 @@
// get original menu item info for cache file recreate
$originalItemInfo = $oMenuAdminModel->getMenuItemInfo($target_srl);
if(!$originalItemInfo->menu_item_srl)
{
return new Object(-1, 'msg_empty_menu_item');
}
// get menu properies with child menu
$phpFile = sprintf("./files/cache/menu/%s.php", $originalItemInfo->menu_srl);
$originMenu = NULL;
if(is_readable(FileHandler::getRealPath($phpFile)))
{
@include(FileHandler::getRealPath($phpFile));
if(is_array($menu->list))
{
$this->_searchMenu($menu->list, $originalItemInfo->menu_item_srl, $originMenu);
}
}
// get target menu info for move
$targetMenuItemInfo = $oMenuAdminModel->getMenuItemInfo($parent_srl);
@ -627,7 +644,11 @@
$parent_srl = 0;
}
$this->moveMenuItem($menu_srl,$parent_srl,$source_srl,$target_srl,$mode);
$this->moveMenuItem($menu_srl, $parent_srl, $source_srl, $target_srl, $mode);
if(count($originMenu['list']) > 0)
{
$this->_recursiveUpdateMenuItem($originMenu['list'], $menu_srl);
}
//recreate original menu
$xml_file = $this->makeXmlFile($originalItemInfo->menu_srl);
@ -636,6 +657,25 @@
$xml_file = $this->makeXmlFile($menu_srl);
}
private function _recursiveUpdateMenuItem($node, $menu_srl)
{
if(is_array($node))
{
foreach($node AS $key=>$node)
{
unset($args);
$args->menu_srl = $menu_srl;
$args->menu_item_srl = $node['node_srl'];
$output = executeQuery('menu.updateMenuItemNode', $args);
if(count($node['list']) > 0)
{
$this->_recursiveUpdateMenuItem($node['list'], $menu_srl);
}
}
}
}
/**
* cop menu item
* @return void