From b6b70bd8adbf9121044895d414f213bf692dcb8e Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Thu, 11 Oct 2018 13:56:11 +0900 Subject: [PATCH] Add 'autolang' template filter for user lang handling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit autoescape가 적용된 템플릿에서 사용자 정의 다국어가 제대로 출력되지 않는 문제를 수정하기 위해 'autolang' 필터를 추가함. 해당 변수 내용이 사용자 정의 다국어인 경우 escape하지 않고, 그 밖의 내용인 경우 escape하는 옵션임. --- classes/template/TemplateHandler.class.php | 7 +++++++ modules/admin/tpl/_header.html | 2 +- modules/admin/tpl/config_domains.html | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/classes/template/TemplateHandler.class.php b/classes/template/TemplateHandler.class.php index 8e69b56ba..a76d3635f 100644 --- a/classes/template/TemplateHandler.class.php +++ b/classes/template/TemplateHandler.class.php @@ -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}))"; diff --git a/modules/admin/tpl/_header.html b/modules/admin/tpl/_header.html index 59304ca2c..553aa871c 100644 --- a/modules/admin/tpl/_header.html +++ b/modules/admin/tpl/_header.html @@ -27,7 +27,7 @@ -

{$site_module_info->settings->title ?: $xe_default_url|noescape}

+

{$site_module_info->settings->title ?: $xe_default_url|autolang}