|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Plugin Menus
|
|
|
|
*/
|
|
|
|
|
|
|
|
if (!defined('_ECRIRE_INC_VERSION')) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* function menus_ieconfig_metas
|
|
|
|
* Pipeline ieconfig pour l'import/export desmetas du plugin menu
|
|
|
|
*
|
|
|
|
* @param array $table
|
|
|
|
* @return array
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
function menus_ieconfig_metas($table) {
|
|
|
|
$table['menus_meta']['titre'] = _T('paquet-menus:menus_titre');
|
|
|
|
$table['menus_meta']['icone'] = 'prive/themes/spip/images/menu-16.png';
|
|
|
|
$table['menus_meta']['metas_serialize'] = 'menus';
|
|
|
|
return $table;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Pipeline ieconfig pour l'import/export des menus
|
|
|
|
*
|
|
|
|
* @param array $flux
|
|
|
|
* @return array
|
|
|
|
*/
|
|
|
|
function menus_ieconfig($flux) {
|
|
|
|
include_spip('inc/texte');
|
|
|
|
$action = $flux['args']['action'];
|
|
|
|
|
|
|
|
// Formulaire d'export
|
|
|
|
if ($action == 'form_export') {
|
|
|
|
$saisies = [
|
|
|
|
[
|
|
|
|
'saisie' => 'fieldset',
|
|
|
|
'options' => [
|
|
|
|
'nom' => 'menus_export',
|
|
|
|
'label' => '<:menus:editer_menus_titre:>',
|
|
|
|
'icone' => 'menu-16.png'
|
|
|
|
],
|
|
|
|
'saisies' => [
|
|
|
|
[
|
|
|
|
'saisie' => 'menus_multiple',
|
|
|
|
'options' => [
|
|
|
|
'nom' => 'menus_a_exporter',
|
|
|
|
'label' => '<:menus:formulaire_ieconfig_menus_a_exporter:>',
|
|
|
|
'cacher_option_intro' => 'oui'
|
|
|
|
]
|
|
|
|
]
|
|
|
|
]
|
|
|
|
]
|
|
|
|
];
|
|
|
|
$flux['data'] = array_merge($flux['data'], $saisies);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Tableau d'export
|
|
|
|
if ($action == 'export' && is_array(_request('menus_a_exporter')) && count(_request('menus_a_exporter')) > 0) {
|
|
|
|
$flux['data']['menus'] = [];
|
|
|
|
include_spip('base/abstract_sql');
|
|
|
|
include_spip('action/exporter_menu');
|
|
|
|
foreach (_request('menus_a_exporter') as $identifiant) {
|
|
|
|
$menu = sql_fetsel(['id_menu','titre','css'], 'spip_menus', 'identifiant = ' . sql_quote($identifiant));
|
|
|
|
$id_menu = $menu['id_menu'];
|
|
|
|
unset($menu['id_menu']);
|
|
|
|
$menu['entrees'] = exporter_menu_recursif($id_menu);
|
|
|
|
$flux['data']['menus'][$identifiant] = $menu;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// Formulaire d'import
|
|
|
|
if (
|
|
|
|
$action == 'form_import' && isset($flux['args']['config']['menus'])
|
|
|
|
&& is_array($flux['args']['config']['menus']) && count($flux['args']['config']['menus']) > 0
|
|
|
|
) {
|
|
|
|
$saisies = [
|
|
|
|
[
|
|
|
|
'saisie' => 'fieldset',
|
|
|
|
'options' => [
|
|
|
|
'nom' => 'menus_import',
|
|
|
|
'label' => '<:menus:editer_menus_titre:>',
|
|
|
|
'icone' => 'menu-16.png'
|
|
|
|
],
|
|
|
|
'saisies' => [
|
|
|
|
[
|
|
|
|
'saisie' => 'explication',
|
|
|
|
'options' => [
|
|
|
|
'nom' => 'menus_import_explication',
|
|
|
|
'texte' => '<:menus:formulaire_ieconfig_choisir_menus_a_importer:>'
|
|
|
|
]
|
|
|
|
]
|
|
|
|
]
|
|
|
|
]
|
|
|
|
];
|
|
|
|
foreach ($flux['args']['config']['menus'] as $identifiant => $menu) {
|
|
|
|
if (sql_countsel('spip_menus', 'identifiant = ' . sql_quote($identifiant)) > 0) {
|
|
|
|
$saisies[0]['saisies'][] = [
|
|
|
|
'saisie' => 'selection',
|
|
|
|
'options' => [
|
|
|
|
'nom' => 'menus_importer_' . $identifiant,
|
|
|
|
'label' => $identifiant . (isset($menu['titre']) ? ' (' . typo($menu['titre']) . ')' : ''),
|
|
|
|
'cacher_option_intro' => 'oui',
|
|
|
|
'attention' => '<:menus:formulaire_ieconfig_menu_meme_identifiant:>',
|
|
|
|
'data' => [
|
|
|
|
'non' => '<:menus:formulaire_ieconfig_ne_pas_importer:>',
|
|
|
|
'renommer' => '<:menus:formulaire_ieconfig_renommer:>',
|
|
|
|
'remplacer' => '<:menus:formulaire_ieconfig_remplacer:>'
|
|
|
|
]
|
|
|
|
]
|
|
|
|
];
|
|
|
|
} else {
|
|
|
|
$saisies[0]['saisies'][] = [
|
|
|
|
'saisie' => 'selection',
|
|
|
|
'options' => [
|
|
|
|
'nom' => 'menus_importer_' . $identifiant,
|
|
|
|
'label' => $identifiant . (isset($menu['titre']) ? ' (' . typo($menu['titre']) . ')' : ''),
|
|
|
|
'cacher_option_intro' => 'oui',
|
|
|
|
'data' => [
|
|
|
|
'non' => '<:menus:formulaire_ieconfig_ne_pas_importer:>',
|
|
|
|
'importer' => '<:menus:formulaire_ieconfig_importer:>'
|
|
|
|
]
|
|
|
|
]
|
|
|
|
];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$flux['data'] = array_merge($flux['data'], $saisies);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Import de la configuration
|
|
|
|
if (
|
|
|
|
$action == 'import' && isset($flux['args']['config']['menus'])
|
|
|
|
&& is_array($flux['args']['config']['menus']) && count($flux['args']['config']['menus']) > 0
|
|
|
|
) {
|
|
|
|
foreach ($flux['args']['config']['menus'] as $identifiant => $menu) {
|
|
|
|
$choix = _request('menus_importer_' . $identifiant);
|
|
|
|
include_spip('base/abstract_sql');
|
|
|
|
include_spip('inc/menus');
|
|
|
|
include_spip('action/editer_menu');
|
|
|
|
if ($choix == 'remplacer') {
|
|
|
|
$id_menu = sql_getfetsel('id_menu', 'spip_menus', 'identifiant = ' . sql_quote($identifiant));
|
|
|
|
menus_supprimer_menu(intval($id_menu));
|
|
|
|
}
|
|
|
|
if ($choix == 'renommer') {
|
|
|
|
$identifiant = $identifiant . '_' . time();
|
|
|
|
}
|
|
|
|
if (in_array($choix, ['importer','remplacer','renommer'])) {
|
|
|
|
$titre = isset($menu['titre']) ? $menu['titre'] : '';
|
|
|
|
$css = isset($menu['css']) ? $menu['css'] : '';
|
|
|
|
$id_menu = sql_insertq(
|
|
|
|
'spip_menus',
|
|
|
|
[
|
|
|
|
'identifiant' => $identifiant,
|
|
|
|
'titre' => $titre,
|
|
|
|
'css' => $css
|
|
|
|
]
|
|
|
|
);
|
|
|
|
if (isset($menu['entrees'])) {
|
|
|
|
menus_importer($menu['entrees'], $id_menu);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return($flux);
|
|
|
|
}
|