From 23a9808c11f7fe2d7ee7b7f5c4f66aa769050f43 Mon Sep 17 00:00:00 2001 From: Butschster Date: Tue, 28 Oct 2014 08:51:21 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=20=D0=BD=D0=B0=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=B9=D0=BA=D0=B8=20=D0=B3=D0=B8=D0=B1=D1=80=D0=B8=D0=B4=D0=BD?= =?UTF-8?q?=D0=BE=D0=B3=D0=BE=20=D0=BF=D0=BE=D0=BB=D1=8F=20"HTML"=20=D0=B4?= =?UTF-8?q?=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=BE=D0=BF?= =?UTF-8?q?=D1=86=D0=B8=D1=8F=20"=D0=A3=D0=B4=D0=B0=D0=BB=D1=8F=D1=82?= =?UTF-8?q?=D1=8C=20=D0=BF=D1=83=D1=81=D1=82=D1=8B=D0=B5=20=D1=82=D0=B5?= =?UTF-8?q?=D0=B3=D0=B8",=20=D0=BF=D1=80=D0=B8=20=D0=B2=D0=BA=D0=BB=D1=8E?= =?UTF-8?q?=D1=87=D0=B5=D0=BD=D0=B8=D0=B8=20=D0=BA=D0=BE=D1=82=D0=BE=D1=80?= =?UTF-8?q?=D0=BE=D0=B9=20=D0=B2=20=D0=BF=D0=BE=D0=BB=D0=B5=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=20=D1=81=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B8=20=D1=83=D0=B4=D0=B0=D0=BB=D1=8F=D1=8E=D1=82=D1=81=D1=8F?= =?UTF-8?q?=20=D1=82=D0=B5=D0=B3=D0=B8:=20`

`,=20`

=20

`,=20`

`,=20`

`,=20`

=20

`,=20`

?= =?UTF-8?q? 

`.=20issue=20#298?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cms/modules/kodicms/classes/kses.php | 21 +++++++++++++++++++ .../hybrid/field/primitive/html.php | 15 ++++++++++++- cms/plugins/hybrid/i18n/ru.php | 1 + .../hybrid/field/edit/primitive_html.php | 8 +++++++ 4 files changed, 44 insertions(+), 1 deletion(-) diff --git a/cms/modules/kodicms/classes/kses.php b/cms/modules/kodicms/classes/kses.php index 168163f4f..087719468 100644 --- a/cms/modules/kodicms/classes/kses.php +++ b/cms/modules/kodicms/classes/kses.php @@ -156,6 +156,26 @@ public static function parse_tags($tags) return $allowed_html; } + + /** + * + * @param string $string + * @param array $tags + * @return string + */ + public static function remove_empty_tags($string, array $tags = array('p', 'div')) + { + $tags = array_unique($tags); + + foreach ($tags as $tag) + { + $string = preg_replace_callback("/<{$tag}[^>]*>[\s| |
]*<\/{$tag}>/iU", function($match) { + return ''; + }, $string); + } + + return $string; + } /**#@+ * @access private @@ -1251,6 +1271,7 @@ private function decodeEntities($string) $string = preg_replace_callback('/&#[Xx]([0-9A-Fa-f]+);/', function($match) { return chr(hexdec($match[1])); }, $string); + return $string; } diff --git a/cms/plugins/hybrid/classes/datasource/hybrid/field/primitive/html.php b/cms/plugins/hybrid/classes/datasource/hybrid/field/primitive/html.php index 2c4f12a13..6cf808511 100644 --- a/cms/plugins/hybrid/classes/datasource/hybrid/field/primitive/html.php +++ b/cms/plugins/hybrid/classes/datasource/hybrid/field/primitive/html.php @@ -7,18 +7,31 @@ class DataSource_Hybrid_Field_Primitive_HTML extends DataSource_Hybrid_Field_Pri protected $_props = array( 'default' => NULL, 'filter_html' => FALSE, + 'remove_empty_tags' => FALSE, 'allowed_tags' => '

    1. ' ); public function booleans() { - return array('filter_html'); + return array('filter_html', 'remove_empty_tags'); } public function set(array $data) { return parent::set($data); } + + public function onSetValue($value, DataSource_Hybrid_Document $doc) + { + $value = parent::onSetValue($value, $doc); + + if($this->remove_empty_tags === TRUE) + { + return Kses::remove_empty_tags($value); + } + + return $value; + } public function onUpdateDocument(DataSource_Hybrid_Document $old = NULL, DataSource_Hybrid_Document $new) { diff --git a/cms/plugins/hybrid/i18n/ru.php b/cms/plugins/hybrid/i18n/ru.php index 6dad7e5d7..d140afcfc 100644 --- a/cms/plugins/hybrid/i18n/ru.php +++ b/cms/plugins/hybrid/i18n/ru.php @@ -71,6 +71,7 @@ 'Max file size: :size' => 'Максимальный размер файла: :size', 'Allow HTML tags' => 'Разрешить HTML теги', 'Filter HTML tags' => 'Фильтровать HTML теги', + 'Remove empty tags' => 'Удалять пустые теги', 'Create hybrid section' => 'Создать гибридный раздел', 'Slug separator' => 'Разделитель', 'Slug from header' => 'Брать значение из Заголовка', diff --git a/cms/plugins/hybrid/views/datasource/hybrid/field/edit/primitive_html.php b/cms/plugins/hybrid/views/datasource/hybrid/field/edit/primitive_html.php index dda82ba7d..9c4b87c90 100644 --- a/cms/plugins/hybrid/views/datasource/hybrid/field/edit/primitive_html.php +++ b/cms/plugins/hybrid/views/datasource/hybrid/field/edit/primitive_html.php @@ -12,6 +12,14 @@
      +
      + +
      +