Changeset 87421 in spip-zone


Ignore:
Timestamp:
Feb 12, 2015, 3:36:12 PM (4 years ago)
Author:
jcvilleneuve@…
Message:

EscalV3 : ajout de la fonction couperpropre et du coup on l'utilise dans l'article en exergue de la page d'accueil qui affiche ou pas le descriptif, le chapeau et le début du texte en gardant les enrichissements

Location:
_squelettes_/escal/branche_V3
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • _squelettes_/escal/branche_V3/escal_fonctions.php

    r86800 r87421  
    540540
    541541
     542// =======================================================================================================================================
     543// fonction couperpropre
     544// =======================================================================================================================================
     545
     546/*
     547* Coupe une chaine en gardant le formatage HTML
     548* @param string $text Texte a couper
     549* @param integer $length Longueur a garder
     550* @param string $ending Caracteres a ajouter a la fin
     551* @param boolean $exact Coupure exacte
     552* @return string
     553*/
     554
     555function couperpropre($text, $length, $ending = '...', $exact = false) {
     556if(strlen(preg_replace('/<.*?>/', '', $text)) <= $length) {
     557        return $text;
     558}
     559        preg_match_all('/(<.+?>)?([^<>]*)/is', $text, $matches, PREG_SET_ORDER);
     560        $total_length = 0;
     561        $arr_elements = array();
     562        $truncate = '';
     563foreach($matches as $element) {
     564if(!empty($element[1])) {
     565if(preg_match('/^<\s*.+?\/\s*>$/s', $element[1])) {
     566}
     567else if(preg_match('/^<\s*\/([^\s]+?)\s*>$/s', $element[1], $element2)) {
     568        $pos = array_search($element2[1], $arr_elements);
     569if($pos !== false) {
     570        unset($arr_elements[$pos]);
     571}
     572}
     573else if(preg_match('/^<\s*([^\s>!]+).*?>$/s', $element[1], $element2)) {
     574        array_unshift($arr_elements,    strtolower($element2[1]));
     575}
     576        $truncate .= $element[1];
     577}
     578$content_length = strlen(preg_replace('/(&[a-z] {
     579        1,6
     580}
     581        ;
     582        |&#[0-9]+;
     583        )/i', ' ', $element[2]));
     584if($total_length >= $length) {
     585        break;
     586}
     587elseif ($total_length+$content_length > $length) {
     588        $left = $total_length>$length?$total_length-$length: $length-$total_length;
     589        $entities_length = 0;
     590if(preg_match_all('/&[a-z] {
     591        1,6
     592}
     593        ;
     594        |&#[0-9]+;
     595/i', $element[2], $element3, PREG_OFFSET_CAPTURE)) {
     596foreach($element3[0] as $entity) {
     597if($entity[1]+1-$entities_length <= $left) {
     598        $left--;
     599        $entities_length += strlen($entity[0]);
     600}
     601        else break;
     602}
     603}
     604        $truncate .= substr($element[2], 0, $left+$entities_length);
     605        break;
     606}
     607else {
     608        $truncate .= $element[2];
     609        $total_length += $content_length;
     610}
     611}
     612if(!$exact) {
     613        $spacepos = strrpos($truncate, ' ');
     614if(isset($spacepos)) {
     615        $truncate = substr($truncate, 0, $spacepos);
     616}
     617}
     618        $truncate .= $ending;
     619foreach($arr_elements as $element) {
     620        $truncate .= '</' . $element . '>';
     621}
     622        return $truncate;
     623}
     624
    542625
    543626?>
  • _squelettes_/escal/branche_V3/formulaires/configurer_escal_sommaire_corps.html

    r87019 r87421  
    452452                    </span>
    453453                    <br /><br />
    454                    
     454            #SET{name,descriptifune}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
     455                            Affichage du descriptif
     456                            [<span class='erreur_message'>(#GET{erreurs})</span>
     457                            ]<span class="choix" style="float: right">
     458                                     <input type="radio" name="#GET{name}" id="#GET{name}_oui" value="oui"
     459                                [(#ENV{#GET{name}}|=={non}|non)checked="checked"] /><label for="#GET{name}_oui"><:item_oui:></label>
     460
     461                                     <input type="radio" name="#GET{name}" id="#GET{name}_non" value="non"
     462                                     [(#ENV{#GET{name}}|=={non}|oui)checked="checked"] /><label for="#GET{name}_non"><:item_non:></label>
     463                            </span>
     464                            <br /><br />
     465                    #SET{name,chapeauune}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
     466                    Affichage du chapeau
     467                            [<span class='erreur_message'>(#GET{erreurs})</span>
     468                            ]<span class="choix" style="float: right">
     469                                     <input type="radio" name="#GET{name}" id="#GET{name}_oui" value="oui"
     470                                [(#ENV{#GET{name}}|=={non}|non)checked="checked"] /><label for="#GET{name}_oui"><:item_oui:></label>
     471
     472                                     <input type="radio" name="#GET{name}" id="#GET{name}_non" value="non"
     473                                     [(#ENV{#GET{name}}|=={non}|oui)checked="checked"] /><label for="#GET{name}_non"><:item_non:></label>
     474                            </span>
     475                            <br /><br />
    455476             #SET{name,texteune}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
    456                     Affichage du descriptif ou du début du texte (si pas de descriptif)
     477                    Affichage du début du texte
    457478                  [<span class='erreur_message'>(#GET{erreurs})</span>
    458479                    ]<span class="choix" style="float: right">
  • _squelettes_/escal/branche_V3/inclusions/inc-une_derniers.html

    r86800 r87421  
    9393      <//B_image>
    9494      </div>
     95
     96<!-- affichage descriptif -->
     97    [(#CONFIG{escal/config/descriptifune}|=={non}|non)
     98                <div class="descriptif-article #EDIT{texte}">[(#DESCRIPTIF)]</div>
     99        ]
    95100<!-- affichage chapeau -->
    96101    [(#CONFIG{escal/config/chapeauune}|=={non}|non)
    97102                <div class="chapo #EDIT{texte}">[(#CHAPO)]</div>
    98                 ]   
     103        ]
    99104<!-- affichage texte -->
    100105    [(#CONFIG{escal/config/texteune}|=={non}|non)
    101       <div class="texte">
    102       [(#INTRODUCTION{#CONFIG{escal/config/tailletexteune,300}})]
    103                         </div>
    104       ]
     106        <div class="texte #EDIT{texte}">
     107            [(#TEXTE*|concat{#EVAL{_CS_SANS_SOMMAIRE}}|cs_traitements{TEXTE,articles}|couperpropre{#CONFIG{escal/config/tailletexteune,300}})]
     108           </div>
     109    ]
    105110           
    106111      <div class="nettoyeur"></div>
  • _squelettes_/escal/branche_V3/inclusions/inc-une_derniers_bis.html

    r84987 r87421  
    7474      </div>     
    7575<!-- affichage descriptif -->
    76                 [(#CONFIG{escal/config/descriptifune}|=={non}|non)
    77                 <div class="descriptif-article #EDIT{descriptif}">[(#DESCRIPTIF)]</div>
    78                 ]
     76    [(#CONFIG{escal/config/descriptifune}|=={non}|non)
     77                <div class="descriptif-article #EDIT{texte}">[(#DESCRIPTIF)]</div>
     78        ]
    7979<!-- affichage chapeau -->
    8080    [(#CONFIG{escal/config/chapeauune}|=={non}|non)
    81                 <div id="chapo" class="#EDIT{texte}">[(#CHAPO)]</div>
    82                 ]     
     81                <div class="chapo #EDIT{texte}">[(#CHAPO)]</div>
     82        ]
    8383<!-- affichage texte -->
    8484    [(#CONFIG{escal/config/texteune}|=={non}|non)
    85       <div class="texte">
    86         #INTRODUCTION{#CONFIG{escal/config/tailletexteune,300}}   
    87                         </div>
    88       ]
     85        <div class="texte #EDIT{texte}">
     86            [(#TEXTE*|concat{#EVAL{_CS_SANS_SOMMAIRE}}|cs_traitements{TEXTE,articles}|couperpropre{#CONFIG{escal/config/tailletexteune,300}})]
     87        </div>
     88    ]
    8989           
    9090      <div class="nettoyeur"></div>
  • _squelettes_/escal/branche_V3/paquet.xml

    r87339 r87421  
    22    prefix="escal"
    33    categorie="squelette"
    4     version="3.79.13"
     4    version="3.79.14"
    55    schema="1.0.4"
    66    etat="stable"
Note: See TracChangeset for help on using the changeset viewer.