svn/root/tags/v1.7.25
kent1@arscenic.info 7 years ago
parent 7ae5c359a8
commit 609ecc6c4c

@ -1,141 +1,156 @@
<?php
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/meta');
// Installation et mise à jour
function menus_upgrade($nom_meta_version_base, $version_cible){
$maj = array();
$maj['create'] = array(
array('creer_base'),
array('ecrire_config', 'menus/entrees_masquees', array('rubriques', 'groupe_mots', 'mapage', 'deconnecter', 'secteurlangue')),
);
$maj['0.5.0'] = array(
array('sql_alter', "TABLE spip_menus ADD COLUMN css tinytext DEFAULT '' NOT NULL"),
);
$maj['0.5.1'] = array(
array('sql_updateq', 'spip_menus_entrees', array('type_entree'=>'rubriques_completes'), 'type_entree = '.sql_quote('rubriques')),
);
$maj['0.5.2'] = array(
array('menus_fusionne_critere_tri_inverse'),
);
$maj['0.5.3'] = array(
array('menus_fusionne_critere_tri_num_alpha'),
);
include_spip('base/upgrade');
maj_plugin($nom_meta_version_base, $version_cible, $maj);
}
function menus_fusionne_critere_tri_num_alpha(){
$res = sql_select("*","spip_menus_entrees","","","id_menus_entree");
while ($row = sql_fetch($res)){
#var_dump($row);
$params = unserialize($row['parametres']);
$change = false;
if (isset($params['tri_num']) AND isset($params['tri_alpha'])){
$tri = "";
if (strlen($params['tri_num'])){
$tri = "num ".trim($params['tri_num']);
$tri = str_replace("num !","!num ",$tri);
}
else {
$tri = trim($params['tri_alpha']);
}
$params['tri'] = $tri;
unset($params['tri_num']);
unset($params['tri_alpha']);
$change = true;
}
if (isset($params['tri_num_articles']) AND isset($params['tri_alpha_articles'])){
$tri = "";
if (strlen($params['tri_num_articles'])){
$tri = "num ".trim($params['tri_num_articles']);
$tri = str_replace("num !","!num ",$tri);
}
else {
$tri = trim($params['tri_alpha_articles']);
}
$params['tri_articles'] = $tri;
unset($params['tri_num_articles']);
unset($params['tri_alpha_articles']);
$change = true;
}
if ($change){
#var_dump($params);
$params = serialize($params);
sql_updateq("spip_menus_entrees",array('parametres'=>$params),"id_menus_entree=".intval($row['id_menus_entree']));
}
}
}
function menus_fusionne_critere_tri_inverse(){
$res = sql_select("*","spip_menus_entrees","","","id_menus_entree");
while ($row = sql_fetch($res)){
#var_dump($row);
$params = unserialize($row['parametres']);
$change = false;
if (isset($params['tri_num_inverse'])
AND $params['tri_num_inverse']=='oui'
AND strlen($params['tri_num'])){
$params['tri_num'] = "!".$params['tri_num'];
$change = true;
unset($params['tri_num_inverse']);
}
if (isset($params['tri_alpha_inverse'])
AND $params['tri_alpha_inverse']=='oui'
AND strlen($params['tri_alpha'])){
$params['tri_alpha'] = "!".$params['tri_alpha'];
$change = true;
unset($params['tri_alpha_inverse']);
}
if (isset($params['tri_num_articles_inverse'])
AND $params['tri_num_articles_inverse']=='oui'
AND strlen($params['tri_num_articles'])){
$params['tri_num_articles'] = "!".$params['tri_num_articles'];
$change = true;
unset($params['tri_num_articles_inverse']);
}
if (isset($params['tri_alpha_articles_inverse'])
AND $params['tri_alpha_articles_inverse']=='oui'
AND strlen($params['tri_alpha_articles'])){
$params['tri_alpha_articles'] = "!".$params['tri_alpha_articles'];
$change = true;
unset($params['tri_alpha_articles_inverse']);
}
if ($change){
$params = serialize($params);
sql_updateq("spip_menus_entrees",array('parametres'=>$params),"id_menus_entree=".intval($row['id_menus_entree']));
#var_dump($params);
}
}
}
// Désinstallation
function menus_vider_tables($nom_meta_version_base){
include_spip('base/abstract_sql');
// On efface les tables du plugin
sql_drop_table('spip_menus');
sql_drop_table('spip_menus_entrees');
// On efface la version enregistrée
effacer_meta($nom_meta_version_base);
// On efface la config
effacer_meta('menus');
}
?>
<?php
// Sécurité
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
include_spip('inc/meta');
// Installation et mise à jour
function menus_upgrade($nom_meta_version_base, $version_cible) {
$maj = array();
$maj['create'] = array(
array('creer_base'),
array(
'ecrire_config',
'menus/entrees_masquees',
array('rubriques', 'groupe_mots', 'mapage', 'deconnecter', 'secteurlangue')
)
);
$maj['0.5.0'] = array(
array('sql_alter', "TABLE spip_menus ADD COLUMN css tinytext DEFAULT '' NOT NULL")
);
$maj['0.5.1'] = array(
array(
'sql_updateq',
'spip_menus_entrees',
array(
'type_entree' => 'rubriques_completes'
),
'type_entree = '.sql_quote('rubriques')
)
);
$maj['0.5.2'] = array(
array('menus_fusionne_critere_tri_inverse'),
);
$maj['0.5.3'] = array(
array('menus_fusionne_critere_tri_num_alpha'),
);
include_spip('base/upgrade');
maj_plugin($nom_meta_version_base, $version_cible, $maj);
}
function menus_fusionne_critere_tri_num_alpha() {
$res = sql_select('*', 'spip_menus_entrees', '', '', 'id_menus_entree');
while ($row = sql_fetch($res)) {
#var_dump($row);
$params = unserialize($row['parametres']);
$change = false;
if (isset($params['tri_num']) and isset($params['tri_alpha'])) {
$tri = '';
if (strlen($params['tri_num'])) {
$tri = 'num '.trim($params['tri_num']);
$tri = str_replace('num !', '!num ', $tri);
} else {
$tri = trim($params['tri_alpha']);
}
$params['tri'] = $tri;
unset($params['tri_num']);
unset($params['tri_alpha']);
$change = true;
}
if (isset($params['tri_num_articles']) and isset($params['tri_alpha_articles'])) {
$tri = '';
if (strlen($params['tri_num_articles'])) {
$tri = 'num '.trim($params['tri_num_articles']);
$tri = str_replace('num !', '!num ', $tri);
} else {
$tri = trim($params['tri_alpha_articles']);
}
$params['tri_articles'] = $tri;
unset($params['tri_num_articles']);
unset($params['tri_alpha_articles']);
$change = true;
}
if ($change) {
#var_dump($params);
$params = serialize($params);
sql_updateq(
'spip_menus_entrees',
array('parametres' => $params),
'id_menus_entree='.intval($row['id_menus_entree'])
);
}
}
}
function menus_fusionne_critere_tri_inverse() {
$res = sql_select('*', 'spip_menus_entrees', '', '', 'id_menus_entree');
while ($row = sql_fetch($res)) {
#var_dump($row);
$params = unserialize($row['parametres']);
$change = false;
if (isset($params['tri_num_inverse'])
and $params['tri_num_inverse']=='oui'
and strlen($params['tri_num'])) {
$params['tri_num'] = '!'.$params['tri_num'];
$change = true;
unset($params['tri_num_inverse']);
}
if (isset($params['tri_alpha_inverse'])
and $params['tri_alpha_inverse'] == 'oui'
and strlen($params['tri_alpha'])) {
$params['tri_alpha'] = '!'.$params['tri_alpha'];
$change = true;
unset($params['tri_alpha_inverse']);
}
if (isset($params['tri_num_articles_inverse'])
and $params['tri_num_articles_inverse']=='oui'
and strlen($params['tri_num_articles'])) {
$params['tri_num_articles'] = '!'.$params['tri_num_articles'];
$change = true;
unset($params['tri_num_articles_inverse']);
}
if (isset($params['tri_alpha_articles_inverse'])
and $params['tri_alpha_articles_inverse']=='oui'
and strlen($params['tri_alpha_articles'])) {
$params['tri_alpha_articles'] = '!'.$params['tri_alpha_articles'];
$change = true;
unset($params['tri_alpha_articles_inverse']);
}
if ($change) {
$params = serialize($params);
sql_updateq(
'spip_menus_entrees',
array('parametres' => $params),
'id_menus_entree='.intval($row['id_menus_entree'])
);
#var_dump($params);
}
}
}
// Désinstallation
function menus_vider_tables($nom_meta_version_base) {
include_spip('base/abstract_sql');
// On efface les tables du plugin
sql_drop_table('spip_menus');
sql_drop_table('spip_menus_entrees');
// On efface la version enregistrée
effacer_meta($nom_meta_version_base);
// On efface la config
effacer_meta('menus');
}

