From 29d4cb3fa0dbb1ca0809d9375baaf2d135ad16df Mon Sep 17 00:00:00 2001
From: Marco Antonio Nina
Date: Wed, 28 Nov 2012 12:50:02 -0400
Subject: [PATCH] =?UTF-8?q?BUG=2010110=20A=C3=B1r=20modulo=20de=20logs=20p?=
=?UTF-8?q?ara=20envio=20de=20correos=20electronicos=20SOLVED?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- According to the specifications.
- Was add the the list of emails.
enter the commit message for your changes. Lines starting
---
workflow/engine/classes/model/AppMessage.php | 8 +
workflow/engine/menus/setup.php | 1 +
workflow/engine/methods/mails/emailList.php | 96 +++++
workflow/engine/methods/mails/emailsAjax.php | 154 ++++++++
.../engine/templates/mails/emailList.html | 3 +
workflow/engine/templates/mails/emailList.js | 355 ++++++++++++++++++
6 files changed, 617 insertions(+)
create mode 100644 workflow/engine/methods/mails/emailList.php
create mode 100644 workflow/engine/methods/mails/emailsAjax.php
create mode 100644 workflow/engine/templates/mails/emailList.html
create mode 100644 workflow/engine/templates/mails/emailList.js
diff --git a/workflow/engine/classes/model/AppMessage.php b/workflow/engine/classes/model/AppMessage.php
index 0ce2e71bc..9b4996dbc 100755
--- a/workflow/engine/classes/model/AppMessage.php
+++ b/workflow/engine/classes/model/AppMessage.php
@@ -120,5 +120,13 @@ class AppMessage extends BaseAppMessage
return $this->getAppMsgUid();
}
}
+
+ public function updateStatus($msgUid, $msgStatus)
+ {
+ $message = AppMessagePeer::retrieveByPk( $msgUid );
+ $message->fromArray( $message, BasePeer::TYPE_FIELDNAME );
+ $message->setAppMsgStatus($msgStatus);
+ $message->save();
+ }
}
diff --git a/workflow/engine/menus/setup.php b/workflow/engine/menus/setup.php
index bd0fd6a6f..7f562e290 100755
--- a/workflow/engine/menus/setup.php
+++ b/workflow/engine/menus/setup.php
@@ -85,5 +85,6 @@ if ($RBAC->userCanAccess('PM_SETUP') == 1) {
$G_TMP_MENU->AddIdRawOption('EVENT', '../events/eventList', G::LoadTranslation('ID_EVENTS'), '', '', 'logs');
$G_TMP_MENU->AddIdRawOption('LOG_CASE_SCHEDULER', '../cases/cases_Scheduler_Log', G::LoadTranslation('ID_CASE_SCHEDULER'), "icon-logs-list.png",'', 'logs');
$G_TMP_MENU->AddIdRawOption("CRON", "../setup/cron", G::LoadTranslation("ID_CRON_ACTIONS"), null, null, "logs");
+ $G_TMP_MENU->AddIdRawOption('EMAILS', '../mails/emailList', ucfirst (strtolower ( G::LoadTranslation('ID_EMAILS'))), '', '', 'logs');
}
diff --git a/workflow/engine/methods/mails/emailList.php b/workflow/engine/methods/mails/emailList.php
new file mode 100644
index 000000000..f0f02e952
--- /dev/null
+++ b/workflow/engine/methods/mails/emailList.php
@@ -0,0 +1,96 @@
+.
+ *
+ * For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
+ * Coral Gables, FL, 33134, USA, or email info@colosa.com.
+ */
+
+global $RBAC;
+if ($RBAC->userCanAccess( 'PM_SETUP_ADVANCE' ) != 1) {
+ G::SendTemporalMessage( 'ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels' );
+ G::header( 'location: ../login/login' );
+ die();
+}
+
+G::LoadClass( 'configuration' );
+$c = new Configurations();
+$configPage = $c->getConfiguration( 'eventList', 'pageSize', '', $_SESSION['USER_LOGGED'] );
+$Config['pageSize'] = isset( $configPage['pageSize'] ) ? $configPage['pageSize'] : 20;
+
+$G_MAIN_MENU = 'processmaker';
+$G_SUB_MENU = 'logs';
+$G_ID_MENU_SELECTED = 'logs';
+$G_ID_SUB_MENU_SELECTED = 'EMAILS';
+
+//get values for the comboBoxes
+$userUid = (isset( $_SESSION['USER_LOGGED'] ) && $_SESSION['USER_LOGGED'] != '') ? $_SESSION['USER_LOGGED'] : null;
+$status = array (
+ array ('',G::LoadTranslation( 'ID_ALL' )),
+ array ("sent", "Sent"),
+ array ("pending", "Pending")
+);
+//$type = array (array ('',G::LoadTranslation( 'ID_ALL' )
+//),array ('SEND_MESSAGE',G::LoadTranslation( 'ID_EVENT_MESSAGE' )
+//),array ('EXECUTE_TRIGGER',G::LoadTranslation( 'ID_EVENT_TIMER' )
+//),array ('EXECUTE_CONDITIONAL_TRIGGER',G::LoadTranslation( 'ID_EVENT_CONDITIONAL' )
+//)
+//);
+$processes = getProcessArray( $userUid );
+
+$G_PUBLISH = new Publisher();
+
+$oHeadPublisher = & headPublisher::getSingleton();
+$oHeadPublisher->addExtJsScript( 'mails/emailList', false ); //adding a javascript file .js
+$oHeadPublisher->addContent( 'mails/emailList' ); //adding a html file .html.
+//sending the columns to display in grid
+//$oHeadPublisher->assign( 'typeValues', $type );
+$oHeadPublisher->assign( 'statusValues', $status );
+$oHeadPublisher->assign( 'processValues', $processes );
+
+function getProcessArray ($userUid)
+{
+ global $oAppCache;
+ require_once ("classes/model/AppCacheView.php");
+
+ $processes = Array ();
+ $processes[] = array ('',G::LoadTranslation( 'ID_ALL_PROCESS' ));
+
+ $cProcess = new Criteria( 'workflow' );
+ $cProcess->clearSelectColumns();
+ $cProcess->addSelectColumn( AppCacheViewPeer::PRO_UID );
+ $cProcess->addSelectColumn( AppCacheViewPeer::APP_PRO_TITLE );
+ $cProcess->setDistinct( AppCacheViewPeer::PRO_UID );
+
+ $cProcess->addAscendingOrderByColumn( AppCacheViewPeer::APP_PRO_TITLE );
+
+ $oDataset = AppCacheViewPeer::doSelectRS( $cProcess );
+ $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );
+ $oDataset->next();
+
+ while ($aRow = $oDataset->getRow()) {
+ $processes[] = array ($aRow['PRO_UID'],$aRow['APP_PRO_TITLE']);
+ $oDataset->next();
+ }
+
+ return $processes;
+}
+
+G::RenderPage( 'publish', 'extJs' );
+
diff --git a/workflow/engine/methods/mails/emailsAjax.php b/workflow/engine/methods/mails/emailsAjax.php
new file mode 100644
index 000000000..588761d33
--- /dev/null
+++ b/workflow/engine/methods/mails/emailsAjax.php
@@ -0,0 +1,154 @@
+status = 'OK';
+
+ $criteria = new Criteria();
+ $criteria->addJoin(AppMessagePeer::APP_UID, ApplicationPeer::APP_UID);
+ if ($emailStatus != '') {
+ $criteria->add( AppMessagePeer::APP_MSG_STATUS, $emailStatus, Criteria::LESS_EQUAL );
+ }
+ if ($proUid != '') {
+ $criteria->add( ApplicationPeer::PRO_UID, $proUid);
+ }
+ if ($dateFrom != '') {
+ if ($dateTo != '') {
+ $criteria->add( $criteria->getNewCriterion( AppMessagePeer::APP_MSG_DATE, $dateFrom, Criteria::GREATER_EQUAL )->addAnd( $criteria->getNewCriterion( AppMessagePeer::APP_MSG_DATE, $dateTo, Criteria::LESS_EQUAL ) ) );
+ } else {
+ $criteria->add( AppMessagePeer::APP_MSG_DATE, $dateFrom, Criteria::GREATER_EQUAL );
+ }
+ } elseif ($dateTo != '') {
+ $criteria->add( AppMessagePeer::APP_MSG_DATE, $dateTo, Criteria::LESS_EQUAL );
+ }
+
+ $result = AppMessagePeer::doSelectRS($criteria);
+ $result->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+ $data = Array();
+ while ( $result->next() ) {
+ $data[] = $result->getRow();
+ }
+ $totalCount = count($data);
+
+ $criteria = new Criteria();
+ $criteria->addSelectColumn(AppMessagePeer::APP_MSG_UID);
+ $criteria->addSelectColumn(AppMessagePeer::APP_UID);
+ $criteria->addSelectColumn(AppMessagePeer::DEL_INDEX);
+ $criteria->addSelectColumn(AppMessagePeer::APP_MSG_TYPE);
+ $criteria->addSelectColumn(AppMessagePeer::APP_MSG_SUBJECT);
+ $criteria->addSelectColumn(AppMessagePeer::APP_MSG_FROM);
+
+ $criteria->addSelectColumn(AppMessagePeer::APP_MSG_TO);
+ $criteria->addSelectColumn(AppMessagePeer::APP_MSG_BODY);
+ $criteria->addSelectColumn(AppMessagePeer::APP_MSG_STATUS);
+ $criteria->addSelectColumn(AppMessagePeer::APP_MSG_DATE);
+ $criteria->addSelectColumn(AppMessagePeer::APP_MSG_SEND_DATE);
+ $criteria->addSelectColumn(AppMessagePeer::APP_MSG_SHOW_MESSAGE);
+
+ $criteria->addSelectColumn(ApplicationPeer::PRO_UID);
+
+ $criteria->addAsColumn('PRO_TITLE', 'C2.CON_VALUE');
+ $criteria->addAlias('C2', 'CONTENT');
+
+ if ($emailStatus != '') {
+ $criteria->add( AppMessagePeer::APP_MSG_STATUS, $emailStatus, Criteria::LESS_EQUAL );
+ }
+ if ($proUid != '') {
+ $criteria->add( ApplicationPeer::PRO_UID, $proUid);
+ }
+ if ($dateFrom != '') {
+ if ($dateTo != '') {
+ $criteria->add( $criteria->getNewCriterion( AppMessagePeer::APP_MSG_DATE, $dateFrom, Criteria::GREATER_EQUAL )->addAnd( $criteria->getNewCriterion( AppMessagePeer::APP_MSG_DATE, $dateTo, Criteria::LESS_EQUAL ) ) );
+ } else {
+ $criteria->add( AppMessagePeer::APP_MSG_DATE, $dateFrom, Criteria::GREATER_EQUAL );
+ }
+ } elseif ($dateTo != '') {
+ $criteria->add( AppMessagePeer::APP_MSG_DATE, $dateTo, Criteria::LESS_EQUAL );
+ }
+
+ if ($sort != '') {
+ if ($dir == 'ASC') {
+ $criteria->addAscendingOrderByColumn($sort);
+ } else {
+ $criteria->addDescendingOrderByColumn($sort);
+ }
+ } else {
+ $oCriteria->addDescendingOrderByColumn(AppMessagePeer::APP_MSG_SEND_DATE );
+ }
+ if ($limit != '') {
+ $criteria->setLimit($limit);
+ $criteria->setOffset($start);
+ }
+ $criteria->addJoin(AppMessagePeer::APP_UID, ApplicationPeer::APP_UID);
+
+ $conditions = array();
+ $conditions[] = array(ApplicationPeer::PRO_UID, 'C2.CON_ID');
+ $conditions[] = array(
+ 'C2.CON_CATEGORY', DBAdapter::getStringDelimiter() . 'PRO_TITLE' . DBAdapter::getStringDelimiter()
+ );
+ $conditions[] = array(
+ 'C2.CON_LANG', DBAdapter::getStringDelimiter() . SYS_LANG . DBAdapter::getStringDelimiter()
+ );
+ $criteria->addJoinMC($conditions, Criteria::LEFT_JOIN);
+ $result = AppMessagePeer::doSelectRS($criteria);
+ $result->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+ $data = Array();
+ $dataPro = array();
+ $index = 0;
+ $content = new Content();
+ $tasTitleDefault = G::LoadTranslation('ID_TASK_NOT_RELATED');
+ while ( $result->next() ) {
+
+ $row = $result->getRow();
+ $row['APP_MSG_FROM'] =htmlentities($row['APP_MSG_FROM'], ENT_QUOTES, "UTF-8");
+ $row['APP_MSG_STATUS'] = ucfirst ( $row['APP_MSG_STATUS']);
+ $row['TAS_TITLE'] = $tasTitleDefault;
+ if ($row['DEL_INDEX'] != 0) {
+ $criteria = new Criteria();
+ $criteria->addSelectColumn(AppDelegationPeer::PRO_UID);
+ $criteria->addSelectColumn(AppDelegationPeer::TAS_UID);
+ $criteria->addSelectColumn(AppDelegationPeer::DEL_INDEX);
+ $criteria->add(AppDelegationPeer::APP_UID, $row['APP_UID']);
+ $resultDelegation = AppDelegationPeer::doSelectRS($criteria);
+ $resultDelegation->setFetchmode(ResultSet::FETCHMODE_ASSOC);
+ $row['TAS_TITLE'] = '-';
+ while ($resultDelegation->next()) {
+ $rowDelegation = $resultDelegation->getRow();
+ if ($row['DEL_INDEX'] == $rowDelegation['DEL_INDEX']) {
+ $row['TAS_TITLE'] = $content->load( 'TAS_TITLE', '', $rowDelegation['TAS_UID'], SYS_LANG );
+ break;
+ }
+ }
+ }
+
+ $data[] = $row;
+ }
+ $response = array();
+ $response['totalCount'] = $totalCount;
+ $response['data'] = $data;
+ die(G::json_encode($response));
+ break;
+ case 'updateStatusMessage':
+ if (isset($_REQUEST['APP_MSG_UID']) && isset($_REQUEST['APP_MSG_STATUS'])) {
+ $message = new AppMessage();
+ $result = $message->updateStatus($_REQUEST['APP_MSG_UID'], $_REQUEST['APP_MSG_STATUS']);
+ }
+ break;
+}
+
diff --git a/workflow/engine/templates/mails/emailList.html b/workflow/engine/templates/mails/emailList.html
new file mode 100644
index 000000000..432f567b5
--- /dev/null
+++ b/workflow/engine/templates/mails/emailList.html
@@ -0,0 +1,3 @@
+
diff --git a/workflow/engine/templates/mails/emailList.js b/workflow/engine/templates/mails/emailList.js
new file mode 100644
index 000000000..ff1611a64
--- /dev/null
+++ b/workflow/engine/templates/mails/emailList.js
@@ -0,0 +1,355 @@
+/*
+ * @author: Marco Antonio
+ * Agos 17st, 2012
+ */
+new Ext.KeyMap(document, [{
+ key: Ext.EventObject.F5,
+ fn: function(keycode, e) {
+ if (! e.ctrlKey) {
+ if (Ext.isIE) {
+ // IE6 doesn't allow cancellation of the F5 key, so trick it into
+ // thinking some other key was pressed (backspace in this case)
+ e.browserEvent.keyCode = 8;
+ }
+ e.stopEvent();
+ document.location = document.location;
+ } else {
+ Ext.Msg.alert('Refresh', 'You clicked: CTRL-F5');
+ }
+ }
+}
+]);
+
+var store;
+var cmodel;
+var emailsGrid;
+var actions;
+var filterStatus = '';
+
+Ext.onReady(function(){
+ Ext.QuickTips.init();
+ var resultTpl = new Ext.XTemplate(
+ '',
+ ' {APP_PRO_TITLE}',
+ '
'
+ );
+
+ var columnRenderer = function(data, metadata, record, rowIndex,columnIndex, store) {
+ var new_text = metadata.style.split(';');
+ var style = '';
+ for (var i = 0; i < new_text.length -1 ; i++) {
+ var chain = new_text[i] +";";
+ if (chain.indexOf('width') == -1) {
+ style = style + chain;
+ }
+ }
+ metadata.attr = 'ext:qtip="' + data + '" style="'+ style +' white-space: normal; "';
+ return data;
+ };
+
+ var dateFrom = new Ext.form.DateField({
+ id:'dateFrom',
+ format: 'Y-m-d',
+ width: 120,
+ value: ''
+ });
+
+ var dateTo = new Ext.form.DateField({
+ id:'dateTo',
+ format: 'Y-m-d',
+ width: 120,
+ value: ''
+ });
+
+ // ComboBox Status
+ var comboStatus = new Ext.form.ComboBox({
+ width : 90,
+ boxMaxWidth : 90,
+ editable : false,
+ mode : 'local',
+ emptyText: _('ID_SELECT_STATUS'),
+ store : new Ext.data.ArrayStore({
+ fields: ['id', 'value'],
+ data : statusValues
+ }),
+ valueField : 'id',
+ displayField : 'value',
+ triggerAction : 'all',
+ listeners:{
+ scope: this,
+ 'select': function() {
+ filterStatus = comboStatus.value;
+ store.setBaseParam( 'status', filterStatus);
+ store.setBaseParam( 'start', 0);
+ store.setBaseParam( 'limit', 25);
+ store.load();
+ }
+ },
+ iconCls: 'no-icon'
+ });
+
+ var comboProcess = new Ext.form.ComboBox({
+ width : 200,
+ boxMaxWidth : 200,
+ editable : true,
+ displayField : 'APP_PRO_TITLE',
+ valueField : 'PRO_UID',
+ forceSelection: false,
+ emptyText: _('ID_EMPTY_PROCESSES'),
+ selectOnFocus: true,
+ tpl: resultTpl,
+
+ typeAhead: true,
+ mode: 'local',
+ autocomplete: true,
+ triggerAction: 'all',
+
+ store : new Ext.data.ArrayStore({
+ fields : ['PRO_UID','APP_PRO_TITLE'],
+ data : processValues
+ }),
+ listeners:{
+ scope: this,
+ 'select': function() {
+ filterProcess = comboProcess.value;
+
+ store.setBaseParam('process', filterProcess);
+ store.setBaseParam( 'start', 0);
+ store.setBaseParam( 'limit', 25);
+ store.load();
+ }},
+ iconCls: 'no-icon'
+ });
+
+ actions = _addPluginActions([ {xtype: 'tbfill'}, _('ID_PROCESS'), comboProcess, '-', /*_('ID_TYPE'), comboType, '-',*/ _('ID_STATUS'), comboStatus, _('ID_DELEGATE_DATE_FROM'),
+ dateFrom,
+ ' ',
+ _('ID_TO'),
+ dateTo,
+ new Ext.Button ({
+ text: _('ID_FILTER_BY_DELEGATED_DATE'),
+ handler: function(){
+ store.setBaseParam('dateFrom', dateFrom.getValue());
+ store.setBaseParam('dateTo', dateTo.getValue());
+ store.load({params:{ start : 0 , limit : 25 }});
+ }
+ })
+ ]);
+
+ var stepsFields = Ext.data.Record.create([
+ {name : 'APP_MSG_TYPE', type: 'string'},
+ {name : 'APP_MSG_FROM', type: 'string'},
+ {name : 'APP_MSG_TO', type: 'string'},
+ {name : 'APP_MSG_DATE', type: 'string'},
+ {name : 'APP_MSG_STATUS', type: 'string'}
+
+ ]);
+
+ store = new Ext.data.Store( {
+ proxy : new Ext.data.HttpProxy({
+ url: 'emailsAjax?request=MessageList'
+ }),
+ remoteSort : true,
+ sortInfo : stepsFields,
+ reader : new Ext.data.JsonReader( {
+ root: 'data',
+ totalProperty: 'totalCount',
+ fields : [
+ {name : 'APP_MSG_UID'},
+ {name : 'APP_UID'},
+ {name : 'DEL_INDEX'},
+ {name : 'PRO_UID'},
+ {name : 'TAS_UID'},
+ {name : 'PRO_TITLE'},
+ {name : 'TAS_TITLE'},
+ {name : 'APP_MSG_TYPE'},
+ {name : 'APP_MSG_SUBJECT'},
+ {name : 'APP_MSG_FROM'},
+ {name : 'APP_MSG_TO'},
+ {name : 'APP_MSG_STATUS'},
+ {name : 'APP_MSG_DATE'},
+ {name : 'APP_MSG_SEND_DATE'},
+ {name : 'APP_MSG_BODY'}
+ ]
+ })
+ });
+ store.setDefaultSort('APP_MSG_DATE', 'desc');
+
+ var expander = new Ext.ux.grid.RowExpander({
+ tpl : new Ext.Template(
+ '
'+_('ID_PREVIEW')+':
'+
+ ''+
+ ''+
+ '
'+
+ '
{APP_MSG_BODY}
'+
+ '
'+
+ '
'+
+ ''+
+ '
'
+ )
+ });
+
+ var statusValuesGrid = statusValues;
+ statusValuesGrid.splice( 0, 1 );
+ cmodel = new Ext.grid.ColumnModel({
+ viewConfig: {
+ forceFit:true,
+ cls:"x-grid-empty",
+ emptyText: _('ID_NO_RECORDS_FOUND')
+ },
+ defaults: {
+ width: 50
+ },
+ columns: [
+ expander,
+ {id:'APP_MSG_UID', dataIndex: 'APP_MSG_UID', hidden:true, hideable:false},
+ {header: 'APP_UID', dataIndex: 'APP_UID', hidden:true, hideable:false},
+ {header: 'DEL_INDEX', dataIndex: 'DEL_INDEX', hidden:true, hideable:false},
+ {header: 'PRO_UID', dataIndex: 'PRO_UID', hidden:true, hideable:false, sortable: false},
+ {header: 'TAS_UID', dataIndex: 'TAS_UID', hidden:true, hideable:false, sortable: false},
+ {header: _('ID_PROCESS'), dataIndex: 'PRO_TITLE', width: 100, hidden: false,renderer: columnRenderer, sortable: false},
+ {header: _('ID_TASK'), dataIndex: 'TAS_TITLE', width: 100, hidden: false,renderer: columnRenderer, sortable: false},
+ {header: _('ID_TYPE'), dataIndex: 'APP_MSG_TYPE', width: 50, hidden: false,renderer: columnRenderer, sortable: true},
+ {header: _('ID_DATE_LABEL'), dataIndex: 'APP_MSG_DATE', width: 80,hidden:false, renderer: columnRenderer, sortable: true},
+ //{header: _('ID_DERIVED'), dataIndex: 'APP_MSG_SEND_DATE', width: 80,hidden:false,hideable:false, renderer: columnRenderer, sortable: true},
+ {header: _('ID_SUBJECT'), dataIndex: 'APP_MSG_SUBJECT', width: 80,hidden:false, renderer: columnRenderer, sortable: true},
+ {header: _('ID_FROM'), dataIndex: 'APP_MSG_FROM', width: 80,hidden:false,renderer: columnRenderer, sortable: true},
+ {header: _('ID_TO'), dataIndex: 'APP_MSG_TO', width: 80,hidden:false,renderer: columnRenderer, sortable: true},
+ //{header: _('ID_STATUS'), dataIndex: 'APP_MSG_STATUS', width: 50,hidden:false,hideable:false, renderer: columnRenderer, sortable: true}
+ {
+ header: _('ID_STATUS'),
+ dataIndex: 'APP_MSG_STATUS',
+ width: 50,
+ //hidden:false,
+ //hideable:false,
+ renderer: columnRenderer,
+ //sortable: true,
+ editor: new Ext.form.ComboBox({
+ listClass: 'x-combo-list-small',
+ mode: 'local',
+ displayField:'value',
+ lazyRender: true,
+ triggerAction: 'all',
+ valueField:'id',
+ editable: false,
+ store: new Ext.data.ArrayStore({
+ fields: ['id', 'value'],
+ data : statusValuesGrid
+ }),
+ listeners: {
+ select: function(a, b) {
+ var row = emailsGrid.getSelectionModel().getSelected();
+ Ext.MessageBox.show({ msg: _('ID_PROCESSING'), wait:true,waitConfig: {interval:200} });
+ Ext.Ajax.request({
+ url : 'emailsAjax' ,
+ params : {
+ request : 'updateStatusMessage',
+ APP_MSG_UID: row.data.APP_MSG_UID,
+ APP_MSG_STATUS: this.value
+ },
+ success: function ( result, request ) {
+ Ext.MessageBox.hide();
+ },
+ failure: function ( result, request) {
+ if (typeof(result.responseText) != 'undefined') {
+ Ext.MessageBox.alert(_('ID_FAILED'), result.responseText);
+ }
+ }
+ });
+ }
+ }
+ })
+ }
+ ]
+ });
+
+ smodel = new Ext.grid.RowSelectionModel({
+ singleSelect: true
+ });
+
+ bbarpaging = new Ext.PagingToolbar({
+ pageSize : 25,
+ store : store,
+ displayInfo : true,
+ displayMsg : _('ID_GRID_PAGE_DISPLAYING_EMAIL_MESSAGE') + ' ',
+ emptyMsg : _('ID_GRID_PAGE_NO_EMAIL_MESSAGE')
+ });
+
+ emailsGrid = new Ext.grid.EditorGridPanel({
+ region: 'center',
+ layout: 'fit',
+ id: 'emailsGrid',
+ height:100,
+ autoWidth : true,
+ stateful : true,
+ stateId : 'grid',
+ enableColumnResize: true,
+ enableHdMenu: true,
+ frame:false,
+ columnLines: false,
+ viewConfig: {
+ forceFit:true
+ },
+ clicksToEdit: 1,
+ title : _('ID_EMAILS'),
+ store: store,
+ cm: cmodel,
+ sm: smodel,
+ tbar: actions,
+ bbar: bbarpaging,
+ plugins: expander,
+ listeners: {
+ render: function(){
+ this.loadMask = new Ext.LoadMask(this.body, {msg:_('ID_LOADING_GRID')});
+ }
+ }
+ });
+
+ emailsGrid.store.load();
+
+ viewport = new Ext.Viewport({
+ layout: 'fit',
+ autoScroll: false,
+ items: [
+ emailsGrid
+ ]
+ });
+ });
+
+var _addPluginActions = function(defaultactions) {
+ try {
+ if (Ext.isArray(_pluginactions)) {
+ if (_pluginactions.length > 0) {
+ var positionToInsert = _tbfillPosition(defaultactions);
+ var leftactions = defaultactions.slice(0, positionToInsert);
+ var rightactions = defaultactions.slice(positionToInsert, defaultactions.length - 1);
+ return leftactions.concat(_pluginactions.concat(rightactions));
+ }
+ else {
+ return defaultactions;
+ }
+ }
+ else {
+ return defaultactions;
+ }
+ }
+ catch (error) {
+ return defaultactions;
+ }
+};
+
+var _tbfillPosition = function(actions) {
+ try {
+ for (var i = 0; i < actions.length; i++) {
+ if (Ext.isObject(actions[i])) {
+ if (actions[i].xtype == 'tbfill') {
+ return i;
+ }
+ }
+ }
+ return i;
+ }
+ catch (error) {
+ return 0;
+ }
+};
\ No newline at end of file