Changeset 107361 in spip-zone


Ignore:
Timestamp:
Nov 6, 2017, 8:55:28 AM (21 months ago)
Author:
jluc@…
Message:

un bouton vers la page ecrire de l'objet pour tous les contextex relatifs à un objet, avec son titre en hint

Location:
_plugins_/xray/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/xray/trunk/paquet.xml

    r107359 r107361  
    22        prefix="xray"
    33        categorie="outil"
    4         version="0.4.0"
     4        version="0.5.0"
    55        etat="test"
    66        compatibilite="[2.1.0;3.2.*]"
  • _plugins_/xray/trunk/plugin.xml

    r107359 r107361  
    99        <licence>GPL</licence>
    1010        <licence>PHP</licence>
    11         <version>0.4.0</version>
     11        <version>0.5.0</version>
    1212        <etat>test</etat>
    1313        <description>
  • _plugins_/xray/trunk/xray_apc.php

    r107359 r107361  
    9191        return "Unserialized : ".print_r($unser,1);
    9292}
    93 function print_array_content($extra, $tostring) {
     93function print_contexte($extra, $tostring) {
    9494        $print = print_r($extra, 1);
    95         if (stripos($print, 'Array') === 0)  {
    96                 $print = ltrim (substr($print, 5), " (\n\r\t");
    97                 $print = rtrim ($print, ") \n\r\t");
    98         }
     95        if (stripos($print, 'Array') === 0) {
     96                $print = trim (substr($print, 5), " (\n\r\t");
     97                $print = preg_replace_callback(
     98                        "/\[id_([a-z\-_]+)\]\s*=>\s*(\d+)$/im",
     99                        function ($match) { return $match[0].'</xmp>'.bouton_objet ($match[1], $match[2]).'<xmp>'; },
     100                        $print);
     101        };
    99102        if ($tostring)
    100103                return $print;
     
    102105};
    103106
    104 /**
    105  * Prend une URL et lui ajoute/retire un paramètre
    106  *
    107  * @filtre
    108  * @link http://www.spip.net/4255
    109  * @example
    110  *     ```
    111  *     [(#SELF|parametre_url{suite,18})] (ajout)
    112  *     [(#SELF|parametre_url{suite,''})] (supprime)
    113  *     [(#SELF|parametre_url{suite[],1})] (tableaux valeurs multiples)
    114  *     ```
    115  *
    116  * @param string $url URL
    117  * @param string $c Nom du paramètre
    118  * @param string|array|null $v Valeur du paramètre
    119  * @param string $sep Séparateur entre les paramètres
    120  * @return string URL
    121  */
    122 if (!function_exists('parametre_url')) {
    123 function parametre_url($url, $c, $v = null, $sep = '&amp;') {
    124         // requete erronnee : plusieurs variable dans $c et aucun $v
    125         if (strpos($c, "|") !== false and is_null($v)) {
    126                 return null;
    127         }
    128 
    129         // lever l'#ancre
    130         if (preg_match(',^([^#]*)(#.*)$,', $url, $r)) {
    131                 $url = $r[1];
    132                 $ancre = $r[2];
    133         } else {
    134                 $ancre = '';
    135         }
    136 
    137         // eclater
    138         $url = preg_split(',[?]|&amp;|&,', $url);
    139 
    140         // recuperer la base
    141         $a = array_shift($url);
    142         if (!$a) {
    143                 $a = './';
    144         }
    145 
    146         $regexp = ',^(' . str_replace('[]', '\[\]', $c) . '[[]?[]]?)(=.*)?$,';
    147         $ajouts = array_flip(explode('|', $c));
    148         $u = is_array($v) ? $v : rawurlencode($v);
    149         $testv = (is_array($v) ? count($v) : strlen($v));
    150         $v_read = null;
    151         // lire les variables et agir
    152         foreach ($url as $n => $val) {
    153                 if (preg_match($regexp, urldecode($val), $r)) {
    154                         $r = array_pad($r, 3, null);
    155                         if ($v === null) {
    156                                 // c'est un tableau, on memorise les valeurs
    157                                 if (substr($r[1], -2) == "[]") {
    158                                         if (!$v_read) {
    159                                                 $v_read = array();
    160                                         }
    161                                         $v_read[] = $r[2] ? substr($r[2], 1) : '';
    162                                 } // c'est un scalaire, on retourne direct
    163                                 else {
    164                                         return $r[2] ? substr($r[2], 1) : '';
    165                                 }
    166                         } // suppression
    167                         elseif (!$testv) {
    168                                 unset($url[$n]);
    169                         }
    170                         // Ajout. Pour une variable, remplacer au meme endroit,
    171                         // pour un tableau ce sera fait dans la prochaine boucle
    172                         elseif (substr($r[1], -2) != '[]') {
    173                                 $url[$n] = $r[1] . '=' . $u;
    174                                 unset($ajouts[$r[1]]);
    175                         }
    176                         // Pour les tableaux on laisse tomber les valeurs de
    177                         // départ, on remplira à l'étape suivante
    178                         else {
    179                                 unset($url[$n]);
    180                         }
    181                 }
    182         }
    183 
    184         // traiter les parametres pas encore trouves
    185         if ($v === null
    186                 and $args = func_get_args()
    187                 and count($args) == 2
    188         ) {
    189                 return $v_read; // rien trouve ou un tableau
    190         } elseif ($testv) {
    191                 foreach ($ajouts as $k => $n) {
    192                         if (!is_array($v)) {
    193                                 $url[] = $k . '=' . $u;
    194                         } else {
    195                                 $id = (substr($k, -2) == '[]') ? $k : ($k . "[]");
    196                                 foreach ($v as $w) {
    197                                         $url[] = $id . '=' . (is_array($w) ? 'Array' : $w);
    198                                 }
    199                         }
    200                 }
    201         }
    202 
    203         // eliminer les vides
    204         $url = array_filter($url);
    205 
    206         // recomposer l'adresse
    207         if ($url) {
    208                 $a .= '?' . join($sep, $url);
    209         }
    210 
    211         return $a . $ancre;
    212 } // function
    213 } // !function_exists
     107function bouton_objet($objet, $id_objet) {
     108        $objet_visible=$objet;
     109        if ($objet=='secteur')
     110                $objet='rubrique';
     111        else
     112                $objet=$objet;
     113        return "<a href='/ecrire/?exec=$objet&id_$objet=$id_objet' target='blank'
     114                        style='position:absolute; right:0px'
     115                        title=".attribut_html(generer_info_entite($id_objet, $objet, 'titre', 'etoile')).">[voir $objet_visible]</a>";
     116}
    214117
    215118////////////////////////////////////////////////////////////////////////
     
    879782        padding:0.1em 0.5em 0.1em 0.5em;
    880783        }
     784
     785xmp { display: inline }
     786
    881787//-->
    882788</style>
     
    12701176        echo
    12711177          '<tr id="key-'. $sh .'" class=tr-',$i%2,'>',
    1272           "<td class=td-0>
     1178          "<td class='td-0' style='position: relative'>
    12731179                        <a href='$MY_SELF&SH={$sh}#key-{$sh}'>$field_value</a>";
    12741180
     
    12931199                                                        $extra = $data['contexte'];
    12941200                                                else
    1295                                                         $extra = 'undefined';
     1201                                                        $extra = '(non défini)';
    12961202                                                break;
    12971203                                        case 'CONTEXTES_SPECIAUX' :
     
    13021208                                                }
    13031209                                                else
    1304                                                         $extra = 'undefined';
     1210                                                        $extra = '(non défini)';
    13051211                                                break;
    13061212                                        case 'INFO_AUTEUR' :
     
    13091215                                                                if (isset ($data['contexte'][$ki]))
    13101216                                                                        $extra[$ki] = $extra[$ki] = $data['contexte'][$ki];
    1311                                                         if (isset ($data['contexte']['id_auteur']))
    1312                                                                 $liens .= " [<a href='/ecrire/?exec=auteur&id_auteur=18891' target='blank'>voir auteur</a>] ";
    13131217                                                };
    13141218                                                break;
     
    13251229                                if ($extra == 'undefined')
    13261230                                        $extra = array ('contexte non défini' => 'vrai');
    1327                                 if ($extra = print_array_content($extra, 1))
    1328                                         echo "<br><xmp style='display:inline'>    $extra</xmp> <small style='float:right'>$liens</small>";
     1231                                if ($extra = print_contexte($extra, 1))
     1232                                        echo "<br><xmp>    $extra</xmp> <small style='float:right'>$liens</small>";
    13291233                        };
    13301234          echo '</td>',
Note: See TracChangeset for help on using the changeset viewer.