From 76c3b6476aeed4f53108d6710526acf607122689 Mon Sep 17 00:00:00 2001
From: Cerdic <cedric@yterium.com>
Date: Tue, 5 Oct 2010 18:23:11 +0000
Subject: [PATCH] #FORMULAIRE_VIRTUALISER_ARTICLE, donc pour virtualiser en CVT
 et en passant par editer_article pour la mise a jour en base (donc pipelines
 etc...)

---
 .gitattributes                             |  6 +--
 ecrire/action/virtualiser.php              | 36 -----------------
 ecrire/exec/articles.php                   | 21 ++--------
 ecrire/exec/virtualiser.php                | 37 -----------------
 ecrire/inc/virtualiser.php                 | 36 -----------------
 prive/editer/dater.html                    |  7 ----
 prive/editer/virtualiser.html              |  3 ++
 prive/formulaires/virtualiser_article.html | 25 ++++++++++++
 prive/formulaires/virtualiser_article.php  | 46 ++++++++++++++++++++++
 9 files changed, 80 insertions(+), 137 deletions(-)
 delete mode 100644 ecrire/action/virtualiser.php
 delete mode 100644 ecrire/exec/virtualiser.php
 delete mode 100644 ecrire/inc/virtualiser.php
 create mode 100644 prive/editer/virtualiser.html
 create mode 100644 prive/formulaires/virtualiser_article.html
 create mode 100644 prive/formulaires/virtualiser_article.php

diff --git a/.gitattributes b/.gitattributes
index 97f870ec93..d301283fb4 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -40,7 +40,6 @@ ecrire/action/supprimer_traduction.php -text
 ecrire/action/tester.php -text
 ecrire/action/tester_taille.php -text
 ecrire/action/tourner.php -text
-ecrire/action/virtualiser.php -text
 ecrire/auth/sha256.inc.php -text
 ecrire/balise/configurer_metas.php -text
 ecrire/balise/formulaire_.php -text
@@ -131,7 +130,6 @@ ecrire/exec/synchro.php -text
 ecrire/exec/tourner.php -text
 ecrire/exec/upgrade.php -text
 ecrire/exec/valider_xml.php -text
-ecrire/exec/virtualiser.php -text
 ecrire/genie/maintenance.php -text
 ecrire/genie/mise_a_jour.php -text
 ecrire/inc/actions.php -text
@@ -212,7 +210,6 @@ ecrire/inc/traduire.php -text
 ecrire/inc/utils.php -text
 ecrire/inc/vieilles_defs.php -text
 ecrire/inc/vignette.php -text
-ecrire/inc/virtualiser.php -text
 ecrire/inc/xml.php -text
 ecrire/install/etape_.php -text
 ecrire/install/etape_1.php -text
@@ -336,6 +333,7 @@ prive/editer/auteur.html -text
 prive/editer/dater.html -text
 prive/editer/logo.html -text
 prive/editer/rubrique.html -text
+prive/editer/virtualiser.html -text
 prive/formulaires/configurer_annonces.html -text
 prive/formulaires/configurer_annonces.php -text
 prive/formulaires/configurer_articles.html -text
@@ -393,6 +391,8 @@ prive/formulaires/recherche_ecrire.html -text
 prive/formulaires/recherche_ecrire.php -text
 prive/formulaires/selecteur_groupe_mot.html -text
 prive/formulaires/selecteur_groupe_mot_fonctions.php -text
+prive/formulaires/virtualiser_article.html -text
+prive/formulaires/virtualiser_article.php -text
 prive/ical_prive.html -text
 prive/images/admin-12.gif -text
 prive/images/administration-24.gif -text
diff --git a/ecrire/action/virtualiser.php b/ecrire/action/virtualiser.php
deleted file mode 100644
index d1328806a4..0000000000
--- a/ecrire/action/virtualiser.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-/***************************************************************************\
- *  SPIP, Systeme de publication pour l'internet                           *
- *                                                                         *
- *  Copyright (c) 2001-2010                                                *
- *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
- *                                                                         *
- *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
- *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
-\***************************************************************************/
-
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-include_spip('inc/filtres');
-
-// http://doc.spip.org/@action_virtualiser_dist
-function action_virtualiser_dist() {
-
-	$securiser_action = charger_fonction('securiser_action', 'inc');
-	$arg = $securiser_action();
-	$url = _request('virtuel');
-
-	if (!preg_match(",^\W*(\d+)$,", $arg, $r)) {
-		 spip_log("action_virtualiser_dist $arg $url pas compris");
-	} else action_virtualiser_post($r, $url);
-}
-
-// http://doc.spip.org/@action_virtualiser_post
-function action_virtualiser_post($r, $url)
-{
-	$url = preg_replace(",^ *https?://$,i", "", rtrim($url));
-	if ($url) $url = corriger_caracteres("=$url");
-	sql_updateq('spip_articles', array('chapo'=> $url, 'date_modif' => date('Y-m-d H:i:s')), "id_article=" . $r[1]);
-}
-?>
diff --git a/ecrire/exec/articles.php b/ecrire/exec/articles.php
index eef813105b..9f12f2683f 100644
--- a/ecrire/exec/articles.php
+++ b/ecrire/exec/articles.php
@@ -227,24 +227,9 @@ function boites_de_config_articles($id_article)
 }
 
 // http://doc.spip.org/@boite_article_virtuel
