Changeset 110213 in spip-zone


Ignore:
Timestamp:
May 11, 2018, 5:00:42 PM (19 months ago)
Author:
tcharlss@…
Message:

v2.0.15 : ajout d'un bouton dans la boite infos afin de permettre aux admins de prévisualiser les métas+. Pour l'instant il y a un petit bug : les URLs pointent vers le privé, on met un message de mise en garde temporaire le temps d'y remédier. On en profite pour faire un peu de rangement : l'identification du contexte et la sélection du fond sont dans des fonctions à part.

Location:
_plugins_/metasplus/trunk
Files:
10 added
4 edited
2 moved

Legend:

Unmodified
Added
Removed
  • _plugins_/metasplus/trunk/inclure/metasplus/dist.html

    r110144 r110213  
    2929                             poids max 8 Mo
    3030                             ratio 1.91:1
     31
     32        Contexte :
     33                - type-page
     34                - objet
     35                - id_objet
     36                - id_patate
    3137
    3238        Paramètres :
  • _plugins_/metasplus/trunk/lang/metasplus_fr.php

    r110203 r110213  
    77
    88$GLOBALS[$GLOBALS['idx_lang']] = array(
     9
    910        // E
    1011        'explication_id_doc_logo' => 'Permet d\'utiliser une image de votre choix à la place du logo du site SPIP (propriétés "og:image" et "twitter:image", format conseillé: 1,91:1)',
     12
     13        // I
     14        'icone_previsu' => 'Aperçu des métas+',
     15        'icone_previsu_title' => 'Aperçu des métadonnées Dublin Core, Open Graph et Twitter.',
    1116
    1217        // L
     
    1621        'label_twitter' => 'Twitter',
    1722        'logo_bis' => 'Ajouter une image qui remplacera celle du site',
     23        'label_previsu_fond' => 'Fond utilisé',
     24        'label_previsu_objet' => 'Objet éditorial',
    1825
    1926        // T
    20         'titre_config_metasplus'        =>      'Configurer Métas +',
     27        'titre_config_metasplus' => 'Configurer Métas +',
     28        'titre_previsu' => 'Aperçu des métadonnées Dublin Core, Open Graph et Twitter.',
    2129
    2230);
  • _plugins_/metasplus/trunk/metasplus_fonctions.php

    r110212 r110213  
    11<?php
    22/**
    3  * Fonctions utiles à ce squelette
     3 * Fonctions utiles au plugin Métas+
     4 *
     5 * @plugin     Métas+
     6 * @copyright  2016-2018
     7 * @author     Tetue, Erational, Tcharlss
     8 * @licence    GNU/GPL
     9 * @package    SPIP\Metas+\Fonctions
    410 */
    511
     
    814 *
    915 * @Note
    10  * Il n'est pas recommandé d'utiliser $GLOBALS['contexte], donc on utilise la fonction qui décode l'URL et retourne les bonnes infos :
     16 * Il n'est pas recommandé d'utiliser $GLOBALS['contexte],
     17 * donc on utilise la fonction qui décode l'URL
     18 * et retourne un tableau linéaire avec les bonnes infos :
    1119 * [0]            => page (le fond)
    12  * [1][id_patate] => id si page d'un objet
     20 * [1][id_patate] => identifiant si page d'un objet
    1321 * [1][erreur]    => erreur éventuelle (404)
    1422 *
    1523 * @param string $url
    16  * @return array En gros on reformate le tableau retourné par decoder_url
    17  * [type-page]
    18  * [objet]
    19  * [id_objet]
    20  * [id_patate]
    21  * [erreur] true si page en erreur
     24 * @return array
     25 *     Tableau associatif :
     26 *     [type-page] le type de la page
     27 *     [objet]     le type de l'objet le cas échéant
     28 *     [id_objet]  son identifiant
     29 *     [id_patate] idem, mais avec le nom de sa clé primaire
     30 *     [erreur]    'true' si page en erreur
    2231 */
    23 function metasplus_trouver_contexte($url) {
     32function metasplus_identifier_contexte($url) {
    2433
    2534        $res              = array();
     
    4958        return $res;
    5059}
     60
     61
     62/**
     63 * Sélectionner le squelette des métadonnées pour un type de page
     64 *
     65 * Règle :
     66 * On va chercher dans le dossier inclure/metasplus le squelette
     67 * de la variante spécifique au type de page s'il existe,
     68 * sinon le squelette générique dist.html qui génère automatiquement les métas.
     69 *
     70 * @param array $contexte
     71 *     Contexte de la page, avec le type de page, le type d'objet etc.
     72 * @return string
     73 *     Le fond
     74 */
     75function metasplus_selectionner_fond($type_page) {
     76
     77        $fond_defaut   = 'inclure/metasplus/dist';
     78        $fond_variante = 'inclure/metasplus/' . $type_page;
     79        if (find_in_path($fond_variante.'.html')) {
     80                $fond = $fond_variante;
     81        } elseif (find_in_path($fond_defaut.'.html')) {
     82                $fond = $fond_defaut;
     83        }
     84
     85        return $fond;
     86}
  • _plugins_/metasplus/trunk/metasplus_identifier_contexte.html

    r110212 r110213  
    11[(#REM)
    22
    3         Squelette technique pour retrouver le contexte correspondant à une URL
     3        Squelette technique pour retrouver le contexte correspondant à une URL.
    44        Cf. pipeline affichage_final
    55
    6         Renvoie le contexte sérialisé
     6        Renvoie le contexte sous forme de tableau associatif sérialisé :
     7        - type-page : le type de la page
     8        - objet : le type d'objet le cas échéant
     9        - id_objet : son identifiant
     10        - id_patate : idem, mais avec le nom de sa clé primaire
     11        - erreur : 'true' si la page est en erreur
    712
    813        Paramètres :
    914        - url : url à décoder, par défaut l'url courante.
    10 ]
    11 [(#ENV{url,#SELF}|url_absolue|metasplus_trouver_contexte|serialize)]
    1215
    13 #FILTRE{trim}
     16][(#ENV{url,#SELF}|url_absolue|metasplus_identifier_contexte|serialize)]
  • _plugins_/metasplus/trunk/metasplus_pipelines.php

    r110063 r110213  
    1515}
    1616
     17
    1718/**
    1819 * Effectuer des traitements juste avant l'envoi des pages publiques.
    1920 *
    20  * => Ajout des metas Open Graph, Dublin Core et Twitter dans le <head> public.
     21 * => Ajout des métadonnéess Open Graph, Dublin Core et Twitter
     22 * dans le <head> public de certaines pages.
    2123 *
    22  * Règles :
    23  * On va chercher dans le dossier inclure/metasplus le squelette de la variante spécifique à la page si elle existe, sinon le squelette générique dist.html qui génère automatiquement les métas.
     24 * @Note : on retrouve les informations du contexte de la page
     25 * au moyen d'un squelette pour bénéficier de la mise en cache
     26 * et éviter des requêtes SQL à chaque hit via decoder_url().
    2427 *
    25  * @Note : on retrouve les informations du contexte de l apage actuelle au moyen d'un squelette pour bénéficier de la mise en cache et éviter des requêtes SQL à chaque hit via decoder_url()
    26  *
     28 * @uses metasplus_identifier_contexte()
     29 * @uses metasplus_selectionner_fond()
     30 *
    2731 * @param $flux
    2832 * @return mixed
     
    3741                // Il y a un <head>
    3842                and $pos_head = strpos($flux, '</head>')
    39                 // Les protocoles ne sont pas tous désactivés (improbable mais possible)
    40                 and (
    41                         !lire_config('metasplus')
    42                         or count(lire_config('metasplus')) < 3
    43                 )
     43                // Au moins un protocole est activé
     44                and count(lire_config('metasplus'))
    4445                // Le contexte est retrouvé
    4546                and $url = self()
    46                 and $contexte = recuperer_fond('metasplus_trouver_contexte', array('url' => $url))
     47                and $contexte = recuperer_fond('metasplus_identifier_contexte', array('url' => $url))
    4748                and is_array($contexte = unserialize($contexte))
    4849                // La page n'est pas en erreur
     
    5960        ) {
    6061
    61                 // Trouver le squelette à utiliser : variante de la page si elle existe, sinon le squelette par défaut (dist.html)
    62                 $fond_defaut   = 'inclure/metasplus/dist';
    63                 $fond_variante = 'inclure/metasplus/' . $contexte['type-page'];
    64                 if (find_in_path($fond_variante.'.html')) {
    65                         $fond = $fond_variante;
    66                 } elseif (find_in_path($fond_defaut.'.html')) {
    67                         $fond = $fond_defaut;
    68                 }
     62                // Trouver le squelette à utiliser
     63                $fond = metasplus_selectionner_fond($contexte['type-page']);
    6964
    7065                // Si le squelette n'est pas vide, on ajoute son contenu à la fin du head
     
    7974        return $flux;
    8075}
     76
    8177
    8278/**
     
    9995        return $flux;
    10096}
     97
     98
     99/**
     100 * Gérer les informations affichées dans l’espace privé
     101 * dans le cadre d’information des objets SPIP
     102 *
     103 * => Ajout du bouton de prévisualisation des métas+
     104 *
     105 * @param $flux
     106 * @return $flux
     107 * @author tofulm
     108 **/
     109function metasplus_boite_infos($flux){
     110
     111        if ($objet = $flux['args']['type']
     112                and $id_objet = $flux['args']['id']
     113                and autoriser('previsualiser_metasplus', $objet, $id_objet)
     114        ) {
     115                include_spip('base/objets');
     116                include_spip('inc/filtres');
     117                $type_page = objet_info($objet, 'page');
     118                $id_table_objet = id_table_objet($objet);
     119                $contexte = array(
     120                        'type-page'      => $type_page,
     121                        'objet'          => $objet,
     122                        'id_objet'       => $id_objet,
     123                        $id_table_objet  => $id_objet,
     124                );
     125                $fond_previsu = recuperer_fond('prive/squelettes/inclure/metasplus_bouton_previsu', $contexte);
     126                $flux['data'] .= $fond_previsu;
     127        }
     128
     129        return $flux;
     130}
  • _plugins_/metasplus/trunk/paquet.xml

    r110203 r110213  
    22        prefix="metasplus"
    33        categorie="divers"
    4         version="2.0.13"
     4        version="2.0.15"
    55        schema="1.0.0"
    66        etat="test"
     
    1919        <pipeline nom="affichage_final" inclure="metasplus_pipelines.php" />
    2020        <pipeline nom="post_edition" inclure="metasplus_pipelines.php" />
     21        <pipeline nom="boite_infos" inclure="metasplus_pipelines.php" />
     22        <pipeline nom="autoriser" inclure="metasplus_autorisations.php" />
    2123</paquet>
Note: See TracChangeset for help on using the changeset viewer.