Skip to content
Extraits de code Groupes Projets
Valider 041ec822 rédigé par cerdic's avatar cerdic
Parcourir les fichiers

l'edition d'un article dans le prive passe par #FORMULAIRE_EDITER_ARTICLE

ce mode de fonctionnement permet de recuperer les messages d'erreurs lies aux controles md5 sur chaque champ
il serait possible d'avoir 2 boutons de soumission : Enregistrer / Enregistrer et retour
dist/prive/editer/article prend maintenant en charge tout le cadre du milieu de articles_edit, ce qui rapproche un peu plus du squelette pour la page complete
parent fb05915e
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -303,7 +303,6 @@ dist/prive/contenu/breve.html -text ...@@ -303,7 +303,6 @@ dist/prive/contenu/breve.html -text
dist/prive/contenu/rubrique.html -text dist/prive/contenu/rubrique.html -text
dist/prive/contenu/site.html -text dist/prive/contenu/site.html -text
dist/prive/editer/article.html -text dist/prive/editer/article.html -text
dist/prive/editer/article_fonctions.php -text
dist/prive/infos/article.html -text dist/prive/infos/article.html -text
dist/prive/infos/article_fonctions.php -text dist/prive/infos/article_fonctions.php -text
dist/prive/infos/auteur.html -text dist/prive/infos/auteur.html -text
......
<form method='post' action='#ENV{action}' enctype='multipart/form-data'> <div class='formfx'>
[(#REM) declarer les hidden qui declencheront le service du formulaire <br class='spacer' />
parametre : url d'action ] [<p class="formulaire_message">(#ENV*{message_ok})</p>]
#ACTION_FORMULAIRE{#ENV{action}} [<p class='formulaire_erreur'>(#ENV*{message_erreur})</p>]
<input type='hidden' name='id_article' value='#ENV{id_article}' /> [(#ENV{editable})
<fieldset> <form method='post' action='#ENV{action}' enctype='multipart/form-data' >
<ol class="formfx"> [(#REM) declarer les hidden qui declencheront le service du formulaire
[(#ENV**{config}|table_valeur{articles_surtitre}|=={non}|?{#ENV**{surtitre,''},' '}|?{' '}) parametre : url d'action ]
<li class="gauche"> #ACTION_FORMULAIRE{#ENV{action}}
<label for="surtitre"><:texte_sur_titre:><em>#AIDER{arttitre}</em></label> <input type='hidden' name='id_article' value='#ENV{id_article}' />
<input type='text' name='surtitre' id='surtitre' class='forml' value="[(#ENV**{surtitre}|entites_html)]" /> <fieldset>
[<span class='erreur'>(#ENV**{erreurs}|table_valeur{surtitre})</span>] <ol class="formfx">
</li>] [(#ENV**{config}|table_valeur{articles_surtitre}|=={non}|?{#ENV**{surtitre,''},' '}|?{' '})
<li class="gauche gauche_obligatoire"> <li class="gauche">
<label for="titre"><:info_titre:><em>#AIDER{arttitre}</em></label> <label for="surtitre"><:texte_sur_titre:><em>#AIDER{arttitre}</em></label>
<input type='text' name='titre' id='titre' class='formo' value="[(#ENV**{titre,#REM|concat{info_nouvel_article}|_T}|entites_html)]" <input type='text' name='surtitre' id='surtitre' class='forml' value="[(#ENV**{surtitre}|entites_html)]" />
[(#ENV{titre,''}|?{'',' '})onfocus="if(!antifocus){this.value='';antifocus=true;}"]/> [<span class='erreur'>(#ENV**{erreurs}|table_valeur{surtitre})</span>]
[<span class='erreur'>(#ENV**{erreurs}|table_valeur{titre})</span>] </li>]
</li> <li class="gauche gauche_obligatoire">
[(#ENV**{config}|table_valeur{articles_soustitre}|=={non}|?{#ENV**{soustitre,''},' '}|?{' '}) <label for="titre"><:info_titre:><em>#AIDER{arttitre}</em></label>
<li class="gauche"> <input type='text' name='titre' id='titre' class='formo' value="[(#ENV**{titre,#REM|concat{info_nouvel_article}|_T}|entites_html)]"
<label for="soustitre"><:texte_sous_titre:><em>#AIDER{arttitre}</em></label> [(#ENV{titre,''}|?{'',' '})onfocus="if(!antifocus){this.value='';antifocus=true;}"]/>
<input type='text' name='soustitre' id='soustitre' class='forml' value="[(#ENV**{soustitre}|entites_html)]" /> [<span class='erreur'>(#ENV**{erreurs}|table_valeur{titre})</span>]
[<span class='erreur'>(#ENV**{erreurs}|table_valeur{soustitre})</span>] </li>
</li>] [(#ENV**{config}|table_valeur{articles_soustitre}|=={non}|?{#ENV**{soustitre,''},' '}|?{' '})
<li class="gauche">
[(#REM|sinon{titre_cadre_interieur_rubrique}|_T|concat{' ',#AIDER{artrub}} <label for="soustitre"><:texte_sous_titre:><em>#AIDER{arttitre}</em></label>
|chercher_rubrique{#ENV{id_rubrique}, #ENV{id_secteur},#ENV**{config}|table_valeur{restreint}})] <input type='text' name='soustitre' id='soustitre' class='forml' value="[(#ENV**{soustitre}|entites_html)]" />
[<span class='erreur'>(#ENV**{erreurs}|table_valeur{soustitre})</span>]
[(#ENV**{config}|table_valeur{articles_descriptif}|=={non}|?{#ENV**{descriptif,''},' '}|?{' '}) </li>]
<li class="haut">
<label for="descriptif"><:texte_descriptif_rapide:><em>#AIDER{artdesc}</em></label> [(#REM|sinon{titre_cadre_interieur_rubrique}|_T|concat{' ',#AIDER{artrub}}
<textarea name='descriptif' id='descriptif' class='forml' rows='2' cols='40'>[(#ENV**{descriptif}|entites_html)]</textarea> |chercher_rubrique{#ENV{id_rubrique}, #ENV{id_secteur},#ENV**{config}|table_valeur{restreint}})]
[<span class='erreur'>(#ENV**{erreurs}|table_valeur{desctiptid})</span>]
</li>] [(#ENV**{config}|table_valeur{articles_descriptif}|=={non}|?{#ENV**{descriptif,''},' '}|?{' '})
[(#ENV**{config}|table_valeur{articles_chapeau}|=={non}|?{#ENV**{chapo,''},' '}|?{' '}) <li class="haut">
[<li class='haut redirection'>(#ENV**{chapo}|match{^=}|?{' '}) <label for="descriptif"><:texte_descriptif_rapide:><em>#AIDER{artdesc}</em></label>
<label for='virtuel'><:info_redirection:></label> <textarea name='descriptif' id='descriptif' class='forml' rows='2' cols='40'>[(#ENV**{descriptif}|entites_html)]</textarea>
<input type='text' name='virtuel' id='virtuel' class='forml' value="[(#ENV**{chapo}|replace{^=,''}|entites_html)]" /> [<span class='erreur'>(#ENV**{erreurs}|table_valeur{desctiptid})</span>]
<input type='hidden' name='changer_virtuel' value='oui' /> </li>]
<div class='commentaire_bas'><:texte_article_virtuel_reference:>#AIDER{artvirt}</div> [(#ENV**{config}|table_valeur{articles_chapeau}|=={non}|?{#ENV**{chapo,''},' '}|?{' '})
</li>] [<li class='haut redirection'>(#ENV**{chapo}|match{^=}|?{' '})
[<li class="haut">(#ENV**{chapo}|match{^=}|?{'',' '}) <label for='virtuel'><:info_redirection:></label>
<label for="chapo"><:info_chapeau:><em>#AIDER{arttitre}</em></label> <input type='text' name='virtuel' id='virtuel' class='forml' value="[(#ENV**{chapo}|replace{^=,''}|entites_html)]" />
<textarea name='chapo' id='chapo' class='forml'[ rows='(#ENV**{config}|table_valeur{lignes})'] cols='40'>[(#ENV**{chapo}|entites_html)]</textarea> <input type='hidden' name='changer_virtuel' value='oui' />
[<span class='erreur'>(#ENV**{erreurs}|table_valeur{chapo})</span>] <div class='commentaire_bas'><:texte_article_virtuel_reference:>#AIDER{artvirt}</div>
</li>] </li>]
] [<li class="haut">(#ENV**{chapo}|match{^=}|?{'',' '})
[(#ENV**{config}|table_valeur{articles_urlref}|=={non}|?{#ENV**{url_site,#ENV**{nom_site,''}},' '}|?{' '}) <label for="chapo"><:info_chapeau:><em>#AIDER{arttitre}</em></label>
<fieldset> <textarea name='chapo' id='chapo' class='forml'[ rows='(#ENV**{config}|table_valeur{lignes})'] cols='40'>[(#ENV**{chapo}|entites_html)]</textarea>
<legend><:entree_liens_sites:></legend><ol> [<span class='erreur'>(#ENV**{erreurs}|table_valeur{chapo})</span>]
<li class="gauche"> </li>]
<label for="nom_site"><:info_titre:></label> ]
<input type='text' name='nom_site' id='nom_site' class='forml' value="[(#ENV**{nom_site}|entites_html)]" /> [(#ENV**{config}|table_valeur{articles_urlref}|=={non}|?{#ENV**{url_site,#ENV**{nom_site,''}},' '}|?{' '})
[<span class='erreur'>(#ENV**{erreurs}|table_valeur{nom_site})</span>] <fieldset>
</li> <legend><:entree_liens_sites:></legend><ol>
<li class="gauche"> <li class="gauche">
<label for="url_site"><:info_url:></label> <label for="nom_site"><:info_titre:></label>
<input type='text' name='url_site' id='url_site' class='forml' value="[(#ENV**{url_site}|entites_html)]" /> <input type='text' name='nom_site' id='nom_site' class='forml' value="[(#ENV**{nom_site}|entites_html)]" />
[<span class='erreur'>(#ENV**{erreurs}|table_valeur{url_site})</span>] [<span class='erreur'>(#ENV**{erreurs}|table_valeur{nom_site})</span>]
</li></ol> </li>
</fieldset>] <li class="gauche">
[(#ENV**{config}|table_valeur{articles_texte}|=={non}|?{#ENV**{texte,''},' '}|?{' '}) <label for="url_site"><:info_url:></label>
<li class="haut"> <input type='text' name='url_site' id='url_site' class='forml' value="[(#ENV**{url_site}|entites_html)]" />
<label for="text_area"><:info_texte:><em>#AIDER{arttexte}</em></label> [<span class='erreur'>(#ENV**{erreurs}|table_valeur{url_site})</span>]
<div class="commentaire"><:texte_enrichir_mise_a_jour:><em>#AIDER{raccourcis}</em></div> </li></ol>
[(#ENV**{config}|table_valeur{afficher_barre}|?{#VAL{text_area}|barre_typo{#LANG}})] </fieldset>]
<textarea name='texte' id='text_area' class='formo barre_inserer' rows='[(#ENV**{config}|table_valeur{lignes}|plus{2})]' cols='40'[ [(#ENV**{config}|table_valeur{articles_texte}|=={non}|?{#ENV**{texte,''},' '}|?{' '})
(#ENV**{browser_caret,''})]>[(#ENV**{texte}|entites_html)]</textarea> <li class="haut">
[<span class='erreur'>(#ENV**{erreurs}|table_valeur{texte})</span>] <label for="text_area"><:info_texte:><em>#AIDER{arttexte}</em></label>
<div class="commentaire"><:texte_enrichir_mise_a_jour:><em>#AIDER{raccourcis}</em></div>
<script type='text/javascript'><!-- [(#ENV**{config}|table_valeur{afficher_barre}|?{#VAL{text_area}|barre_typo{#LANG}})]
jQuery(function(){ <textarea name='texte' id='text_area' class='formo barre_inserer' rows='[(#ENV**{config}|table_valeur{lignes}|plus{2})]' cols='40'[
jQuery('#text_area') (#ENV**{browser_caret,''})]>[(#ENV**{texte}|entites_html)]</textarea>
.height((jQuery(window).height()-80)+'px'); [<span class='erreur'>(#ENV**{erreurs}|table_valeur{texte})</span>]
});
//--></script> <script type='text/javascript'><!--
jQuery(function(){
</li>] jQuery('#text_area')
[(#ENV**{config}|table_valeur{articles_ps}|=={non}|?{#ENV**{ps,''},' '}|?{' '}) .height((jQuery(window).height()-80)+'px');
<li class="haut"> });
<label for="ps"><:info_post_scriptum:></label> //--></script>
<textarea name='ps' id='ps' class='forml' rows='5' cols='40'>[(#ENV**{ps}|entites_html)]</textarea>
[<span class='erreur'>(#ENV**{erreurs}|table_valeur{ps})</span>] </li>]
</li>] [(#ENV**{config}|table_valeur{articles_ps}|=={non}|?{#ENV**{ps,''},' '}|?{' '})
</ol> <li class="haut">
</fieldset> <label for="ps"><:info_post_scriptum:></label>
[(#ENV**{config}|table_valeur{extra}|?{ <textarea name='ps' id='ps' class='forml' rows='5' cols='40'>[(#ENV**{ps}|entites_html)]</textarea>
[<span class='erreur'>(#ENV**{erreurs}|table_valeur{ps})</span>]
[(#ENV**{extra}|editer_extra{#ENV{id_secteur}})] </li>]
</ol>
})] </fieldset>
<div style='text-align: right'><input class='fondo' type='submit' value='<:bouton_enregistrer:>' /></div> [(#ENV**{config}|table_valeur{extra}|?{
</form>
\ No newline at end of file [(#ENV**{extra}|editer_extra{#ENV{id_secteur}})]
})]
<div style='text-align: right'><input class='fondo' type='submit' value='<:bouton_enregistrer:>' /></div>
</form>
]
</div>
\ No newline at end of file
...@@ -18,10 +18,12 @@ include_spip('inc/editer'); ...@@ -18,10 +18,12 @@ include_spip('inc/editer');
function formulaires_editer_article_verifier_dist($id_article='new', $id_rubrique=0, $lier_trad=0, $retour='', $config_fonc='articles_edit_config', $row=array(), $hidden=''){ function formulaires_editer_article_verifier_dist($id_article='new', $id_rubrique=0, $lier_trad=0, $retour='', $config_fonc='articles_edit_config', $row=array(), $hidden=''){
$erreurs = array(); $erreurs = array();
$conflits = controler_contenu('article',$id_article); if (intval($id_article)) {
if (count($conflits)) { $conflits = controler_contenu('article',$id_article);
foreach($conflits as $champ=>$conflit){ if (count($conflits)) {
$erreurs[$champ] .= _L("ATTENTION : Ce champ a &eacute;t&eacute; modifi&eacute; par ailleurs. La valeur actuelle est :<br />".$conflit['base']); foreach($conflits as $champ=>$conflit){
$erreurs[$champ] .= _L("ATTENTION : Ce champ a &eacute;t&eacute; modifi&eacute; par ailleurs. La valeur actuelle est :<br /><textarea readonly='readonly' class='forml'>".$conflit['base']."</textarea>");
}
} }
} }
......
<script type="text/javascript"><!-- #ENV**{icone_retour}
/* [<:texte_modifier_article:>
$(function(){ <h1>(#ENV{titre})</h1>]
$('div.cadre-formulaire form') <hr class='fin_article_presentation' />
.hide() #FORMULAIRE_EDITER_ARTICLE{#ENV{new},#ENV{id_rubrique},#ENV{lier_trad},#ENV{redirect},#ENV{config_fonc}}
.find('ol li label:not(.nocmx)') \ No newline at end of file
// .css('display','-moz-inline-box')
.wrap('<span style="display:block;width:463px;"><\/span>')
.end()
.show();
});
*/
//--></script>
<ol class="formfx">
[(#ENV**{config}|table_valeur{articles_surtitre}|=={non}|?{#ENV**{surtitre,''},' '}|?{' '})
<li class="gauche">
<label for="surtitre"><:texte_sur_titre:><em>#AIDER{arttitre}</em></label>
<input type='text' name='surtitre' id='surtitre' class='forml' value="[(#ENV**{surtitre}|entites_html)]" />
</li>]
<li class="gauche gauche_obligatoire">
<label for="titre"><:info_titre:><em>#AIDER{arttitre}</em></label>
<input type='text' name='titre' id='titre' class='formo' value="[(#ENV**{titre,#REM|concat{info_nouvel_article}|_T}|entites_html)]"
[(#ENV{titre,''}|?{'',' '})onfocus="if(!antifocus){this.value='';antifocus=true;}"]/>
</li>
[(#ENV**{config}|table_valeur{articles_soustitre}|=={non}|?{#ENV**{soustitre,''},' '}|?{' '})
<li class="gauche">
<label for="soustitre"><:texte_sous_titre:><em>#AIDER{arttitre}</em></label>
<input type='text' name='soustitre' id='soustitre' class='forml' value="[(#ENV**{soustitre}|entites_html)]" />
</li>]
[(#REM|sinon{titre_cadre_interieur_rubrique}|_T|concat{' ',#AIDER{artrub}}
|chercher_rubrique{#ENV{id_rubrique}, #ENV{id_secteur},#ENV**{config}|table_valeur{restreint}})]
[(#ENV**{config}|table_valeur{articles_descriptif}|=={non}|?{#ENV**{descriptif,''},' '}|?{' '})
<li class="haut">
<label for="descriptif"><:texte_descriptif_rapide:><em>#AIDER{artdesc}</em></label>
<textarea name='descriptif' id='descriptif' class='forml' rows='2' cols='40'>[(#ENV**{descriptif}|entites_html)]</textarea>
</li>]
[(#ENV**{config}|table_valeur{articles_chapeau}|=={non}|?{#ENV**{chapo,''},' '}|?{' '})
[<li class='haut redirection'>(#ENV**{chapo}|match{^=}|?{' '})
<label for='virtuel'><:info_redirection:></label>
<input type='text' name='virtuel' id='virtuel' class='forml' value="[(#ENV**{chapo}|replace{^=,''}|entites_html)]" />
<input type='hidden' name='changer_virtuel' value='oui' />
<div class='commentaire_bas'><:texte_article_virtuel_reference:>#AIDER{artvirt}</div>
</li>]
[<li class="haut">(#ENV**{chapo}|match{^=}|?{'',' '})
<label for="chapo"><:info_chapeau:><em>#AIDER{arttitre}</em></label>
<textarea name='chapo' id='chapo' class='forml'[ rows='(#ENV**{config}|table_valeur{lignes})'] cols='40'>[(#ENV**{chapo}|entites_html)]</textarea>
</li>]
]
[(#ENV**{config}|table_valeur{articles_urlref}|=={non}|?{#ENV**{url_site,#ENV**{nom_site,''}},' '}|?{' '})
<fieldset>
<legend><:entree_liens_sites:></legend><ol>
<li class="gauche">
<label><:info_titre:></label>
<input type='text' name='nom_site' id='nom_site' class='forml' value="[(#ENV**{nom_site}|entites_html)]" />
</li>
<li class="gauche">
<label for="url_site"><:info_url:></label>
<input type='text' name='url_site' id='url_site' class='forml' value="[(#ENV**{url_site}|entites_html)]" />
</li></ol>
</fieldset>]
[(#ENV**{config}|table_valeur{articles_texte}|=={non}|?{#ENV**{texte,''},' '}|?{' '})
<li class="haut">
<label for="text_area"><:info_texte:><em>#AIDER{arttexte}</em></label>
<div class="commentaire"><:texte_enrichir_mise_a_jour:><em>#AIDER{raccourcis}</em></div>
[(#ENV**{config}|table_valeur{afficher_barre}|?{#VAL{text_area}|barre_typo{#LANG}})]
<textarea name='texte' id='text_area' class='formo barre_inserer' rows='[(#ENV**{config}|table_valeur{lignes}|plus{2})]' cols='40'[
(#ENV**{browser_caret,''})]>[(#ENV**{texte}|entites_html)]</textarea>
<script type='text/javascript'><!--
jQuery(function(){
jQuery('#text_area')
.height((jQuery(window).height()-80)+'px');
});
//--></script>
</li>]
[(#ENV**{config}|table_valeur{articles_ps}|=={non}|?{#ENV**{ps,''},' '}|?{' '})
<li class="haut">
<label for="ps"><:info_post_scriptum:></label>
<textarea name='ps' id='ps' class='forml' rows='5' cols='40'>[(#ENV**{ps}|entites_html)]</textarea>
</li>]
</ol>
[(#ENV**{config}|table_valeur{extra}|?{
[(#ENV**{extra}|editer_extra{#ENV{id_secteur}})]
})]
<?php
function chercher_rubrique($msg, $id_rubrique, $id_secteur, $restreint){
$chercher_rubrique = charger_fonction('chercher_rubrique', 'inc');
$opt = $chercher_rubrique($id_rubrique, 'article', $restreint);
if ($id_rubrique == 0) $logo = "racine-site-24.gif";
elseif ($id_secteur == $id_rubrique) $logo = "secteur-24.gif";
else $logo = "rubrique-24.gif";
return debut_cadre_couleur($logo, true, "", $msg) . $opt .fin_cadre_couleur(true);
}
function barre_typo($id,$lang=''){
include_spip('inc/barre');
return '<div>' . afficher_barre("document.getElementById('$id')",false,$lang) . '</div>';
}
function editer_extra($extra,$id_secteur) {
include_spip('inc/extra');
return extra_saisie($extra, 'articles', $id_secteur);
}
?>
\ No newline at end of file
...@@ -99,6 +99,8 @@ hr.fin_article_presentation { ...@@ -99,6 +99,8 @@ hr.fin_article_presentation {
} }
.formfx fieldset {border:0;margin:0;padding:0;}
.formfx span.erreur {color:red;font-weight:bold;}
ol.formfx { ol.formfx {
line-height: auto; line-height: auto;
padding: 0px; padding: 0px;
......
...@@ -88,9 +88,9 @@ function articles_edit($id_article, $id_rubrique, $lier_trad, $id_version, $new, ...@@ -88,9 +88,9 @@ function articles_edit($id_article, $id_rubrique, $lier_trad, $id_version, $new,
echo debut_droite("",true); echo debut_droite("",true);
echo debut_cadre_formulaire("", true); echo debut_cadre_formulaire("", true);
echo articles_edit_presentation($new, $row['id_rubrique'], $lier_trad, $row['id_article'], $row['titre']); echo articles_edit_presentation($new, $row['id_rubrique'], $lier_trad, $row['id_article'], $row['titre'],$config_fonc);
$editer_article = charger_fonction('editer_article', 'inc'); /*$editer_article = charger_fonction('editer_article', 'inc');
echo $editer_article($new, $id_rubrique, $lier_trad, generer_url_ecrire("articles"), $config_fonc, $row); echo $editer_article($new, $id_rubrique, $lier_trad, generer_url_ecrire("articles"), $config_fonc, $row);*/
echo fin_cadre_formulaire(true); echo fin_cadre_formulaire(true);
echo pipeline('affiche_milieu',array('args'=>array('exec'=>'articles_edit','id_article'=>$id_article),'data'=>'')); echo pipeline('affiche_milieu',array('args'=>array('exec'=>'articles_edit','id_article'=>$id_article),'data'=>''));
...@@ -99,20 +99,24 @@ function articles_edit($id_article, $id_rubrique, $lier_trad, $id_version, $new, ...@@ -99,20 +99,24 @@ function articles_edit($id_article, $id_rubrique, $lier_trad, $id_version, $new,
} }
// http://doc.spip.org/@articles_edit_presentation // http://doc.spip.org/@articles_edit_presentation
function articles_edit_presentation($new, $id_rubrique, $lier_trad, $id_article, $titre) function articles_edit_presentation($new, $id_rubrique, $lier_trad, $id_article, $titre, $config_fonc){
{
global $spip_lang_right;
$oups = ($lier_trad ? $oups = ($lier_trad ?
generer_url_ecrire("articles","id_article=$lier_trad") generer_url_ecrire("articles","id_article=$lier_trad")
: ($new : ($new
? generer_url_ecrire("naviguer","id_rubrique=$id_rubrique") ? generer_url_ecrire("naviguer","id_rubrique=$id_rubrique")
: generer_url_ecrire("articles","id_article=$id_article") : generer_url_ecrire("articles","id_article=$id_article")
)); ));
$contexte = array(
return 'icone_retour'=>icone_inline(_T('icone_retour'), $oups, "article-24.gif", "rien.gif",$GLOBALS['spip_lang_right']),
icone_inline(_T('icone_retour'), $oups, "article-24.gif", "rien.gif",$spip_lang_right) . 'redirect'=>generer_url_ecrire("articles"),
_T('texte_modifier_article') . 'titre'=>$titre,
gros_titre($titre,'',false) . 'new'=>$new?$new:$id_article,
"<hr class='fin_article_presentation' />\n"; 'id_rubrique'=>$id_rubrique,
'lier_trad'=>$lier_trad,
# 'id_article'=>$id_article,
'config_fonc'=>$config_fonc
);
$page = evaluer_fond("prive/editer/article", $contexte, $connect);
return $page['texte'];
} }
?> ?>
...@@ -170,6 +170,11 @@ AND $l = @unserialize($l)) { ...@@ -170,6 +170,11 @@ AND $l = @unserialize($l)) {
} }
} }
if (_request('var_ajax') OR _request('formulaire_action')){
include_spip('public/assembler');
traiter_formulaires_dynamiques();
}
// Passer la main aux outils XML a la demande (meme les redac s'ils veulent). // Passer la main aux outils XML a la demande (meme les redac s'ils veulent).
if ($var_f = _request('transformer_xml')) { if ($var_f = _request('transformer_xml')) {
set_request('var_url', $exec); set_request('var_url', $exec);
......
...@@ -74,6 +74,62 @@ function init_var_mode(){ ...@@ -74,6 +74,62 @@ function init_var_mode(){
} }
} }
function traiter_formulaires_dynamiques(){
static $done = false;
if (!$done) {
// traiter les appels de bloc ajax
if (($v=_request('var_ajax'))
AND ($v!=='form')
AND ($args = _request('var_ajax_env'))
AND ($cle = _request('var_ajax_cle')) ){
if ((include_spip('inc/securiser_action'))
AND ($cle == calculer_cle_action($args))) {
$args = unserialize(base64_decode($args));
if ($fond = $args['fond_ajax']){
include_spip('public/parametrer');
$contexte = calculer_contexte();
$contexte = array_merge($args, $contexte);
$page = evaluer_fond($fond,$contexte);
include_spip('inc/actions');
ajax_retour($page['texte']);
exit();
}
}
include_spip('inc/actions');
ajax_retour('signature ajax incorrecte');
exit();
}
// traiter les formulaires dynamiques simplifies en charger/verifier/traiter
if (($form = _request('formulaire_action'))
AND ($cle = _request('formulaire_action_cle'))
AND (($args = _request('formulaire_action_args'))!==NULL)
AND (include_spip('inc/securiser_action'))
AND ($cle == calculer_cle_action($form . $args))) {
$args = unserialize(base64_decode($args));
if (
(!($verifier = charger_fonction("verifier","formulaires/$form/",true))
|| (count($_POST["erreurs_$form"] = call_user_func_array($verifier,$args))==0))
&& ($traiter = charger_fonction("traiter","formulaires/$form/",true))
) {
$_POST["message_ok_$form"] = call_user_func_array($traiter,$args);
// traiter peut retourner soit un message, soit un array(editable,message)
if (is_array($_POST["message_ok_$form"]))
list($_POST["editable_$form"],$_POST["message_ok_$form"]) = $_POST["message_ok_$form"];
}
// si le formulaire a ete soumis en ajax, on le renvoie direct !
if (_request('var_ajax')){
if (find_in_path('formulaire_.php','balise/',true)) {
include_spip('inc/actions');
array_unshift($args,$form);
ajax_retour(inclure_balise_dynamique(call_user_func_array('balise_formulaire__dyn',$args),false),false);
exit;
}
}
}
$done = true;
}
}
// fonction principale declenchant tout le service // fonction principale declenchant tout le service
// elle-meme ne fait que traiter les cas particuliers, puis passe la main. // elle-meme ne fait que traiter les cas particuliers, puis passe la main.
// http://doc.spip.org/@public_assembler_dist // http://doc.spip.org/@public_assembler_dist
...@@ -97,55 +153,7 @@ function public_assembler_dist($fond, $connect='') { ...@@ -97,55 +153,7 @@ function public_assembler_dist($fond, $connect='') {
redirige_par_entete($forum_insert()); redirige_par_entete($forum_insert());
} }
// traiter les appels de bloc ajax traiter_formulaires_dynamiques();
if (($v=_request('var_ajax'))
AND ($v!=='form')
AND ($args = _request('var_ajax_env'))
AND ($cle = _request('var_ajax_cle')) ){
if ((include_spip('inc/securiser_action'))
AND ($cle == calculer_cle_action($args))) {
$args = unserialize(base64_decode($args));
if ($fond = $args['fond_ajax']){
include_spip('public/parametrer');
$contexte = calculer_contexte();
$contexte = array_merge($args, $contexte);
$page = evaluer_fond($fond,$contexte);
include_spip('inc/actions');
ajax_retour($page['texte']);
exit();
}
}
include_spip('inc/actions');
ajax_retour('signature ajax incorrecte');
exit();
}
// traiter les formulaires dynamiques simplifies en charger/verifier/traiter
if (($form = _request('formulaire_action'))
AND ($cle = _request('formulaire_action_cle'))
AND (($args = _request('formulaire_action_args'))!==NULL)
AND (include_spip('inc/securiser_action'))
AND ($cle == calculer_cle_action($form . $args))) {
$args = unserialize(base64_decode($args));
if (
(!($verifier = charger_fonction("verifier","formulaires/$form/",true))
|| (count($_POST["erreurs_$form"] = call_user_func_array($verifier,$args))==0))
&& ($traiter = charger_fonction("traiter","formulaires/$form/",true))
) {
$_POST["message_ok_$form"] = call_user_func_array($traiter,$args);
// traiter peut retourner soit un message, soit un array(editable,message)
if (is_array($_POST["message_ok_$form"]))
list($_POST["editable_$form"],$_POST["message_ok_$form"]) = $_POST["message_ok_$form"];
}
// si le formulaire a ete soumis en ajax, on le renvoie direct !
if (_request('var_ajax')){
if (find_in_path('formulaire_.php','balise/',true)) {
include_spip('inc/actions');
array_unshift($args,$form);
ajax_retour(inclure_balise_dynamique(call_user_func_array('balise_formulaire__dyn',$args),false),false);
exit;
}
}
}
// si signature de petition, l'enregistrer avant d'afficher la page // si signature de petition, l'enregistrer avant d'afficher la page
// afin que celle-ci contienne la signature // afin que celle-ci contienne la signature
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter