Add 'autolang' template filter for user lang handling

autoescape가 적용된 템플릿에서 사용자 정의 다국어가 제대로 출력되지 않는
문제를 수정하기 위해 'autolang' 필터를 추가함.
해당 변수 내용이 사용자 정의 다국어인 경우 escape하지 않고,
그 밖의 내용인 경우 escape하는 옵션임.
This commit is contained in:
Kijin Sung 2018-10-11 13:56:11 +09:00
parent 290ee0974d
commit b6b70bd8ad
3 changed files with 9 additions and 2 deletions

View file

@ -561,6 +561,10 @@ class TemplateHandler
{
$escape_option = 'noescape';
}
elseif(preg_match('/^lang\(.+\)$/', $m[1]))
{
$escape_option = 'noescape';
}
else
{
$escape_option = $this->config->autoescape !== null ? 'auto' : 'noescape';
@ -607,6 +611,7 @@ class TemplateHandler
{
case 'auto':
case 'autoescape':
case 'autolang':
case 'escape':
case 'noescape':
$escape_option = $filter;
@ -903,6 +908,8 @@ class TemplateHandler
return "{$str}";
case 'autoescape':
return "htmlspecialchars({$str}, ENT_QUOTES, 'UTF-8', false)";
case 'autolang':
return "(preg_match('/^\\$(?:user_)?lang->[a-zA-Z0-9\_]+$/', {$str}) ? ({$str}) : htmlspecialchars({$str}, ENT_QUOTES, 'UTF-8', false))";
case 'auto':
default:
return "(\$this->config->autoescape === 'on' ? htmlspecialchars({$str}, ENT_QUOTES, 'UTF-8', false) : ({$str}))";

View file

@ -27,7 +27,7 @@
<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|noescape}</a></p>
<p class="site"><a href="{$xe_default_url}">{$site_module_info->settings->title ?: $xe_default_url|autolang}</a></p>
<!--@end-->
<div class="account">
<ul>

View file

@ -27,7 +27,7 @@
<tbody>
<tr loop="$domain_list->data => $domain">
<td class="nowr">
{$domain->settings->title|noescape}
{$domain->settings->title|autolang}
<i cond="$domain->is_default_domain === 'Y'" class="x_icon-home" title="{$lang->cmd_is_default_domain}">{$lang->cmd_is_default_domain}</i>
</td>
<td class="nowr">{$domain->domain}</td>