123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724 |
- /**
- * Full HTML5 compatibility rule set
- * These rules define which tags and CSS classes are supported and which tags should be specially treated.
- *
- * Examples based on this rule set:
- *
- * <a href="http://foobar.com">foo</a>
- * ... becomes ...
- * <a href="http://foobar.com" target="_blank" rel="nofollow">foo</a>
- *
- * <img align="left" src="http://foobar.com/image.png">
- * ... becomes ...
- * <img class="wysiwyg-float-left" src="http://foobar.com/image.png" alt="">
- *
- * <div>foo<script>alert(document.cookie);</script></div>
- * ... becomes ...
- * <div>foo</div>
- *
- * <marquee>foo</marquee>
- * ... becomes ...
- * <span>foo</span>
- *
- * foo <br clear="both"> bar
- * ... becomes ...
- * foo <br class="wysiwyg-clear-both"> bar
- *
- * <div>hello <iframe src="http://google.com"></iframe></div>
- * ... becomes ...
- * <div>hello </div>
- *
- * <center>hello</center>
- * ... becomes ...
- * <div class="wysiwyg-text-align-center">hello</div>
- */
- var wysihtml5ParserRules = {
- /**
- * CSS Class white-list
- * Following CSS classes won't be removed when parsed by the wysihtml5 HTML parser
- * If all classes should pass "any" as classes value. Ex: "classes": "any"
- */
- "classes": {
- "wysiwyg-clear-both": 1,
- "wysiwyg-clear-left": 1,
- "wysiwyg-clear-right": 1,
- "wysiwyg-color-aqua": 1,
- "wysiwyg-color-black": 1,
- "wysiwyg-color-blue": 1,
- "wysiwyg-color-fuchsia": 1,
- "wysiwyg-color-gray": 1,
- "wysiwyg-color-green": 1,
- "wysiwyg-color-lime": 1,
- "wysiwyg-color-maroon": 1,
- "wysiwyg-color-navy": 1,
- "wysiwyg-color-olive": 1,
- "wysiwyg-color-purple": 1,
- "wysiwyg-color-red": 1,
- "wysiwyg-color-silver": 1,
- "wysiwyg-color-teal": 1,
- "wysiwyg-color-white": 1,
- "wysiwyg-color-yellow": 1,
- "wysiwyg-float-left": 1,
- "wysiwyg-float-right": 1,
- "wysiwyg-font-size-large": 1,
- "wysiwyg-font-size-larger": 1,
- "wysiwyg-font-size-medium": 1,
- "wysiwyg-font-size-small": 1,
- "wysiwyg-font-size-smaller": 1,
- "wysiwyg-font-size-x-large": 1,
- "wysiwyg-font-size-x-small": 1,
- "wysiwyg-font-size-xx-large": 1,
- "wysiwyg-font-size-xx-small": 1,
- "wysiwyg-text-align-center": 1,
- "wysiwyg-text-align-justify": 1,
- "wysiwyg-text-align-left": 1,
- "wysiwyg-text-align-right": 1
- },
- "type_definitions": {
- "visible_content_object": {
- "methods": {
- "has_visible_contet": 1
- }
- },
- "alignment_object": {
- "classes": {
- "wysiwyg-text-align-center": 1,
- "wysiwyg-text-align-justify": 1,
- "wysiwyg-text-align-left": 1,
- "wysiwyg-text-align-right": 1,
- "wysiwyg-float-left": 1,
- "wysiwyg-float-right": 1
- },
- "styles": {
- "float": ["left", "right"],
- "text-align": ["left", "right", "center", "justify"]
- }
- },
- "valid_image_src": {
- "attrs": {
- "src": /^[^data\:]/i
- }
- },
- "text_color_object": {
- "styles": {
- "color": true,
- "background-color": true
- }
- },
- "text_fontfamily_object": {
- "styles": {
- "font-family": true
- }
- },
- "text_fontsize_object": {
- "styles": {
- "font-size": true
- }
- },
- "text_formatting_object": {
- "classes": {
- "wysiwyg-color-aqua": 1,
- "wysiwyg-color-black": 1,
- "wysiwyg-color-blue": 1,
- "wysiwyg-color-fuchsia": 1,
- "wysiwyg-color-gray": 1,
- "wysiwyg-color-green": 1,
- "wysiwyg-color-lime": 1,
- "wysiwyg-color-maroon": 1,
- "wysiwyg-color-navy": 1,
- "wysiwyg-color-olive": 1,
- "wysiwyg-color-purple": 1,
- "wysiwyg-color-red": 1,
- "wysiwyg-color-silver": 1,
- "wysiwyg-color-teal": 1,
- "wysiwyg-color-white": 1,
- "wysiwyg-color-yellow": 1,
- "wysiwyg-font-size-large": 1,
- "wysiwyg-font-size-larger": 1,
- "wysiwyg-font-size-medium": 1,
- "wysiwyg-font-size-small": 1,
- "wysiwyg-font-size-smaller": 1,
- "wysiwyg-font-size-x-large": 1,
- "wysiwyg-font-size-x-small": 1,
- "wysiwyg-font-size-xx-large": 1,
- "wysiwyg-font-size-xx-small": 1
- }
- }
- },
- "comments": 1, // if set allows comments to pass
- /**
- * Tag list
- *
- * The following options are available:
- *
- * - add_class: converts and deletes the given HTML4 attribute (align, clear, ...) via the given method to a css class
- * The following methods are implemented in wysihtml5.dom.parse:
- * - align_text: converts align attribute values (right/left/center/justify) to their corresponding css class "wysiwyg-text-align-*")
- * <p align="center">foo</p> ... becomes ... <p class="wysiwyg-text-align-center">foo</p>
- * - clear_br: converts clear attribute values left/right/all/both to their corresponding css class "wysiwyg-clear-*"
- * <br clear="all"> ... becomes ... <br class="wysiwyg-clear-both">
- * - align_img: converts align attribute values (right/left) on <img> to their corresponding css class "wysiwyg-float-*"
- *
- * - add_style: converts and deletes the given HTML4 attribute (align) via the given method to a css style
- * The following methods are implemented in wysihtml5.dom.parse:
- * - align_text: converts align attribute values (right/left/center) to their corresponding css style)
- * <p align="center">foo</p> ... becomes ... <p style="text-align:center">foo</p>
- *
- * - remove: removes the element and its content
- *
- * - unwrap removes element but leaves content
- *
- * - rename_tag: renames the element to the given tag
- *
- * - set_class: adds the given class to the element (note: make sure that the class is in the "classes" white list above)
- *
- * - set_attributes: sets/overrides the given attributes
- *
- * - check_attributes: checks the given HTML attribute via the given method
- * - url: allows only valid urls (starting with http:// or https://)
- * - src: allows something like "/foobar.jpg", "http://google.com", ...
- * - href: allows something like "mailto:bert@foo.com", "http://google.com", "/foobar.jpg"
- * - alt: strips unwanted characters. if the attribute is not set, then it gets set (to ensure valid and compatible HTML)
- * - numbers: ensures that the attribute only contains numeric characters
- * - any: allows anything to pass
- */
- "tags": {
- "tr": {
- "add_class": {
- "align": "align_text"
- }
- },
- "strike": {
- "unwrap": 1
- },
- "form": {
- "unwrap": 1
- },
- "rt": {
- "rename_tag": "span"
- },
- "code": {},
- "acronym": {
- "rename_tag": "span"
- },
- "br": {
- "add_class": {
- "clear": "clear_br"
- }
- },
- "details": {
- "unwrap": 1
- },
- "h4": {
- "add_class": {
- "align": "align_text"
- }
- },
- "em": {},
- "title": {
- "remove": 1
- },
- "multicol": {
- "unwrap": 1
- },
- "figure": {
- "unwrap": 1
- },
- "xmp": {
- "unwrap": 1
- },
- "small": {
- "rename_tag": "span",
- "set_class": "wysiwyg-font-size-smaller"
- },
- "area": {
- "remove": 1
- },
- "time": {
- "unwrap": 1
- },
- "dir": {
- "rename_tag": "ul"
- },
- "bdi": {
- "unwrap": 1
- },
- "command": {
- "unwrap": 1
- },
- "ul": {
- "keep_styles": {
- "textAlign": 1,
- "float": 1,
- "font-family":1,
- "font-size":1,
- "color":1
- }
- },
- "progress": {
- "rename_tag": "span"
- },
- "dfn": {
- "unwrap": 1
- },
- "iframe": {
- "remove": 1
- },
- "figcaption": {
- "unwrap": 1
- },
- "a": {
- "check_attributes": {
- "href": "any", // if you compiled master manually then change this from 'url' to 'href'
- "target": "any"
- },
- /*
- "set_attributes": {
- "rel": "nofollow"
- },
- */
- "keep_styles": {
- "textAlign": 1,
- "float": 1,
- "font-family":1,
- "font-size":1,
- "color":1
- }
- },
- "img": {
- "one_of_type": {
- "valid_image_src": 1
- },
- "check_attributes": {
- "width": "numbers",
- "alt": "alt",
- "src": "src", // if you compiled master manually then change this from 'url' to 'src'
- "height": "numbers"
- },
- "add_class": {
- "align": "align_img"
- }
- },
- "rb": {
- "unwrap": 1
- },
- "footer": {
- "rename_tag": "div"
- },
- "noframes": {
- "remove": 1
- },
- "abbr": {
- "unwrap": 1
- },
- "u": {
- "keep_styles": {
- "textAlign": 1,
- "float": 1,
- "font-family":1,
- "font-size":1,
- "color":1
- }
- },
- "bgsound": {
- "remove": 1
- },
- "sup": {
- "unwrap": 1
- },
- "address": {
- "unwrap": 1
- },
- "basefont": {
- "remove": 1
- },
- "nav": {
- "unwrap": 1
- },
- "h1": {
- "add_class": {
- "align": "align_text"
- }
- },
- "head": {
- "unwrap": 1
- },
- "tbody": {
- "add_class": {
- "align": "align_text"
- }
- },
- "dd": {
- "unwrap": 1
- },
- "s": {
- "unwrap": 1
- },
- "li": {
- "keep_styles": {
- "textAlign": 1,
- "float": 1,
- "font-family":1,
- "font-size":1,
- "color":1,
- "fontFamily": 1
- }
- },
- "td": {
- "check_attributes": {
- "rowspan": "numbers",
- "colspan": "numbers",
- "valign": "any",
- "align": "any"
- },
- "add_class": {
- "align": "align_text"
- }
- },
- "object": {
- "remove": 1
- },
- "div": {
- "one_of_type": {
- "visible_content_object": 1
- },
- "remove_action": "unwrap",
- "keep_styles": {
- "textAlign": 1,
- "float": 1,
- "font-family":1
- },
- "add_class": {
- "align": "align_text"
- }
- },
- "option": {
- "remove":1
- },
- "select": {
- "remove":1
- },
- "i": {},
- "track": {
- "remove": 1
- },
- "wbr": {
- "remove": 1
- },
- "fieldset": {
- "unwrap": 1
- },
- "big": {
- "rename_tag": "span",
- "set_class": "wysiwyg-font-size-larger"
- },
- "button": {
- "unwrap": 1
- },
- "noscript": {
- "remove": 1
- },
- "svg": {
- "remove": 1
- },
- "input": {
- "remove": 1
- },
- "table": {},
- "keygen": {
- "remove": 1
- },
- "h5": {
- "add_class": {
- "align": "align_text"
- }
- },
- "meta": {
- "remove": 1
- },
- "map": {
- "remove": 1
- },
- "isindex": {
- "remove": 1
- },
- "mark": {
- "unwrap": 1
- },
- "caption": {
- "add_class": {
- "align": "align_text"
- }
- },
- "tfoot": {
- "add_class": {
- "align": "align_text"
- }
- },
- "base": {
- "remove": 1
- },
- "video": {
- "remove": 1
- },
- "strong": {},
- "canvas": {
- "remove": 1
- },
- "output": {
- "unwrap": 1
- },
- "marquee": {
- "unwrap": 1
- },
- "b": {},
- "q": {
- "check_attributes": {
- "cite": "url"
- }
- },
- "applet": {
- "remove": 1
- },
- "span": {
- /*"one_of_type": {
- "text_formatting_object": 1,
- "text_color_object": 1,
- "text_fontsize_object": 1
- },*/
- "keep_styles": {
- "color": 1,
- "backgroundColor": 1,
- "fontSize": 1,
- "fontFamily": 1,
- "font-family": 1
- },
- "remove_action": "unwrap"
- },
- "rp": {
- "unwrap": 1
- },
- "spacer": {
- "remove": 1
- },
- "source": {
- "remove": 1
- },
- "aside": {
- "rename_tag": "div"
- },
- "frame": {
- "remove": 1
- },
- "section": {
- "rename_tag": "div"
- },
- "body": {
- "unwrap": 1
- },
- "ol": {
- "keep_styles": {
- "textAlign": 1,
- "float": 1,
- "font-family":1,
- "font-size":1,
- "color":1
- }
- },
- "nobr": {
- "unwrap": 1
- },
- "html": {
- "unwrap": 1
- },
- "summary": {
- "unwrap": 1
- },
- "var": {
- "unwrap": 1
- },
- "del": {
- "unwrap": 1
- },
- "blockquote": {
- "check_attributes": {
- "cite": "url"
- }
- },
- "style": {
- "remove": 1
- },
- "device": {
- "remove": 1
- },
- "meter": {
- "unwrap": 1
- },
- "h3": {
- "add_class": {
- "align": "align_text"
- }
- },
- "textarea": {
- "unwrap": 1
- },
- "embed": {
- "remove": 1
- },
- "hgroup": {
- "unwrap": 1
- },
- "font": {
- "rename_tag": "span",
- "add_class": {
- "size": "size_font"
- }
- },
- "tt": {
- "unwrap": 1
- },
- "noembed": {
- "remove": 1
- },
- "thead": {
- "add_class": {
- "align": "align_text"
- }
- },
- "blink": {
- "unwrap": 1
- },
- "plaintext": {
- "unwrap": 1
- },
- "xml": {
- "remove": 1
- },
- "h6": {
- "add_class": {
- "align": "align_text"
- }
- },
- "param": {
- "remove": 1
- },
- "th": {
- "check_attributes": {
- "rowspan": "numbers",
- "colspan": "numbers"
- },
- "add_class": {
- "align": "align_text"
- }
- },
- "legend": {
- "unwrap": 1
- },
- "hr": {},
- "label": {
- "unwrap": 1
- },
- "dl": {
- "unwrap": 1
- },
- "kbd": {
- "unwrap": 1
- },
- "listing": {
- "unwrap": 1
- },
- "dt": {
- "unwrap": 1
- },
- "nextid": {
- "remove": 1
- },
- "pre": {},
- "center": {
- "rename_tag": "div",
- "set_class": "wysiwyg-text-align-center"
- },
- "audio": {
- "remove": 1
- },
- "datalist": {
- "unwrap": 1
- },
- "samp": {
- "unwrap": 1
- },
- "col": {
- "remove": 1
- },
- "article": {
- "rename_tag": "div"
- },
- "cite": {},
- "link": {
- "remove": 1
- },
- "script": {
- "remove": 1
- },
- "bdo": {
- "unwrap": 1
- },
- "menu": {
- "rename_tag": "ul"
- },
- "colgroup": {
- "remove": 1
- },
- "ruby": {
- "unwrap": 1
- },
- "h2": {
- "add_class": {
- "align": "align_text"
- }
- },
- "ins": {
- "unwrap": 1
- },
- "p": {
- "add_class": {
- "align": "align_text"
- },
- "keep_styles": {
- "textAlign": 1,
- "float": 1,
- "fontSize": 1,
- "fontFamily": 1,
- "color": 1
- }
- },
- "sub": {
- "unwrap": 1
- },
- "comment": {
- "remove": 1
- },
- "frameset": {
- "remove": 1
- },
- "optgroup": {
- "unwrap": 1
- },
- "header": {
- "rename_tag": "div"
- }
- }
- };
|