diff options
Diffstat (limited to 'inc/3rdparty/htmlpurifier/HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php')
-rw-r--r-- | inc/3rdparty/htmlpurifier/HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php | 179 |
1 files changed, 179 insertions, 0 deletions
diff --git a/inc/3rdparty/htmlpurifier/HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php b/inc/3rdparty/htmlpurifier/HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php new file mode 100644 index 00000000..17164fb6 --- /dev/null +++ b/inc/3rdparty/htmlpurifier/HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php | |||
@@ -0,0 +1,179 @@ | |||
1 | <?php | ||
2 | |||
3 | class HTMLPurifier_HTMLModule_Tidy_XHTMLAndHTML4 extends HTMLPurifier_HTMLModule_Tidy | ||
4 | { | ||
5 | |||
6 | /** | ||
7 | * @return array | ||
8 | */ | ||
9 | public function makeFixes() | ||
10 | { | ||
11 | $r = array(); | ||
12 | |||
13 | // == deprecated tag transforms =================================== | ||
14 | |||
15 | $r['font'] = new HTMLPurifier_TagTransform_Font(); | ||
16 | $r['menu'] = new HTMLPurifier_TagTransform_Simple('ul'); | ||
17 | $r['dir'] = new HTMLPurifier_TagTransform_Simple('ul'); | ||
18 | $r['center'] = new HTMLPurifier_TagTransform_Simple('div', 'text-align:center;'); | ||
19 | $r['u'] = new HTMLPurifier_TagTransform_Simple('span', 'text-decoration:underline;'); | ||
20 | $r['s'] = new HTMLPurifier_TagTransform_Simple('span', 'text-decoration:line-through;'); | ||
21 | $r['strike'] = new HTMLPurifier_TagTransform_Simple('span', 'text-decoration:line-through;'); | ||
22 | |||
23 | // == deprecated attribute transforms ============================= | ||
24 | |||
25 | $r['caption@align'] = | ||
26 | new HTMLPurifier_AttrTransform_EnumToCSS( | ||
27 | 'align', | ||
28 | array( | ||
29 | // we're following IE's behavior, not Firefox's, due | ||
30 | // to the fact that no one supports caption-side:right, | ||
31 | // W3C included (with CSS 2.1). This is a slightly | ||
32 | // unreasonable attribute! | ||
33 | 'left' => 'text-align:left;', | ||
34 | 'right' => 'text-align:right;', | ||
35 | 'top' => 'caption-side:top;', | ||
36 | 'bottom' => 'caption-side:bottom;' // not supported by IE | ||
37 | ) | ||
38 | ); | ||
39 | |||
40 | // @align for img ------------------------------------------------- | ||
41 | $r['img@align'] = | ||
42 | new HTMLPurifier_AttrTransform_EnumToCSS( | ||
43 | 'align', | ||
44 | array( | ||
45 | 'left' => 'float:left;', | ||
46 | 'right' => 'float:right;', | ||
47 | 'top' => 'vertical-align:top;', | ||
48 | 'middle' => 'vertical-align:middle;', | ||
49 | 'bottom' => 'vertical-align:baseline;', | ||
50 | ) | ||
51 | ); | ||
52 | |||
53 | // @align for table ----------------------------------------------- | ||
54 | $r['table@align'] = | ||
55 | new HTMLPurifier_AttrTransform_EnumToCSS( | ||
56 | 'align', | ||
57 | array( | ||
58 | 'left' => 'float:left;', | ||
59 | 'center' => 'margin-left:auto;margin-right:auto;', | ||
60 | 'right' => 'float:right;' | ||
61 | ) | ||
62 | ); | ||
63 | |||
64 | // @align for hr ----------------------------------------------- | ||
65 | $r['hr@align'] = | ||
66 | new HTMLPurifier_AttrTransform_EnumToCSS( | ||
67 | 'align', | ||
68 | array( | ||
69 | // we use both text-align and margin because these work | ||
70 | // for different browsers (IE and Firefox, respectively) | ||
71 | // and the melange makes for a pretty cross-compatible | ||
72 | // solution | ||
73 | 'left' => 'margin-left:0;margin-right:auto;text-align:left;', | ||
74 | 'center' => 'margin-left:auto;margin-right:auto;text-align:center;', | ||
75 | 'right' => 'margin-left:auto;margin-right:0;text-align:right;' | ||
76 | ) | ||
77 | ); | ||
78 | |||
79 | // @align for h1, h2, h3, h4, h5, h6, p, div ---------------------- | ||
80 | // {{{ | ||
81 | $align_lookup = array(); | ||
82 | $align_values = array('left', 'right', 'center', 'justify'); | ||
83 | foreach ($align_values as $v) { | ||
84 | $align_lookup[$v] = "text-align:$v;"; | ||
85 | } | ||
86 | // }}} | ||
87 | $r['h1@align'] = | ||
88 | $r['h2@align'] = | ||
89 | $r['h3@align'] = | ||
90 | $r['h4@align'] = | ||
91 | $r['h5@align'] = | ||
92 | $r['h6@align'] = | ||
93 | $r['p@align'] = | ||
94 | $r['div@align'] = | ||
95 | new HTMLPurifier_AttrTransform_EnumToCSS('align', $align_lookup); | ||
96 | |||
97 | // @bgcolor for table, tr, td, th --------------------------------- | ||
98 | $r['table@bgcolor'] = | ||
99 | $r['td@bgcolor'] = | ||
100 | $r['th@bgcolor'] = | ||
101 | new HTMLPurifier_AttrTransform_BgColor(); | ||
102 | |||
103 | // @border for img ------------------------------------------------ | ||
104 | $r['img@border'] = new HTMLPurifier_AttrTransform_Border(); | ||
105 | |||
106 | // @clear for br -------------------------------------------------- | ||
107 | $r['br@clear'] = | ||
108 | new HTMLPurifier_AttrTransform_EnumToCSS( | ||
109 | 'clear', | ||
110 | array( | ||
111 | 'left' => 'clear:left;', | ||
112 | 'right' => 'clear:right;', | ||
113 | 'all' => 'clear:both;', | ||
114 | 'none' => 'clear:none;', | ||
115 | ) | ||
116 | ); | ||
117 | |||
118 | // @height for td, th --------------------------------------------- | ||
119 | $r['td@height'] = | ||
120 | $r['th@height'] = | ||
121 | new HTMLPurifier_AttrTransform_Length('height'); | ||
122 | |||
123 | // @hspace for img ------------------------------------------------ | ||
124 | $r['img@hspace'] = new HTMLPurifier_AttrTransform_ImgSpace('hspace'); | ||
125 | |||
126 | // @noshade for hr ------------------------------------------------ | ||
127 | // this transformation is not precise but often good enough. | ||
128 | // different browsers use different styles to designate noshade | ||
129 | $r['hr@noshade'] = | ||
130 | new HTMLPurifier_AttrTransform_BoolToCSS( | ||
131 | 'noshade', | ||
132 | 'color:#808080;background-color:#808080;border:0;' | ||
133 | ); | ||
134 | |||
135 | // @nowrap for td, th --------------------------------------------- | ||
136 | $r['td@nowrap'] = | ||
137 | $r['th@nowrap'] = | ||
138 | new HTMLPurifier_AttrTransform_BoolToCSS( | ||
139 | 'nowrap', | ||
140 | 'white-space:nowrap;' | ||
141 | ); | ||
142 | |||
143 | // @size for hr -------------------------------------------------- | ||
144 | $r['hr@size'] = new HTMLPurifier_AttrTransform_Length('size', 'height'); | ||
145 | |||
146 | // @type for li, ol, ul ------------------------------------------- | ||
147 | // {{{ | ||
148 | $ul_types = array( | ||
149 | 'disc' => 'list-style-type:disc;', | ||
150 | 'square' => 'list-style-type:square;', | ||
151 | 'circle' => 'list-style-type:circle;' | ||
152 | ); | ||
153 | $ol_types = array( | ||
154 | '1' => 'list-style-type:decimal;', | ||
155 | 'i' => 'list-style-type:lower-roman;', | ||
156 | 'I' => 'list-style-type:upper-roman;', | ||
157 | 'a' => 'list-style-type:lower-alpha;', | ||
158 | 'A' => 'list-style-type:upper-alpha;' | ||
159 | ); | ||
160 | $li_types = $ul_types + $ol_types; | ||
161 | // }}} | ||
162 | |||
163 | $r['ul@type'] = new HTMLPurifier_AttrTransform_EnumToCSS('type', $ul_types); | ||
164 | $r['ol@type'] = new HTMLPurifier_AttrTransform_EnumToCSS('type', $ol_types, true); | ||
165 | $r['li@type'] = new HTMLPurifier_AttrTransform_EnumToCSS('type', $li_types, true); | ||
166 | |||
167 | // @vspace for img ------------------------------------------------ | ||
168 | $r['img@vspace'] = new HTMLPurifier_AttrTransform_ImgSpace('vspace'); | ||
169 | |||
170 | // @width for hr, td, th ------------------------------------------ | ||
171 | $r['td@width'] = | ||
172 | $r['th@width'] = | ||
173 | $r['hr@width'] = new HTMLPurifier_AttrTransform_Length('width'); | ||
174 | |||
175 | return $r; | ||
176 | } | ||
177 | } | ||
178 | |||
179 | // vim: et sw=4 sts=4 | ||