ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5
HTMLPurifier_ChildDef_List Class Reference

Definition for list containers ul and ol. More...

+ Inheritance diagram for HTMLPurifier_ChildDef_List:
+ Collaboration diagram for HTMLPurifier_ChildDef_List:

Public Member Functions

 validateChildren ($children, $config, $context)
 
- Public Member Functions inherited from HTMLPurifier_ChildDef
 getAllowedElements ($config)
 Get lookup of tag names that should not close this element automatically. More...
 
 validateChildren ($children, $config, $context)
 Validates nodes according to definition and returns modification. More...
 

Data Fields

 $type = 'list'
 string More...
 
 $elements = array('li' => true, 'ul' => true, 'ol' => true)
 array More...
 
- Data Fields inherited from HTMLPurifier_ChildDef
 $type
 Type of child definition, usually right-most part of class name lowercase. More...
 
 $allow_empty
 Indicates whether or not an empty array of children is okay. More...
 
 $elements = array()
 Lookup array of all elements that this definition could possibly allow. More...
 

Detailed Description

Definition for list containers ul and ol.

What does this do? The big thing is to handle ol/ul at the top level of list nodes, which should be handled specially by /folding/ them into the previous list node. We generally shouldn't ever see other disallowed elements, because the autoclose behavior in MakeWellFormed handles it.

Definition at line 12 of file List.php.

Member Function Documentation

◆ validateChildren()

HTMLPurifier_ChildDef_List::validateChildren (   $children,
  $config,
  $context 
)
Parameters
array$children
HTMLPurifier_Config$config
HTMLPurifier_Context$context
Returns
array

Definition at line 31 of file List.php.

References $result.

32  {
33  // Flag for subclasses
34  $this->whitespace = false;
35 
36  // if there are no tokens, delete parent node
37  if (empty($children)) {
38  return false;
39  }
40 
41  // the new set of children
42  $result = array();
43 
44  // a little sanity check to make sure it's not ALL whitespace
45  $all_whitespace = true;
46 
47  $current_li = false;
48 
49  foreach ($children as $node) {
50  if (!empty($node->is_whitespace)) {
51  $result[] = $node;
52  continue;
53  }
54  $all_whitespace = false; // phew, we're not talking about whitespace
55 
56  if ($node->name === 'li') {
57  // good
58  $current_li = $node;
59  $result[] = $node;
60  } else {
61  // we want to tuck this into the previous li
62  // Invariant: we expect the node to be ol/ul
63  // ToDo: Make this more robust in the case of not ol/ul
64  // by distinguishing between existing li and li created
65  // to handle non-list elements; non-list elements should
66  // not be appended to an existing li; only li created
67  // for non-list. This distinction is not currently made.
68  if ($current_li === false) {
69  $current_li = new HTMLPurifier_Node_Element('li');
70  $result[] = $current_li;
71  }
72  $current_li->children[] = $node;
73  $current_li->empty = false; // XXX fascinating! Check for this error elsewhere ToDo
74  }
75  }
76  if (empty($result)) {
77  return false;
78  }
79  if ($all_whitespace) {
80  return false;
81  }
82  return $result;
83  }
Concrete element node class.
Definition: Element.php:6
$result

Field Documentation

◆ $elements

HTMLPurifier_ChildDef_List::$elements = array('li' => true, 'ul' => true, 'ol' => true)

array

Definition at line 23 of file List.php.

◆ $type

HTMLPurifier_ChildDef_List::$type = 'list'

string

Definition at line 17 of file List.php.


The documentation for this class was generated from the following file: