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

Début de l'assistant de création d'un feed

parent 3ae70410
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
<div class="formulaire_spip formulaire_editer formulaire_#FORM">
<h3 class="titrem"><:territoires_stats:titre_creer_feed:></h3>
<h3 class="titrem"><:cartes_territoires:titre_etape_creer{etape=#ENV{_etape}, etapes=#ENV{_etapes}}:></h3>
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
......@@ -7,29 +7,21 @@
<div>
#ACTION_FORMULAIRE{#ENV{action}}
<fieldset>
<legend><:territoires_stats:legende_feed_identite:></legend>
<legend><:territoires_stats:legende_feed_unite_peuplement:></legend>
<div class="editer-groupe">
[(#SAISIE{input, feed_id,
label=<:territoires_stats:label_feed_id:>,
explication=<:territoires_stats:explication_feed_id:>,
obligatoire=oui,
maxlength=255
})]
[(#SAISIE{radio, type,
explication=<:cartes_territoires:explication_type_territoire:>,
label=<:cartes_territoires:label_type_territoire:>,
label=<:territoires_stats:label_feed_type_territoire:>,
data=#ENV{_types_territoire},
defaut=#ENV{_type_territoire_defaut}
defaut=#ENV{_type_territoire_defaut},
obligatoire=oui,
})]
<BOUCLE_pays_type(DATA) {source table, #ENV{_pays}}>
<div id="pays_#CLE" class="editer-pays">
[(#SAISIE{radio_flex, pays_#CLE,
explication=#ENV{_explication_checkbox},
label=<:cartes_territoires:label_pays_type:>,
label=<:territoire:champ_iso_pays_label:>,
data=#VALEUR,
conteneur_class=#ENV{_classe_conteneur},
conteneur_class=#ENV{_classe_conteneur/#CLE},
multi_cols=#ENV{_choix_multi_col/#CLE},
extraire_multi=oui,
})]
......@@ -38,6 +30,29 @@
</div>
</fieldset>
<fieldset>
<legend><:territoires_stats:legende_feed_source:></legend>
<div class="editer-groupe">
[(#SAISIE{radio, type_source,
label=<:territoires_stats:label_feed_type_source:>,
data=#ENV{_types_source},
defaut=#ENV{_type_source_defaut}
})]
[(#SAISIE{input, fichier_source,
type=file,
explication=<:territoires_stats:explication_feed_fichier:>,
label=<:territoires_stats:label_feed_fichier:>,
obligatoire=oui,
})]
[(#SAISIE{input, url_source,
explication=<:territoires_stats:explication_feed_url:>,
label=<:territoires_stats:label_feed_url:>,
})]
</div>
</fieldset>
<p class="boutons">
<input type="submit" class="submit" value="<:info_etape_suivante:>" />
</p>
......@@ -51,42 +66,25 @@
const types_pays = ['subdivision', 'infrasubdivision', 'protected_area'];
// Afficher le bloc correspondant au types de carte et de territoire passé ou rien sinon.
function afficher_bloc_pays(type_carte, type_territoire) {
if (type_carte === 'carte') {
jQuery("div.editer-pays").hide();
} else {
if (types_pays.includes(type_territoire)) {
for (let t of types_pays) {
let id = 'div#pays_' + t;
if (t === type_territoire) {
jQuery(id).show();
} else {
jQuery(id).hide();
}
function afficher_bloc_pays(type_territoire) {
if (types_pays.includes(type_territoire)) {
for (let t of types_pays) {
let id = 'div#pays_' + t;
if (t === type_territoire) {
jQuery(id).show();
} else {
jQuery(id).hide();
}
} else {
jQuery("div.editer-pays").hide();
}
} else {
jQuery("div.editer-pays").hide();
}
}
afficher_bloc_pays(
jQuery("input[name='type_carte']:checked").val(),
jQuery("input[name='type']:checked").val()
);
afficher_bloc_pays(jQuery("input[name='type']:checked").val());
jQuery("input[name='type_carte']").change(function() {
afficher_bloc_pays(
jQuery("input[name='type_carte']:checked").val(),
jQuery("input[name='type']:checked").val()
);
jQuery(this).blur();
});
jQuery("input[name='type']").change(function() {
afficher_bloc_pays(
jQuery("input[name='type_carte']:checked").val(),
jQuery("input[name='type']:checked").val()
);
afficher_bloc_pays(jQuery("input[name='type']:checked").val());
jQuery(this).blur();
});
});
......
......@@ -12,7 +12,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
* @return array Tableau des données à charger par le formulaire.
*/
function formulaires_creer_feed_territoires_charger() : array {
// Initialisation des paramètres d'affichage
// Initialisation des paramètres de l'unité de peuplement
// -- Liste des types de territoire.
include_spip('inc/config');
$types_territoire = lire_config('territoires/types');
......@@ -31,13 +31,27 @@ function formulaires_creer_feed_territoires_charger() : array {
$where[1] = 't1.type=' . sql_quote($_type);
$pays = sql_allfetsel($select, $from, $where, 't1.iso_pays');
$valeurs['_pays'][$_type] = array_column($pays, 'nom_usage', 'iso_pays');
$valeurs['_choix_multi_col'][$_type] = 1 + intdiv(count($valeurs['_pays'][$_type]), 10);
$valeurs['_choix_multi_col'][$_type] = 1 + intdiv(count($valeurs['_pays'][$_type]), 5);
if ($valeurs['_choix_multi_col'][$_type] > 3) {
$valeurs['_choix_multi_col'][$_type] = 3;
}
$valeurs['_classe_conteneur'][$_type] = ($valeurs['_choix_multi_col'][$_type] > 1)
? 'pleine_largeur'
: '';
}
}
// Initialisation des paramètres de la source du jeu de données
// -- Type de source
$valeurs['_types_source'] = [
'api' => _T('territoires_stats:option_feed_type_source_api'),
'file' => _T('territoires_stats:option_feed_type_source_file')
];
$valeurs['_type_source_defaut'] = 'api';
// Préciser le nombre d'étapes du formulaire
$valeurs['_etapes'] = 2;
return $valeurs;
}
......@@ -47,10 +61,22 @@ function formulaires_creer_feed_territoires_charger() : array {
* @return array Message d'erreur si aucun pays choisi alors que la configuration du type de teritoire l'oblige.
* Sinon, chargement des champs utiles à l'étape 2 :
*/
function formulaires_creer_feed_territoires_verifier() : array {
function formulaires_creer_feed_territoires_verifier_1() : array {
// Initialisation des erreurs de vérification.
$erreurs = [];
return $erreurs;
}
/**
* Vérification du formulaire :.
*
* @return array Message d'erreur si aucun pays choisi alors que la configuration du type de teritoire l'oblige.
* Sinon, chargement des champs utiles à l'étape 2 :
*/
function formulaires_creer_feed_territoires_verifier_2() : array {
// Initialisation des erreurs de vérification.
$erreurs = [];
return $erreurs;
}
......
<div class="formulaire_spip formulaire_editer formulaire_#FORM">
<h3 class="titrem"><:cartes_territoires:titre_etape_creer{etape=#ENV{_etape}, etapes=#ENV{_etapes}}:></h3>
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
<form method="post" action="#ENV{action}">
<div>
#ACTION_FORMULAIRE{#ENV{action}}
<fieldset>
<legend><:territoires_stats:legende_feed_identite:></legend>
<div class="editer-groupe">
[(#SAISIE{input, feed_id,
label=<:territoires_stats:label_feed_id:>,
explication=<:territoires_stats:explication_feed_id:>,
obligatoire=oui,
maxlength=255
})]
[(#SAISIE{input, titre,
explication=<:territoires_stats:explication_feed_titre:>,
label=<:territoires_stats:label_feed_titre:>,
obligatoire=oui,
})]
[(#SAISIE{textarea, description,
explication=<:territoires_stats:explication_feed_description:>,
label=<:territoires_stats:label_feed_description:>,
rows=5,
})]
</fieldset>
<fieldset>
<legend><:territoires_stats:legende_feed_unite_peuplement:></legend>
<div class="editer-groupe">
[(#SAISIE{radio, type,
label=<:territoires_stats:label_feed_type_territoire:>,
data=#ENV{_types_territoire},
defaut=#ENV{_type_territoire_defaut},
obligatoire=oui,
})]
<BOUCLE_pays_type(DATA) {source table, #ENV{_pays}}>
<div id="pays_#CLE" class="editer-pays">
[(#SAISIE{radio_flex, pays_#CLE,
label=<:territoire:champ_iso_pays_label:>,
data=#VALEUR,
conteneur_class=#ENV{_classe_conteneur/#CLE},
multi_cols=#ENV{_choix_multi_col/#CLE},
extraire_multi=oui,
})]
</div>
</BOUCLE_pays_type>
</div>
</fieldset>
<fieldset>
<legend><:territoires_stats:legende_feed_source:></legend>
<div class="editer-groupe">
[(#SAISIE{radio, type_source,
label=<:territoires_stats:label_feed_type_source:>,
data=#ENV{_types_source},
defaut=#ENV{_type_source_defaut}
})]
[(#SAISIE{input, fichier_source,
type=file,
explication=<:territoires_stats:explication_feed_fichier:>,
label=<:territoires_stats:label_feed_fichier:>,
obligatoire=oui,
})]
[(#SAISIE{input, url_source,
explication=<:territoires_stats:explication_feed_url:>,
label=<:territoires_stats:label_feed_url:>,
})]
</div>
</fieldset>
<fieldset>
<legend><:territoires_stats:legende_feed_mapping:></legend>
<div class="editer-groupe">
[(#SAISIE{input, decodage,
explication=#ENV{_explication_decodage},
label=#ENV{_label_decodage},
defaut=#ENV{_decodage_defaut}
})]
[(#SAISIE{selection, type_code,
label=<:territoires_stats:label_feed_type_code:>,
data=#ENV{_types_code},
defaut=#ENV{_types_code_defaut}
})]
[(#SAISIE{input, extra,
explication=<:territoires_stats:explication_feed_extra:>,
label=<:territoires_stats:label_feed_extra:>,
})]
[(#SAISIE{input, titre_extra,
explication=<:territoires_stats:explication_feed_extra_titre:>,
label=<:territoires_stats:label_feed_extra_titre:>,
})]
</div>
</fieldset>
<p class="boutons">
<input type="submit" class="submit" value="<:info_etape_suivante:>" />
</p>
</div>
</form>
</div>
<script type="text/javascript">
//<![CDATA[
jQuery(document).ready(function() {
// Liste des types associés à un pays
const types_pays = ['subdivision', 'infrasubdivision', 'protected_area'];
// Afficher le bloc correspondant au types de carte et de territoire passé ou rien sinon.
function afficher_bloc_pays(type_territoire) {
if (types_pays.includes(type_territoire)) {
for (let t of types_pays) {
let id = 'div#pays_' + t;
if (t === type_territoire) {
jQuery(id).show();
} else {
jQuery(id).hide();
}
}
} else {
jQuery("div.editer-pays").hide();
}
}
afficher_bloc_pays(jQuery("input[name='type']:checked").val());
jQuery("input[name='type']").change(function() {
afficher_bloc_pays(jQuery("input[name='type']:checked").val());
jQuery(this).blur();
});
});
//]]>
</script>
......@@ -8,6 +8,15 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
// B
'bouton_recharger' => 'Recharger la configuration des jeux de données',
// E
'explication_feed_id' => 'L\'identifiant est un mot sans espace composé uniquement de lettres, chiffres et du caractère "_" (tiret bas)',
'explication_feed_titre' => 'Le titre peut-être écrit en utilisant la balise multilangues',
'explication_feed_description' => 'Le titre peut-être écrit en utilisant la balise multilangues et tous les raccourcis SPIP',
'explication_feed_fichier' => 'Le fichier source doit être disponible au format JSON, CSV ou XML',
'explication_feed_url' => 'L\'URL de la requête doit permettre de récupérer en une fois l\'ensemble des données au format JSON',
'explication_feed_extra' => 'L\'identifiant sert à reconnaitre le type de données du jeu. C\'est un mot sans espace composé uniquement de lettres, chiffres et du caractère "_" (tiret bas)',
'explication_feed_extra_titre' => 'Le titre sert à reconnaitre le type de données du jeu de façon plus lisible',
// I
'icone_creer_feed' => 'Créer un jeu de données',
'info_0_feed' => 'Aucun jeu de données',
......@@ -17,11 +26,32 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
// L
'label_feed_category_territory_data' => 'Données statistiques sur les territoires',
'label_feed_id' => 'Identifiant du jeu de données',
'label_feed_titre' => 'Titre',
'label_feed_fichier' => 'Fichier source',
'label_feed_url' => 'URL de la requête',
'label_feed_description' => 'Descriptif',
'label_feed_type_territoire' => 'Type de territoire',
'label_feed_type_source' => 'Source de données',
'label_feed_type_code' => 'Type d\'identifiant des territoires de la source',
'label_feed_extra' => 'Identifiant de la donnée',
'label_feed_extra_titre' => 'Titre de la donnée',
'legende_feed_identite' => 'Identification du jeu de données',
'legende_feed_unite_peuplement' => 'Territoires concernés',
'legende_feed_source' => 'Origine des données',
'legende_feed_mapping' => 'Interprétation des données',
// M
'menu_peupler' => 'Ajouter des jeux de données',
// O
'option_feed_type_code_iso_territoire' => 'Code primaire normalisé',
'option_feed_type_source_api' => 'Données accessibles via une API',
'option_feed_type_source_file' => 'Fichier à télécharger',
// T
'titre_etape_creer' => 'Etape @etape@ / @etapes@',
'titre_page_creer' => 'Créer un jeu de données',
'titre_page_peupler' => 'Gestion des jeux de données sur les territoires',
'titre_liste_extras_stat' => 'Données statistiques',
);
......@@ -6,7 +6,7 @@
</h1>
[(#AUTORISER{creer, feed, '', #NULL, #ARRAY{plugin, territoires_stats}})
[(#URL_ECRIRE{territoires_feed_creer}|icone_verticale{<:territoires_stats:icone_creer_feed:/>,territoires_feed,new,right})]
[(#URL_ECRIRE{feed_territoires_creer}|icone_verticale{<:territoires_stats:icone_creer_feed:/>,territoires_feed,new,right})]
<div class="clearfix"></div>
]
......@@ -16,5 +16,5 @@
</div>]
[(#AUTORISER{creer, feed, '', #NULL, #ARRAY{plugin, territoires_stats}})
[(#URL_ECRIRE{territoires_feed_creer}|icone_verticale{<:territoires_stats:icone_creer_feed:/>,territoires_feed,new,right})]
[(#URL_ECRIRE{feed_territoires_creer}|icone_verticale{<:territoires_stats:icone_creer_feed:/>,territoires_feed,new,right})]
]
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