diff --git a/formulaires/editer_bloc.html b/formulaires/editer_bloc.html index 94b498e77febfcfe5c5c3028743a05445d55a440..b48112de5127d8a0b0a9e91b2c2adf36569f21f9 100644 --- a/formulaires/editer_bloc.html +++ b/formulaires/editer_bloc.html @@ -16,8 +16,8 @@ ] [(#ENV{id_blocs_type}|oui) <p class="boutons boutons-flex"> - <button type="submit" class="submit btn_secondaire" name="annuler" value="1" formnovalidate><:bouton_annuler:></button> - <button type="submit" class="submit" name="ajouter" value="1"><:bloc:bouton_ajouter:></button> + [(#ENV{popin}|oui)<a href="#" onclick="lity.current().close(); return false;" class="submit btn btn_secondaire"><:bouton_annuler:></a>] + <button type="submit" class="submit btn" name="ajouter" value="1">[(#ENV{popin}|?{<:bloc:bouton_ajouter:>,<:bouton_enregistrer:/>})]</button> </p> ] </p> diff --git a/formulaires/editer_bloc.php b/formulaires/editer_bloc.php index b6e9f9431be67f78d843215fb3a6154b0edf6229..1df9d025917eec55c6c8f421e5e3a641e9813bed 100644 --- a/formulaires/editer_bloc.php +++ b/formulaires/editer_bloc.php @@ -20,13 +20,14 @@ include_spip('inc/editer'); /** * Identifier le formulaire en faisant abstraction des paramètres qui ne représentent pas l'objet edité * - * @param int|string $id_bloc Identifiant du bloc. 'new' pour un nouveau bloc. - * @param null $objet Type d'objet à associer (article, rubrique,...) - * @param null $id_objet Id de l'objet à associer - * @param null $retour URL de redirection après le traitement + * @param int|string $id_bloc Identifiant du bloc. 'new' pour un nouveau bloc. + * @param string|null $objet Type d'objet à associer (article, rubrique,...) + * @param int|null $id_objet Id de l'objet à associer + * @param string|null $retour URL de redirection après le traitement + * @param string|null $popin Indique si le formulaire est ouvert en popin * @return string Hash du formulaire */ -function formulaires_editer_bloc_identifier_dist($id_bloc = 'new', $objet = null, $id_objet = null, $retour = null) { +function formulaires_editer_bloc_identifier_dist($id_bloc = 'new', $objet = null, $id_objet = null, $retour = null, $popin = null) { return serialize([intval($id_bloc), $objet, $id_objet]); } @@ -35,24 +36,29 @@ function formulaires_editer_bloc_identifier_dist($id_bloc = 'new', $objet = null * * Déclarer les champs postés et y intégrer les valeurs par défaut * - * @param int|string $id_bloc Identifiant du bloc. 'new' pour un nouveau bloc. - * @param null $objet Type d'objet à associer (article, rubrique,...) - * @param null $id_objet Id de l'objet à associer - * @param null $retour URL de redirection après le traitement + * @param int|string $id_bloc Identifiant du bloc. 'new' pour un nouveau bloc. + * @param string|null $objet Type d'objet à associer (article, rubrique,...) + * @param int|null $id_objet Id de l'objet à associer + * @param string|null $retour URL de redirection après le traitement + * @param string|null $popin Indique si le formulaire est ouvert en popin * @return array Environnement du formulaire * @uses formulaires_editer_objet_charger() */ -function formulaires_editer_bloc_charger_dist($id_bloc = 'new', $objet = null, $id_objet = null, $retour = null) { - if (!$objet || !(int)$id_objet) { - return null; - } - +function formulaires_editer_bloc_charger_dist($id_bloc = 'new', $objet = null, $id_objet = null, $retour = null, $popin = null) { if ((int)$id_bloc) { $id_blocs_type = (int)sql_getfetsel('id_blocs_type', 'spip_blocs', 'id_bloc = ' . $id_bloc); + $infos = sql_fetsel('id_objet, objet', 'spip_blocs_liens', 'id_bloc = ' . $id_bloc); + $objet = $infos['objet']; + $id_objet = $infos['id_objet']; $valeurs = formulaires_editer_objet_charger('bloc', $id_bloc, $id_blocs_type, 0, $retour, ''); } else { $id_blocs_type = _request('id_blocs_type'); } + if (!$objet || !(int)$id_objet) { + return null; + } + + $valeurs['popin'] = (bool)$popin; if ($id_blocs_type) { // charger les saisies du type de bloc @@ -107,14 +113,15 @@ function formulaires_editer_bloc_charger_dist($id_bloc = 'new', $objet = null, $ * * Vérifier les champs postés et signaler d'éventuelles erreurs * - * @param int|string $id_bloc Identifiant du bloc. 'new' pour un nouveau bloc. - * @param string $retour URL de redirection après le traitement - * @param null $objet Type d'objet à associer (article, rubrique,...) - * @param null $id_objet Id de l'objet à associer + * @param int|string $id_bloc Identifiant du bloc. 'new' pour un nouveau bloc. + * @param string|null $objet Type d'objet à associer (article, rubrique,...) + * @param int|null $id_objet Id de l'objet à associer + * @param string|null $retour URL de redirection après le traitement + * @param string|null $popin Indique si le formulaire est ouvert en popin * @return array Tableau des erreurs * @uses formulaires_editer_objet_verifier() */ -function formulaires_editer_bloc_verifier_dist($id_bloc = 'new', $objet = null, $id_objet = null, $retour = null) { +function formulaires_editer_bloc_verifier_dist($id_bloc = 'new', $objet = null, $id_objet = null, $retour = null, $popin = null) { if ((int)$id_bloc) { $id_blocs_type = (int)sql_getfetsel('id_blocs_type', 'spip_blocs', 'id_bloc = ' . $id_bloc); } else { @@ -147,17 +154,20 @@ function formulaires_editer_bloc_verifier_dist($id_bloc = 'new', $objet = null, * * Traiter les champs postés * - * @param int|string $id_bloc Identifiant du bloc. 'new' pour un nouveau bloc. - * @param int|string $id_blocs_type Type de bloc - * @param string $retour URL de redirection après le traitement - * @param null $objet Type d'objet à associer (article, rubrique,...) - * @param null $id_objet Id de l'objet à associer - * @return array Retours des traitements + * @param int|string $id_bloc Identifiant du bloc. 'new' pour un nouveau bloc. + * @param string|null $objet Type d'objet à associer (article, rubrique,...) + * @param int|null $id_objet Id de l'objet à associer + * @param string|null $retour URL de redirection après le traitement + * @param string|null $popin Indique si le formulaire est ouvert en popin + * @return array Retours des traitements * @uses formulaires_editer_objet_traiter() */ -function formulaires_editer_bloc_traiter_dist($id_bloc = 'new', $objet = null, $id_objet = null, $retour = null) { +function formulaires_editer_bloc_traiter_dist($id_bloc = 'new', $objet = null, $id_objet = null, $retour = null, $popin = null) { if ((int)$id_bloc) { $id_blocs_type = (int)sql_getfetsel('id_blocs_type', 'spip_blocs', 'id_bloc = ' . $id_bloc); + $infos = sql_fetsel('id_objet, objet', 'spip_blocs_liens', 'id_bloc = ' . $id_bloc); + $objet = $infos['objet']; + $id_objet = $infos['id_objet']; } else { $id_blocs_type = _request('id_blocs_type'); } diff --git a/prive/squelettes/contenu/bloc_edit.html b/prive/squelettes/contenu/bloc_edit.html index 390934d319f0c89f78b89216d0b7733f97e5b45b..a085a408a4149a4bd3b1e7540421dc057061b9c9 100644 --- a/prive/squelettes/contenu/bloc_edit.html +++ b/prive/squelettes/contenu/bloc_edit.html @@ -30,8 +30,8 @@ #SET{redirect,#URL_ECRIRE{#OBJET|objet_info{url_voir},#OBJET|id_table_objet|concat{'=',#ID_OBJET}}} <div class="ajax"> ] -[(#GET{redirect}|dd)] -[(#FORMULAIRE_EDITER_BLOC{#ENV{id_bloc,new}, #OBJET, #ID_OBJET, #GET{redirect}})] + +[(#FORMULAIRE_EDITER_BLOC{#ENV{id_bloc,new}, #OBJET, #ID_OBJET, #GET{redirect}, #ENV{popin}})] [(#ENV{popin,''}|oui) </div> diff --git a/prive/squelettes/inclure/blocs_objet.html b/prive/squelettes/inclure/blocs_objet.html index b0d4b46b4c0e3872ace4060b494a8c6f4e06f6f4..056da0ff5f6133b17e79f6c25176030c9e8b3c5b 100644 --- a/prive/squelettes/inclure/blocs_objet.html +++ b/prive/squelettes/inclure/blocs_objet.html @@ -19,9 +19,11 @@ #GENERER_BLOCK [(#AUTORISER{modifier,bloc,#ID_BLOC}) - <div class="deplacer-modifier"> - [(#URL_ECRIRE{#VAL{bloc}|objet_info{url_edit},id_bloc=#ID_BLOC}|parametre_url{redirect,#SELF}|concat{'#bloc',#ID_BLOC}|icone_verticale{<:bloc:icone_modifier_bloc:/>,bloc,edit,right})] - </div> + <a href="[(#URL_ECRIRE{bloc_edit,id_bloc=#ID_BLOC}|parametre_url{popin,1}|parametre_url{var_zajax,contenu}|parametre_url{id_bloc,#ID_BLOC}|parametre_url{id_objet,#ID_OBJET}|parametre_url{objet,#OBJET})]" + class="btn btn_mini popin"> + <span class="sp-icone sp-icone-bloc" aria-hidden="true">[(#CHEMIN_IMAGE{bloc-16.png}|balise_img)]</span> + <:bloc:icone_modifier_bloc:/> + </a> ] </div>