-function boite_article_virtuel($id_article, $virtuel)
-{
-	if (!$virtuel
-	AND $GLOBALS['meta']['articles_redirection'] != 'oui')
-		return '';
-
-	$invite = '<b>'
-	._T('bouton_redirection')
-	. '</b>'
-	. aide ("artvirt");
-
-	$virtualiser = charger_fonction('virtualiser', 'inc');
-
-	return cadre_depliable("site-24.png",
-		$invite,
-		$virtuel,
-		$virtualiser($id_article, $virtuel, "articles", "id_article=$id_article"),
-		'redirection');
+function boite_article_virtuel($id_article, $virtuel){
+	return
+		recuperer_fond('prive/editer/virtualiser',array('id_article'=>$id_article));
 }
 
 // http://doc.spip.org/@bouton_modifier_articles
diff --git a/ecrire/exec/virtualiser.php b/ecrire/exec/virtualiser.php
deleted file mode 100644
index c5c739a061..0000000000
--- a/ecrire/exec/virtualiser.php
+++ /dev/null
@@ -1,37 +0,0 @@
-<?php
-
-/***************************************************************************\
- *  SPIP, Systeme de publication pour l'internet                           *
- *                                                                         *
- *  Copyright (c) 2001-2010                                                *
- *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
- *                                                                         *
- *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
- *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
-\***************************************************************************/
-
-if (!defined("_ECRIRE_INC_VERSION")) return;
-
-// http://doc.spip.org/@exec_virtualiser_dist
-function exec_virtualiser_dist()
-{
-	$id_article = intval(_request('id_article'));
-
-	if (!autoriser('modifier', 'article', $id_article)) {
-		include_spip('inc/minipres');
-		echo minipres();
-	} else {
-		include_spip('inc/actions');
-		$r = sql_fetsel("chapo", "spip_articles", "id_article=$id_article");
-
-		$virtuel = $r['chapo'];
-
-		if (substr($virtuel, 0, 1) == '=') {
-			$virtuel = substr($virtuel, 1);
-		}
-
-		$virtualiser = charger_fonction('virtualiser', 'inc');
-		ajax_retour($virtualiser($id_article, $virtuel, "articles", "id_article=$id_article"));
-	}
-}
-?>
diff --git a/ecrire/inc/virtualiser.php b/ecrire/inc/virtualiser.php
deleted file mode 100644
index 22d8f0b00a..0000000000
--- a/ecrire/inc/virtualiser.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-/***************************************************************************\
- *  SPIP, Systeme de publication pour l'internet                           *
- *                                                                         *
- *  Copyright (c) 2001-2010                                                *
- *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
- *                                                                         *
- *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
- *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
-\***************************************************************************/
-
-if (!defined("_ECRIRE_INC_VERSION")) return;
-include_spip('inc/actions');
-
-// http://doc.spip.org/@inc_virtualiser_dist
-function inc_virtualiser_dist($id_article, $virtuel, $script, $args){
-	global $spip_lang_right;
-
-	$res = "<input type='text' name='virtuel' id ='virtuel$id_article' class='formo spip_xx-small' value='"
-	. ($virtuel ? "" : "http://")
-	. $virtuel
-	. "' size='40' /><br />\n"
-	. "<span class='verdana1 spip_x-small'>(<label for='virtuel$id_article'><b>"
-	. _T('texte_article_virtuel')
-	. (!$virtuel ? '' : " $virtuel")
-	. "&nbsp;:</b></label> "
-	.  _T('texte_reference_mais_redirige')
-	. ")</span><br />";
-
-	$res = ajax_action_post('virtualiser', $id_article, $script, $args, $res, _T('bouton_changer'), " class='fondo spip_xx-small' style='float: $spip_lang_right'")
-	  . "<br class='nettoyeur' />";
-
-	return ajax_action_greffe("virtualiser", $id_article, $res);
-}
-?>
diff --git a/prive/editer/dater.html b/prive/editer/dater.html
index 6c9daa3341..b3e3d76f2a 100644
--- a/prive/editer/dater.html
+++ b/prive/editer/dater.html
@@ -1,10 +1,3 @@
-[(#REM)
-
-  Squelette
-  (c) 2009 xxx
-  Distribue sous licence GPL
-
-]
 <div class="ajax">
 	#FORMULAIRE_DATER{#ENV{objet},#ENV{id_objet}}
 </div>
\ No newline at end of file
diff --git a/prive/editer/virtualiser.html b/prive/editer/virtualiser.html
new file mode 100644
index 0000000000..abf7c06ee3
--- /dev/null
+++ b/prive/editer/virtualiser.html
@@ -0,0 +1,3 @@
+<div class="ajax">
+	#FORMULAIRE_VIRTUALISER_ARTICLE{#ENV{id_article}}
+</div>
\ No newline at end of file
diff --git a/prive/formulaires/virtualiser_article.html b/prive/formulaires/virtualiser_article.html
new file mode 100644
index 0000000000..47acea94b7
--- /dev/null
+++ b/prive/formulaires/virtualiser_article.html
@@ -0,0 +1,25 @@
+<div class="formulaire_spip formulaire_#FORM formulaire_#FORM-#ENV{id}" id="formulaire_#FORM-#ENV{id}">
+	[<h3 class="titrem">[(#CHEMIN_IMAGE{site-24.png}|balise_img{'','cadre-icone'})]<:texte_article_virtuel:><br />(#ENV**{_afficher_url}|PtoBR)</h3>]
+	[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
+	[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
+	[(#ENV{editable})
+	<form method='post' action='#ENV{action}' enctype='multipart/form-data'><div>
+		[(#REM) declarer les hidden qui declencheront le service du formulaire
+		parametre : url d'action ]
+		#ACTION_FORMULAIRE{#ENV{action}}
+		<ul>
+			#SET{name,virtuel}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
+			<li class="editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
+				<label for="#GET{name}-#ENV{id}"><:bouton_redirection:> #AIDER{artvirt}</label>[
+				<span class='erreur_message'>(#GET{erreurs})</span>
+				]<input type="text" class="text" name="#GET{name}" id="#GET{name}-#ENV{id}" value="#ENV{#GET{name},'http://'}"
+				onkeypress="jQuery(this).parents('ul').siblings('.boutons:hidden').show('fast');"/>
+				<p class="explication"><:texte_reference_mais_redirige:></p>
+			</li>
+		</ul>
+	  [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
+	  <!--extra-->
+	  <p class='boutons' style="display:none;"><span class='image_loading'>&nbsp;</span><input type='submit' class='submit' value='<:bouton_changer:>' /></p>
+	</div></form>
+	]
+</div>
\ No newline at end of file
diff --git a/prive/formulaires/virtualiser_article.php b/prive/formulaires/virtualiser_article.php
new file mode 100644
index 0000000000..013cd49238
--- /dev/null
+++ b/prive/formulaires/virtualiser_article.php
@@ -0,0 +1,46 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2009                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+function formulaires_virtualiser_article_charger_dist($id_article,$retour=''){
+
+	$row = sql_fetsel('id_article,chapo','spip_articles','id_article='.intval($id_article));
+	if (!$row['id_article'])
+		return false;
+
+	$virtuel = (strncmp($row["chapo"],'=',1)!==0) ? '' : chapo_redirige(substr($row["chapo"], 1));
+
+	if (!$virtuel
+		AND $GLOBALS['meta']['articles_redirection'] != 'oui')
+		return false;
+
+
+	$valeurs = array(
+		'virtuel'=>$virtuel,
+		'id'=>$id_article,
+		'_afficher_url' => ($virtuel?propre("[->$virtuel]"):''),
+		);
+	return $valeurs;
+}
+
+function formulaires_virtualiser_article_traiter_dist($id_article,$retour=''){
+
+	$url = preg_replace(",^\s*https?://$,i", "", rtrim(_request('virtuel')));
+	if ($url) $url = corriger_caracteres("=$url");
+
+	include_spip('action/editer_article');
+	articles_set($id_article, array('chapo'=>$url));
+
+	return array('message_ok'=>'','editable'=>true);
+}
+?>
\ No newline at end of file
-- 
GitLab