Move remainder of usable actions to respective controller classes

This commit is contained in:
Kijin Sung 2022-12-27 22:43:39 +09:00
parent 01b408fb6b
commit 7f0753454f
7 changed files with 310 additions and 330 deletions

View file

@ -0,0 +1,95 @@
<?php
namespace Rhymix\Modules\Admin\Controllers;
use Context;
use MenuAdminController;
use MenuAdminModel;
use Rhymix\Framework\Cache;
use Rhymix\Framework\Storage;
use Rhymix\Modules\Admin\Models\AdminMenu as AdminMenuModel;
use Rhymix\Modules\Admin\Models\Favorite as FavoriteModel;
class AdminMenu extends Base
{
/**
* Display Admin Menu configuration page.
*/
public function dispAdminSetup()
{
$oMenuAdminModel = MenuAdminModel::getInstance();
$output = $oMenuAdminModel->getMenuByTitle(AdminMenuModel::getAdminMenuName());
Context::set('menu_srl', $output->menu_srl);
Context::set('menu_title', $output->title);
$this->setTemplateFile('admin_setup');
}
/**
* Reset the admin menu to the default configuration.
*/
public function procAdminMenuReset()
{
$oMenuAdminController = MenuAdminController::getInstance();
$oMenuAdminModel = MenuAdminModel::getInstance();
for ($i = 0; $i < 100; $i++)
{
$output = $oMenuAdminModel->getMenuByTitle(AdminMenuModel::getAdminMenuName());
$admin_menu_srl = $output->menu_srl ?? 0;
if ($admin_menu_srl)
{
$output = $oMenuAdminController->deleteMenu($admin_menu_srl);
if (!$output->toBool())
{
return $output;
}
}
else
{
break;
}
}
Cache::delete('admin_menu_langs:' . Context::getLangType());
Storage::deleteDirectory(\RX_BASEDIR . 'files/cache/menu/admin_lang/');
$this->setRedirectUrl(Context::get('error_return_url'));
}
/**
* Insert or delete a module as favorite.
*/
public function procAdminToggleFavorite()
{
// Check if favorite exists.
$module_name = Context::get('module_name');
$output = FavoriteModel::isFavorite($module_name);
if(!$output->toBool())
{
return $output;
}
// Insert or delete.
if($output->get('result') && $output->get('favoriteSrl'))
{
$favorite_srl = $output->get('favoriteSrl');
$output = FavoriteModel::deleteFavorite($favorite_srl);
$result = 'off';
}
else
{
$output = FavoriteModel::insertFavorite($module_name);
$result = 'on';
}
if(!$output->toBool())
{
return $output;
}
$this->add('result', $result);
return $this->setRedirectUrl(Context::get('error_return_url'), $output);
}
}

View file

@ -0,0 +1,114 @@
<?php
namespace Rhymix\Modules\Admin\Controllers;
use Context;
use FileHandler;
use Rhymix\Framework\DB;
class Design extends Base
{
/**
* Save the default design configuration.
*/
public function procAdminInsertDefaultDesignInfo()
{
$vars = Context::getRequestVars();
$this->updateDefaultDesignInfo($vars);
$this->setRedirectUrl(Context::get('error_return_url'));
}
/**
* Subroutine for the above.
*
* @param object $vars
* @return void
*/
public function updateDefaultDesignInfo(object $vars): void
{
$vars->module_skin = json_decode($vars->module_skin);
$siteDesignPath = \RX_BASEDIR . 'files/site_design/';
if (!is_dir($siteDesignPath))
{
FileHandler::makeDir($siteDesignPath);
}
$siteDesignFile = \RX_BASEDIR . 'files/site_design/design_0.php';
$layoutTarget = 'layout_srl';
$skinTarget = 'skin';
if ($vars->target_type == 'M')
{
$layoutTarget = 'mlayout_srl';
$skinTarget = 'mskin';
}
if (is_readable($siteDesignFile))
{
include $siteDesignFile;
}
else
{
$designInfo = new \stdClass;
}
$layoutSrl = (!$vars->layout_srl) ? 0 : $vars->layout_srl;
$designInfo->{$layoutTarget} = $layoutSrl;
foreach ($vars->module_skin as $moduleName => $skinName)
{
if ($moduleName == 'ARTICLE')
{
$moduleName = 'page';
}
if (!isset($designInfo->module))
{
$designInfo->module = new \stdClass;
}
if (!isset($designInfo->module->{$moduleName}))
{
$designInfo->module->{$moduleName} = new \stdClass;
}
$designInfo->module->{$moduleName}->{$skinTarget} = $skinName;
}
$this->makeDefaultDesignFile($designInfo);
}
/**
* Subroutine for the above;
*
* @param object $designInfo
* @return void
*/
public function makeDefaultDesignFile(object $designInfo): void
{
$buff = array();
$buff[] = '<?php if(!defined("__XE__")) exit();';
$buff[] = '$designInfo = new stdClass;';
if($designInfo->layout_srl)
{
$buff[] = sprintf('$designInfo->layout_srl = %d; ', intval($designInfo->layout_srl));
}
if($designInfo->mlayout_srl)
{
$buff[] = sprintf('$designInfo->mlayout_srl = %d;', intval($designInfo->mlayout_srl));
}
$buff[] = '$designInfo->module = new stdClass;';
foreach($designInfo->module as $moduleName => $skinInfo)
{
$buff[] = sprintf('$designInfo->module->{%s} = new stdClass;', var_export(strval($moduleName), true));
foreach($skinInfo as $target => $skinName)
{
$buff[] = sprintf('$designInfo->module->{%s}->{%s} = %s;', var_export(strval($moduleName), true), var_export(strval($target), true), var_export(strval($skinName), true));
}
}
$siteDesignFile = \RX_BASEDIR . 'files/site_design/design_0.php';
FileHandler::writeFile($siteDesignFile, implode(\PHP_EOL, $buff));
}
}

View file

@ -1,10 +0,0 @@
<?php
namespace Rhymix\Modules\Admin\Controllers;
use Rhymix\Framework\DB;
class Update extends Base
{
}