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

Revert de r22635 r22639 r22640 par un svn cp -r22634 pour pouvoir refaire les...

Revert de r22635 r22639 r22640 par un svn cp -r22634 pour pouvoir refaire les commits avec un diff propre
parent 45b02cb3
Branches
Étiquettes
Aucune requête de fusion associée trouvée
......@@ -34,8 +34,8 @@ function action_instituer_langue_objet_dist($objet, $id, $id_rubrique, $changer_
if ($changer_lang != "herit") {
sql_updateq($table_objet_sql, array('lang'=>$changer_lang, 'langue_choisie'=>'oui'), "$id_table_objet=".intval($id));
include_spip('inc/rubriques');
if ($table_objet_sql == 'spip_rubriques')
calculer_langues_rubriques();
if ($table_objet_sql == 'spip_rubriques')
calculer_langues_rubriques();
$langues = calculer_langues_utilisees();
ecrire_meta('langues_utilisees', $langues);
}
......@@ -45,10 +45,10 @@ function action_instituer_langue_objet_dist($objet, $id, $id_rubrique, $changer_
$langue_parent = $GLOBALS['meta']['langue_site'];
sql_updateq($table_objet_sql, array('lang'=>$langue_parent, 'langue_choisie'=>'non'), "$id_table_objet=".intval($id));
$changer_lang = $langue_parent;
if ($table_objet_sql == 'spip_rubriques') {
include_spip('inc/rubriques');
calculer_langues_rubriques();
}
if ($table_objet_sql == 'spip_rubriques') {
include_spip('inc/rubriques');
calculer_langues_rubriques();
}
}
}
return $changer_lang;
......
......@@ -379,52 +379,25 @@ function test_previsualiser_objet_champ($type = null, $id = 0, $qui = array(), $
* @return bool true s'il a le droit, false sinon
**/
function autoriser_changerlangue_dist($faire, $type, $id, $qui, $opt) {
$multi_objets = explode(',', lire_config('multi_objets'));
$gerer_trad_objets = explode(',', lire_config('gerer_trad_objets'));
$table = table_objet_sql($type);
if (in_array($table, $multi_objets) or in_array($table, $gerer_trad_objets)) { // affichage du formulaire si la configuration l'accepte
$multi_secteurs = lire_config('multi_secteurs');
$champs = objet_info($type, 'field');
if ($multi_secteurs == 'oui' and array_key_exists('id_rubrique', $champs)) { // multilinguisme par secteur et objet rattaché à une rubrique
if ($table != 'spip_rubriques') {
$id_rubrique = sql_getfetsel('id_rubrique', "$table", "id_$type=".intval($id));
} else {
$id_rubrique = $id;
}
$id_secteur = sql_getfetsel('id_secteur', 'spip_rubriques', 'id_rubrique='.intval($id_rubrique));
if ( ! $id_secteur > 0 )
$id_secteur = $id_rubrique;
$langue_secteur = sql_getfetsel('lang', "spip_rubriques", "id_rubrique=".intval($id_secteur));
$langue_objet = sql_getfetsel('lang', "$table", "id_$type=".intval($id));
if ( $langue_secteur != $langue_objet){ // configuration incohérente, on laisse l'utilisateur corriger la situation
return true;
}
if ($table != 'spip_rubriques') { // le choix de la langue se fait seulement sur les rubriques
return false;
} else {
$id_parent = sql_getfetsel('id_parent', 'spip_rubriques', 'id_rubrique='.intval($id));
if ($id_parent != 0) // sous-rubriques : pas de choix de langue
return false;
}
}
} else {
return false;
}
return autoriser('modifier',$type,$id,$qui,$opt);
}
/**
* Autorisation de changer le lien de traduction
*
* @param string $faire Action demandée
* @param string $type Type d'objet sur lequel appliquer l'action
* @param int $id Identifiant de l'objet
* @param array $qui Description de l'auteur demandant l'autorisation
* @param array $opt Options de cette autorisation
* @return bool true s'il a le droit, false sinon
**/
function autoriser_changertraduction_dist($faire, $type, $id, $qui, $opt) {
return autoriser('modifier',$type,$id,$qui,$opt);
$multi_objets = explode(',', lire_config('multi_objets'));
$gerer_trad_objets = explode(',', lire_config('gerer_trad_objets'));
$table = table_objet_sql($type);
if (in_array($table, $multi_objets) or in_array($table, $gerer_trad_objets)) { // affichage du formulaire si la configuration l'accepte
$multi_secteurs = lire_config('multi_secteurs');
$champs = objet_info($type, 'field');
if ($multi_secteurs == 'oui' and array_key_exists('id_rubrique', $champs)) { // multilinguisme par secteur et objet rattaché à une rubrique
if ($table != 'spip_rubriques') { // le choix de la langue se fait seulement sur les rubriques
return false;
} else {
$id_parent = sql_getfetsel('id_parent', 'spip_rubriques', 'id_rubrique='.intval($id));
if ($id_parent != 0) // sous-rubriques : pas de choix de langue
return false;
}
}
} else {
return false;
}
return autoriser('modifier',$type,$id,$qui,$opt);
}
/**
......
<div class="formulaire_spip formulaire_#FORM" id="formulaire_#FORM-#ENV{_objet}-#ENV{_id_objet}">
<span class="image_loading"></span>
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[(#ENV{editable}|ou{#ENV{traduisible}})
<form method='post' action='#ENV{action}'><div>
[(#REM) declarer les hidden qui declencheront le service du formulaire
parametre : url d'action ]
#ACTION_FORMULAIRE{#ENV{action}}
]
<div class="editer-groupe">
<div class="editer editer_changer_lang long_label obligatoire[(#ENV**{erreurs}|table_valeur{changer_lang}|oui)erreur]">
<label for="changer_lang">[(#ENV{_objet}|objet_info{texte_langue_objet}|_T)]</label>[
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{changer_lang})</span>
]<span class="affiche"[(#ENV{_saisie_en_cours}|oui)style="display:none;"]>
[(#ENV{langue}|?{[(#ENV{langue}|traduire_nom_langue)],[((#ENV{langue_parent}|traduire_nom_langue))]})]
[(#ENV{langue_choisie}|=={oui}|non)(<:info_multi_herit:>)]
</span>
[(#ENV{_langue}|ou{#ENV{_traduire}}|oui)
<span class="toggle_box_link"[(#ENV{_saisie_en_cours}|oui)style="display:none;"]>&#91;<a href="#"
onclick="var f=jQuery(this).parents('form').eq(0);
f.find('.editer-groupe .input').removeClass('none-js').show('fast');
f.find('span.toggle_box_link[(#ENV{_langue}|oui),span.affiche]').hide('fast');
f.find('.boutons,.new_trad,.editer_id_trad').show('fast');
f.find('#changer_lang').eq(0).focus();return false;"
><:bouton_changer:><i class="over"> \([(#ENV{_langue}|?{[(#ENV{_objet}|objet_info{texte_langue_objet}|_T)],<:info_traductions:>})]\)</i></a>&#93;</span>
[(#ENV{_langue}|oui)
[<span class="input[(#ENV{_saisie_en_cours}|non)none-js]">
<select name="changer_lang" id="changer_lang">(#INCLURE{fond=formulaires/inc-options-langues,name=changer_lang,default=#ENV**{_langue},herit=#ENV**{langue_parent}})</select>
</span>]]]
</div>
[(#ENV{_traduire}|oui)
[(#ENV{_lister_id_trad}|oui)
<div class="fieldset voir_traductions">
<INCLURE{fond=#ENV**{_vue_traductions},id_trad=#ENV{_lister_id_trad},titre=<:info_traductions:>,objet=#ENV{_objet},env,ajax} />
[(#ENV{editable}|ou{#ENV{traduisible}})
<span class="input[(#ENV{_saisie_en_cours}|non)none-js]">
<input type="submit" class="submit supprimer_trad" name="supprimer_trad" value="<:trad_delier|attribut_html:>" />
</span>
]
</div>
]
[(#ENV{_lister_id_trad}|non)
<div class="editer editer_id_trad long_label[(#ENV**{erreurs}|table_valeur{id_trad}|oui)erreur][(#ENV{_saisie_en_cours}|non)none-js]">
<label for="id_trad">[(#ENV{_objet}|objet_info{texte_definir_comme_traduction_objet}|_T)]</label>[
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{id_trad})</span>
]<input type="text" class="text" name="id_trad" id="id_trad" value="[(#ENV{id_trad}|?{#ENV{id_trad}})]"
onkeypress="$(this).parents('form').find('.boutons').slideDown();"/>
</div>
]
]
</div>
[(#ENV{_traduire}|oui)
[<div class="new_trad[(#ENV{_saisie_en_cours}|non)]">
(#URL_ECRIRE{#ENV{_objet}|objet_info{url_edit},new=oui&lier_trad=#ENV{_id_objet}}|parametre_url{#ENV{_objet}|=={rubrique}|?{id_parent,id_rubrique},#ENV{_id_parent}}|icone_horizontale{<:trad_new:>,traduction,new})
</div>]
]
[(#ENV{editable}|ou{#ENV{traduisible}})
<p class="boutons[(#ENV{_saisie_en_cours}|non)none-js]">
<input type='submit' class='over' name='changer' value='<:bouton_changer:>' />
<input type='submit' class='submit' name='annuler' value='<:bouton_fermer:>' />
<input type="submit" class="submit" value="<:bouton_changer:>" />
</p>
</div></form>]
</div>
\ No newline at end of file
<span class="image_loading"></span>
[<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}'><div>
[(#REM) declarer les hidden qui declencheront le service du formulaire
parametre : url d'action ]
#ACTION_FORMULAIRE{#ENV{action}}
]
<div class="editer-groupe">
<div class="editer editer_changer_lang long_label obligatoire[(#ENV**{erreurs}|table_valeur{changer_lang}|oui)erreur]">
<label for="changer_lang">[(#ENV{_objet}|objet_info{texte_langue_objet}|_T)]</label>[
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{changer_lang})</span>
]<span class="affiche"[(#ENV{_saisie_en_cours}|oui)style="display:none;"]>
[(#ENV{langue}|?{[(#ENV{langue}|traduire_nom_langue)],[((#ENV{langue_parent}|traduire_nom_langue))]})]
[(#ENV{langue_choisie}|=={oui}|non)(<:info_multi_herit:>)]
</span>
[(#ENV{_langue}|ou{#ENV{_traduire}}|oui)
<span class="toggle_box_link"[(#ENV{_saisie_en_cours}|oui)style="display:none;"]>&#91;<a href="#"
onclick="var f=jQuery(this).parents('form').eq(0);
f.find('.editer-groupe .input').removeClass('none-js').show('fast');
f.find('span.toggle_box_link[(#ENV{_langue}|oui),span.affiche]').hide('fast');
f.find('.boutons,.new_trad,.editer_id_trad').show('fast');
f.find('#changer_lang').eq(0).focus();return false;"
><:bouton_changer:><i class="over"> \([(#ENV{_langue}|?{[(#ENV{_objet}|objet_info{texte_langue_objet}|_T)],<:info_traductions:>})]\)</i></a>&#93;</span>
[(#ENV{_langue}|oui)
[<span class="input[(#ENV{_saisie_en_cours}|non)none-js]">
<select name="changer_lang" id="changer_lang">(#INCLURE{fond=formulaires/inc-options-langues,name=changer_lang,default=#ENV**{_langue},herit=#ENV**{langue_parent}})</select>
</span>]]]
</div>
[(#ENV{_traduire}|oui)
[(#ENV{_lister_id_trad}|oui)
<div class="fieldset voir_traductions">
<INCLURE{fond=#ENV**{_vue_traductions},id_trad=#ENV{_lister_id_trad},titre=<:info_traductions:>,objet=#ENV{_objet},env,ajax} />
[(#ENV{editable})
<span class="input[(#ENV{_saisie_en_cours}|non)none-js]">
<input type="submit" class="submit supprimer_trad" name="supprimer_trad" value="<:trad_delier|attribut_html:>" />
</span>
]
</div>
]
[(#ENV{_lister_id_trad}|non)
<div class="editer editer_id_trad long_label[(#ENV**{erreurs}|table_valeur{id_trad}|oui)erreur][(#ENV{_saisie_en_cours}|non)none-js]">
<label for="id_trad">[(#ENV{_objet}|objet_info{texte_definir_comme_traduction_objet}|_T)]</label>[
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{id_trad})</span>
]<input type="text" class="text" name="id_trad" id="id_trad" value="[(#ENV{id_trad}|?{#ENV{id_trad}})]"
onkeypress="$(this).parents('form').find('.boutons').slideDown();"/>
</div>
]
]
</div>
[(#ENV{_traduire}|oui)
[<div class="new_trad[(#ENV{_saisie_en_cours}|non)]">
(#URL_ECRIRE{#ENV{_objet}|objet_info{url_edit},new=oui&lier_trad=#ENV{_id_objet}}|parametre_url{#ENV{_objet}|=={rubrique}|?{id_parent,id_rubrique},#ENV{_id_parent}}|icone_horizontale{<:trad_new:>,traduction,new})
</div>]
]
[(#ENV{editable})
<p class="boutons[(#ENV{_saisie_en_cours}|non)none-js]">
<input type='submit' class='over' name='changer' value='<:bouton_changer:>' />
<input type='submit' class='submit' name='annuler' value='<:bouton_fermer:>' />
<input type="submit" class="submit" value="<:bouton_changer:>" />
</p>
</div></form>]
</div>
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
......@@ -9,18 +9,18 @@
* 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. *
\***************************************************************************/
/**
* Gestion du formulaire de traduction
*
* @package SPIP\Core\Formulaires
**/
if (!defined('_ECRIRE_INC_VERSION')) return;
include_spip('inc/actions');
include_spip('inc/editer');
/**
* Charger les données de #FORMULAIRE_TRADUIRE
*
......@@ -37,55 +37,54 @@ include_spip('inc/editer');
* Contexte à transmettre au squelette du formulaire sinon
*/
function formulaires_traduire_charger_dist($objet, $id_objet, $retour = '', $traduire = true){
if (!intval($id_objet))
return false;
$valeurs = formulaires_editer_objet_charger($objet,$id_objet,null,0,$retour,'');
// verifier que l'objet indique possede bien des champs id_trad et lang
// attention, charger renomme lang => langue pour ne pas perturber la langue d'affichage du squelette
if (!isset($valeurs['langue']))
return false;
$valeurs['editable'] = autoriser('changerlangue',$objet,$id_objet);
$valeurs['_langue'] = '';
$langue_parent = '';
$id_parent = '';
if (isset($valeurs['id_rubrique']))
$id_parent = $valeurs['id_rubrique'];
if (isset($valeurs['id_parent']))
$id_parent = $valeurs['id_parent'];
if ($id_parent)
$langue_parent = sql_getfetsel("lang", "spip_rubriques", "id_rubrique=".intval($id_parent));
if (!$langue_parent)
$langue_parent = $GLOBALS['meta']['langue_site'];
if ($valeurs['editable']
AND in_array(table_objet_sql($objet),explode(',',$GLOBALS['meta']['multi_objets']))){
$valeurs['_langue'] = $valeurs['langue'];
}
$valeurs['langue_parent'] = $langue_parent;
$valeurs['_objet'] = $objet;
$valeurs['_id_objet'] = $id_objet;
$valeurs['changer_lang'] = '';
$valeurs['traduisible'] = autoriser('changertraduction',$objet,$id_objet);
$valeurs['_traduire'] = '';
if (isset($valeurs['id_trad']) AND $valeurs['traduisible']) {
$valeurs['_traduire'] = ($traduire?' ':'');
$valeurs['_vue_traductions'] = "prive/objets/liste/" . (trouver_fond($f=table_objet($objet)."-trad","prive/objets/liste")?$f:"objets-trad");
// pour afficher la liste des trad sur la base de l'id_trad en base
// independamment d'une saisie en cours sur id_trad
$valeurs['_lister_id_trad'] = $valeurs['id_trad'];
$valeurs['_id_parent'] = $id_parent;
}
$valeurs['_saisie_en_cours'] = (!_request('annuler') AND (_request('changer_lang')!==null OR _request('changer_id_trad')!==null));
$valeurs['_pipeline'] = array('traduire',array('type'=>$objet,'id'=>$id_objet));
return $valeurs;
if (!intval($id_objet))
return false;
$valeurs = formulaires_editer_objet_charger($objet,$id_objet,null,0,$retour,'');
// verifier que l'objet indique possede bien des champs id_trad et lang
// attention, charger renomme lang => langue pour ne pas perturber la langue d'affichage du squelette
if (!isset($valeurs['langue']))
return false;
$valeurs['editable'] = autoriser('changerlangue',$objet,$id_objet);
$valeurs['_langue'] = '';
$langue_parent = '';
$id_parent = '';
if (isset($valeurs['id_rubrique']))
$id_parent = $valeurs['id_rubrique'];
if (isset($valeurs['id_parent']))
$id_parent = $valeurs['id_parent'];
if ($id_parent)
$langue_parent = sql_getfetsel("lang", "spip_rubriques", "id_rubrique=".intval($id_parent));
if (!$langue_parent)
$langue_parent = $GLOBALS['meta']['langue_site'];
if ($valeurs['editable']
AND in_array(table_objet_sql($objet),explode(',',$GLOBALS['meta']['multi_objets']))){
$valeurs['_langue'] = $valeurs['langue'];
}
$valeurs['langue_parent'] = $langue_parent;
$valeurs['_objet'] = $objet;
$valeurs['_id_objet'] = $id_objet;
$valeurs['changer_lang'] = '';
$valeurs['_traduire'] = '';
if (isset($valeurs['id_trad'])) {
$valeurs['_traduire'] = ($traduire?' ':'');
$valeurs['_vue_traductions'] = "prive/objets/liste/" . (trouver_fond($f=table_objet($objet)."-trad","prive/objets/liste")?$f:"objets-trad");
// pour afficher la liste des trad sur la base de l'id_trad en base
// independamment d'une saisie en cours sur id_trad
$valeurs['_lister_id_trad'] = $valeurs['id_trad'];
$valeurs['_id_parent'] = $id_parent;
}
$valeurs['_saisie_en_cours'] = (!_request('annuler') AND (_request('changer_lang')!==null OR _request('changer_id_trad')!==null));
$valeurs['_pipeline'] = array('traduire',array('type'=>$objet,'id'=>$id_objet));
return $valeurs;
}
/**
* Vérifier les saisies des valeurs du #FORMULAIRE_TRADUIRE
*
......@@ -101,27 +100,27 @@ function formulaires_traduire_charger_dist($objet, $id_objet, $retour = '', $tra
* Erreurs des saisies
*/
function formulaires_traduire_verifier_dist($objet, $id_objet, $retour = '', $traduire = true){
$erreurs = array();
if (null !== _request('changer_lang')) {
$erreurs = formulaires_editer_objet_verifier($objet,$id_objet,array('changer_lang'));
}
// si id_trad fourni, verifier que cela ne conflicte pas avec un id_trad existant
// et que ca reference bien un objet existant
if ($id_trad = _request('id_trad')){
$table_objet_sql = table_objet_sql($objet);
$_id_table_objet = id_table_objet($objet);
if (sql_getfetsel('id_trad',$table_objet_sql,"$_id_table_objet=".intval($id_objet)))
// ne devrait jamais arriver sauf concurence de saisie
$erreurs['id_trad'] = _L('Une traduction est deja referencee');
elseif (!sql_getfetsel($_id_table_objet,$table_objet_sql,"$_id_table_objet=".intval($id_trad)))
$erreurs['id_trad'] = _L('Indiquez un contenu existant');
}
return $erreurs;
$erreurs = array();
if (null !== _request('changer_lang')) {
$erreurs = formulaires_editer_objet_verifier($objet,$id_objet,array('changer_lang'));
}
// si id_trad fourni, verifier que cela ne conflicte pas avec un id_trad existant
// et que ca reference bien un objet existant
if ($id_trad = _request('id_trad')){
$table_objet_sql = table_objet_sql($objet);
$_id_table_objet = id_table_objet($objet);
if (sql_getfetsel('id_trad',$table_objet_sql,"$_id_table_objet=".intval($id_objet)))
// ne devrait jamais arriver sauf concurence de saisie
$erreurs['id_trad'] = _L('Une traduction est deja referencee');
elseif (!sql_getfetsel($_id_table_objet,$table_objet_sql,"$_id_table_objet=".intval($id_trad)))
$erreurs['id_trad'] = _L('Indiquez un contenu existant');
}
return $erreurs;
}
/**
* Enregistrer en base les saisies du #FORMULAIRE_TRADUIRE
*
......@@ -137,32 +136,31 @@ function formulaires_traduire_verifier_dist($objet, $id_objet, $retour = '', $tr
* Retour des traitements
*/
function formulaires_traduire_traiter_dist($objet, $id_objet, $retour = '', $traduire = true){
$res = array();
if (!_request('annuler') AND autoriser('changerlangue',$objet,$id_objet)) {
// action/editer_xxx doit traiter la modif de changer_lang
$res = formulaires_editer_objet_traiter($objet,$id_objet,0,0,$retour);
}
if (!_request('annuler') AND autoriser('changertraduction',$objet,$id_objet)) {
if ($id_trad=_request('id_trad') OR _request('supprimer_trad')){
$referencer_traduction = charger_fonction('referencer_traduction','action');
$referencer_traduction($objet, $id_objet, intval($id_trad)); // 0 si supprimer_trad
}
elseif ($new_id_trad = _request('changer_reference_trad')
AND $new_id_trad = array_keys($new_id_trad)
AND $new_id_trad = reset($new_id_trad)){
$table_objet_sql = table_objet_sql($objet);
$_id_table_objet = id_table_objet($objet);
if ($id_trad = sql_getfetsel('id_trad',$table_objet_sql,"$_id_table_objet=".intval($id_objet))){
$referencer_traduction = charger_fonction('referencer_traduction','action');
$referencer_traduction($objet, $id_trad, $new_id_trad);
}
}
}
$res['editable'] = true;
if (!isset($res['message_erreur']))
set_request('annuler','annuler'); // provoquer la fermeture du forumlaire
return $res;
$res = array();
if (!_request('annuler') AND autoriser('changerlangue',$objet,$id_objet)) {
// action/editer_xxx doit traiter la modif de changer_lang
$res = formulaires_editer_objet_traiter($objet,$id_objet,0,0,$retour);
if ($id_trad=_request('id_trad') OR _request('supprimer_trad')){
$referencer_traduction = charger_fonction('referencer_traduction','action');
$referencer_traduction($objet, $id_objet, intval($id_trad)); // 0 si supprimer_trad
}
elseif ($new_id_trad = _request('changer_reference_trad')
AND $new_id_trad = array_keys($new_id_trad)
AND $new_id_trad = reset($new_id_trad)){
$table_objet_sql = table_objet_sql($objet);
$_id_table_objet = id_table_objet($objet);
if ($id_trad = sql_getfetsel('id_trad',$table_objet_sql,"$_id_table_objet=".intval($id_objet))){
$referencer_traduction = charger_fonction('referencer_traduction','action');
$referencer_traduction($objet, $id_trad, $new_id_trad);
}
}
}
$res['editable'] = true;
if (!isset($res['message_erreur']))
set_request('annuler','annuler'); // provoquer la fermeture du forumlaire
return $res;
}
?>
\ No newline at end of file
?>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter