| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 | <?phpclass HTMLPurifier_HTMLModule_Tidy_XHTMLAndHTML4 extends HTMLPurifier_HTMLModule_Tidy{    /**     * @return array     */    public function makeFixes()    {        $r = array();        // == deprecated tag transforms ===================================        $r['font'] = new HTMLPurifier_TagTransform_Font();        $r['menu'] = new HTMLPurifier_TagTransform_Simple('ul');        $r['dir'] = new HTMLPurifier_TagTransform_Simple('ul');        $r['center'] = new HTMLPurifier_TagTransform_Simple('div', 'text-align:center;');        $r['u'] = new HTMLPurifier_TagTransform_Simple('span', 'text-decoration:underline;');        $r['s'] = new HTMLPurifier_TagTransform_Simple('span', 'text-decoration:line-through;');        $r['strike'] = new HTMLPurifier_TagTransform_Simple('span', 'text-decoration:line-through;');        // == deprecated attribute transforms =============================        $r['caption@align'] =            new HTMLPurifier_AttrTransform_EnumToCSS(                'align',                array(                    // we're following IE's behavior, not Firefox's, due                    // to the fact that no one supports caption-side:right,                    // W3C included (with CSS 2.1). This is a slightly                    // unreasonable attribute!                    'left' => 'text-align:left;',                    'right' => 'text-align:right;',                    'top' => 'caption-side:top;',                    'bottom' => 'caption-side:bottom;' // not supported by IE                )            );        // @align for img -------------------------------------------------        $r['img@align'] =            new HTMLPurifier_AttrTransform_EnumToCSS(                'align',                array(                    'left' => 'float:left;',                    'right' => 'float:right;',                    'top' => 'vertical-align:top;',                    'middle' => 'vertical-align:middle;',                    'bottom' => 'vertical-align:baseline;',                )            );        // @align for table -----------------------------------------------        $r['table@align'] =            new HTMLPurifier_AttrTransform_EnumToCSS(                'align',                array(                    'left' => 'float:left;',                    'center' => 'margin-left:auto;margin-right:auto;',                    'right' => 'float:right;'                )            );        // @align for hr -----------------------------------------------        $r['hr@align'] =            new HTMLPurifier_AttrTransform_EnumToCSS(                'align',                array(                    // we use both text-align and margin because these work                    // for different browsers (IE and Firefox, respectively)                    // and the melange makes for a pretty cross-compatible                    // solution                    'left' => 'margin-left:0;margin-right:auto;text-align:left;',                    'center' => 'margin-left:auto;margin-right:auto;text-align:center;',                    'right' => 'margin-left:auto;margin-right:0;text-align:right;'                )            );        // @align for h1, h2, h3, h4, h5, h6, p, div ----------------------        // {{{        $align_lookup = array();        $align_values = array('left', 'right', 'center', 'justify');        foreach ($align_values as $v) {            $align_lookup[$v] = "text-align:$v;";        }        // }}}        $r['h1@align'] =        $r['h2@align'] =        $r['h3@align'] =        $r['h4@align'] =        $r['h5@align'] =        $r['h6@align'] =        $r['p@align'] =        $r['div@align'] =            new HTMLPurifier_AttrTransform_EnumToCSS('align', $align_lookup);        // @bgcolor for table, tr, td, th ---------------------------------        $r['table@bgcolor'] =        $r['tr@bgcolor'] =        $r['td@bgcolor'] =        $r['th@bgcolor'] =            new HTMLPurifier_AttrTransform_BgColor();        // @border for img ------------------------------------------------        $r['img@border'] = new HTMLPurifier_AttrTransform_Border();        // @clear for br --------------------------------------------------        $r['br@clear'] =            new HTMLPurifier_AttrTransform_EnumToCSS(                'clear',                array(                    'left' => 'clear:left;',                    'right' => 'clear:right;',                    'all' => 'clear:both;',                    'none' => 'clear:none;',                )            );        // @height for td, th ---------------------------------------------        $r['td@height'] =        $r['th@height'] =            new HTMLPurifier_AttrTransform_Length('height');        // @hspace for img ------------------------------------------------        $r['img@hspace'] = new HTMLPurifier_AttrTransform_ImgSpace('hspace');        // @noshade for hr ------------------------------------------------        // this transformation is not precise but often good enough.        // different browsers use different styles to designate noshade        $r['hr@noshade'] =            new HTMLPurifier_AttrTransform_BoolToCSS(                'noshade',                'color:#808080;background-color:#808080;border:0;'            );        // @nowrap for td, th ---------------------------------------------        $r['td@nowrap'] =        $r['th@nowrap'] =            new HTMLPurifier_AttrTransform_BoolToCSS(                'nowrap',                'white-space:nowrap;'            );        // @size for hr  --------------------------------------------------        $r['hr@size'] = new HTMLPurifier_AttrTransform_Length('size', 'height');        // @type for li, ol, ul -------------------------------------------        // {{{        $ul_types = array(            'disc' => 'list-style-type:disc;',            'square' => 'list-style-type:square;',            'circle' => 'list-style-type:circle;'        );        $ol_types = array(            '1' => 'list-style-type:decimal;',            'i' => 'list-style-type:lower-roman;',            'I' => 'list-style-type:upper-roman;',            'a' => 'list-style-type:lower-alpha;',            'A' => 'list-style-type:upper-alpha;'        );        $li_types = $ul_types + $ol_types;        // }}}        $r['ul@type'] = new HTMLPurifier_AttrTransform_EnumToCSS('type', $ul_types);        $r['ol@type'] = new HTMLPurifier_AttrTransform_EnumToCSS('type', $ol_types, true);        $r['li@type'] = new HTMLPurifier_AttrTransform_EnumToCSS('type', $li_types, true);        // @vspace for img ------------------------------------------------        $r['img@vspace'] = new HTMLPurifier_AttrTransform_ImgSpace('vspace');        // @width for table, hr, td, th, col ------------------------------------------        $r['table@width'] =        $r['td@width'] =        $r['th@width'] =        $r['col@width'] =        $r['hr@width'] = new HTMLPurifier_AttrTransform_Length('width');        return $r;    }}// vim: et sw=4 sts=4
 |