2007-02-04 15:28:47 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
require_once 'HTMLPurifier/HTMLModule.php';
|
2007-02-04 20:09:35 +00:00
|
|
|
require_once 'HTMLPurifier/AttrTransform/BdoDir.php';
|
2007-02-04 15:28:47 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* XHTML 1.1 Bi-directional Text Module, defines elements that
|
|
|
|
* declare directionality of content. Text Extension Module.
|
|
|
|
*/
|
|
|
|
class HTMLPurifier_HTMLModule_Bdo extends HTMLPurifier_HTMLModule
|
|
|
|
{
|
|
|
|
|
|
|
|
var $elements = array('bdo');
|
|
|
|
var $info = array();
|
|
|
|
var $content_sets = array('Inline' => 'bdo');
|
|
|
|
var $attr_collection = array(
|
|
|
|
'I18N' => array('dir' => false)
|
|
|
|
);
|
|
|
|
|
|
|
|
function HTMLPurifier_HTMLModule_Bdo() {
|
|
|
|
$dir = new HTMLPurifier_AttrDef_Enum(array('ltr','rtl'), false);
|
|
|
|
$this->attr_collection['I18N']['dir'] = $dir;
|
|
|
|
$this->info['bdo'] = new HTMLPurifier_ElementDef();
|
|
|
|
$this->info['bdo']->attr = array(
|
|
|
|
0 => array('Core'),
|
2007-02-04 18:27:59 +00:00
|
|
|
'dir' => $dir, // required
|
2007-02-04 20:09:35 +00:00
|
|
|
// The Abstract Module specification has the attribute
|
|
|
|
// inclusions wrong for bdo: bdo allows
|
|
|
|
// xml:lang too (and we'll toss in lang for good measure,
|
|
|
|
// though it is not allowed for XHTML 1.1, this will
|
|
|
|
// be managed with a global attribute transform)
|
2007-02-04 18:27:59 +00:00
|
|
|
'lang' => 'Lang',
|
|
|
|
'xml:lang' => 'Lang'
|
2007-02-04 15:28:47 +00:00
|
|
|
);
|
|
|
|
$this->info['bdo']->content_model = '#PCDATA | Inline';
|
|
|
|
$this->info['bdo']->content_model_type = 'optional';
|
2007-02-04 20:09:35 +00:00
|
|
|
// provides fallback behavior if dir's missing (dir is required)
|
|
|
|
$this->info['bdo']->attr_transform_post[] =
|
|
|
|
new HTMLPurifier_AttrTransform_BdoDir();
|
2007-02-04 15:28:47 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
?>
|