Adds a custom attribute to a pre-existing element
/** * Adds HTML5 element and attributes to a provided definition object. * * @param HTMLPurifier_HTMLDefinition $def * @return HTMLPurifier_HTMLDefinition */ public static function setup(HTMLPurifier_HTMLDefinition $def) { // use fixed implementation of Boolean attributes, instead of a buggy // one provided with 4.6.0 $def->manager->attrTypes->set('Bool', new HTMLPurifier_AttrDef_HTML_Bool2()); // http://developers.whatwg.org/sections.html $def->addElement('section', 'Block', 'Flow', 'Common'); $def->addElement('nav', 'Block', 'Flow', 'Common'); $def->addElement('article', 'Block', 'Flow', 'Common'); $def->addElement('aside', 'Block', 'Flow', 'Common'); $def->addElement('header', 'Block', 'Flow', 'Common'); $def->addElement('footer', 'Block', 'Flow', 'Common'); $def->addElement('main', 'Block', 'Flow', 'Common'); // Content model actually excludes several tags, not modelled here $def->addElement('address', 'Block', 'Flow', 'Common'); $def->addElement('hgroup', 'Block', 'Required: h1 | h2 | h3 | h4 | h5 | h6', 'Common'); // http://developers.whatwg.org/grouping-content.html $def->addElement('figure', 'Block', 'Optional: (figcaption, Flow) | (Flow, figcaption) | Flow', 'Common'); $def->addElement('figcaption', 'Inline', 'Flow', 'Common'); // http://developers.whatwg.org/the-video-element.html#the-video-element $def->addElement('video', 'Block', 'Optional: (source, Flow) | (Flow, source) | Flow', 'Common', array('src' => 'URI', 'type' => 'Text', 'width' => 'Length', 'height' => 'Length', 'poster' => 'URI', 'preload' => 'Enum#auto,metadata,none', 'controls' => 'Bool')); $def->addElement('source', 'Block', 'Empty', 'Common', array('src' => 'URI', 'type' => 'Text')); // http://developers.whatwg.org/text-level-semantics.html $def->addElement('s', 'Inline', 'Inline', 'Common'); $def->addElement('var', 'Inline', 'Inline', 'Common'); $def->addElement('sub', 'Inline', 'Inline', 'Common'); $def->addElement('sup', 'Inline', 'Inline', 'Common'); $def->addElement('mark', 'Inline', 'Inline', 'Common'); $def->addElement('wbr', 'Inline', 'Empty', 'Core'); // http://developers.whatwg.org/edits.html $def->addElement('ins', 'Block', 'Flow', 'Common', array('cite' => 'URI', 'datetime' => 'Text')); $def->addElement('del', 'Block', 'Flow', 'Common', array('cite' => 'URI', 'datetime' => 'Text')); // TIME $time = $def->addElement('time', 'Inline', 'Inline', 'Common', array('datetime' => 'Text', 'pubdate' => 'Bool')); $time->excludes = array('time' => true); // IMG $def->addAttribute('img', 'srcset', 'Text'); // IFRAME $def->addAttribute('iframe', 'allowfullscreen', 'Bool'); return $def; }
/** * Implements hook_htmlpurifier_html_definition_alter(). * * Allows modules to alter the HTML Definition used by HTML Purifier. * * @param HTMLPurifier_HTMLDefinition $html_definition * The HTMLPurifier definition object to alter. */ function hook_htmlpurifier_html_definition_alter($html_definition) { // Allow to use the 'data-type' attribute on images. $html_definition->addAttribute('img', 'data-type', 'Text'); }