Subversion Repositories Applications.papyrus

Compare Revisions

Ignore whitespace Rev 6 → Rev 7

/trunk/papyrus/applications/admin_menu/admin_menu.php
New file
0,0 → 1,483
<?php
/*vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------------------------------------+
// | PHP version 4.1 |
// +------------------------------------------------------------------------------------------------------+
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
// +------------------------------------------------------------------------------------------------------+
// | This library is free software; you can redistribute it and/or |
// | modify it under the terms of the GNU Lesser General Public |
// | License as published by the Free Software Foundation; either |
// | version 2.1 of the License, or (at your option) any later version. |
// | |
// | This library is distributed in the hope that it will be useful, |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
// | Lesser General Public License for more details. |
// | |
// | You should have received a copy of the GNU Lesser General Public |
// | License along with this library; if not, write to the Free Software |
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
// +------------------------------------------------------------------------------------------------------+
// CVS : $Id: admin_menu.php,v 1.1 2004-06-16 15:04:39 jpm Exp $
/**
* Application gérant les menus de Papyrus
*
* Cette application permet de gérer les menus classiques, les menus communs
* et les liaison d'une application à un menu.
*
*@package Administrateur Menus
//Auteur original :
*@author Laurent COUDOUNEAU <lc@gsite.org>
//Autres auteurs :
*@author Alexandre GRANIER <alexandre@tela-botanica.org>
*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
*@copyright Tela-Botanica 2000-2004
*@version $Revision: 1.1 $ $Date: 2004-06-16 15:04:39 $
// +------------------------------------------------------------------------------------------------------+
*/
 
// +------------------------------------------------------------------------------------------------------+
// | ENTÊTE du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
/*Mettre ici les inclusions de fichiers*/
/** Inclusion du fichier de configuration de cette application.*/
require_once GEN_CHEMIN_PAP.'applications/admin_menu/configuration/adme_configuration.inc.php';
 
/** Inclusion de la bibliothèque PEAR de conception de formulaire.*/
require_once ADME_CHEMIN_BIBLIOTHEQUE_PEAR.'HTML/QuickForm.php';
 
/** Inclusion de l'API de fonctions gérant les erreurs sql.*/
require_once ADME_CHEMIN_BIBLIOTHEQUE_API.'debogage_1.0/BOG_sql.fonct.php';
 
/** Inclusion des fonctions de manipulation du sql.
* Permet la récupération d'un nouvel identifiant d'une table.*/
require_once ADME_CHEMIN_BIBLIOTHEQUE_API.'sql_1.0/SQL_manipulation.fonct.php';
 
/** <BR> Inclusion de la bibliothèque de fonctions concernant les tables "gen_site..." de Papyrus.*/
require_once ADME_CHEMIN_BIBLIOTHEQUE_GEN.'pap_site.fonct.php';
 
/** <BR> Inclusion de la bibliothèque de fonctions concernant les tables "gen_menu..." de Papyrus.*/
require_once ADME_CHEMIN_BIBLIOTHEQUE_GEN.'pap_menu.fonct.php';
 
/** <BR> Inclusion de la bibliothèque de fonctions concernant la gestion des menus classiques.*/
require_once ADME_CHEMIN_BIBLIOTHEQUE_ADME.'adme_menu_classique.fonct.php';//ok
 
/** <BR> Inclusion de la bibliothèque de fonctions concernant la gestion des menus communs.*/
require_once ADME_CHEMIN_BIBLIOTHEQUE_ADME.'adme_menu_commun.fonct.php';//ok
 
/** <BR> Inclusion de la bibliothèque de fonctions concernant la gestion de la rédaction de contenu.*/
require_once ADME_CHEMIN_BIBLIOTHEQUE_ADME.'adme_contenu.fonct.php';//ok
 
require_once ADME_CHEMIN_APPLICATION.'doc.php';
 
require_once ADME_CHEMIN_APPLICATION.'page.php';
 
// +------------------------------------------------------------------------------------------------------+
// | CORPS du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
/*Mettre ici le code du programme*/
/** Fonction afficherContenuTete() - Fonction appelé par le gestionnaire Papyrus.
*
* Elle retourne l'entête de l'application..
*
* @return string du code XHTML correspondant à la zone d'entête de l'application.
*/
function afficherContenuTete()
{
return '';
}
 
