Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
 
3
/**
4
 * XHTML 1.1 Legacy module defines elements that were previously
5
 * deprecated.
6
 *
7
 * @note Not all legacy elements have been implemented yet, which
8
 *       is a bit of a reverse problem as compared to browsers! In
9
 *       addition, this legacy module may implement a bit more than
10
 *       mandated by XHTML 1.1.
11
 *
12
 * This module can be used in combination with TransformToStrict in order
13
 * to transform as many deprecated elements as possible, but retain
14
 * questionably deprecated elements that do not have good alternatives
15
 * as well as transform elements that don't have an implementation.
16
 * See docs/ref-strictness.txt for more details.
17
 */
18
 
19
class HTMLPurifier_HTMLModule_Legacy extends HTMLPurifier_HTMLModule
20
{
21
    /**
22
     * @type string
23
     */
24
    public $name = 'Legacy';
25
 
26
    /**
27
     * @param HTMLPurifier_Config $config
28
     */
29
    public function setup($config)
30
    {
31
        $this->addElement(
32
            'basefont',
33
            'Inline',
34
            'Empty',
35
            null,
36
            array(
37
                'color' => 'Color',
38
                'face' => 'Text', // extremely broad, we should
39
                'size' => 'Text', // tighten it
40
                'id' => 'ID'
41
            )
42
        );
43
        $this->addElement('center', 'Block', 'Flow', 'Common');
44
        $this->addElement(
45
            'dir',
46
            'Block',
47
            'Required: li',
48
            'Common',
49
            array(
50
                'compact' => 'Bool#compact'
51
            )
52
        );
53
        $this->addElement(
54
            'font',
55
            'Inline',
56
            'Inline',
57
            array('Core', 'I18N'),
58
            array(
59
                'color' => 'Color',
60
                'face' => 'Text', // extremely broad, we should
61
                'size' => 'Text', // tighten it
62
            )
63
        );
64
        $this->addElement(
65
            'menu',
66
            'Block',
67
            'Required: li',
68
            'Common',
69
            array(
70
                'compact' => 'Bool#compact'
71
            )
72
        );
73
 
74
        $s = $this->addElement('s', 'Inline', 'Inline', 'Common');
75
        $s->formatting = true;
76
 
77
        $strike = $this->addElement('strike', 'Inline', 'Inline', 'Common');
78
        $strike->formatting = true;
79
 
80
        $u = $this->addElement('u', 'Inline', 'Inline', 'Common');
81
        $u->formatting = true;
82
 
83
        // setup modifications to old elements
84
 
85
        $align = 'Enum#left,right,center,justify';
86
 
87
        $address = $this->addBlankElement('address');
88
        $address->content_model = 'Inline | #PCDATA | p';
89
        $address->content_model_type = 'optional';
90
        $address->child = false;
91
 
92
        $blockquote = $this->addBlankElement('blockquote');
93
        $blockquote->content_model = 'Flow | #PCDATA';
94
        $blockquote->content_model_type = 'optional';
95
        $blockquote->child = false;
96
 
97
        $br = $this->addBlankElement('br');
98
        $br->attr['clear'] = 'Enum#left,all,right,none';
99
 
100
        $caption = $this->addBlankElement('caption');
101
        $caption->attr['align'] = 'Enum#top,bottom,left,right';
102
 
103
        $div = $this->addBlankElement('div');
104
        $div->attr['align'] = $align;
105
 
106
        $dl = $this->addBlankElement('dl');
107
        $dl->attr['compact'] = 'Bool#compact';
108
 
109
        for ($i = 1; $i <= 6; $i++) {
110
            $h = $this->addBlankElement("h$i");
111
            $h->attr['align'] = $align;
112
        }
113
 
114
        $hr = $this->addBlankElement('hr');
115
        $hr->attr['align'] = $align;
116
        $hr->attr['noshade'] = 'Bool#noshade';
117
        $hr->attr['size'] = 'Pixels';
118
        $hr->attr['width'] = 'Length';
119
 
120
        $img = $this->addBlankElement('img');
121
        $img->attr['align'] = 'IAlign';
122
        $img->attr['border'] = 'Pixels';
123
        $img->attr['hspace'] = 'Pixels';
124
        $img->attr['vspace'] = 'Pixels';
125
 
126
        // figure out this integer business
127
 
128
        $li = $this->addBlankElement('li');
129
        $li->attr['value'] = new HTMLPurifier_AttrDef_Integer();
130
        $li->attr['type'] = 'Enum#s:1,i,I,a,A,disc,square,circle';
131
 
132
        $ol = $this->addBlankElement('ol');
133
        $ol->attr['compact'] = 'Bool#compact';
134
        $ol->attr['start'] = new HTMLPurifier_AttrDef_Integer();
135
        $ol->attr['type'] = 'Enum#s:1,i,I,a,A';
136
 
137
        $p = $this->addBlankElement('p');
138
        $p->attr['align'] = $align;
139
 
140
        $pre = $this->addBlankElement('pre');
141
        $pre->attr['width'] = 'Number';
142
 
143
        // script omitted
144
 
145
        $table = $this->addBlankElement('table');
146
        $table->attr['align'] = 'Enum#left,center,right';
147
        $table->attr['bgcolor'] = 'Color';
148
 
149
        $tr = $this->addBlankElement('tr');
150
        $tr->attr['bgcolor'] = 'Color';
151
 
152
        $th = $this->addBlankElement('th');
153
        $th->attr['bgcolor'] = 'Color';
154
        $th->attr['height'] = 'Length';
155
        $th->attr['nowrap'] = 'Bool#nowrap';
156
        $th->attr['width'] = 'Length';
157
 
158
        $td = $this->addBlankElement('td');
159
        $td->attr['bgcolor'] = 'Color';
160
        $td->attr['height'] = 'Length';
161
        $td->attr['nowrap'] = 'Bool#nowrap';
162
        $td->attr['width'] = 'Length';
163
 
164
        $ul = $this->addBlankElement('ul');
165
        $ul->attr['compact'] = 'Bool#compact';
166
        $ul->attr['type'] = 'Enum#square,disc,circle';
167
 
168
        // "safe" modifications to "unsafe" elements
169
        // WARNING: If you want to add support for an unsafe, legacy
170
        // attribute, make a new TrustedLegacy module with the trusted
171
        // bit set appropriately
172
 
173
        $form = $this->addBlankElement('form');
174
        $form->content_model = 'Flow | #PCDATA';
175
        $form->content_model_type = 'optional';
176
        $form->attr['target'] = 'FrameTarget';
177
 
178
        $input = $this->addBlankElement('input');
179
        $input->attr['align'] = 'IAlign';
180
 
181
        $legend = $this->addBlankElement('legend');
182
        $legend->attr['align'] = 'LAlign';
183
    }
184
}
185
 
186
// vim: et sw=4 sts=4