mirror of
https://github.com/ezyang/htmlpurifier.git
synced 2024-11-09 15:28:40 +00:00
[1.6.1] Implement AttrTransform for type in ul, ol and li
git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@1022 48356398-32a2-884e-a903-53898d9a118a
This commit is contained in:
parent
893e962890
commit
b1822bb04f
1
NEWS
1
NEWS
@ -23,6 +23,7 @@ NEWS ( CHANGELOG and HISTORY ) HTMLPurifier
|
|||||||
+ nowrap in td
|
+ nowrap in td
|
||||||
+ clear in br
|
+ clear in br
|
||||||
+ align in caption, table, img and hr
|
+ align in caption, table, img and hr
|
||||||
|
+ type in ul, ol and li
|
||||||
! target attribute in a tag supported, use %Attr.AllowedFrameTargets
|
! target attribute in a tag supported, use %Attr.AllowedFrameTargets
|
||||||
to enable
|
to enable
|
||||||
! CSS property white-space now allows nowrap (supported in all modern
|
! CSS property white-space now allows nowrap (supported in all modern
|
||||||
|
@ -262,7 +262,7 @@ Mozilla on inside and needs -moz-outline, no IE support.</td></tr>
|
|||||||
</tbody>
|
</tbody>
|
||||||
|
|
||||||
<tbody>
|
<tbody>
|
||||||
<tr><th colspan="3">Transform, target milestone 1.6.1/1.7</th></tr>
|
<tr><th colspan="3">Transform</th></tr>
|
||||||
<tr class="impl-yes"><td rowspan="5">align</td><td>CAPTION</td><td>'caption-side' for top/bottom, 'text-align' for left/right</td></tr>
|
<tr class="impl-yes"><td rowspan="5">align</td><td>CAPTION</td><td>'caption-side' for top/bottom, 'text-align' for left/right</td></tr>
|
||||||
<tr class="impl-yes"><td>IMG</td><td rowspan="3">See specimens/html-align-to-css.html</td></tr>
|
<tr class="impl-yes"><td>IMG</td><td rowspan="3">See specimens/html-align-to-css.html</td></tr>
|
||||||
<tr class="impl-yes"><td>TABLE</td></tr>
|
<tr class="impl-yes"><td>TABLE</td></tr>
|
||||||
@ -286,9 +286,9 @@ Mozilla on inside and needs -moz-outline, no IE support.</td></tr>
|
|||||||
<tr class="impl-yes"><td>size</td><td>HR</td><td>Near-equiv 'height', needs px suffix if original was pixels</td></tr>
|
<tr class="impl-yes"><td>size</td><td>HR</td><td>Near-equiv 'height', needs px suffix if original was pixels</td></tr>
|
||||||
<tr class="required impl-yes"><td>src</td><td>IMG</td><td>Required, insert blank or default img if not set</td></tr>
|
<tr class="required impl-yes"><td>src</td><td>IMG</td><td>Required, insert blank or default img if not set</td></tr>
|
||||||
<tr class="impl-yes"><td>start</td><td>OL</td><td>Poorly supported 'counter-reset', allowed in loose, dropped in strict</td></tr>
|
<tr class="impl-yes"><td>start</td><td>OL</td><td>Poorly supported 'counter-reset', allowed in loose, dropped in strict</td></tr>
|
||||||
<tr><td rowspan="3">type</td><td>LI</td><td rowspan="3">Equivalent style 'list-style-type', different allowed values though. (needs testing)</td></tr>
|
<tr class="impl-yes"><td rowspan="3">type</td><td>LI</td><td rowspan="3">Equivalent style 'list-style-type', different allowed values though. (needs testing)</td></tr>
|
||||||
<tr><td>OL</td></tr>
|
<tr class="impl-yes"><td>OL</td></tr>
|
||||||
<tr><td>UL</td></tr>
|
<tr class="impl-yes"><td>UL</td></tr>
|
||||||
<tr class="impl-yes"><td>value</td><td>LI</td><td>Poorly supported 'counter-reset', allowed in loose, dropped in strict</td></tr>
|
<tr class="impl-yes"><td>value</td><td>LI</td><td>Poorly supported 'counter-reset', allowed in loose, dropped in strict</td></tr>
|
||||||
<tr class="impl-yes"><td>vspace</td><td>IMG</td><td>Near-equiv styles 'margin-left' and 'margin-right', needs px suffix, see hspace</td></tr>
|
<tr class="impl-yes"><td>vspace</td><td>IMG</td><td>Near-equiv styles 'margin-left' and 'margin-right', needs px suffix, see hspace</td></tr>
|
||||||
<tr class="impl-yes"><td rowspan="2">width</td><td>HR</td><td rowspan="2">Near-equiv style 'width', needs px suffix if original was pixels</td></tr>
|
<tr class="impl-yes"><td rowspan="2">width</td><td>HR</td><td rowspan="2">Near-equiv style 'width', needs px suffix if original was pixels</td></tr>
|
||||||
|
@ -28,7 +28,7 @@ class HTMLPurifier_HTMLModule_TransformToStrict extends HTMLPurifier_HTMLModule
|
|||||||
// we're actually modifying these elements, not defining them
|
// we're actually modifying these elements, not defining them
|
||||||
var $elements = array('h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p',
|
var $elements = array('h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p',
|
||||||
'blockquote', 'table', 'td', 'th', 'tr', 'img', 'a', 'hr', 'br',
|
'blockquote', 'table', 'td', 'th', 'tr', 'img', 'a', 'hr', 'br',
|
||||||
'caption');
|
'caption', 'ul', 'ol', 'li');
|
||||||
|
|
||||||
var $info_tag_transform = array(
|
var $info_tag_transform = array(
|
||||||
// placeholders, see constructor for definitions
|
// placeholders, see constructor for definitions
|
||||||
@ -165,6 +165,28 @@ class HTMLPurifier_HTMLModule_TransformToStrict extends HTMLPurifier_HTMLModule
|
|||||||
'right' => 'margin-left:auto;margin-right:0;text-align:right;'
|
'right' => 'margin-left:auto;margin-right:0;text-align:right;'
|
||||||
));
|
));
|
||||||
|
|
||||||
|
$ul_types = array(
|
||||||
|
'disc' => 'list-style-type:disc;',
|
||||||
|
'square' => 'list-style-type:square;',
|
||||||
|
'circle' => 'list-style-type:circle;'
|
||||||
|
);
|
||||||
|
$ol_types = array(
|
||||||
|
'1' => 'list-style-type:decimal;',
|
||||||
|
'i' => 'list-style-type:lower-roman;',
|
||||||
|
'I' => 'list-style-type:upper-roman;',
|
||||||
|
'a' => 'list-style-type:lower-alpha;',
|
||||||
|
'A' => 'list-style-type:upper-alpha;'
|
||||||
|
);
|
||||||
|
$li_types = $ul_types + $ol_types;
|
||||||
|
|
||||||
|
$this->info['ul']->attr_transform_pre['type'] =
|
||||||
|
new HTMLPurifier_AttrTransform_EnumToCSS('type', $ul_types);
|
||||||
|
$this->info['ol']->attr_transform_pre['type'] =
|
||||||
|
new HTMLPurifier_AttrTransform_EnumToCSS('type', $ol_types, true);
|
||||||
|
$this->info['li']->attr_transform_pre['type'] =
|
||||||
|
new HTMLPurifier_AttrTransform_EnumToCSS('type', $li_types, true);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var $defines_child_def = true;
|
var $defines_child_def = true;
|
||||||
|
@ -166,6 +166,17 @@
|
|||||||
<sample><![CDATA[<hr align="center" class="short" />center]]></sample>
|
<sample><![CDATA[<hr align="center" class="short" />center]]></sample>
|
||||||
<sample><![CDATA[<hr align="right" class="short" />right]]></sample>
|
<sample><![CDATA[<hr align="right" class="short" />right]]></sample>
|
||||||
</group>
|
</group>
|
||||||
|
<group title="ul,ol,li.type">
|
||||||
|
<sample><![CDATA[<ul type="disc"><li>1</li><li>2</li></ul>]]></sample>
|
||||||
|
<sample><![CDATA[<ul type="square"><li>1</li><li>2</li></ul>]]></sample>
|
||||||
|
<sample><![CDATA[<ul type="circle"><li>1</li><li>2</li></ul>]]></sample>
|
||||||
|
<sample><![CDATA[<ol type="a"><li>1</li><li>2</li></ul>]]></sample>
|
||||||
|
<sample><![CDATA[<ol type="A"><li>1</li><li>2</li></ul>]]></sample>
|
||||||
|
<sample><![CDATA[<ol type="i"><li>1</li><li>2</li></ul>]]></sample>
|
||||||
|
<sample><![CDATA[<ol type="I"><li>1</li><li>2</li></ul>]]></sample>
|
||||||
|
<sample><![CDATA[<ol type="1"><li>1</li><li>2</li></ul>]]></sample>
|
||||||
|
<sample><![CDATA[<ol><li type="a">1</li><li type="I">2</li></ul>]]></sample>
|
||||||
|
</group>
|
||||||
|
|
||||||
|
|
||||||
<!-- sample
|
<!-- sample
|
||||||
|
@ -371,6 +371,69 @@ class HTMLPurifier_Strategy_ValidateAttributesTest extends
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function testListTypeTransform() {
|
||||||
|
// ul
|
||||||
|
$this->assertResult(
|
||||||
|
'<ul type="disc" />',
|
||||||
|
'<ul style="list-style-type:disc;" />'
|
||||||
|
);
|
||||||
|
$this->assertResult(
|
||||||
|
'<ul type="square" />',
|
||||||
|
'<ul style="list-style-type:square;" />'
|
||||||
|
);
|
||||||
|
$this->assertResult(
|
||||||
|
'<ul type="circle" />',
|
||||||
|
'<ul style="list-style-type:circle;" />'
|
||||||
|
);
|
||||||
|
$this->assertResult( // case insensitive
|
||||||
|
'<ul type="CIRCLE" />',
|
||||||
|
'<ul style="list-style-type:circle;" />'
|
||||||
|
);
|
||||||
|
$this->assertResult(
|
||||||
|
'<ul type="a" />',
|
||||||
|
'<ul />'
|
||||||
|
);
|
||||||
|
// ol
|
||||||
|
$this->assertResult(
|
||||||
|
'<ol type="1" />',
|
||||||
|
'<ol style="list-style-type:decimal;" />'
|
||||||
|
);
|
||||||
|
$this->assertResult(
|
||||||
|
'<ol type="i" />',
|
||||||
|
'<ol style="list-style-type:lower-roman;" />'
|
||||||
|
);
|
||||||
|
$this->assertResult(
|
||||||
|
'<ol type="I" />',
|
||||||
|
'<ol style="list-style-type:upper-roman;" />'
|
||||||
|
);
|
||||||
|
$this->assertResult(
|
||||||
|
'<ol type="a" />',
|
||||||
|
'<ol style="list-style-type:lower-alpha;" />'
|
||||||
|
);
|
||||||
|
$this->assertResult(
|
||||||
|
'<ol type="A" />',
|
||||||
|
'<ol style="list-style-type:upper-alpha;" />'
|
||||||
|
);
|
||||||
|
$this->assertResult(
|
||||||
|
'<ol type="disc" />',
|
||||||
|
'<ol />'
|
||||||
|
);
|
||||||
|
// li
|
||||||
|
$this->assertResult(
|
||||||
|
'<li type="circle" />',
|
||||||
|
'<li style="list-style-type:circle;" />'
|
||||||
|
);
|
||||||
|
$this->assertResult(
|
||||||
|
'<li type="A" />',
|
||||||
|
'<li style="list-style-type:upper-alpha;" />'
|
||||||
|
);
|
||||||
|
$this->assertResult( // case sensitive
|
||||||
|
'<li type="CIRCLE" />',
|
||||||
|
'<li />'
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
Loading…
Reference in New Issue
Block a user