Browse Source

- Gestion de l'export/import des grappes avec ieconfig

+z
v1
arnaud.berard@mister-graphx.com 6 years ago
parent
commit
2ad8ebb7e3
  1. 154
      grappes_ieconfig.php
  2. 13
      lang/grappes_fr.php
  3. 3
      paquet.xml
  4. 26
      saisies/selection_grappes_multiple.html

154
grappes_ieconfig.php

@ -0,0 +1,154 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
/**
* Pipeline ieconfig pour l'import/export de configuration
*
*
* @see http://contrib.spip.net/Importeur-Exporteur-de-configurations-documentation
* @param array $flux
* @return array
*/
function grappes_ieconfig($flux){
include_spip('inc/texte');
$action = $flux['args']['action'];
// Formulaire d'export
if ($action=='form_export') {
$saisies = array(
array(
'saisie' => 'fieldset',
'options' => array(
'nom' => 'grappes_export',
'label' => '<:grappes:export_titre:>',
'icone' => 'grappes-16.png'
),
'saisies' => array(
array(
'saisie' => 'selection_grappes_multiple',
'options' => array(
'nom' => 'grappes_a_exporter',
'label' => '<:grappes:export_choix_label:>',
'cacher_option_intro' => 'oui'
)
)
)
)
);
$flux['data'] = array_merge($flux['data'],$saisies);
}
// Tableau d'export
if ($action=='export' && is_array(_request('grappes_a_exporter')) && count(_request('grappes_a_exporter'))>0) {
// Spécifier que le plugin grappe est necessité
//
$flux['data']['necessite'][] = 'grappes';
$flux['data']['grappes'] = array();
include_spip('base/abstract_sql');
foreach (_request('grappes_a_exporter') as $identifiant) {
$objet_export = sql_fetsel('*','spip_grappes','identifiant = '.sql_quote($identifiant));
// On enlève jsute les champs qui ne sont pas necessaires à un import
// Au cas ou des champs extras seraient présents
unset($objet_export['id_grappe'],
$objet_export['date'],$objet_export['maj'],
$objet_export['visites'],
$objet_export['referers'],
$objet_export['popularite']);
$flux['data']['grappes'][$identifiant] = $objet_export;
}
}
// Formulaire d'import
if ($action=='form_import'&& isset($flux['args']['config']['grappes'])&& is_array($flux['args']['config']['grappes'])&& count($flux['args']['config']['grappes'])>0){
$saisies = array(
array(
'saisie' => 'fieldset',
'options' => array(
'nom' => 'grappes_import',
'label' => '<:grappes:import_titre:>',
'icone' => 'grappes-16.png'
),
'saisies' => array(
array(
'saisie' => 'explication',
'options' => array(
'nom' => 'import_explication',
'texte' => '<:grappes:import_choix:>'
)
)
)
)
);
foreach ($flux['args']['config']['grappes'] as $identifiant => $objet_export) {
if (sql_countsel('spip_grappes','identifiant = '.sql_quote($identifiant))>0) {
$saisies[0]['saisies'][] = array(
'saisie' => 'selection',
'options' => array(
'nom' => 'page_importer_'.$identifiant,
'label' => $identifiant.(isset($objet_export['titre']) ? ' ('.typo($objet_export['titre']).')' : ''),
'cacher_option_intro' => 'oui',
'attention' => '<:fragments_core:ieconfig_attention_meme_identifiant:>',
'datas' => array(
'non' => '<:fragments_core:ieconfig_ne_pas_importer:>',
'renommer' => '<:fragments_core:ieconfig_renommer:>',
'remplacer' => '<:fragments_core:ieconfig_remplacer:>'
)
)
);
} else {
$saisies[0]['saisies'][] = array(
'saisie' => 'selection',
'options' => array(
'nom' => 'grappe_importer_'.$identifiant,
'label' => $identifiant.(isset($objet_export['titre']) ? ' ('.typo($objet_export['titre']).')' : ''),
'cacher_option_intro' => 'oui',
'attention' => '<:grappes:formulaire_ieconfig_grappe_meme_identifiant:>',
'datas' => array(
'non' => '<:grappes:formulaire_ieconfig_ne_pas_importer:>',
'renommer' => '<:grappes:formulaire_ieconfig_renommer:>',
'remplacer' => '<:grappes:formulaire_ieconfig_remplacer:>'
)
)
);
}
}
$flux['data'] = array_merge($flux['data'],$saisies);
}
// Import des grappes
if ($action=='import'&& isset($flux['args']['config']['grappes'])&& is_array($flux['args']['config']['grappes'])&& count($flux['args']['config']['grappes'])>0) {
foreach ($flux['args']['config']['grappes'] as $identifiant => $identifiant_datas) {
$choix = _request('grappe_importer_'.$identifiant);
include_spip('base/abstract_sql');
if ($choix == 'remplacer') {
$id_grappe = intval(sql_getfetsel('id_grappe','spip_grappes','identifiant = '.sql_quote($identifiant)));
supprimer_grappe($id_grappe);
}
if ($choix == 'renommer')
$identifiant_datas['titre'] = $identifiant_datas['titre'].'_'.time();
if (in_array($choix, array('importer','remplacer','renommer'))) {
$identifiant_datas['titre'] = isset($identifiant_datas['titre']) ? $identifiant_datas['titre'] : '';
$id_page = sql_insertq('spip_grappes',$identifiant_datas);
}
}
}
return $flux;
}
/**
* supprimer_grappe
*
* fonction de suppression d'une grappe
*
* @param $id_grappe
*/
function supprimer_grappe($id_grappe){
sql_delete("spip_grappes", "id_grappe = $id_grappe");
}

13
lang/grappes_fr.php

@ -21,6 +21,16 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
// D
'delier' => 'Délier',
'delier_tout' => 'Tout délier',
// E
'export_titre'=>'Exporter les Grappes',
'export_choix_label'=>'Sélectionnez les grappes a exporter',
// F
'formulaire_ieconfig_grappe_meme_identifiant' => 'Une grappe porte le même identifiant',
'formulaire_ieconfig_ne_pas_importer' => 'Ne pas importer',
'formulaire_ieconfig_renommer' => 'Renommer la grappe',
'formulaire_ieconfig_remplacer' => 'Remplacer la grappe existante',
// I
'icone_creation_grappe' => 'Créer une nouvelle grappe',
@ -42,6 +52,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'info_nom_grappe' => 'Titre de la grappe',
'info_qui_peut_lier' => 'Qui peut lier les objets à la grappe ?',
'info_rechercher' => 'Chercher',
'import_titre'=>'Importer des Grappes',
'import_choix'=>'Sélectionnez les grappes à importer',
'item_groupes_association_articles' => 'Les articles',
'item_groupes_association_auteurs' => 'Les auteurs',
'item_groupes_association_breves' => 'Les brèves',
@ -69,6 +81,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'titre_nouvelle_grappe' => 'Nouvelle Grappe',
'titre_page_grappes' => 'Grappes',
// V
'voir' => 'Voir'
);

3
paquet.xml

@ -1,7 +1,7 @@
<paquet
prefix="grappes"
categorie="divers"
version="1.1.3"
version="1.1.4"
etat="test"
compatibilite="[3.0.0;3.1.*]"
logo="prive/themes/spip/images/grappe-32.png"
@ -25,6 +25,7 @@
<pipeline nom="afficher_contenu_objet" inclure="grappes_pipelines.php" />
<pipeline nom="grappes_objets_lies" inclure="grappes_pipelines.php" />
<pipeline nom="jqueryui_plugins" inclure="grappes_pipelines.php" action="jqueryui_forcer" />
<pipeline nom="ieconfig" inclure="grappes_ieconfig.php" />
<necessite nom="SelecteurGenerique" compatibilite="[0.8.3;[" />

26
saisies/selection_grappes_multiple.html

@ -0,0 +1,26 @@
[(#REM)
Saisie permettant de sélectionner plusieurs grappes par leur identifiant
### /!\ boucle POUR (spip Bonux) ###
Parametres :
- option_intro : chaine de langue de la premiere ligne vide ? (defaut:"")
- cacher_option_intro : pas de premier option vide (defaut:"")
- class : classe(s) css ajoutes au select
Exemple d'appel :
[(#SAISIE{selection_grappes_multiple,nom,
label=<:plugin:label:>,
})]
]
[(#REM) defaut peut être une chaine (plusieurs valeurs ou pas) qu'on sait décomposer ]
#SET{defaut, #ENV{defaut}}
#SET{defaut, #GET{defaut}|is_string|?{(#GET{defaut}|saisies_chaine2tableau), (#GET{defaut}|sinon{#ARRAY})}}
<select name="#ENV{nom}[]" id="champ_#ENV{nom}" multiple="multiple"[ class="(#ENV{class})"][ disabled="(#ENV{disable})"][ readonly="(#ENV{readonly})"]>
[(#ENV{cacher_option_intro}|non)<option value="">[(#ENV{option_intro})]</option>]
<BOUCLE_selection(GRAPPES){par titre}>
<option value="#IDENTIFIANT" [(#IDENTIFIANT|in_array{#ENV{valeur,#GET{defaut}}}|oui) selected="selected"]>[(#TITRE|typo)] (#IDENTIFIANT)</option>
</BOUCLE_selection>
</select>
Loading…
Cancel
Save