source: spip-zone/_plugins_/couteau_suisse/outils/boites_privees_action_rapide.php @ 72059

Last change on this file since 72059 was 72059, checked in by patfr@…, 7 years ago

Déménagement de l'icone du Couteau Suisse

File size: 4.2 KB
Line 
1<?php
2
3/*
4module mon_outil_action_rapide.php inclu :
5 - dans la description de l'outil en page de configuration
6 - apres l'appel de ?exec=action_rapide&arg=boites_privees|argument
7*/
8
9if(defined('_SPIP20100')) {
10
11        // Nouveaute SPIP 2.1 : se baser sur un nouveau champ 'ordre' de la table spip_auteurs_liens
12        // Fonction qui affiche le formulaire CVT triant les auteurs d'un article :
13        function action_rapide_tri_auteurs($id_article=0) {
14                $f = trim(recuperer_fond('fonds/tri_auteurs2', array('id_objet'=>$id_article, 'objet'=>'article')));
15                // pas de cadre si un seul auteur...
16                if(strpos($f, '<table ')===false) return "";
17                return cadre_depliable(cs_icone(24),
18                        cs_div_configuration().'<b>'._T('couteau:tri_auteurs').'</b>',
19                        false,  // true = deplie
20                        $f, 'bp_tri_auteurs2');
21        }
22
23} else {
24
25        // Fonction qui centralise :
26        //      - le 1er affichage : action_rapide_tri_auteurs($id_article)
27        //      - l'appel exec : action_rapide_tri_auteurs()
28        function action_rapide_tri_auteurs($id_article=0) {
29                $id = $id_article?$id_article:_request('id_article');
30                include_spip('public/assembler'); // pour recuperer_fond(), SPIP 1.92
31                $texte = trim(recuperer_fond('fonds/tri_auteurs', array('id_article'=>$id)));
32                // syntaxe : ajax_action_auteur($action, $id, $script, $args='', $corps=false, $args_ajax='', $fct_ajax='')
33                if(strlen($texte)) {
34                        include_spip('inc/actions_compat');
35                        // un clic sur 'monter' ou 'descendre' va permettre une redirection vers
36                        // les fonctions : boites_privees_URL_objet_exec(), puis action_rapide_tri_auteurs()
37                        $texte = ajax_action_auteur('action_rapide', 'tri_auteurs', 'articles', "arg=boites_privees|URL_objet&fct=tri_auteurs&id_article=$id#bp_tri_auteurs_corps", $texte);
38                }
39                // si appel exec, l'id article est nul...
40                if(!$id_article) return $texte;
41                // ici, 1er affichage !
42                if(!strlen($texte)) return '';
43                // SPIP 1.92
44                if(!defined('_SPIP19300')) return debut_cadre_relief(cs_icone(24), true)
45                        . cs_div_configuration()
46                        . "<div class='verdana1' style='text-align: left;'>"
47                        . block_parfois_visible('bp_ta', '<b>'._T('couteau:tri_auteurs').'</b>', "<div id='bp_tri_auteurs_corps'>$texte</div>", 'text-align: center;')
48                        . "</div>"
49                        . fin_cadre_relief(true);
50                // SPIP 2.x
51                return cadre_depliable(cs_icone(24),
52                        cs_div_configuration().'<b>'._T('couteau:tri_auteurs').'</b>',
53                        false,  // true = deplie
54                        "<div id='bp_tri_auteurs_corps'>$texte</div>",
55                        'bp_tri_auteurs');
56        }
57        // Fonction {$outil}_{$arg}_exec() appelee par exec/action_rapide : ?exec=action_rapide&arg=boites_privees|URL_objet (pipe obligatoire)
58        // Renvoie un formulaire en partie privee
59        function boites_privees_URL_objet_exec() {
60        cs_log("INIT : exec_action_rapide_dist() - Preparation du retour par Ajax (donnees transmises par GET)");
61                $script = _request('script');
62        cs_log(" -- fonction = $fct - script = $script - arg = $arg");
63                cs_minipres(!preg_match('/^\w+$/', $script));
64                $res = function_exists($fct = 'action_rapide_'._request('fct'))?$fct():'';
65        cs_log(" FIN : exec_description_outil_dist() - Appel maintenant de ajax_retour() pour afficher le formulaire de la boite privee");     
66                ajax_retour($res);
67        }
68        // fonction {$outil}_{$arg}_action() appelee par action/action_rapide.php
69        function boites_privees_tri_auteurs_action() {
70                // boite privee : tri les auteurs d'un article
71                $id_article = _request('bp_article');
72                $id_auteur = abs(_request('bp_auteur'));
73                $monter = _request('bp_auteur')>0;
74       
75                if(!defined('_SPIP19300')) include_spip('outils/boites_privees'); // pour les fonctions SQL
76                $s = sql_select('id_auteur', 'spip_auteurs_articles', "id_article=$id_article");
77                $i=0; $j=0;
78                while ($a = sql_fetch($s)) {
79                        if($a['id_auteur']==$id_auteur) { $i = $a['id_auteur']; break; }
80                        $j = $a['id_auteur'];
81                }
82       
83                if(!$monter && $i && ($a = sql_fetch($s))) $j = $a['id_auteur'];
84                spip_log("action_rapide_tri_auteurs, article $id_article : echange entre l'auteur $i et l'auteur $j");
85                if($i && $j) {
86                        sql_update('spip_auteurs_articles', array('id_auteur'=>-99), "id_article=$id_article AND id_auteur=$i");
87                        sql_update('spip_auteurs_articles', array('id_auteur'=>$i), "id_article=$id_article AND id_auteur=$j");
88                        sql_update('spip_auteurs_articles', array('id_auteur'=>$j), "id_article=$id_article AND id_auteur=-99");
89                }
90                // action terminee, pret pour la redirection exec !
91                return;
92        }
93}
94
95?>
Note: See TracBrowser for help on using the repository browser.