diff --git a/workflow/engine/methods/cases/casesSchedulerLog_Ajax.php b/workflow/engine/methods/cases/casesSchedulerLog_Ajax.php new file mode 100644 index 000000000..9b632c9d9 --- /dev/null +++ b/workflow/engine/methods/cases/casesSchedulerLog_Ajax.php @@ -0,0 +1,44 @@ +. + * + * For more information, contact Colosa Inc, 2566 Le Jeune Rd., + * Coral Gables, FL, 33134, USA, or email info@colosa.com. + * + */ +//if (($RBAC_Response=$RBAC->userCanAccess("PM_USERS"))!=1) return $RBAC_Response; +G::LoadInclude('ajax'); +$_POST['action'] = get_ajax_value('action'); + +switch ($_POST['action']) +{ + case 'updatePageSize': + G::LoadClass('configuration'); + $c = new Configurations(); + $arr['pageSize'] = $_REQUEST['size']; + $arr['dateSave'] = date('Y-m-d H:i:s'); + $config = Array(); + $config[] = $arr; + $c->aConfig = $config; + $c->saveConfig('casesSchedulerLogList', 'pageSize','',$_SESSION['USER_LOGGED']); + echo '{success: true}'; + break; +break; +} +?> diff --git a/workflow/engine/methods/cases/cases_Scheduler_Log.php b/workflow/engine/methods/cases/cases_Scheduler_Log.php index 174222d18..a650e91fc 100644 --- a/workflow/engine/methods/cases/cases_Scheduler_Log.php +++ b/workflow/engine/methods/cases/cases_Scheduler_Log.php @@ -26,6 +26,10 @@ if (($RBAC_Response=$RBAC->userCanAccess("PM_LOGIN"))!=1) return $RBAC_Response; $G_PUBLISH = new Publisher; +G::LoadClass('configuration'); +$c = new Configurations(); +$configPage = $c->getConfiguration('casesSchedulerLogList', 'pageSize','',$_SESSION['USER_LOGGED']); +$Config['pageSize'] = isset($configPage['pageSize']) ? $configPage['pageSize'] : 20; $oHeadPublisher =& headPublisher::getSingleton(); @@ -33,11 +37,9 @@ $oHeadPublisher =& headPublisher::getSingleton(); $oHeadPublisher->addExtJsScript('cases/casesSchedulerLog', false); //adding a javascript file .js $oHeadPublisher->addContent('cases/casesSchedulerLog'); //adding a html file .html. -$labels = G::getTranslations(Array('ID_DATE_LABEL','ID_TIME_LABEL','ID_USER','ID_RESULT', 'ID_CREATED_CASE_STATUS', - 'ID_ROUTED_CASE_STATUS','ID_CLOSE','ID_LOG_CASE_SCHEDULER','ID_VIEW','ID_TITLE_LOG_DETAIL','ID_ENTER_SEARCH_TERM','ID_SEARCH', - 'ID_SCHEDULER_TASK','ID_TASK_ID','ID_PROCESS_ID','ID_EXECUTION_DATE','ID_EXECUTION_HOUR','ID_EXECUTION_STATUS')); +$oHeadPublisher->assign('CONFIG', $Config); + -$oHeadPublisher->assign('TRANSLATIONS', $labels); G::RenderPage('publish', 'extJs'); ?> diff --git a/workflow/engine/methods/cases/data_casesSchedulerLog.php b/workflow/engine/methods/cases/data_casesSchedulerLog.php index e5d2316a6..155793c2f 100644 --- a/workflow/engine/methods/cases/data_casesSchedulerLog.php +++ b/workflow/engine/methods/cases/data_casesSchedulerLog.php @@ -25,10 +25,14 @@ require_once 'classes/model/LogCasesSchedulerPeer.php'; require_once 'classes/model/LogCasesScheduler.php'; +G::LoadClass('configuration'); + +$co = new Configurations(); +$config = $co->getConfiguration('casesSchedulerLogList', 'pageSize','',$_SESSION['USER_LOGGED']); +$limit_size = isset($config['pageSize']) ? $config['pageSize'] : 20; $start = isset($_REQUEST['start'])? $_REQUEST['start'] : 0; -$limit = isset($_REQUEST['limit'])? $_REQUEST['limit'] : 20; - +$limit = isset($_REQUEST['limit'])? $_REQUEST['limit'] : $limit_size; $filter = (isset($_POST['textFilter'])) ? $_POST['textFilter'] : ''; $oCriteria = new Criteria('workflow'); diff --git a/workflow/engine/templates/cases/casesSchedulerLog.js b/workflow/engine/templates/cases/casesSchedulerLog.js index cf26835d9..a62e322ad 100644 --- a/workflow/engine/templates/cases/casesSchedulerLog.js +++ b/workflow/engine/templates/cases/casesSchedulerLog.js @@ -5,20 +5,20 @@ //Keyboard Events 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'); - } + 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; @@ -32,193 +32,225 @@ var w; var viewButton; var searchButton; var contextMenu; - +var pageSize; + Ext.onReady(function(){ - Ext.QuickTips.init(); - - viewButton = new Ext.Action({ - text: TRANSLATIONS.ID_VIEW, - iconCls: 'button_menu_ext ss_sprite ss_table', - handler: ShowSelectedLog, - disabled: true - }); - - searchButton = new Ext.Action({ - text: TRANSLATIONS.ID_SEARCH, - handler: DoSearch - }); - - contextMenu = new Ext.menu.Menu({ - items: [viewButton] - }); - - searchText = new Ext.form.TextField ({ - id: 'searchTxt', - ctCls:'pm_search_text_field', - allowBlank: true, - width: 150, - emptyText: TRANSLATIONS.ID_ENTER_SEARCH_TERM,//'enter search term', - listeners: { - specialkey: function(f,e){ - if (e.getKey() == e.ENTER) { - DoSearch(); - } - }, - focus: function(f,e) { - var row = infoGrid.getSelectionModel().getSelected(); - infoGrid.getSelectionModel().deselectRow(infoGrid.getStore().indexOf(row)); - } + Ext.QuickTips.init(); + + pageSize = parseInt(CONFIG.pageSize); + + viewButton = new Ext.Action({ + text: _('ID_VIEW'), + iconCls: 'button_menu_ext ss_sprite ss_table', + handler: ShowSelectedLog, + disabled: true + }); + + searchButton = new Ext.Action({ + text: _('ID_SEARCH'), + handler: DoSearch + }); + + contextMenu = new Ext.menu.Menu({ + items: [viewButton] + }); + + searchText = new Ext.form.TextField ({ + id: 'searchTxt', + ctCls:'pm_search_text_field', + allowBlank: true, + width: 150, + emptyText: _('ID_ENTER_SEARCH_TERM'),//'enter search term', + listeners: { + specialkey: function(f,e){ + if (e.getKey() == e.ENTER) { + DoSearch(); } - }); - - clearTextButton = new Ext.Action({ - text: 'X', - ctCls:'pm_search_x_button', - handler: GridByDefault - }); - - viewForm = new Ext.FormPanel({ - url: 'data_casesSchedulerLog', - frame: true, - title: TRANSLATIONS.ID_TITLE_LOG_DETAIL, - labelWidth: 150, - items:[ - {xtype: 'label', fieldLabel: TRANSLATIONS.ID_SCHEDULER_TASK, id: 'stask', width: 250}, - {xtype: 'label', fieldLabel: TRANSLATIONS.ID_TASK_ID, id: 'task', width: 250}, - {xtype: 'label', fieldLabel: TRANSLATIONS.ID_PROCESS_ID, id: 'process', width: 250}, - {xtype: 'label', fieldLabel: TRANSLATIONS.ID_USER, id: 'user', width: 250}, - {xtype: 'label', fieldLabel: TRANSLATIONS.ID_EXECUTION_DATE, id: 'date', width: 250}, - {xtype: 'label', fieldLabel: TRANSLATIONS.ID_EXECUTION_HOUR, id: 'hour', width: 250}, - {xtype: 'label', fieldLabel: TRANSLATIONS.ID_EXECUTION_STATUS, id: 'status', width: 250}, - {xtype: 'label', fieldLabel: TRANSLATIONS.ID_CREATED_CASE_STATUS, id: 'cstatus', width: 250}, - {xtype: 'label', fieldLabel: TRANSLATIONS.ID_ROUTED_CASE_STATUS, id: 'rstatus', width: 250} - ], - - buttons: [ - {text: TRANSLATIONS.ID_CLOSE, handler: CloseView} - ] - }); + }, + focus: function(f,e) { + var row = infoGrid.getSelectionModel().getSelected(); + infoGrid.getSelectionModel().deselectRow(infoGrid.getStore().indexOf(row)); + } + } + }); - store = new Ext.data.GroupingStore( { - proxy : new Ext.data.HttpProxy({ - url: 'data_casesSchedulerLog' - }), - reader : new Ext.data.JsonReader( { - root: 'rows', - totalProperty: 'results', - fields : [ - {name : 'LOG_CASE_UID'}, - {name : 'PRO_UID'}, - {name : 'TAS_UID'}, - {name : 'USR_NAME'}, - {name : 'EXEC_DATE'}, - {name : 'EXEC_HOUR'}, - {name : 'RESULT'}, - {name : 'SCH_UID'}, - {name : 'WS_CREATE_CASE_STATUS'}, - {name : 'WS_ROUTE_CASE_STATUS'} - ] - }) - }); - - cmodel = new Ext.grid.ColumnModel({ - defaults: { - width: 50, - sortable: true - }, - columns: [ - {id:'LOG_CASE_UID', dataIndex: 'LOG_CASE_UID', hidden:true, hideable:false}, - {header: TRANSLATIONS.ID_DATE_LABEL, dataIndex: 'EXEC_DATE', width: 30, align:'left'}, - {header: TRANSLATIONS.ID_TIME_LABEL, dataIndex: 'EXEC_HOUR', width: 30, hidden:false, align:'left'}, - {header: TRANSLATIONS.ID_USER, dataIndex: 'USR_NAME', width: 40, hidden:false, align:'left'}, - {header: TRANSLATIONS.ID_RESULT, dataIndex: 'RESULT', width: 40, hidden:false, align:'left'}, - {header: TRANSLATIONS.ID_CREATED_CASE_STATUS, dataIndex: 'WS_CREATE_CASE_STATUS', width: 80, hidden:false, align:'left'}, - {header: TRANSLATIONS.ID_ROUTED_CASE_STATUS, dataIndex: 'WS_ROUTE_CASE_STATUS', width: 80, hidden:false, align:'left'} - ] - }); - - smodel = new Ext.grid.RowSelectionModel({ - singleSelect: true, - listeners:{ - rowselect: function(sm){ - viewButton.enable(); - }, - rowdeselect: function(sm){ - viewButton.disable(); - } - } - }); - - bbarpaging = new Ext.PagingToolbar({ - pageSize: 20, - store: store - }); + clearTextButton = new Ext.Action({ + text: 'X', + ctCls:'pm_search_x_button', + handler: GridByDefault + }); - infoGrid = new Ext.grid.GridPanel({ - title : TRANSLATIONS.ID_LOG_CASE_SCHEDULER, - region: 'center', - layout: 'fit', - id: 'infoGrid', - height:100, - autoWidth : true, - stateful : true, - stateId : 'grid', - enableColumnResize: true, - enableHdMenu: true, - frame:false, - iconCls:'icon-grid', - columnLines: false, - viewConfig: { - forceFit:true - }, - store: store, - cm: cmodel, - sm: smodel, - tbar: [viewButton,{xtype: 'tbfill'},searchText,clearTextButton,searchButton], - bbar: [{xtype: 'tbfill'}, bbarpaging], - listeners: { - rowdblclick: ShowSelectedLog - }, - view: new Ext.grid.GroupingView({ - forceFit:true, - groupTextTpl: '{text}' - }) - }); - - infoGrid.on('rowcontextmenu', - function (grid, rowIndex, evt) { - var sm = grid.getSelectionModel(); - sm.selectRow(rowIndex, sm.isSelected(rowIndex)); - }, - this - ); - - infoGrid.on('contextmenu', - function (evt) { - evt.preventDefault(); - }, - this - ); - - infoGrid.addListener('rowcontextmenu',onMessageContextMenu,this); + viewForm = new Ext.FormPanel({ + url: 'data_casesSchedulerLog', + frame: true, + title: _('ID_TITLE_LOG_DETAIL'), + labelWidth: 150, + items:[ + {xtype: 'label', fieldLabel: _('ID_SCHEDULER_TASK'), id: 'stask', width: 250}, + {xtype: 'label', fieldLabel: _('ID_TASK_ID'), id: 'task', width: 250}, + {xtype: 'label', fieldLabel: _('ID_PROCESS_ID'), id: 'process', width: 250}, + {xtype: 'label', fieldLabel: _('ID_USER'), id: 'user', width: 250}, + {xtype: 'label', fieldLabel: _('ID_EXECUTION_DATE'), id: 'date', width: 250}, + {xtype: 'label', fieldLabel: _('ID_EXECUTION_HOUR'), id: 'hour', width: 250}, + {xtype: 'label', fieldLabel: _('ID_EXECUTION_STATUS'), id: 'status', width: 250}, + {xtype: 'label', fieldLabel: _('ID_CREATED_CASE_STATUS'), id: 'cstatus', width: 250}, + {xtype: 'label', fieldLabel: _('ID_ROUTED_CASE_STATUS'), id: 'rstatus', width: 250} + ], - GridByDefault(); + buttons: [ + {text: _('ID_CLOSE'), handler: CloseView} + ] + }); - viewport = new Ext.Viewport({ - layout: 'fit', - autoScroll: false, - items: [ - infoGrid - ] - }); + store = new Ext.data.GroupingStore( { + proxy : new Ext.data.HttpProxy({ + url: 'data_casesSchedulerLog' + }), + reader : new Ext.data.JsonReader( { + root: 'rows', + totalProperty: 'results', + fields : [ + {name : 'LOG_CASE_UID'}, + {name : 'PRO_UID'}, + {name : 'TAS_UID'}, + {name : 'USR_NAME'}, + {name : 'EXEC_DATE'}, + {name : 'EXEC_HOUR'}, + {name : 'RESULT'}, + {name : 'SCH_UID'}, + {name : 'WS_CREATE_CASE_STATUS'}, + {name : 'WS_ROUTE_CASE_STATUS'} + ] + }) + }); + + cmodel = new Ext.grid.ColumnModel({ + defaults: { + width: 50, + sortable: true + }, + columns: [ + {id:'LOG_CASE_UID', dataIndex: 'LOG_CASE_UID', hidden:true, hideable:false}, + {header: _('ID_DATE_LABEL'), dataIndex: 'EXEC_DATE', width: 30, align:'left'}, + {header: _('ID_TIME_LABEL'), dataIndex: 'EXEC_HOUR', width: 30, hidden:false, align:'left'}, + {header: _('ID_USER'), dataIndex: 'USR_NAME', width: 40, hidden:false, align:'left'}, + {header: _('ID_RESULT'), dataIndex: 'RESULT', width: 40, hidden:false, align:'left'}, + {header: _('ID_CREATED_CASE_STATUS'), dataIndex: 'WS_CREATE_CASE_STATUS', width: 80, hidden:false, align:'left'}, + {header: _('ID_ROUTED_CASE_STATUS'), dataIndex: 'WS_ROUTE_CASE_STATUS', width: 80, hidden:false, align:'left'} + ] + }); + + smodel = new Ext.grid.RowSelectionModel({ + singleSelect: true, + listeners:{ + rowselect: function(sm){ + viewButton.enable(); + }, + rowdeselect: function(sm){ + viewButton.disable(); + } + } + }); + + storePageSize = new Ext.data.SimpleStore({ + fields: ['size'], + data: [['20'],['30'],['40'],['50'],['100']], + autoLoad: true + }); + + comboPageSize = new Ext.form.ComboBox({ + typeAhead : false, + mode : 'local', + triggerAction : 'all', + store: storePageSize, + valueField: 'size', + displayField: 'size', + width: 50, + editable: false, + listeners:{ + select: function(c,d,i){ + UpdatePageConfig(d.data['size']); + bbarpaging.pageSize = parseInt(d.data['size']); + bbarpaging.moveFirst(); + } + } + }); + + comboPageSize.setValue(pageSize); + + bbarpaging = new Ext.PagingToolbar({ + pageSize: pageSize, + store: store, + displayInfo: true, + displayMsg: _('ID_GRID_PAGE_DISPLAYING_ROWS_MESSAGE') + '    ', + emptyMsg: _('ID_GRID_PAGE_NO_ROWS_MESSAGE'), + items: ['-',_('ID_PAGE_SIZE')+':',comboPageSize] + }); + + infoGrid = new Ext.grid.GridPanel({ + title : _('ID_LOG_CASE_SCHEDULER'), + region: 'center', + layout: 'fit', + id: 'infoGrid', + height:100, + autoWidth : true, + stateful : true, + stateId : 'grid', + enableColumnResize: true, + enableHdMenu: true, + frame:false, + columnLines: false, + viewConfig: { + forceFit:true + }, + store: store, + cm: cmodel, + sm: smodel, + tbar: [viewButton,{xtype: 'tbfill'},searchText,clearTextButton,searchButton], + bbar: bbarpaging, + listeners: { + rowdblclick: ShowSelectedLog + }, + view: new Ext.grid.GroupingView({ + forceFit:true, + groupTextTpl: '{text}' + }) + }); + + infoGrid.on('rowcontextmenu', + function (grid, rowIndex, evt) { + var sm = grid.getSelectionModel(); + sm.selectRow(rowIndex, sm.isSelected(rowIndex)); + }, + this + ); + + infoGrid.on('contextmenu', + function (evt) { + evt.preventDefault(); + }, + this + ); + + infoGrid.addListener('rowcontextmenu',onMessageContextMenu,this); + + GridByDefault(); + + viewport = new Ext.Viewport({ + layout: 'fit', + autoScroll: false, + items: [ + infoGrid + ] + }); }); //Funtion Handles Context Menu Opening onMessageContextMenu = function (grid, rowIndex, e) { - e.stopEvent(); - var coords = e.getXY(); - contextMenu.showAt([coords[0], coords[1]]); + e.stopEvent(); + var coords = e.getXY(); + contextMenu.showAt([coords[0], coords[1]]); } //Do Nothing Function @@ -226,43 +258,52 @@ DoNothing = function(){} //Handles DoubleClick's Grid ShowSelectedLog = function(){ - rowSelected = infoGrid.getSelectionModel().getSelected(); - if (rowSelected){ - Ext.getCmp('stask').setText(rowSelected.data.SCH_UID); - Ext.getCmp('task').setText(rowSelected.data.TAS_UID); - Ext.getCmp('process').setText(rowSelected.data.PRO_UID); - Ext.getCmp('user').setText(rowSelected.data.USR_NAME); - Ext.getCmp('date').setText(rowSelected.data.EXEC_DATE); - Ext.getCmp('hour').setText(rowSelected.data.EXEC_HOUR); - Ext.getCmp('status').setText(rowSelected.data.RESULT); - Ext.getCmp('cstatus').setText(rowSelected.data.WS_CREATE_CASE_STATUS); - Ext.getCmp('rstatus').setText(rowSelected.data.WS_ROUTE_CASE_STATUS); - w = new Ext.Window({ - height: 320, - width: 550, - resizable: false, - closable: false, - items: [viewForm] - }); - w.show(); - } + rowSelected = infoGrid.getSelectionModel().getSelected(); + if (rowSelected){ + Ext.getCmp('stask').setText(rowSelected.data.SCH_UID); + Ext.getCmp('task').setText(rowSelected.data.TAS_UID); + Ext.getCmp('process').setText(rowSelected.data.PRO_UID); + Ext.getCmp('user').setText(rowSelected.data.USR_NAME); + Ext.getCmp('date').setText(rowSelected.data.EXEC_DATE); + Ext.getCmp('hour').setText(rowSelected.data.EXEC_HOUR); + Ext.getCmp('status').setText(rowSelected.data.RESULT); + Ext.getCmp('cstatus').setText(rowSelected.data.WS_CREATE_CASE_STATUS); + Ext.getCmp('rstatus').setText(rowSelected.data.WS_ROUTE_CASE_STATUS); + w = new Ext.Window({ + autoHeight: true, + width: 550, + resizable: false, + closable: false, + modal: true, + items: [viewForm] + }); + w.show(); + } } //Load Grid By Default GridByDefault = function(){ - searchText.reset(); - infoGrid.store.load(); + searchText.reset(); + infoGrid.store.load(); } //Close View Dialog CloseView = function(){ - w.hide(); + w.hide(); } //Do Search Function DoSearch = function(){ - infoGrid.store.load({params: {textFilter: searchText.getValue()}}); + infoGrid.store.load({params: {textFilter: searchText.getValue()}}); } +//Update Page Size Configuration +UpdatePageConfig = function(pageSize){ + Ext.Ajax.request({ + url: 'casesSchedulerLog_Ajax', + params: {action:'updatePageSize', size: pageSize} + }); +}; +