FEATURE Adding "Maintenance" interface and controller action

- First maintenance taskk to resgister the PM Web designer (Rest Client)
This commit is contained in:
Erik Amaru Ortiz
2013-10-10 17:02:13 -04:00
parent 507101f6dd
commit 6cc6b7a9bc
4 changed files with 180 additions and 27 deletions

View File

@@ -193,5 +193,11 @@ class Admin extends Controller
//render content
G::RenderPage( 'publish', 'extJs' );
}
public function maintenance()
{
$this->setView('admin/maintenance');
$this->render('extJs');
}
}

View File

@@ -1255,5 +1255,61 @@ class adminProxy extends HttpProxyController
die;
exit();
}
public function getMaintenanceInfo()
{
$data = array('info' => array());
//$oauthClients = new OauthClients();
//$oauthClients->
$pmRestClient = OauthClientsPeer::retrieveByPK('x-pm-local-client');
$statuses['pm_rest_client'] = (!empty($pmRestClient));
//$data = $pmRestClient->toArray(BasePeer::TYPE_COLNAME);
$data['info'] = array(
array(
'name' => 'PM Web Designer (REST Client)',
'value' => ($statuses['pm_rest_client']? 'Registered' : 'Not Registered'),
'value_ok' => $statuses['pm_rest_client'],
'option' => array(
'label' => ($statuses['pm_rest_client']? 'Restore' : 'Register'),
'action' => 'doRegisterPMDesignerClient'
)
)
);
return $data;
}
public function registerPMDesignerClient()
{
$result = array();
try {
$pmRestClient = OauthClientsPeer::retrieveByPK('x-pm-local-client');
if (! empty($pmRestClient)) {
$pmRestClient->delete();
}
$oauthClients = new OauthClients();
$oauthClients->setClientId('x-pm-local-client');
$oauthClients->setClientSecret('179ad45c6ce2cb97cf1029e212046e81');
$oauthClients->setClientName('PM Web Designer');
$oauthClients->setClientDescription('ProcessMaker Web Designer App');
$oauthClients->setClientWebsite('www.processmaker.com');
$oauthClients->setRedirectUri('http://pmos/sysworkflow/en/neoclassic/services/oauth2_grant');
$oauthClients->save();
$result['success'] = true;
$result['message'] = '';
} catch (Exception $e) {
$result['success'] = false;
$result['message'] = $e->getMessage();
}
return $result;
}
}

View File

@@ -100,5 +100,5 @@ if ($RBAC->userCanAccess('PM_SETUP') == 1) {
if ($RBAC->userCanAccess("PM_SETUP") == 1) {
$G_TMP_MENU->AddIdRawOption("PM_REQUIREMENTS", "../setup/systemInfo", G::LoadTranslation("ID_PROCESSMAKER_REQUIREMENTS_CHECK"), "", "", "settings");
$G_TMP_MENU->AddIdRawOption("PHP_INFO", "../setup/systemInfo?option=php", G::LoadTranslation("ID_PHP_INFO"), "", "", "settings");
$G_TMP_MENU->AddIdRawOption("PHP_MAINTENANCE", "../admin/maintenance", 'Maintenance', "", "", "settings");
}

View File

@@ -0,0 +1,91 @@
<script>
Ext.onReady(main);
var infoGrid;
var store;
function main()
{
store = new Ext.data.Store( {
autoLoad: true,
proxy: new Ext.data.HttpProxy({
url: '../adminProxy/getMaintenanceInfo',
method: 'POST'
}),
baseParams : { request : 'info'},
reader : new Ext.data.JsonReader( {
root : 'info',
fields : [
{name : 'name'},
{name : 'value'},
{name : 'value_ok'},
{name : 'option'}
]
})
});
infoGrid = new Ext.grid.GridPanel({
title : 'Maintenance',
stripeRows : true,
autoHeight : true,
width : 550,
enableColumnHide: false,
enableColumnResize: false,
enableHdMenu: false,
disableSelection: true,
loading: true,
store : store,
columns : [
{
id : 'name',
header : 'Application',
width : 350,
sortable : false,
dataIndex : 'name'
},
{
header : 'Status',
width : 100,
sortable : false,
dataIndex : 'value',
renderer: function(val, el, row){
if(row.data.value_ok) {
return '<font color="green">'+val+'</font>';
} else {
return '<font color="red">'+val+'</font>';
}
}
},
{
header : '',
width : 100,
sortable : false,
dataIndex : 'option',
renderer: function(val, el, row){
return '<a href="#" onclick="'+val.action+'(); return false;">'+val.label+'</a>';
}
}
]
});
infoGrid.render(document.body)
}
function doRegisterPMDesignerClient()
{
Ext.Ajax.request({
url: '../adminProxy/registerPMDesignerClient',
method: 'POST',
params: {},
waitMsg: 'Registering, please wait!',
success: function(r, o){
var resp = Ext.util.JSON.decode(r.responseText);
console.log(resp);
store.reload();
}
});
return false;
}
</script>