mirror of
https://github.com/ezyang/htmlpurifier.git
synced 2025-07-10 09:16:20 +02:00
Implement "carryover" functionality, requested by Kinderlehrer <bitweaver@7doves.com>
This commit is a limited implementation of the "active formatting elements" algorithm implemented in HTML5, which preserves certain formatting elements such as <a> and <b> when exiting or entering nodes. Signed-off-by: Edward Z. Yang <edwardzyang@thewritingpot.com>
This commit is contained in:
@ -22,6 +22,7 @@ class HTMLPurifier_HTMLModule_Hypertext extends HTMLPurifier_HTMLModule
|
||||
// 'type' => 'ContentType',
|
||||
)
|
||||
);
|
||||
$a->formatting = true;
|
||||
$a->excludes = array('a' => true);
|
||||
}
|
||||
|
||||
|
@ -41,9 +41,15 @@ class HTMLPurifier_HTMLModule_Legacy extends HTMLPurifier_HTMLModule
|
||||
$this->addElement('menu', 'Block', 'Required: li', 'Common', array(
|
||||
'compact' => 'Bool#compact'
|
||||
));
|
||||
$this->addElement('s', 'Inline', 'Inline', 'Common');
|
||||
$this->addElement('strike', 'Inline', 'Inline', 'Common');
|
||||
$this->addElement('u', 'Inline', 'Inline', 'Common');
|
||||
|
||||
$s = $this->addElement('s', 'Inline', 'Inline', 'Common');
|
||||
$s->formatting = true;
|
||||
|
||||
$strike = $this->addElement('strike', 'Inline', 'Inline', 'Common');
|
||||
$strike->formatting = true;
|
||||
|
||||
$u = $this->addElement('u', 'Inline', 'Inline', 'Common');
|
||||
$u->formatting = true;
|
||||
|
||||
// setup modifications to old elements
|
||||
|
||||
|
@ -16,14 +16,19 @@ class HTMLPurifier_HTMLModule_Presentation extends HTMLPurifier_HTMLModule
|
||||
public $name = 'Presentation';
|
||||
|
||||
public function setup($config) {
|
||||
$this->addElement('b', 'Inline', 'Inline', 'Common');
|
||||
$this->addElement('big', 'Inline', 'Inline', 'Common');
|
||||
$this->addElement('hr', 'Block', 'Empty', 'Common');
|
||||
$this->addElement('i', 'Inline', 'Inline', 'Common');
|
||||
$this->addElement('small', 'Inline', 'Inline', 'Common');
|
||||
$this->addElement('sub', 'Inline', 'Inline', 'Common');
|
||||
$this->addElement('sup', 'Inline', 'Inline', 'Common');
|
||||
$this->addElement('tt', 'Inline', 'Inline', 'Common');
|
||||
$b = $this->addElement('b', 'Inline', 'Inline', 'Common');
|
||||
$b->formatting = true;
|
||||
$big = $this->addElement('big', 'Inline', 'Inline', 'Common');
|
||||
$big->formatting = true;
|
||||
$i = $this->addElement('i', 'Inline', 'Inline', 'Common');
|
||||
$i->formatting = true;
|
||||
$small = $this->addElement('small', 'Inline', 'Inline', 'Common');
|
||||
$small->formatting = true;
|
||||
$tt = $this->addElement('tt', 'Inline', 'Inline', 'Common');
|
||||
$tt->formatting = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -26,15 +26,21 @@ class HTMLPurifier_HTMLModule_Text extends HTMLPurifier_HTMLModule
|
||||
$this->addElement('abbr', 'Inline', 'Inline', 'Common');
|
||||
$this->addElement('acronym', 'Inline', 'Inline', 'Common');
|
||||
$this->addElement('cite', 'Inline', 'Inline', 'Common');
|
||||
$this->addElement('code', 'Inline', 'Inline', 'Common');
|
||||
$this->addElement('dfn', 'Inline', 'Inline', 'Common');
|
||||
$this->addElement('em', 'Inline', 'Inline', 'Common');
|
||||
$this->addElement('kbd', 'Inline', 'Inline', 'Common');
|
||||
$this->addElement('q', 'Inline', 'Inline', 'Common', array('cite' => 'URI'));
|
||||
$this->addElement('samp', 'Inline', 'Inline', 'Common');
|
||||
$this->addElement('strong', 'Inline', 'Inline', 'Common');
|
||||
$this->addElement('var', 'Inline', 'Inline', 'Common');
|
||||
|
||||
$em = $this->addElement('em', 'Inline', 'Inline', 'Common');
|
||||
$em->formatting = true;
|
||||
|
||||
$strong = $this->addElement('strong', 'Inline', 'Inline', 'Common');
|
||||
$strong->formatting = true;
|
||||
|
||||
$code = $this->addElement('code', 'Inline', 'Inline', 'Common');
|
||||
$code->formatting = true;
|
||||
|
||||
// Inline Structural ----------------------------------------------
|
||||
$this->addElement('span', 'Inline', 'Inline', 'Common');
|
||||
$this->addElement('br', 'Inline', 'Empty', 'Core');
|
||||
@ -53,7 +59,9 @@ class HTMLPurifier_HTMLModule_Text extends HTMLPurifier_HTMLModule
|
||||
$this->addElement('h6', 'Heading', 'Inline', 'Common');
|
||||
|
||||
// Block Structural -----------------------------------------------
|
||||
$this->addElement('p', 'Block', 'Inline', 'Common');
|
||||
$p = $this->addElement('p', 'Block', 'Inline', 'Common');
|
||||
$p->autoclose = array_flip(array("address", "blockquote", "center", "dir", "div", "dl", "fieldset", "ol", "p", "ul"));
|
||||
|
||||
$this->addElement('div', 'Block', 'Flow', 'Common');
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user