BUG-14034 Status in Dashboards -NEW FEATURE

In ADMIN > Settings > Dashboard now is available the button Status, this button let Activate or Deactivate the Dashlet, showing the changed status in the Status Field in the grid.

When a dashlet is Inactive this dashlet is not showed in the DASHBOARDS tab. A validation was added to only let the current user see the active dashlets assigned to himself.
This commit is contained in:
jennylee
2014-05-19 16:26:43 -04:00
parent 5809a36bbc
commit 1c133aabb2
3 changed files with 91 additions and 3 deletions

View File

@@ -210,8 +210,10 @@ class PMDashlet extends DashletInstance implements DashletInterface
$criteria = new Criteria( 'workflow' ); $criteria = new Criteria( 'workflow' );
$criteria->addSelectColumn( DashletInstancePeer::DAS_INS_UID ); $criteria->addSelectColumn( DashletInstancePeer::DAS_INS_UID );
$criteria->addSelectColumn( DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES ); $criteria->addSelectColumn( DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES );
$criteria->addSelectColumn( DashletInstancePeer::DAS_INS_STATUS );
$criteria->addSelectColumn( DashletPeer::DAS_CLASS ); $criteria->addSelectColumn( DashletPeer::DAS_CLASS );
$criteria->addSelectColumn( DashletPeer::DAS_TITLE ); $criteria->addSelectColumn( DashletPeer::DAS_TITLE );
$criteria->addSelectColumn( DashletPeer::DAS_STATUS );
$criteria->addJoin( DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN ); $criteria->addJoin( DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN );
$criteria->add( DashletInstancePeer::DAS_INS_OWNER_TYPE, 'EVERYBODY' ); $criteria->add( DashletInstancePeer::DAS_INS_OWNER_TYPE, 'EVERYBODY' );
$dataset = DashletInstancePeer::doSelectRS( $criteria ); $dataset = DashletInstancePeer::doSelectRS( $criteria );
@@ -236,8 +238,10 @@ class PMDashlet extends DashletInstance implements DashletInterface
$criteria = new Criteria( 'workflow' ); $criteria = new Criteria( 'workflow' );
$criteria->addSelectColumn( DashletInstancePeer::DAS_INS_UID ); $criteria->addSelectColumn( DashletInstancePeer::DAS_INS_UID );
$criteria->addSelectColumn( DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES ); $criteria->addSelectColumn( DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES );
$criteria->addSelectColumn( DashletInstancePeer::DAS_INS_STATUS );
$criteria->addSelectColumn( DashletPeer::DAS_CLASS ); $criteria->addSelectColumn( DashletPeer::DAS_CLASS );
$criteria->addSelectColumn( DashletPeer::DAS_TITLE ); $criteria->addSelectColumn( DashletPeer::DAS_TITLE );
$criteria->addSelectColumn( DashletPeer::DAS_STATUS );
$criteria->addJoin( DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN ); $criteria->addJoin( DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN );
$criteria->add( DashletInstancePeer::DAS_INS_OWNER_TYPE, 'USER' ); $criteria->add( DashletInstancePeer::DAS_INS_OWNER_TYPE, 'USER' );
$criteria->add( DashletInstancePeer::DAS_INS_OWNER_UID, $userUid ); $criteria->add( DashletInstancePeer::DAS_INS_OWNER_UID, $userUid );
@@ -265,8 +269,10 @@ class PMDashlet extends DashletInstance implements DashletInterface
$criteria = new Criteria( 'workflow' ); $criteria = new Criteria( 'workflow' );
$criteria->addSelectColumn( DashletInstancePeer::DAS_INS_UID ); $criteria->addSelectColumn( DashletInstancePeer::DAS_INS_UID );
$criteria->addSelectColumn( DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES ); $criteria->addSelectColumn( DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES );
$criteria->addSelectColumn( DashletInstancePeer::DAS_INS_STATUS );
$criteria->addSelectColumn( DashletPeer::DAS_CLASS ); $criteria->addSelectColumn( DashletPeer::DAS_CLASS );
$criteria->addSelectColumn( DashletPeer::DAS_TITLE ); $criteria->addSelectColumn( DashletPeer::DAS_TITLE );
$criteria->addSelectColumn( DashletPeer::DAS_STATUS );
$criteria->addJoin( DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN ); $criteria->addJoin( DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN );
$criteria->add( DashletInstancePeer::DAS_INS_OWNER_TYPE, 'DEPARTMENT' ); $criteria->add( DashletInstancePeer::DAS_INS_OWNER_TYPE, 'DEPARTMENT' );
$criteria->add( DashletInstancePeer::DAS_INS_OWNER_UID, $depUid ); $criteria->add( DashletInstancePeer::DAS_INS_OWNER_UID, $depUid );
@@ -296,8 +302,10 @@ class PMDashlet extends DashletInstance implements DashletInterface
$criteria = new Criteria( 'workflow' ); $criteria = new Criteria( 'workflow' );
$criteria->addSelectColumn( DashletInstancePeer::DAS_INS_UID ); $criteria->addSelectColumn( DashletInstancePeer::DAS_INS_UID );
$criteria->addSelectColumn( DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES ); $criteria->addSelectColumn( DashletInstancePeer::DAS_INS_ADDITIONAL_PROPERTIES );
$criteria->addSelectColumn( DashletInstancePeer::DAS_INS_STATUS );
$criteria->addSelectColumn( DashletPeer::DAS_CLASS ); $criteria->addSelectColumn( DashletPeer::DAS_CLASS );
$criteria->addSelectColumn( DashletPeer::DAS_TITLE ); $criteria->addSelectColumn( DashletPeer::DAS_TITLE );
$criteria->addSelectColumn( DashletPeer::DAS_STATUS );
$criteria->addJoin( DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN ); $criteria->addJoin( DashletInstancePeer::DAS_UID, DashletPeer::DAS_UID, Criteria::INNER_JOIN );
$criteria->add( DashletInstancePeer::DAS_INS_OWNER_TYPE, 'GROUP' ); $criteria->add( DashletInstancePeer::DAS_INS_OWNER_TYPE, 'GROUP' );
$criteria->add( DashletInstancePeer::DAS_INS_OWNER_UID, $grpUid ); $criteria->add( DashletInstancePeer::DAS_INS_OWNER_UID, $grpUid );

