gauche.asp

version n°1 PB le 04/07/2001

La page gauche.asp est comme son nom l'indique affichée dans le cadre de gauche de la page d'accueil du portail SuneTeam. 
C'est elle qui gère : 
     - la mise à jour des département et rubrique courants
     - l'affichage en fonction de ces paramètres des menus (utilisateur ou administrateur), et la composition de leurs liens.

Les changements de département et de rubrique en cours par les listes déroulantes
La page met en mémoire  dans un formulaire "boutons" la page affichée dans le cadre "mires", le département et la rubrique courants. 
Ce formulaire est destiné à être soumis à cette même page, en boucle sur lui-même en quelque sorte.

<FORM name=boutons action="gauche.asp" method=post>
    <INPUT value="<% Response.Write(Session('type_doc')); %>" name="type_doc" type=hidden>
    <INPUT value="<% Response.Write(Session('type_doc')); %>" name="old_type_doc" type=hidden>
    <INPUT value="<% Response.Write(Session('dept_code')); %>" name=dept type=hidden>
    <INPUT value="<% Response.Write(Session('dept_code')); %>" name="old_dept" type=hidden> 
    <INPUT name="page_cours" type=hidden> 
</FORM>
//APPAREMMENT ON NE FAIT RIEN DE CETTE PAGE EN COURS MEMORISEE

Les fonctions côté client exécutables lors d'un changement de département courant ou de rubrique courante (appel sur OnChange ( ) des listes déroulantes), chargent les champs du formulaire "boutons" avec les nouvelles valeurs, et le soumettent à la même page gauche.asp:

SCRIPT
function change_dept (as_dept) {
      document.boutons.dept.value = '' + as_dept;
      document.boutons.type_doc.value = '';
      submit_form();
      };
      
    function change_doc (as_doc) {
      document.boutons.type_doc.value = '' + as_doc;
      submit_form();
      };
      
    function submit_form (){
      document.boutons.page_cours.value = top.window.frames.mires.location;
      document.boutons.submit();
      };      
/SCRIPT
/HEAD

A l'ouverture, avant tout affichage, ces éventuelles nouvelles données sont interceptées et les variables de session actualisées par les fonctions f_set_session_dept_code ou  f_set_session_dept_code :

if (("undefined" != "" + Request.Form("dept")) && ("" != "" + Request.Form("dept"))) {f_set_session_dept_code ("" + Request.Form("dept"))};
if ("undefined" != "" + Request.Form("type_doc")) {f_set_session_type_doc("" + Request.Form("type_doc"))};

