mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-04 01:01:41 +09:00
#225 사이트맵에 temporary menu가 중복생성되는 오류 해결,
메뉴명을 'temporary menu'에서 'unlinked'로 변경하였으며 'unlinked' 메뉴는 무조건 하나 존재하게 됨. 기존의 temporary menu는 삭제하도록 했고, temporary menu에 있던 하위메뉴들은 'unlinked' 메뉴 하위로 이동됨
This commit is contained in:
parent
6a5524abea
commit
82974b0438
4 changed files with 139 additions and 110 deletions
|
|
@ -529,15 +529,13 @@ class menuAdminModel extends menu
|
|||
unset($menu);
|
||||
unset($menuItems);
|
||||
$value->php_file = sprintf(_XE_PATH_ . 'files/cache/menu/%s.php',$value->menu_srl);
|
||||
if(file_exists($value->php_file))
|
||||
{
|
||||
include($value->php_file);
|
||||
}
|
||||
else
|
||||
if(!file_exists($value->php_file))
|
||||
{
|
||||
$oMenuAdminController->makeXmlFile($value->menu_srl);
|
||||
}
|
||||
|
||||
include($value->php_file);
|
||||
|
||||
$isMenuFixed = false;
|
||||
if(count($menu->list) > 0)
|
||||
{
|
||||
|
|
|
|||
21
modules/menu/queries/updateMenuItems.xml
Normal file
21
modules/menu/queries/updateMenuItems.xml
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
<query id="updateMenuItems" action="update">
|
||||
<tables>
|
||||
<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" />
|
||||
<column name="url" var="url" />
|
||||
<column name="is_shortcut" var="is_shortcut" />
|
||||
<column name="open_window" var="open_window" />
|
||||
<column name="expand" var="expand" />
|
||||
<column name="normal_btn" var="normal_btn" />
|
||||
<column name="hover_btn" var="hover_btn" />
|
||||
<column name="active_btn" var="active_btn" />
|
||||
<column name="group_srls" var="group_srls" />
|
||||
</columns>
|
||||
<conditions>
|
||||
<condition operation="equal" column="menu_srl" var="current_menu_srl" filter="number" notnull="notnull" />
|
||||
</conditions>
|
||||
</query>
|
||||
|
|
@ -101,10 +101,6 @@ class module extends ModuleObject
|
|||
}
|
||||
|
||||
// XE 1.7
|
||||
$args->site_srl = 0;
|
||||
$output = executeQueryArray('module.getNotLinkedModuleBySiteSrl',$args);
|
||||
|
||||
if($output->toBool() && $output->data && count($output->data) > 0) return true;
|
||||
|
||||
// check fix mskin
|
||||
if(!$oDB->isColumnExists("modules", "is_mskin_fix")) return true;
|
||||
|
|
@ -113,12 +109,25 @@ class module extends ModuleObject
|
|||
$moduleConfig = $oModuleModel->getModuleConfig('module');
|
||||
if(!$moduleConfig->isUpdateFixedValue) return true;
|
||||
|
||||
// check lost module
|
||||
if(!$moduleConfig->isUpdateLostModule)
|
||||
// 'unlinked' menu 존재여부 확인
|
||||
if(!$moduleConfig->unlinked_menu_srl) return true;
|
||||
else
|
||||
{
|
||||
$menuArgs = new stdClass;
|
||||
$menuArgs->menu_srl = $moduleConfig->unlinked_menu_srl;
|
||||
$menuOutput = executeQuery('menu.getMenu', $menuArgs);
|
||||
if(!$menuOutput->data) return true;
|
||||
}
|
||||
|
||||
// menu_srl이 등록되지 않은 mid가 있는지 검사(지정된 menu_srl이 있을 경우, 지정된 menu_item도 있다고 가정)
|
||||
$args = new stdClass;
|
||||
$args->site_srl = 0;
|
||||
$output = executeQueryArray('module.getNotLinkedModuleBySiteSrl',$args);
|
||||
if($output->toBool() && $output->data && count($output->data) > 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -414,29 +423,6 @@ class module extends ModuleObject
|
|||
$output = executeQuery('module.updateMobileSkinFixModules');
|
||||
}
|
||||
|
||||
$args = new stdClass;
|
||||
$args->site_srl = 0;
|
||||
$output = executeQueryArray('module.getNotLinkedModuleBySiteSrl',$args);
|
||||
|
||||
if($output->toBool() && $output->data && count($output->data) > 0)
|
||||
{
|
||||
//create temp menu.
|
||||
$args->title = 'Temporary menu';
|
||||
$menuSrl = $args->menu_srl = getNextSequence();
|
||||
$args->listorder = $args->menu_srl * -1;
|
||||
|
||||
$output = executeQuery('menu.insertMenu', $args);
|
||||
|
||||
if(!$output->toBool())
|
||||
{
|
||||
return $output;
|
||||
}
|
||||
|
||||
//getNotLinkedModuleBySiteSrl
|
||||
$soutput = executeQueryArray('module.getNotLinkedModuleBySiteSrl', $args);
|
||||
$uoutput = $this->updateLinkModule($soutput->data, $menuSrl);
|
||||
}
|
||||
|
||||
$oModuleModel = getModel('module');
|
||||
$moduleConfig = $oModuleModel->getModuleConfig('module');
|
||||
if(!$moduleConfig->isUpdateFixedValue)
|
||||
|
|
@ -449,69 +435,82 @@ class module extends ModuleObject
|
|||
$moduleConfig->isUpdateFixedValue = TRUE;
|
||||
$output = $oModuleController->updateModuleConfig('module', $moduleConfig);
|
||||
}
|
||||
|
||||
// menu(sitemap)에 링크되지 않은 모듈인스턴스 링크
|
||||
$output1 = $this->linkAllModuleInstancesToSitemap();
|
||||
if(!$output1->toBool()) return $output1;
|
||||
|
||||
return new Object(0, 'success_updated');
|
||||
}
|
||||
|
||||
private function linkAllModuleInstancesToSitemap()
|
||||
{
|
||||
// 'unlinked' menu가 있는지 검사
|
||||
$oModuleController = getController('module');
|
||||
$oModuleModel = getModel('module');
|
||||
$moduleConfig = $oModuleModel->getModuleConfig('module');
|
||||
|
||||
// check lost module
|
||||
if(!$moduleConfig->isUpdateLostModule)
|
||||
// 'unlinked menu 생성
|
||||
$menuSrl = 0;
|
||||
if(!$moduleConfig->unlinked_menu_srl)
|
||||
{
|
||||
$args = new stdClass();
|
||||
$args->site_srl = 0;
|
||||
$output = executeQueryArray('module.getMidList', $args);
|
||||
if(!$output->toBool())
|
||||
$menuSrl = $oModuleController->makeUnlinkedMenu();
|
||||
}
|
||||
else
|
||||
{
|
||||
$menuArgs = new stdClass;
|
||||
$menuArgs->menu_srl = $moduleConfig->unlinked_menu_srl;
|
||||
$menuOutput = executeQuery('menu.getMenu', $menuArgs);
|
||||
if(!$menuOutput->data)
|
||||
{
|
||||
return $output;
|
||||
}
|
||||
if($output->data)
|
||||
{
|
||||
$oMenuAdminModel = getAdminModel('menu'); /* @var $oMenuAdminModel menuAdminModel */
|
||||
foreach($output->data as $row)
|
||||
{
|
||||
$args = new stdClass();
|
||||
$args->url = $row->mid;
|
||||
$output2 = executeQuery('module.getMenuItem', $args);
|
||||
|
||||
if(!$output2->data->count)
|
||||
{
|
||||
$menuInfo = $oMenuAdminModel->getMenuByTitle('Temporary menu');
|
||||
|
||||
if(!$menuInfo)
|
||||
{
|
||||
$args = new stdClass();
|
||||
$args->title = 'Temporary menu';
|
||||
$menuSrl = $args->menu_srl = getNextSequence();
|
||||
$args->listorder = $args->menu_srl * -1;
|
||||
|
||||
$ioutput = executeQuery('menu.insertMenu', $args);
|
||||
if(!$ioutput->toBool())
|
||||
{
|
||||
return $ioutput;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$menuSrl = $menuInfo->menu_srl;
|
||||
}
|
||||
|
||||
$uoutput = $this->updateLinkModule(array($row), $menuSrl);
|
||||
if(!$uoutput->toBool())
|
||||
{
|
||||
return $uoutput;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$oModuleController = getController('module');
|
||||
$moduleConfig->isUpdateLostModule = TRUE;
|
||||
$output = $oModuleController->updateModuleConfig('module', $moduleConfig);
|
||||
if(!$output->toBool())
|
||||
{
|
||||
return $output;
|
||||
$menuSrl = $oModuleController->makeUnlinkedMenu();
|
||||
}
|
||||
}
|
||||
|
||||
return new Object(0, 'success_updated');
|
||||
}
|
||||
// 'unlinked' menu를 module config에 저장
|
||||
if($menuSrl)
|
||||
{
|
||||
$moduleConfig->unlinked_menu_srl = $menuSrl;
|
||||
$oModuleController->updateModuleConfig('module', $moduleConfig);
|
||||
}
|
||||
|
||||
// for 1.7.4 update, 기존에 생성된 Temporary menu 항목 정리
|
||||
$oMenuAdminModel = getAdminModel('menu'); // @var $oMenuAdminModel menuAdminModel
|
||||
$args = new stdClass();
|
||||
$args->title = array("Temporary menu");
|
||||
$temp_menus = executeQueryArray('menu.getMenuByTitle', $args);
|
||||
|
||||
$args = new stdClass();
|
||||
foreach($temp_menus->data as $menu)
|
||||
{
|
||||
$args->current_menu_srl = $menu->menu_srl;
|
||||
$args->menu_srl = $moduleConfig->unlinked_menu_srl;
|
||||
$output3 = executeQuery('menu.updateMenuItems', $args);
|
||||
|
||||
if($output3->toBool())
|
||||
{
|
||||
// delete
|
||||
$oMenuAdminController = getAdminController('menu');
|
||||
$oMenuAdminController->deleteMenu($menu->menu_srl);
|
||||
}
|
||||
}
|
||||
|
||||
// menu_srl이 지정되지 않은 mid가 있는지 검사
|
||||
$args = new stdClass;
|
||||
$args->site_srl = 0;
|
||||
$output1 = executeQueryArray('module.getNotLinkedModuleBySiteSrl',$args);
|
||||
if($output1->toBool() && $output1->data && count($output1->data) > 0)
|
||||
{
|
||||
$output2 = $this->updateLinkModule($output1->data, $menuSrl);
|
||||
if(!$output2->toBool())
|
||||
{
|
||||
return $output2;
|
||||
}
|
||||
}
|
||||
|
||||
return new Object(0,'success');
|
||||
}
|
||||
|
||||
/**
|
||||
* insert menu when not linked module.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -418,32 +418,27 @@ class moduleController extends module
|
|||
{
|
||||
$menuArgs = new stdClass;
|
||||
$menuArgs->menu_srl = $args->menu_srl;
|
||||
$menuOutput = executeQuery('menu.getMenu', $menuArgs);
|
||||
$menuOutput = executeQuery('menu.getMenu', $menuArgs);
|
||||
|
||||
// if menu is not created, create menu also. and does not supported that in virtual site.
|
||||
if(!$menuOutput->data && !$args->site_srl)
|
||||
{
|
||||
$oMenuAdminModel = getAdminModel('menu');
|
||||
$tempMenu = $oMenuAdminModel->getMenuByTitle(array('Temporary menu'));
|
||||
|
||||
if(!$tempMenu)
|
||||
|
||||
$oModuleModel = getModel('module');
|
||||
$moduleConfig = $oModuleModel->getModuleConfig('module');
|
||||
|
||||
$menuSrl = $moduleConfig->unlinked_menu_srl;
|
||||
if(!$menuSrl)
|
||||
{
|
||||
$siteMapArgs = new stdClass;
|
||||
$siteMapArgs->site_srl = 0;
|
||||
$siteMapArgs->title = 'Temporary menu';
|
||||
$siteMapArgs->listorder = $siteMapArgs->menu_srl * -1;
|
||||
$tempMenu = new stdClass;
|
||||
$tempMenu->menu_srl = $siteMapArgs->menu_srl = getNextSequence();
|
||||
|
||||
$siteMapOutput = executeQuery('menu.insertMenu', $siteMapArgs);
|
||||
if(!$siteMapOutput->toBool())
|
||||
{
|
||||
$oDB->rollback();
|
||||
return $siteMapOutput;
|
||||
}
|
||||
$menuSrl = $this->makeUnlinkedMenu();
|
||||
|
||||
// 'unlinked' menu를 module config에 저장
|
||||
$moduleConfig->unlinked_menu_srl = $menuSrl;
|
||||
$this->updateModuleConfig('module', $moduleConfig);
|
||||
}
|
||||
|
||||
$menuArgs->menu_srl = $tempMenu->menu_srl;
|
||||
$menuArgs->menu_srl = $menuSrl;
|
||||
$menuArgs->menu_item_srl = getNextSequence();
|
||||
$menuArgs->parent_srl = 0;
|
||||
$menuArgs->open_window = 'N';
|
||||
|
|
@ -461,7 +456,7 @@ class moduleController extends module
|
|||
}
|
||||
|
||||
$oMenuAdminController = getAdminController('menu');
|
||||
$oMenuAdminController->makeXmlFile($tempMenu->menu_srl);
|
||||
$oMenuAdminController->makeXmlFile($menuSrl);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -489,6 +484,22 @@ class moduleController extends module
|
|||
return $output;
|
||||
}
|
||||
|
||||
function makeUnlinkedMenu()
|
||||
{
|
||||
$args = new stdClass();
|
||||
$args->title = 'unlinked';
|
||||
$menuSrl = $args->menu_srl = getNextSequence();
|
||||
$args->listorder = $args->menu_srl * -1;
|
||||
|
||||
$output = executeQuery('menu.insertMenu', $args);
|
||||
if($output->toBool())
|
||||
{
|
||||
return $menuSrl;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Modify module information
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue