diff --git a/workflow/engine/controllers/dashboard.php b/workflow/engine/controllers/dashboard.php index 13fe3a4b1..21b2cf49f 100644 --- a/workflow/engine/controllers/dashboard.php +++ b/workflow/engine/controllers/dashboard.php @@ -6,19 +6,56 @@ */ class Dashboard extends Controller { - /** - * getting default list - * @param object $httpData - */ + + // Functions for the dashboards users module - Start + public function index($httpData) { $this->includeExtJS('dashboard/index'); $this->includeExtJSLib('ux/portal'); G::RenderPage('publish', 'extJs'); } + public function renderDashletInstance($dasInsUid) { + // + } + + // Functions for the dashboards users module - End + + // Functions for the dasboards administration module - Start + public function dashletsList() { - echo 'dashletsList'; + $headPublisher =& headPublisher::getSingleton(); + $headPublisher->addExtJsScript('dashboard/dashletsList', false); + $headPublisher->addContent('dashboard/dashletsList'); G::RenderPage('publish', 'extJs'); } + public function getDashletsInstances() { + // + } + + public function dashletInstanceForm($dasInsUid) { + $headPublisher =& headPublisher::getSingleton(); + $headPublisher->addExtJsScript('dashboard/dashletInstanceForm', false); + $headPublisher->addContent('dashboard/dashletInstanceForm'); + if ($dasInsUid != '') { + // load data before render the form + } + G::RenderPage('publish', 'extJs'); + } + + public function saveDashletInstance($data) { + // + } + + public function deleteDashletInstance($dasInsUid) { + // + } + + public function getOwnersByType($type) { + // + } + + // Functions for the dasboards administration module - End + } \ No newline at end of file diff --git a/workflow/engine/templates/dashboard/dashletInstanceForm.html b/workflow/engine/templates/dashboard/dashletInstanceForm.html new file mode 100644 index 000000000..8f2f1f777 --- /dev/null +++ b/workflow/engine/templates/dashboard/dashletInstanceForm.html @@ -0,0 +1,3 @@ +
+
+
\ No newline at end of file diff --git a/workflow/engine/templates/dashboard/dashletInstanceForm.js b/workflow/engine/templates/dashboard/dashletInstanceForm.js new file mode 100644 index 000000000..ff45749c8 --- /dev/null +++ b/workflow/engine/templates/dashboard/dashletInstanceForm.js @@ -0,0 +1 @@ +alert('dashletInstanceForm'); \ No newline at end of file diff --git a/workflow/engine/templates/dashboard/dashletsList.html b/workflow/engine/templates/dashboard/dashletsList.html new file mode 100644 index 000000000..29c2c3e8d --- /dev/null +++ b/workflow/engine/templates/dashboard/dashletsList.html @@ -0,0 +1,3 @@ +
+
+
\ No newline at end of file diff --git a/workflow/engine/templates/dashboard/dashletsList.js b/workflow/engine/templates/dashboard/dashletsList.js new file mode 100644 index 000000000..7acdb2bff --- /dev/null +++ b/workflow/engine/templates/dashboard/dashletsList.js @@ -0,0 +1,364 @@ +new Ext.KeyMap(document, [{ + key: Ext.EventObject.F5, + fn: function(keycode, e) { + if (!e.ctrlKey) { + if (Ext.isIE) { + e.browserEvent.keyCode = 8; + } + e.stopEvent(); + document.location = document.location; + }else{ + Ext.Msg.alert('Refresh', 'You clicked: CTRL-F5'); + } + } +}, +{ + key: Ext.EventObject.DELETE, + fn: function(k,e) { + iGrid = Ext.getCmp('infoGrid'); + rowSelected = iGrid.getSelectionModel().getSelected(); + if (rowSelected) { + deleteDashletInstance(); + } + } +}, +{ + key: Ext.EventObject.F2, + fn: function(k,e) { + iGrid = Ext.getCmp('infoGrid'); + rowSelected = iGrid.getSelectionModel().getSelected(); + if (rowSelected){ + editDashletInstance(); + } + } +} +]); + +var store; +var cmodel; +var infoGrid; +var viewport; +var smodel; +var newButton; +var editButton; +var deleteButton; +var permissionsButton; +var searchButton; +var serachText; +var newForm; +var comboStatusStore; +var editForm; +var contextMenu; +var w; +var actionButtons; + +Ext.onReady(function(){ + Ext.QuickTips.init(); + + pageSize = 20; //parseInt(CONFIG.pageSize); + + newButton = new Ext.Action({ + text: _('ID_NEW'), + iconCls: 'button_menu_ext ss_sprite ss_add', + handler: newDashletInstance + }); + + editButton = new Ext.Action({ + text: _('ID_EDIT'), + iconCls: 'button_menu_ext ss_sprite ss_pencil', + handler: editDashletInstance, + disabled: true + }); + + deleteButton = new Ext.Action({ + text: _('ID_DELETE'), + iconCls: 'button_menu_ext ss_sprite ss_delete', + handler: deleteDashletInstance, + disabled: true + }); + + searchButton = new Ext.Action({ + text: _('ID_SEARCH'), + handler: doSearch + }); + + contextMenu = new Ext.menu.Menu({ + items: [editButton, deleteButton] + }); + + searchText = new Ext.form.TextField ({ + id: 'searchText', + 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(); + } + }, + focus: function(f,e) { + var row = infoGrid.getSelectionModel().getSelected(); + infoGrid.getSelectionModel().deselectRow(infoGrid.getStore().indexOf(row)); + } + } + }); + + clearTextButton = new Ext.Action({ + text: 'X', + ctCls:'pm_search_x_button', + handler: gridByDefault + }); + + actionButtons = [newButton, '-', editButton, deleteButton, {xtype: 'tbfill'}, searchText, clearTextButton, searchButton]; + + smodel = new Ext.grid.RowSelectionModel({ + singleSelect: true, + listeners:{ + rowselect: function(sm, index, record){ + editButton.enable(); + deleteButton.enable(); + if (typeof(_rowselect) !== 'undefined') { + if (Ext.isArray(_rowselect)) { + for (var i = 0; i < _rowselect.length; i++) { + if (Ext.isFunction(_rowselect[i])) { + _rowselect[i](sm, index, record); + } + } + } + } + }, + rowdeselect: function(sm, index, record){ + editButton.disable(); + deleteButton.disable(); + if (typeof(_rowdeselect) !== 'undefined') { + if (Ext.isArray(_rowdeselect)) { + for (var i = 0; i < _rowdeselect.length; i++) { + if (Ext.isFunction(_rowdeselect[i])) { + _rowdeselect[i](sm, index, record); + } + } + } + } + } + } + }); + + store = new Ext.data.GroupingStore( { + proxy : new Ext.data.HttpProxy({ + url: 'getDashletsInstances' + }), + reader : new Ext.data.JsonReader( { + root: 'sources', + totalProperty: 'total_sources', + fields : [ + {name : 'AUTH_SOURCE_UID'}, + {name : 'AUTH_SOURCE_NAME'}, + {name : 'AUTH_SOURCE_PROVIDER'}, + {name : 'AUTH_SOURCE_SERVER_NAME'}, + {name : 'AUTH_SOURCE_PORT'}, + {name : 'AUTH_SOURCE_ENABLED_TLS'}, + {name : 'AUTH_SOURCE_VERSION'}, + {name : 'AUTH_SOURCE_BASE_DN'}, + {name : 'AUTH_ANONYMOUS'}, + {name : 'AUTH_SOURCE_SEARCH_USER'}, + {name : 'AUTH_SOURCE_ATTRIBUTES'}, + {name : 'AUTH_SOURCE_OBJECT_CLASSES'}, + {name : 'CURRENT_USERS', type:'int'} + ] + }) + }); + + cmodel = new Ext.grid.ColumnModel({ + defaults: { + width: 50, + sortable: true + }, + columns: [ + {id:'AUTH_SOURCE_UID', dataIndex: 'AUTH_SOURCE_UID', hidden:true, hideable:false}, + {header: _('ID_NAME'), dataIndex: 'AUTH_SOURCE_NAME', width: 200, hidden:false, align:'left'}, + {header: _('ID_PROVIDER'), dataIndex: 'AUTH_SOURCE_PROVIDER', width: 120, hidden: false, align: 'center'}, + {header: _('ID_SERVER_NAME'), dataIndex: 'AUTH_SOURCE_SERVER_NAME', width: 180, hidden: false, align: 'center'}, + {header: _('ID_PORT'), dataIndex: 'AUTH_SOURCE_PORT', width: 60, hidden: false, align: 'center'}, + {header: _('ID_ACTIVE_USERS'), dataIndex: 'CURRENT_USERS', width: 90, hidden: false, align: 'center'} + ] + }); + + 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_DASHLET_MESSAGE') + '    ', + emptyMsg: _('ID_GRID_PAGE_NO_DASHLET_MESSAGE'), + items: ['-',_('ID_PAGE_SIZE')+':',comboPageSize] + }); + + infoGrid = new Ext.grid.GridPanel({ + 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 + }, + title : _('ID_DASHLET_INSTANCE'), + store: store, + cm: cmodel, + sm: smodel, + tbar: actionButtons, + bbar: bbarpaging, + listeners: { + rowdblclick: editDashletInstance, + render: function(){ + this.loadMask = new Ext.LoadMask(this.body, {msg:_('ID_LOADING_GRID')}); + } + }, + view: new Ext.grid.GroupingView({ + forceFit:true, + groupTextTpl: '{text}', + cls:"x-grid-empty", + emptyText: _('ID_NO_RECORDS_FOUND') + }) + }); + + 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); + + infoGrid.store.load(); + + 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]]); +}; + +//Load Grid By Default +gridByDefault = function(){ + searchText.reset(); + infoGrid.store.load(); +}; + +//Do Search Function +doSearch = function(){ + infoGrid.store.load({params: {textFilter: searchText.getValue()}}); +}; + +//New Dashlet Instance Action +newDashletInstance = function() { + location.href = 'dashletInstanceForm'; +}; + +//Edit Dashlet Instance Action +editDashletInstance = function(){ + var rowSelected = infoGrid.getSelectionModel().getSelected(); + if (rowSelected){ + location.href = 'dashletInstanceForm?$dasInsUid=' + rowSelected.data.AUTH_SOURCE_UID; + } +}; + +//Delete Dashlet Instance Action +deleteDashletInstance = function(){ + var rowSelected = infoGrid.getSelectionModel().getSelected(); + if (rowSelected){ + viewport.getEl().mask(_('ID_PROCESSING')); + Ext.Ajax.request({ + url: 'deleteDashletInstance', + params: {dasInsUid: rowSelected.data.AUTH_SOURCE_UID}, + success: function(r,o){ + viewport.getEl().unmask(); + response = Ext.util.JSON.decode(r.responseText); + if (response.success){ + Ext.Msg.confirm(_('ID_CONFIRM'),_('ID_CONFIRM_DELETE_DASHLET_INSTANCE'),function(btn,text){ + if (btn=='yes'){ + viewport.getEl().mask(_('ID_PROCESSING')); + Ext.Ajax.request({ + url: 'deleteDashletInstance', + params: {dasInsUid : rowSelected.data.AUTH_SOURCE_UID}, + success: function(r,o){ + viewport.getEl().unmask(); + resp = Ext.util.JSON.decode(r.responseText); + if (resp.success){ + PMExt.notify(_('ID_DASHLET_INSTANCE'),_('ID_DASHLET_SUCCESS_DELETE')); + }else{ + PMExt.error(_('ID_DASHLET_INSTANCE'),resp.error); + } + doSearch(); + editButton.disable(); + deleteButton.disable(); + }, + failure: function(r,o){ + viewport.getEl().unmask(); + } + }); + } + }); + + }else{ + PMExt.error(_('ID_DASHLET_INSTANCE'),_('ID_MSG_CANNOT_DELETE_DASHLET')); + } + }, + failure: function(r,o){ + viewport.getEl().unmask(); + } + }); + } +};