Changeset 88968 in spip-zone


Ignore:
Timestamp:
May 2, 2015, 4:41:47 PM (5 years ago)
Author:
real3t@…
Message:

Version 0.4

Location:
_libs_/html2spip
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _libs_/html2spip/HTML2SPIPEngine.class

    r88967 r88968  
    4646
    4747  # Main substitution rules
    48   protected $attributeOuterSubstitute = array(
    49   );
     48  # protected $attributeOuterSubstitute = array(
     49  # );
    5050
    5151  protected $attributeInnerSubstitute = array(
     
    6565    'style'         => null,
    6666
    67     'div'           => null, #array('_div', '_div', array('id', 'class', 'style',
    68                              # 'align')),
     67    'script'        => array('_identityS', '_identityE', array('type')),
     68    'embed'         => array('_identityS', '_identityE', null),
     69    'param'         => array('_identityS', '_identityE', null),
     70    'object'        => array('_identityS', '_identityE', null),
     71
     72    'div'           => array('_div', '_div', array('class', 'style', 'align')),
    6973
    7074    'h1'            => array('_hiS', '_hiE', array('class')),
     
    122126    'del'           => array('_delS', '_delE', array()),
    123127
    124     'a'             => array('_a', '_a', array(
    125                         'title', 'href', 'target', 'style', 'name',
     128    'a'             => array('_aS', '_aE', array(
     129                        'title', 'href', 'target', 'style', 'name', 'class',
     130                        'rel'
    126131                       )),
    127132    'img'           => array('_imgS', '', array(
     
    184189  }
    185190
    186   # protected function _div($tag, $attributes, $text, $part) {
    187   #   if (!strlen(trim($text)))
    188   #     return '';
    189 
    190   #   return $this->getJustification($attributes, $part);
    191   # }
     191  protected function _div($tag, $attributes, $text, $part) {
     192    if (!strlen(trim($text)))
     193      return;
     194
     195    if (array_key_exists('class', $attributes)
     196        && (preg_match('/\btexteencadre-spip\b/', $attributes['class']))
     197        && (preg_match('/\bspip\b/', $attributes['class']))) {
     198        $chunk = '_divtextencadre';
     199        switch ($part) {
     200          case TAG_START:
     201            $this->openChunk($chunk);
     202            return;
     203
     204          case TAG_END:
     205            $this->closeChunk($chunk);
     206            $data = $this->readChunk($chunk);
     207            $this->deleteChunk($chunk);
     208            return $this->tag2typo['p'] . '[(' . trim($data) . ')]';
     209      }
     210    }
     211  }
    192212
    193213  protected function _hiS($tag, $attributes, $text) {
     
    195215
    196216    if (!strlen(trim($text)))
    197       return '';
     217      return;
    198218
    199219    if ($this->headingDepthHTML != null) {
     
    229249
    230250    if (!strlen(trim($text)))
    231       return '';
     251      return;
    232252
    233253    $this->push('}}}');
     
    245265  protected function _p($tag, $attributes, $text, $part) {
    246266    if (!strlen(trim($text)))
    247       return '';
     267      return;
    248268
    249269    return (($part == TAG_START) ? $this->tag2typo[$tag] : '');
    250     #         . $this->getJustification($attributes, $part);
    251270  }
    252271
     
    261280      return "\n";
    262281
    263     return '';
     282    return;
    264283  }
    265284
     
    270289  protected function _ulOrOlS($tag, $attributes, $text) {
    271290    if (!strlen(trim($text)))
    272       return '';
     291      return;
    273292
    274293    array_unshift($this->listType, $tag);
     
    278297  protected function _ulOrOlE($tag, $attributes, $text) {
    279298    if (!strlen(trim($text)))
    280       return '';
     299      return;
    281300
    282301    array_shift($this->listType);
     
    289308  protected function _li($tag, $attributes, $text, $part) {
    290309    if (!strlen(trim($text)))
    291       return '';
     310      return;
    292311
    293312    if ($part == TAG_END)
     
    347366  protected function _captionS($tag, $attributes, $text) {
    348367    if (!strlen(trim($text)))
    349       return '';
     368      return;
    350369
    351370    return "\n|| ";
     
    354373  protected function _captionE($tag, $attributes, $text) {
    355374    if (!strlen(trim($text)))
    356       return '';
     375      return;
    357376
    358377    return ' | ' . $this->popTableSummary() . ' ||';
     
    374393  protected function _trE() {
    375394    $this->popWithin('_tr');
    376 
    377     return '';
    378395  }
    379396
     
    454471  protected function _codeS($tag, $attributes, $text) {
    455472    if (!strlen(trim($text)))
    456       return '';
     473      return;
    457474
    458475    return ' <code>';
     
    461478  protected function _codeE($tag, $attributes, $text) {
    462479    if (!strlen(trim($text)))
    463       return '';
     480      return;
    464481
    465482    return '</code> ';
     
    468485  protected function _cadreS($tag, $attributes, $text) {
    469486    if (!strlen(trim($text)))
    470       return '';
     487      return;
    471488
    472489    return ' <cadre>';
     
    475492  protected function _cadreE($tag, $attributes, $text) {
    476493    if (!strlen(trim($text)))
    477       return '';
     494      return;
    478495
    479496    return '</cadre> ';
     
    482499  protected function _quoteS($tag, $attributes, $text) {
    483500    if (!strlen(trim($text)))
    484       return '';
     501      return;
    485502
    486503    if (array_key_exists('class', $attributes))
     
    493510  protected function _quoteE($tag, $attributes, $text) {
    494511    if (!strlen(trim($text)))
    495       return '';
     512      return;
    496513
    497514    if (array_key_exists('class', $attributes))
     
    504521  protected function _strongS($tag, $attributes, $text) {
    505522    if (!strlen(trim($text)))
    506       return '';
     523      return;
    507524
    508525    if (array_key_exists('class', $attributes))
     
    515532  protected function _strongE($tag, $attributes, $text) {
    516533    if (!strlen(trim($text)))
    517       return '';
     534      return;
    518535
    519536    if (array_key_exists('class', $attributes))
     
    526543  protected function _emS($tag, $attributes, $text) {
    527544    if (!strlen(trim($text)))
    528       return '';
     545      return;
    529546
    530547    return ' {';
     
    533550  protected function _emE($tag, $attributes, $text) {
    534551    if (!strlen(trim($text)))
    535       return '';
     552      return;
    536553
    537554    return '} ';
     
    540557  protected function _supS($tag, $attributes, $text) {
    541558    if (!strlen(trim($text)))
    542       return '';
     559      return;
    543560
    544561    return '<sup>';
     
    547564  protected function _supE($tag, $attributes, $text) {
    548565    if (!strlen(trim($text)))
    549       return '';
     566      return;
    550567
    551568    return '</sup>';
     
    554571  protected function _subS($tag, $attributes, $text) {
    555572    if (!strlen(trim($text)))
    556       return '';
     573      return;
    557574
    558575    return '<sub>';
     
    561578  protected function _subE($tag, $attributes, $text) {
    562579    if (!strlen(trim($text)))
    563       return '';
     580      return;
    564581
    565582    return '</sub>';
     
    568585  protected function _delS($tag, $attributes, $text) {
    569586    if (!strlen(trim($text)))
    570       return '';
     587      return;
    571588
    572589    return '<del>';
     
    575592  protected function _delE($tag, $attributes, $text) {
    576593    if (!strlen(trim($text)))
    577       return '';
     594      return;
    578595
    579596    return '</del>';
     
    582599  protected function _spanS($tag, $attributes, $text) {
    583600    if (!strlen(trim($text)))
    584       return '';
     601      return;
    585602
    586603    if (!array_key_exists('class', $attributes))
    587       return '';
     604      return;
    588605
    589606    switch ($attributes['class']) {
     
    591608        if (!$this->within('_a'))
    592609          return ' [*';
    593 
    594       default:
    595         return '';
    596610    }
    597611  }
     
    599613  protected function _spanE($tag, $attributes, $text) {
    600614    if (!strlen(trim($text)))
    601       return '';
     615      return;
    602616
    603617    if (!array_key_exists('class', $attributes))
    604       return '';
     618      return;
    605619
    606620    switch ($attributes['class']) {
     
    608622        if (!$this->within('_a'))
    609623          return '*] ';
    610 
    611       default:
    612         return '';
    613     }
    614   }
    615 
    616   protected function _aInternal($href, $tag, $attributes, $text, $part) {
    617     if (!preg_match('|^.*\.([^./]+)$|', $href, $match))
    618       return $href;
    619 
    620     $ext = strtolower($match[1]);
    621     switch($ext) {
    622       case 'htm':
    623       case 'html':
    624         return $href;
    625 
    626       case 'pdf':
    627       case 'rtf':
    628       case 'flv':
    629       case 'mov':
    630         $type = 'document';
    631         break;
    632 
    633       case 'jpg':
    634         $type = 'image';
    635         break;
    636 
    637       default:
    638         $this->interrupt("Extension not configured: $ext");
    639     }
    640 
    641     switch ($href[0]) {
    642       case '/':
    643         $url = "http://" . $_SERVER['SERVER_NAME'] . $href;
    644         break;
    645 
    646         case '.':
    647       default:
    648         $this->interrupt("Unexpected URL: $href");
    649     }
    650 
    651     $id = spip_add_document(
    652       $url,
    653       0,
    654       0,
    655       $type,
    656       null,   # Auto-title !
    657       '',
    658       $this->spipImagesPath,
    659       $this->spipDBResource
    660     );
    661 
    662     $this->spipDocumentsIds[] = $id;
    663 
    664     return "$type$id";
    665   }
    666 
    667   protected function _a($tag, $attributes, $text, $part) {
    668     if ($part == TAG_START)
    669       $this->pushWithin('_a');
    670     elseif ($part == TAG_END)
    671       $this->popWithin('_a');
    672 
    673     if (array_key_exists('href', $attributes)) {
    674       $href = $attributes['href'];
    675       $href = preg_replace('|^https?://[^/]*|', '', $href);
    676     } else
    677       $href = false;
    678 
    679     if (array_key_exists('name', $attributes))
    680       $name = $attributes['name'];
    681     else
    682       $name = false;
    683 
    684     if (array_key_exists('title', $attributes))
    685       $title = $attributes['title'];
    686     else
    687       $title = false;
    688 
    689     if (strlen($name) && ($part == TAG_START))
    690       $data = "[$name<-]";
    691     else
    692       $data = '';
    693 
    694     if (preg_match('/^mailto:[A-Za-z0-9%+_.-]+@[A-Za-z0-9.-]+/', $href))
     624    }
     625  }
     626
     627  protected function _aS($tag, $attributes, $text) {
     628    $this->pushWithin('_a');
     629
     630    $name = (array_key_exists('name', $attributes))
     631            ? $attributes['name']
     632            : false;
     633
     634    $href = (array_key_exists('href', $attributes))
     635            ? $attributes['href']
     636            : false;
     637
     638    $has_title = (array_key_exists('title', $attributes))
     639            ? true
     640            : false;
     641
     642    $data = '';
     643
     644    if (strlen(trim($name)))
     645      $data .= "[$name<-]";
     646
     647    if (!strlen($text))
    695648      return $data;
    696649
    697     if (!strlen(trim($text)))
     650    if (!($has_title) && (preg_match('/^mailto:/', $href)))
    698651      return $data;
    699652
    700     if (!$title && !$href)
    701       return $data;
    702 
    703     if ($part == TAG_START)
    704       return $data. ' [';
    705 
    706     if (preg_match("%^(\.|/)%", $href))
    707       $href = $this->_aInternal($href, $tag, $attributes, $text, $part);
     653    return $data. ' [';
     654  }
     655
     656  protected function _aE($tag, $attributes, $text) {
     657    $this->popWithin('_a');
     658
     659    if (!strlen($text))
     660      return;
     661
     662    $href = (array_key_exists('href', $attributes))
     663            ? $attributes['href']
     664            : false;
     665
     666    $title = (array_key_exists('title', $attributes))
     667            ? $attributes['title']
     668            : false;
     669
     670    $data = '';
     671
     672    if (!($title) && (preg_match('/^mailto:/', $href)))
     673      return;
    708674
    709675    if ($title)
     
    712678    $data .= '->';
    713679
    714     if ($href)
     680    if (!(preg_match('/^mailto:/', $href)))
    715681      $data .= $href;
    716682
     
    726692     
    727693    if (!array_key_exists('src', $attributes))
    728       return '';
     694      return;
    729695
    730696    $url = $attributes['src'];
    731697    if (preg_match('|^file:///|', $url) > 0)
    732       return '';
     698      return;
    733699
    734700    switch ($url[0]) {
     
    737703        break;
    738704
    739       case '.':
    740         break;
     705      default:
     706        $this->interrupt("Unexpected URL: $href");
    741707    }
    742708
  • _libs_/html2spip/HTMLEngine.class

    r88965 r88968  
    241241  }
    242242
    243   # Data output organization functions: allows for 'cutting' html document in
    244   # parts
     243  # Data output organization functions: allows for 'cutting'
     244  # html document in parts
    245245  protected function openChunk($chunkTitle) {
    246246    array_unshift($this->chunkTitle, $chunkTitle);
Note: See TracChangeset for help on using the changeset viewer.