source: spip-zone/_core_/branches/spip-3.0/plugins/grenier/inc/actions.php @ 104360

Last change on this file since 104360 was 104360, checked in by spip.franck@…, 3 years ago

code.spip est maintenant en https, donc j'ajoute le "s" à http

File size: 4.9 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2016                                                *
7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8 *                                                                         *
9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11\***************************************************************************/
12
13if (!defined('_ECRIRE_INC_VERSION')) return;
14
15include_once _ROOT_RESTREINT . "inc/actions.php";
16
17// Retourne un formulaire d'execution de $action sur $id,
18// revenant a l'envoyeur $script d'arguments $args.
19// Utilise Ajax si dispo, en ecrivant le resultat dans le innerHTML du noeud
20// d'attribut  id = $action-$id (cf. AjaxSqueeze dans layer.js)
21
22// https://code.spip.net/@ajax_action_auteur
23function ajax_action_auteur($action, $id, $script, $args='', $corps=false, $args_ajax='', $fct_ajax='')
24{
25        if (strpos($args,"#")===FALSE)
26                $ancre = "$action-" . intval($id);
27        else {
28                $ancre = explode("#",$args);
29                $args = $ancre[0];
30                $ancre = $ancre[1];
31        }
32
33        // Formulaire (POST)
34        // methodes traditionnelle et ajax a unifier...
35        if (is_string($corps)) {
36
37                // Methode traditionnelle
38                if (_SPIP_AJAX !== 1) {
39                        return redirige_action_post($action,
40                                $id,
41                                $script,
42                                "$args#$ancre",
43                                $corps);
44                }
45
46                // Methode Ajax
47                else {
48                        if ($args AND !$args_ajax) $args_ajax = "&$args";
49                        if (isset($_GET['var_profile']))
50                                $args_ajax .= '&var_profile=1';
51                        return redirige_action_post($action,
52                                $id,
53                                $action,
54                                "script=$script$args_ajax",
55                                $corps,
56                                (" onsubmit="
57                                 . ajax_action_declencheur('this', $ancre, $fct_ajax)));
58
59                }
60        }
61
62        // Lien (GET)
63        else {
64                $href = redirige_action_auteur($action,
65                        $id,
66                        $script,
67                        "$args#$ancre",
68                        false);
69
70                if ($args AND !$args_ajax) $args_ajax = "&$args";
71                if (isset($_GET['var_profile']))
72                        $args_ajax .= '&var_profile=1';
73
74                $ajax = redirige_action_auteur($action,
75                        $id,
76                        $action,
77                        "script=$script$args_ajax");
78
79                $cli = array_shift($corps);
80                return "<a href='$href'\nonclick="
81                .  ajax_action_declencheur($ajax, $ancre, $fct_ajax)
82                . ">"
83                . (!$corps ?  $cli : ("\n<span" . $corps[0] . ">$cli</span>"))
84                . "</a>";
85        }
86}
87
88
89// Comme ci-dessus, mais reduit au cas POST et on fournit le bouton Submit.
90//
91// https://code.spip.net/@ajax_action_post
92function ajax_action_post($action, $arg, $retour, $gra, $corps, $clic='', $atts_i='', $atts_span = "", $args_ajax='')
93{
94        global $spip_lang_right;
95
96        if (strpos($gra,"#")===FALSE) {
97          // A etudier: prendre systematiquement arg en trancodant les \W
98                $n = intval($arg);
99                $ancre = "$action-" . ($n ? $n : $arg);
100        } else {
101                $ancre = explode("#",$gra);
102                $args = $ancre[0];
103                $ancre = $ancre[1];
104        }
105
106        if (!$atts_i)
107                $atts_i = " class='fondo' style='float: $spip_lang_right'";
108
109        if (is_array($clic)) {
110                $submit = "";
111                $atts_i .= "\nonclick='AjaxNamedSubmit(this)'";
112                foreach($clic as $n => $c)
113                  $submit .= "\n<input type='submit' name='$n' value='$c' $atts_i />";
114        } else {
115                if (!$clic)  $clic =  _T('bouton_valider');
116                $submit = "<input type='submit' value='$clic' $atts_i />";
117        }
118        $corps = "<div>"
119          . $corps
120          . "<span"
121          . $atts_span
122          . ">"
123          . $submit
124          . "</span></div>";
125
126        if (_SPIP_AJAX !== 1) {
127                return redirige_action_post($action, $arg, $retour,
128                                        ($gra . '#' . $ancre),
129                                        $corps);
130        } else {
131
132                if ($gra AND !$args_ajax) $args_ajax = "&$gra";
133                if (isset($GLOBALS['var_profile']))
134                        $args_ajax .= '&var_profile=1';
135
136                return redirige_action_post($action,
137                        $arg,
138                        $action,
139                        "script=$retour$args_ajax",
140                        $corps,
141                        " onsubmit=" . ajax_action_declencheur('this', $ancre));
142        }
143}
144
145
146//
147// Attention pour que Safari puisse manipuler cet evenement
148// il faut onsubmit="return AjaxSqueeze(x,'truc',...)"
149// et non pas onsubmit='return AjaxSqueeze(x,"truc",...)'
150//
151// https://code.spip.net/@ajax_action_declencheur
152function ajax_action_declencheur($request, $noeud, $fct_ajax='') {
153        if (strpos($request, 'this') !== 0)
154                $request = "'".$request."'";
155
156        return '"return AjaxSqueeze('
157        . $request
158        . ",'"
159        . $noeud
160        . "',"
161          . ($fct_ajax ? $fct_ajax : "''")
162        . ',event)"';
163}
164
165
166
167// Place un element HTML dans une div nommee,
168// sauf si c'est un appel Ajax car alors la div y est deja
169// $fonction : denomination semantique du bloc, que l'on retouve en attribut class
170// $id : id de l'objet concerne si il y a lieu ou "", sert a construire un identifiant unique au bloc ("fonction-id")
171// https://code.spip.net/@ajax_action_greffe
172function ajax_action_greffe($fonction, $id, $corps)
173{
174        $idom = $fonction.(strlen($id)?"-$id":"");
175        return _AJAX
176                ? "$corps"
177                : "\n<div id='$idom' class='ajax-action $fonction'>$corps\n</div>\n";
178}
Note: See TracBrowser for help on using the repository browser.