X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fplugins-dist%2Fsvp%2Faction%2Factionner.php;fp=www%2Fplugins-dist%2Fsvp%2Faction%2Factionner.php;h=d0c4f411cf502631f9a4a830e7ed4aa28898af94;hb=4f443dce95ff6f8221c189880a70c74ce1c1f238;hp=259e46d50d71278c39d200ee65ffac2a8ae4c763;hpb=4a628e9b277d3617535f99d663ca79fa2e891177;p=lhc%2Fweb%2Fwww.git
diff --git a/www/plugins-dist/svp/action/actionner.php b/www/plugins-dist/svp/action/actionner.php
index 259e46d5..d0c4f411 100644
--- a/www/plugins-dist/svp/action/actionner.php
+++ b/www/plugins-dist/svp/action/actionner.php
@@ -7,8 +7,10 @@
* @license GPL
* @package SPIP\SVP\Actions
*/
-
-if (!defined("_ECRIRE_INC_VERSION")) return;
+
+if (!defined("_ECRIRE_INC_VERSION")) {
+ return;
+}
/**
* Action effectuant 1 action dans la liste des actions à réaliser
@@ -29,6 +31,7 @@ function action_actionner_dist() {
include_spip('inc/headers');
$actionneur = new Actionneur();
$actionneur->get_actions();
+
if ($actionneur->one_action()) {
// si SVP a été enlevé des actifs, on redirige sur la fin...
// sinon cette page d'action/actionner devient introuvable.
@@ -37,7 +40,7 @@ function action_actionner_dist() {
if ($actionneur->tester_si_svp_desactive()) {
$url = _request('redirect');
} else {
- $url = generer_action_auteur('actionner', '', _request('redirect'));
+ $url = generer_action_auteur('actionner', '', _request('redirect'));
}
// en mode pas à pas, on affiche un bilan entre chaque action
@@ -54,21 +57,83 @@ function action_actionner_dist() {
#minipres #actionner ul {margin-left: 0.5em;}
#minipres #actionner li {list-style-type:square; margin-left: 0.5em;}
";
- echo minipres( _T('svp:installation_en_cours'), $pres . '
' . $btn . $styles);
+ echo minipres(_T('svp:installation_en_cours'), $pres . '
' . $btn . $styles);
die();
}
- redirige_par_entete(str_replace('&','&', $url));
+ // s'il n'y avait en tout est pour tout qu'une seule action, rediriger directement
+ if ($actionneur->progression() === 1 and count($actionneur->done) === 1) {
+ redirige_par_entete(str_replace('&', '&', $url));
+ }
+ // sinon bel affichage de la progression
+ svp_redirige_boucle(
+ str_replace('&', '&', $url),
+ $actionneur->presenter_derniere_action(),
+ $actionneur->progression()
+ );
+ }
+
+ foreach ($actionneur->done as $done) {
+ if ($done['todo'] == 'on') {
+ if ($voir = session_get('svp_admin_plugin_voir')
+ and $voir == 'inactif'
+ ) {
+ session_set('svp_admin_plugin_voir', 'actif');
+ }
+ break;
+ }
}
-
+
include_spip('inc/svp_depoter_local');
svp_actualiser_paquets_locaux();
- if (!_request('redirect'))
+ if (!_request('redirect')) {
$GLOBALS['redirect'] = generer_url_ecrire('admin_plugin');
- else
- $GLOBALS['redirect'] = str_replace('&','&', _request('redirect'));
-
+ } else {
+ $GLOBALS['redirect'] = str_replace('&', '&', _request('redirect'));
+ }
}
-?>
+/**
+ * Redirections par refresh d'une URL afin d'éviter des blocages de redirections par les navigateurs
+ * lorsqu'elles sont trop nombreuses
+ *
+ * @param string $url
+ * @param string $texte Texte de l'action réalisée
+ * @param string $progres
+ */
+function svp_redirige_boucle($url, $texte, $progres){
+ include_spip('inc/minipres');
+
+ //@apache_setenv('no-gzip', 1); // provoque page blanche chez certains hebergeurs donc ne pas utiliser
+ @ini_set('zlib.output_compression', '0'); // pour permettre l'affichage au fur et a mesure
+ @ini_set('output_buffering', 'off');
+ @ini_set('implicit_flush', 1);
+ @ob_implicit_flush(1);
+
+ $pres = '';
+ $pres .="
+