mirror of
https://github.com/ezyang/htmlpurifier.git
synced 2025-03-23 14:27:02 +00:00
Implement Pixels attribute definition.
git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@169 48356398-32a2-884e-a903-53898d9a118a
This commit is contained in:
parent
fdc838c75e
commit
a520b5469e
30
library/HTMLPurifier/AttrDef/Pixels.php
Normal file
30
library/HTMLPurifier/AttrDef/Pixels.php
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
require_once 'HTMLPurifier/AttrDef.php';
|
||||||
|
|
||||||
|
class HTMLPurifier_AttrDef_Pixels extends HTMLPurifier_AttrDef
|
||||||
|
{
|
||||||
|
|
||||||
|
function validate($string) {
|
||||||
|
|
||||||
|
$string = trim($string);
|
||||||
|
if ($string === '0') return $string;
|
||||||
|
if ($string === '') return false;
|
||||||
|
$length = strlen($string);
|
||||||
|
if (substr($string, $length - 2) == 'px') {
|
||||||
|
$string = substr($string, 0, $length - 2);
|
||||||
|
}
|
||||||
|
if (!is_numeric($string)) return false;
|
||||||
|
$int = (int) $string;
|
||||||
|
|
||||||
|
if ($int < 0) return '0';
|
||||||
|
|
||||||
|
// could use some upper-bound checking
|
||||||
|
|
||||||
|
return (string) $int;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
@ -35,6 +35,10 @@ class HTMLPurifier_Config
|
|||||||
// at all.
|
// at all.
|
||||||
var $attr_lang_alpha = false;
|
var $attr_lang_alpha = false;
|
||||||
|
|
||||||
|
// max amount of pixels allowed to be specified
|
||||||
|
var $attr_pixels_hmax = 600; // horizontal context
|
||||||
|
var $attr_pixels_vmax = 1200; // vertical context
|
||||||
|
|
||||||
function createDefault() {
|
function createDefault() {
|
||||||
$config = new HTMLPurifier_Config();
|
$config = new HTMLPurifier_Config();
|
||||||
return $config;
|
return $config;
|
||||||
|
@ -6,6 +6,7 @@ require_once 'HTMLPurifier/AttrDef.php';
|
|||||||
require_once 'HTMLPurifier/AttrDef/Class.php';
|
require_once 'HTMLPurifier/AttrDef/Class.php';
|
||||||
require_once 'HTMLPurifier/AttrDef/Text.php';
|
require_once 'HTMLPurifier/AttrDef/Text.php';
|
||||||
require_once 'HTMLPurifier/AttrDef/Lang.php';
|
require_once 'HTMLPurifier/AttrDef/Lang.php';
|
||||||
|
require_once 'HTMLPurifier/AttrDef/Pixels.php';
|
||||||
require_once 'HTMLPurifier/AttrTransform.php';
|
require_once 'HTMLPurifier/AttrTransform.php';
|
||||||
require_once 'HTMLPurifier/AttrTransform/Lang.php';
|
require_once 'HTMLPurifier/AttrTransform/Lang.php';
|
||||||
require_once 'HTMLPurifier/AttrTransform/TextAlign.php';
|
require_once 'HTMLPurifier/AttrTransform/TextAlign.php';
|
||||||
@ -296,6 +297,8 @@ class HTMLPurifier_Definition
|
|||||||
$this->info['table']->attr['rules'] = $e_TRules;
|
$this->info['table']->attr['rules'] = $e_TRules;
|
||||||
$this->info['table']->attr['summary'] = $e_Text;
|
$this->info['table']->attr['summary'] = $e_Text;
|
||||||
|
|
||||||
|
$this->info['table']->attr['border'] = new HTMLPurifier_AttrDef_Pixels();
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
// UNIMP : info_tag_transform : transformations of tags
|
// UNIMP : info_tag_transform : transformations of tags
|
||||||
|
|
||||||
|
39
tests/HTMLPurifier/AttrDef/PixelsTest.php
Normal file
39
tests/HTMLPurifier/AttrDef/PixelsTest.php
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
require_once 'HTMLPurifier/AttrDefHarness.php';
|
||||||
|
require_once 'HTMLPurifier/AttrDef/Pixels.php';
|
||||||
|
|
||||||
|
class HTMLPurifier_AttrDef_PixelsTest extends HTMLPurifier_AttrDefHarness
|
||||||
|
{
|
||||||
|
|
||||||
|
function test() {
|
||||||
|
|
||||||
|
$this->def = new HTMLPurifier_AttrDef_Pixels();
|
||||||
|
|
||||||
|
$this->assertDef('1');
|
||||||
|
$this->assertDef('0');
|
||||||
|
|
||||||
|
$this->assertDef('2px', '2'); // rm px suffix
|
||||||
|
|
||||||
|
$this->assertDef('dfs', false); // totally invalid value
|
||||||
|
|
||||||
|
// conceivably we could repair this value, but we won't for now
|
||||||
|
$this->assertDef('9in', false);
|
||||||
|
|
||||||
|
// test trim
|
||||||
|
$this->assertDef(' 45 ', '45');
|
||||||
|
|
||||||
|
// no negatives
|
||||||
|
$this->assertDef('-2', '0');
|
||||||
|
|
||||||
|
// remove empty
|
||||||
|
$this->assertDef('', false);
|
||||||
|
|
||||||
|
// round down
|
||||||
|
$this->assertDef('4.9', '4');
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
@ -69,7 +69,7 @@ class HTMLPurifier_Strategy_ValidateAttributesTest extends
|
|||||||
|
|
||||||
// test table
|
// test table
|
||||||
$inputs[13] = <<<HTML
|
$inputs[13] = <<<HTML
|
||||||
<table frame="above" rules="rows" summary="A test table">
|
<table frame="above" rules="rows" summary="A test table" border="2">
|
||||||
<tr valign="top">
|
<tr valign="top">
|
||||||
<th abbr="super" align="left">Supercalifragilistic</th>
|
<th abbr="super" align="left">Supercalifragilistic</th>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -43,11 +43,13 @@ $test_files[] = 'AttrDef/IDTest.php';
|
|||||||
$test_files[] = 'AttrDef/ClassTest.php';
|
$test_files[] = 'AttrDef/ClassTest.php';
|
||||||
$test_files[] = 'AttrDef/TextTest.php';
|
$test_files[] = 'AttrDef/TextTest.php';
|
||||||
$test_files[] = 'AttrDef/LangTest.php';
|
$test_files[] = 'AttrDef/LangTest.php';
|
||||||
|
$test_files[] = 'AttrDef/PixelsTest.php';
|
||||||
$test_files[] = 'IDAccumulatorTest.php';
|
$test_files[] = 'IDAccumulatorTest.php';
|
||||||
$test_files[] = 'TagTransformTest.php';
|
$test_files[] = 'TagTransformTest.php';
|
||||||
$test_files[] = 'AttrTransform/LangTest.php';
|
$test_files[] = 'AttrTransform/LangTest.php';
|
||||||
$test_files[] = 'AttrTransform/TextAlignTest.php';
|
$test_files[] = 'AttrTransform/TextAlignTest.php';
|
||||||
|
|
||||||
|
|
||||||
$test_file_lookup = array_flip($test_files);
|
$test_file_lookup = array_flip($test_files);
|
||||||
|
|
||||||
if (isset($_GET['file']) && isset($test_file_lookup[$_GET['file']])) {
|
if (isset($_GET['file']) && isset($test_file_lookup[$_GET['file']])) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user