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

Refactoring pour édition en ajax (ajout/modification) qui fonctionne aussi sans JS

parent 6b949007
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -2,11 +2,14 @@
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
<form method='post' action='[(#ENV{action}|ancre_url{[formulaire_#ENV{form}-(#ENV{id,nouveau})]})]' enctype='multipart/form-data'><div>
<form method='post' action='[(#ENV{action}|ancre_url{block_#ENV{id_block,new}})]' enctype='multipart/form-data'><div>
#ACTION_FORMULAIRE{#ENV{action}}
[(#ENV{include}|et{#ENV{id_blocktype}|non})
<p class="titre_ajouter" [style="background-image:url\((#CHEMIN_IMAGE{block-xx.svg})\);"]><:block:texte_ajouter_block:/></p>
[(#ENV{include}|oui)
<p class="titre_ajouter" [style="background-image:url\((#CHEMIN_IMAGE{block-xx.svg})\);"]>
[(#ENV{id_block}|intval|?{<:block:texte_modifier_block:/>,<:block:texte_ajouter_block:/>})]
[(#ENV{id_blocktype}|oui) : #INFO_TITRE{blocktype,#ENV{id_blocktype}} ]
</p>
<span class="toggle_box_link" style="display:none;">
<button type="button" class="btn btn_mini"><:block:texte_ajouter_block:/></button>
</span>
......
......@@ -243,15 +243,14 @@ function formulaires_editer_block_traiter_dist($id_block = 'new', $objet = null,
objet_instituer('block', $id_block, ['statut' => 'publie']);
}
if ($include && isset($retours['redirect'])) {
$retours['redirect'] = ancre_url($retours['redirect'], 'block' . $id_block);
if (isset($retours['redirect'])) {
$retours['redirect'] = parametre_url($retours['redirect'],'id_blocktype','');
$retours['redirect'] = ancre_url($retours['redirect'], 'block_' . $id_block);
}
}
}
if ($retour && (_request('ajouter') || _request('annuler'))) {
$retours['redirect'] = $retour;
}
if (_request('annuler')) {
$retours['redirect'] = parametre_url($retour,'id_blocktype','');
}
......
......@@ -84,31 +84,22 @@ if (window.jQuery) {
$(function() {
// édition en place des blocs
$('.objet_blocks .actions .editer_block').on('click', function(e) {
e.preventDefault();
let $parent = $(this).parents('.objetblock').first();
let $content = $parent.find('.objetblock__content');
let dest = $(this).attr('href');
dest = parametre_url(dest, 'var_zajax', 'contenu');
dest = parametre_url(dest, 'include', '1');
$.post(
{
url: dest,
cache: false,
}
).done(function(data) {
$content.html(data).addClass('objetblock__content--edit');
function gestion_boutons_blocks() {
// édition en place des blocs
$('.objet_blocks .actions .editer_block').on('click', function(e) {
e.preventDefault();
var id_block = $(this).data('id_block');
ajaxReload('block_' + id_block, {args: {edit_bloc: 1}});
});
});
// boutons "Annuler"
function annuler_ajouter_block() {
// boutons "Annuler"
$('.formulaire_editer_block button[name="annuler"]').on('click', function(e) {
e.preventDefault();
ajaxReload('ajouter_block');
var id_block = $(this).data('id_block');
ajaxReload('block_'+id_block);
});
}
annuler_ajouter_block();
onAjaxLoad(annuler_ajouter_block);
gestion_boutons_blocks();
onAjaxLoad(gestion_boutons_blocks);
});
......@@ -43,6 +43,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = [
// T
'texte_ajouter_block' => 'Ajouter un bloc',
'texte_modifier_block' => 'Modifier un bloc',
'texte_changer_statut_block' => 'Ce bloc est :',
'texte_creer_associer_block' => 'Créer et associer un bloc',
'texte_definir_comme_traduction_block' => 'Ce bloc est une traduction du bloc numéro :',
......
<div class="ajax ajout_block" id="ajout_block">
[(#FORMULAIRE_EDITER_BLOCK{#ENV{id_block,new}, #OBJET, #ID_OBJET, #SELF#ajout_block, 1})]
</div>
<BOUCLE(BLOCKS) {id_block} {statut?} {si #ENV{edit_bloc}|non}>
<div class="objetblock statut_#STATUT" id="block_#ID_BLOCK" data-id="#ID_BLOCK">
<div class="objetblock__header">
<h3 class="titrem objetblock__type">
[(#CHEMIN_IMAGE{block-16.png}|balise_img)]
#INFO_TITRE{blocktypes,#ID_BLOCKTYPE}
</h3>
<div class="actions groupe-btns">
<div class="btn">
[(#STATUT|puce_statut{block,#ID_BLOCK})]
</div>
[(#AUTORISER{modifier,block,#ID_BLOCK})
<div class="btn move deplacer_block">
[(#CHEMIN_IMAGE{formulaire-action-deplacer-16.png}|balise_img{<:block:icone_deplacer_block:/>})]
</div>
<a href="[(#URL_ECRIRE{block_edit,id_block=#ID_BLOCK}|parametre_url{redirect,#SELF#block#ID_BLOCK})]"
class="btn editer_block" data-id_block="#ID_BLOCK">
[(#CHEMIN_IMAGE{formulaire-action-configurer-16.png}|balise_img{<:block:icone_modifier_block:/>})]
</a>
]
<!--
[(#AUTORISER{creer,block,#ID_BLOCK})
<button type="submit" class="submit noscroll dupliquer_saisie" name="dupliquer_block" value="#ID_BLOCK">
[(#CHEMIN_IMAGE{formulaire-action-dupliquer-16.png}|balise_img{<:saisies:construire_action_dupliquer:/>})]
</button>
]
-->
[(#AUTORISER{supprimer,block,#ID_BLOCK})
<a href="#URL_ACTION_AUTEUR{supprimer_block, #ID_BLOCK, #SELF}" class="ajax btn noscroll" onclick="javascript:return confirm('<:block:confirmer_supprimer_block:/>');">
[(#CHEMIN_IMAGE{formulaire-action-supprimer-16.png}|balise_img{<:block:supprimer_block:/>})]
</a>
]
</div>
</div>
<div class="objetblock__content"[ id="(#ANCRE)"]>
#GENERER_BLOCK
</div>
</div>
</BOUCLE>
[(#ENV{edit_bloc}|oui)
<div class="ajax ajout_block" id="block_#ENV{id_block,new}">
[(#FORMULAIRE_EDITER_BLOCK{#ENV{id_block,new}, #OBJET, #ID_OBJET, #SELF|ancre_url{block_#ENV{id_block,new}}, 1})]
</div>
]
<B>
[<h2>(#GRAND_TOTAL|singulier_ou_pluriel{block:info_1_block,block:info_nb_blocks})</h2>]
<div class="objet_blocks"[ data-lien="(#ENV{objet})/#ENV{id_objet}"]>
<div class="sortable">
<BOUCLE(BLOCKS) {objet}{id_objet} {statut?} {par rang_lien}>
<div class="objetblock statut_#STATUT" id="block#ID_BLOCK" data-id="#ID_BLOCK">
<div class="objetblock__header">
<h3 class="titrem objetblock__type">
[(#CHEMIN_IMAGE{block-16.png}|balise_img)]
#INFO_TITRE{blocktypes,#ID_BLOCKTYPE}
</h3>
<div class="actions groupe-btns">
<div class="btn">
[(#STATUT|puce_statut{block,#ID_BLOCK})]
</div>
[(#AUTORISER{modifier,block,#ID_BLOCK})
<div class="btn move deplacer_block">
[(#CHEMIN_IMAGE{formulaire-action-deplacer-16.png}|balise_img{<:block:icone_deplacer_block:/>})]
</div>
<a href="[(#URL_ECRIRE{block_edit,id_block=#ID_BLOCK}|parametre_url{redirect,#SELF#block#ID_BLOCK})]"
class="btn editer_block" data-id_block="#ID_BLOCK">
[(#CHEMIN_IMAGE{formulaire-action-configurer-16.png}|balise_img{<:block:icone_modifier_block:/>})]
</a>
]
<!--
[(#AUTORISER{creer,block,#ID_BLOCK})
<button type="submit" class="submit noscroll dupliquer_saisie" name="dupliquer_block" value="#ID_BLOCK">
[(#CHEMIN_IMAGE{formulaire-action-dupliquer-16.png}|balise_img{<:saisies:construire_action_dupliquer:/>})]
</button>
]
-->
[(#AUTORISER{supprimer,block,#ID_BLOCK})
<a href="#URL_ACTION_AUTEUR{supprimer_block, #ID_BLOCK, #SELF}" class="ajax btn noscroll" onclick="javascript:return confirm('<:block:confirmer_supprimer_block:/>');">
[(#CHEMIN_IMAGE{formulaire-action-supprimer-16.png}|balise_img{<:block:supprimer_block:/>})]
</a>
]
</div>
</div>
<div class="objetblock__content"[ id="(#ANCRE)"]>
#GENERER_BLOCK
</div>
</div>
<INCLURE{fond=prive/squelettes/inclure/block, id_block, env, ajax=block_#ID_BLOCK}>
</BOUCLE>
</div>
</div>
</B>
<INCLURE{fond=prive/squelettes/inclure/ajouter_block, env, ajax=ajouter_block}>
<INCLURE{fond=prive/squelettes/inclure/block, edit_bloc=1, env, ajax=block_new}>
<script type="text/javascript">
/* Gestion du tri des blocks */
......
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