mirror of
https://github.com/ezyang/htmlpurifier.git
synced 2024-11-09 23:28:42 +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.
|
||||
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() {
|
||||
$config = new HTMLPurifier_Config();
|
||||
return $config;
|
||||
|
@ -6,6 +6,7 @@ require_once 'HTMLPurifier/AttrDef.php';
|
||||
require_once 'HTMLPurifier/AttrDef/Class.php';
|
||||
require_once 'HTMLPurifier/AttrDef/Text.php';
|
||||
require_once 'HTMLPurifier/AttrDef/Lang.php';
|
||||
require_once 'HTMLPurifier/AttrDef/Pixels.php';
|
||||
require_once 'HTMLPurifier/AttrTransform.php';
|
||||
require_once 'HTMLPurifier/AttrTransform/Lang.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['summary'] = $e_Text;
|
||||
|
||||
$this->info['table']->attr['border'] = new HTMLPurifier_AttrDef_Pixels();
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// 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
|
||||
$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">
|
||||
<th abbr="super" align="left">Supercalifragilistic</th>
|
||||
</tr>
|
||||
|
@ -43,11 +43,13 @@ $test_files[] = 'AttrDef/IDTest.php';
|
||||
$test_files[] = 'AttrDef/ClassTest.php';
|
||||
$test_files[] = 'AttrDef/TextTest.php';
|
||||
$test_files[] = 'AttrDef/LangTest.php';
|
||||
$test_files[] = 'AttrDef/PixelsTest.php';
|
||||
$test_files[] = 'IDAccumulatorTest.php';
|
||||
$test_files[] = 'TagTransformTest.php';
|
||||
$test_files[] = 'AttrTransform/LangTest.php';
|
||||
$test_files[] = 'AttrTransform/TextAlignTest.php';
|
||||
|
||||
|
||||
$test_file_lookup = array_flip($test_files);
|
||||
|
||||
if (isset($_GET['file']) && isset($test_file_lookup[$_GET['file']])) {
|
||||
|
Loading…
Reference in New Issue
Block a user