Erreur d'exécution inattendue

Une erreur inattendue s'est produite lors de l'exécution.

Source de l'erreur

Nom de page :/Index.xsp

Exception

Erreur lors de l'exécution de l'expression calculée JavaScript
Erreur d'interpréteur de script, ligne=767, colonne=47 : 'docArticle' contient une valeur NULL
   at [/jssTools.jss].getPageTitle()

Code JavaScript

   1: //Retourne l'url de la base
   2: function webDbName()
   3: {
   4: 	/*
   5: 	var path = facesContext.getExternalContext().getRequestContextPath();
   6: 	var i = patniveh.indexOf('nsf')+3;
   7: 	path = path.substring(path, i);
   8: 
   9: 	return path;
  10: 	*/
  11: 	var profile:NotesDocument = database.getProfileDocument("fa_ParametreGeneral", "")
  12: 	var racine = "";
  13: 	if(profile != null)
  14: 	{
  15: 		racine = profile.getItemValueString("fl_URLWeb");
  16: 		if(@Right(racine, 1) != "/")
  17: 		{
  18: 			racine = racine + "/";
  19: 		}
  20: 		racine = racine + @ReplaceSubstring(database.getFilePath(), "\\", "/");
  21: 	}
  22: 	
  23: 	return racine;
  24: }
  25: 
  26: //Retourne l'url de la page souhaitée
  27: function getUrlPage(page)
  28: {
  29: 	return webDbName() + "/Index.xsp?page="+page;
  30: }
  31: 
  32: //Vérifier si l'utilisateur est connecté
  33: function estConnecte()
  34: {
  35: 	return !context.getUser().getCommonName().toLowerCase().equals("anonymous");
  36: }
  37: 
  38: //Vérifier si l'utilisateur a le rôle spécifié
  39: function aLeRole(role)
  40: {
  41: 	return context.getUser().getRoles().contains(role)
  42: }
  43: 
  44: //retourne vrai si l'utilisateur est auteur sur le document
  45: function estAuteur(document1, user)
  46: {
  47: 	var nUser:NotesName = session.createName(user.getDistinguishedName());
  48: 
  49: 	//on parcourt le champ fl_Auteurs
  50: 	var auteurs = document1.getItemValue("fl_Auteurs");
  51: 	
  52: 	for(var i=0; i<auteurs.length; i++)
  53: 	{
  54: 		//on recherche l'utilisateur
  55: 		var nAuteur:NotesName = session.createName(auteurs[i]);
  56: 		
  57: 		if(nUser.getAbbreviated() == nAuteur.getAbbreviated())
  58: 			return true;
  59: 		
  60: 		//on recherche les groupes de l'utilisateur
  61: 		if(user.getGroups().contains(auteurs[i]))
  62: 			return true;
  63: 	}
  64: 	
  65: 	//on parcourt le champ fl_AuteursRoles
  66: 	var auteursRoles = document1.getItemValue("fl_AuteursRoles");
  67: 	
  68: 	for(var i=0; i<auteursRoles.length; i++)
  69: 	{
  70: 		//on recherche les rôles de l'utilisateur
  71: 		if(user.getRoles().contains(auteursRoles[i]))
  72: 			return true;
  73: 	}
  74: 	
  75: 	return false;
  76: }
  77: 
  78: //Retourne la classe à appliquer en fonction de l'école
  79: function recupererStylePage(document)
  80: {
  81: 	var classe = "petale_actus";
  82: 
  83: 	if(document == null)
  84: 		return "";
  85: 
  86: 	if(document.isNewNote())
  87: 		return "";
  88: 
  89: 	if(document.getItemValueString("fl_Suppression")=="1")
  90: 		return classe;
  91: 
  92: 	//if(document.getItemValueString("fl_Type")=="2" || document.getItemValueString("fl_UNIDNiveau1") == "ACCUEIL")
  93: 	if(document.getItemValueString("fl_UNIDNiveau1") == "ACCUEIL")
  94: 		return classe;
  95: 	
  96: 	if (!niveau1Limite(document).isEmpty())
  97: 		return "6";
  98: 
  99: 	var vueSites = database.getView("va_$ParamSitesUNID");
 100: 	var tmpDoc = vueSites.getFirstDocument()
 101: 	while(tmpDoc!=null)
 102: 	{
 103: 		var id = tmpDoc.getItemValueString("fl_IDPageRacine");
 104: 		if(
 105: 			document.getItemValueString("fl_ID") == id ||
 106: 			document.getItemValueString("fl_UNIDNiveau1") == id ||
 107: 			document.getItemValueString("fl_UNIDNiveau2") == id ||
 108: 			document.getItemValueString("fl_UNIDNiveau3") == id ||
 109: 			document.getItemValueString("fl_UNIDNiveau4") == id ||
 110: 			document.getItemValueString("fl_UNIDNiveau5") == id ||
 111: 			document.getItemValueString("fl_ID") != "" && getDocumentById(document.getItemValueString("fl_ID")).getUniversalID() == id ||
 112: 			document.getItemValueString("fl_UNIDNiveau1") != "" && getDocumentById(document.getItemValueString("fl_UNIDNiveau1")).getUniversalID() == id ||
 113: 			document.getItemValueString("fl_UNIDNiveau2") != "" && getDocumentById(document.getItemValueString("fl_UNIDNiveau2")).getUniversalID() == id ||
 114: 			document.getItemValueString("fl_UNIDNiveau3") != "" && getDocumentById(document.getItemValueString("fl_UNIDNiveau3")).getUniversalID() == id ||
 115: 			document.getItemValueString("fl_UNIDNiveau4") != "" && getDocumentById(document.getItemValueString("fl_UNIDNiveau4")).getUniversalID() == id ||
 116: 			document.getItemValueString("fl_UNIDNiveau5") != "" && getDocumentById(document.getItemValueString("fl_UNIDNiveau5")).getUniversalID() == id
 117: 		)
 118: 		return tmpDoc.getItemValueString("fl_Cle");
 119: 
 120: 		tmpDoc = vueSites.getNextDocument(tmpDoc);
 121: 	}
 122: 
 123: 	return classe;
 124: }
 125: 
 126: //Supprime l'UNID du document courant des listes de choix de niveaux
 127: function removeUNID(liste, document)
 128: {
 129: 	if(@IsError(liste))
 130: 		return null;
 131: 
 132: 	var result = new Array();
 133: 	var unid = "";
 134: 
 135: 	for(var i=0;i<length;i++)
 136: 	{
 137: 		unid = (liste[i].split("|"))[1];
 138: 		if(!document.getDocument().getUniversalID().equals(unid))
 139: 			result.push(liste[i]);
 140: 	}
 141: 	return result;
 142: }
 143: 
 144: //Supprime l'entrée correspondant au document courant des documents connexes
 145: function removeUNIDFromConnexes(liste, document)
 146: {	
 147: 	var entry = liste.getFirstEntry();
 148: 	var entryTmp = null;
 149: 	while(entry!=null)
 150: 	{
 151: 		entryTmp = liste.getNextEntry(entry);
 152: 
 153: 		unid = entry.getColumnValues().get(1).split("|")[1];
 154: 		if(document.getDocument().getUniversalID().equals(unid) || document.getDocument().getItemValueString("fl_ID").equals(unid))
 155: 			liste.deleteEntry(entry);
 156: 
 157: 		entry = entryTmp;
 158: 	}
 159: }
 160: 
 161: //Vérifier si l'utilisateur est interne au CHR
 162: function estUtilisateurInterne()
 163: {
 164: 	return (@Name("[O]", @UserName())!="SDE");
 165: }
 166: 
 167: //Vérifier si l'utilisateur doit changer de mot de passe
 168: function doitChangerMotDePasse()
 169: {
 170: 	if(!estConnecte())
 171: 		return false;
 172: 
 173: 	if(estUtilisateurInterne())
 174: 		return false;
 175: 
 176: 	var profile = database.getProfileDocument("fa_ParametreGeneral","");
 177: 	var baseAnnuaire = profile.getItemValueString("fl_CheminAnnuaireEcoles");
 178: 	var changerMdp = @DbLookup(baseAnnuaire,"($Users)",context.getUser().getDistinguishedName(),"fl_ChangerMotDePasse");
 179: 
 180: 	if(@IsError(changerMdp))
 181: 		return false;
 182: 	else
 183: 		return changerMdp == "1";
 184: }
 185: 
 186: //Vérifier si la charte informatique est signée
 187: function verifierCharteInformatique()
 188: {
 189: 	if(!estConnecte())
 190: 		return true;
 191: 
 192: 	var profile = database.getProfileDocument("fa_ParametreGeneral","");
 193: 	var baseAnnuaire = profile.getItemValueString("fl_CheminAnnuaireDomino");
 194: 	var charteInfo = @DbLookup(baseAnnuaire,"($Users)",context.getUser().getDistinguishedName(),"fl_CharteInformatique");
 195: 
 196: 	if(@IsError(charteInfo))
 197: 	{
 198: 		baseAnnuaire = profile.getItemValueString("fl_CheminAnnuaireEcoles");
 199: 		charteInfo = @DbLookup(baseAnnuaire,"($Users)",context.getUser().getDistinguishedName(),"fl_CharteInformatique");
 200: 	}
 201: 
 202: 	if(@IsError(charteInfo))
 203: 		return true;
 204: 	else
 205: 		return charteInfo == "1";
 206: }
 207: 
 208: //Signer la charte charte informatique
 209: function signerCharteInformatique()
 210: {
 211: 	var profile = database.getProfileDocument("fa_ParametreGeneral","");
 212: 
 213: 	var baseAnnuaire = profile.getItemValueString("fl_CheminAnnuaireDomino");
 214: 	var db = session.getDatabase("",baseAnnuaire);
 215: 	var vue = db.getView("($Users)");
 216: 	var doc = vue.getDocumentByKey(context.getUser().getDistinguishedName());
 217: 
 218: 	if(doc==null)
 219: 	{
 220: 		var baseAnnuaire = profile.getItemValueString("fl_CheminAnnuaireEcoles");
 221: 		var db = session.getDatabase("",baseAnnuaire);
 222: 		var vue = db.getView("($Users)");
 223: 		var doc = vue.getDocumentByKey(context.getUser().getDistinguishedName());
 224: 	}
 225: 
 226: 	if(doc!=null)
 227: 	{
 228: 		doc.replaceItemValue("fl_CharteInformatique","1");
 229: 		doc.save(true);
 230: 	}
 231: }
 232: 
 233: //Retourne l'arborescence du document (unids séparés par des $$)
 234: function getArborescence(docCourant) {
 235: 	var unid5 = article.getItemValueString("fl_UNIDNiveau5");
 236: 	var unid4 = article.getItemValueString("fl_UNIDNiveau4");
 237: 	var unid3 = article.getItemValueString("fl_UNIDNiveau3");
 238: 	var unid2 = article.getItemValueString("fl_UNIDNiveau2");
 239: 	var unid1 = article.getItemValueString("fl_UNIDNiveau1");
 240: 	var getArborescence = "";
 241: 
 242: 	if (!unid5.isEmpty())
 243: 		getArborescence = unid1+"$$"+unid2+"$$"+unid3+"$$"+unid4+"$$"+unid5;
 244: 	else if(!unid4.isEmpty())
 245: 		getArborescence = unid1+"$$"+unid2+"$$"+unid3+"$$"+unid4;
 246: 	else if(!unid3.isEmpty())
 247: 		getArborescence = unid1+"$$"+unid2+"$$"+unid3;
 248: 	else if(!unid2.isEmpty())
 249: 		getArborescence = unid1+"$$"+unid2;
 250: 	else
 251: 		getArborescence = unid1;
 252: 
 253: 	if(docCourant)
 254: 	{
 255: 		//getArborescence = getArborescence+"$$"+article.getDocument().getUniversalID();
 256: 		getArborescence = getArborescence+"$$"+article.getItemValueString("fl_ID");
 257: 	}
 258: 
 259: 	return getArborescence;
 260: }
 261: 
 262: //Retourne l'UNID de niveau n en fonction du parentUnid d'un document
 263: function getUNIDNiveau(niveau, parentUnid)
 264: {
 265: 	var parentDoc:NotesDocument = null;
 266: 
 267: 	try {
 268: 		//on tente d'ouvrir le document avec son UNID
 269: 		parentDoc = database.getDocumentByUNID(parentUnid);
 270: 	}
 271: 	catch(e) {
 272: 		//on tente d'ouvrir le document avec son fl_ID
 273: 		var vue = database.getView("va_$ArticlesTousUNID");
 274: 		parentDoc = vue.getDocumentByKey(parentUnid, true);
 275: 	}
 276: 	finally {
 277: 		if(parentDoc != null)
 278: 		{
 279: 			switch(niveau)
 280: 			{
 281: 			case "1":
 282: 				return parentDoc.getItemValueString("fl_UNIDNiveau1");
 283: 				break;
 284: 
 285: 			case "2":
 286: 				if(!parentDoc.getItemValueString("fl_UNIDNiveau2").isEmpty() && !parentDoc.getItemValueString("fl_UNIDNiveau1").isEmpty())
 287: 					return parentDoc.getItemValueString("fl_UNIDNiveau2");
 288: 				else if(!parentDoc.getItemValueString("fl_UNIDNiveau1").isEmpty())
 289: 					return parentDoc.getItemValueString("fl_ID");
 290: 				break;
 291: 
 292: 			case "3":
 293: 				if(!parentDoc.getItemValueString("fl_UNIDNiveau3").isEmpty() && !parentDoc.getItemValueString("fl_UNIDNiveau2").isEmpty() && !parentDoc.getItemValueString("fl_UNIDNiveau1").isEmpty())
 294: 					return parentDoc.getItemValueString("fl_UNIDNiveau3");
 295: 				else if(!parentDoc.getItemValueString("fl_UNIDNiveau2").isEmpty() && !parentDoc.getItemValueString("fl_UNIDNiveau1").isEmpty())
 296: 					return parentDoc.getItemValueString("fl_ID");
 297: 				break;
 298: 
 299: 			case "4":
 300: 				if(!parentDoc.getItemValueString("fl_UNIDNiveau4").isEmpty() && !parentDoc.getItemValueString("fl_UNIDNiveau3").isEmpty() && !parentDoc.getItemValueString("fl_UNIDNiveau2").isEmpty() && !parentDoc.getItemValueString("fl_UNIDNiveau1").isEmpty())
 301: 					return parentDoc.getItemValueString("fl_UNIDNiveau4");
 302: 				else if(!parentDoc.getItemValueString("fl_UNIDNiveau3").isEmpty() && !parentDoc.getItemValueString("fl_UNIDNiveau2").isEmpty() && !parentDoc.getItemValueString("fl_UNIDNiveau1").isEmpty())
 303: 					return parentDoc.getItemValueString("fl_ID");
 304: 				break;
 305: 				
 306: 			case "5":
 307: 				if(!parentDoc.getItemValueString("fl_UNIDNiveau5").isEmpty() && !parentDoc.getItemValueString("fl_UNIDNiveau4").isEmpty() && !parentDoc.getItemValueString("fl_UNIDNiveau3").isEmpty() && !parentDoc.getItemValueString("fl_UNIDNiveau2").isEmpty() && !parentDoc.getItemValueString("fl_UNIDNiveau1").isEmpty())
 308: 					return parentDoc.getItemValueString("fl_UNIDNiveau5");
 309: 				else if(!parentDoc.getItemValueString("fl_UNIDNiveau4").isEmpty() && !parentDoc.getItemValueString("fl_UNIDNiveau3").isEmpty() && !parentDoc.getItemValueString("fl_UNIDNiveau2").isEmpty() && !parentDoc.getItemValueString("fl_UNIDNiveau1").isEmpty())
 310: 					return parentDoc.getItemValueString("fl_ID");
 311: 				break;
 312: 			}
 313: 		}
 314: 	}
 315: }
 316: 
 317: //Publie un article (modifier la bibliothèque lsTools si modifié)
 318: function publier(doc)
 319: {
 320: 	//doc.replaceItemValue("fl_DateExpiration","");
 321: 	//doc.replaceItemValue("fl_HeureExpiration","");
 322: 	//doc.replaceItemValue("fl_DateHeureExpiration","");
 323: 	doc.replaceItemValue("fl_UtilisateurExpiration","");
 324: 	doc.replaceItemValue("fl_MailExpirationEnvoye", "");
 325: 	
 326: 	var maintenant:NotesDateTime = session.createDateTime("Today");
 327: 	doc.replaceItemValue("fl_DatePublication",maintenant);
 328: 	
 329: 	maintenant.setNow();
 330: 	doc.replaceItemValue("fl_DateHeurePublication",maintenant);
 331: 	
 332: 	maintenant = session.createDateTime(maintenant.getTimeOnly());
 333: 	doc.replaceItemValue("fl_HeurePublication",maintenant);
 334: 	
 335: 	doc.replaceItemValue("fl_UtilisateurPublication",@UserName());
 336: 	doc.replaceItemValue("fl_Statut","1");
 337: 	majDroits(doc);
 338: }
 339: 
 340: //Repasse en brouillon un article et ses descendants (modifier la bibliothèque lsTools si modifié)
 341: function brouillon(doc)
 342: {
 343: 	var unid = doc.getUniversalID();
 344: 	var vue = database.getView("va_$ArticlesTousParent");
 345: 	var collFils = vue.getAllDocumentsByKey(unid,true);
 346: 	var fils = collFils.getFirstDocument();
 347: 	var tmpFils = null;
 348: 	while(fils != null)
 349: 	{
 350: 		tmpFils = collFils.getNextDocument(fils);
 351: 		brouillon(fils);
 352: 		fils = tmpFils;
 353: 	}
 354: 
 355: 	doc.replaceItemValue("fl_DatePublication","");
 356: 	doc.replaceItemValue("fl_HeurePublication","");
 357: 	doc.replaceItemValue("fl_DateHeurePublication","");
 358: 	doc.replaceItemValue("fl_UtilisateurPublication","");
 359: 	
 360: 	doc.replaceItemValue("fl_DateExpiration","");
 361: 	doc.replaceItemValue("fl_HeureExpiration","");
 362: 	doc.replaceItemValue("fl_DateHeureExpiration","");
 363: 	doc.replaceItemValue("fl_UtilisateurExpiration","");
 364: 	doc.replaceItemValue("fl_MailExpirationEnvoye", "");
 365: 	
 366: 	doc.replaceItemValue("fl_Statut","0");
 367: 	majDroits(doc);
 368: }
 369: 
 370: //Expire un article et ses descendants (modifier la bibliothèque lsTools si modifié)
 371: function expirer(doc)
 372: {
 373: 	var unid = doc.getUniversalID();
 374: 	var vue = database.getView("va_$ArticlesTousParent");
 375: 	var collFils = vue.getAllDocumentsByKey(unid,true);
 376: 	var fils = collFils.getFirstDocument();
 377: 	var tmpFils = null;
 378: 	while(fils != null)
 379: 	{
 380: 		tmpFils = collFils.getNextDocument(fils);
 381: 		expirer(fils);
 382: 		fils = tmpFils;
 383: 	}
 384: 
 385: 	var maintenant:NotesDateTime = session.createDateTime("Today");
 386: 	doc.replaceItemValue("fl_DateExpiration",maintenant.getDateOnly());
 387: 	
 388: 	maintenant.setNow();
 389: 	doc.replaceItemValue("fl_DateHeureExpiration",maintenant);
 390: 	
 391: 	maintenant = session.createDateTime(maintenant.getTimeOnly());
 392: 	doc.replaceItemValue("fl_HeureExpiration",maintenant);
 393: 	
 394: 	doc.replaceItemValue("fl_UtilisateurExpiration",@UserName());
 395: 	doc.replaceItemValue("fl_Statut","2");
 396: 	majDroits(doc);
 397: }
 398: 
 399: //Supprime récursivement un article et ses descendants
 400: function supprimer(doc)
 401: {
 402: 	var unid = doc.getUniversalID();
 403: 	var vue = database.getView("va_$ArticlesTousParent");
 404: 	var collFils = vue.getAllDocumentsByKey(unid,true);
 405: 	var fils = collFils.getFirstDocument();
 406: 	var tmpFils = null;
 407: 	while(fils != null)
 408: 	{
 409: 		tmpFils = collFils.getNextDocument(fils);
 410: 		supprimer(fils);
 411: 		fils = tmpFils;
 412: 	}
 413: 	var maintenant = session.createDateTime("Today");
 414: 	maintenant.setNow();
 415: 	doc.replaceItemValue("fl_DateHeureSuppression",maintenant);
 416: 	doc.replaceItemValue("fl_UtilisateurSuppression",@UserName());
 417: 	doc.remove(true);
 418: }
 419: 
 420: //Fonction exécutée avant l'enregistrement d'un article
 421: function querySaveArticle()
 422: {
 423: 	if(article.getItemValue("fl_Type").equals("2"))
 424: 	{
 425: 		article.replaceItemValue("fl_UNIDNiveau1", "");
 426: 		article.replaceItemValue("fl_UNIDNiveau2", "");
 427: 		article.replaceItemValue("fl_UNIDNiveau3", "");
 428: 		article.replaceItemValue("fl_UNIDNiveau4", "");
 429: 		article.replaceItemValue("fl_UNIDNiveau5", "");
 430: 	}
 431: }
 432: 
 433: //Fonction exécutée après l'enregistrement d'un article
 434: function postSaveArticle()
 435: {
 436: 	majDroits(article.getDocument());
 437: }
 438: 
 439: //Met à jour récursivement les droits sur le document et ses descendants (modifier la bibliothèque lsTools si modifié)
 440: function majDroits(doc)
 441: {
 442: 	var unid = doc.getUniversalID();
 443: 	var vue = database.getView("va_$ArticlesTousParent");
 444: 	var collFils = vue.getAllDocumentsByKey(unid, true);
 445: 	var fils = collFils.getFirstDocument();
 446: 	var tmpFils = null;
 447: 	
 448: 	while(fils != null)
 449: 	{
 450: 		tmpFils = collFils.getNextDocument(fils);
 451: 
 452: 		//Mise à jour des sites et promotions
 453: 		if(!fils.getItemValueString("fl_Site").equals(doc.getItemValueString("fl_Site")))
 454: 		{
 455: 			fils.replaceItemValue("fl_Site", doc.getItemValueString("fl_Site"));
 456: 			fils.replaceItemValue("fl_Promotion", doc.getItemValueString("fl_Promotion"));
 457: 		}
 458: 		else if(!doc.getItemValueString("fl_Promotion").equals("TOUS"))
 459: 		{
 460: 			fils.replaceItemValue("fl_Promotion", doc.getItemValueString("fl_Promotion"))
 461: 		}
 462: 
 463: 		majDroits(fils);
 464: 		fils = tmpFils;
 465: 	}
 466: 
 467: 	var roles = new Array("[Admin]", "[Contributeur]");
 468: 	var statut = doc.getItemValueString("fl_Statut");
 469: 	doc.replaceItemValue("fl_AuteursRoles", roles);
 470: 	
 471: 	//Si des droits existent au niveau 1
 472: 	vue = database.getView("va_$ParamNiveaux1UNID");
 473: 	var n1:NotesDocument = vue.getDocumentByKey(doc.getItemValueString("fl_UNIDNiveau1"), true);
 474: 	if (n1 != null && n1.getItemValueString("fl_Masquer").equals("2"))
 475: 	{
 476: 		doc.replaceItemValue("fl_AuteursEtudiants", "");
 477: 		switch(statut)
 478: 		{
 479: 			case "1": //publié
 480: 				doc.replaceItemValue("fl_Lecteurs", n1.getItemValue("fl_Lecteurs"));
 481: 				break;
 482: 			default: //brouillon ou expiré
 483: 				doc.replaceItemValue("fl_Lecteurs", roles);
 484: 			break;
 485: 		}
 486: 	}
 487: 	else //Pas de droits au niveau 1
 488: 	{
 489: 		switch(doc.getItemValueString("fl_Type"))
 490: 		{
 491: 		case "1": //Article normal
 492: 			doc.replaceItemValue("fl_AuteursEtudiants", "");
 493: 			switch(statut)
 494: 			{
 495: 			case "1": //publié
 496: 				doc.replaceItemValue("fl_Lecteurs", "");
 497: 				break;
 498: 			default: //brouillon ou expiré
 499: 				doc.replaceItemValue("fl_Lecteurs", roles);
 500: 			break;
 501: 			}
 502: 			break;
 503: 	
 504: 		case "2": //Actualité
 505: 			doc.replaceItemValue("fl_AuteursEtudiants", "");
 506: 			var lecteurs = new Array();
 507: 			switch(statut)
 508: 			{
 509: 			case "1": //publié
 510: 				if (!doc.getItemValueString("fl_AccesConnecte").equals("1"))
 511: 				{
 512: 					doc.replaceItemValue("fl_Site", "TOUS");
 513: 					doc.replaceItemValue("fl_Promotion", "TOUS");
 514: 					doc.replaceItemValue("fl_Lecteurs", "");
 515: 				}
 516: 				else
 517: 				{
 518: 					if (doc.getItemValueString("fl_Site").equals("TOUS") && doc.getItemValueString("fl_Promotion").equals("TOUS"))
 519: 					{
 520: 						lecteurs.push("SDE_GROUPE_ETUDIANTS");
 521: 					}
 522: 					else if(!doc.getItemValueString("fl_Promotion").equals("TOUS"))
 523: 					{
 524: 						lecteurs.push("SDE_GROUPE_"+doc.getItemValueString("fl_Site")+"_"+doc.getItemValueString("fl_Promotion"));
 525: 					}
 526: 					else if(!doc.getItemValueString("fl_Site").equals("TOUS"))
 527: 					{
 528: 						lecteurs.push("SDE_GROUPE_"+doc.getItemValueString("fl_Site"));
 529: 					}
 530: 					
 531: 					if(lecteurs.length > 0)
 532: 					{
 533: 						lecteurs.push("[Personnel]");
 534: 						doc.replaceItemValue("fl_Lecteurs",lecteurs);
 535: 					}
 536: 					else
 537: 						doc.replaceItemValue("fl_Lecteurs","");
 538: 				}
 539: 				break;
 540: 			default: //brouillon ou expiré
 541: 				doc.replaceItemValue("fl_Lecteurs", roles);
 542: 			break;
 543: 			}
 544: 			break;
 545: 	
 546: 		case "3": //Article promotion
 547: 			var lecteurs = new Array();
 548: 	
 549: 			switch(statut)
 550: 			{
 551: 			case "1": //publié
 552: 				if(!doc.getItemValueString("fl_Promotion").equals("TOUS"))
 553: 					lecteurs.push("SDE_GROUPE_"+doc.getItemValueString("fl_Site")+"_"+doc.getItemValueString("fl_Promotion"));//.replace(" ","_"));
 554: 				else if(!doc.getItemValueString("fl_Site").equals("TOUS"))
 555: 					lecteurs.push("SDE_GROUPE_"+doc.getItemValueString("fl_Site"));
 556: 	
 557: 				if(lecteurs.length > 0)
 558: 				{
 559: 					lecteurs.push("[Personnel]");
 560: 					doc.replaceItemValue("fl_Lecteurs",lecteurs);
 561: 				}
 562: 				else
 563: 					doc.replaceItemValue("fl_Lecteurs","");
 564: 				break;
 565: 			default: //brouillon ou expiré
 566: 				doc.replaceItemValue("fl_Lecteurs",roles);
 567: 			break;
 568: 			}
 569: 			break;
 570: 		}
 571: 	}
 572: 	doc.save();
 573: }
 574: 
 575: //Retourne la liste des articles qui sont au même niveau d'arborescence que l'article courant
 576: function getArticlesConnexes()
 577: {
 578: 	var vue = null;
 579: 	var vueEntries = null;
 580: 	var unid5 = article.getItemValueString("fl_UNIDNiveau5");
 581: 	var unid4 = article.getItemValueString("fl_UNIDNiveau4");
 582: 	var unid3 = article.getItemValueString("fl_UNIDNiveau3");
 583: 	var unid2 = article.getItemValueString("fl_UNIDNiveau2");
 584: 	var unid1 = article.getItemValueString("fl_UNIDNiveau1");
 585: 
 586: 	if(article.getItemValueString("fl_Type").equals("2"))
 587: 	{
 588: 		if(unid1.equals("ACCUEIL"))
 589: 		{
 590: 			vue = database.getView("va_$ActualitesAccueilCategorie");
 591: 			vueEntries = vue.getAllEntriesByKey(article.getItemValueString("fl_CategorieActualite"), true);
 592: 			removeUNIDFromConnexes(vueEntries,article);
 593: 		}
 594: 		else
 595: 		{
 596: 			vue = database.getView("va_$ActualitesSiteCategorie");
 597: 			vueEntries = vue.getAllEntriesByKey(getArborescence(false), true);
 598: 			removeUNIDFromConnexes(vueEntries,article);
 599: 		}
 600: 		return vueEntries;
 601: 	}
 602: 
 603: 	if(!unid5.isEmpty() && !unid4.isEmpty() && !unid3.isEmpty() && !unid2.isEmpty() && !unid1.isEmpty())
 604: 	{
 605: 		vue = database.getView("va_$ArticlesNiveau5Actifs");
 606: 		vueEntries = vue.getAllEntriesByKey(unid1+"$$"+unid2+"$$"+unid3+"$$"+unid4+"$$"+unid5, true);
 607: 		removeUNIDFromConnexes(vueEntries,article);
 608: 		return vueEntries;
 609: 	}
 610: 	
 611: 	if(!unid4.isEmpty() && !unid3.isEmpty() && !unid2.isEmpty() && !unid1.isEmpty())
 612: 	{
 613: 		vue = database.getView("va_$ArticlesNiveau4Actifs");
 614: 		vueEntries = vue.getAllEntriesByKey(unid1+"$$"+unid2+"$$"+unid3+"$$"+unid4, true);
 615: 		removeUNIDFromConnexes(vueEntries,article);
 616: 		return vueEntries;
 617: 	}
 618: 
 619: 	if(!unid3.isEmpty() && !unid2.isEmpty() && !unid1.isEmpty())
 620: 	{
 621: 		vue = database.getView("va_$ArticlesNiveau3Actifs");
 622: 		vueEntries = vue.getAllEntriesByKey(unid1+"$$"+unid2+"$$"+unid3, true);
 623: 		removeUNIDFromConnexes(vueEntries,article);
 624: 		return vueEntries;
 625: 	}
 626: 
 627: 	if(!unid2.isEmpty() && !unid1.isEmpty())
 628: 	{
 629: 		vue = database.getView("va_$ArticlesNiveau2Actifs");
 630: 		vueEntries = vue.getAllEntriesByKey(unid1+"$$"+unid2, true);
 631: 		removeUNIDFromConnexes(vueEntries,article);
 632: 		return vueEntries;
 633: 	}
 634: 
 635: 	if(!unid1.isEmpty())
 636: 	{
 637: 		vue = database.getView("va_$ArticlesNiveau1Actifs");
 638: 		vueEntries = vue.getAllEntriesByKey(unid1, true);
 639: 		removeUNIDFromConnexes(vueEntries,article);
 640: 		return vueEntries;
 641: 	}
 642: }
 643: 
 644: //Retourne l'url du fichier contenu dans un champ
 645: function getAttachmentUrl(fileItem)
 646: { 
 647: 	if(fileItem==null) 
 648: 		return "#";
 649: 
 650: 	var fileName=fileItem.getName();
 651: 
 652: 	if(fileName==null || fileName=="")
 653: 	{
 654: 		return fileItem.getHref();
 655: 	}
 656: 	else
 657: 	{
 658: 		var docId=article.getDocument().getUniversalID();
 659: 		return webDbName()+"/0/"+docId+"/$File/"+fileName+"?Open";
 660: 	} 
 661: }
 662: 
 663: //Change le mot de passe de l'utilisateur
 664: function changeUserPassword(newPassword)
 665: {
 666: 	var hashPwd = session.hashPassword(newPassword);
 667: 	user.setValue("fl_ChangerMotDePasse", "");
 668: 	user.setValue("HTTPPassword", hashPwd);
 669: 	user.setValue("HTTPPasswordChangeDate", @Now());
 670: 	user.setValue("HTTPPasswordClear", "");
 671: 	user.setValue("HTTPPasswordGenerationDate", "");
 672: 	user.save();
 673: }
 674: 
 675: //Lance l'agent pour la fonction "Oubli de mot de passe"
 676: function forgottenPassword(email)
 677: {
 678: 	var agent = database.getAgent("aa_MotDePasseOublie");
 679: 	var tempDoc = database.createDocument();
 680: 	tempDoc.replaceItemValue("Form", "fa_MotDePasseOublie");
 681: 	tempDoc.replaceItemValue("fl_Email", email);
 682: 	tempDoc.replaceItemValue("$PublicAccess","1");
 683: 	tempDoc.save();
 684: 	agent.run(tempDoc.getNoteID());
 685: }
 686: 
 687: //Lance l'agent pour la fonction "Créer nouveau de mot de passe"
 688: function createNewPassword(newPassword)
 689: {
 690: 	var agent = database.getAgent("aa_CreerNouveauMotDePasse");
 691: 	var tempDoc = database.createDocument();
 692: 	tempDoc.replaceItemValue("Form", "fa_MotDePasseCreer");
 693: 	tempDoc.replaceItemValue("fl_Password", newPassword);
 694: 	tempDoc.replaceItemValue("fl_IDDemande", context.getUrlParameter("documentId"))
 695: 	tempDoc.replaceItemValue("$PublicAccess","1");
 696: 	tempDoc.save();
 697: 	agent.run(tempDoc.getNoteID());
 698: }
 699: 
 700: //Retourne l'url de l'article
 701: function getLienArticle(idDoc, action)
 702: {
 703: 	var doc:NotesDocument = null;
 704: 	var racine = webDbName();
 705: 	
 706: 	if(idDoc == null || idDoc.isEmpty())
 707: 		return racine + "/Index.xsp?page=Erreur";
 708: 	
 709: 	doc = getDocumentById(idDoc);
 710: 	if(doc!=null)
 711: 	{
 712: 		var lecteurs = doc.getItemValue("fl_Lecteurs");
 713: 		var login = "";
 714: 		if(!lecteurs.isEmpty())
 715: 			login = "&login";
 716: 		
 717: 		if(doc.hasItem("fl_ID") && !doc.getItemValueString("fl_ID").isEmpty())
 718: 			return racine + "/Index.xsp?page=Article&documentId="+doc.getItemValueString("fl_ID")+"&action="+action+"Document"+login;
 719: 		else
 720: 			return racine + "/Index.xsp?page=Article&documentId="+doc.getUniversalID()+"&action="+action+"Document"+login;
 721: 	}
 722: 	else
 723: 		return racine + "/Index.xsp?page=Erreur";
 724: }
 725: 
 726: function getDocumentById(idDoc)
 727: {
 728: 	var vue = database.getView("va_$DocumentsTousUNID");
 729: 	return vue.getDocumentByKey(idDoc, true);
 730: }
 731: 
 732: function updateOrder(idDoc, ordre)
 733: {
 734: 	if(!isNaN(ordre))
 735: 	{
 736: 		var doc = getDocumentById(idDoc);
 737: 		if(doc != null)
 738: 		{
 739: 			doc.replaceItemValue("fl_Ordre", @Integer(ordre))
 740: 			doc.save();
 741: 		}
 742: 	}
 743: }
 744: 
 745: function getPageTitle()
 746: {
 747: 	var title = "";
 748: 	
 749: 	switch(context.getUrlParameter("page"))
 750: 	{
 751: 		case "Accueil":
 752: 			title = "";
 753: 		break;
 754: 		case "Actualites":
 755: 			title = "Toutes les actualités";
 756: 		break;
 757: 		case "Annuaire":
 758: 			title = "Annuaire";
 759: 		break;
 760: 		case "Article":
 761: 			var unid = context.getUrlParameter("documentId");
 762: 			if (unid == "")
 763: 				title = "Création d'une nouvelle page";
 764: 			else
 765: 			{
 766: 				var docArticle:NotesDocument = getDocumentById(unid);
 767: 				if(docArticle.isNewNote())
 768: 					title = "Création d'une nouvelle page";
 769: 				else
 770: 				{
 771: 					var niveau = "";
 772: 					var niveaux:Array = new Array();
 773: 					if(!docArticle.getItemValueString("fl_UNIDNiveau1").equals("ACCUEIL"))
 774: 					{
 775: 						niveau = @DbLookup(@DbName(),"va_$ParamNiveaux1UNID",docArticle.getItemValueString("fl_UNIDNiveau1"),2);
 776: 						if (!@IsError(niveau) && niveau != null && niveau != "")
 777: 							niveaux.push(niveau);
 778: 					}
 779: 						
 780: 					for(var index=2; index<5; index++)
 781: 					{
 782: 						var cle=docArticle.getItemValueString("fl_UNIDNiveau1");
 783: 						for(var i=2; i<=index; i++)
 784: 						{
 785: 							if(docArticle.getItemValueString("fl_UNIDNiveau"+i)!="")
 786: 								cle = cle+"$$"+docArticle.getItemValueString("fl_UNIDNiveau"+i);
 787: 						}
 788: 						niveau = @DbLookup(@DbName(),"va_$ArticlesNiveau"+index+"UNID",cle,2);
 789: 						if (!@IsError(niveau) && niveau != null && niveau != "")
 790: 							niveaux.push(niveau);
 791: 					}
 792: 					niveau = docArticle.getItemValueString("fl_Titre");
 793: 					if (!@IsError(niveau) && niveau != null && niveau != "")
 794: 						niveaux.push(niveau);
 795: 					title = niveaux.join(" | ");
 796: 				}
 797: 			}
 798: 		break;
 799: 		case "Compte":
 800: 			title = "Mon compte";
 801: 		break;
 802: 		case "Organisation":
 803: 			title = "Arborescence";
 804: 		break;
 805: 		case "Password":
 806: 			title = "Créer un nouveau mot de passe";
 807: 		break;
 808: 		case "Plan":
 809: 			title = "Plan du site";
 810: 		break;
 811: 	}
 812: 	if (title != "")
 813: 		return database.getTitle()+" | "+title;
 814: 	else
 815: 		return database.getTitle();
 816: }
 817: 
 818: function getOptionsOrganisation(index, niveau)
 819: {
 820: 	var value = @TextToNumber(niveau.split("|")[2]);
 821: 	var count = getComponent("repeat" + index).getRowCount();
 822: 	var options = "";
 823: 	
 824: 	for (var i = 1; i <= count; i++)
 825: 		options += "<option value='" + i + "'" + (value == i ? " selected" : "") + ">" + i + "</option>";
 826: 	
 827: 	return options;
 828: }
 829: 
 830: function selectOnChange(niveau)
 831: {
 832: 	var idEvent = getComponent("changeOrganisation").getClientId(facesContext);
 833: 	var idRefresh = getComponent("table_admin").getClientId(facesContext);
 834: 
 835: 	return "changeOrganisation(this, '" + idEvent + "', '" + idRefresh + "', '" + niveau.replace("'", "\\'") + "');";
 836: }
 837: 
 838: function getImageLien(niveau)
 839: {
 840: 	var pasdentree = niveau.split("|")[4];
 841: 	var pasdelien = niveau.split("|")[3];
 842: 
 843: 	if (pasdentree == "1")
 844: 		return "/eye-hidden.png";
 845: 
 846: 	if (pasdelien == "1")
 847: 		return "/eye.png";
 848: 		
 849: 	return "/one-finger-click.png";
 850: }
 851: 
 852: function niveau1Limite(doc)
 853: {
 854: 	vue = database.getView("va_$ParamNiveaux1UNID");
 855: 	var n1:NotesDocument = vue.getDocumentByKey(doc.getItemValueString("fl_UNIDNiveau1"), true);
 856: 	if (n1 != null && n1.getItemValueString("fl_Masquer").equals("2"))
 857: 	{
 858: 		return n1.getItemValue("fl_Lecteurs");
 859: 	}
 860: 	else
 861: 	{
 862: 		return "";
 863: 	}
 864: }

Trace de pile