1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script></script>
<title>Member ID - Author : Laurent Schmitt - All rights
reserved le 2 (et plus) octobre 2009</title>
<style>.photo div.popup{visibility: hidden;
z-index: 10;
top: 120px;
left: 200px;
position: absolute;
background-color:white;
border-color:black;
}
span:hover.photo div.popup{
visibility: visible;
}
span .photo div:hover.popup{
visibility: visible;
}
</style>
</head>
<body>
<script>
function extract_First_LastName(ch)
{
//
// Cette fct marche (inutile de s'attarder)
//
var chaineCN=ch.indexOf("CN=");
var blanc=ch.indexOf(" ");
var coma=ch.indexOf(",");
var FirstName=ch.substring(chaineCN+3,blanc);
var LastName=ch.substring(blanc+1,coma);
//mise en forme
var URL='http://ids.schneider-electric.com/global/corp/ecd.nsf/EmployeesCard?readviewentries&startkey='+LastName+'%2C%20'+FirstName+'&count=3';
return URL;
}
//
//
//
function extract_NotesID(ch) // nom au format 'CN=Laurent Schmitt,OU=FR,O=Schneider'
{
//
// Cette fct marche (inutile de s'attarder)
//
ch=ch.replace("CN=","");ch=ch.replace(",OU=","/");
do { // retirer tous les ",O=" (il peut y en avoir plusieurs)
ch=ch.replace(",O=","/");
}
while (ch.indexOf(",")!=-1);
//document.write(ch+"<br>");
return ch;
} // nom au format 'Laurent Schmitt/FR/Schneider'
function loadsesa(username){ // nom au format 'CN=Laurent Schmitt,OU=FR,O=Schneider'
var sesa="h_sesaList";
var xmlsesa = new ActiveXObject("Microsoft.XMLDOM");
xmlsesa.async="false";
xmlsesa.load(extract_First_LastName(username)); // appel URL de l'annuaire international
var sesaArray = new Array();
var topEntry=xmlsesa.selectSingleNode("viewentries");
var entry=xmlsesa.selectSingleNode("viewentries/viewentry");
var ind=0;
if (entry!=null){
do {
var sUnid = entry.getAttribute('unid');
var Item = entry.childNodes.item(2); /* "2" correspond à la colonne du xml contenant le code SESA ds un fichier de ce type : http://ids.schneider-electric.com/global/corp/ecd.nsf/EmployeesCard?readviewentries&startkey=Schmitt%2C%20Laurent */
var name = Item.getAttribute('name');
var sItemText = Item.text;
var value = sItemText;
sesaArray[ind] = value;
//document.write("SESA["+ind+"]="+sesaArray[ind]+"<br>");
entry=entry.nextSibling;
ind++;
} // do
while (entry!=null)
}
return sesaArray; // renvoie un tableau de codes SESA selon le paramètre "count" de l'URL
}
//
//
//
function display_photo(photo,prenom,nom)
{
//
// Cette fct marche (inutile de s'attarder) ; j'utilise un code html + js
// fortement échappé (\).
//
if (photo.length>0) {
while(photo.indexOf(" ")!=-1)
{
photo=photo.replace(" ","%20");
}
document.write("<font color=\"blue\"><\/font>");
document.write("<span onmouseover=\"document.getElementById(\'popupid\').style.visibility = \'visible\';\"><span");
document.write(" class=\"photo\">"+prenom+" "+nom+"<span");
document.write(" onmouseout=\"document.getElementById(\'popupid\').style.visibility = \'hidden\';\">");
document.write("<div style=\"visibility: hidden;\" class=\"popup\"");
document.write(" id=\"popupid\"><span><img");
document.write(" src="+photo+"><\/span><br><\/div>");
document.write("<\/span><\/span><\/span><\/font><br>");
}
else { document.write("<br>");}
}
//
//
//
function load_personal_data(sesa){
//
/* Le pb est là : malgré la boucle qui est censée parcourir plusieurs employés, le nom de chacun est correct
par contre la photo qui s'affiche qd la souris survole ce nom est la même pour tous les employés ! (En fait, il n'y a que le premier et le dernier, le 2e n'ayant
pas de photo). */
//
var i=0,URL,codesesa,xmlsesa;
var sesainfo = new Array(3);
sesainfo[0] = new Array(9);
sesainfo[1] = new Array(9);
sesainfo[2] = new Array(9);
var topEntry,entry;
var nomemploye,prenomemploye,adresseemploye,villeemploye,siteemploye,telemploye,cellemploye,mailemploye,idnotesemploye,urlphotoemploye;
for (i=0;i<sesa.length;i++) { // parcourir tous les codes SESA (c'est avec ça qu'on identifie informatiquement chaque employé)
// construire l'URL avec les infos données par le code SESA du type :
// http://ids.schneider-electric.com/global/corp/ecd.nsf/xmlemployeesactivebyguid?readviewentries&StartKey=SESA21805&count=1)
// appeler l'URL (cette URL va chercher un fichier XML, contenant plein d'infos sur l'employé)
codesesa="h_sesaList";
xmlsesa = new ActiveXObject("Microsoft.XMLDOM");
xmlsesa.async="false";
xmlsesa.load(URL); // appel URL du code XML à partir du code SESA
//pour chq item intéressant,
// récupérer la valeur
topEntry=xmlsesa.selectSingleNode("viewentries");
entry=xmlsesa.selectSingleNode("viewentries/viewentry");
//var sUnid2 = entry.getAttribute('unid');
nomemploye=entry.childNodes.item(2);
prenomemploye=entry.childNodes.item(4);
adresseemploye=entry.childNodes.item(26);
villeemploye=entry.childNodes.item(30);
siteemploye=entry.childNodes.item(25);
telemploye=entry.childNodes.item(14);
cellemploye=entry.childNodes.item(16);
mailemploye=entry.childNodes.item(10);
idnotesemploye=entry.childNodes.item(9);
urlphotoemploye=entry.childNodes.item(37);
/* visiblement, grâce aux pièges que j'avais insérés, j'ai constaté qu'on ne passe jamais là, pour le dernier employé (le 3e) */
sesainfo[i][0] = nomemploye.text;
sesainfo[i][1] = prenomemploye.text;
sesainfo[i][2] = adresseemploye.text;
sesainfo[i][3] = villeemploye.text;
sesainfo[i][4] = siteemploye.text;
sesainfo[i][5] = telemploye.text;
sesainfo[i][6] = cellemploye.text;
sesainfo[i][7] = mailmploye.text;
sesainfo[i][8] = idnotesemploye.text;
sesainfo[i][9] = urlphotoemploye.text;
display_photo(urlphotoemploye.text,prenomemploye.text,nomemploye.text);
} // end for
return sesainfo;
}
</script>
//
//
//
<table border="0" width="100%">
<tbody>
<tr>
<td class="h-fieldHeaderEdit-bgtext">
<script>
var sesaArray=loadsesa(h_LastEditorDistinguishedName);
extract_NotesID(h_LastEditorDistinguishedName);
load_personal_data(sesaArray);
</script></td>
</tr>
</tbody>
</table>
</body>
</html> |
Partager