on crée une option "ponctuel" pour les groupes, qui s'affichent lorsqu'il n'y a pas de ville

This commit is contained in:
Pierre 2020-03-08 21:03:45 +01:00
parent ec86397359
commit 81d0faa632
7 changed files with 138 additions and 39 deletions

View file

@ -748,6 +748,17 @@ body{
border-radius: 0.2rem;
border: solid 1px grey;
}
.choix{
display: flex;
align-items: center;
width: 3rem;
label{
margin: 0;
}
}
.editer_ponctuel .ligne{
display: flex;
}
}
/**********************************************************************/

View file

@ -12708,6 +12708,23 @@ body {
border: solid 1px grey;
}
.formulaire_spip .choix {
display: -webkit-box;
display: flex;
-webkit-box-align: center;
align-items: center;
width: 3rem;
}
.formulaire_spip .choix label {
margin: 0;
}
.formulaire_spip .editer_ponctuel .ligne {
display: -webkit-box;
display: flex;
}
/**********************************************************************/
/*************** FORMULAIRE DE SAISIE D'ARTICLE ***********************/
/**********************************************************************/

View file

@ -28,7 +28,23 @@
</BOUCLE_pays>
</select>
</div>
<div class="ville">
[(#REM) valeurs : oui=on, non=""]
<div class="editer_ponctuel">
<label>Groupe ponctuel (sans ville régulière)</label>
<div class="ligne">
<div class="choix">
<input type='radio' class="radio" name='ponctuel' value='' id='ponctuel_non'[ (#ENV{ponctuel}|!={on}|?{'checked="checked"'})] />
<label for='ponctuel_non'>Non</label>
</div>
<div class="choix">
<input type='radio' class="radio" name='ponctuel' value='on' id='ponctuel_oui'[ (#ENV{ponctuel}|=={on}|?{'checked="checked"'})] />
<label for='ponctuel_oui'>Oui</label>
</div>
</div>
</div>
<div class="ville regulier [(#ENV{ponctuel}|=={on}) hide]">
<label for="surtitre">Ville</label>
<input class="text" type="text" name="surtitre" value="#ENV{surtitre}">
</div>
@ -36,15 +52,15 @@
<label for="titre">Nom du groupe</label>
<input class="text" type="text" name="titre" value="#ENV{titre}">
</div>
<div class="soustitre">
<div class="soustitre regulier [(#ENV{ponctuel}|=={on}) hide]">
<label for="soustitre">Adresse des réunions</label>
<input class="text" type="text" name="soustitre" value="#ENV{soustitre}">
</div>
<div class="dates">
<div class="dates regulier [(#ENV{ponctuel}|=={on}) hide]">
<label for="descriptif">Dates et horaires</label>
<textarea class="text" type="text" name="descriptif">#ENV{descriptif}</textarea>
</div>
<div class="texte">
<div class="editer texte">
<label for="texte">Informations complémentaires</label>
<textarea class="text" type="text" name="texte">#ENV{texte}</textarea>
</div>
@ -83,7 +99,7 @@
]
</fieldset>
<fieldset class="upload_vignette">
<fieldset class="upload_vignette regulier [(#ENV{ponctuel}|=={on}) hide]">
<legend><i class="fas fa-image"></i> Photos</legend>
<label for=""><small>largeur conseillée: entre 1024 et 2048 pixels</small></label>
<div class="ajax">

View file

@ -42,7 +42,6 @@ function formulaires_editer_groupe_charger_dist($id_article=0, $redirect=''){
$res = sql_allfetsel('id_auteur','spip_auteurs_liens',$where);
$valeurs['T_id_auteurs'] = array_column($res,'id_auteur');
$valeurs['rubrique_selected'] = sql_getfetsel('id_rubrique','spip_articles','id_article='. $id_article);
}
else {
@ -50,28 +49,14 @@ function formulaires_editer_groupe_charger_dist($id_article=0, $redirect=''){
$valeurs['id_article'] = -1 * intval(session_get('id_auteur'));
}
if (intval($id_article)) {
$from = array(
'spip_gis as G',
'spip_gis_liens as L',
'spip_articles as A'
);
$where = array(
'L.id_objet='.intval($id_article),
'L.objet="article"',
'L.id_gis=G.id_gis'
);
$res = sql_fetsel('G.lat, G.lon', $from, $where);
if (count($res)) {
$valeurs['lat'] = $res['lat'];
$valeurs['lon'] = $res['lon'];
// Sans ville (surtitre), le groupe est ponctuel
if(empty($surtitre)){
$valeurs['ponctuel'] = "on";
}
else{
$valeurs['ponctuel'] = "";
}
// recup gis
$valeurs['_bigup_rechercher_fichiers'] = true;
return $valeurs;
}
@ -90,11 +75,22 @@ function formulaires_editer_groupe_verifier_dist($id_article=0, $redirect=''){
}
}
// il faut au minimum titre (nom), surtitre (ville) et id_rubrique (pays) pour créer un article
if (_request('ponctuel')!="on"){
// il faut au minimum titre (nom), surtitre (ville) et id_rubrique (pays) pour créer un article pour les groupes réguliers
if (_request('titre') == '' OR _request('surtitre') == '' OR _request('id_rubrique') == ''){
$erreurs['message_erreur'] = "Il faut obligatoirement un pays, une ville et un nom pour créer un groupe.";
$erreurs['message_erreur'] = "Il faut obligatoirement un pays, une ville et un nom pour créer un groupe régulier.";
return $erreurs;
}
}
else{
// il faut au minimum titre (nom) et id_rubrique (pays) pour créer un article pour les groupes
if (_request('titre') == '' OR _request('id_rubrique') == ''){
$erreurs['message_erreur'] = "Il faut obligatoirement un pays et un nom pour créer un groupe.";
return $erreurs;
}
}
// la rubrique choisie doit être une sous-rubrique du secteur défini en config
$id_rubrique = intval(_request('id_rubrique'));
$id_secteur = sql_getfetsel('id_secteur', 'spip_rubriques', 'id_rubrique='.$id_rubrique);
@ -130,18 +126,30 @@ function formulaires_editer_groupe_traiter_dist($id_article=0, $redirect=''){
);
sql_updateq('spip_documents_liens',array('id_objet' => intval($id_article)), $where);
}
$surtitre=_request('surtitre');
$titre=_request('titre');
$soustitre=_request('soustitre');
$texte=_request('texte');
$descriptif=_request('descriptif');
if (_request('ponctuel')=="on"){
$surtitre="";
$soustitre="";
$descriptif="";
}
// maj de l'article
$set = array(
'titre' => _request('titre'),
'texte' => _request('texte'),
'soustitre' => _request('soustitre'),
'titre' => $titre,
'texte' => $texte,
'soustitre' => $soustitre,
// On affiche le plus récent en premier => on garde la date de mise à jour
'date' => date("Y-m-d H:i:s"),
'descriptif' => $descriptif,
'surtitre' => $surtitre
// 'champ_1' => _request('champ_1'),
// 'champ_2' => _request('champ_2'),
'descriptif' => _request('descriptif'),
// 'chapo' => _request('chapo'),
'surtitre' => _request('surtitre')
);
sql_updateq('spip_articles',$set,'id_article='.intval($id_article));

View file

@ -1,11 +1,48 @@
[(#REM) on affiche un groupe ponctuel pour les pays n'ayant pas de groupe régulier]
<BOUCLE_ponctuel(ARTICLES){id_rubrique=#ENV{id_rubrique}}{surtitre=""}{0,1}>
<div class="banniere-ville mt-4 mb-4">
<BOUCLE_banniere(DOCUMENTS){id_article}{extension==jpg|png|gif}{!par date}{0,1}>
[(#FICHIER|image_recadre{1200:300,-,focus}|image_reduire{1200,300})]
</BOUCLE_banniere>
[(#CHEMIN{img/ville.png}|image_recadre{1200:300,-,focus}|image_reduire{1200,300})]
<//B_banniere>
<div class="ville-titre">
<h2>#INFO_TITRE{rubrique, #ID_RUBRIQUE}</h2>
</div>
</div>
<div class="bloc-groupe col mt-4 mt-lg-0">
[<h3 class="h4 #EDIT{titre}">(#TITRE|sinon{"Groupes ponctuels"})</h3>]
[(#AUTORISER{modifier, article, #ID_ARTICLE})
<a class="btn" href="#URL_PAGE{editer_groupe,id_article=#ID_ARTICLE }"><i class="fas fa-edit"></i> Mettre à jour le groupe</a>
]
<div class="row">
<div class="col-md-8">
<div class="texte #EDIT{texte}">#TEXTE</div>
</div>
<div class="col-md-4">
<strong>Responsables</strong>
<BOUCLE_auteurs(AUTEURS){id_article=#ID_ARTICLE}>
<div>#NOM
[(#EMAIL|ou{#TELEPHONE}|oui)
<a href="[(#URL_PAGE{contacter_auteur}|parametre_url{id_auteur,#ID_AUTEUR})]" class="mediabox">&nbsp; (contact)</a>
]
</div>
</BOUCLE_auteurs>
</div>
</div>
</div>
</BOUCLE_ponctuel>
<div class="row liste-articles-encadres">
<BOUCLE_villes(ARTICLES){id_rubrique=#ENV{id_rubrique}}{fusion surtitre}>
[(#REM) On affiche ensuite les groupes réguliers, par ville]
<BOUCLE_villes(ARTICLES){id_rubrique=#ENV{id_rubrique}}{fusion surtitre}{surtitre!=""}>
<div class="col-sm-6 col-lg-3 mt-4 mt-lg-0">
<INCLURE{fond=inclure/bloc_groupe,env,id_article=#ID_ARTICLE}>
</div>
</BOUCLE_villes>
<div class="col">Il n'y a pas encore de groupe dans ce pays.</div>
<//B_villes>
</div>

View file

@ -35,6 +35,16 @@ jQuery(function($) {
});
}
// Afficher / masquer des champs dans le formulaire "Groupes" selon le champ "ponctuel"
$('input[type=radio][name=ponctuel]').change(function() {
if (this.value == 'on') {
$('.regulier').hide();
}
else if (this.value == '') {
$('.regulier').show();
}
});
// les modifs déclenchées au scroll:
// afficher la flêche gotop

2
js/mon_site.min.js vendored
View file

@ -1,2 +1,2 @@
"use strict";jQuery(function(t){t(".parent_prev_next").on("click","svg.cursor",function(){var e=t(this).data("id_article"),n=t(this).data("bloc_recharger");ajaxReload(n,{args:{id_article:e}})}),t("a.page-scroll").bind("click",function(e){t(this);t("html, body").animate({scrollTop:0},"slow"),e.preventDefault()});t(window).on("scroll",function(){0<t(window).scrollTop()?t("#menu-principal").addClass("reduit"):t("#menu-principal").removeClass("reduit")}),window.addEventListener("resize",function(){document.getElementById("result"),"matchMedia"in window&&(window.matchMedia("(min-width:768px)").matches?(t("#header").removeClass("navbar-fixed-top"),t("button.burgermenu, #barnav ul.js-sous-menu").removeClass("fixed-top")):(t("#header").addClass("navbar-fixed-top"),t("button.burgermenu, #barnav ul.js-sous-menu").addClass("fixed-top")))},!1)}),jQuery(function(t){var n,a;t(".js-sous-menu ul").addClass("js-hidden"),t(".js-sous-menu").on("click","a",function(e){e.stopPropagation();var n=t(this).next();if(n.length)return t(n).toggleClass("js-hidden"),!1}),"querySelector"in document&&"addEventListener"in window&&(window.document.documentElement.className+=" js-enabled",n=document.querySelector(".nav-button"),a=document.querySelector("#barnav"),n&&n.addEventListener("click",function(e){n.classList.toggle("is-active"),a.classList.toggle("is-opened"),e.preventDefault()},!1))});
"use strict";jQuery(function(t){t(".parent_prev_next").on("click","svg.cursor",function(){var e=t(this).data("id_article"),n=t(this).data("bloc_recharger");ajaxReload(n,{args:{id_article:e}})}),t("a.page-scroll").bind("click",function(e){t(this);t("html, body").animate({scrollTop:0},"slow"),e.preventDefault()}),t("input[type=radio][name=ponctuel]").change(function(){"on"==this.value?t(".regulier").hide():""==this.value&&t(".regulier").show()});t(window).on("scroll",function(){0<t(window).scrollTop()?t("#menu-principal").addClass("reduit"):t("#menu-principal").removeClass("reduit")}),window.addEventListener("resize",function(){document.getElementById("result"),"matchMedia"in window&&(window.matchMedia("(min-width:768px)").matches?(t("#header").removeClass("navbar-fixed-top"),t("button.burgermenu, #barnav ul.js-sous-menu").removeClass("fixed-top")):(t("#header").addClass("navbar-fixed-top"),t("button.burgermenu, #barnav ul.js-sous-menu").addClass("fixed-top")))},!1)}),jQuery(function(t){var n,a;t(".js-sous-menu ul").addClass("js-hidden"),t(".js-sous-menu").on("click","a",function(e){e.stopPropagation();var n=t(this).next();if(n.length)return t(n).toggleClass("js-hidden"),!1}),"querySelector"in document&&"addEventListener"in window&&(window.document.documentElement.className+=" js-enabled",n=document.querySelector(".nav-button"),a=document.querySelector("#barnav"),n&&n.addEventListener("click",function(e){n.classList.toggle("is-active"),a.classList.toggle("is-opened"),e.preventDefault()},!1))});
//# sourceMappingURL=mon_site.min.js.map