mirror of
https://github.com/Oreolek/ifhub.club.git
synced 2024-07-01 05:55:02 +03:00
Использование rewrite rules в роутере.
This commit is contained in:
parent
10231ffac3
commit
00a2ba53a1
|
@ -24,6 +24,6 @@ return array(
|
|||
'user' => 'root',
|
||||
'pass' => '',
|
||||
'type' => 'mysql',
|
||||
'dbname' => 'ls_core',
|
||||
'dbname' => 'social',
|
||||
);
|
||||
?>
|
|
@ -97,6 +97,13 @@ class Router extends Object {
|
|||
protected function LoadConfig() {
|
||||
//Конфиг роутинга, содержит соответствия URL и классов экшенов
|
||||
$this->aConfigRoute = Config::Get('router');
|
||||
// Переписываем конфиг согласно правилу rewrite
|
||||
foreach ((array)$this->aConfigRoute['rewrite'] as $sPage=>$sRewrite) {
|
||||
if(isset($this->aConfigRoute['page'][$sPage])) {
|
||||
$this->aConfigRoute['page'][$sRewrite] = $this->aConfigRoute['page'][$sPage];
|
||||
unset($this->aConfigRoute['page'][$sPage]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -120,15 +127,15 @@ class Router extends Object {
|
|||
/**
|
||||
* Сначала запускаем инициализирующий экшен
|
||||
*/
|
||||
require_once(DIR_SERVER_ROOT.'/classes/actions/Init.class.php');
|
||||
require_once(Config::Get('path.root.server').'/classes/actions/Init.class.php');
|
||||
$oActionInit=new Init($this->oEngine);
|
||||
$oActionInit->InitAction();
|
||||
|
||||
$sActionClass=$this->DefineActionClass();
|
||||
require_once(DIR_SERVER_ROOT.'/classes/actions/'.$sActionClass.'.class.php');
|
||||
require_once(Config::Get('path.root.server').'/classes/actions/'.$sActionClass.'.class.php');
|
||||
$sPrefixCustom='';
|
||||
if (file_exists(DIR_SERVER_ROOT."/classes/actions/".$sActionClass.'.class.custom.php')) {
|
||||
require_once(DIR_SERVER_ROOT."/classes/actions/".$sActionClass.'.class.custom.php');
|
||||
if (file_exists(Config::Get('path.root.server')."/classes/actions/".$sActionClass.'.class.custom.php')) {
|
||||
require_once(Config::Get('path.root.server')."/classes/actions/".$sActionClass.'.class.custom.php');
|
||||
$sPrefixCustom='_custom';
|
||||
}
|
||||
$sClassName=$sActionClass.$sPrefixCustom;
|
||||
|
@ -296,22 +303,33 @@ class Router extends Object {
|
|||
}
|
||||
|
||||
/**
|
||||
* Функция, возвращающая ссылку на Action по переданому названию страницы
|
||||
* Функция, возвращающая правильную адресацию по переданому названию страницы
|
||||
*
|
||||
* @param string $action
|
||||
* @return string
|
||||
*/
|
||||
static public function GetPath($action) {
|
||||
$aRoutes = array_flip(self::getInstance()->aConfigRoute['page']);
|
||||
// Если пользователь запросил action по умолчанию
|
||||
if($action == 'default') {
|
||||
$action = self::getInstance()->aConfigRoute['config']['action_default'];
|
||||
}
|
||||
// Пытаемся найте соответствующий роут
|
||||
if(!$sPage = @$aRoutes['Action'.ucfirst($action)]) {
|
||||
return false;
|
||||
}
|
||||
return DIR_WEB_ROOT."/$sPage/";
|
||||
$sPage = ($action == 'default')
|
||||
? self::getInstance()->aConfigRoute['config']['action_default']
|
||||
: $action;
|
||||
|
||||
// Смотрим, есть ли правило rewrite
|
||||
$sPage = self::getInstance()->Rewrite($sPage);
|
||||
return Config::Get('path.root.web')."/$sPage/";
|
||||
}
|
||||
|
||||
/**
|
||||
* Try to find rewrite rule for given page.
|
||||
* On success return rigth page, else return given param.
|
||||
*
|
||||
* @param string $sPage
|
||||
* @return string
|
||||
*/
|
||||
protected function Rewrite($sPage) {
|
||||
return (isset($this->aConfigRoute['rewrite'][$sPage]))
|
||||
? $this->aConfigRoute['rewrite'][$sPage]
|
||||
: $sPage;
|
||||
}
|
||||
}
|
||||
?>
|
|
@ -28,7 +28,7 @@ function smarty_function_router($aParams,&$oSmarty) {
|
|||
$oSmarty->trigger_error("Router: missing 'page' parametr");
|
||||
return ;
|
||||
}
|
||||
require_once(DIR_SERVER_ROOT.'/classes/engine/Router.class.php');
|
||||
require_once(Config::Get('path.root.engine').'/classes/Router.class.php');
|
||||
|
||||
if(!$sPath = Router::GetPath($aParams['page'])) {
|
||||
$oSmarty->trigger_error("Router: unknown 'page' given");
|
||||
|
|
|
@ -23,31 +23,31 @@
|
|||
<h1><a href="{$DIR_WEB_ROOT}"><strong>Live</strong>Street</a></h1>
|
||||
|
||||
<ul class="nav-main">
|
||||
<li {if $sMenuHeadItemSelect=='blog'}class="active"{/if}><a href="{$DIR_WEB_ROOT}/{$ROUTE_PAGE_BLOG}/">{$aLang.blogs}</a></li>
|
||||
<li {if $sMenuHeadItemSelect=='people'}class="active"{/if}><a href="{$DIR_WEB_ROOT}/{$ROUTE_PAGE_PEOPLE}/">{$aLang.people}</a></li>
|
||||
<li {if $sAction=='page' and $sEvent=='about'}class="active"{/if}><a href="{$DIR_WEB_ROOT}/{$ROUTE_PAGE_PAGE}/about/">{$aLang.page_about}</a></li>
|
||||
<li {if $sMenuHeadItemSelect=='blog'}class="active"{/if}><a href="{router page='blog'}">{$aLang.blogs}</a></li>
|
||||
<li {if $sMenuHeadItemSelect=='people'}class="active"{/if}><a href="{router page='people'}">{$aLang.people}</a></li>
|
||||
<li {if $sAction=='page' and $sEvent=='about'}class="active"{/if}><a href="{router page='page'}about/">{$aLang.page_about}</a></li>
|
||||
</ul>
|
||||
|
||||
{if $oUserCurrent}
|
||||
<div class="profile">
|
||||
<a href="{$oUserCurrent->getUserWebPath()}" class="avatar"><img src="{$oUserCurrent->getProfileAvatarPath(48)}" alt="{$oUserCurrent->getLogin()}" /></a>
|
||||
<ul>
|
||||
<li><a href="{$oUserCurrent->getUserWebPath()}" class="author">{$oUserCurrent->getLogin()}</a> (<a href="{$DIR_WEB_ROOT}/{$ROUTE_PAGE_LOGIN}/exit/">{$aLang.exit}</a>)</li>
|
||||
<li><a href="{$oUserCurrent->getUserWebPath()}" class="author">{$oUserCurrent->getLogin()}</a> (<a href="{router page='login'}exit/">{$aLang.exit}</a>)</li>
|
||||
<li>
|
||||
{if $iUserCurrentCountTalkNew}
|
||||
<a href="{$DIR_WEB_ROOT}/{$ROUTE_PAGE_TALK}/" class="message" title="{$aLang.user_privat_messages_new}">{$iUserCurrentCountTalkNew}</a>
|
||||
<a href="{router page='talk'}" class="message" title="{$aLang.user_privat_messages_new}">{$iUserCurrentCountTalkNew}</a>
|
||||
{else}
|
||||
<a href="{$DIR_WEB_ROOT}/{$ROUTE_PAGE_TALK}/" class="message-empty"> </a>
|
||||
<a href="{router page='talk'}" class="message-empty"> </a>
|
||||
{/if}
|
||||
{$aLang.user_settings} <a href="{$DIR_WEB_ROOT}/{$ROUTE_PAGE_SETTINGS}/profile/" class="author">{$aLang.user_settings_profile}</a> | <a href="{$DIR_WEB_ROOT}/{$ROUTE_PAGE_SETTINGS}/tuning/" class="author">{$aLang.user_settings_tuning}</a>
|
||||
{$aLang.user_settings} <a href="{router page='settings'}profile/" class="author">{$aLang.user_settings_profile}</a> | <a href="{router page='settings'}tuning/" class="author">{$aLang.user_settings_tuning}</a>
|
||||
</li>
|
||||
<li>{$aLang.user_rating} <strong>{$oUserCurrent->getRating()}</strong></li>
|
||||
</ul>
|
||||
</div>
|
||||
{else}
|
||||
<div class="profile guest">
|
||||
<a href="{$DIR_WEB_ROOT}/{$ROUTE_PAGE_LOGIN}/" onclick="return showLoginForm();">{$aLang.user_login_submit}</a> {$aLang.or}
|
||||
<a href="{$DIR_WEB_ROOT}/{$ROUTE_PAGE_REGISTRATION}/" class="reg">{$aLang.registration_submit}</a>
|
||||
<a href="{router page='login'}" onclick="return showLoginForm();">{$aLang.user_login_submit}</a> {$aLang.or}
|
||||
<a href="{router page='registration'}" class="reg">{$aLang.registration_submit}</a>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
|
|
Loading…
Reference in a new issue