--- /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.ImGridMessageView = function (config) {
+ Ext.apply(this, config);
+
+ // Ajoute le texte des erreurs
+ Ext.QuickTips.init();
+
+ this.pagingLimit = 50;
+
+ // turn on validation errors beside the field globally
+ Ext.form.Field.prototype.msgTarget = 'side';
+
+ // noeud de l arbre selectionne
+ this.currentNode = this.currentNode || null;
+
+ // message affiché
+ this.selectedRecord = null;
+
+ this.searchTextValue = "";
+ this.searchTextField = this.searchTextField || new Ext.form.TextField({
+ emptyText: this.i18n.InternalMessaging.ImGridMessageView.searchTextField,
+ clearCls: "clear-recherche"
+ });
+
+ this.message_store = this.message_store || new Ext.data.Store({
+ // load using HTTP
+ proxy: new Ext.data.HttpProxy({
+ url: this.renderURLAjax+"&jspPage=%2Fajax%2FlistMessages.jsp"
+ }),
+
+ // the return will be XML, so lets set up a reader
+ reader: new Ext.data.XmlReader({
+ totalProperty: 'total',
+ record: "message",
+ id: "id"
+ }, ["id", "subject", "fromName", "toName", "date" , {name:"isNew", type:"boolean"}, {name:"hasAttachFiles", type:"boolean"}, {name:"hasBody", type:"boolean"}, "listPJName", "sourceDisplay", "accountId", "type", {name:"isArchived", type:"boolean"}]),
+ remoteSort: true
+ });
+
+ this.tmp_store = this.tmp_store || new Ext.data.Store({
+ // load using HTTP
+ proxy: new Ext.data.HttpProxy({
+ url: this.renderURLAjax+"&jspPage=%2Fajax%2FlistMessages.jsp"
+ }),
+
+ // the return will be XML, so lets set up a reader
+ reader: new Ext.data.XmlReader({
+ totalProperty: 'total',
+ record: "message",
+ id: "id"
+ }, ["id", "subject", "fromName", "toName", "date" , {name:"isNew", type:"boolean"}, {name:"hasAttachFiles", type:"boolean"}, {name:"hasBody", type:"boolean"}, "listPJName", "sourceDisplay", "accountId", "type", {name:"isArchived", type:"boolean"}]),
+ remoteSort: true
+ });
+
+ this.messagesPaggingTB = this.messagesPaggingTB || new Ext.PagingToolbar({
+ pageSize: this.pagingLimit,
+ store: this.message_store,
+ hidden: true,
+ displayInfo: true,
+ displayMsg: this.i18n.InternalMessaging.ImGridMessageView.messagesPaggingTB.displayMsg,
+ emptyMsg: this.i18n.InternalMessaging.ImGridMessageView.messagesPaggingTB.emptyMsg,
+ items:[]
+ });
+
+ // definition des boutons de controle
+ this.newMessageButton = this.newMessageButton || new Ext.Button({
+ text: this.i18n.InternalMessaging.ImGridMessageView.newMessageButton.text,
+ tooltip: this.i18n.InternalMessaging.ImGridMessageView.newMessageButton.tooltip,
+ handler: this.onCreateMessage,
+ iconCls: 'btn-newMsg',
+ iconAlign: 'top',
+ scale: 'medium',
+ scope: this
+ });
+ this.deleteButton = this.deleteButton || new Ext.Button({
+ text: this.i18n.InternalMessaging.ImGridMessageView.deleteButton.text,
+ tooltip: this.i18n.InternalMessaging.ImGridMessageView.deleteButton.tooltip,
+ handler: this.onDeleteMessage,
+ iconCls: 'btn-delete',
+ iconAlign: 'top',
+ scale: 'medium',
+ scope: this
+ });
+
+ this.printButton = this.printButton || new Ext.Button({
+ text: this.i18n.InternalMessaging.ImGridMessageView.printButton.text,
+ tooltip: this.i18n.InternalMessaging.ImGridMessageView.printButton.tooltip,
+ handler: this.onPrintMessage,
+ iconCls: 'btn-print',
+ iconAlign: 'top',
+ scale: 'medium',
+ scope: this
+ });
+
+ this.answerButton = this.answerButton || new Ext.Button({
+ text: this.i18n.InternalMessaging.ImGridMessageView.answerButton.text,
+ tooltip: this.i18n.InternalMessaging.ImGridMessageView.answerButton.tooltip,
+ handler: this.onAnswerMessage,
+ disabled: true,
+ iconCls: 'btn-answer',
+ iconAlign: 'top',
+ scale: 'medium',
+ scope: this
+ });
+ this.answerAllButton = this.answerAllButton || new Ext.Button({
+ text: this.i18n.InternalMessaging.ImGridMessageView.answerAllButton.text,
+ tooltip: this.i18n.InternalMessaging.ImGridMessageView.answerAllButton.tooltip,
+ handler: this.onAnswerAllMessage,
+ disabled: true,
+ iconCls: 'btn-answerAll',
+ iconAlign: 'top',
+ scale: 'medium',
+ scope: this
+ });
+
+ this.forwardButton = this.forwardButton || new Ext.Button({
+ text: this.i18n.InternalMessaging.ImGridMessageView.forwardButton.text,
+ tooltip: this.i18n.InternalMessaging.ImGridMessageView.forwardButton.tooltip,
+ handler: this.onForwardMail,
+ iconCls: 'btn-forward',
+ iconAlign: 'top',
+ scale: 'medium',
+ scope: this
+ });
+
+ this.refreshButton = this.refreshButton || new Ext.Button({
+ text: this.i18n.InternalMessaging.ImGridMessageView.refreshButton.text,
+ tooltip: this.i18n.InternalMessaging.ImGridMessageView.refreshButton.tooltip,
+ handler: this.onRefreshMail,
+ iconCls: 'btn-refresh',
+ iconAlign: 'top',
+ scale: 'medium',
+ scope: this
+ });
+
+ this.preferenceButton = this.preferenceButton || new Ext.Button({
+ text: this.i18n.InternalMessaging.ImGridMessageView.preferenceButton.text,
+ tooltip: this.i18n.InternalMessaging.ImGridMessageView.preferenceButton.tooltip,
+ iconCls: 'folder-configuration',
+ handler: this.onConfigureMailAccount,
+ iconAlign: 'top',
+ scale: 'medium',
+ scope: this
+ });
+
+
+ /*
+ * Panel contenant le tree des folders
+ */
+ // Définition des composants graphiques
+ this.treeLoader = this.treeLoader || new Ext.tree.TreeLoader({
+ dataUrl: this.renderURLAjax+'&jspPage=%2Fajax%2FlistFolders.jsp&isMoveTo=true'
+ });
+
+ // on creer la zone de gauche qui affiche l'arbre des dossiers contenant les messages
+ this.treeFolder = this.treeFolder || new Ext.tree.TreePanel({
+ border: false,
+ useArrows: true,
+ autoScroll: true,
+ animate: true,
+ enableDD: false,
+ containerScroll: true,
+ loader: this.treeLoader,
+ rootVisible: false,
+ root: {
+ nodeType: 'async',
+ text: "Root", // Texte du noeud
+ draggable: false, // Désactiver le Drag and drop sur ce noeud
+ id: "rootNode", // Id du rootNodePah
+ leaf: false,
+ order: 0
+ }
+ });
+
+ this.treeFolderPanel = this.treeFolderPanel || new Ext.Panel({
+ cls: "internalMessaging-portlet",
+ border: true,
+ height: 300,
+ width: 240,
+ layout: 'fit',
+ items: [this.treeFolder]
+ });
+
+ this.moveToFolderItemMenu = this.moveToFolderItemMenu || new Ext.menu.Item({
+ text: this.i18n.InternalMessaging.ImGridMessageView.moveToFolderItemMenu.text,
+ iconCls: 'moveToFolder',
+ menu: [this.treeFolderPanel]
+ });
+
+ this.deleteMessageItem = this.deleteMessageItem || new Ext.menu.Item({
+ text: this.i18n.InternalMessaging.ImGridMessageView.deleteMessageItem.text,
+ handler: this.onDeleteMessage,
+ iconCls: 'menu-delete',
+ scope: this
+ });
+
+ this.answerMessageItem = this.answerMessageItem || new Ext.menu.Item({
+ text: this.i18n.InternalMessaging.ImGridMessageView.answerMessageItem.text,
+ handler: this.onAnswerMessage,
+ iconCls: 'menu-answer',
+ scope: this
+ });
+
+ this.answerAllMessageItem = this.answerAllMessageItem || new Ext.menu.Item({
+ text: this.i18n.InternalMessaging.ImGridMessageView.answerAllMessageItem.text,
+ handler: this.onAnswerAllMessage,
+ iconCls: 'menu-answerAll',
+ scope: this
+ });
+
+ this.forwardMessageItem = this.forwardMessageItem || new Ext.menu.Item({
+ text: this.i18n.InternalMessaging.ImGridMessageView.forwardMessageItem.text,
+ handler: this.onForwardMail,
+ iconCls: 'menu-forward',
+ scope: this
+ });
+
+ this.printMessageItem = this.printMessageItem || new Ext.menu.Item({
+ text: this.i18n.InternalMessaging.ImGridMessageView.printMessageItem.text,
+ handler: this.onPrintMessage,
+ iconCls: 'menu-print',
+ scope: this
+ });
+
+ // Menu clic droit sur la grille des messages
+ this.rightClicMenu = this.rightClicListMenu || new Ext.menu.Menu({
+ cls: "internalMessaging-portlet",
+ items: [
+ this.deleteMessageItem,
+ this.answerMessageItem,
+ this.answerAllMessageItem,
+ this.forwardMessageItem,
+ this.printMessageItem,
+ this.moveToFolderItemMenu
+ ]
+ });
+
+ // RowAction favorite
+ this.action_column_favorite = this.action_column_favorite || new Ext.grid.ActionColumn({
+ width: 25,
+ fixed: true,
+ sortable: false,
+ menuDisabled: true,
+ align: 'center',
+ items: [
+ {
+ iconCls: 'addToFavoriteCls',
+ tooltip: this.i18n.InternalMessaging.ImGridMessageView.action_column.favorite.tooltip,
+ scope: this,
+ handler: this.onAddShortCutAction
+ }
+ ]
+ });
+
+ // IsNew column
+ this.isNewColumn = this.isNewColumn || new Ext.grid.ActionColumn({
+ width: 25,
+ fixed: true,
+ sortable: false,
+ menuDisabled: true,
+ align: 'center',
+ items: [
+ {
+ getClass: function(v, meta, rec, row, col, store) { // Or return a class from a function
+ if (rec.get('isNew') == true) {
+ return 'isNew';
+ } else if(rec.get('isArchived') == true){
+ return 'isArchived';
+ }
+ }
+ }
+ ]
+ });
+
+ this.colDe = this.colDe || new Ext.grid.Column({
+ header: this.i18n.InternalMessaging.ImGridMessageView.messageGrid.columns.de,
+ width: 150,
+ fixed: true,
+ dataIndex: 'fromName',
+ sortable: true
+ });
+
+ this.colA = this.colA || new Ext.grid.Column({
+ header: this.i18n.InternalMessaging.ImGridMessageView.messageGrid.columns.a,
+ width: 150,
+ fixed: true,
+ dataIndex: 'toName',
+ sortable: true,
+ hidden: true
+ });
+
+ this.colSubject = this.colSubject || new Ext.grid.Column({
+ header: this.i18n.InternalMessaging.ImGridMessageView.messageGrid.columns.objet,
+ dataIndex: 'subject',
+ sortable: true
+ });
+
+ this.attachedFileColumn = this.attachedFileColumn || new Ext.grid.Column({
+ width: 25,
+ fixed: true,
+ sortable: true,
+ menuDisabled: true,
+ dataIndex: 'hasAttachFiles',
+ renderer: {
+ fn: function(value, metaData, rec, rowIndex, colIndex, store) {
+ if (rec.get('hasAttachFiles') == true) {
+ metaData.attr = 'ext:qtip="' + rec.get("listPJName") + '"';
+ return '<img margin="100%" class="x-action-col-icon x-action-col-0 hasAttachFiles" ext:qtip="' + rec.get("listPJName") + '" src="/html/js/extjs/resources/images/default/s.gif" alt="">';
+ }
+ else if ((rec.get('type') == "mail") && (rec.get('hasBody') == false)) {
+ if (rec.get('isNew') == true) {
+ return '<img class="x-action-col-icon x-action-col-0 unknowAttachment-bold" src="/html/js/extjs/resources/images/default/s.gif" alt="">';
+ }
+ else {
+ return '<img class="x-action-col-icon x-action-col-0 unknowAttachment" src="/html/js/extjs/resources/images/default/s.gif" alt="">';
+ }
+ }
+ },
+ scope: this
+ }
+ });
+
+ this.colDate = this.colDate || new Ext.grid.Column({
+ header: this.i18n.InternalMessaging.ImGridMessageView.messageGrid.columns.dateReception,
+ width: 120,
+ fixed: true,
+ dataIndex: 'date',
+ sortable: true
+ });
+
+ this.sourceDisplay = this.sourceDisplay || new Ext.grid.Column({
+ header: this.i18n.InternalMessaging.ImGridMessageView.messageGrid.columns.boite,
+ width: 170,
+ fixed: true,
+ dataIndex: 'sourceDisplay',
+ sortable: false,
+ hidden: true
+ });
+
+ this.messageGrid = this.messageGrid || new Ext.grid.GridPanel({
+ cls: 'messageGridCls',
+ store: this.message_store,
+ columns: [
+ this.isNewColumn,
+ this.colDe,
+ this.colA,
+ this.colSubject,
+ this.action_column_favorite,
+ this.attachedFileColumn,
+ this.colDate,
+ this.sourceDisplay
+ ],
+ enableDragDrop: true,
+ ddGroup : "changeFolderDD",
+ ddText : this.i18n.InternalMessaging.ImGridMessageView.messageGrid.ddText,
+ border: false,
+ style: "border-bottom: solid 1px #99BBE8;",
+ tbar: {
+ enableOverflow: true,
+ items: [
+ this.refreshButton,
+ ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','-',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',
+ this.deleteButton,
+ ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','-',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',
+ this.answerButton,
+ ' ',
+ this.answerAllButton,
+ ' ',
+ this.forwardButton,
+ ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','-',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',
+ this.newMessageButton,
+ '->',
+ ' ',
+ this.printButton,
+ ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','-',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',
+ this.preferenceButton
+ ]
+ },
+ bbar: this.messagesPaggingTB,
+ viewConfig: {
+ forceFit: true,
+ getRowClass: function(record, index) {
+ var isNew = record.get('isNew');
+ if (isNew) {
+ return 'isNewMessage';
+ }
+ return '';
+ }
+ }
+
+ });
+
+ //window d'ajout aux favoris
+ this.addToFavoritesWindow = this.addToFavoritesWindow || new EntSavoie.AddShortCutWindow({
+ actionURLAjax:this.actionURLAjax,
+ renderURLAjax: this.renderURLAjax
+ });
+
+ this.configPlanAlimentaireTitle = this.configPlanAlimentaireTitle || new Ext.form.Label({
+ text: this.i18n.InternalMessaging.ImGridMessageView.constructorTitle,
+ cls: "toolBarHeaderTextCls"
+ });
+
+ this.gridViewTbar = this.gridViewTbar || new Ext.Toolbar({
+ cls: "x-panel-header",
+ items: [
+ this.configPlanAlimentaireTitle,
+ "->",
+ this.searchTextField
+ ]
+ });
+
+ EntSavoie.InternalMessaging.ImGridMessageView.superclass.constructor.call(this, {
+ border: false,
+ split: true,
+ layout: 'fit',
+ tbar: this.gridViewTbar,
+ items: [
+ this.messageGrid
+ ]
+ });
+
+
+ // definition des listeners
+ this.searchTextField.on("valid", this.onValidSearchText, this);
+ this.message_store.proxy.on("beforeload", this.onBeforeLoadMessageStoreProxy, this);
+ this.message_store.on("load", this.onLoadMessageStore, this);
+ this.tmp_store.proxy.on("beforeload", this.onBeforeLoadTmpStoreProxy, this);
+ this.tmp_store.on("load", this.onLoadTmpStore, this);
+ this.messageGrid.on("cellclick", this.onCellclickMessageGrid, this);
+ this.messageGrid.on("celldblclick", this.onCellDblclickMessageGrid, this);
+ this.messageGrid.on("render", this.onRenderMessageGrid, this);
+ this.messageGrid.on("show", this.onShowMessageGrid, this);
+ this.messageGrid.on("keydown", this.onKeyDown, this);
+ this.messageGrid.on("cellcontextmenu", this.onCellContextMessageGrid, this);
+
+ this.treeFolder.on("click", this.onClickTreeFolder, this);
+
+};
+
+Ext.extend(EntSavoie.InternalMessaging.ImGridMessageView, Ext.Panel, {
+ initComponent: function () {
+ EntSavoie.InternalMessaging.ImGridMessageView.superclass.initComponent.call(this);
+ },
+
+ /**
+ * Appuie sur une fleche directionnelle du clavier
+ */
+ onKeyDown: function(e) {
+ var k = e.getKey();
+ // Si l'événement clavier est la flèche directionnelle haut
+ if (k=='38') {
+ var gridRecord = this.messageGrid.getSelectionModel().getSelected();
+ var rowIndex = this.message_store.indexOf(gridRecord);
+ // Si on n'est pas au premier élément dans la grid
+ if (rowIndex>0) {
+ // Rafraichissement de la vue du message
+ this.onCellclickMessageGrid(this.messageGrid, rowIndex-1, 0, null);
+ }
+ }
+ // Si l'événement clavier est la flèche directionnelle bas
+ else if (k=='40') {
+ var gridRecord = this.messageGrid.getSelectionModel().getSelected();
+ var rowIndex = this.message_store.indexOf(gridRecord);
+ // Nombre d'éléments dans la grid
+ var lastRow = this.message_store.getCount() - 1;
+ // Si on n'est pas au dernier élément dans la grid
+ if (rowIndex<lastRow) {
+ // Rafraichissement de la vue du message
+ this.onCellclickMessageGrid(this.messageGrid, rowIndex+1, 0, null);
+ }
+ }
+ // Si l'événement clavier est la flèche directionnelle gauche
+ else if (k=='37') {
+ // Index de la page actuelle
+ var activePage = Math.ceil((this.messagesPaggingTB.cursor + this.pagingLimit) / this.pagingLimit);
+ // Si on n'est pas sur la premiere page, on affiche la page precedente
+ if (activePage > 1) {
+ this.messagesPaggingTB.movePrevious();
+ }
+ }
+ // Si l'événement clavier est la flèche directionnelle droite
+ else if (k=='39') {
+ // Nombre de pages
+ var totalPage = Math.ceil(this.message_store.getTotalCount()/this.pagingLimit);
+ // Index de la page actuelle
+ var activePage = Math.ceil((this.messagesPaggingTB.cursor + this.pagingLimit) / this.pagingLimit);
+ // Si on n'est pas sur la derniere page, on affiche la page suivante
+ if (totalPage > activePage) {
+ this.messagesPaggingTB.moveNext();
+ }
+ }
+ // Si l'événement clavier est la touche entrée
+ else if (k=='13') {
+ var gridRecord = this.messageGrid.getSelectionModel().getSelected();
+ var rowIndex = this.message_store.indexOf(gridRecord);
+ this.onCellDblclickMessageGrid(this.messageGrid, rowIndex, 0, null);
+ }
+ // Si l'événement clavier est suppr
+ else if (k=='46') {
+ this.onDeleteMessage(null);
+ }
+
+ },
+
+ refreshGrid: function(node) {
+ this.currentNode = node;
+
+ this.setOperationInProgress(true);
+
+ this.messageGrid.getSelectionModel().clearSelections();
+
+ this.searchTextValue = "";
+ this.searchTextField.suspendEvents(false);
+ this.searchTextField.reset();
+ this.searchTextField.resumeEvents();
+
+ this.message_store.load({params:{start:0, limit: this.pagingLimit}});
+ },
+
+ refreshNewMessage: function(node){
+ var activePage = Math.ceil((this.messagesPaggingTB.cursor + this.messagesPaggingTB.pageSize) / this.messagesPaggingTB.pageSize);
+ if(activePage == 1){
+ this.tmp_store.load({params:{start:0, limit: this.pagingLimit}});
+ }
+ },
+
+ onValidSearchText: function(tf){
+ if (this.messagesPaggingTB!=null) {
+ if (this.searchTextValue != tf.getValue()) {
+ this.searchTextValue=tf.getValue();
+ this.message_store.load({params:{start:0, limit: this.pagingLimit}});
+ }
+ }
+ },
+
+ onBeforeLoadMessageStoreProxy: function(proxy, params){
+ if (this.searchTextField!=null) {
+ params.recherche = this.searchTextField.getValue();
+ } else {
+ params.recherche = "";
+ }
+ // on set les parametre pour l affichage
+ if (this.currentNode != null) {
+ if(this.messageId != 0){
+ params.messageId = this.messageId;
+ params.isIm = this.isIm;
+ this.messageId = 0;
+ }
+ if(this.rssItemId != 0) {
+ params.rssItemId = this.rssItemId;
+ this.rssItemId = 0;
+ }
+ params.folderType = this.currentNode.attributes.folderType;
+ params.folderId = this.currentNode.attributes.folderId;
+ params.accountId = this.currentNode.attributes.accountId;
+ params.isRss = this.currentNode.attributes.type == "rss";
+ }
+ },
+
+ onBeforeLoadTmpStoreProxy: function(proxy, params){
+
+ var sort = this.message_store.getSortState();
+ if(sort){
+ params.sort = sort.field;
+ params.dir = sort.direction;
+ }
+
+ if (this.searchTextField!=null) {
+ params.recherche = this.searchTextField.getValue();
+ } else {
+ params.recherche = "";
+ }
+ // on set les parametre our l affichage
+ if (this.currentNode != null) {
+ params.folderType = this.currentNode.attributes.folderType;
+ params.folderId = this.currentNode.attributes.folderId;
+ params.accountId = this.currentNode.attributes.accountId;
+ params.isRss = this.currentNode.attributes.type == "rss";
+ }
+ },
+
+ onLoadTmpStore: function(store, records, e){
+
+ var count = 0;
+
+ for(i=0; i<records.length; i++){
+ var rec = records[i];
+ if(this.message_store.getById(rec.get("id"))==null){
+ this.message_store.addSorted(rec);
+ count++;
+ }
+ }
+
+ this.message_store.totalLength = this.message_store.totalLength + count;
+
+ this.messagesPaggingTB.unbind(this.message_store);
+ this.messagesPaggingTB.bind(this.message_store);
+ this.message_store.sort('date', 'DESC');
+
+ this.setOperationInProgress(false);
+
+ },
+
+ onLoadMessageStore: function(store, records, e){
+ var colToIndex = this.messageGrid.getColumnModel().getIndexById(this.colA.id);
+ var colFromIndex = this.messageGrid.getColumnModel().getIndexById(this.colDe.id);
+ var colDateIndex = this.messageGrid.getColumnModel().getIndexById(this.colDate.id);
+ var sourceIndex = this.messageGrid.getColumnModel().getIndexById(this.sourceDisplay.id);
+ var attachFileIndex = this.messageGrid.getColumnModel().getIndexById(this.attachedFileColumn.id);
+ var favoriteColumnIndex = this.messageGrid.getColumnModel().getIndexById(this.action_column_favorite.id);
+
+ if (this.currentNode!=null && this.currentNode.attributes.type == "rss"){
+
+ // on reset l'interface
+ this.mainContainer.resetInterface(false);
+ this.answerButton.disable();
+ this.answerAllButton.disable();
+ this.forwardButton.enable();
+
+ this.messageGrid.getColumnModel().setHidden(colToIndex,true);
+ this.messageGrid.getColumnModel().setHidden(sourceIndex,true);
+ this.messageGrid.getColumnModel().setHidden(attachFileIndex,true);
+ this.messageGrid.getColumnModel().setHidden(favoriteColumnIndex,true);
+
+ } else {
+ this.messageGrid.getColumnModel().setHidden(attachFileIndex,false);
+ this.messageGrid.getColumnModel().setHidden(favoriteColumnIndex,false);
+
+ if (this.currentNode!=null && this.currentNode.attributes.type == this.sendingFolderType){
+ this.messageGrid.getColumnModel().setHidden(colFromIndex,true);
+ this.messageGrid.getColumnModel().setHidden(colToIndex,false);
+ this.messageGrid.getColumnModel().setColumnHeader(colDateIndex, this.i18n.InternalMessaging.ImGridMessageView.onLoadMessageStore.dateEnvoi);
+ }else if (this.currentNode!=null && this.currentNode.attributes.type == "draft"){
+ this.messageGrid.getColumnModel().setHidden(colFromIndex,true);
+ this.messageGrid.getColumnModel().setHidden(colToIndex,false);
+ this.messageGrid.getColumnModel().setHidden(colDateIndex,true);
+ }
+ else{
+ this.messageGrid.getColumnModel().setHidden(colFromIndex,false);
+ this.messageGrid.getColumnModel().setHidden(colToIndex,true);
+ this.messageGrid.getColumnModel().setColumnHeader(colDateIndex, this.i18n.InternalMessaging.ImGridMessageView.onLoadMessageStore.dateReception);
+ }
+
+ if (this.currentNode!=null && this.currentNode.attributes.folderType.search("global") == 0) {
+ this.messageGrid.getColumnModel().setHidden(sourceIndex,false);
+ }
+ else {
+ this.messageGrid.getColumnModel().setHidden(sourceIndex,true);
+ }
+
+ if (records.length>0) {
+ if (this.selectedRecord==null || store.getById(this.selectedRecord.get("id"))==null) {
+ //Plus de selection du premier message
+ // this.selectedRecord = records[0];
+ // this.messageGrid.getSelectionModel().selectFirstRow();
+ // this.onCellclickMessageGrid(this.messageGrid, 0, 0, null);
+ }
+ else {
+ this.selectedRecord = store.getById(this.selectedRecord.get("id"));
+ var recToSel = [this.selectedRecord];
+ this.messageGrid.getSelectionModel().selectRecords(recToSel);
+ }
+ }
+ else {
+ // on reset l'interface
+ this.mainContainer.resetInterface(false);
+ this.answerButton.disable();
+ this.answerAllButton.disable();
+ this.forwardButton.disable();
+ }
+
+ if (store.getTotalCount()>=this.pagingLimit) {
+ this.messagesPaggingTB.show();
+ }
+ else {
+ this.messagesPaggingTB.hide();
+ this.messageGrid.doLayout();
+ }
+ }
+
+ this.setOperationInProgress(false);
+ },
+
+ onCellclickMessageGrid : function(grid, rowIndex, colIndex, e){
+ this.selectedRecord = grid.getStore().getAt(rowIndex);
+
+ var isRss = this.currentNode.attributes.type == "rss";
+
+ if (grid.getSelectionModel().getSelections().length==1 && this.currentNode.attributes.type != "draft" && !isRss) {
+ this.answerButton.enable();
+ this.answerAllButton.enable();
+ this.forwardButton.enable();
+ }
+ else if(isRss) {
+ this.answerButton.disable();
+ this.answerAllButton.disable();
+ this.forwardButton.enable();
+ } else {
+ this.answerButton.disable();
+ this.answerAllButton.disable();
+ this.forwardButton.disable();
+ }
+ // on affiche le message
+ this.mainContainer.attachedFilesView.resetInterface();
+ this.mainContainer.refreshMessage(this.selectedRecord.get("id"), this.selectedRecord.get("type"), isRss);
+
+
+ // CODE PERMETTANT DE FIXER LE FOCUS SUR LA GRID
+ var v = this.messageGrid.getView();
+ v.focusEl.focus.defer(1, v.focusEl);
+ // CODE PERMETTANT DE FIXER LE FOCUS SUR LA GRID
+
+
+ if(this.currentNode.attributes.type != "draft" && this.selectedRecord.get('isNew')){
+ //on met à jour la balise isNew
+ Ext.Ajax.request({
+ url: this.actionURLAjax,
+ params: {
+ cmd: "msgRead",
+ msgId: this.selectedRecord.get("id"),
+ type: this.selectedRecord.get("type"),
+ isRss: isRss
+ },
+ scope: this,
+ success: this.onSuccessIsNewMessage,
+ failure: this.onFailureIsNewMessage
+ });
+
+ this.selectedRecord.set("isNew", false);
+
+ if(!isRss){
+ this.mainContainer.treeFolderMessage.updateUnread(this.selectedRecord.get("accountId"));
+ }
+ }
+ },
+
+ setAttachment : function(bool) {
+ this.selectedRecord.set("hasAttachFiles", bool);
+ this.selectedRecord.set("hasBody", true);
+
+
+ },
+
+ onSuccessIsNewMessage: function(response, options) {
+ /* Code verifiant le succes de la requete */
+ var backObj = Ext.decode(response.responseText);
+ if (!backObj.success) {
+ Ext.MessageBox.alert(this.i18n.InternalMessaging.ImGridMessageView.messageBox.attention, this.i18n.InternalMessaging.ImGridMessageView.messageBox.dysfonctionnementNew, function(btn){});
+ }
+ /* Code verifiant le succes de la requete */
+ },
+
+ onFailureIsNewMessage: function(response, options) {
+ Ext.MessageBox.alert(this.i18n.InternalMessaging.ImGridMessageView.messageBox.attention, this.i18n.InternalMessaging.ImGridMessageView.messageBox.dysfonctionnementNew, function(btn){});
+ },
+
+ onCellDblclickMessageGrid : function(grid, rowIndex, colIndex, e){
+ // on ouvre la fenetre de reponse sur un double clic
+ if (this.currentNode.attributes.type != "draft") {
+ this.selectedRecord = grid.getStore().getAt(rowIndex);
+ this.mainContainer.createMessageWindow.answerSenderMessage(this.selectedRecord.get("id"), this.selectedRecord.get("type"), this.selectedRecord.get("accountId"));
+ this.mainContainer.createMessageWindow.setTitle(this.i18n.InternalMessaging.ImGridMessageView.messageGridTitle.repondre);
+ }
+ else {
+ this.selectedRecord = grid.getStore().getAt(rowIndex);
+ this.mainContainer.createMessageWindow.editDraft(this.selectedRecord.get("id"), this.selectedRecord.get("type"), this.selectedRecord.get("accountId"));
+ this.mainContainer.createMessageWindow.setTitle(this.i18n.InternalMessaging.ImGridMessageView.messageGridTitle.redigerNouveau);
+ }
+ },
+
+ onRenderMessageGrid: function(grid){
+ this.message_store.load({params:{start:0, limit: this.pagingLimit}});
+ },
+
+ onShowMessageGrid: function(grid){
+
+ },
+
+ // Fonctionnement des controle
+ // creation d'un nouveau message
+ onCreateMessage: function(btn) {
+ this.mainContainer.createMessageWindow.createNewMessage();
+ },
+
+ // suppression des messages
+ onDeleteMessage: function(btn) {
+ this.selectedRecord = null;
+ this.answerButton.disable();
+ this.answerAllButton.disable();
+ this.forwardButton.disable();
+ var recMessageArray = this.messageGrid.getSelectionModel().getSelections();
+ if (recMessageArray.length==0) {
+ return false;
+ }
+
+ // for interface
+ var messageIds = [];
+ var messageArray = [];
+ for (var i = 0 ; i < recMessageArray.length ;i++) {
+ messageIds.push(recMessageArray[i].get("id"));
+ var mess = {
+ id: recMessageArray[i].get("id"),
+ type: recMessageArray[i].get("type")
+ };
+ messageArray.push(mess);
+ }
+
+ var isRss = false;
+ if(this.currentNode!=null){
+ isRss = this.currentNode.attributes.type == "rss";
+ }
+
+ Ext.Ajax.request({
+ url: this.actionURLAjax,
+ params: {
+ cmd: "deleteMessage",
+ messageArray: Ext.util.JSON.encode(messageArray),
+ isRss: isRss
+ },
+ scope: this,
+ success: this.onSuccessDeleteMessage,
+ failure: this.onFailureDeleteMessage
+ });
+
+ },
+
+ onSuccessDeleteMessage: function(response, options) {
+
+ var entityArray = this.messageGrid.getSelectionModel().getSelections();
+ var index = this.message_store.indexOf(entityArray[0]);
+
+ this.message_store.remove(entityArray);
+ this.message_store.totalLength = this.message_store.totalLength - entityArray.length;
+ this.messagesPaggingTB.unbind(this.message_store);
+ this.messagesPaggingTB.bind(this.message_store);
+
+ if(index > 0){
+ this.messageGrid.getSelectionModel().selectRow(index - 1);
+ this.messageGrid.fireEvent("cellclick", this.messageGrid, index - 1, 0, this);
+ } else if((index == 0) && (this.message_store.getCount()>0)){
+ this.messageGrid.getSelectionModel().selectFirstRow();
+ this.messageGrid.fireEvent("cellclick", this.messageGrid, 0, 0, this);
+ } else {
+ // on reset l'interface
+ this.mainContainer.resetInterface(false);
+ this.answerButton.disable();
+ this.answerAllButton.disable();
+ this.forwardButton.disable();
+ }
+ },
+
+ onFailureDeleteMessage: function(response, options) {
+ Ext.MessageBox.alert(this.i18n.InternalMessaging.ImGridMessageView.messageBox.attention, this.i18n.InternalMessaging.ImGridMessageView.messageBox.dysfonctionnementSuppression, function(btn){});
+ },
+
+ // impression des messages
+ onPrintMessage: function(btn) {
+ var recMessageArray = this.messageGrid.getSelectionModel().getSelections();
+ if (recMessageArray.length==0) {
+ return false;
+ }
+
+ // for interface
+ var messageIds = [];
+ var messageArray = [];
+ for (var i = 0 ; i < recMessageArray.length ;i++) {
+ messageIds.push(recMessageArray[i].get("id"));
+ var mess = {
+ id: recMessageArray[i].get("id"),
+ type: recMessageArray[i].get("type")
+ };
+ messageArray.push(mess);
+ }
+
+ window.open(this.renderURLAjax+"&jspPage=%2Fprint_message.jsp&msgIds=" + Ext.util.JSON.encode(messageArray) , "_blank");
+
+ },
+
+
+ // repondre a l expediteur
+ onAnswerMessage: function(btn) {
+ this.mainContainer.createMessageWindow.answerSenderMessage(this.selectedRecord.get("id"), this.selectedRecord.get("type"), this.selectedRecord.get("accountId"));
+ this.mainContainer.createMessageWindow.setTitle(this.i18n.InternalMessaging.ImGridMessageView.messageGridTitle.repondre);
+ },
+
+ // repondre a tous
+ onAnswerAllMessage: function(btn) {
+ this.mainContainer.createMessageWindow.answerAllReceiptMessage(this.selectedRecord.get("id"), this.selectedRecord.get("type"), this.selectedRecord.get("accountId"));
+ this.mainContainer.createMessageWindow.setTitle(this.i18n.InternalMessaging.ImGridMessageView.messageGridTitle.repondre);
+ },
+
+ // faire suivre le message
+ onForwardMail: function(btn) {
+ this.mainContainer.createMessageWindow.forwardIMMessage(this.selectedRecord.get("id"), this.selectedRecord.get("type"),this.selectedRecord.get("accountId"));
+ this.mainContainer.createMessageWindow.setTitle(this.i18n.InternalMessaging.ImGridMessageView.messageGridTitle.faireSuivre);
+ },
+
+ //rafraichir les messages
+ onRefreshMail: function(btn) {
+ this.setOperationInProgress(true, true);
+
+ Ext.Ajax.request({
+ url: this.actionURLAjax,
+ timeout: 90000,
+ params: {
+ cmd: "refreshMail"
+ },
+ scope: this,
+ success: this.onSuccessRefreshMail,
+ failure: this.onFailureRefreshMail
+ });
+ },
+
+ onSuccessRefreshMail: function(response, options) {
+ //this.messageGrid.reconfigure(this.message_store, this.messageGrid.getColumnModel());
+
+ var backObj = Ext.decode(response.responseText);
+ var node = null;
+
+ if (backObj.success) {
+
+ if(this.currentNode.attributes.type == "rss"){
+ // On recharge uniquement si on des nouveaux rss items
+ if(backObj.hasNewItems){
+ this.refreshNewMessage(this.currentNode);
+ }
+
+ } else {
+ //Set des informations sur le nombre de nouveau message..
+ //..backObj.arrayAccounts[i].accountId
+ //..backObj.arrayAccounts[i].nbNew
+ globalNode = this.mainContainer.treeFolderMessage.treeFolderPanel.getNodeById("rootNode/INBOXES");
+
+ var backObjArray = backObj.arrayAccounts;
+ this.nbAccount = backObjArray.length;
+
+ var hasNewMessage = false;
+
+ for(i=0; i<this.nbAccount; i++){
+
+ if (backObjArray[i].type == "globalInbox") {
+ node = globalNode;
+ //met a jour les messages d'awareness du menu global
+ if (jQuery("#nav_entry_messagerie_sp").size()>0) {
+ var textElt = jQuery("#nav_entry_messagerie_sp");
+ if (backObjArray[i].nbNew > 0) {
+ textElt.text("("+backObjArray[i].nbNew+")");
+ }
+ else {
+ textElt.remove();
+ }
+ }
+ if (jQuery("#nav_entry_messagerie_side_sp").size()>0) {
+ var textElt = jQuery("#nav_entry_messagerie_side_sp");
+ if (backObjArray[i].nbNew > 0) {
+ textElt.attr("class", "notif");
+ textElt.text(backObjArray[i].nbNew);
+ }
+ else {
+ textElt.attr("class", "hide");
+ }
+ }
+ if (jQuery("#nav_entry_messagerie_top_sp").size()>0) {
+ var textElt = jQuery("#nav_entry_messagerie_top_sp");
+ if (backObjArray[i].nbNew > 0) {
+ textElt.attr("class", "notif");
+ textElt.text(backObjArray[i].nbNew);
+ }
+ else {
+ textElt.attr("class", "hide");
+ }
+ }
+ }
+ else if (backObjArray[i].type == "mail" && globalNode.isExpanded()) {
+ node = this.mainContainer.treeFolderMessage.treeFolderPanel.getNodeById("rootNode/INBOXES/"+backObjArray[i].accountId);
+ }
+ else if (globalNode.isExpanded()){
+ node = this.mainContainer.treeFolderMessage.treeFolderPanel.getNodeById("rootNode/INBOXES/internalMessaging");
+ }
+
+ if (node != null) {
+ if(node.attributes.unRead<backObjArray[i].nbNew){
+ hasNewMessage = true;
+ }
+
+ node.attributes.unRead = backObjArray[i].nbNew;
+
+ var suffixe = "";
+ if (node.attributes.unRead > 0) {
+ suffixe = " (" + node.attributes.unRead + ")";
+ }
+ node.setText(node.attributes.originalText + suffixe);
+ }
+ }
+
+ this.mainContainer.treeFolderMessage.treeFolderPanel.doLayout();
+ this.refreshNewMessage(this.currentNode);
+ }
+ }
+
+ //this.setOperationInProgress(false);
+
+// if(hasNewMessagehas){
+// Ext.slideMsg.msg(this.i18n.InternalMessaging.ImGridMessageView.refreshMail.title, this.i18n.InternalMessaging.ImGridMessageView.refreshMail.msg);
+// }
+
+ //this.mainContainer.treeFolderMessage.treeLoader.load(this.mainContainer.treeFolderMessage.treeFolderPanel.getRootNode());
+ },
+
+ onFailureRefreshMail: function(response, options) {
+ Ext.MessageBox.alert(this.i18n.InternalMessaging.ImGridMessageView.messageBox.attention, this.i18n.InternalMessaging.ImGridMessageView.messageBox.dysfonctionnementChargementMsg, function(btn){});
+ },
+
+ onCellContextMessageGrid: function(grid, rowIndex, cellIndex, e ) {
+ e.stopEvent();
+ var coords = e.getXY();
+ var entityArray = grid.getSelectionModel().getSelections();
+ var select = false;
+ //on ajoute la sélection s'il n'y pas de ligne selectionné
+ if (entityArray.length==0) {
+ grid.getSelectionModel().selectRow(rowIndex);
+ this.onCellclickMessageGrid(grid, rowIndex, cellIndex, e);
+ this.deleteMessageItem.show();
+ this.answerMessageItem.show();
+ this.answerAllMessageItem.show();
+ this.forwardMessageItem.show();
+ } else if (entityArray.length==1) {
+ grid.getSelectionModel().selectRow(rowIndex);
+ this.onCellclickMessageGrid(grid, rowIndex, cellIndex, e);
+ this.deleteMessageItem.show();
+ this.answerMessageItem.show();
+ this.answerAllMessageItem.show();
+ this.forwardMessageItem.show();
+ } else {
+ //ou si l'utilisateur clic sur une ligne non selectionné
+ for (var i=0; i < entityArray.length; i++) {
+ if (!select && grid.getStore().indexOf(entityArray[i]) == rowIndex) {
+ select = true;
+ break;
+ }
+ }
+ if (select == false) {
+ grid.getSelectionModel().selectRow(rowIndex);
+ this.deleteMessageItem.show();
+ this.answerMessageItem.show();
+ this.answerAllMessageItem.show();
+ this.forwardMessageItem.show();
+ } else {
+ this.deleteMessageItem.show();
+ this.answerMessageItem.hide();
+ this.answerAllMessageItem.hide();
+ this.forwardMessageItem.hide();
+ }
+ }
+
+
+ var isRss = this.currentNode != null && this.currentNode.attributes.type == "rss";
+ //Si Rss, on ne peut que supprimer et imprimer
+ if(isRss){
+ this.deleteMessageItem.show();
+ this.answerMessageItem.hide();
+ this.answerAllMessageItem.hide();
+ this.forwardMessageItem.show();
+ this.moveToFolderItemMenu.hide();
+ } else {
+ this.moveToFolderItemMenu.show();
+ }
+
+ this.treeFolder.loader.load(this.treeFolder.getRootNode(), function(){}, this);
+ this.rightClicMenu.showAt([coords[0], coords[1]]);
+
+ },
+
+ // Mail
+ onConfigureMailAccount: function(btn) {
+ this.mainContainer.mailAccountConfigurator.showAcccountConfigurator(this.mainContainer.treeFolderMessage.treeFolderPanel);
+ },
+
+ onAddShortCutAction: function(grid, rowIndex, colIndex){
+ var record = grid.getStore().getAt(rowIndex);
+ this.addToFavoritesWindow.showShortCutWindow(record.get("id"), record.get("subject").replace(/<[^>]*>/g, ""));
+ },
+
+ setOperationInProgress: function(state, all){
+
+ var isRss = this.currentNode != null && this.currentNode.attributes.type == "rss";
+ var globalNode = this.mainContainer.treeFolderMessage.treeFolderPanel.getNodeById("rootNode/INBOXES");
+ var rssNode = this.mainContainer.treeFolderMessage.treeFolderPanel.getNodeById("rootNode/RSS");
+
+ if(state){
+ if(all){
+ globalNode.setIconCls("folder-update");
+ rssNode.setIconCls("folder-update");
+ } else if(isRss){
+ rssNode.setIconCls("folder-update");
+ } else {
+ globalNode.setIconCls("folder-update");
+ }
+ } else {
+ globalNode.setIconCls("folder-incomming");
+ rssNode.setIconCls("folder-rss");
+ }
+ },
+
+ /*
+ * Deplacement d'un message
+ */
+ onClickTreeFolder: function(node, e){
+ this.rightClicMenu.hide();
+ var type = this.selectedRecord.get("type");
+ if((type != node.attributes.folderType) || (type == "mail" && (this.selectedRecord.get("accountId") != node.attributes.accountId))){
+ Ext.MessageBox.alert(this.i18n.InternalMessaging.ImGridMessageView.onClickTreeFolder.alert.title, this.i18n.InternalMessaging.ImGridMessageView.onClickTreeFolder.alert.msg);
+ } else {
+ var arrayMessageId = [];
+ arrayMessageId.push(this.selectedRecord.get("id"));
+ Ext.Ajax.request({
+ url: this.actionURLAjax,
+ params: {
+ cmd: 'changeFolderMessage',
+ type: node.attributes.folderType,
+ folderMessageId: node.attributes.folderId,
+ arrayMessageId: arrayMessageId
+ },
+ scope: this,
+ success: this.onSuccessChangeFolderMessage,
+ failure: this.onFailureChangeFolderMessage
+ });
+ }
+ },
+
+ onSuccessChangeFolderMessage: function(response, options) {
+
+ /*
+ * Mise a jour de l'interface
+ */
+ var index = this.message_store.indexOf(this.selectedRecord);
+
+ this.message_store.remove(this.selectedRecord);
+ this.message_store.totalLength = this.message_store.totalLength - 1;
+ this.messagesPaggingTB.unbind(this.message_store);
+ this.messagesPaggingTB.bind(this.message_store);
+
+ if(index > 0){
+ this.messageGrid.getSelectionModel().selectRow(index - 1);
+ this.messageGrid.fireEvent("cellclick", this.messageGrid, index - 1, 0, this);
+ } else if((index == 0) && (this.message_store.getCount()>0)){
+ this.messageGrid.getSelectionModel().selectFirstRow();
+ this.messageGrid.fireEvent("cellclick", this.messageGrid, 0, 0, this);
+ } else {
+ // on reset l'interface
+ this.mainContainer.resetInterface(false);
+ this.answerButton.disable();
+ this.answerAllButton.disable();
+ this.forwardButton.disable();
+ }
+
+ Ext.slideMsg.msg(this.i18n.InternalMessaging.ImGridMessageView.onSuccessChangeFolderMessage.slideMsg.title, this.i18n.InternalMessaging.ImGridMessageView.onSuccessChangeFolderMessage.slideMsg.msg);
+ },
+
+ onFailureChangeFolderMessage: function(response, options) {
+ Ext.MessageBox.alert(this.i18n.InternalMessaging.ImGridMessageView.onFailureChangeFolderMessage.alert.title, this.i18n.InternalMessaging.ImGridMessageView.onFailureChangeFolderMessage.alert.msg, function(btn){}, this);
+ }
+
+});