Changeset 103934 in spip-zone


Ignore:
Timestamp:
Apr 13, 2017, 10:42:54 AM (2 years ago)
Author:
marcimat@…
Message:

On intègre l'ensemble du plugin Rubriques Virtuelles de Kent1 que je mets en auteur du coup.
Ainsi, les rubriques qui ont un champ virtuelles sont publiées automatiquement.
Et on ne peut pas supprimer un objet qui a une redirection sans avoir préalablement enlevé la redirection.

Location:
_plugins_/objets_virtuels/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/objets_virtuels/trunk/formulaires/rediriger_objet_virtuel.php

    r103933 r103934  
    100100        objet_modifier($objet, $id_objet, ['virtuel' => $url]);
    101101
     102        // Exception : si c'est une rubrique, la publier.
     103        if (objet_type($objet) == 'rubrique') {
     104                sql_updateq(table_objet_sql($objet), array('statut' => 'publie'), id_table_objet($objet) . '=' . $id_objet);
     105        }
     106
    102107        // malheureusement le ajax=wysiwyg n'est pas toujours présent sur l’inclusion prive/objets/contenu/xx,
    103108        // donc ce JS n'actualise pas toujours le centre de la page.
    104109        $js = _AJAX ? '<script type="text/javascript">
    105                 if (window.ajaxReload) $("#objet_virtuel").ajaxReload({args:{virtuel:"' . $url . '"}});
     110                if (window.ajaxReload) {
     111                        $("#objet_virtuel").ajaxReload({args:{virtuel:"' . $url . '"}});
     112                        ajaxReload("navigation");
     113                }
    106114        </script>' : '';
    107115
  • _plugins_/objets_virtuels/trunk/objets_virtuels_fonctions.php

    r103837 r103934  
    5050 * @param string $objet
    5151 * @param int $id_objet
    52  * @param stsring $connect
     52 * @param string $connect
     53 * @param bool $statut Test du statut ?
    5354 * @return array|bool|null
    5455 */
    55 function quete_objet_virtuel($objet, $id_objet, $connect) {
     56function quete_objet_virtuel($objet, $id_objet, $connect = '', $statut = false) {
    5657        $table = table_objet_sql($objet);
    5758        $infos = lister_tables_objets_sql($table);
     
    6263        // gros bazar pour prendre en compte du mieux que l'on peut le champ statut
    6364        // s'il y en a un de déclaré.
    64         if (!empty($infos['statut'])) {
     65        if ($statut and !empty($infos['statut'])) {
    6566                $principal = array_shift($infos['statut']);
    6667                if (
     
    115116                ) {
    116117                        $objet = objet_type($table);
    117                         $m = quete_objet_virtuel($objet, $id_objet, $connect);
     118                        $m = quete_objet_virtuel($objet, $id_objet, $connect, true);
    118119                        if (strlen($m)) {
    119120                                include_spip('inc/texte');
  • _plugins_/objets_virtuels/trunk/objets_virtuels_pipelines.php

    r103933 r103934  
    7474 */
    7575function objets_virtuels_affiche_milieu($flux) {
     76        include_spip('objets_virtuels_fonctions');
    7677
    7778        // si on est sur une page ou il faut inserer les mots cles...
     
    8586                and (in_array($desc['table_objet_sql'], objets_virtuels_tables_actives()))
    8687        ) {
    87                 $virtuel = sql_getfetsel('virtuel', $desc['table_objet_sql'], $id_table_objet . '=' . $id);
     88                $virtuel = quete_objet_virtuel($desc['table'], $id);
    8889                $texte = recuperer_fond(
    8990                        'prive/squelettes/inclure/redirection_objet_virtuel',
     
    102103        return $flux;
    103104}
     105
     106
     107/**
     108 * Insertion dans le pipeline objet_compte_enfants (SPIP)
     109 *
     110 * Une objet est considérée comme vide lorsqu'il n'a pas d'objets liés (articles, rubriques, documents).
     111 * Ici on impose que le champ "virtuel" doit être vide pour que l'objet soit considéré comme vide.
     112 *
     113 * @pipeline objet_compte_enfants
     114 * @param array $flux
     115 * @return array
     116 */
     117function objets_virtuels_objet_compte_enfants($flux) {
     118        include_spip('objets_virtuels_fonctions');
     119
     120        if (
     121                $objet = $flux['args']['objet']
     122                and $id_objet = $flux['args']['id_objet']
     123                and $table = table_objet_sql($objet)
     124                and in_array($table, objets_virtuels_tables_actives())
     125        ) {
     126                $virtuel = quete_objet_virtuel($objet, $id_objet);
     127                if (strlen(trim($virtuel)) > 0) {
     128                        $flux['data']['redirection'] = 1;
     129                }
     130        }
     131        return $flux;
     132}
     133
     134
     135/**
     136 * Insertion dans le pipeline calculer_rubriques (SPIP)
     137 * (cf calculer_rubriques_publiees() dans inc/rubriques)
     138 *
     139 * Évite de dépublier une rubrique avec une redirection
     140 *
     141 * @pipeline calculer_rubriques
     142 * @param array $flux
     143 * @return array
     144 */
     145function objets_virtuels_calculer_rubriques($flux) {
     146        $rubriques_virtuelles_non_publiees = sql_allfetsel(
     147                'id_rubrique, statut, id_parent',
     148                'spip_rubriques',
     149                'statut_tmp != "publie" AND virtuel != ""'
     150        );
     151        foreach ($rubriques_virtuelles_non_publiees as $rub) {
     152                sql_updateq('spip_rubriques', array('statut_tmp'=> 'publie'), 'id_rubrique='.intval($rub['id_rubrique']));
     153        }
     154        return $flux;
     155}
     156
     157/**
     158 * Pipeline d'autorisation
     159 * @pipeline autoriser
     160 */
     161function objets_virtuels_autoriser() {}
     162
     163if (!function_exists('autoriser_rubrique_supprimer')) {
     164        /**
     165         * Ne pas pouvoir supprimer une rubrique si elle a un champ de redirection actif
     166         * @param string $faire
     167         * @param string $type
     168         * @param int $id
     169         * @param array $qui
     170         * @param array $opt
     171         * @return bool
     172         */
     173        function autoriser_rubrique_supprimer($faire, $type, $id, $qui, $opt) {
     174                include_spip('objets_virtuels_fonctions');
     175                $virtuel = quete_objet_virtuel('rubrique', intval($id));
     176                if (strlen($virtuel) > 0) {
     177                        return false;
     178                }
     179                return autoriser_rubrique_supprimer_dist($faire, $type, $id, $qui, $opt);
     180        }
     181}
  • _plugins_/objets_virtuels/trunk/paquet.xml

    r103933 r103934  
    22        prefix="objets_virtuels"
    33        categorie="navigation"
    4         version="1.0.3"
     4        version="1.1.0"
    55        etat="test"
    66        compatibilite="[3.1.4;3.2.*]"
     
    1212
    1313        <auteur>Matthieu Marcillaud</auteur>
     14        <auteur lien="http://www.kent1.info/">kent1</auteur>
    1415        <credit lien='https://thenounproject.com/term/detour/304577/'>S Madsen (logo)</credit>
    1516
     
    1920        <pipeline nom="afficher_config_objet" inclure="objets_virtuels_pipelines.php" />
    2021        <pipeline nom="affiche_milieu" inclure="objets_virtuels_pipelines.php" />
    21 
     22        <pipeline nom="objet_compte_enfants" inclure="objets_virtuels_pipelines.php" />
     23        <pipeline nom="calculer_rubriques" inclure="objets_virtuels_pipelines.php" />
     24        <pipeline nom="autoriser" inclure="objets_virtuels_pipelines.php" />
    2225</paquet>
Note: See TracChangeset for help on using the changeset viewer.