|
Revision 21, 1.2 kB
(checked in by admin, 18 years ago)
|
|
|
| Line | |
|---|
| 1 | <?php |
|---|
| 2 | |
|---|
| 3 | /** |
|---|
| 4 | * XHTML 1.1 Edit Module, defines editing-related elements. Text Extension |
|---|
| 5 | * Module. |
|---|
| 6 | */ |
|---|
| 7 | class HTMLPurifier_HTMLModule_Edit extends HTMLPurifier_HTMLModule |
|---|
| 8 | { |
|---|
| 9 | |
|---|
| 10 | public $name = 'Edit'; |
|---|
| 11 | |
|---|
| 12 | public function __construct() { |
|---|
| 13 | $contents = 'Chameleon: #PCDATA | Inline ! #PCDATA | Flow'; |
|---|
| 14 | $attr = array( |
|---|
| 15 | 'cite' => 'URI', |
|---|
| 16 | // 'datetime' => 'Datetime', // not implemented |
|---|
| 17 | ); |
|---|
| 18 | $this->addElement('del', 'Inline', $contents, 'Common', $attr); |
|---|
| 19 | $this->addElement('ins', 'Inline', $contents, 'Common', $attr); |
|---|
| 20 | } |
|---|
| 21 | |
|---|
| 22 | // HTML 4.01 specifies that ins/del must not contain block |
|---|
| 23 | // elements when used in an inline context, chameleon is |
|---|
| 24 | // a complicated workaround to acheive this effect |
|---|
| 25 | |
|---|
| 26 | // Inline context ! Block context (exclamation mark is |
|---|
| 27 | // separator, see getChildDef for parsing) |
|---|
| 28 | |
|---|
| 29 | public $defines_child_def = true; |
|---|
| 30 | public function getChildDef($def) { |
|---|
| 31 | if ($def->content_model_type != 'chameleon') return false; |
|---|
| 32 | $value = explode('!', $def->content_model); |
|---|
| 33 | return new HTMLPurifier_ChildDef_Chameleon($value[0], $value[1]); |
|---|
| 34 | } |
|---|
| 35 | |
|---|
| 36 | } |
|---|
| 37 | |
|---|