Convenience function that sets up a new element
public addElement ( string $element, string | boolean $type, string $contents, array $attr_includes = [], array $attr = [] ) : HTMLPurifier_ElementDef | ||
$element | string | Name of element to add |
$type | string | boolean | What content set should element be registered to? Set as false to skip this step. |
$contents | string | Allowed children in form of: "$content_model_type: $content_model" |
$attr_includes | array | What attribute collections to register to element? |
$attr | array | What unique attributes does the element define? |
Результат | HTMLPurifier_ElementDef | Created element definition object, so you can set advanced parameters |
public function test_addModule() { $manager = $this->createManager(); // ...but we add user modules $common_module = new HTMLPurifier_HTMLModule(); $common_module->name = 'Common'; $common_module->attr_collections['Common'] = array('class' => 'NMTOKENS'); $common_module->content_sets['Flow'] = 'Block | Inline'; $manager->addModule($common_module); $structural_module = new HTMLPurifier_HTMLModule(); $structural_module->name = 'Structural'; $structural_module->addElement('p', 'Block', 'Inline', 'Common'); $manager->addModule($structural_module); $formatting_module = new HTMLPurifier_HTMLModule(); $formatting_module->name = 'Formatting'; $formatting_module->addElement('em', 'Inline', 'Inline', 'Common'); $manager->addModule($formatting_module); $unsafe_module = new HTMLPurifier_HTMLModule(); $unsafe_module->name = 'Unsafe'; $unsafe_module->safe = false; $unsafe_module->addElement('div', 'Block', 'Flow'); $manager->addModule($unsafe_module); $config = HTMLPurifier_Config::createDefault(); $config->set('HTML.Trusted', false); $config->set('HTML.CustomDoctype', 'Blank'); $manager->setup($config); $attrdef_nmtokens = new HTMLPurifier_AttrDef_HTML_Nmtokens(); $p = new HTMLPurifier_ElementDef(); $p->attr['class'] = $attrdef_nmtokens; $p->child = new HTMLPurifier_ChildDef_Optional(array('em', '#PCDATA')); $p->content_model = 'em | #PCDATA'; $p->content_model_type = 'optional'; $p->descendants_are_inline = true; $em = new HTMLPurifier_ElementDef(); $em->attr['class'] = $attrdef_nmtokens; $em->child = new HTMLPurifier_ChildDef_Optional(array('em', '#PCDATA')); $em->content_model = 'em | #PCDATA'; $em->content_model_type = 'optional'; $em->descendants_are_inline = true; $this->assertEqual(array('p' => $p, 'em' => $em), $manager->getElements()); // test trusted parameter override $div = new HTMLPurifier_ElementDef(); $div->child = new HTMLPurifier_ChildDef_Optional(array('p', 'div', 'em', '#PCDATA')); $div->content_model = 'p | div | em | #PCDATA'; $div->content_model_type = 'optional'; $div->descendants_are_inline = false; $this->assertEqual($div, $manager->getElement('div', true)); }
public function test_addElement() { $module = new HTMLPurifier_HTMLModule(); $def = $module->addElement('a', 'Inline', 'Optional: #PCDATA', array('Common'), array('href' => 'URI')); $module2 = new HTMLPurifier_HTMLModule(); $def2 = new HTMLPurifier_ElementDef(); $def2->content_model = '#PCDATA'; $def2->content_model_type = 'optional'; $def2->attr = array('href' => 'URI', 0 => array('Common')); $module2->info['a'] = $def2; $module2->elements = array('a'); $module2->content_sets['Inline'] = 'a'; $this->assertIdentical($module, $module2); $this->assertIdentical($def, $def2); $this->assertReference($def, $module->info['a']); }