/***************************************
* Copyright 2010-2014 CNES - CENTRE NATIONAL d'ETUDES SPATIALES
*
* This file is part of SITools2.
*
* SITools2 is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* SITools2 is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with SITools2. If not, see <http://www.gnu.org/licenses/>.
***************************************/
/*global Ext, sitools, ID, i18n, showResponse, alertFailure, loadUrl*/
Ext.namespace('sitools.admin.authorizations');
/**
*
* @class sitools.admin.authorizations.authorizationsCrudPanel
* @extends Ext.grid.GridPanel
*/
//sitools.component.authorizations.authorizationsCrudPanel = Ext.extend(Ext.grid.GridPanel, {
sitools.admin.authorizations.authorizationsCrudPanel = Ext.extend(Ext.grid.GridPanel, {
border : false,
height : 300,
id : ID.BOX.GROUP,
sm : new Ext.grid.RowSelectionModel(),
pageSize : 10,
initComponent : function () {
this.url = loadUrl.get('APP_URL') + loadUrl.get('APP_AUTHORIZATIONS_URL');
this.urlAuthorizations = loadUrl.get('APP_URL') + loadUrl.get('APP_AUTHORIZATIONS_URL');
this.store = new Ext.data.JsonStore({
root : 'data',
restful : true,
url : this.url,
remoteSort : true,
// sortField: 'name',
idProperty : 'id',
baseParams : {
type : "class"
},
fields : [ {
name : 'id',
type : 'string'
}, {
name : 'name',
type : 'string'
}, {
name : 'description',
type : 'string'
}, {
name : 'url',
type : 'string'
}, {
name : 'authorizations'
} ]
});
this.cm = new Ext.grid.ColumnModel({
// specify any defaults for each column
defaults : {
sortable : true
// columns are not sortable by default
},
columns : [ {
header : i18n.get('label.id'),
dataIndex : 'id',
width : 100,
hidden : true
}, {
header : i18n.get('label.name'),
dataIndex : 'name',
width : 150
}, {
header : i18n.get('label.description'),
dataIndex : 'description',
width : 450,
sortable : false
} ]
});
this.bbar = {
xtype : 'paging',
pageSize : this.pageSize,
store : this.store,
displayInfo : true,
displayMsg : i18n.get('paging.display'),
emptyMsg : i18n.get('paging.empty')
};
this.tbar = {
xtype : 'toolbar',
defaults : {
scope : this
},
items : [ {
text : i18n.get('label.authorizations'),
icon : loadUrl.get('APP_URL') + '/common/res/images/icons/toolbar_autorizations.png',
handler : this.onDefineRole,
xtype : 's-menuButton'
}, '->', {
xtype : 's-filter',
emptyText : i18n.get('label.search'),
store : this.store,
pageSize : this.pageSize
} ]
};
this.sm = new Ext.grid.RowSelectionModel();
this.view = new Ext.grid.GridView({
forceFit : true
});
this.listeners = {
scope : this,
rowDblClick : this.onDefineRole
};
sitools.admin.authorizations.authorizationsCrudPanel.superclass.initComponent.call(this);
},
onRender : function () {
sitools.admin.authorizations.authorizationsCrudPanel.superclass.onRender.apply(this, arguments);
this.store.load({
params : {
start : 0,
limit : this.pageSize
}
});
},
onDefineRole : function () {
var rec = this.getSelectionModel().getSelected();
if (!rec) {
return Ext.Msg.alert(i18n.get('label.warning'), i18n.get('warning.noselection'));
}
var up = new sitools.admin.applications.applicationsRolePanel({
urlAuthorizations : this.urlAuthorizations + "/" + rec.data.id,
applicationRecord : rec
});
up.show(ID.BOX.APPLICATION);
},
onDelete : function () {
var rec = this.getSelectionModel().getSelected();
if (!rec) {
return false;
}
var tot = Ext.Msg.show({
title : i18n.get('label.delete'),
buttons : {
yes : i18n.get('label.yes'),
no : i18n.get('label.no')
},
msg : i18n.get('applicationsCrud.delete'),
scope : this,
fn : function (btn, text) {
if (btn == 'yes') {
this.doDelete(rec);
}
}
});
},
doDelete : function (rec) {
Ext.Ajax.request({
url : this.url + "/" + rec.id,
method : 'DELETE',
scope : this,
success : function (ret) {
if (showResponse(ret)) {
this.store.reload();
}
},
failure : alertFailure
});
}
});
Ext.reg('s-authorizations', sitools.admin.authorizations.authorizationsCrudPanel);