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

Mise au point de la création des unités et des extras.

parent ef733821
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Affichage de
avec 334 ajouts et 18 suppressions
......@@ -4,14 +4,13 @@
[(#ENV{editable})
<form method="post" action="#ENV{action}"><div>
#ACTION_FORMULAIRE
<input type="hidden" name="extra" value="#ENV{extra, new}" />
<fieldset>
<legend><:territoires_data:legende_extra_identite:></legend>
<div class="editer-groupe">
[(#SET{explication, #ENV{_edition}|?{'', <:territoires_data:explication_extra_id:>}})]
[(#SET{explication, #ENV{_edition}|?{'', <:territoires_data:explication_id:>}})]
[(#SAISIE{input, extra_id,
explication=#GET{explication},
label=<:territoires_data:label_extra_id:>,
label=<:territoires_data:label_id:>,
disable_avec_post=#ENV{_edition},
obligatoire=oui
})]
......@@ -30,8 +29,8 @@
]
[(#SAISIE{input, label,
explication=<:territoires_data:explication_extra_titre:>,
label=<:territoires_data:label_extra_titre:>,
explication=<:territoires_data:explication_titre:>,
label=<:territoires_data:label_titre:>,
obligatoire=oui
})]
</div>
......
......@@ -69,11 +69,11 @@ function formulaires_editer_territoire_extra_verifier_dist(?string $id_extra = '
include_spip('inc/config')
and (lire_config("territoires_data/extras/{$id}"))
) {
$erreurs['extra_id'] = _T('territoires_data:erreur_extra_id_existe');
$erreurs['extra_id'] = _T('territoires_data:erreur_id_existe');
} elseif ($id === 'new') {
$erreurs['extra_id'] = _T('territoires_data:erreur_extra_id_new');
$erreurs['extra_id'] = _T('territoires_data:erreur_id_new');
} elseif (!preg_match('#^[\w]+$#i', $id)) {
$erreurs['extra_id'] = _T('territoires_data:erreur_extra_id');
$erreurs['extra_id'] = _T('territoires_data:erreur_id_invalide');
}
}
......
<div class='formulaire_spip formulaire_editer formulaire_#FORM formulaire_#FORM[-(#ENV{unite, new})]'>
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[(#ENV{editable})
<form method="post" action="#ENV{action}"><div>
#ACTION_FORMULAIRE
<fieldset>
<div class="editer-groupe">
[(#SET{explication, #ENV{_edition}|?{'', <:territoires_data:explication_id:>}})]
[(#SAISIE{input, unite_id,
explication=#GET{explication},
label=<:territoires_data:label_id:>,
disable_avec_post=#ENV{_edition},
obligatoire=oui
})]
[(#SAISIE{input, label,
explication=<:territoires_data:explication_titre:>,
label=<:territoires_data:label_titre:>,
obligatoire=oui
})]
</div>
</fieldset>
[(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
<!--extra-->
<p class="boutons"><input type="submit" class="submit" value="<:bouton_enregistrer|attribut_html:/>" /></p>
</div></form>
]
</div>
<?php
/**
* Gestion du formulaire de création et d'édition d'une unité de territoires.
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Chargement du formulaire de création et d'édition d'une unité de territoires.
*
* @param null|string $id_unite Identificant de l'unité d'extra (édition) ou vide (création)
* @param null|string $redirect URL de redirection en sortie de formulaire
*
* @return array Environnement du formulaire
*/
function formulaires_editer_territoire_unite_charger_dist(?string $id_unite = 'new', ?string $redirect = '') : array {
// Initialisation du contexte du formulaire pour une création
$valeurs = [
'unite_id' => $id_unite,
'label' => '',
'_edition' => '',
'editable' => true
];
// Si édition, on charge l'extra
if ($id_unite !== 'new') {
include_spip('inc/config');
$extra = lire_config("territoires_data/unites/{$id_unite}", []);
$valeurs = array_merge($valeurs, $extra);
// On passe en mode édition
$valeurs['_edition'] = 'oui';
}
return $valeurs;
}
/**
* Vérifications du formulaire de création et d'édition d'une unité de territoires.
* En particulier, on ne peut pas créer une unité avec le même id.
*
* @param null|string $id_unite Identificant de l'unité d'extra (édition) ou vide (création)
* @param null|string $redirect URL de redirection en sortie de formulaire
*
* @return array Tableau des erreurs
*/
function formulaires_editer_territoire_unite_verifier_dist(?string $id_unite = 'new', ?string $redirect = '') : array {
// Par défaut, aucune erreur
$erreurs = [];
// On ne cherche pas les champs obligatoires qui sont tous gérés par le formulaire, mais les erreurs suivantes:
// - id d'unité déjà existant ou toujours appelé `new`
// - un id mal formé
if ($id_unite === 'new') {
// inutile de vérifier un id si c'est une modification car il n'est pas modifiable
$id = _request('unite_id');
if (
include_spip('inc/config')
and (lire_config("territoires_data/unites/{$id}"))
) {
$erreurs['unite_id'] = _T('territoires_data:erreur_id_existe');
} elseif ($id === 'new') {
$erreurs['unite_id'] = _T('territoires_data:erreur_id_new');
} elseif (!preg_match('#^[\w]+$#i', $id)) {
$erreurs['unite_id'] = _T('territoires_data:erreur_id_invalide');
}
}
return $erreurs;
}
/**
* Traitement du formulaire de création et d'édition d'une unité de territoires.
*
* @param null|string $id_unite Identificant de l'unité d'extra (édition) ou vide (création)
* @param null|string $redirect URL de redirection en sortie de formulaire
*
* @return array Retours des traitements
*/
function formulaires_editer_territoire_unite_traiter_dist(?string $id_unite = 'new', ?string $redirect = '') : array {
// Initialisation du retour de la fonction
$retour = [];
// On récupère les saisies et on initialise la configuration de l'extra
$unite_id = _request('unite_id');
$unite = [
'label' => _request('label'),
'is_editable' => true,
];
// Ajout ou mise à jour de l'unité dans la meta de configuration
include_spip('inc/config');
ecrire_config("territoires_data/unites/{$unite_id}", $unite);
// Redirection vers la page demandée si tout s'est bien passé
if (
empty($retour['message_erreur'])
and $redirect
) {
$retour['redirect'] = $redirect;
}
$retour['editable'] = true;
return $retour;
}
......@@ -13,6 +13,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'champ_extra_type' => 'Type',
'champ_extra_format' => 'Format',
'champ_extra_unite' => 'Unité',
'champ_unite_id' => 'Id',
'champ_unite_titre' => 'Libellé',
// E
'extra_area' => 'superficie',
......
......@@ -21,10 +21,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'erreur_feed_extra' => 'L\'identifiant saisi n\'est pas valide',
'erreur_feed_id' => 'L\'identifiant saisi n\'est pas valide',
'erreur_feed_id_existe' => 'L\'identifiant de feed saisi existe déjà : choisissez en un autre',
'erreur_extra_id_existe' => 'L\'identifiant de nature de données saisi existe déjà : choisissez en un autre',
'erreur_extra_id_new' => 'L\'identifiant de nature de données `new` n\'est pas autorisé : choisissez en un autre',
'erreur_extra_id' => 'L\'identifiant saisi n\'est pas valide',
'erreur_extra_decimale' => 'Le nombre de décimales saisi n\'est pas autorisé',
'erreur_id_existe' => 'L\'identifiant saisi existe déjà : veuillez en choisir un autre',
'erreur_id_new' => 'L\'identifiant `new` n\'est pas autorisé : veuillez le modifier',
'erreur_id_invalide' => 'L\'identifiant saisi n\'est pas valide : veuillez n\'utiliser que des caractères autorisés',
'erreur_recuperation_source' => 'Le fichier source n\'a pas pu être stocké dans le feed',
'explication_feed_id' => 'L\'identifiant est un mot sans espace composé uniquement de lettres, chiffres et du caractère "_" (tiret bas). Il est initialisé avec une valeur unique non déjà utilisée mais vous pouvez néanmoins la modifier',
'explication_feed_titre' => 'Le titre peut-être écrit en utilisant la balise multilangues',
......@@ -39,13 +39,14 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'explication_feed_mapping_valeur' => 'Cet index racine représente la partie spécifique permettant d\'accéder à la valeur statistique dans le tableau des données source. Il est exprimé sous la forme index1/index2/index3',
'explication_feed_mapping_code_csv' => 'Cet index racine représente le nom de la colonne correspondant au code de territoire dans le le fichier CSV. Les lettres avec accents seront remplacées par leur équivalent sans accent.',
'explication_feed_mapping_valeur_csv' => 'Cet index racine représente le nom de la colonne correspondant à la valeur statistique dans le fichier CSV. Les lettres avec accents seront remplacées par leur équivalent sans accent.',
'explication_extra_id' => 'L\'identifiant est un mot sans espace composé uniquement de lettres, chiffres et du caractère "_" (tiret bas). Il est initialisé avec la valeur `new` qu\'il convient de modifier.',
'explication_extra_decimale' => 'Choisissez une valeur supérieure à 1 et inférieure à 9.',
'explication_extra_titre' => 'Le libellé peut-être écrit en utilisant la balise multilangues ou un item de langue',
'explication_id' => 'L\'identifiant est un mot sans espace composé uniquement de lettres, chiffres et du caractère "_" (tiret bas). Il est initialisé avec la valeur `new` qu\'il convient de modifier.',
'explication_titre' => 'Le libellé peut-être écrit en utilisant la balise multilangues ou un item de langue',
// I
'icone_creer_feed' => 'Créer un jeu de données',
'icone_creer_extra' => 'Créer une nature de données',
'icone_creer_unite' => 'Créer une unité',
'icone_modifier_feed' => 'Modifier le jeu de données',
'info_0_feed' => 'Aucun jeu de données',
'info_1_feed' => '1 jeu de données',
......@@ -56,7 +57,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'label_composant_jeu_territory_info' => 'Jeux de caractéristiques',
'label_composant_jeu_territory_stat' => 'Jeux de statistiques',
'label_composant_extra' => 'Natures de données',
'label_composant_unite' => 'Unites',
'label_composant_unite' => 'Unités',
'label_feed_decodage_delimiteur' => 'Délimiteur',
'label_feed_decodage_racine' => 'Index racine du mapping',
'label_feed_category_territory_info' => 'Caractéristiques des territoires',
......@@ -81,10 +82,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'label_feed_source_date' => 'Date de la dernière mise à jour',
'label_extra_decimale' => 'Nombre de décimales affichées',
'label_extra_format' => 'Format des valeurs',
'label_extra_id' => 'Identifiant de la nature de données',
'label_extra_titre' => 'Libellé',
'label_extra_type' => 'Type de données',
'label_extra_unite' => 'Unité de la valeur',
'label_id' => 'Identifiant',
'label_titre' => 'Libellé',
'legende_feed_identite' => 'Identification du jeu de données',
'legende_feed_unite_peuplement' => 'Territoires concernés',
'legende_feed_source' => 'Origine & signification des données',
......
#SET{unite, #ENV{unite, new}}
#SET{redirect, #ENV{redirect, ''}}
[(#GET{unite}|=={new}|oui)
[(#AUTORISER{creer, territoireunite}|sinon_interdire_acces)]
][(#GET{unite}|=={new}|non)
[(#AUTORISER{editer, territoireunite, #GET{unite}}|sinon_interdire_acces)]
]
<h1 class="grostitre">
[(#GET{unite}|=={new}|?{<:territoires_data:titre_page_creer_unite:>, <:territoires_data:titre_page_editer_unite:>})]
</h1>
[<div class="noajax">
(#FORMULAIRE_EDITER_TERRITOIRE_UNITE{#GET{unite}, #GET{redirect}})
</div>]
......@@ -2,7 +2,7 @@
[(#URL_ECRIRE{territoire_extra_editer}
|parametre_url{extra, new}
|parametre_url{redirect, #SELF}
|icone_verticale{<:territoires_data:icone_creer_extra:/>,territoires_feed,new,right})]
|icone_verticale{<:territoires_data:icone_creer_extra:/>,territoire_extra, new, right})]
<div class="clearfix"></div>
]
......
[(#AUTORISER{creer, territoireunite})
[(#URL_ECRIRE{territoire_unite_editer}
|parametre_url{unite, new}
|parametre_url{redirect, #SELF}
|icone_verticale{<:territoires_data:icone_creer_unite:/>, territoire_unite, new, right})]
<div class="clearfix"></div>
]
[(#REM) <!-- Liste des unités d'extras enregistrées --> ]
<INCLURE{fond=prive/squelettes/liste/territoire_unites, env, ajax} />
[(#REM) <!-- Liste des unités d'extras :
Les parametres d'environnement specifiques sont :
- titre : le titre de la liste
- par : le champ tri principal
- pas : le pas de pagination
- where : condition supplementaire construite par l'appelant (exclusion de certaines lignes par ex)
-->]
[(#SET{defaut_tri,#ARRAY{
label, 1,
}})]
<B_liste_extras>
#ANCRE_PAGINATION
<div class="liste-objets territoire_extras">
<table class="spip liste">
[<caption><strong class="caption">(#ENV*{titre, #GRAND_TOTAL|singulier_ou_pluriel{territoire_extra:info_1_unite, territoire_extra:info_nb_unite}})</strong></caption>]
<thead>
<tr class="first_row">
<th class="id" scope="col"><:territoire_extra:champ_unite_id:></th>
<th class="titre principale" scope="col">[(#TRI{label, <:territoire_extra:champ_unite_titre:>, ajax})]</th>
<th class="action" scope="col">&nbsp;</th>
</tr>
</thead>
<tbody>
<BOUCLE_liste_extras(DATA) {source table, #CONFIG{territoires_data/unites}}{where?}{tri #ENV{par, label}, #GET{defaut_tri}}{pagination #ENV{pas, 10}}>
<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd, row_even})]">
<td class="id">#CLE</td>
<td class="titre principale">[(#VALEUR{label}|typo)]</td>
<td class="action">
<div class="groupe-btns">[
(#AUTORISER{editer, territoireunite, #CLE})
[<a href="(#URL_ECRIRE{territoire_unite_editer, unite=#CLE}|parametre_url{redirect, #SELF})" class="btn btn_mini btn_secondaire"><:ezmashup:bouton_editer:></a>][
(#AUTORISER{supprimer, territoireunite, #CLE})
[(#BOUTON_ACTION{<:ezmashup:bouton_supprimer:>, #URL_ACTION_AUTEUR{supprimer_territoire_unite, #CLE, #SELF}, btn_mini btn_secondaire})]
]</div>
]</td>
</tr>
</BOUCLE_liste_extras>
</tbody>
</table>
[<nav class="pagination">(#PAGINATION{#ENV{pagination, prive}})</nav>]
</div>
</B_liste_extras>
[(#ALERTE_MESSAGE{<:territoire_extra:info_unite_aucun:>, '', notice})]
<//B_liste_extras>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="64" height="64" viewBox="0, 0, 64, 64">
<g id="Carte_Choroplethes" display="none">
<path d="M40.8,43.2 L47.5,32 L62,59.1 L24,59.1 L36.7,35.6 L40.8,43.2 z M42.8,46.9 L47.5,55.5 L56,55.5 L47.4,39.3 L42.8,46.9 z M30.1,55.5 L43.3,55.5 L36.7,43.2 L30.1,55.5 z" fill="#1D83D4"/>
<path d="M21.6,3 L38.5,11.4 L56.1,3.8 C56.8,3.5 57.6,3.8 57.9,4.5 C58,4.7 58,4.9 58,5.1 L58,24 L52.4,25.8 L52.4,11.5 L41.2,16.3 L41.2,29.4 L35.6,31.2 L35.6,16.3 L24.4,10.7 L24.4,12.963 C22.314,12.558 23.244,12.623 21.624,12.623 L21.4,12.4 L21.176,12.623 C19.823,12.623 20.62,12.571 18.8,12.924 L18.8,10.3 L7.6,15.1 L7.6,50.5 L18.8,45.7 L18.8,45.7 L18.8,41.035 C19.635,41.214 20.479,41.394 21.337,41.376 L21.5,41.539 L21.67,41.369 C22.119,41.36 21.825,41.37 22.55,41.316 C23.176,41.262 23.783,41.076 24.4,40.957 L24.4,45.7 L26.6,46.8 L23.9,51.8 L21.5,50.6 L3.9,58.2 C3.2,58.5 2.4,58.2 2.1,57.5 C2,57.3 2,57.1 2,56.9 L2,11.4 L21.6,3 z" fill="#666666"/>
<path d="M15.386,22.072 L21.75,15.708 L28.114,22.072 C31.629,25.586 31.629,31.285 28.114,34.8 C24.599,38.314 18.901,38.314 15.386,34.8 C11.871,31.285 11.871,25.586 15.386,22.072 L15.386,22.072 z" fill="#FFBF00" id="drop-fill"/>
</g>
<g id="Cartes" display="none">
<g id="cartes_territoires">
<path d="M40.8,44.15 L47.5,32.95 L62,60.05 L24,60.05 L36.7,36.55 L40.8,44.15 z M42.8,47.85 L47.5,56.45 L56,56.45 L47.4,40.25 L42.8,47.85 z M30.1,56.45 L43.3,56.45 L36.7,44.15 L30.1,56.45 z" fill="#1D83D4"/>
<path d="M57.9,5.45 C57.6,4.75 56.8,4.45 56.1,4.75 L38.5,12.35 L21.6,3.95 L2,12.35 L2,57.85 C2,58.05 2,58.25 2.1,58.45 C2.4,59.15 3.2,59.45 3.9,59.15 L21.5,51.55 L23.9,52.75 L26.6,47.75 L24.4,46.65 L24.4,11.65 L35.6,17.25 L35.6,32.15 L41.2,30.35 L41.2,17.25 L52.4,12.45 L52.4,26.75 L58,24.95 L58,6.05 C58,5.85 58,5.65 57.9,5.45 z M18.8,46.65 L7.6,51.45 L7.6,16.05 L18.8,11.25 L18.8,46.65 z" fill="#666666"/>
</g>
</g>
<g id="Territoires_Data" display="none">
<g id="territoires_data">
<path d="M34.424,2.319 L39.663,7.559 L24.693,22.528 L17.283,15.118 L7.552,24.85 L2.312,19.609 L17.283,4.639 L24.693,12.05 L34.424,2.319 z" fill="#666666"/>
<path d="M1.688,21.087 L10.875,21.087 L10.875,33.532 L1.688,33.532 L1.688,21.087 z M12.406,5.532 L21.594,5.532 L21.594,33.532 L12.406,33.532 L12.406,5.532 z M23.125,13.31 L32.312,13.31 L32.312,33.532 L23.125,33.532 L23.125,13.31 z" fill="#000000" id="bar-chart-2-fill" display="none"/>
<path d="M28.812,36.582 L39.513,18.781 L62.312,61.681 L2.312,61.681 L22.312,24.581 L28.812,36.582 z M32.013,42.382 L39.412,55.981 L52.812,55.981 L39.213,30.481 L32.013,42.382 z M11.913,55.981 L32.812,55.981 L22.312,36.582 L11.913,55.981 z" fill="#2187E1"/>
</g>
</g>
<g id="Territoires" display="none">
<path d="M28.5,28.35 L39.2,10.55 L62,53.45 L2,53.45 L22,16.35 L28.5,28.35 z M31.7,34.15 L39.1,47.75 L52.5,47.75 L38.9,22.25 L31.7,34.15 z M11.6,47.75 L32.5,47.75 L22,28.35 L11.6,47.75 z" fill="#666666" id="territoires"/>
</g>
<g id="Unite" display="none">
<path d="M30.218,26.397 L35.645,17.325 L47.39,39.276 L16.61,39.276 L26.897,20.241 L30.218,26.397 z M31.838,29.394 L35.645,36.36 L42.53,36.36 L35.564,23.238 L31.838,29.394 z M21.551,36.36 L32.243,36.36 L26.897,26.397 L21.551,36.36 z" fill="#1D83D4"/>
<path d="M38.306,59.25 L38.306,52.247 C44.355,48.376 49.671,39.663 49.671,29.651 C49.671,19.671 43.176,10.074 31.812,10.074 C20.447,10.074 13.953,19.671 13.953,29.651 C13.953,39.663 19.268,48.376 25.318,52.247 L25.318,59.25 L2.588,59.25 L2.588,52.756 L18.043,52.756 C11.246,47.903 5.835,39.732 5.835,29.651 C5.835,14.592 17.2,4.05 31.812,4.05 C46.424,4.05 57.788,14.592 57.788,29.651 C57.788,39.732 52.377,47.903 45.58,52.756 L61.035,52.756 L61.035,59.25 L38.306,59.25 z" fill="#666666" id="omega"/>
</g>
<g id="Extra">
<path d="M57.2,42.8 L33.8,42.8 L33.8,39.2 L50,39.2 L50,28.4 L33.8,28.4 L33.8,24.8 L42.8,24.8 L42.8,14 L33.8,14 L33.8,6.8 L30.2,6.8 L30.2,14 L21.2,14 L21.2,24.8 L30.2,24.8 L30.2,28.4 L14,28.4 L14,39.2 L30.2,39.2 L30.2,42.8 L6.8,42.8 L6.8,53.6 L30.2,53.6 L30.2,57.2 L33.8,57.2 L33.8,53.6 L57.2,53.6 z M39.2,17.6 L39.2,21.2 L33.8,21.2 L33.8,17.6 z M24.8,21.2 L24.8,17.6 L30.2,17.6 L30.2,21.2 z M46.4,32 L46.4,35.6 L33.8,35.6 L33.8,32 z M17.6,35.6 L17.6,32 L30.2,32 L30.2,35.6 z M10.4,50 L10.4,46.4 L30.2,46.4 L30.2,50 z M53.6,50 L33.8,50 L33.8,46.4 L53.6,46.4 z" fill="#666666"/>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="64" height="64" viewBox="0, 0, 64, 64">
<g id="Carte_Choroplethes" display="none">
<path d="M40.8,43.2 L47.5,32 L62,59.1 L24,59.1 L36.7,35.6 L40.8,43.2 z M42.8,46.9 L47.5,55.5 L56,55.5 L47.4,39.3 L42.8,46.9 z M30.1,55.5 L43.3,55.5 L36.7,43.2 L30.1,55.5 z" fill="#1D83D4"/>
<path d="M21.6,3 L38.5,11.4 L56.1,3.8 C56.8,3.5 57.6,3.8 57.9,4.5 C58,4.7 58,4.9 58,5.1 L58,24 L52.4,25.8 L52.4,11.5 L41.2,16.3 L41.2,29.4 L35.6,31.2 L35.6,16.3 L24.4,10.7 L24.4,12.963 C22.314,12.558 23.244,12.623 21.624,12.623 L21.4,12.4 L21.176,12.623 C19.823,12.623 20.62,12.571 18.8,12.924 L18.8,10.3 L7.6,15.1 L7.6,50.5 L18.8,45.7 L18.8,45.7 L18.8,41.035 C19.635,41.214 20.479,41.394 21.337,41.376 L21.5,41.539 L21.67,41.369 C22.119,41.36 21.825,41.37 22.55,41.316 C23.176,41.262 23.783,41.076 24.4,40.957 L24.4,45.7 L26.6,46.8 L23.9,51.8 L21.5,50.6 L3.9,58.2 C3.2,58.5 2.4,58.2 2.1,57.5 C2,57.3 2,57.1 2,56.9 L2,11.4 L21.6,3 z" fill="#666666"/>
<path d="M15.386,22.072 L21.75,15.708 L28.114,22.072 C31.629,25.586 31.629,31.285 28.114,34.8 C24.599,38.314 18.901,38.314 15.386,34.8 C11.871,31.285 11.871,25.586 15.386,22.072 L15.386,22.072 z" fill="#FFBF00" id="drop-fill"/>
</g>
<g id="Cartes" display="none">
<g id="cartes_territoires">
<path d="M40.8,44.15 L47.5,32.95 L62,60.05 L24,60.05 L36.7,36.55 L40.8,44.15 z M42.8,47.85 L47.5,56.45 L56,56.45 L47.4,40.25 L42.8,47.85 z M30.1,56.45 L43.3,56.45 L36.7,44.15 L30.1,56.45 z" fill="#1D83D4"/>
<path d="M57.9,5.45 C57.6,4.75 56.8,4.45 56.1,4.75 L38.5,12.35 L21.6,3.95 L2,12.35 L2,57.85 C2,58.05 2,58.25 2.1,58.45 C2.4,59.15 3.2,59.45 3.9,59.15 L21.5,51.55 L23.9,52.75 L26.6,47.75 L24.4,46.65 L24.4,11.65 L35.6,17.25 L35.6,32.15 L41.2,30.35 L41.2,17.25 L52.4,12.45 L52.4,26.75 L58,24.95 L58,6.05 C58,5.85 58,5.65 57.9,5.45 z M18.8,46.65 L7.6,51.45 L7.6,16.05 L18.8,11.25 L18.8,46.65 z" fill="#666666"/>
</g>
</g>
<g id="Territoires_Data" display="none">
<g id="territoires_data">
<path d="M34.424,2.319 L39.663,7.559 L24.693,22.528 L17.283,15.118 L7.552,24.85 L2.312,19.609 L17.283,4.639 L24.693,12.05 L34.424,2.319 z" fill="#666666"/>
<path d="M1.688,21.087 L10.875,21.087 L10.875,33.532 L1.688,33.532 L1.688,21.087 z M12.406,5.532 L21.594,5.532 L21.594,33.532 L12.406,33.532 L12.406,5.532 z M23.125,13.31 L32.312,13.31 L32.312,33.532 L23.125,33.532 L23.125,13.31 z" fill="#000000" id="bar-chart-2-fill" display="none"/>
<path d="M28.812,36.582 L39.513,18.781 L62.312,61.681 L2.312,61.681 L22.312,24.581 L28.812,36.582 z M32.013,42.382 L39.412,55.981 L52.812,55.981 L39.213,30.481 L32.013,42.382 z M11.913,55.981 L32.812,55.981 L22.312,36.582 L11.913,55.981 z" fill="#2187E1"/>
</g>
</g>
<g id="Territoires" display="none">
<path d="M28.5,28.35 L39.2,10.55 L62,53.45 L2,53.45 L22,16.35 L28.5,28.35 z M31.7,34.15 L39.1,47.75 L52.5,47.75 L38.9,22.25 L31.7,34.15 z M11.6,47.75 L32.5,47.75 L22,28.35 L11.6,47.75 z" fill="#666666" id="territoires"/>
</g>
<g id="Unite">
<path d="M30.218,26.397 L35.645,17.325 L47.39,39.276 L16.61,39.276 L26.897,20.241 L30.218,26.397 z M31.838,29.394 L35.645,36.36 L42.53,36.36 L35.564,23.238 L31.838,29.394 z M21.551,36.36 L32.243,36.36 L26.897,26.397 L21.551,36.36 z" fill="#1D83D4" display="none"/>
<path d="M38.306,59.25 L38.306,52.247 C44.355,48.376 49.671,39.663 49.671,29.651 C49.671,19.671 43.176,10.074 31.812,10.074 C20.447,10.074 13.953,19.671 13.953,29.651 C13.953,39.663 19.268,48.376 25.318,52.247 L25.318,59.25 L2.588,59.25 L2.588,52.756 L18.043,52.756 C11.246,47.903 5.835,39.732 5.835,29.651 C5.835,14.592 17.2,4.05 31.812,4.05 C46.424,4.05 57.788,14.592 57.788,29.651 C57.788,39.732 52.377,47.903 45.58,52.756 L61.035,52.756 L61.035,59.25 L38.306,59.25 z" fill="#666666" id="omega"/>
</g>
<g id="Extra" display="none">
<path d="M57.2,42.8 L33.8,42.8 L33.8,39.2 L50,39.2 L50,28.4 L33.8,28.4 L33.8,24.8 L42.8,24.8 L42.8,14 L33.8,14 L33.8,6.8 L30.2,6.8 L30.2,14 L21.2,14 L21.2,24.8 L30.2,24.8 L30.2,28.4 L14,28.4 L14,39.2 L30.2,39.2 L30.2,42.8 L6.8,42.8 L6.8,53.6 L30.2,53.6 L30.2,57.2 L33.8,57.2 L33.8,53.6 L57.2,53.6 z M39.2,17.6 L39.2,21.2 L33.8,21.2 L33.8,17.6 z M24.8,21.2 L24.8,17.6 L30.2,17.6 L30.2,21.2 z M46.4,32 L46.4,35.6 L33.8,35.6 L33.8,32 z M17.6,35.6 L17.6,32 L30.2,32 L30.2,35.6 z M10.4,50 L10.4,46.4 L30.2,46.4 L30.2,50 z M53.6,50 L33.8,50 L33.8,46.4 L53.6,46.4 z" fill="#666666"/>
</g>
</svg>
......@@ -151,7 +151,7 @@ function autoriser_territoireunite_creer_dist($faire, $type, $id, $qui, $options
*
* @param string $faire Action demandée : `modifier` (pour éditer)
* @param string $type Type d'objet sur lequel appliquer l'action : `territoireunite`(ce n'est pas un objet au sens SPIP)
* @param null|string $id Identifiant de l'objet : celui de l'unité sur lequel appliquer l'action
* @param null|string $id Identifiant de l'objet : celui de l'unité sur laquelle appliquer l'action
* @param null|array|int $qui L'initiateur de l'action:
* - si null on prend alors visiteur_session
* - un id_auteur (on regarde dans la base)
......@@ -177,3 +177,46 @@ function autoriser_territoireunite_editer_dist($faire, $type, $id, $qui, $option
return $autorise;
}
/**
* Autorisation de suppression d'un extra de territoires éditable.
* Il faut :
* - posséder l'autorisation de modifier un extra
* - et que l'extra ne soit pas utilisé.
*
* @uses autoriser_territoireextra_supprimer_dist()
*
* @param string $faire Action demandée : `supprimer`
* @param string $type Type d'objet sur lequel appliquer l'action : `territoireunite`(ce n'est pas un objet au sens SPIP)
* @param null|string $id Identifiant de l'objet : celui de l'unité sur laquelle appliquer l'action
* @param null|array|int $qui L'initiateur de l'action:
* - si null on prend alors visiteur_session
* - un id_auteur (on regarde dans la base)
* - un tableau auteur complet, y compris [restreint]
* @param null|array $options Tableau d'options sous forme de tableau associatif : inutilisé
*
* @return bool `true`si l'auteur est autorisée à exécuter l'action, `false` sinon.
**/
function autoriser_territoireunite_supprimer_dist($faire, $type, $id, $qui, $options) {
// Initialisation de l'autorisation à non autorisé par défaut.
$autorise = false;
if (autoriser('editer', 'territoireunite', $id, $qui, $options)) {
// On vérifier qu'il n'existe pas d'extra utilisant cette unité.
// Pour ce faire, on vérifie le champ `unite` de la liste des extras incluses dans la meta de configuration.
include_spip('inc/config');
$extras = lire_config('territoires_data/extras', []);
$unite_utilisee = false;
foreach ($extras as $_extra) {
if ($_extra['unite'] === $id) {
$unite_utilisee = true;
break;
}
}
if (!$unite_utilisee) {
$autorise = true;
}
}
return $autorise;
}
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