add favorite features to admin module

git-svn-id: http://xe-core.googlecode.com/svn/branches/1.5.0@8703 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
flyskyko 2011-07-29 15:00:28 +00:00
parent bf2f77fb4d
commit 88638b4ba8
9 changed files with 262 additions and 12 deletions

View file

@ -27,11 +27,11 @@
FileHandler::rename('./files/cache', $temp_cache_dir);
FileHandler::makeDir('./files/cache');
// remove debug files
// remove debug files
FileHandler::removeFile(_XE_PATH_.'files/_debug_message.php');
FileHandler::removeFile(_XE_PATH_.'files/_debug_db_query.php');
FileHandler::removeFile(_XE_PATH_.'files/_db_slow_query.php');
$oModuleModel = &getModel('module');
$module_list = $oModuleModel->getModuleList();
@ -57,7 +57,7 @@
if($oObjectCacheHandler->isSupport()){
$truncated[] = $oObjectCacheHandler->truncate();
}
if($oTemplateCacheHandler->isSupport()){
$truncated[] = $oTemplateCacheHandler->truncate();
}
@ -94,7 +94,7 @@
// layout submit
$output = executeQuery('layout.updateAllLayoutInSiteWithTheme', $args);
if (!$output->toBool()) return $output;
$skin_args->site_srl = $site_info->site_srl;
foreach($vars as $key=>$val){
@ -137,12 +137,125 @@
// Save File
FileHandler::writeFile($theme_file, $theme_buff);
if(!in_array(Context::getRequestMethod(),array('XMLRPC','JSON'))) {
if(!in_array(Context::getRequestMethod(),array('XMLRPC','JSON'))) {
$returnUrl = Context::get('success_return_url') ? Context::get('success_return_url') : getNotEncodedUrl('', 'module', 'admin', 'act', 'dispAdminTheme');
header('location:'.$returnUrl);
return;
}
}
else return $output;
}
/**
* @brief Toggle favorite
**/
function procAdminToggleFavorite()
{
$siteSrl = Context::get('site_srl');
$moduleName = Context::get('module_name');
$key = Context::get('key');
// check favorite exists
$oModel = &getAdminModel('admin');
$output = $oModel->isExistsFavorite($siteSrl, $moduleName, $key);
if (!$output->toBool()) return $output;
// if exists, delete favorite
if ($output->get('result'))
{
$favoriteSrl = $output->get('favoriteSrl');
$output = $this->deleteFavorite($favoriteSrl);
}
// if not exists, insert favorite
else
{
$output = $this->insertFavorite($siteSrl, $moduleName, $key);
}
if (!$output->toBool()) return $output;
$this->setRedirectUrl(Context::get('error_return_url'));
}
/**
* @brief Insert favorite
**/
function insertFavorite($siteSrl, $module, $key)
{
$args->site_srl = $siteSrl;
$args->module = $module;
$args->key = $key;
$output = executeQuery('admin.insertFavorite', $args);
return $output;
}
/**
* @brief Delete favorite
**/
function deleteFavorite($favoriteSrl)
{
$args->admin_favorite_srl = $favoriteSrl;
$output = executeQuery('admin.deleteFavorite', $args);
return $output;
}
/**
* @brief set favorites at one time
**/
function setFavoritesByModule($siteSrl, $module, $keyList)
{
$oModel = &getAdminModel('admin');
$output = $oModel->getFavoriteListByModule($siteSrl, $module);
if (!$output->toBool()) return $output;
$originList = $output->get('list');
// find insert key
$insertKey = array_diff($keyList, $originList);
// find delete key
$deleteKey = array_diff($originList, $keyList);
// start transaction
$oDB = &DB::getInstance();
$oDB->begin();
// insert key
foreach($insertKey as $key)
{
$output = $this->insertFavorite($siteSrl, $module, $key);
if (!$output->toBool())
{
$oDB->rollback();
return $output;
}
}
// delete key
foreach($deleteKey as $key)
{
$output = $oModel->isExistsFavorite($siteSrl, $module, $key);
if (!$output->toBool())
{
$oDB->rollback();
return $output;
}
$favoriteSrl = $output->get('favoriteSrl');
if ($favoriteSrl)
{
$output = $this->deleteFavorite($favoriteSrl);
if (!$output->toBool())
{
$oDB->rollback();
return $output;
}
}
}
// commit
$oDB->commit();
return new Object();
}
}
?>

View file

