issue 2498 new admin menu develop

git-svn-id: http://xe-core.googlecode.com/svn/branches/maserati@11318 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
ovclas 2012-09-18 13:00:18 +00:00
parent 4b4fc419a8
commit 8aafc130ab
10 changed files with 196 additions and 52 deletions

View file

@ -114,7 +114,7 @@
$lang->menu_gnb_sub = $oAdminAdminModel->getAdminMenuLang();
$oMenuAdminModel = &getAdminModel('menu');
$menu_info = $oMenuAdminModel->getMenuByTitle('__XE_ADMIN__');
$menu_info = $oMenuAdminModel->getMenuByTitle($oAdminAdminModel->getAdminMenuName());
Context::set('admin_menu_srl', $menu_info->menu_srl);
if(!is_readable($menu_info->php_file)) return;
@ -389,8 +389,9 @@
$oModuleModel = &getModel('module');
$configObject = $oModuleModel->getModuleConfig('admin');
$oAdmin = &getClass('admin');
$oMenuAdminModel = &getAdminModel('menu');
$output = $oMenuAdminModel->getMenuByTitle('__XE_ADMIN__');
$output = $oMenuAdminModel->getMenuByTitle($oAdmin->getAdminMenuName());
Context::set('menu_srl', $output->menu_srl);
Context::set('menu_title', $output->title);

View file

