From 1f9a6ba30e4b718c565257a470a9c08bcb9608ab Mon Sep 17 00:00:00 2001 From: "Edward Z. Yang" Date: Sun, 9 Sep 2007 01:46:59 +0000 Subject: [PATCH] [2.1.3] Activate strict blockquote functionality for HTML 4.01 Strict. git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@1417 48356398-32a2-884e-a903-53898d9a118a --- NEWS | 1 + .../HTMLModule/Tidy/XHTMLAndHTML4.php | 14 ++++++++++ .../HTMLModule/Tidy/XHTMLStrict.php | 26 ------------------- library/HTMLPurifier/HTMLModuleManager.php | 5 ++-- .../HTMLPurifier/Strategy/FixNestingTest.php | 5 ++++ 5 files changed, 22 insertions(+), 29 deletions(-) delete mode 100644 library/HTMLPurifier/HTMLModule/Tidy/XHTMLStrict.php diff --git a/NEWS b/NEWS index c44b2983..d864b4e3 100644 --- a/NEWS +++ b/NEWS @@ -14,6 +14,7 @@ NEWS ( CHANGELOG and HISTORY ) HTMLPurifier on some systems. - Injector algorithm further refined: off-by-one error regarding skip counts for dormant injectors fixed +- Corrective blockquote definition now enabled for HTML 4.01 Strict . %Core.AcceptFullDocuments renamed to %Core.ConvertDocumentToFragment to better communicate its purpose diff --git a/library/HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php b/library/HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php index 386cf365..dcf306a0 100644 --- a/library/HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php +++ b/library/HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php @@ -13,6 +13,8 @@ require_once 'HTMLPurifier/AttrTransform/Length.php'; require_once 'HTMLPurifier/AttrTransform/ImgSpace.php'; require_once 'HTMLPurifier/AttrTransform/EnumToCSS.php'; +require_once 'HTMLPurifier/ChildDef/StrictBlockquote.php'; + class HTMLPurifier_HTMLModule_Tidy_XHTMLAndHTML4 extends HTMLPurifier_HTMLModule_Tidy { @@ -188,5 +190,17 @@ class HTMLPurifier_HTMLModule_Tidy_Strict extends { var $name = 'Tidy_Strict'; var $defaultLevel = 'light'; + + function makeFixes() { + $r = parent::makeFixes(); + $r['blockquote#content_model_type'] = 'strictblockquote'; + return $r; + } + + var $defines_child_def = true; + function getChildDef($def) { + if ($def->content_model_type != 'strictblockquote') return parent::getChildDef($def); + return new HTMLPurifier_ChildDef_StrictBlockquote($def->content_model); + } } diff --git a/library/HTMLPurifier/HTMLModule/Tidy/XHTMLStrict.php b/library/HTMLPurifier/HTMLModule/Tidy/XHTMLStrict.php deleted file mode 100644 index b701491e..00000000 --- a/library/HTMLPurifier/HTMLModule/Tidy/XHTMLStrict.php +++ /dev/null @@ -1,26 +0,0 @@ -content_model_type != 'strictblockquote') return false; - return new HTMLPurifier_ChildDef_StrictBlockquote($def->content_model); - } - -} - diff --git a/library/HTMLPurifier/HTMLModuleManager.php b/library/HTMLPurifier/HTMLModuleManager.php index 74a233ff..3fc86160 100644 --- a/library/HTMLPurifier/HTMLModuleManager.php +++ b/library/HTMLPurifier/HTMLModuleManager.php @@ -35,7 +35,6 @@ require_once 'HTMLPurifier/HTMLModule/Object.php'; require_once 'HTMLPurifier/HTMLModule/Tidy.php'; require_once 'HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php'; require_once 'HTMLPurifier/HTMLModule/Tidy/XHTML.php'; -require_once 'HTMLPurifier/HTMLModule/Tidy/XHTMLStrict.php'; require_once 'HTMLPurifier/HTMLModule/Tidy/Proprietary.php'; HTMLPurifier_ConfigSchema::define( @@ -209,7 +208,7 @@ class HTMLPurifier_HTMLModuleManager $this->doctypes->register( 'XHTML 1.0 Strict', true, array_merge($common, $xml, $non_xml), - array('Tidy_Strict', 'Tidy_XHTML', 'Tidy_XHTMLStrict', 'Tidy_Proprietary'), + array('Tidy_Strict', 'Tidy_XHTML', 'Tidy_Strict', 'Tidy_Proprietary'), array(), '-//W3C//DTD XHTML 1.0 Strict//EN', 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd' @@ -218,7 +217,7 @@ class HTMLPurifier_HTMLModuleManager $this->doctypes->register( 'XHTML 1.1', true, array_merge($common, $xml, array('Ruby')), - array('Tidy_Strict', 'Tidy_XHTML', 'Tidy_Proprietary', 'Tidy_XHTMLStrict'), // Tidy_XHTML1_1 + array('Tidy_Strict', 'Tidy_XHTML', 'Tidy_Proprietary', 'Tidy_Strict'), // Tidy_XHTML1_1 array(), '-//W3C//DTD XHTML 1.1//EN', 'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd' diff --git a/tests/HTMLPurifier/Strategy/FixNestingTest.php b/tests/HTMLPurifier/Strategy/FixNestingTest.php index e67a3e44..453214d3 100644 --- a/tests/HTMLPurifier/Strategy/FixNestingTest.php +++ b/tests/HTMLPurifier/Strategy/FixNestingTest.php @@ -129,5 +129,10 @@ class HTMLPurifier_Strategy_FixNestingTest extends HTMLPurifier_StrategyHarness $this->assertResult('
', ''); } + function testStrictBlockquoteInHTML401() { + $this->config->set('HTML', 'Doctype', 'HTML 4.01 Strict'); + $this->assertResult('
text
', '

text

'); + } + }