@ -43,7 +43,7 @@
set_time_limit(5);
require_once(_XE_PATH_.'libs/ftp.class.php');
$ftp_info = Context::getRequestVars();
if(!$ftp_info->ftp_user || !$ftp_info->ftp_password)
if(!$ftp_info->ftp_user || !$ftp_info->ftp_password)
{
return new Object(-1, 'msg_ftp_invalid_auth_info');
}
@ -112,10 +112,10 @@
$info['use_ssl'] = $db_info->use_ssl;
$info['phpext'] = '';
foreach (get_loaded_extensions() as $ext) {
foreach (get_loaded_extensions() as $ext) {
$ext = strtolower($ext);
if(in_array($ext, $skip['ext'])) continue;
$info['phpext'] .= '|'. $ext;
$info['phpext'] .= '|'. $ext;
}
$info['phpext'] = substr($info['phpext'],1);
@ -123,7 +123,7 @@
$oModuleModel = &getModel('module');
$module_list = $oModuleModel->getModuleList();
foreach($module_list as $module){
if(in_array($module->module, $skip['module'])) continue;
if(in_array($module->module, $skip['module'])) continue;
$info['module'] .= '|'.$module->module;
}
$info['module'] = substr($info['module'],1);
@ -132,7 +132,7 @@
$oAddonAdminModel = &getAdminModel('addon');
$addon_list = $oAddonAdminModel->getAddonList();
foreach($addon_list as $addon){
if(in_array($addon->addon, $skip['addon'])) continue;
if(in_array($addon->addon, $skip['addon'])) continue;
$info['addon'] .= '|'.$addon->addon;
}
$info['addon'] = substr($info['addon'],1);
@ -242,7 +242,7 @@
if(is_array($skin_infos->skininfo))$skin_list = $skin_infos->skininfo;
else $skin_list = array($skin_infos->skininfo);
$oModuleModel = &getModel('module');
$skins = array();
foreach($skin_list as $val){
@ -330,4 +330,78 @@
return $lang->menu_gnb_sub;
}
/**
* @brief Get admin favorite list
**/
function getFavoriteList($siteSrl)
{
$args->site_srl = $siteSrl;
$output = executeQueryArray('admin.getFavoriteList', $args);
if (!$output->toBool()) return $output;
if (!$output->data) return new Object();
foreach($output->data as $row)
{
$targetModule = $row->module;
$oTargetModuleAdminModel = &getAdminModel($targetModule);
if (!$oTargetModuleAdminModel) continue;
if (!method_exists($oTargetModuleAdminModel, 'getFavoriteInfo')) continue;
$favoriteInfo = $oTargetModuleAdminModel->getFavoriteInfo($row->key);
$favoriteList[] = $favoriteInfo;
}
$returnObject = new Object();
$returnObject->add('favoriteList', $favoriteList);
return $returnObject;
}
/**
* @brief Check available insert favorite
**/
function isExistsFavorite($siteSrl, $module, $key)
{
$args->site_srl = $siteSrl;
$args->module = $module;
$args->key = $key;
$output = executeQuery('admin.getFavorite', $args);
if (!$output->toBool()) return $output;
$returnObject = new Object();
if ($output->data)
{
$returnObject->add('result', true);
$returnObject->add('favoriteSrl', $output->data->admin_favorite_srl);
}
else
{
$returnObject->add('result', false);
}
return $returnObject;
}
/**
* @brief Get favorite by module, site
**/
function getFavoriteListByModule($siteSrl, $module)
{
$args->site_srl = $siteSrl;
$args->module = $module;
$columnList = array('key');
$output = executeQueryArray('admin.getFavoriteList', $args, $columnList);
if (!$output->toBool()) return $output;
if (!$output->data) $output->data = array();
$list = array();
foreach($output->data as $row)
{
$list[$row->key] = $row->key;
}
$returnObject = new Object();
$returnObject->add('list', $list);
return $returnObject;
}
}

View file

@ -11,6 +11,7 @@
<action name="procAdminRecompileCacheFile" type="controller" standalone="true" />
<action name="procAdminLogout" type="controller" standalone="true" />
<action name="procAdminInsertThemeInfo" type="controller" standalone="true" ruleset="insertThemeInfo" />
<action name="procAdminToggleFavorite" type="controller" ruleset="toggleFavorite" />
<action name="getAdminFTPList" type="model" standalone="true" />
</actions>

View file

@ -0,0 +1,8 @@
<query id="deleteFavorite" action="delete">
<tables>
<table name="admin_favorite" />
</tables>
<conditions>
<condition operation="equal" column="admin_favorite_srl" var="admin_favorite_srl" filter="number" notnull="notnull" />
</conditions>
</query>

View file

@ -0,0 +1,17 @@
<query id="getFavorite" action="select">
<tables>
<table name="admin_favorite" />
</tables>
<columns>
<column name="*" />
</columns>
<conditions>
<condition operation="equal" column="admin_favorite_srl" var="favorite_srl" />
<condition operation="equal" column="site_srl" var="site_srl" pipe="and" />
<condition operation="equal" column="module" var="module" pipe="and" />
<condition operation="equal" column="key" var="key" pipe="and" />
</conditions>
<navigation>
<index var="sort_index" default="admin_favorite_srl" order="desc" />
</navigation>
</query>

View file

@ -0,0 +1,12 @@
<query id="getFavoriteList" action="select">
<tables>
<table name="admin_favorite" />
</tables>
<columns>
<column name="*" />
</columns>
<conditions>
<condition operation="equal" column="site_srl" var="site_srl" />
<condition operation="equal" column="module" var="module" pipe="and" />
</conditions>
</query>

View file

@ -0,0 +1,10 @@
<query id="insertFavorite" action="insert">
<tables>
<table name="admin_favorite" />
</tables>
<columns>
<column name="site_srl" var="site_srl" filter="number" notnull="notnull" />
<column name="module" var="module" notnull="notnull" />
<column name="key" var="key" notnull="notnull" />
</columns>
</query>

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<ruleset version="1.5.0">
<customrules />
<fields>
<field name="site_srl" required="true" rule="number" />
<field name="module_name" required="true" />
<field name="key" required="true" />
</fields>
</ruleset>

View file

@ -0,0 +1,6 @@
<table name="admin_favorite">
<column name="admin_favorite_srl" type="number" size="11" notnull="notnull" primary_key="primary_key" auto_increment="auto_increment" />
<column name="site_srl" type="number" size="11" />
<column name="module" type="varchar" size="80" />
<column name="key" type="varchar" size="255" />
</table>