View File

@@ -176,7 +176,16 @@ class Dashboard extends Controller
if (! isset( $_SESSION['USER_LOGGED'] )) { if (! isset( $_SESSION['USER_LOGGED'] )) {
throw new Exception( G::LoadTranslation('ID_SESSION_EXPIRED') ); throw new Exception( G::LoadTranslation('ID_SESSION_EXPIRED') );
} }
return $this->pmDashlet->getDashletsInstancesForUser( $_SESSION['USER_LOGGED'] ); $dash= $this->pmDashlet->getDashletsInstancesForUser( $_SESSION['USER_LOGGED']);
$dashStatusActive = "";
$j=0;
foreach ($dash as $dashStatus) {
if ($dashStatus['DAS_INS_STATUS'] != 0){
$dashStatusActive[$j] = $dashStatus;
$j++;
}
}
return $dashStatusActive;
} catch (Exception $error) { } catch (Exception $error) {
throw $error; throw $error;
} }

View File

@@ -43,6 +43,7 @@ var smodel;
var newButton; var newButton;
var editButton; var editButton;
var deleteButton; var deleteButton;
var statusButton;
//var searchButton; //var searchButton;
//var searchText; //var searchText;
//var clearTextButton; //var clearTextButton;
@@ -74,6 +75,13 @@ Ext.onReady(function(){
disabled: true disabled: true
}); });
statusButton = new Ext.Action({
text: _('ID_STATUS'),
iconCls: 'silk-add',
handler: statusDashletInstance,
disabled: true
});
/*searchButton = new Ext.Action({ /*searchButton = new Ext.Action({
text: _('ID_SEARCH'), text: _('ID_SEARCH'),
handler: doSearch handler: doSearch
@@ -105,10 +113,10 @@ Ext.onReady(function(){
});*/ });*/
contextMenu = new Ext.menu.Menu({ contextMenu = new Ext.menu.Menu({
items: [editButton, deleteButton] items: [editButton, deleteButton, statusButton]
}); });
actionButtons = [newButton, '-', editButton, deleteButton/*, {xtype: 'tbfill'}, searchText, clearTextButton, searchButton*/]; actionButtons = [newButton, '-', editButton, deleteButton, statusButton/*, {xtype: 'tbfill'}, searchText, clearTextButton, searchButton*/];
smodel = new Ext.grid.RowSelectionModel({ smodel = new Ext.grid.RowSelectionModel({
singleSelect: true, singleSelect: true,
@@ -116,6 +124,7 @@ Ext.onReady(function(){
rowselect: function(sm, index, record){ rowselect: function(sm, index, record){
editButton.enable(); editButton.enable();
deleteButton.enable(); deleteButton.enable();
statusButton.enable();
if (typeof(_rowselect) !== 'undefined') { if (typeof(_rowselect) !== 'undefined') {
if (Ext.isArray(_rowselect)) { if (Ext.isArray(_rowselect)) {
for (var i = 0; i < _rowselect.length; i++) { for (var i = 0; i < _rowselect.length; i++) {
@@ -125,10 +134,20 @@ Ext.onReady(function(){
} }
} }
} }
if( record.data.DAS_INS_STATUS_LABEL == 'Active' ){
statusButton.setIconClass('icon-activate');
statusButton.setText( _('ID_DEACTIVATE') );
} else {
statusButton.setIconClass('icon-deactivate');
statusButton.setText( _('ID_ACTIVATE') );
}
}, },
rowdeselect: function(sm, index, record){ rowdeselect: function(sm, index, record){
editButton.disable(); editButton.disable();
deleteButton.disable(); deleteButton.disable();
statusButton.disable();
if (typeof(_rowdeselect) !== 'undefined') { if (typeof(_rowdeselect) !== 'undefined') {
if (Ext.isArray(_rowdeselect)) { if (Ext.isArray(_rowdeselect)) {
for (var i = 0; i < _rowdeselect.length; i++) { for (var i = 0; i < _rowdeselect.length; i++) {
@@ -352,6 +371,7 @@ deleteDashletInstance = function(){
//doSearch(); //doSearch();
editButton.disable(); editButton.disable();
deleteButton.disable(); deleteButton.disable();
statusButton.disable();
infoGrid.store.load(); infoGrid.store.load();
}, },
failure: function(r, o){ failure: function(r, o){
@@ -362,3 +382,54 @@ deleteDashletInstance = function(){
}); });
} }
}; };
//Status Dashlet Instance Action
statusDashletInstance = function(){
var rows = infoGrid.getSelectionModel().getSelections();
if( rows.length > 0 ) {
for(i=0; i<rows.length; i++) {
var status;
if(rows[i].data.DAS_INS_STATUS_LABEL == "Active"){
status = 0;
} else {
status = 1;
}
var data = {
DAS_INS_UID: rows[i].data.DAS_INS_UID,
DAS_INS_TITLE: rows[i].data.DAS_INS_TITLE,
DAS_UID: rows[i].data.DAS_INS_UID,
DAS_INS_STATUS: status,
DAS_STATUS: status
};
Ext.Ajax.request({
url: 'saveDashletInstance',
method: 'POST',
params: data,
success: function (result, request) {
editButton.disable();
deleteButton.disable();
statusButton.disable();
statusButton.setIconClass('silk-add');
statusButton.setText( _('ID_STATUS') );
infoGrid.store.load();
},
failure: function (result, request) {
Ext.MessageBox.alert( _('ID_ALERT'), _('ID_AJAX_COMMUNICATION_FAILED') );
}
});
}
} else {
Ext.Msg.show({
title:'',
msg: _('ID_NO_SELECTION_WARNING'),
buttons: Ext.Msg.INFO,
fn: function(){},
animEl: 'elId',
icon: Ext.MessageBox.INFO,
buttons: Ext.MessageBox.OK
});
}
};