mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-04 17:21:39 +09:00
Allow passing an array of keys/values to getUrl()
getUrl()을 호출할 때 파라미터 이름과 파라미터 값을 풀어서 각각의 파라미터로
넘길 필요 없이, 하나의 연관배열로 넘길 수 있도록 허용합니다.
$args = array(
'mid' => $mid,
'document_srl' => $document_srl,
);
getUrl($args);
이 문법을 사용하면 맨 앞에 빈 문자열을 넘겼을 때와 마찬가지로 기존의 URL
파라미터들은 모두 초기화됩니다. 즉 아래와 동일한 효과입니다.
getUrl('', 'mid', $mid, 'document_srl', $document_srl);
기존의 URL 파라미터들을 남겨놓으려면 기존 방식대로 풀어서 써야 합니다.
This commit is contained in:
parent
3430e21be4
commit
586f010f55
3 changed files with 53 additions and 34 deletions
|
|
@ -1646,39 +1646,58 @@ class Context
|
|||
$domain = null;
|
||||
}
|
||||
|
||||
// Get URL parameters. If the first argument is '', reset existing parameters.
|
||||
if (!self::$_get_vars || strval($args_list[0]) === '')
|
||||
// Get existing parameters from the current request.
|
||||
$get_vars = self::$_get_vars ? get_object_vars(self::$_get_vars) : array();
|
||||
|
||||
// If $args_list is not an array, reset it to an empty array.
|
||||
if (!is_array($args_list))
|
||||
{
|
||||
$args_list = array();
|
||||
}
|
||||
|
||||
// If the first argument is '', reset existing parameters.
|
||||
if (strval($args_list[0]) === '')
|
||||
{
|
||||
array_shift($args_list);
|
||||
$get_vars = array();
|
||||
if(is_array($args_list) && strval($args_list[0]) === '')
|
||||
{
|
||||
array_shift($args_list);
|
||||
}
|
||||
}
|
||||
elseif ($_SERVER['REQUEST_METHOD'] === 'GET')
|
||||
{
|
||||
$get_vars = get_object_vars(self::$_get_vars);
|
||||
}
|
||||
else
|
||||
// Otherwise, only keep existing parameters that are safe.
|
||||
elseif ($_SERVER['REQUEST_METHOD'] !== 'GET')
|
||||
{
|
||||
$preserve_vars = array('module', 'mid', 'act', 'page', 'document_srl', 'search_target', 'search_keyword');
|
||||
$preserve_keys = array_combine($preserve_vars, array_fill(0, count($preserve_vars), true));
|
||||
$get_vars = array_intersect_key(get_object_vars(self::$_get_vars), $preserve_keys);
|
||||
$get_vars = array_intersect_key($get_vars, $preserve_keys);
|
||||
}
|
||||
|
||||
// arrange args_list
|
||||
for($i = 0, $c = count($args_list); $i < $c; $i += 2)
|
||||
|
||||
// If $args_list contains one array, reset existing parameters and use keys & values from $args_list.
|
||||
if (is_array($args_list[0]) && count($args_list) == 1)
|
||||
{
|
||||
$key = $args_list[$i];
|
||||
$val = trim($args_list[$i + 1]);
|
||||
// If value is not set, remove the key
|
||||
if(!isset($val) || !strlen($val))
|
||||
foreach ($args_list[0] as $key => $val)
|
||||
{
|
||||
unset($get_vars[$key]);
|
||||
continue;
|
||||
$val = trim($val);
|
||||
if ($val !== '')
|
||||
{
|
||||
$get_vars[$key] = $val;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Otherwise, use alternating members of $args_list as keys and values, respectively.
|
||||
else
|
||||
{
|
||||
$num_args = count($args_list);
|
||||
for($i = 0; $i < $num_args; $i += 2)
|
||||
{
|
||||
$key = $args_list[$i];
|
||||
$val = trim($args_list[$i + 1]);
|
||||
if ($val === '')
|
||||
{
|
||||
unset($get_vars[$key]);
|
||||
}
|
||||
else
|
||||
{
|
||||
$get_vars[$key] = $val;
|
||||
}
|
||||
}
|
||||
// set new variables
|
||||
$get_vars[$key] = $val;
|
||||
}
|
||||
|
||||
// remove vid, rnd
|
||||
|
|
|
|||
|
|
@ -20,11 +20,11 @@
|
|||
<a class="default_header" href="javascript:void()"><i class="xi xi-cog"></i></a>
|
||||
</h1>
|
||||
<p class="site" cond="$this->user->isAdmin()">
|
||||
<a href="{getUrl('module', 'admin', 'act', $act, 'module_srl', $module_info->module_srl, 'mid', '')}">{lang('admin.view_in_manager_layout')}</a>
|
||||
<a href="{getUrl(['module' => 'admin', 'act' => $act, 'module_srl' => $module_info->module_srl])}">{lang('admin.view_in_manager_layout')}</a>
|
||||
</p>
|
||||
<!--@else-->
|
||||
<h1>
|
||||
<a class="default_header" href="{getUrl('','module','admin')}"><i class="xi xi-cog"></i></a>
|
||||
<a class="default_header" href="{getUrl(['module' => 'admin'])}"><i class="xi xi-cog"></i></a>
|
||||
<a class="mobile_menu_open" href="#gnbNav"><i class="xi xi-bars"></i></a>
|
||||
</h1>
|
||||
<p class="site"><a href="{$xe_default_url}">{$site_module_info->settings->title ?: $xe_default_url|autolang}</a></p>
|
||||
|
|
@ -32,15 +32,15 @@
|
|||
<div class="account">
|
||||
<ul>
|
||||
<!--@if($module_manager)-->
|
||||
<li><a href="{getUrl('', 'mid', $mid, 'act', 'dispMemberInfo')}">{$logged_info->nick_name}</a></li>
|
||||
<li><a href="{getUrl('', 'mid', $mid, 'act', 'dispMemberLogout')}">{$lang->cmd_logout}</a></li>
|
||||
<li><a href="{getUrl(['mid' => $mid, 'act' => 'dispMemberInfo'])}">{$logged_info->nick_name}</a></li>
|
||||
<li><a href="{getUrl(['mid' => $mid, 'act' => 'dispMemberLogout'])}">{$lang->cmd_logout}</a></li>
|
||||
<!--@else-->
|
||||
<li><a href="{getUrl('', 'module', 'admin', 'act', 'dispMemberAdminInfo', 'member_srl', $logged_info->member_srl)}">{$logged_info->nick_name}</a></li>
|
||||
<li><a href="{getUrl('', 'module', 'admin', 'act', 'procAdminLogout')}">{$lang->cmd_logout}</a></li>
|
||||
<li><a href="{getUrl(['module' => 'admin', 'act' => 'dispMemberAdminInfo', 'member_srl' => $logged_info->member_srl])}">{$logged_info->nick_name}</a></li>
|
||||
<li><a href="{getUrl(['module' => 'admin', 'act' => 'procAdminLogout'])}">{$lang->cmd_logout}</a></li>
|
||||
<!--@end-->
|
||||
<li><a href="#lang" class="lang" data-toggle>{$lang_supported[$lang_type]}</a>
|
||||
<ul id="lang" class="x_dropdown-menu">
|
||||
<li loop="$lang_supported=>$key,$val" class="x_active"|cond="$key==$lang_type"><a href="{getUrl('l',$key)}" data-langcode="{$key}" onclick="doChangeLangType('{$key}'); return false;">{$val}</a></li>
|
||||
<li loop="$lang_supported=>$key,$val" class="x_active"|cond="$key==$lang_type"><a href="#lang" data-langcode="{$key}" onclick="doChangeLangType('{$key}'); return false;">{$val}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
@ -64,18 +64,18 @@
|
|||
<a href="#favorite" data-href="favorite" title="{$lang->favorite}"><span class="tx">{$lang->favorite}</span></a>
|
||||
<ul id="favorite" style="display:block"|cond="$_COOKIE['__xe_admin_gnb_tx_favorite'] == 'open'">
|
||||
<li loop="$favorite_list => $favorite">
|
||||
<a cond="$favorite->title" href="{getUrl('', 'module', 'admin', 'act', $favorite->admin_index_act)}" title="{$favorite->title}">{$favorite->title}</a>
|
||||
<a cond="$favorite->title" href="{getUrl(['module' => 'admin', 'act' => $favorite->admin_index_act])}" title="{$favorite->title}">{$favorite->title}</a>
|
||||
<a cond="!$favorite->title">{$lang->msg_not_founded}</a>
|
||||
<form class="remove" action="./" method="post">
|
||||
<input type="hidden" name="module" value="admin" />
|
||||
<input type="hidden" name="act" value="procAdminToggleFavorite" />
|
||||
<input type="hidden" name="site_srl" value="0" />
|
||||
<input type="hidden" name="module_name" value="{$favorite->module}" />
|
||||
<input type="hidden" name="success_return_url" value="{getUrl('', 'module', 'admin')}" />
|
||||
<input type="hidden" name="success_return_url" value="{getUrl(['module' => 'admin'])}" />
|
||||
<button type="submit" class="x_close" title="{$lang->cmd_delete}">×</button>
|
||||
</form>
|
||||
</li>
|
||||
<li cond="!is_array($favorite_list) || count($favorite_list) < 1"><a href="{getUrl('', 'module', 'admin', 'act', 'dispModuleAdminContent')}">{$lang->no_data}</a></li>
|
||||
<li cond="!is_array($favorite_list) || count($favorite_list) < 1"><a href="{getUrl(['module' => 'admin', 'act' => 'dispModuleAdminContent'])}">{$lang->no_data}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<!--@end-->
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
|
||||
<div class="message error" cond="$db_info->use_sitelock == 'Y'">
|
||||
<h2>{$lang->sitelock_in_use}</h2>
|
||||
<p>{$lang->about_sitelock_in_use} <a href="{getUrl('', 'module', 'admin', 'act', 'dispAdminConfigSitelock')}">{$lang->cmd_configure}</a></p>
|
||||
<p>{$lang->about_sitelock_in_use} <a href="{getUrl(['module' => 'admin', 'act' => 'dispAdminConfigSitelock'])}">{$lang->cmd_configure}</a></p>
|
||||
</div>
|
||||
|
||||
<div class="message update" cond="$addTables || $needUpdate">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue