--- /dev/null
+/*
+Copyright (c) Igor Barma, Alexandre Desoubeaux, Christian Martel, Eric Brun, Mathieu Amblard, Gwenael Gevet, Pierre Guillot, 2012
+ * Copyright Alexandre Desoubeaux, Christian Martel, Cedric Lecarpentier, Alexandre Lefevre, Marc Salvat 2014-2016
+ * Copyright Alexandre Desoubeaux, Christian Martel, Cedric Lecarpentier, Marc Salvat, Marc Suarez, Harifetra Ramamonjy 2017
+For licensing, see README.txt or http://www.pentilanero.com (Cecill-C or AGPL or LGPL)
+*/
+Ext.ns("EntSavoie.InternalMessaging");
+EntSavoie.InternalMessaging.ImTreeFolder = function (config) {
+ Ext.apply(this, config);
+
+ // Ajoute le texte des erreurs
+ Ext.QuickTips.init();
+ // turn on validation errors beside the field globally
+ Ext.form.Field.prototype.msgTarget = 'side';
+
+ this.entityNode = null;
+
+ // Définition des composants graphiques
+ this.treeLoader = this.treeLoader || new Ext.tree.TreeLoader({
+ dataUrl: this.renderURLAjax+'&jspPage=%2Fajax%2FlistFolders.jsp'
+ });
+
+ this.addFolderBtn = this.addFolderBtn || new Ext.Button({
+ tooltip: this.i18n.InternalMessaging.ImTreeFolder.treeFolderPanel.addButtonTP,
+ iconCls: 'folder-add',
+ hidden: true,
+ handler: this.onAddFolderMessage,
+ scope: this
+ });
+
+ this.deleteFolderBtn = this.deleteFolderBtn || new Ext.Button({
+ tooltip: this.i18n.InternalMessaging.ImTreeFolder.treeFolderPanel.delButtonTP,
+ iconCls: 'folder-delete',
+ hidden: true,
+ handler: this.onDeleteFolderMessage,
+ scope: this
+ });
+
+ this.modifyFolderBtn = this.modifyFolderBtn || new Ext.Button({
+ tooltip: this.i18n.InternalMessaging.ImTreeFolder.treeFolderPanel.modifyButtonTP,
+ iconCls: 'folder-modify',
+ hidden: true,
+ handler: this.onModifyFolderMessage,
+ scope: this
+ });
+
+ this.treeFolderPanel = this.treeFolderPanel || new Ext.tree.TreePanel({
+ border: false,
+ useArrows: true,
+ autoScroll: true,
+ animate: true,
+ enableDD: true,
+ ddGroup: 'changeFolderDD',
+ containerScroll: true,
+ loader: this.treeLoader,
+ rootVisible: false,
+ root: {
+ nodeType: 'async',
+ text: this.i18n.InternalMessaging.ImTreeFolder.treeFolderPanel.rootNodeText, // Texte du noeud
+ draggable: false, // Désactiver le Drag and drop sur ce noeud
+ id: "rootNode", // Id du rootNodePah
+ leaf: false,
+ order: 0
+ },
+ bbar: [
+ this.addFolderBtn,
+ this.deleteFolderBtn,
+ this.modifyFolderBtn
+ ]
+ });
+
+ this.treeSorter = this.treeSorter || new Ext.tree.TreeSorter(this.treeFolderPanel, {
+ folderSort : false,
+ dir : "asc",
+ caseSensitive: false,
+ sortType: function(node) {
+ return node.order;
+ }
+ });
+
+ this.addTextField = this.addTextField || new Ext.form.TextField({
+ fieldLabel: this.i18n.InternalMessaging.ImTreeFolder.addFolderMessage.fieldLabel,
+ name: 'folderMessageName',
+ allowBlank: false,
+ width: 200,
+ labelStyle: 'padding: 0 0 0 0'
+ });
+
+ this.addFolderMessageWindowForm = new Ext.FormPanel({
+ labelWidth: 150,
+ url:this.actionURLAjax,
+ bodyBorder: false,
+ border: false,
+ bodyStyle:'padding:5px 5px 0',
+ height: 120,
+ width: 400,
+ monitorValid:true,
+ layout: 'form',
+ items: [this.addTextField],
+ buttons: [{
+ text: this.i18n.InternalMessaging.ImTreeFolder.addFolderMessage.addButton,
+ handler: this.onAddFolderMessageAction,
+ formBind:true,
+ scope: this
+ },{
+ text: this.i18n.InternalMessaging.ImTreeFolder.addFolderMessage.cancelButton,
+ handler: this.onAddFolderMessageCancel,
+ scope: this
+ }]
+ });
+
+ this.addFolderMessageWindow = new Ext.Window({
+ cls: "internalMessaging-portlet",
+ layout:'fit',
+ modal:true,
+ height: 120,
+ width: 400,
+ closeAction:'hide',
+ plain: true,
+ title: this.i18n.InternalMessaging.ImTreeFolder.addFolderMessage.title,
+ items: this.addFolderMessageWindowForm
+ });
+
+ this.modifyTextField = this.modifyTextField || new Ext.form.TextField({
+ fieldLabel: this.i18n.InternalMessaging.ImTreeFolder.modifyFolderMessage.fieldLabel,
+ name: 'folderMessageName',
+ allowBlank: false,
+ width: 200,
+ labelStyle: 'padding: 0 0 0 0'
+ });
+
+ this.modifyFolderMessageWindowForm = new Ext.FormPanel({
+ labelWidth: 150,
+ url:this.actionURLAjax,
+ bodyBorder: false,
+ border: false,
+ bodyStyle:'padding:5px 5px 0',
+ height: 120,
+ width: 400,
+ monitorValid:true,
+ layout: 'form',
+ items:[this.modifyTextField],
+ buttons: [{
+ text: this.i18n.InternalMessaging.ImTreeFolder.modifyFolderMessage.modifyButton,
+ handler: this.onModifyFolderMessageAction,
+ formBind:true,
+ scope: this
+ },{
+ text: this.i18n.InternalMessaging.ImTreeFolder.modifyFolderMessage.cancelButton,
+ handler: this.onModifyFolderMessageCancel,
+ scope: this
+ }]
+ });
+
+ this.modifyFolderMessageWindow = new Ext.Window({
+ cls: "internalMessaging-portlet",
+ layout:'fit',
+ modal:true,
+ height: 120,
+ width: 400,
+ closeAction:'hide',
+ plain: true,
+ title: this.i18n.InternalMessaging.ImTreeFolder.modifyFolderMessage.title,
+ items: this.modifyFolderMessageWindowForm
+ });
+
+ this.addFolderRightClick = this.addFolderRightClick || new Ext.menu.Item({
+ text: "Ajouter un dossier",
+ handler: this.onAddFolderMessage,
+ iconCls: 'folder-add',
+ scope: this
+ });
+
+ this.deleteFolderRightClick = this.deleteFolderRightClick || new Ext.menu.Item({
+ text: "Supprimer",
+ handler: this.onDeleteFolderMessage,
+ iconCls: 'folder-delete',
+ scope: this
+ });
+
+ this.modifyFolderRightClick = this.modifyFolderRightClick || new Ext.menu.Item({
+ text: "Renommer",
+ handler: this.onModifyFolderMessage,
+ iconCls: 'folder-modify',
+ scope: this
+ });
+
+ // Menu clic droit
+ this.rightClickMenu = this.rightClickMenu || new Ext.menu.Menu({
+ cls: "internalMessaging-portlet",
+ items: [
+ this.addFolderRightClick,
+ this.deleteFolderRightClick,
+ this.modifyFolderRightClick
+ ]
+ });
+
+ EntSavoie.InternalMessaging.ImTreeFolder.superclass.constructor.call(this, {
+ title: this.i18n.InternalMessaging.ImTreeFolder.constructor.title,
+ border: false,
+ style: "border-right: solid 1px #99BBE8;",
+ layout: "fit",
+ items: [
+ this.treeFolderPanel
+ ]
+ });
+
+ // Définition des listeners
+ this.treeLoader.on("load", this.onTreeLoaderLoad, this);
+ this.treeFolderPanel.on("click", this.onClickTreePanel, this);
+ this.treeFolderPanel.on("movenode", this.onMoveNodeTreePanel, this);
+ this.treeFolderPanel.on("beforenodedrop", this.onBeforeNodeDrop, this);
+ this.treeFolderPanel.on("nodedragover", this.onDragOver, this);
+ this.treeFolderPanel.on("contextmenu", this.onContextMenuTreeFolderPanel, this);
+
+};
+
+Ext.extend(EntSavoie.InternalMessaging.ImTreeFolder, Ext.Panel, {
+ initComponent: function () {
+ EntSavoie.InternalMessaging.ImTreeFolder.superclass.initComponent.call(this);
+ },
+
+ /**
+ * Chargement du treeLoader
+ */
+ onTreeLoaderLoad : function(tl, node, response) {
+ if (node.id == "rootNode") {
+
+ // On vient de chercher un item rss
+ if(this.rssItemId>0){
+ // On charge les chanels pour pouvoir selectionner le bon
+ this.treeFolderPanel.getNodeById("rootNode/RSS").expand();
+ } else {
+ // on charge le root donc on selectionne la boite reception par defaut
+ this.entityNode = this.treeFolderPanel.getNodeById("rootNode/INBOXES");
+ this.treeFolderPanel.getNodeById("rootNode/INBOXES").select();
+
+ this.mainContainer.gridMessagesView.refreshGrid(this.entityNode);
+
+ }
+ } else if(node.id == "rootNode/RSS"){
+ if(this.rssItemId>0){
+ // on selectionne le chanel de l'item de la recherche
+ this.entityNode = this.treeFolderPanel.getNodeById("rootNode/RSS/" + this.chanelId);
+ this.entityNode.select();
+
+ this.rssItemId = 0;
+ this.chanelId = 0;
+
+ this.mainContainer.gridMessagesView.refreshGrid(this.entityNode);
+ }
+ }
+ },
+
+ /**
+ * Drag over a node
+ */
+ onDragOver: function(event) {
+
+
+ if (event.dropNode != null) {
+ //On déplace un folder
+ if (event.target.attributes.folderType != event.dropNode.attributes.folderType ||
+ event.target.attributes.folderId == 0 ||
+ event.target.attributes.id.search("rootNode/INBOXES") == 0) {
+ return false;
+ }
+ }
+ else {
+
+ if (event.point != "append") {
+ return false;
+ }
+ for (i = 0; i < event.data.selections.length; i++) {
+ var mesType = event.data.selections[i].data['type'];
+ if (mesType != event.target.attributes.folderType) {
+ return false;
+ }
+ if (mesType == "mail" && (event.data.selections[i].data['accountId'] != event.target.attributes.accountId)) {
+ return false;
+ }
+ }
+ }
+ },
+
+ /**
+ * Clic sur le TreePanel
+ */
+ onClickTreePanel: function(n, e) {
+ // Stockage du noeud sélectionné
+ this.entityNode = n;
+
+ // Si on ne peut pas ajouter de sous-dossier, on masque le bouton add
+ if (n.attributes.isAddable==false) {
+ this.addFolderBtn.hide();
+ }
+ else {
+ this.addFolderBtn.show();
+ }
+
+ // Si le dossier n'est pas supprimable, on cache le bouton de suppression et de modification
+ if (n.attributes.isDeletable==false) {
+ this.deleteFolderBtn.hide();
+ this.modifyFolderBtn.hide();
+ }
+ else {
+ this.deleteFolderBtn.show();
+ this.modifyFolderBtn.show();
+ }
+
+ this.treeFolderPanel.doLayout();
+
+ // on affiche la liste des messages
+ this.mainContainer.gridMessagesView.refreshGrid(n);
+
+ },
+
+ /**
+ * Déplacement d'un dossier dans le TreePanel
+ */
+ onMoveNodeTreePanel: function(tree, node, oldParent, newParent, index){
+
+ node.attributes.order = index;
+ Ext.Ajax.request({
+ url: this.actionURLAjax,
+ params: {
+ cmd: "moveNode",
+ nodeId: node.id,
+ parentFolderId: newParent.attributes.folderId,
+ folderId: node.attributes.folderId,
+ index: index
+ },
+ scope: this,
+ success: this.onSuccessMoveNode,
+ failure: this.onFailureMoveNode
+ });
+ },
+
+ onSuccessMoveNode: function(response, options) {
+ // Déplacement bien réalisé, on ne fait rien
+ },
+ onFailureMoveNode: function(response, options) {
+ Ext.MessageBox.alert(this.i18n.InternalMessaging.ImTreeFolder.messageBox.attention, this.i18n.InternalMessaging.ImTreeFolder.messageBox.dysfonctionnementDeplacement, function(btn){});
+ },
+
+ /**
+ * Drop d'un ou plusieurs messages sur un dossier
+ */
+ onBeforeNodeDrop: function(e) {
+ if (e.data.selections) {
+ var storeMessage = this.mainContainer.gridMessagesView.message_store;
+ // Id du dossier cible
+ var targetFolderId = e.target.attributes.folderId;
+ var targetFolderMessageId = e.target.id;
+
+ if (targetFolderId != this.entityNode.attributes.folderId) {
+ var arrayMessageId = [];
+ var nbMessageNew = 0;
+
+ for (i = 0; i < e.data.selections.length; i++) {
+ var mesId = e.data.selections[i].data['id'];
+ // on supprime du store
+ storeMessage.remove(storeMessage.getById(mesId));
+ arrayMessageId.push(mesId);
+ // Si le message est non lu, incrémentation du nombre de messages non lu de 1
+ if (e.data.selections[i].data['isNew']) {
+ nbMessageNew = nbMessageNew + 1;
+ }
+ }
+
+ if (storeMessage.getCount()>0) {
+ this.mainContainer.gridMessagesView.selectedRecord = storeMessage[0];
+ this.mainContainer.gridMessagesView.messageGrid.getSelectionModel().selectFirstRow();
+ this.mainContainer.gridMessagesView.onCellclickMessageGrid(this.mainContainer.gridMessagesView.messageGrid, 0, 0, null);
+ }else {
+ // on affiche le message
+ this.mainContainer.messageItemView.resetInterface();
+ this.mainContainer.gridMessagesView.answerButton.disable();
+ this.mainContainer.gridMessagesView.answerAllButton.disable();
+ }
+
+ // Update du nombre de messages non lus dans les dossiers source et cible
+ this.updateUnreadDeplacement(targetFolderMessageId, this.entityNode.id, nbMessageNew);
+
+ Ext.Ajax.request({
+ url: this.actionURLAjax,
+ params: {
+ cmd: 'changeFolderMessage',
+ type: e.target.attributes.folderType,
+ folderMessageId: targetFolderId,
+ arrayMessageId: arrayMessageId
+ },
+ scope: this,
+ success: this.onSuccessChangeFolderMessage,
+ failure: this.onFailureChangeFolderMessage
+ });
+ }
+ }
+ },
+
+ onSuccessChangeFolderMessage: function(response, options) {
+ // Déplacement bien réalisé, on ne fait rien
+ },
+
+ onFailureChangeFolderMessage: function(response, options) {
+ Ext.MessageBox.alert(this.i18n.InternalMessaging.ImTreeFolder.messageBox.attention, this.i18n.InternalMessaging.ImTreeFolder.messageBox.dysfonctionnementChange, function(btn){});
+ },
+
+ /**
+ * Ajout d'un dossier
+ */
+ onAddFolderMessage: function() {
+ this.addFolderMessageWindow.show(this);
+ this.addTextField.setValue("");
+ },
+
+ onAddFolderMessageAction: function() {
+ Ext.Ajax.request({
+ url: this.actionURLAjax,
+ params: {
+ cmd: 'addFolderMessage',
+ folderMessageName: this.addTextField.getValue(),
+ parentFolderId: this.entityNode.attributes.folderId,
+ folderType: this.entityNode.attributes.folderType,
+ accountId: this.entityNode.attributes.accountId,
+ parentNodePath: this.entityNode.id
+ },
+ scope: this,
+ success: this.onSuccessAddFolderMessage,
+ failure: this.onFailureAddFolderMessage
+ });
+ },
+
+ onAddFolderMessageCancel : function() {
+ this.addFolderMessageWindow.hide();
+ },
+
+ onSuccessAddFolderMessage:function(response, options) {
+ this.addFolderMessageWindow.hide();
+ var backObj = Ext.decode(response.responseText);
+
+ if (backObj.success) {
+ var draggable = false;
+ if (backObj.folderType == "internalMessaging") {
+ draggable = true;
+ }
+
+ var newNode = new Ext.tree.TreeNode({id: backObj.id,
+ isAddable: true,
+ draggable: draggable,
+ folderId: backObj.folderId,
+ accountId: backObj.accountId,
+ folderType: backObj.folderType,
+ text: backObj.text,
+ type: backObj.type,
+ leaf: false,
+ order: backObj.order,
+ isDeletable: true,
+ iconCls: "folder",
+ originalText: backObj.text,
+ unRead: 0});
+
+ this.treeFolderPanel.getNodeById(this.entityNode.id).appendChild(newNode);
+ this.treeFolderPanel.getNodeById(this.entityNode.id).expand();
+ }
+ else {
+ Ext.MessageBox.alert(this.i18n.InternalMessaging.ImTreeFolder.messageBox.attention, this.i18n.InternalMessaging.ImTreeFolder.messageBox.dysfonctionnementCreation, function(btn){});
+ }
+ },
+
+ onFailureAddFolderMessage:function(response, options){
+ Ext.MessageBox.alert(this.i18n.InternalMessaging.ImTreeFolder.messageBox.attention, this.i18n.InternalMessaging.ImTreeFolder.messageBox.dysfonctionnementCreation, function(btn){});
+ },
+
+ /**
+ * Suppression d'un dossier
+ */
+ onDeleteFolderMessage: function() {
+ Ext.MessageBox.show({
+ title: this.i18n.InternalMessaging.ImTreeFolder.messageBox.delDossierTitle,
+ msg: this.i18n.InternalMessaging.ImTreeFolder.messageBox.delDossierMsg,
+ buttons: {yes:this.i18n.InternalMessaging.ImTreeFolder.messageBox.oui, cancel:this.i18n.InternalMessaging.ImTreeFolder.messageBox.non},
+ fn: this.remove_folderMessage_call,
+ animEl: 'confirmBtn',
+ icon: Ext.MessageBox.QUESTION,
+ minWidth: 350,
+ scope: this
+ });
+ },
+
+ remove_folderMessage_call: function(btn) {
+ if(btn=="cancel") {
+ return false;
+ }
+
+ Ext.Ajax.request({
+ url: this.actionURLAjax,
+ params: {
+ cmd: "removeFolderMessage",
+ folderMessageId: this.entityNode.attributes.folderId,
+ folderType: this.entityNode.attributes.folderType
+
+ },
+ scope: this,
+ success: this.onSuccessRemoveFolderMessage,
+ failure: this.onErrorRemoveFolderMessage
+ });
+ },
+
+ onSuccessRemoveFolderMessage: function(response, options) {
+ // Suppression du node supprime du tree
+ this.treeFolderPanel.getNodeById(this.entityNode.id).remove();
+ // Sélection de la boite de reception
+ this.entityNode = this.treeFolderPanel.getNodeById("rootNode/INBOXES");
+ this.treeFolderPanel.getNodeById("rootNode/INBOXES").select();
+
+ this.onClickTreePanel(this.entityNode, null);
+ },
+
+ onErrorRemoveFolderMessage: function(response, options){
+ Ext.MessageBox.alert(this.i18n.InternalMessaging.ImTreeFolder.messageBox.attention, this.i18n.InternalMessaging.ImTreeFolder.messageBox.dysfonctionnementSuppression, function(btn){});
+ },
+
+ /**
+ * Modification du nom du dossier
+ */
+ onModifyFolderMessage: function() {
+ this.modifyFolderMessageWindow.show(this);
+ this.modifyTextField.setValue(this.entityNode.text);
+ },
+
+ onModifyFolderMessageAction: function() {
+ Ext.Ajax.request({
+ url: this.actionURLAjax,
+ params: {
+ cmd: 'modifyFolderMessage',
+ folderMessageId: this.entityNode.attributes.folderId,
+ folderType: this.entityNode.attributes.folderType,
+ folderMessageName: this.modifyTextField.getValue()
+ },
+ scope: this,
+ success: this.onSuccessModifyFolderMessage,
+ failure: this.onFailureModifyFolderMessage
+ });
+ },
+
+ onModifyFolderMessageCancel : function() {
+ this.modifyFolderMessageWindow.hide();
+ },
+
+ onSuccessModifyFolderMessage:function(response, options) {
+ var backObj = Ext.decode(response.responseText);
+ if (!backObj.success) {
+ this.modifyFolderMessageWindow.hide();
+ Ext.MessageBox.alert(this.i18n.InternalMessaging.ImTreeFolder.messageBox.attention, this.i18n.InternalMessaging.ImTreeFolder.messageBox.dysfonctionnementIntitule, function(btn){});
+ }
+ else {
+ this.modifyFolderMessageWindow.hide();
+ var n = this.treeFolderPanel.getNodeById(this.entityNode.id);
+ var newDisplayName = this.modifyTextField.getValue();
+
+ n.setText(newDisplayName);
+ n.attributes.originalText = newDisplayName;
+ if (n.attributes.folderType == "mail") {
+ var newFullName = n.id.substring(0, n.id.lastIndexOf("/")) + "/" + newDisplayName;
+ n.setId(newFullName);
+ }
+
+ this.treeFolderPanel.getLoader().load(n);
+ }
+ },
+
+ onFailureModifyFolderMessage:function(response, options){
+ Ext.MessageBox.alert(this.i18n.InternalMessaging.ImTreeFolder.messageBox.attention, this.i18n.InternalMessaging.ImTreeFolder.messageBox.dysfonctionnementIntitule, function(btn){});
+ },
+
+ updateUnread: function(accountId) {
+
+ this.doUpdateUnread("rootNode/INBOXES", true);
+ if (accountId == 0) {
+ this.doUpdateUnread("rootNode/INBOXES/internalMessaging", false);
+ }
+ else {
+ this.doUpdateUnread("rootNode/INBOXES/" + accountId, false);
+ }
+
+ },
+
+
+ /**
+ * Update le nombre de messages non lu (soustrait 1)
+ */
+ doUpdateUnread: function(nodeId, synchroMailAwarness) {
+
+ node = this.treeFolderPanel.getNodeById(nodeId);
+
+ if (node != null) {
+ if (node.attributes.unRead<=0) {
+ return false;
+ }
+ node.attributes.unRead = node.attributes.unRead-1;
+ var suffixe = "";
+ if (node.attributes.unRead > 0) {
+ suffixe = " (" + node.attributes.unRead + ")";
+ }
+ node.setText(node.attributes.originalText + suffixe);
+
+ if (synchroMailAwarness) {
+ //MaJ les messages d'awareness au niveau du menu global
+ if (jQuery("#nav_entry_messagerie_sp").size()>0) {
+ var textElt = jQuery("#nav_entry_messagerie_sp");
+ if (node.attributes.unRead > 0) {
+ textElt.text("("+node.attributes.unRead+")");
+ }
+ else {
+ textElt.text("");
+ }
+ }
+ if (jQuery("#nav_entry_messagerie_side_sp").size()>0) {
+ var textElt = jQuery("#nav_entry_messagerie_side_sp");
+ if (node.attributes.unRead > 0) {
+ textElt.text(node.attributes.unRead);
+ textElt.attr("class", "notif");
+ }
+ else {
+ textElt.attr("class", "hide");
+ }
+ }
+ if (jQuery("#nav_entry_messagerie_top_sp").size()>0) {
+ var textElt = jQuery("#nav_entry_messagerie_top_sp");
+ if (node.attributes.unRead > 0) {
+ textElt.text(node.attributes.unRead);
+ textElt.attr("class", "notif");
+ }
+ else {
+ textElt.attr("class", "hide");
+ }
+ }
+
+ if(EntSavoie.FullScreen.fired()){
+ EntSavoie.FullScreen.updateMessagerieButton(node.attributes.unRead);
+ }
+ }
+ }
+ },
+
+ /**
+ * Update le nombre de messages non lu lors du déplacement d'un ou plusieurs messages dans un dossier
+ */
+ updateUnreadDeplacement: function(nodeIdTarget, nodeIdSource, nbMessageNew) {
+ // Traitement du dossier cible
+ var nodeTarget = this.treeFolderPanel.getNodeById(nodeIdTarget);
+
+ // Ajout du nombre de messages non lu au dossier cible
+ nodeTarget.attributes.unRead = nodeTarget.attributes.unRead+nbMessageNew;
+ var suffixe = "";
+ if (nodeTarget.attributes.unRead > 0) {
+ suffixe = " (" + nodeTarget.attributes.unRead + ")";
+ }
+ nodeTarget.setText(nodeTarget.attributes.originalText + suffixe);
+
+
+ //retire les messages d'awareness du menu global
+ if (jQuery("#nav_entry_messagerie_sp").size()>0) {
+ var textElt = jQuery("#nav_entry_messagerie_sp");
+ if (nodeTarget.attributes.unRead > 0) {
+ textElt.text("("+nodeTarget.attributes.unRead+")");
+ }
+ else {
+ textElt.remove();
+ }
+ }
+ if (jQuery("#nav_entry_messagerie_side_sp").size()>0) {
+ var textElt = jQuery("#nav_entry_messagerie_side_sp");
+ if (nodeTarget.attributes.unRead > 0) {
+ textElt.text(nodeTarget.attributes.unRead);
+ textElt.attr("class", "notif");
+ }
+ else {
+ textElt.attr("class", "hide");
+ }
+ }
+ if (jQuery("#nav_entry_messagerie_top_sp").size()>0) {
+ var textElt = jQuery("#nav_entry_messagerie_top_sp");
+ if (nodeTarget.attributes.unRead > 0) {
+ textElt.attr("class", "notif");
+ }
+ else {
+ textElt.attr("class", "hide");
+ }
+ }
+
+ // Traitement du dossier source
+ var nodeSource = this.treeFolderPanel.getNodeById(nodeIdSource);
+
+ if (nodeSource.attributes.unRead<=0) {
+ return false;
+ }
+
+ // Soustraction du nombre de messages non lu au dossier source
+ nodeSource.attributes.unRead = nodeSource.attributes.unRead-nbMessageNew;
+ var suffixe = "";
+ if (nodeSource.attributes.unRead > 0) {
+ suffixe = " (" + nodeSource.attributes.unRead + ")";
+ }
+ nodeSource.setText(nodeSource.attributes.originalText + suffixe);
+
+ //retire les messages d'awareness du menu global
+ if (jQuery("#nav_entry_messagerie_sp").size()>0) {
+ var textElt = jQuery("#nav_entry_messagerie_sp");
+ if (nodeSource.attributes.unRead > 0) {
+ textElt.text("("+nodeSource.attributes.unRead+")");
+ }
+ else {
+ textElt.remove();
+ }
+ }
+ if (jQuery("#nav_entry_messagerie_side_sp").size()>0) {
+ var textElt = jQuery("#nav_entry_messagerie_side_sp");
+ if (nodeSource.attributes.unRead > 0) {
+ textElt.text(nodeSource.attributes.unRead);
+ textElt.attr("class", "notif");
+ }
+ else {
+ textElt.attr("class", "hide");
+ }
+ }
+ if (jQuery("#nav_entry_messagerie_top_sp").size()>0) {
+ var textElt = jQuery("#nav_entry_messagerie_top_sp");
+ if (nodeSource.attributes.unRead > 0) {
+ textElt.text(nodeSource.attributes.unRead);
+ textElt.attr("class", "notif");
+ }
+ else {
+ textElt.attr("class", "hide");
+ }
+ }
+ },
+
+ onContextMenuTreeFolderPanel: function(n, e){
+
+ e.stopEvent();
+ var coords = e.getXY();
+
+ // Stockage du noeud sélectionné
+ this.entityNode = n;
+
+ var showMenu = true;
+
+ // Si on ne peut pas ajouter de sous-dossier, on masque le bouton add
+ if (n.attributes.isAddable==false) {
+ this.addFolderRightClick.hide();
+ }
+ else {
+ this.addFolderRightClick.show();
+ showMenu = false;
+ }
+
+ // Si le dossier n'est pas supprimable, on cache le bouton de suppression et de modification
+ if (n.attributes.isDeletable==false) {
+ this.deleteFolderRightClick.hide();
+ this.modifyFolderRightClick.hide();
+ }
+ else {
+ this.deleteFolderRightClick.show();
+ this.modifyFolderRightClick.show();
+ }
+
+ if(showMenu){
+ this.rightClickMenu.showAt([coords[0], coords[1]]);
+ }
+
+ }
+
+
+
+});