mirror of
https://github.com/ezyang/htmlpurifier.git
synced 2024-12-23 08:51:53 +00:00
[1.7.0] Implement u, s, and strike tag transforms
- Extend Simple so that it can accept some light CSS - Remove Center transform in favor of Simple git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@1081 48356398-32a2-884e-a903-53898d9a118a
This commit is contained in:
parent
71326abec1
commit
2945f6a930
1
NEWS
1
NEWS
@ -23,6 +23,7 @@ NEWS ( CHANGELOG and HISTORY ) HTMLPurifier
|
|||||||
. Added convenience functions for HTMLModule constructors
|
. Added convenience functions for HTMLModule constructors
|
||||||
. AttrTypes now has accessor functions that should be used instead
|
. AttrTypes now has accessor functions that should be used instead
|
||||||
of directly manipulating info
|
of directly manipulating info
|
||||||
|
. TagTransform_Center deprecated in favor of generic TagTransform_Simple
|
||||||
|
|
||||||
1.6.1, released 2007-05-05
|
1.6.1, released 2007-05-05
|
||||||
! Support for more deprecated attributes via transformations:
|
! Support for more deprecated attributes via transformations:
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
require_once 'HTMLPurifier/HTMLModule/Tidy.php';
|
require_once 'HTMLPurifier/HTMLModule/Tidy.php';
|
||||||
|
|
||||||
require_once 'HTMLPurifier/TagTransform/Simple.php';
|
require_once 'HTMLPurifier/TagTransform/Simple.php';
|
||||||
require_once 'HTMLPurifier/TagTransform/Center.php';
|
|
||||||
require_once 'HTMLPurifier/TagTransform/Font.php';
|
require_once 'HTMLPurifier/TagTransform/Font.php';
|
||||||
|
|
||||||
require_once 'HTMLPurifier/AttrTransform/BgColor.php';
|
require_once 'HTMLPurifier/AttrTransform/BgColor.php';
|
||||||
@ -27,7 +26,10 @@ class HTMLPurifier_HTMLModule_Tidy_XHTMLAndHTML4 extends
|
|||||||
$r['font'] = new HTMLPurifier_TagTransform_Font();
|
$r['font'] = new HTMLPurifier_TagTransform_Font();
|
||||||
$r['menu'] = new HTMLPurifier_TagTransform_Simple('ul');
|
$r['menu'] = new HTMLPurifier_TagTransform_Simple('ul');
|
||||||
$r['dir'] = new HTMLPurifier_TagTransform_Simple('ul');
|
$r['dir'] = new HTMLPurifier_TagTransform_Simple('ul');
|
||||||
$r['center'] = new HTMLPurifier_TagTransform_Center();
|
$r['center'] = new HTMLPurifier_TagTransform_Simple('div', 'text-align:center;');
|
||||||
|
$r['u'] = new HTMLPurifier_TagTransform_Simple('span', 'text-decoration:underline;');
|
||||||
|
$r['s'] = new HTMLPurifier_TagTransform_Simple('span', 'text-decoration:line-through;');
|
||||||
|
$r['strike'] = new HTMLPurifier_TagTransform_Simple('span', 'text-decoration:line-through;');
|
||||||
|
|
||||||
// == deprecated attribute transforms =============================
|
// == deprecated attribute transforms =============================
|
||||||
|
|
||||||
|
@ -24,6 +24,18 @@ class HTMLPurifier_TagTransform
|
|||||||
trigger_error('Call to abstract function', E_USER_ERROR);
|
trigger_error('Call to abstract function', E_USER_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prepends CSS properties to the style attribute, creating the
|
||||||
|
* attribute if it doesn't exist.
|
||||||
|
* @warning Copied over from AttrTransform, be sure to keep in sync
|
||||||
|
* @param $attr Attribute array to process (passed by reference)
|
||||||
|
* @param $css CSS to prepend
|
||||||
|
*/
|
||||||
|
function prependCSS(&$attr, $css) {
|
||||||
|
$attr['style'] = isset($attr['style']) ? $attr['style'] : '';
|
||||||
|
$attr['style'] = $css . $attr['style'];
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
@ -1,34 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
require_once 'HTMLPurifier/TagTransform.php';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Transforms CENTER tags into proper version (DIV with text-align CSS)
|
|
||||||
*
|
|
||||||
* Takes a CENTER tag, parses the align attribute, and then if it's valid
|
|
||||||
* assigns it to the CSS property text-align.
|
|
||||||
*/
|
|
||||||
class HTMLPurifier_TagTransform_Center extends HTMLPurifier_TagTransform
|
|
||||||
{
|
|
||||||
var $transform_to = 'div';
|
|
||||||
|
|
||||||
function transform($tag, $config, &$context) {
|
|
||||||
if ($tag->type == 'end') {
|
|
||||||
$new_tag = new HTMLPurifier_Token_End($this->transform_to);
|
|
||||||
return $new_tag;
|
|
||||||
}
|
|
||||||
$attr = $tag->attr;
|
|
||||||
$prepend_css = 'text-align:center;';
|
|
||||||
if (isset($attr['style'])) {
|
|
||||||
$attr['style'] = $prepend_css . $attr['style'];
|
|
||||||
} else {
|
|
||||||
$attr['style'] = $prepend_css;
|
|
||||||
}
|
|
||||||
$new_tag = $tag->copy();
|
|
||||||
$new_tag->name = $this->transform_to;
|
|
||||||
$new_tag->attr = $attr;
|
|
||||||
return $new_tag;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
|
@ -3,21 +3,32 @@
|
|||||||
require_once 'HTMLPurifier/TagTransform.php';
|
require_once 'HTMLPurifier/TagTransform.php';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Simple transformation, just change tag name to something else.
|
* Simple transformation, just change tag name to something else,
|
||||||
|
* and possibly add some styling. This will cover most of the deprecated
|
||||||
|
* tag cases.
|
||||||
*/
|
*/
|
||||||
class HTMLPurifier_TagTransform_Simple extends HTMLPurifier_TagTransform
|
class HTMLPurifier_TagTransform_Simple extends HTMLPurifier_TagTransform
|
||||||
{
|
{
|
||||||
|
|
||||||
|
var $style;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param $transform_to Tag name to transform to.
|
* @param $transform_to Tag name to transform to.
|
||||||
|
* @param $style CSS style to add to the tag
|
||||||
*/
|
*/
|
||||||
function HTMLPurifier_TagTransform_Simple($transform_to) {
|
function HTMLPurifier_TagTransform_Simple($transform_to, $style = null) {
|
||||||
$this->transform_to = $transform_to;
|
$this->transform_to = $transform_to;
|
||||||
|
$this->style = $style;
|
||||||
}
|
}
|
||||||
|
|
||||||
function transform($tag, $config, &$context) {
|
function transform($tag, $config, &$context) {
|
||||||
$new_tag = $tag->copy();
|
$new_tag = $tag->copy();
|
||||||
$new_tag->name = $this->transform_to;
|
$new_tag->name = $this->transform_to;
|
||||||
|
if (!is_null($this->style) &&
|
||||||
|
($new_tag->type == 'start' || $new_tag->type == 'empty')
|
||||||
|
) {
|
||||||
|
$this->prependCSS($new_tag->attr, $this->style);
|
||||||
|
}
|
||||||
return $new_tag;
|
return $new_tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
require_once 'HTMLPurifier/TagTransform.php';
|
require_once 'HTMLPurifier/TagTransform.php';
|
||||||
|
|
||||||
// needs to be seperated into files
|
// needs to be seperated into files
|
||||||
require_once 'HTMLPurifier/TagTransform/Center.php';
|
|
||||||
require_once 'HTMLPurifier/TagTransform/Font.php';
|
require_once 'HTMLPurifier/TagTransform/Font.php';
|
||||||
require_once 'HTMLPurifier/TagTransform/Simple.php';
|
require_once 'HTMLPurifier/TagTransform/Simple.php';
|
||||||
|
|
||||||
@ -104,9 +103,9 @@ class HTMLPurifier_TagTransformTest extends UnitTestCase
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function testCenter() {
|
function testSimpleWithCSS() {
|
||||||
|
|
||||||
$transformer = new HTMLPurifier_TagTransform_Center();
|
$transformer = new HTMLPurifier_TagTransform_Simple('div', 'text-align:center;');
|
||||||
|
|
||||||
$this->assertTransformation(
|
$this->assertTransformation(
|
||||||
$transformer,
|
$transformer,
|
||||||
|
@ -29,7 +29,7 @@ class HTMLPurifier_Test extends UnitTestCase
|
|||||||
|
|
||||||
$this->assertPurification(
|
$this->assertPurification(
|
||||||
'<u>Illegal underline</u>',
|
'<u>Illegal underline</u>',
|
||||||
'Illegal underline'
|
'<span style="text-decoration:underline;">Illegal underline</span>'
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertPurification(
|
$this->assertPurification(
|
||||||
|
Loading…
Reference in New Issue
Block a user