1: <?php
2:
3: /**
4: * XHTML 1.1 Tables Module, fully defines accessible table elements.
5: */
6: class HTMLPurifier_HTMLModule_Tables extends HTMLPurifier_HTMLModule
7: {
8: /**
9: * @type string
10: */
11: public $name = 'Tables';
12:
13: /**
14: * @param HTMLPurifier_Config $config
15: */
16: public function setup($config)
17: {
18: $this->addElement('caption', false, 'Inline', 'Common');
19:
20: $this->addElement(
21: 'table',
22: 'Block',
23: new HTMLPurifier_ChildDef_Table(),
24: 'Common',
25: array(
26: 'border' => 'Pixels',
27: 'cellpadding' => 'Length',
28: 'cellspacing' => 'Length',
29: 'frame' => 'Enum#void,above,below,hsides,lhs,rhs,vsides,box,border',
30: 'rules' => 'Enum#none,groups,rows,cols,all',
31: 'summary' => 'Text',
32: 'width' => 'Length'
33: )
34: );
35:
36: // common attributes
37: $cell_align = array(
38: 'align' => 'Enum#left,center,right,justify,char',
39: 'charoff' => 'Length',
40: 'valign' => 'Enum#top,middle,bottom,baseline',
41: );
42:
43: $cell_t = array_merge(
44: array(
45: 'abbr' => 'Text',
46: 'colspan' => 'Number',
47: 'rowspan' => 'Number',
48: // Apparently, as of HTML5 this attribute only applies
49: // to 'th' elements.
50: 'scope' => 'Enum#row,col,rowgroup,colgroup',
51: ),
52: $cell_align
53: );
54: $this->addElement('td', false, 'Flow', 'Common', $cell_t);
55: $this->addElement('th', false, 'Flow', 'Common', $cell_t);
56:
57: $this->addElement('tr', false, 'Required: td | th', 'Common', $cell_align);
58:
59: $cell_col = array_merge(
60: array(
61: 'span' => 'Number',
62: 'width' => 'MultiLength',
63: ),
64: $cell_align
65: );
66: $this->addElement('col', false, 'Empty', 'Common', $cell_col);
67: $this->addElement('colgroup', false, 'Optional: col', 'Common', $cell_col);
68:
69: $this->addElement('tbody', false, 'Required: tr', 'Common', $cell_align);
70: $this->addElement('thead', false, 'Required: tr', 'Common', $cell_align);
71: $this->addElement('tfoot', false, 'Required: tr', 'Common', $cell_align);
72: }
73: }
74:
75: // vim: et sw=4 sts=4
76: