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

fonction 'creer un auteur et l'associer' generique

Au passage, on decouvre que le formulaire_editer_auteur ne finissait pas correctement en cas de redirect dans l'url, car l'action provoquait une sortie brutale par redirection.
Je ne suis pas sur qu'on doive maintenir ces redirections dans les actions, mais en attendant, on nettoie redirect dans inc/editer avant l'appel de l'action.
parent c1239f25
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -130,9 +130,6 @@ function auteurs_set($id_auteur, $set = null) {
$err .= instituer_auteur($id_auteur, $c);
// Un lien auteur a prendre en compte ?
$err .= auteur_associer($id_auteur, array('article' => _request('lier_id_article',$set)));
return $err;
}
......
......@@ -68,10 +68,13 @@ function exec_auteur_infos_args($id_auteur, $nom, $new, $echec='', $redirect='')
// http://doc.spip.org/@auteur_infos_ok
function auteur_infos_ok($auteur, $id_auteur, $echec, $new, $redirect)
{
$associer_objet = _request('associer_objet');
if (!preg_match(',^\w+\|[0-9]+$,',$associer_objet))
$associer_objet = '';
$auteur_infos = charger_fonction('auteur_infos', 'inc');
$fiche = $auteur_infos($auteur, $new, $echec, _request('edit'), intval(_request('lier_id_article')), $redirect, 'infos');
$fiche = $auteur_infos($auteur, $new, $echec, _request('edit'), $associer_objet, $redirect, 'infos');
if ($fiche)
$form_auteur = $auteur_infos($auteur, $new, $echec, _request('edit'), intval(_request('lier_id_article')), $redirect, 'edit');
$form_auteur = $auteur_infos($auteur, $new, $echec, _request('edit'), $associer_objet, $redirect, 'edit');
else $form_auteur = '';
echo cadre_auteur_infos($id_auteur, $auteur);
......
......@@ -17,7 +17,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
// $quoi introduit pour pouvoir demander simplement les infos ou la partie editable
// ""=>tout, "infos"=>infos simplement, "edit"=>formulaire d'edition simplement
// http://doc.spip.org/@inc_auteur_infos_dist
function inc_auteur_infos_dist($auteur, $new, $echec, $edit, $id_article, $redirect, $quoi="") {
function inc_auteur_infos_dist($auteur, $new, $echec, $edit, $associer_objet, $redirect, $quoi="") {
if (!$new AND $quoi!="edit") {
$infos = legender_auteur_voir($auteur);
......@@ -62,7 +62,7 @@ function inc_auteur_infos_dist($auteur, $new, $echec, $edit, $id_article, $redir
'titre'=>($auteur['nom']?$auteur['nom']:_T('nouvel_auteur')),
'new'=>$new == "oui"?$new:$id_auteur,
'config_fonc'=>'auteurs_edit_config',
'lier_id_article' => $id_article,
'associer_objet' => $associer_objet,
'auteur' => $auteur
);
......
......@@ -17,6 +17,8 @@ include_spip('base/abstract_sql');
function formulaires_editer_objet_traiter($type, $id='new', $id_parent=0, $lier_trad=0, $retour='', $config_fonc='articles_edit_config', $row=array(), $hidden=''){
$res = array();
// eviter la redirection forcee par l'action...
set_request('redirect');
$action_editer = charger_fonction("editer_$type",'action');
list($id,$err) = $action_editer($id);
$id_table_objet = id_table_objet($type);
......
......@@ -4,5 +4,5 @@
[<:info_modifier_auteur:>
<h1>(#ENV{titre})</h1>]
</div>
#FORMULAIRE_EDITER_AUTEUR{#ENV{new},#ENV{redirect},#ENV{lier_id_article},#ENV{config_fonc},#ENV**{auteur}}
#FORMULAIRE_EDITER_AUTEUR{#ENV{new},#ENV{redirect},#ENV{associer_objet},#ENV{config_fonc},#ENV**{auteur}}
</div>
......@@ -7,7 +7,6 @@
parametre : url d'action ]
#ACTION_FORMULAIRE{#ENV{action}}
<input type='hidden' name='id_auteur' value='#ENV{id_auteur}' />
[<input type='hidden' name='lier_id_article' value='(#ENV{lier_id_article})' />]
[<input type='hidden' name='redirect' value='(#ENV**{redirect})' />]
<ul>
<li class="editer_nom obligatoire[ (#ENV**{erreurs}|table_valeur{nom}|oui)erreur]">
......
......@@ -9,12 +9,9 @@ function instituer_auteur_ici($auteur=array()){
}
// http://doc.spip.org/@inc_editer_mot_dist
function formulaires_editer_auteur_charger_dist($id_auteur='new', $retour='', $lier_id_article=0, $config_fonc='auteurs_edit_config', $row=array(), $hidden=''){
function formulaires_editer_auteur_charger_dist($id_auteur='new', $retour='', $associer_objet='', $config_fonc='auteurs_edit_config', $row=array(), $hidden=''){
$valeurs = formulaires_editer_objet_charger('auteur',$id_auteur,0,0,$retour,$config_fonc,$row,$hidden);
if ($lier_id_article) $valeurs['lier_id_article'] = $lier_id_article;
// forcer la prise en compte du post, sans verifier si c'est bien le meme formulaire,
// c'est trop hasardeux selon le contenud de $row
$valeurs['_forcer_request'] = true;
return $valeurs;
}
......@@ -22,8 +19,8 @@ function formulaires_editer_auteur_charger_dist($id_auteur='new', $retour='', $l
* Identifier le formulaire en faisant abstraction des parametres qui
* ne representent pas l'objet edite
*/
function formulaires_editer_auteur_identifier_dist($id_auteur='new', $retour='', $lier_id_article=0, $config_fonc='auteurs_edit_config', $row=array(), $hidden=''){
return serialize(array($id_auteur,$lier_id_article,$row));
function formulaires_editer_auteur_identifier_dist($id_auteur='new', $retour='', $associer_objet='', $config_fonc='auteurs_edit_config', $row=array(), $hidden=''){
return serialize(array($id_auteur,$associer_objet));
}
......@@ -55,7 +52,7 @@ function auteurs_edit_config($row)
return $config;
}
function formulaires_editer_auteur_verifier_dist($id_auteur='new', $retour='', $lier_article=0, $config_fonc='auteurs_edit_config', $row=array(), $hidden=''){
function formulaires_editer_auteur_verifier_dist($id_auteur='new', $retour='', $associer_objet='', $config_fonc='auteurs_edit_config', $row=array(), $hidden=''){
$erreurs = formulaires_editer_objet_verifier('auteur',$id_auteur,array('nom'));
$auth_methode = sql_getfetsel('source','spip_auteurs','id_auteur='.intval($id_auteur));
......@@ -98,7 +95,7 @@ function formulaires_editer_auteur_verifier_dist($id_auteur='new', $retour='', $
}
// http://doc.spip.org/@inc_editer_mot_dist
function formulaires_editer_auteur_traiter_dist($id_auteur='new', $retour='', $lier_article=0, $config_fonc='auteurs_edit_config', $row=array(), $hidden=''){
function formulaires_editer_auteur_traiter_dist($id_auteur='new', $retour='', $associer_objet='', $config_fonc='auteurs_edit_config', $row=array(), $hidden=''){
if (_request('saisie_webmestre') OR _request('webmestre'))
set_request('webmestre',_request('webmestre')?_request('webmestre'):'non');
$retour = parametre_url($retour, 'email_confirm','');
......@@ -124,6 +121,24 @@ function formulaires_editer_auteur_traiter_dist($id_auteur='new', $retour='', $l
}
$res = formulaires_editer_objet_traiter('auteur',$id_auteur,0,0,$retour,$config_fonc,$row,$hidden);
// Un lien auteur a prendre en compte ?
if ($associer_objet AND $id_auteur=$res['id_auteur']){
$objet = '';
if (intval($associer_objet)){
$objet='article';
$id_objet = intval($associer_objet);
}
elseif(preg_match(',^\w+\|[0-9]+$,',$associer_objet)){
list($objet,$id_objet) = explode('|',$associer_objet);
}
if ($objet AND $id_objet){
include_spip('action/editer_auteur');
auteur_associer($id_auteur, array($objet => $id_objet));
}
}
return $res;
}
......
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