if (("" + Request.Form ('dept')) != ("" + Request.Form ('old_dept'))) {
    //Si c'est le département qui a changé, la rubrique courante est vidée ...
    Session("type_doc") = ""
    Response.Write (" //(on compose un script côté client à la volée)
	<SCRIPT>
		// ... la mire du département affichée
top.window.frames.mires.location.replace('http://" + psDocument.Site() + "/SuneTeam/All_users/lance.asp?ref=" + Session('dept_code') + "_" + Session('type_doc') + "');
		// ... les menus actualisés.
top.window.frames.gauche.location.replace('http://" + psDocument.Site() + "/SuneTeam/gauche.asp');
	</SCRIPT>");
    };
else if (("" + Request.Form ('type_doc')) != ("" + Request.Form ('old_type_doc'))) {
    //Si c'est le type de document qui a changé, on affiche la mire de la rubrique et on rafraichit le menu gauche
    Response.Write ("
	<SCRIPT>
top.window.frames.mires.location.replace('http://" + psDocument.Site() + "/SuneTeam/All_users/lance.asp?ref=" + Session('dept_code') + "_" + Session('type_doc') + "');
top.window.frames.gauche.location.replace('http://" + psDocument.Site() + "/SuneTeam/gauche.asp');
	</SCRIPT>");
    };    

POURQUOI RE-RAFRAICHIR GAUCHE ALORS QUE C'EST CE QUE L'ON EST EN TRAIN DE FAIRE ???

 

La composition des menus (pour des explications moins techniques, voir menus utilisateur ou administrateur)

    //Récupération dans la table param_doc du nom du moteur de la nouvelle rubrique pour les liens, et du libellé pour les menus
    var moteur_courant = "";
    var txt_courant = "";
    
   if ("" + Session('type_doc') != "") {
    OBJECT_Documents = new DWGenerator ("OBJECT_Documents", "SuneTeam");
    sqlquery = "select par_moteur, par_txt_bouton from param_doc where dept_code = '" + Session ("dept_code") + "' and type_code = '" + Session('type_doc') + "'";
    OBJECT_Documents.cursor = OBJECT_Documents.conn.CreateCursor (sqlquery);
    if (null == OBJECT_Documents.cursor) {OBJECT_Documents.WriteError ();};
    if (!OBJECT_Documents.cursor.EOF()) {
      OBJECT_Documents.cursor.MoveFirst(); 
      moteur_courant = "" + OBJECT_Documents.cursor.GetValue('par_moteur');
      txt_courant = "" + OBJECT_Documents.cursor.GetValue('par_txt_bouton');
      };
   }

     //Définition du chemin pour la recherche automatique de la mire : 
     var str_lance = "All_Users/lance.asp?ref=" + Session ('dept_code') + "_" + Session ('type_doc')

	    
//select de département    
            <SELECT style="FONT-FAMILY: Verdana; FONT-SIZE: 10px" onchange="change_dept(this.options(selectedIndex).value);">
            OBJECT1 = new DWGenerator ("OBJECT1", "SuneTeam"); 
            sqlquery = "select dept_code, dept_libelle from departements"; 
		...
            var dept_cours = "" + Session ("dept_code");
		...	
            for (var i=0; (!OBJECT1.cursor.EOF()); i++) { 
            Response.Write ("           <OPTION value=\"" + OBJECT1.cursor.GetValue("dept_code") + "\""); 
            
	    if (OBJECT1.cursor.GetValue("dept_code") == dept_cours) {
            	Response.Write (" SELECTED");
            	//C'est ici que l'on met à jour la variable de session contenant le libellé de la rubrique en cours
		Session ("dept_libelle") = "" + OBJECT1.cursor.GetValue("dept_libelle");
            	};
            Response.Write (">" + OBJECT1.cursor.GetValue("dept_libelle") + "</OPTION>\n"); 
            ...
            
//si l'utilisateur de la session est logué comme administrateur, on ouvre le lien vers l'administration des départements
	    <% if ("" + Session ("client") == "admin") { %>
            <A target=mires href="Admin/dept_liste.asp"><IMG height=15 border=0 hspace=5 src="Images/menu_fleche.gif" align=middle width=15><% = trad('MENU_DEPARTEMENTS') %></A>
 	    
//lien pour tous vers la page d'accueil du département 
            <% var str_accueil = "" + Session ("dept_code") + "_" ; %> <BR>
            <A target=mires href="All_Users/lance.asp?ref=<% Response.Write (str_accueil); %>"><IMG height=15 border=0 hspace=5 src="Images/menu_fleche.gif" align=middle width=15><% = trad('MENU_ACCUEIL') %></A>
            
//select-liste déroulante de rubrique
	    <SELECT name="type_code" style="FONT-FAMILY: Verdana; FONT-SIZE: 10px" onchange="change_doc(this.options(selectedIndex).value);">
                <% 
                DW_pris = new DWGenerator ("DW_pris", "SuneTeam");
                sqlquery = "select type_code, par_txt_bouton from param_doc ";
                sqlquery += "where dept_code = '" + Session ("dept_code") + "' ";
		//on ne montre pas l'accès aux mires aux non-administrateurs
                if ("" + Session ('client') != "admin") {sqlquery += "and type_code <> 'MIR'";};
                ...
                //Si il n'y a pas de rubriques pour le dept courant, on vide la rubrique courante
		... Session ('type_doc') = "";
                
		//si il n'y a pas de rubrique dans le moteur courant ET [ pas de rubrique courante ou un non-administrateur demande les mires ]
		if ((!DW_pris.cursor.EOF()) && (("" + Session ('type_doc') == "") || (("" + Session ('type_doc') == "MIR") && ("" + Session ('client') != "admin")))) {
                Response.Write ("<OPTION VALUE=\"\" SELECTED><-------------------- </OPTION>");
                }
                else {var str_selected = ""; Response.Write ("\n<OPTION VALUE=\"\"><-------------------- </OPTION>");};
                for (var j=0; (!DW_pris.cursor.EOF()); j++) {
                if (DW_pris.cursor.GetValue (0) == "" + Session ('type_doc')) {str_selected = " SELECTED";};
                Response.Write ("\n<OPTION VALUE=\"" + DW_pris.cursor.GetValue (0) + "\"" + str_selected + ">" + DW_pris.cursor.GetValue (1) +  "</OPTION>");
                str_selected = "";
                DW_pris.cursor.MoveNext();
                }
                %> 
            </SELECT>
	    
//pour les administrateurs, on ouvre le lien vers l'administration des rubriques
            <A target=mires href="Admin/param_doc_liste.asp"><IMG height=15 border=0 hspace=5 src="Images/menu_fleche.gif" align=middle width=15><% = trad('MENU_RUBRIQUES') %></A>
	    
//si il y a une rubrique courante, on affiche un lien vers sa mire
            <A target=mires href="<% = str_lance %>"><IMG height=15 border=0 hspace=5 src="Images/menu_fleche.gif" align=middle width=15><% = trad('MENU_MIRE') %></A>
            
//pour les administrateurs, on affiche un lien vers l'administration du contenu documentaire de la rubrique (documents_liste.asp du moteur concerné)
               Response.Write ("\n<BR><A HREF=\"Moteurs/" + moteur_courant + "/documents_liste.asp\" TARGET=\"mires\"><IMG height=15 border=0 hspace=5 src=\"./images/menu_fleche.gif\" align=middle width=15>" + txt_courant + "</A>");  
	    
//Si le moteur de la rubrique courante gère des annexes, on affiche un lien vers la page récapitulative des annexes de la rubrique (annexes_cours.asp)
            <% if (moteur_courant.indexOf ("Ann",0) != -1) { %> <BR> 
            <A target=mires href="All_Users/annexes_cours.asp"><IMG height=15 border=0 hspace=5 src="Images/menu_fleche.gif" align=middle width=15><% = trad('MENU_ANNEXES') %> <% } %> </A>
        </TD>
    </TR>
    <TR>
        <TD width="100%">
            <TABLE border=0 cellSpacing=0 width="100%" cellPadding=0>
		
//liens vers les pages récapitulatives dans un tableau HTML
	//Composition du chemin vers les pages de récap., 
	//si la rubrique courante est vide, on les prend dans All_Users sinon on va la chercher dans le répertoire du moteur courant
	if ("" + Session ('type_doc') != "") {var str = "Moteurs/" + moteur_courant; } else {var str = "All_Users";};
 
	               <A target=mires href="<% = str %>/nouveautes_01.asp"><IMG height=15 border=0 hspace=5 src="Images/menu_fleche.gif" align=middle width=15><% = trad('MENU_NOUVEAUTES') %></A>
	               <A target=mires href="<% = str %>/en_cours_01.asp"><IMG height=15 border=0 hspace=5 src="Images/menu_fleche.gif" align=middle width=15><% = trad('MENU_DOCS_COURS') %></A>
	               <A target=mires href="<% = str %>/bientot_01.asp"><IMG height=15 border=0 hspace=5 src="Images/menu_fleche.gif" align=middle width=15><% = trad('MENU_BIENTOT') %></A>
	              <HR noShade width="80%" color="#990000"> 
	//Suppression des liens vers les pages de mots_clés selon moteurs
                if ((str != "Moteurs/Vo_Up1") && (str != "Moteurs/Vo_Up2")) { 
                        <A target=mires href="<% = str %>/mots_cles_01.asp"><IMG height=15 border=0 hspace=5 src="Images/menu_fleche.gif" align=middle width=15><% = trad('MENU_MOTS_CLES') %></A>
	//liens vers la page de recherche sur les mots-clés
                        <A target=mires href="<% = str %>/search_mots_cles.asp"><IMG height=15 border=0 hspace=5 src="Images/menu_fleche.gif" align=middle width=15><% = trad('MENU_RECHERCHE') %></A>
                        <HR noShade width="80%" color="#990000"> 
        // fin de suppression des pages de mots_clés selon moteurs %>
        
//lien vers la page de log-in
                        <A target=mires href="All_Users/Login.asp"><IMG height=15 border=0 hspace=5 src="Images/menu_fleche.gif" align=left width=15> <FONT face=Verdana size=1 color="#990000"> <% var logged = trad("" + Session ('client')); Response.Write(logged.toUpperCase()); %> <BR> <% 
                            		  //decodage "12/01/2000" en 12 janvier 2000
                                          var str_date_brute = "" + Session ("date_visu");
                                          if ("" + Session ("lang") == "fr") {
                                            var str_date_litt = str_date_brute.substring (0,2) + " " + decode_mois(str_date_brute.substring (3,5)) + " " + str_date_brute.substring (6,10);
                                            }
                                        else {
                                            var suffix = "";
                                            switch (str_date_brute.substring (0,2)) {
                                                case ("01") : suffix = "st" ; break;
                                                case ("02") : suffix = "nd" ; break;
                                                case ("03") : suffix = "rd" ; break;
                                                default : suffix = "th" ; break;
                                                } 
                                            var str_date_litt = decode_mois(str_date_brute.substring (3,5)) + " " + str_date_brute.substring (0,2) + suffix + ", " + str_date_brute.substring (6,10);                                            
                                            }
                                          Response.Write (str_date_litt);                                                        
                                          %> </FONT> </A>
                        <HR noShade width="80%" color="#990000"> 

//lien vers l'aide / documentation
                        <% Response.Write ("<A target=mires href=\"Documentation/" + Session('lang') + "/index_doc.asp\"><IMG border=0 height=15 hspace=5 src=\"Images/menu_fleche.gif\" align=middle width=15>" + trad('MENU_AIDE') + "</A>"); %>

//si administrateur, lien vers administration des dictionnaires / verbatim
			<% if ("" + Session ("client") == "admin") { %>
                        <HR noShade width="80%" color="#990000"> 
                        <A target=mires href="Admin/dico_liste.asp"><IMG height=15 border=0 hspace=5 src="Images/menu_fleche.gif" align=middle width=15><% = trad('MENU_DICTIONNAIRE') %></A>
            </TABLE>
        </TD>
    </TR>
</TABLE>