//------------------------------------------------------------ // OpenWriteToLayer // Initialise le support d'écriture sur le layer du doc // Paramètres : // objDoc : objet de type Document // idLayer : identifiant du layer //------------------------------------------------------------ function OpenWriteToLayer(objDoc, idLayer) { if( objDoc.all ) { objDoc.all[idLayer].innerHTML = ""; return; } if( objDoc.layers ) { objDoc.layers[idLayer].clear(); return; } else { var objLayer = objDoc.getElementById(idLayer); objLayer.innerHTML = ""; } } //------------------------------------------------------------ // WriteToLayer // Ecrit le code html sur le layer du doc // Paramètres : // objDoc : objet de type Document // idLayer : identifiant du layer //------------------------------------------------------------ function WriteToLayer(objDoc, idLayer, strHtml) { if( objDoc.all ) { objDoc.all[idLayer].innerHTML = objDoc.all[idLayer].innerHTML + strHtml; return; } if( objDoc.layers ) { objDoc.layers[idLayer].write(strHtml); return; } else { var objLayer = objDoc.getElementById(idLayer); objLayer.innerHTML = objLayer.innerHTML + strHtml; } } //------------------------------------------------------------ // CloseWriteToLayer // Ferme le contexte d'écriture sur le layer du doc // Paramètres : // objDoc : objet de type Document // idLayer : identifiant du layer //------------------------------------------------------------ function CloseWriteToLayer(objDoc, idLayer) { if( objDoc.layers ) objDoc.layers[idLayer].close(); } //------------------------------------------------------------ // GetTxtHtml // Retourne le code html d'un texte éventuellement cliquable // Paramètres : // strClassLink : nom de la classe CSS si url // strClassTxt : nom de la classe CSS si Txt // strTxt : texte affiché // strUrl : url du lien, peut être vide //------------------------------------------------------------ function GetTxtHtml(strClassLink, strClassTxt, strTxt, strUrl, strTarget) { if( strClassLink != "" ) strClassLink = " class=\"" + strClassLink + "\" "; if( strClassTxt != "" ) strClassTxt = " class=\"" + strClassTxt + "\" "; if( strTarget != "" ) strTarget = " target=\"" + strTarget + "\" "; var strHtml = ""; if( strTxt != "" ) { if( strUrl != "" ) strHtml = " " + strTxt + ""; else strHtml = " " + strTxt + "";; } return strHtml; } //------------------------------------------------------------ // GetImgHtml // Retourne le code html d'une image éventuellement cliquable // Paramètres : // strSrc : url de l'image // strUrl : url du lien sur l'image, peut être vide. //------------------------------------------------------------ function GetImgHtml(strSrc, strUrl, strName, strTitle) { var strHtml = ""; if( !strTitle ) strTitle = ""; else strTitle = " title=\"" + strTitle + "\""; if( !strName ) strName = ""; else strName = " name=\"" + strName + "\""; if( strSrc != "" ) { strHtml = ""; if( strUrl != "" ) strHtml = "" + strHtml + ""; } return strHtml; } //------------------------------------------------------------ // GetTableDebHtml et GetTableFinHtml // Retourne le code html du tableau contenant la ligne d'arbre // Paramètres : // lg : largeur du tableau contenant l'arbre // iNiv : niveau d'arborescence à afficher // inter : largeur en pixel d'un intervalle de niveau //------------------------------------------------------------ function GetTableDebHtml(lg, iNiv, inter) { var iLgTab = 0; if( iNiv > 0 ) iLgTab = inter*iNiv; var iLgTxt = lg - iLgTab; var strHtml = "" + "" + "
"; return strHtml; } function GetTableFinHtml() { var strHtml = "
\n"; return strHtml; } //-------------------------------------------------------------------------------- // class TreeNodeFolder //-------------------------------------------------------------------------------- TreeNodeFolder.prototype.constructor = TreeNodeFolder; function TreeNodeFolder(objTreeview, idFolder, strLib, iNiv, iDroitLink, iDroitAction, strUrlTxt, strTarget) { // Definition des attributs this.objTreeview = objTreeview; this.id = idFolder; this.idFolder = idFolder.substr(1); this.strLib = strLib; this.iDroitAction = iDroitAction; this.iDroitLink = iDroitLink; this.iNiv = iNiv; this.bOpen = true; if( iNiv>this.objTreeview.iNivOpen ) this.bOpen = false; this.strUrlTxt = strUrlTxt; this.strTarget = strTarget; this.objTreeNodeParent = null; this.objTreeNodeFolders = new Array(); this.iNbFolders = 0; this.strHtml = ""; } TreeNodeFolder.prototype.SetParent = function(objTreeNodeFolderParent) { this.objTreeNodeParent = objTreeNodeFolderParent; this.objTreeNodeParent.AddFolder(this); this.iNiv = objTreeNodeFolderParent.iNiv + 1; this.strHtml = ""; } TreeNodeFolder.prototype.CanOpenFolder = function() { // retourne vrai si le noeud peut être ouvert // un noeud est ouvrable s'il possède des feuilles ou un sous-arbre if( this.iNbFolders == 0 ) return false; return true; } TreeNodeFolder.prototype.AddFolder = function(objTreeNodeFolder) { this.objTreeNodeFolders[objTreeNodeFolder.id] = objTreeNodeFolder; this.iNbFolders++; } TreeNodeFolder.prototype.SetImageRoll = function(bOn) { if( this.objTreeview.imgNodeFolderSelect != "" ) { if( bOn == true ) MM_swapImage("imgFolder" + this.id, "", this.objTreeview.imgNodeFolderSelect, 1); else MM_swapImgRestore(); } } TreeNodeFolder.prototype.Draw = function() { if( this.objTreeNodeParent != null ) if( this.iNiv != this.objTreeNodeParent.iNiv + 1 ) { this.iNiv = this.objTreeNodeParent.iNiv + 1; this.strHtml = ""; } var strHtml = this.strHtml; if( strHtml == "" ) { // affichage de la ligne // determine l'icone à afficher var imgNodeFolder = ""; var urlNodeFolder = ""; if( this.iDroitAction == 2 && this.objTreeview.imgNodeFolder != "" ) { imgNodeFolder = this.objTreeview.imgNodeFolder; urlNodeFolder = "#"; } var strImgIcone = this.objTreeview.imgNode; var strUrlIcone = ""; var strTitle = ""; if( this.CanOpenFolder() == true ) { if( this.bOpen == true ) { strImgIcone = this.objTreeview.imgNodeOpen; strUrlIcone = "javascript:"+this.objTreeview.strNameObj+".CloseNode('" + this.id + "');"; strTitle = "Fermer"; } else { strImgIcone = this.objTreeview.imgNodeClose; strUrlIcone = "javascript:"+this.objTreeview.strNameObj+".OpenNode('" + this.id + "');"; strTitle = "Ouvrir"; } } var strUrlTxt = ""; if( this.iDroitLink == 2 ) { if( this.objTreeview.bFolderNameLink == true ) strUrlTxt = "javascript:onTreeviewFolderNameClick(" + this.idFolder.toString() + ")"; else strUrlTxt = this.strUrlTxt; } var strClass = ""; var bChild = false; for(iTNF in this.objTreeNodeFolders) { bChild = true; break; } if( this.iNiv=="0" ) strClass = "ArboPlan0Bold"; else if( this.iNiv=="1" ) strClass = "ArboPlan0Bold"; else if( this.iNiv=="2" ) { if( bChild ) strClass = "ArboPlan1Bold"; else strClass = "ArboPlan2"; } else if( this.iNiv=="3" ) { if( bChild ) strClass = "ArboPlan2Bold"; else strClass = "ArboPlan2"; } else strClass = "ArboPlan2"; strHtml = GetTableDebHtml(this.objTreeview.iTabLg, this.iNiv, 16); strHtml += GetImgHtml(strImgIcone, strUrlIcone, "", strTitle); strHtml += GetImgHtml(imgNodeFolder, urlNodeFolder, "imgFolder" + this.id); strHtml += GetTxtHtml(strClass, strClass, this.strLib, strUrlTxt, this.strTarget, this.iNiv); strHtml += GetTableFinHtml(); this.strHtml = strHtml; } if( this.bOpen == true ) { // affichage des fils for(iTNF in this.objTreeNodeFolders) strHtml += this.objTreeNodeFolders[iTNF].Draw(); } return strHtml; } //-------------------------------------------------------------------------------- // class Treeview //-------------------------------------------------------------------------------- Treeview.prototype.constructor = Treeview; function Treeview(objDoc, idLayer, iNivOpen) { //Definition des attributs this.objDoc = objDoc; this.idLayer = idLayer; this.strNameObj = "objTreeview" ; this.bViewHeader = true ; // représente la racine du treeview this.objTreeNodeRoot = null; // contient tous les noeuds du treeview this.objTreeNodeFolders = new Array(); // largeur du tableau contenant le treeview this.iTabLg = 500; // class CSS appliquée sur le lien d'un texte folder this.classLinkFolder = ""; // class CSS appliquée sur le texte folder this.classTextFolder = ""; // class CSS appliquée sur le lien d'un texte doc this.classLinkDoc = ""; // class CSS appliquée sur le texte doc this.classTextDoc = ""; // class CSS appliquée sur les liens action2 this.classLinkAction = ""; // img noeud ouvert this.imgNodeOpen = ""; // img noeud fermé this.imgNodeClose = ""; // img noeud sans sous-arbre this.imgNode = ""; // img associée à un folder this.imgNodeFolder = ""; // img roll d'un doc sélectionné this.imgNodeDocSelect = ""; // img roll d'un folder sélectionné this.imgNodeFolderSelect = ""; // flag qui indique si le texte folder est cliquable ou non // si oui, la fonction onTreeviewFolderNameClick(idFolder) est appelée. Cette fonction est à générer. this.bFolderNameLink = false; // flag qui indique si le texte doc est cliquable ou non // si oui, la fonction onTreeviewDocNameClick(idDoc) est appelée. Cette fonction est à générer. this.bDocNameLink = false; // url de la page demandant la confirmation du déplacement this.urlConfirm = ""; // niveau à ouvrir par défaut this.iNivOpen = iNivOpen; // flag à vrai pour afficher les feuilles, à faux pour les noeuds uniquement this.bCanShowHideNode = false; this.bShowNode = false; this.strNodeName = "feuille"; // mémorisation pour les déplacements de doc entre folder this.idFolderSrc = ""; this.idDocCut = ""; } Treeview.prototype.AddFolder = function(idFolder, idFolderParent, strLib, iNiv, iDroitLink, iDroitAction, strUrlTxt, strTarget) { var oTnf = new TreeNodeFolder(this, idFolder, strLib, iNiv, iDroitLink, iDroitAction, strUrlTxt, strTarget); if( this.objTreeNodeRoot == null ) { this.objTreeNodeRoot = oTnf; this.objTreeNodeFolders[idFolder] = oTnf; } else { this.objTreeNodeFolders[idFolder] = oTnf; if( this.objTreeNodeFolders[idFolderParent] ) oTnf.SetParent(this.objTreeNodeFolders[idFolderParent]); // sinon on n'ajoute pas le noeud } } Treeview.prototype.Draw = function() { OpenWriteToLayer(this.objDoc, this.idLayer); if( this.objTreeNodeRoot != null ) { WriteToLayer(this.objDoc, this.idLayer, this.objTreeNodeRoot.Draw()); } CloseWriteToLayer(this.objDoc, this.idLayer); } Treeview.prototype.OpenNode = function(idNodeFolder) { this.objTreeNodeFolders[idNodeFolder].bOpen = true; this.objTreeNodeFolders[idNodeFolder].strHtml = ""; this.Draw(); } Treeview.prototype.CloseNode = function(idNodeFolder) { this.objTreeNodeFolders[idNodeFolder].bOpen = false; this.objTreeNodeFolders[idNodeFolder].strHtml = ""; this.Draw(); } Treeview.prototype.OpenAll = function() { for(iTNF in this.objTreeNodeFolders) { this.objTreeNodeFolders[iTNF].bOpen = true; this.objTreeNodeFolders[iTNF].strHtml = ""; } this.Draw(); } Treeview.prototype.CloseAll = function() { for(iTNF in this.objTreeNodeFolders) { this.objTreeNodeFolders[iTNF].bOpen = false; this.objTreeNodeFolders[iTNF].strHtml = ""; } this.objTreeNodeRoot.bOpen = true; this.Draw(); } Treeview.prototype.ShowHideNode = function() { this.bShowNode = !this.bShowNode; this.Draw(); }