2010-09-08 23:14:17 -04:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* XHTML 1.1 Edit Module, defines editing-related elements. Text Extension
|
|
|
|
* Module.
|
|
|
|
*/
|
|
|
|
class HTMLPurifier_HTMLModule_Edit extends HTMLPurifier_HTMLModule
|
|
|
|
{
|
|
|
|
|
2016-02-09 05:06:17 -05:00
|
|
|
/**
|
|
|
|
* @type string
|
|
|
|
*/
|
2010-09-08 23:14:17 -04:00
|
|
|
public $name = 'Edit';
|
|
|
|
|
2016-02-09 05:06:17 -05:00
|
|
|
/**
|
|
|
|
* @param HTMLPurifier_Config $config
|
|
|
|
*/
|
|
|
|
public function setup($config)
|
|
|
|
{
|
2010-09-08 23:14:17 -04:00
|
|
|
$contents = 'Chameleon: #PCDATA | Inline ! #PCDATA | Flow';
|
|
|
|
$attr = array(
|
|
|
|
'cite' => 'URI',
|
|
|
|
// 'datetime' => 'Datetime', // not implemented
|
|
|
|
);
|
|
|
|
$this->addElement('del', 'Inline', $contents, 'Common', $attr);
|
|
|
|
$this->addElement('ins', 'Inline', $contents, 'Common', $attr);
|
|
|
|
}
|
|
|
|
|
|
|
|
// HTML 4.01 specifies that ins/del must not contain block
|
|
|
|
// elements when used in an inline context, chameleon is
|
|
|
|
// a complicated workaround to acheive this effect
|
|
|
|
|
|
|
|
// Inline context ! Block context (exclamation mark is
|
|
|
|
// separator, see getChildDef for parsing)
|
|
|
|
|
2016-02-09 05:06:17 -05:00
|
|
|
/**
|
|
|
|
* @type bool
|
|
|
|
*/
|
2010-09-08 23:14:17 -04:00
|
|
|
public $defines_child_def = true;
|
2016-02-09 05:06:17 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @param HTMLPurifier_ElementDef $def
|
|
|
|
* @return HTMLPurifier_ChildDef_Chameleon
|
|
|
|
*/
|
|
|
|
public function getChildDef($def)
|
|
|
|
{
|
|
|
|
if ($def->content_model_type != 'chameleon') {
|
|
|
|
return false;
|
|
|
|
}
|
2010-09-08 23:14:17 -04:00
|
|
|
$value = explode('!', $def->content_model);
|
|
|
|
return new HTMLPurifier_ChildDef_Chameleon($value[0], $value[1]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// vim: et sw=4 sts=4
|