function afficherContenuCorps()
{
global $_GEN_commun;
$objet_pear_auth = $_GEN_commun['pear_auth'];
$objet_pear_db = $_GEN_commun['pear_db'];
$db = $_GEN_commun['pear_db'];
$url_site = $_GEN_commun['url_site'];
$url_menu = $_GEN_commun['url_menu'];
$url_i18n = $_GEN_commun['url_i18n'];
$outputText = '' ;
//------------------------------------------------------------------------------
// Vérification de la présence d'arguments pour l'application.
if (!isset($_POST['adminProject'])) {
if (!isset($_GET['adminProject'])) {
$adminProject = '';
} else {
$adminProject = $_GET['adminProject'];
}
} else {
$adminProject = $_POST['adminProject'];
}
/*
$adminProject = $_GEN_commun['info_site']->gs_code_alpha;
if (isset($_GEN_commun['info_application']->site)) {
$adminProject = $_GEN_commun['info_application']->site;
}
*/
global $adminLocale;
if (empty($adminLocale)) {
$adminLocale = $_GEN_commun['info_site']->gs_ce_i18n;
}
//------------------------------------------------------------------------------
// Internationalisation ?
if (isset ($doclocale) && ($doclocale != '')) {
$adminLocale = $doclocale;
}
//------------------------------------------------------------------------------
// Arguments spécifique à l'application.
global $menuid;
global $upperid;
global $doccmd;
global $docopen;
global $menuopen;
global $upperopen;
global $doc_name;
global $doc_title;
global $docid;
global $pageid;
global $pageopen;
//------------------------------------------------------------------------------
// L'url de base pour revenir au menu (=page) en cours.
$url =
'papyrus.php'.
'?'.GEN_URL_CLE_SITE.'='.$url_site.
'&'.GEN_URL_CLE_MENU.'='.$url_menu;
$baseURL =
'papyrus.php'.
'?'.GEN_URL_CLE_SITE.'='.$url_site.
'&amp;'.GEN_URL_CLE_MENU.'='.$url_menu.
'&amp;'.GEN_URL_CLE_I18N.'='.$url_i18n;
$baseURLjs =
'papyrus.php'.
'?'.GEN_URL_CLE_SITE.'='.$url_site.
'&'.GEN_URL_CLE_MENU.'='.$url_menu.
'&'.GEN_URL_CLE_I18N.'='.$url_i18n.
'&adminProject='.$adminProject;
//'&doclocale='.$doclocale;
// Virer la variable baseHidden devenu inutile
$baseHidden = '';
//------------------------------------------------------------------------------
// Authentification
if ($_GEN_commun['pear_auth']->getAuth()) {
//------------------------------------------------------------------------------
// Gestion des commandes.
//------------------------------------------------------------------------------
// Gestion des menus classiques
// Ajout d'un menu
if ($doccmd == 'addmenu') {
$doccmd = '';
addMenu($adminProject, $adminLocale);
}
// Formulaire de mise à jour du menu
if ($doccmd == 'showmenu') {
$outputText .= showMenu ( $db, $adminProject, $adminLocale, $baseURL, $baseURLjs, $baseHidden,
$menuid, $docid, $pageid, $menuopen, $docopen, $pageopen);
return $outputText ;
}
// Mise à jour du menu
if ($doccmd == 'commitupdmenu') {
commitUpdateLevel ($db, $adminProject, $adminLocale, $menuid);
$doccmd = '';
}
// Déplacer le menu vers le haut
if ($doccmd == 'upmenu') {
moveMenu ($db, $adminProject, $adminLocale, $menuid, true);
$doccmd = '';
}
// Déplacer le menu vers le bas
if ($doccmd == 'dnmenu') {
moveMenu ($db, $adminProject, $adminLocale, $menuid, false);
$doccmd = '';
}
// Détruire le menu
if ($doccmd == 'delmenu') {
$msg = deleteMenu($objet_pear_db, $menuid);
$doccmd = '';
}
//------------------------------------------------------------------------------
// Gestion des Menus communs
// Ajout un menu commun
if ($doccmd == 'addupper') {
addUpper($db, $adminProject, $adminLocale);
$doccmd = '';
}
// Valide et modifie un menu commun.
if ($doccmd == 'commitupduppertxt') {
commitUpdateUpperText($db, $adminProject, $adminLocale, $upperid);
$doccmd = '';
}
// Update upper menu.
if ($doccmd == 'upduppertxt') {
$outputText .=
showUpper( $db, $adminProject, $adminLocale,
$baseURL, $baseURLjs, $baseHidden,
$upperid, $menuopen, $upperopen, $docopen);
return $outputText;
}
// Valide et modifie un menu commun
if ($doccmd == 'commitupdupper') {
commitUpdateUpper($db, $adminProject, $adminLocale, $upperid);
$doccmd = '';
}
// Déplace vers le haut de la hiérarchie un menu commun
if ($doccmd == 'upupper') {
moveUpper($db, $adminProject, $adminLocale, $upperid, true);
$doccmd = '';
}
// Déplace vers le bas de la hiérarchie un menu commun
if ($doccmd == 'dnupper') {
moveUpper($db, $adminProject, $adminLocale, $upperid, false);
$doccmd = '';
}
// Supprime définitivement un menu commun
if ($doccmd == 'delupper') {
deleteUpper($db, $adminProject, $adminLocale, $upperid);
$doccmd = '';
}
//------------------------------------------------------------------------------
// Gestion de la rédaction
// Rédiger
if ($doccmd == 'contenuredac') {
if (isset($upperid) && !empty($upperid) && !isset($menuid) && empty($menuid)) {
$menuid = $upperid;
}
$outputText .= redigerContenu( $db, $adminProject, $adminLocale, $baseURL, $baseURLjs, $baseHidden,
$menuid, $docid, $pageid, $menuopen, $docopen, $pageopen);
return $outputText;
}
// Mise à jour du contenu
if ($doccmd == 'contenuenreg') {
ajouterContenu($db, $adminProject, $adminLocale, $menuid, $_POST);
$doccmd = '';
}
//------------------------------------------------------------------------------
// Autres
// Message ?
if (! empty($msg)) {
$outputText .= "\n".'<p class="erreur">'.$msg.'</p>';
}
//------------------------------------------------------------------------------
// Nous affichons la liste des menus classiques et communs
$annuName = '';
$outputText .=
listAll( $db,
$baseURL, $baseURLjs, $url, $baseHidden,
$adminProject, $adminLocale, $annuName,
$annuName, $menuid, $upperid,
$doccmd, $menuopen, $upperopen);
return $outputText ;
// Fin de l'authentification
} else {
return GEN_afficherInfoIdentification($baseURL);
}
}// Fin de la fonction afficherContenuCorps()
 
