00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 include_once "./Services/RTE/classes/class.ilRTE.php";
00025
00035 class ilTinyMCE extends ilRTE
00036 {
00037 function ilTinyMCE()
00038 {
00039 parent::ilRTE();
00040 $this->plugins = array(
00041 "ibrowser",
00042 "xhtmlxtras",
00043 "style",
00044 "layer",
00045 "table",
00046 "save",
00047 "advhr",
00048 "advlink",
00049 "emotions",
00050 "iespell",
00051 "insertdatetime",
00052 "preview",
00053 "flash",
00054 "searchreplace",
00055 "print",
00056 "contextmenu",
00057 "paste",
00058 "directionality",
00059 "fullscreen",
00060 "noneditable"
00061 );
00062 }
00063
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00113 function addRTESupport($obj_id, $obj_type, $a_module = "")
00114 {
00115 include_once "./classes/class.ilTemplate.php";
00116 $tpl = new ilTemplate("tpl.tinymce.html", true, true, "Services/RTE");
00117 include_once "./classes/class.ilObjAdvancedEditing.php";
00118 $tags =& ilObjAdvancedEditing::_getUsedHTMLTags($a_module);
00119 $tpl->setCurrentBlock("tinymce");
00120 $tpl->setVariable("JAVASCRIPT_LOCATION", "./Services/RTE/tiny_mce/tiny_mce.js");
00121 include_once "./classes/class.ilObject.php";
00122 $tpl->setVariable("OBJ_ID", $obj_id);
00123 $tpl->setVariable("OBJ_TYPE", $obj_type);
00124 $tpl->setVariable("CLIENT_ID", CLIENT_ID);
00125 $tpl->setVariable("SESSION_ID", $_COOKIE["PHPSESSID"]);
00126 $tpl->setVariable("BLOCKFORMATS", $this->_buildAdvancedBlockformatsFromHTMLTags($tags));
00127 $tpl->setVariable("VALID_ELEMENTS", $this->_getValidElementsFromHTMLTags($tags));
00128 $more_buttons = "";
00129 if (count($this->buttons) > 0)
00130 {
00131 $more_buttons = ",separator," . join(",", $this->buttons);
00132 }
00133 $tpl->setVariable("BUTTONS", $this->_buildAdvancedButtonsFromHTMLTags($tags) . $more_buttons);
00134 $tpl->setVariable("TABLE_BUTTONS", $this->_buildAdvancedTableButtonsFromHTMLTags($tags));
00135 $tpl->setVariable("ADDITIONAL_PLUGINS", join(",", $this->plugins));
00136 include_once "./classes/class.ilUtil.php";
00137
00138 $tpl->setVariable("STYLESHEET_LOCATION", ilUtil::getNewContentStyleSheetLocation());
00139 $tpl->setVariable("LANG", $this->_getEditorLanguage());
00140 $tpl->parseCurrentBlock();
00141 $this->tpl->setVariable("CONTENT_BLOCK", $tpl->get());
00142 }
00143
00144 function _buildAdvancedBlockformatsFromHTMLTags($a_html_tags)
00145 {
00146 $blockformats = array();
00147
00148 if (in_array("p", $a_html_tags))
00149 {
00150 array_push($blockformats, "p");
00151 }
00152 if (in_array("div", $a_html_tags))
00153 {
00154 array_push($blockformats, "div");
00155 }
00156 if (in_array("pre", $a_html_tags))
00157 {
00158 array_push($blockformats, "pre");
00159 }
00160 if (in_array("code", $a_html_tags))
00161 {
00162 array_push($blockformats, "code");
00163 }
00164 if (in_array("h1", $a_html_tags))
00165 {
00166 array_push($blockformats, "h1");
00167 }
00168 if (in_array("h2", $a_html_tags))
00169 {
00170 array_push($blockformats, "h2");
00171 }
00172 if (in_array("h3", $a_html_tags))
00173 {
00174 array_push($blockformats, "h3");
00175 }
00176 if (in_array("h4", $a_html_tags))
00177 {
00178 array_push($blockformats, "h4");
00179 }
00180 if (in_array("h5", $a_html_tags))
00181 {
00182 array_push($blockformats, "h5");
00183 }
00184 if (in_array("h6", $a_html_tags))
00185 {
00186 array_push($blockformats, "h6");
00187 }
00188 if (count($blockformats))
00189 {
00190 return join(",", $blockformats);
00191 }
00192 else
00193 {
00194 return "";
00195 }
00196 }
00197
00198 function _buildAdvancedButtonsFromHTMLTags($a_html_tags)
00199 {
00200 $theme_advanced_buttons = array();
00201 if (in_array("strong", $a_html_tags))
00202 {
00203 array_push($theme_advanced_buttons, "bold");
00204 }
00205 if (in_array("em", $a_html_tags))
00206 {
00207 array_push($theme_advanced_buttons, "italic");
00208 }
00209 if (in_array("u", $a_html_tags))
00210 {
00211 array_push($theme_advanced_buttons, "underline");
00212 }
00213 if (in_array("strike", $a_html_tags))
00214 {
00215 array_push($theme_advanced_buttons, "strikethrough");
00216 }
00217 if (count($theme_advanced_buttons))
00218 {
00219 array_push($theme_advanced_buttons, "separator");
00220 }
00221 if (in_array("p", $a_html_tags))
00222 {
00223 array_push($theme_advanced_buttons, "justifyleft");
00224 array_push($theme_advanced_buttons, "justifycenter");
00225 array_push($theme_advanced_buttons, "justifyright");
00226 array_push($theme_advanced_buttons, "justifyfull");
00227 array_push($theme_advanced_buttons, "separator");
00228 }
00229 if (strlen(ilTinyMCE::_buildAdvancedBlockformatsFromHTMLTags($a_html_tags)))
00230 {
00231 array_push($theme_advanced_buttons, "formatselect");
00232 }
00233 if (in_array("hr", $a_html_tags))
00234 {
00235 array_push($theme_advanced_buttons, "hr");
00236 }
00237 array_push($theme_advanced_buttons, "removeformat");
00238 array_push($theme_advanced_buttons, "separator");
00239 if (in_array("sub", $a_html_tags))
00240 {
00241 array_push($theme_advanced_buttons, "sub");
00242 }
00243 if (in_array("sup", $a_html_tags))
00244 {
00245 array_push($theme_advanced_buttons, "sup");
00246 }
00247 array_push($theme_advanced_buttons, "charmap");
00248 if ((in_array("ol", $a_html_tags)) && (in_array("li", $a_html_tags)))
00249 {
00250 array_push($theme_advanced_buttons, "bullist");
00251 }
00252 if ((in_array("ul", $a_html_tags)) && (in_array("li", $a_html_tags)))
00253 {
00254 array_push($theme_advanced_buttons, "numlist");
00255 }
00256 array_push($theme_advanced_buttons, "separator");
00257 if (in_array("cite", $a_html_tags))
00258 {
00259 array_push($theme_advanced_buttons, "cite");
00260 }
00261 if (in_array("abbr", $a_html_tags))
00262 {
00263 array_push($theme_advanced_buttons, "abbr");
00264 }
00265 if (in_array("acronym", $a_html_tags))
00266 {
00267 array_push($theme_advanced_buttons, "acronym");
00268 }
00269 if (in_array("del", $a_html_tags))
00270 {
00271 array_push($theme_advanced_buttons, "del");
00272 }
00273 if (in_array("ins", $a_html_tags))
00274 {
00275 array_push($theme_advanced_buttons, "ins");
00276 }
00277 if (in_array("blockquote", $a_html_tags))
00278 {
00279 array_push($theme_advanced_buttons, "indent");
00280 array_push($theme_advanced_buttons, "outdent");
00281 }
00282 if (in_array("img", $a_html_tags))
00283 {
00284
00285 array_push($theme_advanced_buttons, "image");
00286 array_push($theme_advanced_buttons, "ibrowser");
00287 }
00288 if (in_array("a", $a_html_tags))
00289 {
00290 array_push($theme_advanced_buttons, "link");
00291 array_push($theme_advanced_buttons, "unlink");
00292 array_push($theme_advanced_buttons, "anchor");
00293 }
00294 array_push($theme_advanced_buttons, "separator");
00295 array_push($theme_advanced_buttons, "undo");
00296 array_push($theme_advanced_buttons, "redo");
00297 return join(",", $theme_advanced_buttons);
00298 }
00299
00300 function _buildAdvancedTableButtonsFromHTMLTags($a_html_tags)
00301 {
00302 $theme_advanced_buttons = array();
00303 if (in_array("table", $a_html_tags) && in_array("tr", $a_html_tags) && in_array("td", $a_html_tags))
00304 {
00305 array_push($theme_advanced_buttons, "tablecontrols");
00306 }
00307 return join(",", $theme_advanced_buttons);
00308 }
00309
00310 function _getEditorLanguage()
00311 {
00312 global $ilUser;
00313 $lang = $ilUser->getLanguage();
00314 if (file_exists("./Services/RTE/tiny_mce/langs/$lang.js"))
00315 {
00316 return "$lang";
00317 }
00318 else
00319 {
00320 return "en";
00321 }
00322 }
00323
00324 function _getValidElementsFromHTMLTags($a_html_tags)
00325 {
00326 $valid_elements = array();
00327 foreach ($a_html_tags as $tag)
00328 {
00329 switch ($tag)
00330 {
00331 case "a":
00332 array_push($valid_elements, "a[accesskey|charset|class|coords|dir<ltr?rtl|href|hreflang|id|lang|name"
00333 ."|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup"
00334 ."|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|rel|rev"
00335 ."|shape<circle?default?poly?rect|style|tabindex|title|target|type]");
00336 break;
00337 case "abbr":
00338 array_push($valid_elements, "abbr[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00339 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00340 ."|title]");
00341 break;
00342 case "acronym":
00343 array_push($valid_elements, "acronym[class|dir<ltr?rtl|id|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00344 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00345 ."|title]");
00346 break;
00347 case "address":
00348 array_push($valid_elements, "address[class|align|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
00349 ."|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
00350 ."|onmouseup|style|title]");
00351 break;
00352 case "applet":
00353 array_push($valid_elements, "applet[align<bottom?left?middle?right?top|alt|archive|class|code|codebase"
00354 ."|height|hspace|id|name|object|style|title|vspace|width]");
00355 break;
00356 case "area":
00357 array_push($valid_elements, "area[accesskey|alt|class|coords|dir<ltr?rtl|href|id|lang|nohref<nohref"
00358 ."|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup"
00359 ."|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup"
00360 ."|shape<circle?default?poly?rect|style|tabindex|title|target]");
00361 break;
00362 case "base":
00363 array_push($valid_elements, "base[href|target]");
00364 break;
00365 case "basefont":
00366 array_push($valid_elements, "basefont[color|face|id|size]");
00367 break;
00368 case "bdo":
00369 array_push($valid_elements, "bdo[class|dir<ltr?rtl|id|lang|style|title]");
00370 break;
00371 case "big":
00372 array_push($valid_elements, "big[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00373 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00374 ."|title]");
00375 break;
00376 case "blockquote":
00377 array_push($valid_elements, "blockquote[dir|style|cite|class|dir<ltr?rtl|id|lang|onclick|ondblclick"
00378 ."|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout"
00379 ."|onmouseover|onmouseup|style|title]");
00380 break;
00381 case "body":
00382 array_push($valid_elements, "body[alink|background|bgcolor|class|dir<ltr?rtl|id|lang|link|onclick"
00383 ."|ondblclick|onkeydown|onkeypress|onkeyup|onload|onmousedown|onmousemove"
00384 ."|onmouseout|onmouseover|onmouseup|onunload|style|title|text|vlink]");
00385 break;
00386 case "br":
00387 array_push($valid_elements, "br[class|clear<all?left?none?right|id|style|title]");
00388 break;
00389 case "button":
00390 array_push($valid_elements, "button[accesskey|class|dir<ltr?rtl|disabled<disabled|id|lang|name|onblur"
00391 ."|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup|onmousedown"
00392 ."|onmousemove|onmouseout|onmouseover|onmouseup|style|tabindex|title|type"
00393 ."|value]");
00394 break;
00395 case "caption":
00396 array_push($valid_elements, "caption[align<bottom?left?right?top|class|dir<ltr?rtl|id|lang|onclick"
00397 ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
00398 ."|onmouseout|onmouseover|onmouseup|style|title]");
00399 break;
00400 case "center":
00401 array_push($valid_elements, "center[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00402 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00403 ."|title]");
00404 break;
00405 case "cite":
00406 array_push($valid_elements, "cite[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00407 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00408 ."|title]");
00409 break;
00410 case "code":
00411 array_push($valid_elements, "code[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00412 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00413 ."|title]");
00414 break;
00415 case "col":
00416 array_push($valid_elements, "col[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id"
00417 ."|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
00418 ."|onmousemove|onmouseout|onmouseover|onmouseup|span|style|title"
00419 ."|valign<baseline?bottom?middle?top|width]");
00420 break;
00421 case "colgroup":
00422 array_push($valid_elements, "colgroup[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl"
00423 ."|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
00424 ."|onmousemove|onmouseout|onmouseover|onmouseup|span|style|title"
00425 ."|valign<baseline?bottom?middle?top|width]");
00426 break;
00427 case "dd":
00428 array_push($valid_elements, "dd[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
00429 ."|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
00430 break;
00431 case "del":
00432 array_push($valid_elements, "del[cite|class|datetime|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
00433 ."|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
00434 ."|onmouseup|style|title]");
00435 break;
00436 case "dfn":
00437 array_push($valid_elements, "dfn[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00438 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00439 ."|title]");
00440 break;
00441 case "dir":
00442 array_push($valid_elements, "dir[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
00443 ."|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
00444 ."|onmouseup|style|title]");
00445 break;
00446 case "div":
00447 array_push($valid_elements, "div[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
00448 ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
00449 ."|onmouseout|onmouseover|onmouseup|style|title]");
00450 break;
00451 case "dl":
00452 array_push($valid_elements, "dl[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
00453 ."|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
00454 ."|onmouseup|style|title]");
00455 break;
00456 case "dt":
00457 array_push($valid_elements, "dt[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
00458 ."|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
00459 break;
00460 case "em":
00461 array_push($valid_elements, "em/i[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00462 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00463 ."|title]");
00464 break;
00465 case "fieldset":
00466 array_push($valid_elements, "fieldset[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00467 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00468 ."|title]");
00469 break;
00470 case "font":
00471 array_push($valid_elements, "font[class|color|dir<ltr?rtl|face|id|lang|size|style|title]");
00472 break;
00473 case "form":
00474 array_push($valid_elements, "form[accept|accept-charset|action|class|dir<ltr?rtl|enctype|id|lang"
00475 ."|method<get?post|name|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
00476 ."|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onreset|onsubmit"
00477 ."|style|title|target]");
00478 break;
00479 case "frame":
00480 array_push($valid_elements, "frame[class|frameborder|id|longdesc|marginheight|marginwidth|name"
00481 ."|noresize<noresize|scrolling<auto?no?yes|src|style|title]");
00482 break;
00483 case "frameset":
00484 array_push($valid_elements, "frameset[class|cols|id|onload|onunload|rows|style|title]");
00485 break;
00486 case "h1":
00487 array_push($valid_elements, "h1[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
00488 ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
00489 ."|onmouseout|onmouseover|onmouseup|style|title]");
00490 break;
00491 case "h2":
00492 array_push($valid_elements, "h2[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
00493 ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
00494 ."|onmouseout|onmouseover|onmouseup|style|title]");
00495 break;
00496 case "h3":
00497 array_push($valid_elements, "h3[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
00498 ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
00499 ."|onmouseout|onmouseover|onmouseup|style|title]");
00500 break;
00501 case "h4":
00502 array_push($valid_elements, "h4[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
00503 ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
00504 ."|onmouseout|onmouseover|onmouseup|style|title]");
00505 break;
00506 case "h5":
00507 array_push($valid_elements, "h5[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
00508 ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
00509 ."|onmouseout|onmouseover|onmouseup|style|title]");
00510 break;
00511 case "h6":
00512 array_push($valid_elements, "h6[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
00513 ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
00514 ."|onmouseout|onmouseover|onmouseup|style|title]");
00515 break;
00516 case "head":
00517 array_push($valid_elements, "head[dir<ltr?rtl|lang|profile]");
00518 break;
00519 case "hr":
00520 array_push($valid_elements, "hr[align<center?left?right|class|dir<ltr?rtl|id|lang|noshade<noshade|onclick"
00521 ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
00522 ."|onmouseout|onmouseover|onmouseup|size|style|title|width]");
00523 break;
00524 case "html":
00525 array_push($valid_elements, "html[dir<ltr?rtl|lang|version]");
00526 break;
00527 case "iframe":
00528 array_push($valid_elements, "iframe[align<bottom?left?middle?right?top|class|frameborder|height|id"
00529 ."|longdesc|marginheight|marginwidth|name|scrolling<auto?no?yes|src|style"
00530 ."|title|width]");
00531 break;
00532 case "img":
00533 array_push($valid_elements, "img[align<bottom?left?middle?right?top|alt|border|class|dir<ltr?rtl|height"
00534 ."|hspace|id|ismap<ismap|lang|longdesc|name|onclick|ondblclick|onkeydown"
00535 ."|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
00536 ."|onmouseup|src|style|title|usemap|vspace|width]");
00537 break;
00538 case "input":
00539 array_push($valid_elements, "input[accept|accesskey|align<bottom?left?middle?right?top|alt"
00540 ."|checked<checked|class|dir<ltr?rtl|disabled<disabled|id|ismap<ismap|lang"
00541 ."|maxlength|name|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress"
00542 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onselect"
00543 ."|readonly<readonly|size|src|style|tabindex|title"
00544 ."|type<button?checkbox?file?hidden?image?password?radio?reset?submit?text"
00545 ."|usemap|value]");
00546 break;
00547 case "ins":
00548 array_push($valid_elements, "ins[cite|class|datetime|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
00549 ."|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
00550 ."|onmouseup|style|title]");
00551 break;
00552 case "isindex":
00553 array_push($valid_elements, "isindex[class|dir<ltr?rtl|id|lang|prompt|style|title]");
00554 break;
00555 case "kbd":
00556 array_push($valid_elements, "kbd[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00557 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00558 ."|title]");
00559 break;
00560 case "label":
00561 array_push($valid_elements, "label[accesskey|class|dir<ltr?rtl|for|id|lang|onblur|onclick|ondblclick"
00562 ."|onfocus|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout"
00563 ."|onmouseover|onmouseup|style|title]");
00564 break;
00565 case "legend":
00566 array_push($valid_elements, "legend[align<bottom?left?right?top|accesskey|class|dir<ltr?rtl|id|lang"
00567 ."|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
00568 ."|onmouseout|onmouseover|onmouseup|style|title]");
00569 break;
00570 case "li":
00571 array_push($valid_elements, "li[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
00572 ."|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title|type"
00573 ."|value]");
00574 break;
00575 case "link":
00576 array_push($valid_elements, "link[charset|class|dir<ltr?rtl|href|hreflang|id|lang|media|onclick"
00577 ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
00578 ."|onmouseout|onmouseover|onmouseup|rel|rev|style|title|target|type]");
00579 break;
00580 case "map":
00581 array_push($valid_elements, "map[class|dir<ltr?rtl|id|lang|name|onclick|ondblclick|onkeydown|onkeypress"
00582 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00583 ."|title]");
00584 break;
00585 case "menu":
00586 array_push($valid_elements, "menu[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
00587 ."|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
00588 ."|onmouseup|style|title]");
00589 break;
00590 case "meta":
00591 array_push($valid_elements, "meta[content|dir<ltr?rtl|http-equiv|lang|name|scheme]");
00592 break;
00593 case "noframes":
00594 array_push($valid_elements, "noframes[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00595 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00596 ."|title]");
00597 break;
00598 case "noscript":
00599 array_push($valid_elements, "noscript[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00600 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00601 ."|title]");
00602 break;
00603 case "object":
00604 array_push($valid_elements, "object[align<bottom?left?middle?right?top|archive|border|class|classid"
00605 ."|codebase|codetype|data|declare|dir<ltr?rtl|height|hspace|id|lang|name"
00606 ."|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
00607 ."|onmouseout|onmouseover|onmouseup|standby|style|tabindex|title|type|usemap"
00608 ."|vspace|width]");
00609 break;
00610 case "ol":
00611 array_push($valid_elements, "ol[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
00612 ."|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
00613 ."|onmouseup|start|style|title|type]");
00614 break;
00615 case "optgroup":
00616 array_push($valid_elements, "optgroup[class|dir<ltr?rtl|disabled<disabled|id|label|lang|onclick"
00617 ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
00618 ."|onmouseout|onmouseover|onmouseup|style|title]");
00619 break;
00620 case "option":
00621 array_push($valid_elements, "option[class|dir<ltr?rtl|disabled<disabled|id|label|lang|onclick|ondblclick"
00622 ."|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout"
00623 ."|onmouseover|onmouseup|selected<selected|style|title|value]");
00624 break;
00625 case "p":
00626 array_push($valid_elements, "p[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick"
00627 ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
00628 ."|onmouseout|onmouseover|onmouseup|style|title]");
00629 break;
00630 case "param":
00631 array_push($valid_elements, "param[id|name|type|value|valuetype<DATA?OBJECT?REF]");
00632 break;
00633 case "pre":
00634 case "listing":
00635 case "plaintext":
00636 case "xmp":
00637 array_push($valid_elements, "pre/listing/plaintext/xmp[align|class|dir<ltr?rtl|id|lang|onclick|ondblclick"
00638 ."|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout"
00639 ."|onmouseover|onmouseup|style|title|width]");
00640 break;
00641 case "q":
00642 array_push($valid_elements, "q[cite|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00643 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00644 ."|title]");
00645 break;
00646 case "s":
00647 array_push($valid_elements, "s[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
00648 ."|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
00649 break;
00650 case "samp":
00651 array_push($valid_elements, "samp[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00652 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00653 ."|title]");
00654 break;
00655 case "script":
00656 array_push($valid_elements, "script[charset|defer|language|src|type]");
00657 break;
00658 case "select":
00659 array_push($valid_elements, "select[class|dir<ltr?rtl|disabled<disabled|id|lang|multiple<multiple|name"
00660 ."|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup"
00661 ."|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|size|style"
00662 ."|tabindex|title]");
00663 break;
00664 case "small":
00665 array_push($valid_elements, "small[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00666 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00667 ."|title]");
00668 break;
00669 case "span":
00670 array_push($valid_elements, "span[align<center?justify?left?right|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
00671 ."|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
00672 ."|onmouseup|style|title]");
00673 break;
00674 case "strike":
00675 array_push($valid_elements, "strike[class|class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
00676 ."|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
00677 ."|onmouseup|style|title]");
00678 break;
00679 case "strong":
00680 array_push($valid_elements, "strong/b[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00681 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00682 ."|title]");
00683 break;
00684 case "style":
00685 array_push($valid_elements, "style[dir<ltr?rtl|lang|media|title|type]");
00686 break;
00687 case "sub":
00688 array_push($valid_elements, "sub[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00689 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00690 ."|title]");
00691 break;
00692 case "sup":
00693 array_push($valid_elements, "sup[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00694 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00695 ."|title]");
00696 break;
00697 case "table":
00698 array_push($valid_elements, "table[align<center?left?right|bgcolor|border|cellpadding|cellspacing|class"
00699 ."|dir<ltr?rtl|frame|height|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00700 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|rules"
00701 ."|style|summary|title|width]");
00702 break;
00703 case "tbody":
00704 array_push($valid_elements, "tbody[align<center?char?justify?left?right|char|class|charoff|dir<ltr?rtl|id"
00705 ."|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
00706 ."|onmousemove|onmouseout|onmouseover|onmouseup|style|title"
00707 ."|valign<baseline?bottom?middle?top]");
00708 break;
00709 case "td":
00710 array_push($valid_elements, "td[abbr|align<center?char?justify?left?right|axis|bgcolor|char|charoff|class"
00711 ."|colspan|dir<ltr?rtl|headers|height|id|lang|nowrap<nowrap|onclick"
00712 ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
00713 ."|onmouseout|onmouseover|onmouseup|rowspan|scope<col?colgroup?row?rowgroup"
00714 ."|style|title|valign<baseline?bottom?middle?top|width]");
00715 break;
00716 case "textarea":
00717 array_push($valid_elements, "textarea[accesskey|class|cols|dir<ltr?rtl|disabled<disabled|id|lang|name"
00718 ."|onblur|onclick|ondblclick|onfocus|onkeydown|onkeypress|onkeyup"
00719 ."|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|onselect"
00720 ."|readonly<readonly|rows|style|tabindex|title]");
00721 break;
00722 case "tfoot":
00723 array_push($valid_elements, "tfoot[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id"
00724 ."|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
00725 ."|onmousemove|onmouseout|onmouseover|onmouseup|style|title"
00726 ."|valign<baseline?bottom?middle?top]");
00727 break;
00728 case "th":
00729 array_push($valid_elements, "th[abbr|align<center?char?justify?left?right|axis|bgcolor|char|charoff|class"
00730 ."|colspan|dir<ltr?rtl|headers|height|id|lang|nowrap<nowrap|onclick"
00731 ."|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove"
00732 ."|onmouseout|onmouseover|onmouseup|rowspan|scope<col?colgroup?row?rowgroup"
00733 ."|style|title|valign<baseline?bottom?middle?top|width]");
00734 break;
00735 case "thead":
00736 array_push($valid_elements, "thead[align<center?char?justify?left?right|char|charoff|class|dir<ltr?rtl|id"
00737 ."|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown"
00738 ."|onmousemove|onmouseout|onmouseover|onmouseup|style|title"
00739 ."|valign<baseline?bottom?middle?top]");
00740 break;
00741 case "title":
00742 array_push($valid_elements, "title[dir<ltr?rtl|lang]");
00743 break;
00744 case "tr":
00745 array_push($valid_elements, "tr[abbr|align<center?char?justify?left?right|bgcolor|char|charoff|class"
00746 ."|rowspan|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00747 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00748 ."|title|valign<baseline?bottom?middle?top]");
00749 break;
00750 case "tt":
00751 array_push($valid_elements, "tt[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
00752 ."|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
00753 break;
00754 case "u":
00755 array_push($valid_elements, "u[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress|onkeyup"
00756 ."|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style|title]");
00757 break;
00758 case "ul":
00759 array_push($valid_elements, "ul[class|compact<compact|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown"
00760 ."|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover"
00761 ."|onmouseup|style|title|type]");
00762 break;
00763 case "var":
00764 array_push($valid_elements, "var[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00765 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00766 ."|title]");
00767 break;
00768 case "ruby":
00769 array_push($valid_elements, "ruby[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00770 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00771 ."|title]");
00772 break;
00773 case "rbc":
00774 array_push($valid_elements, "rbc[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00775 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00776 ."|title]");
00777 break;
00778 case "rtc":
00779 array_push($valid_elements, "rtc[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00780 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00781 ."|title]");
00782 break;
00783 case "rb":
00784 array_push($valid_elements, "rb[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00785 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00786 ."|title]");
00787 break;
00788 case "rt":
00789 array_push($valid_elements, "rt[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00790 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00791 ."|title]");
00792 break;
00793 case "rp":
00794 array_push($valid_elements, "rp[class|dir<ltr?rtl|id|lang|onclick|ondblclick|onkeydown|onkeypress"
00795 ."|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|style"
00796 ."|title]");
00797 break;
00798 }
00799 }
00800 return join(",", $valid_elements);
00801 }
00802 }
00803
00804 ?>