@ -1,23 +1,26 @@
<?php
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function menus_type_entree($nom){
function menus_type_entree($nom) {
include_spip('inc/menus');
$infos = menus_informer($nom);
return $infos['nom'];
}
function menus_type_refuser_sous_menu($nom){
function menus_type_refuser_sous_menu($nom) {
include_spip('inc/menus');
$infos = menus_informer($nom);
return $infos['refuser_sous_menu'];
}
function menus_exposer($id_objet, $objet, $env, $on='on active', $off=''){
if (is_string($env))
function menus_exposer($id_objet, $objet, $env, $on = 'on active', $off = '') {
if (is_string($env)) {
$env = unserialize($env);
}
$primary = id_table_objet($objet);
include_spip('public/quete');
return calcul_exposer($id_objet, $primary, $env, '', $primary) ? $on : $off;
@ -28,19 +31,20 @@ function menus_exposer($id_objet, $objet, $env, $on='on active', $off=''){
* @param $quoi
* @return string
*/
function menus_critere_tri($tri,$quoi){
function menus_critere_tri($tri, $quoi) {
$tri = trim($tri);
$inverse = ((strncmp($tri,"!",1)==0)?"!":"");
if ($inverse)
$tri = ltrim($tri,"!");
$num = ((strncmp($tri,"num ",4)==0)?"num ":"");
if ($num){
$tri = trim(substr($tri,4));
$inverse = ((strncmp($tri, '!', 1) == 0) ? '!' : '');
if ($inverse) {
$tri = ltrim($tri, '!');
}
$num = ((strncmp($tri, 'num ', 4) == 0) ? 'num ' : '');
if ($num) {
$tri = trim(substr($tri, 4));
}
// num
if ($quoi=='num'){
return $num?"$inverse$tri":"";
if ($quoi=='num') {
return $num ? "$inverse$tri" : '';
}
// alpha : on renvoie toujours le meme critre que num si num demande
// num titre => {par num titre}{par titre}
@ -49,7 +53,7 @@ function menus_critere_tri($tri,$quoi){
/**
* Lister les menus utiles qui ne sont pas encore créés
**/
**/
function menus_utiles() {
if ($menus_utiles = pipeline('menus_utiles', array()) and is_array($menus_utiles)) {
foreach ($menus_utiles as $identifiant => $titre) {
@ -59,6 +63,6 @@ function menus_utiles() {
}
}
}
return $menus_utiles;
}

@ -1,154 +1,163 @@
<?php
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 = array(
array(
'saisie' => 'fieldset',
'options' => array(
'nom' => 'menus_export',
'label' => '<:menus:editer_menus_titre:>',
'icone' => 'menu-16.png'
),
'saisies' => array(
array(
'saisie' => 'menus_multiple',
'options' => array(
'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'] = array();
include_spip('base/abstract_sql');
include_spip('action/exporter_menu');
foreach (_request('menus_a_exporter') as $identifiant) {
$menu = sql_fetsel(array('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 = array(
array(
'saisie' => 'fieldset',
'options' => array(
'nom' => 'menus_import',
'label' => '<:menus:editer_menus_titre:>',
'icone' => 'menu-16.png'
),
'saisies' => array(
array(
'saisie' => 'explication',
'options' => array(
'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'][] = array(
'saisie' => 'selection',
'options' => array(
'nom' => 'menus_importer_'.$identifiant,
'label' => $identifiant.(isset($menu['titre']) ? ' ('.typo($menu['titre']).')' : ''),
'cacher_option_intro' => 'oui',
'attention' => '<:menus:formulaire_ieconfig_menu_meme_identifiant:>',
'datas' => array(
'non' => '<:menus:formulaire_ieconfig_ne_pas_importer:>',
'renommer' => '<:menus:formulaire_ieconfig_renommer:>',
'remplacer' => '<:menus:formulaire_ieconfig_remplacer:>'
)
)
);
} else {
$saisies[0]['saisies'][] = array(
'saisie' => 'selection',
'options' => array(
'nom' => 'menus_importer_'.$identifiant,
'label' => $identifiant.(isset($menu['titre']) ? ' ('.typo($menu['titre']).')' : ''),
'cacher_option_intro' => 'oui',
'datas' => array(
'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 = intval(sql_getfetsel('id_menu','spip_menus','identifiant = '.sql_quote($identifiant)));
menus_supprimer_menu($id_menu);
}
if ($choix == 'renommer')
$identifiant = $identifiant.'_'.time();
if (in_array($choix,array('importer','remplacer','renommer'))) {
$titre = isset($menu['titre']) ? $menu['titre'] : '';
$css = isset($menu['css']) ? $menu['css'] : '';
$id_menu = sql_insertq('spip_menus',array(
'identifiant' => $identifiant,
'titre' => $titre,
'css' => $css
));
if (isset($menu['entrees']))
menus_importer($menu['entrees'], $id_menu);
}
}
}
return($flux);
}
?>
<?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 = array(
array(
'saisie' => 'fieldset',
'options' => array(
'nom' => 'menus_export',
'label' => '<:menus:editer_menus_titre:>',
'icone' => 'menu-16.png'
),
'saisies' => array(
array(
'saisie' => 'menus_multiple',
'options' => array(
'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'] = array();
include_spip('base/abstract_sql');
include_spip('action/exporter_menu');
foreach (_request('menus_a_exporter') as $identifiant) {
$menu = sql_fetsel(array('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 = array(
array(
'saisie' => 'fieldset',
'options' => array(
'nom' => 'menus_import',
'label' => '<:menus:editer_menus_titre:>',
'icone' => 'menu-16.png'
),
'saisies' => array(
array(
'saisie' => 'explication',
'options' => array(
'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'][] = array(
'saisie' => 'selection',
'options' => array(
'nom' => 'menus_importer_'.$identifiant,
'label' => $identifiant.(isset($menu['titre']) ? ' ('.typo($menu['titre']).')' : ''),
'cacher_option_intro' => 'oui',
'attention' => '<:menus:formulaire_ieconfig_menu_meme_identifiant:>',
'datas' => array(
'non' => '<:menus:formulaire_ieconfig_ne_pas_importer:>',
'renommer' => '<:menus:formulaire_ieconfig_renommer:>',
'remplacer' => '<:menus:formulaire_ieconfig_remplacer:>'
)
)
);
} else {
$saisies[0]['saisies'][] = array(
'saisie' => 'selection',
'options' => array(
'nom' => 'menus_importer_'.$identifiant,
'label' => $identifiant.(isset($menu['titre']) ? ' ('.typo($menu['titre']).')' : ''),
'cacher_option_intro' => 'oui',
'datas' => array(
'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, array('importer','remplacer','renommer'))) {
$titre = isset($menu['titre']) ? $menu['titre'] : '';
$css = isset($menu['css']) ? $menu['css'] : '';
$id_menu = sql_insertq(
'spip_menus',
array(
'identifiant' => $identifiant,
'titre' => $titre,
'css' => $css
)
);
if (isset($menu['entrees'])) {
menus_importer($menu['entrees'], $id_menu);
}
}
}
}
return($flux);
}

@ -1,31 +1,34 @@
<?php
// Sécurité
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function menus_header_prive($flux){
function menus_header_prive($flux) {
$css = find_in_path('css/menuspip.css');
$flux .= "\n<link rel='stylesheet' href='$css' type='text/css' />\n";
return $flux;
}
function menus_pre_boucle($boucle){
function menus_pre_boucle($boucle) {
if ($boucle->type_requete == 'menus') {
$id_table = $boucle->id_table;
$id_menus_entree = "$id_table.id_menus_entree";
if (!isset($boucle->modificateur['criteres']['id_menus_entree']) and !isset($boucle->modificateur['criteres']['id_menu']) and !isset($boucle->modificateur['criteres']['identifiant'])){
if (!isset($boucle->modificateur['criteres']['id_menus_entree'])
and !isset($boucle->modificateur['criteres']['id_menu'])
and !isset($boucle->modificateur['criteres']['identifiant'])) {
$boucle->where[] = array(sql_quote('='), sql_quote($id_menus_entree), 0);
}
}
return $boucle;
}
function menus_menus_lister_disponibles($flux){
function menus_menus_lister_disponibles($flux) {
return $flux;
}
function menus_declarer_url_objets($array){
$array[] = 'menu';
return $array;
function menus_declarer_url_objets($array) {
$array[] = 'menu';
return $array;
}
?>

Loading…
Cancel
Save