// +------------------------------------------------------------------------------------------------------+
// | LISTE de FONCTIONS |
// +------------------------------------------------------------------------------------------------------+
/*Mettre ici la liste de fonctions.*/
 
function listAll($db,
$baseURL, $baseURLjs, $url, $baseHidden,
$adminProject, $adminLocale, $adminAnnu,
$annuName, $menuid, $upperid,
$doccmd, $menuopen, $upperopen)
{
$res = '';
$res .= "\n";
// Liste des sites principaux
$requete = 'SELECT * '.
'FROM gen_site, gen_site_relation '.
'WHERE gsr_id_site_01 = gsr_id_site_02 '.
'AND gsr_id_valeur = 102 '.// 102 = site "principal"
'AND gsr_id_site_01 = gs_id_site '.
'ORDER BY gsr_ordre';
$resultat = $db->query($requete);
(DB::isError($resultat)) ? die(BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete)) : '' ;
//----------------------------------------------------------------------------
// Création du formulaire
$form =& new HTML_QuickForm('form_sites', 'post', $url);
$tab_index = 1000;
$squelette =& $form->defaultRenderer();
$squelette->setFormTemplate("\n".'<form{attributes}>'."\n".'<p>'."\n".'{content}'."\n".'</p>'."\n".'</form>'."\n");
$squelette->setElementTemplate( '{label}'."\n".'{element}'."\n".
'<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required -->'."\n".
'<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n");
$partie_site_debut = '<fieldset>'."\n".
'<legend>Listes des sites</legend>'."\n";
$form->addElement('html', $partie_site_debut);
$aso_options = array();
while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
if (empty($adminProject)) {
$adminProject = $ligne->gs_code_alpha;
}
$aso_options[$ligne->gs_code_alpha] = htmlentities($ligne->gs_nom.' ('.$ligne->gs_code_alpha.')');
}
$resultat->free();
$id = 'adminProject';
$aso_attributs = array('id'=> $id, 'tabindex' => $tab_index++);
$label = '<label for="'.$id.'">'.'Choix du site à administrer : '.'</label>';
$form->addElement('select', $id, $label, $aso_options, $aso_attributs);
$form->addElement('submit', 'choisir_site', 'OK');
$partie_site_fin = '</fieldset>'."\n";
$form->addElement('html', $partie_site_fin);
// Instanciation des valeurs par défaut du formulaire
$form->setDefaults($adminProject);
$res .= '<h1>'.'Configuration des menus du site : '.$adminProject.'</h1>'."\n";
$res .= '<p>'."\n";
$res .= $form->toHTML()."\n";
//----------------------------------------------------------------------------
// Affiche la langue courante pour les menus à administrer
$requete = 'SELECT * '.
'FROM gen_i18n '.
'WHERE gi_id_i18n = "'.$adminLocale.'"';
$LOCALEresult = $db->query($requete);
if (DB::isError($LOCALEresult)) {
die(BOG_afficherErreurSql(__FILE__, __LINE__, $LOCALEresult->getMessage(), $requete));
}
$FLAGrow = $LOCALEresult->fetchRow(DB_FETCHMODE_OBJECT);
if ($FLAGrow) {
$res .= $FLAGrow->gi_nom.'&nbsp;'."\n";
}
$LOCALEresult->free() ;
// Internationalisation disponible pour le site principal.
$requete = 'SELECT gs_ce_i18n, gi_nom '.
'FROM gen_site, gen_i18n '.
'WHERE gs_ce_i18n = gi_id_i18n '.
'AND gs_code_alpha = "'.$adminProject.'" ';
$LOCALEresult = $db->query($requete);
(DB::isError ($LOCALEresult))
? die(BOG_afficherErreurSql(__FILE__, __LINE__, $LOCALEresult->getMessage(), $requete))
: '';
while ($LOCALErow = $LOCALEresult->fetchRow(DB_FETCHMODE_OBJECT)) {
if ($adminLocale != $LOCALErow->gs_ce_i18n) {
$res .= '<a href="'.$baseURL.'&amp;adminLocale='.$LOCALErow->gs_ce_i18n.'">'.
$LOCALErow->gi_nom.
'</a>'."\n";
}
}
$LOCALEresult->free() ;
$res .= '</p>'."\n";
//----------------------------------------------------------------------------
// Gestion des menus classiques
$etiquette_title_ajouter = 'Ajouter un menu classique';
$res .= '<p>'."\n";
$res .= '<a href="'.$baseURL.'&amp;adminProject='.$adminProject.'&amp;doccmd=addmenu&amp;menuid=0" >'.
$etiquette_title_ajouter.'&nbsp;'.
'<img src="'.ADME_IMAGE_NOUVEAU.'" alt="" width="16" height="16" border="0" />'.
'</a>'."\n";
$res .= '</p>'."\n";
$res .= '<form name="updform" action="papyrus.php" method="post">'."\n";
$res .= lister_menu_racine( $db,
$baseURL, $baseURLjs, $baseHidden,
$adminProject, $adminLocale, $adminAnnu,
$menuid, $upperid,
$doccmd, $menuopen, $upperopen, 0);
//----------------------------------------------------------------------------
// Gestion des menus communs
$etiquette_title_ajouter = 'Ajouter un menu commun';
$res .= '<p>'."\n";
$res .= '<a href="'.$baseURL.'&amp;doccmd=addupper">'.
$etiquette_title_ajouter.'&nbsp;'.
'<img src="'.ADME_IMAGE_NOUVEAU.'" alt="" width="16" height="16" border="0" />'.
'</a>'."\n";
$res .= '</p>'."\n";
$res .= listUpper( $db,
$baseURL, $baseURLjs, $baseHidden,
$adminProject, $adminLocale, $adminAnnu,
$menuid, $upperid,
$doccmd, $menuopen);
// Valeur de formulaire cachées.
$res .= '<input type="hidden" name="menuid" value="'.$menuid.'" />'."\n";
$res .= '<input type="hidden" name="upperid" value="'.$upperid.'" />'."\n";
$res .= '<input type="hidden" name="menuopen" value="'.$menuopen.'" />'."\n";
$res .= $baseHidden;
$res .= '</form>'."\n";
return $res;
}
 
// +------------------------------------------------------------------------------------------------------+
// | PIED du PROGRAMME |
// +------------------------------------------------------------------------------------------------------+
/*Partie non obligatoire*/
 
 
/* +--Fin du code ----------------------------------------------------------------------------------------+
*
* $Log: not supported by cvs2svn $
* Revision 1.26 2004/05/10 14:32:21 jpm
* Changement du titre.
*
* Revision 1.25 2004/05/10 12:13:23 jpm
* Ajout de la sélection des sites.
*
* Revision 1.24 2004/05/07 16:33:05 jpm
* Intégration de constantes.
*
* Revision 1.23 2004/05/07 07:23:53 jpm
* Amélioration du code, des commentaires et correction de bogues.
*
* Revision 1.22 2004/05/05 06:45:44 jpm
* Suppression de l'appel de la fonction générant le "vous êtes ici" dans la fonction affichant l'entête de l'application.
*
* Revision 1.21 2004/05/04 16:27:33 jpm
* Réduction de code pour la fonction afficherContenuTete().
*
* Revision 1.20 2004/05/03 11:23:26 jpm
* Début mise en conformité des commentaires.
*
*
* +-- Fin du code ----------------------------------------------------------------------------------------+
*/
?>