bsw/jbe@1309: /**
bsw/jbe@1309: * Full HTML5 compatibility rule set
bsw/jbe@1309: * These rules define which tags and CSS classes are supported and which tags should be specially treated.
bsw/jbe@1309: *
bsw/jbe@1309: * Examples based on this rule set:
bsw/jbe@1309: *
bsw/jbe@1309: * foo
bsw/jbe@1309: * ... becomes ...
bsw/jbe@1309: * foo
bsw/jbe@1309: *
bsw/jbe@1309: *
bsw/jbe@1309: * ... becomes ...
bsw/jbe@1309: *
bsw/jbe@1309: *
bsw/jbe@1309: *
foo
... becomes ...foo
bsw/jbe@1309: * - clear_br: converts clear attribute values left/right/all/both to their corresponding css class "wysiwyg-clear-*" bsw/jbe@1309: *foo
... becomes ...foo
bsw/jbe@1309: * bsw/jbe@1309: * - remove: removes the element and its content bsw/jbe@1309: * bsw/jbe@1309: * - unwrap removes element but leaves content bsw/jbe@1309: * bsw/jbe@1309: * - rename_tag: renames the element to the given tag bsw/jbe@1309: * bsw/jbe@1309: * - set_class: adds the given class to the element (note: make sure that the class is in the "classes" white list above) bsw/jbe@1309: * bsw/jbe@1309: * - set_attributes: sets/overrides the given attributes bsw/jbe@1309: * bsw/jbe@1309: * - check_attributes: checks the given HTML attribute via the given method bsw/jbe@1309: * - url: allows only valid urls (starting with http:// or https://) bsw/jbe@1309: * - src: allows something like "/foobar.jpg", "http://google.com", ... bsw/jbe@1309: * - href: allows something like "mailto:bert@foo.com", "http://google.com", "/foobar.jpg" bsw/jbe@1309: * - alt: strips unwanted characters. if the attribute is not set, then it gets set (to ensure valid and compatible HTML) bsw/jbe@1309: * - numbers: ensures that the attribute only contains numeric (integer) characters (no float values or units) bsw/jbe@1309: * - dimension: for with/height attributes where floating point numbrs and percentages are allowed bsw/jbe@1309: * - any: allows anything to pass bsw/jbe@1309: */ bsw/jbe@1309: "tags": { bsw/jbe@1309: "tr": { bsw/jbe@1309: "add_class": { bsw/jbe@1309: "align": "align_text" bsw/jbe@1309: } bsw/jbe@1309: }, bsw/jbe@1309: "strike": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "form": { bsw/jbe@1309: "rename_tag": "div" bsw/jbe@1309: }, bsw/jbe@1309: "rt": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "code": {}, bsw/jbe@1309: "acronym": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "br": { bsw/jbe@1309: "add_class": { bsw/jbe@1309: "clear": "clear_br" bsw/jbe@1309: } bsw/jbe@1309: }, bsw/jbe@1309: "details": { bsw/jbe@1309: "rename_tag": "div" bsw/jbe@1309: }, bsw/jbe@1309: "h4": { bsw/jbe@1309: "add_class": { bsw/jbe@1309: "align": "align_text" bsw/jbe@1309: } bsw/jbe@1309: }, bsw/jbe@1309: "em": {}, bsw/jbe@1309: "title": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "multicol": { bsw/jbe@1309: "rename_tag": "div" bsw/jbe@1309: }, bsw/jbe@1309: "figure": { bsw/jbe@1309: "rename_tag": "div" bsw/jbe@1309: }, bsw/jbe@1309: "xmp": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "small": { bsw/jbe@1309: "rename_tag": "span", bsw/jbe@1309: "set_class": "wysiwyg-font-size-smaller" bsw/jbe@1309: }, bsw/jbe@1309: "area": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "time": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "dir": { bsw/jbe@1309: "rename_tag": "ul" bsw/jbe@1309: }, bsw/jbe@1309: "bdi": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "command": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "ul": {}, bsw/jbe@1309: "progress": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "dfn": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "iframe": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "figcaption": { bsw/jbe@1309: "rename_tag": "div" bsw/jbe@1309: }, bsw/jbe@1309: "a": { bsw/jbe@1309: "check_attributes": { bsw/jbe@1309: "target": "any", bsw/jbe@1309: "href": "url" // if you compiled master manually then change this from 'url' to 'href' bsw/jbe@1309: }, bsw/jbe@1309: "set_attributes": { bsw/jbe@1309: "rel": "nofollow" bsw/jbe@1309: } bsw/jbe@1309: }, bsw/jbe@1309: "img": { bsw/jbe@1309: "check_attributes": { bsw/jbe@1309: "width": "dimension", bsw/jbe@1309: "alt": "alt", bsw/jbe@1309: "src": "url", // if you compiled master manually then change this from 'url' to 'src' bsw/jbe@1309: "height": "dimension" bsw/jbe@1309: }, bsw/jbe@1309: "add_class": { bsw/jbe@1309: "align": "align_img" bsw/jbe@1309: } bsw/jbe@1309: }, bsw/jbe@1309: "rb": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "footer": { bsw/jbe@1309: "rename_tag": "div" bsw/jbe@1309: }, bsw/jbe@1309: "noframes": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "abbr": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "u": {}, bsw/jbe@1309: "bgsound": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "address": { bsw/jbe@1309: "rename_tag": "div" bsw/jbe@1309: }, bsw/jbe@1309: "basefont": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "nav": { bsw/jbe@1309: "rename_tag": "div" bsw/jbe@1309: }, bsw/jbe@1309: "h1": { bsw/jbe@1309: "add_class": { bsw/jbe@1309: "align": "align_text" bsw/jbe@1309: } bsw/jbe@1309: }, bsw/jbe@1309: "head": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "tbody": { bsw/jbe@1309: "add_class": { bsw/jbe@1309: "align": "align_text" bsw/jbe@1309: } bsw/jbe@1309: }, bsw/jbe@1309: "dd": { bsw/jbe@1309: "rename_tag": "div" bsw/jbe@1309: }, bsw/jbe@1309: "s": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "li": {}, bsw/jbe@1309: "td": { bsw/jbe@1309: "check_attributes": { bsw/jbe@1309: "rowspan": "numbers", bsw/jbe@1309: "colspan": "numbers" bsw/jbe@1309: }, bsw/jbe@1309: "add_class": { bsw/jbe@1309: "align": "align_text" bsw/jbe@1309: } bsw/jbe@1309: }, bsw/jbe@1309: "object": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "div": { bsw/jbe@1309: "add_class": { bsw/jbe@1309: "align": "align_text" bsw/jbe@1309: } bsw/jbe@1309: }, bsw/jbe@1309: "option": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "select": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "i": {}, bsw/jbe@1309: "track": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "wbr": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "fieldset": { bsw/jbe@1309: "rename_tag": "div" bsw/jbe@1309: }, bsw/jbe@1309: "big": { bsw/jbe@1309: "rename_tag": "span", bsw/jbe@1309: "set_class": "wysiwyg-font-size-larger" bsw/jbe@1309: }, bsw/jbe@1309: "button": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "noscript": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "svg": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "input": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "table": {}, bsw/jbe@1309: "keygen": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "h5": { bsw/jbe@1309: "add_class": { bsw/jbe@1309: "align": "align_text" bsw/jbe@1309: } bsw/jbe@1309: }, bsw/jbe@1309: "meta": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "map": { bsw/jbe@1309: "rename_tag": "div" bsw/jbe@1309: }, bsw/jbe@1309: "isindex": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "mark": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "caption": { bsw/jbe@1309: "add_class": { bsw/jbe@1309: "align": "align_text" bsw/jbe@1309: } bsw/jbe@1309: }, bsw/jbe@1309: "tfoot": { bsw/jbe@1309: "add_class": { bsw/jbe@1309: "align": "align_text" bsw/jbe@1309: } bsw/jbe@1309: }, bsw/jbe@1309: "base": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "video": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "strong": {}, bsw/jbe@1309: "canvas": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "output": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "marquee": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "b": {}, bsw/jbe@1309: "q": { bsw/jbe@1309: "check_attributes": { bsw/jbe@1309: "cite": "url" bsw/jbe@1309: } bsw/jbe@1309: }, bsw/jbe@1309: "applet": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "span": {}, bsw/jbe@1309: "rp": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "spacer": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "source": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "aside": { bsw/jbe@1309: "rename_tag": "div" bsw/jbe@1309: }, bsw/jbe@1309: "frame": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "section": { bsw/jbe@1309: "rename_tag": "div" bsw/jbe@1309: }, bsw/jbe@1309: "body": { bsw/jbe@1309: "rename_tag": "div" bsw/jbe@1309: }, bsw/jbe@1309: "ol": {}, bsw/jbe@1309: "nobr": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "html": { bsw/jbe@1309: "rename_tag": "div" bsw/jbe@1309: }, bsw/jbe@1309: "summary": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "var": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "del": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "blockquote": { bsw/jbe@1309: "check_attributes": { bsw/jbe@1309: "cite": "url" bsw/jbe@1309: } bsw/jbe@1309: }, bsw/jbe@1309: "style": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "device": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "meter": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "h3": { bsw/jbe@1309: "add_class": { bsw/jbe@1309: "align": "align_text" bsw/jbe@1309: } bsw/jbe@1309: }, bsw/jbe@1309: "textarea": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "embed": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "hgroup": { bsw/jbe@1309: "rename_tag": "div" bsw/jbe@1309: }, bsw/jbe@1309: "font": { bsw/jbe@1309: "rename_tag": "span", bsw/jbe@1309: "add_class": { bsw/jbe@1309: "size": "size_font" bsw/jbe@1309: } bsw/jbe@1309: }, bsw/jbe@1309: "tt": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "noembed": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "thead": { bsw/jbe@1309: "add_class": { bsw/jbe@1309: "align": "align_text" bsw/jbe@1309: } bsw/jbe@1309: }, bsw/jbe@1309: "blink": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "plaintext": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "xml": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "h6": { bsw/jbe@1309: "add_class": { bsw/jbe@1309: "align": "align_text" bsw/jbe@1309: } bsw/jbe@1309: }, bsw/jbe@1309: "param": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "th": { bsw/jbe@1309: "check_attributes": { bsw/jbe@1309: "rowspan": "numbers", bsw/jbe@1309: "colspan": "numbers" bsw/jbe@1309: }, bsw/jbe@1309: "add_class": { bsw/jbe@1309: "align": "align_text" bsw/jbe@1309: } bsw/jbe@1309: }, bsw/jbe@1309: "legend": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "hr": {}, bsw/jbe@1309: "label": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "dl": { bsw/jbe@1309: "rename_tag": "div" bsw/jbe@1309: }, bsw/jbe@1309: "kbd": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "listing": { bsw/jbe@1309: "rename_tag": "div" bsw/jbe@1309: }, bsw/jbe@1309: "dt": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "nextid": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "pre": {}, bsw/jbe@1309: "center": { bsw/jbe@1309: "rename_tag": "div", bsw/jbe@1309: "set_class": "wysiwyg-text-align-center" bsw/jbe@1309: }, bsw/jbe@1309: "audio": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "datalist": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "samp": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "col": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "article": { bsw/jbe@1309: "rename_tag": "div" bsw/jbe@1309: }, bsw/jbe@1309: "cite": {}, bsw/jbe@1309: "link": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "script": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "bdo": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "menu": { bsw/jbe@1309: "rename_tag": "ul" bsw/jbe@1309: }, bsw/jbe@1309: "colgroup": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "ruby": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "h2": { bsw/jbe@1309: "add_class": { bsw/jbe@1309: "align": "align_text" bsw/jbe@1309: } bsw/jbe@1309: }, bsw/jbe@1309: "ins": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "p": { bsw/jbe@1309: "add_class": { bsw/jbe@1309: "align": "align_text" bsw/jbe@1309: } bsw/jbe@1309: }, bsw/jbe@1309: "sub": {}, bsw/jbe@1309: "comment": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "frameset": { bsw/jbe@1309: "remove": 1 bsw/jbe@1309: }, bsw/jbe@1309: "optgroup": { bsw/jbe@1309: "rename_tag": "span" bsw/jbe@1309: }, bsw/jbe@1309: "header": { bsw/jbe@1309: "rename_tag": "div" bsw/jbe@1309: }, bsw/jbe@1309: "sup": {} bsw/jbe@1309: } bsw/jbe@1309: };