@ -8,6 +8,13 @@
* @version 0.1
*/
class admin extends ModuleObject {
private $adminMenuName = '__ADMINMENU_V17__';
public function getAdminMenuName()
{
return $this->adminMenuName;
}
/**
* Install admin module
* @return Object
@ -24,6 +31,26 @@
$oDB = &DB::getInstance();
if(!$oDB->isColumnExists("admin_favorite", "type")) return true;
// for admin menu
if(Context::isInstalled())
{
$oMenuAdminModel = &getAdminModel('menu');
$output = $oMenuAdminModel->getMenuByTitle($this->adminMenuName);
if(!$output->menu_srl)
{
$oAdminClass = &getClass('admin');
$oAdminClass->createXeAdminMenu();
}
else if(!is_readable($output->php_file))
{
$oMenuAdminController = &getAdminController('menu');
$oMenuAdminController->makeXmlFile($output->menu_srl);
}
$this->_oldAdminmenuDelete();
}
return false;
}
@ -66,18 +93,18 @@
* Regenerate xe admin default menu
* @return void
*/
function createXeAdminMenu()
public function createXeAdminMenu()
{
//insert menu
$args->title = '__XE_ADMIN__';
$args->menu_srl = getNextSequence();
$args->listorder = $args->menu_srl * -1;
$output = executeQuery('menu.insertMenu', $args);
$args->title = $this->adminMenuName;
$args->menu_srl = getNextSequence();
$args->listorder = $args->menu_srl * -1;
$output = executeQuery('menu.insertMenu', $args);
$menuSrl = $args->menu_srl;
unset($args);
// gnb item create
$gnbList = array('dashboard', 'menu', 'user', 'content', 'theme', 'extensions', 'configuration');
$gnbList = array('dashboard', 'menu', 'user', 'content', 'configuration', 'advanced');
foreach($gnbList AS $key=>$value)
{
//insert menu item
@ -109,7 +136,7 @@
$gnbModuleList = array(
0=>array(
'module'=>'menu',
'subMenu'=>array('siteMap'),
'subMenu'=>array('siteMap', 'siteDesign'),
),
1=>array(
'module'=>'member',
@ -214,7 +241,7 @@
$args->hover_btn = '';
$args->active_btn = '';
$args->group_srls = $adminGroupSrl;
$oModuleModel = &getModel('module');
$oModuleModel = &getModel('module');
foreach($gnbModuleList AS $key=>$value)
{
@ -245,6 +272,56 @@
* @return string
*/
function _getGnbKey($menuName)
{
switch($menuName) {
case 'siteMap':
case 'siteDesign':
return 'menu';
break;
case 'userList':
case 'userSetting':
case 'userGroup':
case 'point':
return 'user';
break;
case 'document':
case 'comment':
case 'trackback':
case 'file':
case 'poll':
case 'rss':
case 'multilingual':
case 'importer':
case 'trash':
case 'spamFilter':
return 'content';
break;
case 'theme':
case 'easyInstall':
case 'installedLayout':
case 'installedModule':
case 'installedWidget':
case 'installedAddon':
case 'editor':
return 'advanced';
break;
case 'adminConfigurationGeneral':
case 'adminConfigurationFtp':
case 'adminMenuSetup':
case 'fileUpload':
case 'filebox':
return 'configuration';
break;
default:
return 'advanced';
}
}
/**
* Return parent old menu key by child menu
* @return string
*/
function _getOldGnbKey($menuName)
{
switch($menuName) {
case 'siteMap':
@ -287,7 +364,89 @@
return 'configuration';
break;
default:
return 'extensions';
return 'user_added_menu';
}
}
private function _oldAdminmenuDelete()
{
$oMenuAdminModel = &getAdminModel('menu');
$output = $oMenuAdminModel->getMenuByTitle($this->adminMenuName);
$newAdminmenuSrl = $output->menu_srl;
$output = $oMenuAdminModel->getMenuItems($newAdminmenuSrl, 0);
$newAdminParentMenuList = array();
if(is_array($output->data))
{
foreach($output->data AS $key=>$value)
{
$tmp = explode('\'', $value->name);
$newAdminParentMenuList[$tmp[1]] = $value;
}
}
unset($output);
// old admin menu
$output = $oMenuAdminModel->getMenuByTitle('__XE_ADMIN__');
$menuSrl = $output->menu_srl;
if($menuSrl)
{
$oMenuAdminController = &getAdminController('menu');
$output = $oMenuAdminModel->getMenuItems($menuSrl);
if(is_array($output->data))
{
$parentMenu = array();
foreach($output->data AS $key=>$menuItem)
{
if($menuItem->parent_srl == 0)
{
$tmp = explode('\'', $menuItem->name);
$parentMenuKey = $tmp[1];
$parentMenu[$menuItem->menu_item_srl] = $parentMenuKey;
}
}
$isUserAddedMenuMoved = false;
foreach($output->data AS $key=>$menuItem)
{
if($menuItem->parent_srl != 0)
{
$tmp = explode('\'', $menuItem->name);
$menuKey = $tmp[1];
$result = $this->_getOldGnbKey($menuKey);
if($result == 'user_added_menu')
{
if($parentMenu[$menuItem->parent_srl] == 'theme')
{
$newParentItem = $newAdminParentMenuList['menu'];
}
else if($parentMenu[$menuItem->parent_srl] == 'extensions')
{
$newParentItem = $newAdminParentMenuList['advanced'];
}
else
{
$newParentItem = $newAdminParentMenuList[$parentMenu[$menuItem->parent_srl]];
}
$menuItem->menu_srl = $newParentItem->menu_srl;
$menuItem->parent_srl = $newParentItem->menu_item_srl;
$output = executeQuery('menu.updateMenuItem', $menuItem);
$isUserAddedMenuMoved = true;
}
}
}
if($isUserAddedMenuMoved)
{
$oMenuAdminController->makeXmlFile($newAdminmenuSrl);
}
}
$oMenuAdminController->deleteMenu($menuSrl);
}
}
}

View file

@ -268,14 +268,14 @@
</item>
<item name="menu_gnb" type="array">
<item name="dashboard">
<value xml:lang="ko"><![CDATA[제어판]]></value>
<value xml:lang="ko"><![CDATA[대시보드]]></value>
<value xml:lang="en"><![CDATA[Dashboard]]></value>
<value xml:lang="jp"><![CDATA[ダッシュボード]]></value>
<value xml:lang="zh-CN"><![CDATA[控制面板]]></value>
<value xml:lang="tr"><![CDATA[Kontrol Paneli]]></value>
</item>
<item name="menu">
<value xml:lang="ko"><![CDATA[사이트]]></value>
<value xml:lang="ko"><![CDATA[사이트 제작/편집]]></value>
<value xml:lang="en"><![CDATA[Menu]]></value>
<value xml:lang="jp"><![CDATA[サイト]]></value>
<value xml:lang="zh-CN"><![CDATA[目录]]></value>
@ -295,20 +295,6 @@
<value xml:lang="zh-CN"><![CDATA[内容]]></value>
<value xml:lang="tr"><![CDATA[içerik]]></value>
</item>
<item name="theme">
<value xml:lang="ko"><![CDATA[테마]]></value>
<value xml:lang="en"><![CDATA[Theme]]></value>
<value xml:lang="jp"><![CDATA[テーマ]]></value>
<value xml:lang="zh-CN"><![CDATA[主题]]></value>
<value xml:lang="tr"><![CDATA[Tema]]></value>
</item>
<item name="extensions">
<value xml:lang="ko"><![CDATA[확장기능]]></value>
<value xml:lang="en"><![CDATA[Extensions]]></value>
<value xml:lang="jp"><![CDATA[拡張機能]]></value>
<value xml:lang="zh-CN"><![CDATA[扩展]]></value>
<value xml:lang="tr"><![CDATA[Eklentiler]]></value>
</item>
<item name="configuration">
<value xml:lang="ko"><![CDATA[설정]]></value>
<value xml:lang="en"><![CDATA[Settings]]></value>
@ -316,6 +302,10 @@
<value xml:lang="zh-CN"><![CDATA[设置]]></value>
<value xml:lang="tr"><![CDATA[Ayarlar]]></value>
</item>
<item name="advanced">
<value xml:lang="ko"><![CDATA[고급]]></value>
<value xml:lang="en"><![CDATA[Advanced]]></value>
</item>
</item>
<item name="newest_news">
<value xml:lang="ko"><![CDATA[최신 소식]]></value>
@ -1473,4 +1463,4 @@
<value xml:lang="ko"><![CDATA[모두 접기]]></value>
<value xml:lang="en"><![CDATA[Close All]]></value>
</item>
</lang>
</lang>

View file

@ -9,6 +9,7 @@
<action name="dispMenuAdminManagement" type="view" standalone="true" />
<action name="dispMenuAdminMidList" type="view" standalone="true" />
<action name="dispMenuAdminSiteMap" type="view" standalone="true" admin_index="true" menu_name="siteMap" menu_index="true" />
<action name="dispMenuAdminSiteDesign" type="view" standalone="true" menu_name="siteDesign" />
<action name="getMenuAdminTplInfo" type="model" standalone="true" />
<action name="getMenuAdminItemInfo" type="model" standalone="true" />
@ -34,7 +35,7 @@
<menus>
<menu name="siteMap">
<title xml:lang="en">Menu Management</title>
<title xml:lang="ko">사이트</title>
<title xml:lang="ko">사이트 메뉴 편집</title>
<title xml:lang="jp">サイトマップ</title>
<title xml:lang="zh-CN">Menu Management</title>
<title xml:lang="zh-TW">選單管理</title>
@ -45,5 +46,9 @@
<title xml:lang="mn">Menu Management</title>
<title xml:lang="tr">Menu Management</title>
</menu>
<menu name="siteDesign">
<title xml:lang="en">Menu Management</title>
<title xml:lang="ko">사이트 디자인 설정</title>
</menu>
</menus>
</module>

View file

@ -87,7 +87,8 @@
$oMenuAdminModel = &getAdminModel('menu');
$menu_info = $oMenuAdminModel->getMenu($menu_srl);
if($menu_info->title == '__XE_ADMIN__')
$oAdmin = &getClass('admin');
if($menu_info->title == $oAdmin->getAdminMenuName())
return new Object(-1, 'msg_adminmenu_cannot_delete');
$this->deleteMenu($menu_srl);
@ -377,7 +378,8 @@
// Get original information
$item_info = $oMenuAdminModel->getMenuItemInfo($args->menu_item_srl);
if($menu_title == '__XE_ADMIN__' && $item_info->parent_srl == 0)return $this->stop('msg_cannot_delete_for_admin_topmenu');
$oAdmin = &getClass('admin');
if($menu_title == $oAdmin->getAdminMenuName() && $item_info->parent_srl == 0)return $this->stop('msg_cannot_delete_for_admin_topmenu');
if($item_info->parent_srl) $parent_srl = $item_info->parent_srl;
// Display an error that the category cannot be deleted if it has a child node

View file

@ -331,9 +331,10 @@
$menuListFromDB = $this->getMenus();
if(is_array($menuListFromDB))
{
$oAdmin = &getClass('admin');
foreach($menuListFromDB AS $key=>$value)
{
if($value->title == '__XE_ADMIN__') unset($output[$key]);
if($value->title == $oAdmin->getAdminMenuName()) unset($output[$key]);
else
{
unset($menu);

View file

@ -137,6 +137,8 @@
else $site_srl = (int)$site_module_info->site_srl;
}
$oAdmin = &getClass('admin');
$oMenuAdminModel = &getAdminModel('menu');
$menuListFromDB = $oMenuAdminModel->getMenus();
$output = $menuListFromDB;
@ -147,7 +149,7 @@
$menuItems = array();
foreach($output AS $key=>$value)
{
if($value->title == '__XE_ADMIN__') unset($output[$key]);
if($value->title == $oAdmin->getAdminMenuName()) unset($output[$key]);
else
{
unset($menu);

View file

@ -7,7 +7,7 @@
</columns>
<conditions>
<condition operation="equal" column="site_srl" var="site_srl" filter="number" />
<condition operation="notequal" column="title" default="__XE_ADMIN__" pipe="and" />
<condition operation="notequal" column="title" default="__ADMINMENU_V17__" pipe="and" />
</conditions>
<navigation>
<index var="sort_index" default="listorder" order="asc" />

View file

@ -3,6 +3,8 @@
<table name="menu_item" />
</tables>
<columns>
<column name="menu_srl" var="menu_srl" />
<column name="parent_srl" var="parent_srl" />
<column name="name" var="name" notnull="notnull" />
<column name="url" var="url" />
<column name="open_window" var="open_window" />