[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3master/var/www/se3/includes/library/HTMLPurifier/HTMLModule/Tidy/ -> XHTMLAndHTML4.php (source)

   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


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1