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

@ -271,24 +271,6 @@
if(!$kind && $this->module == 'admin') $kind = 'admin'; if(!$kind && $this->module == 'admin') $kind = 'admin';
if($this->module_info->use_mobile != "Y") Mobile::setMobile(false); if($this->module_info->use_mobile != "Y") Mobile::setMobile(false);
// admin menu check
if(Context::isInstalled())
{
$oMenuAdminModel = &getAdminModel('menu');
$output = $oMenuAdminModel->getMenuByTitle('__XE_ADMIN__');
if(!$output->menu_srl)
{
$oAdminClass = &getClass('admin');
$oAdminClass->createXeAdminMenu();
}
else if(!is_readable($output->php_file))
{
$oMenuAdminController = &getAdminController('menu');
$oMenuAdminController->makeXmlFile($output->menu_srl);
}
}
// Admin ip // Admin ip
$logged_info = Context::get('logged_info'); $logged_info = Context::get('logged_info');
if($kind == 'admin' && $_SESSION['denied_admin'] == 'Y'){ if($kind == 'admin' && $_SESSION['denied_admin'] == 'Y'){

View file

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

View file

@ -8,6 +8,13 @@
* @version 0.1 * @version 0.1
*/ */
class admin extends ModuleObject { class admin extends ModuleObject {
private $adminMenuName = '__ADMINMENU_V17__';
public function getAdminMenuName()
{
return $this->adminMenuName;
}
/** /**
* Install admin module * Install admin module
* @return Object * @return Object
@ -24,6 +31,26 @@
$oDB = &DB::getInstance(); $oDB = &DB::getInstance();
if(!$oDB->isColumnExists("admin_favorite", "type")) return true; 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; return false;
} }
@ -66,18 +93,18 @@
* Regenerate xe admin default menu * Regenerate xe admin default menu
* @return void * @return void
*/ */
function createXeAdminMenu() public function createXeAdminMenu()
{ {
//insert menu //insert menu
$args->title = '__XE_ADMIN__'; $args->title = $this->adminMenuName;
$args->menu_srl = getNextSequence(); $args->menu_srl = getNextSequence();
$args->listorder = $args->menu_srl * -1; $args->listorder = $args->menu_srl * -1;
$output = executeQuery('menu.insertMenu', $args); $output = executeQuery('menu.insertMenu', $args);
$menuSrl = $args->menu_srl; $menuSrl = $args->menu_srl;
unset($args); unset($args);
// gnb item create // 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) foreach($gnbList AS $key=>$value)
{ {
//insert menu item //insert menu item
@ -109,7 +136,7 @@
$gnbModuleList = array( $gnbModuleList = array(
0=>array( 0=>array(
'module'=>'menu', 'module'=>'menu',
'subMenu'=>array('siteMap'), 'subMenu'=>array('siteMap', 'siteDesign'),
), ),
1=>array( 1=>array(
'module'=>'member', 'module'=>'member',
@ -214,7 +241,7 @@
$args->hover_btn = ''; $args->hover_btn = '';
$args->active_btn = ''; $args->active_btn = '';
$args->group_srls = $adminGroupSrl; $args->group_srls = $adminGroupSrl;
$oModuleModel = &getModel('module'); $oModuleModel = &getModel('module');
foreach($gnbModuleList AS $key=>$value) foreach($gnbModuleList AS $key=>$value)
{ {
@ -245,6 +272,56 @@
* @return string * @return string
*/ */
function _getGnbKey($menuName) 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) { switch($menuName) {
case 'siteMap': case 'siteMap':
@ -287,7 +364,89 @@
return 'configuration'; return 'configuration';
break; break;
default: 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>
<item name="menu_gnb" type="array"> <item name="menu_gnb" type="array">
<item name="dashboard"> <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="en"><![CDATA[Dashboard]]></value>
<value xml:lang="jp"><![CDATA[ダッシュボード]]></value> <value xml:lang="jp"><![CDATA[ダッシュボード]]></value>
<value xml:lang="zh-CN"><![CDATA[控制面板]]></value> <value xml:lang="zh-CN"><![CDATA[控制面板]]></value>
<value xml:lang="tr"><![CDATA[Kontrol Paneli]]></value> <value xml:lang="tr"><![CDATA[Kontrol Paneli]]></value>
</item> </item>
<item name="menu"> <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="en"><![CDATA[Menu]]></value>
<value xml:lang="jp"><![CDATA[サイト]]></value> <value xml:lang="jp"><![CDATA[サイト]]></value>
<value xml:lang="zh-CN"><![CDATA[目录]]></value> <value xml:lang="zh-CN"><![CDATA[目录]]></value>
@ -295,20 +295,6 @@
<value xml:lang="zh-CN"><![CDATA[内容]]></value> <value xml:lang="zh-CN"><![CDATA[内容]]></value>
<value xml:lang="tr"><![CDATA[içerik]]></value> <value xml:lang="tr"><![CDATA[içerik]]></value>
</item> </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"> <item name="configuration">
<value xml:lang="ko"><![CDATA[설정]]></value> <value xml:lang="ko"><![CDATA[설정]]></value>
<value xml:lang="en"><![CDATA[Settings]]></value> <value xml:lang="en"><![CDATA[Settings]]></value>
@ -316,6 +302,10 @@
<value xml:lang="zh-CN"><![CDATA[设置]]></value> <value xml:lang="zh-CN"><![CDATA[设置]]></value>
<value xml:lang="tr"><![CDATA[Ayarlar]]></value> <value xml:lang="tr"><![CDATA[Ayarlar]]></value>
</item> </item>
<item name="advanced">
<value xml:lang="ko"><![CDATA[고급]]></value>
<value xml:lang="en"><![CDATA[Advanced]]></value>
</item>
</item> </item>
<item name="newest_news"> <item name="newest_news">
<value xml:lang="ko"><![CDATA[최신 소식]]></value> <value xml:lang="ko"><![CDATA[최신 소식]]></value>
@ -1473,4 +1463,4 @@
<value xml:lang="ko"><![CDATA[모두 접기]]></value> <value xml:lang="ko"><![CDATA[모두 접기]]></value>
<value xml:lang="en"><![CDATA[Close All]]></value> <value xml:lang="en"><![CDATA[Close All]]></value>
</item> </item>
</lang> </lang>

View file

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

View file

@ -87,7 +87,8 @@
$oMenuAdminModel = &getAdminModel('menu'); $oMenuAdminModel = &getAdminModel('menu');
$menu_info = $oMenuAdminModel->getMenu($menu_srl); $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'); return new Object(-1, 'msg_adminmenu_cannot_delete');
$this->deleteMenu($menu_srl); $this->deleteMenu($menu_srl);
@ -377,7 +378,8 @@
// Get original information // Get original information
$item_info = $oMenuAdminModel->getMenuItemInfo($args->menu_item_srl); $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; 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 // Display an error that the category cannot be deleted if it has a child node

View file

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

View file

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

View file

@ -7,7 +7,7 @@
</columns> </columns>
<conditions> <conditions>
<condition operation="equal" column="site_srl" var="site_srl" filter="number" /> <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> </conditions>
<navigation> <navigation>
<index var="sort_index" default="listorder" order="asc" /> <index var="sort_index" default="listorder" order="asc" />

View file

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