Skip to content

Instantly share code, notes, and snippets.

@pavelpower
Created February 5, 2013 00:32
Show Gist options
  • Save pavelpower/4711087 to your computer and use it in GitHub Desktop.
Save pavelpower/4711087 to your computer and use it in GitHub Desktop.
;ibem.decl({ block: 'w-access-manager', base: 'i-win' }, {
constructor: function(cfg) {
var store, toolbar, tree, grid;
store = ibem('i-store').initMod('permissions').getStore();
toolbar = this.createElem('toolbar');
tree = this.createElem('tree', store);
grid = this.createElem('grid', store);
this.callParent(cfg, {
title: 'Access Manager',
iconCls: 'access-manager',
width: 610,
height: 500,
shim: false,
animCollapse: false,
border: false,
constrainHeader: true,
layout: 'border',
tbar: toolbar,
items: [
{
region: 'center',
cls: 'access-manager',
layout: 'border',
border: false,
split: true,
margins: '3 3 3 0',
items: [ grid ]
}, tree
]
});
this.bindEvents(store, toolbar, tree, grid);
return this;
},
bindEvents: function(store, toolbar, tree, grid) {
toolbar.on('replica', function() {
this.replica();
}, this);
tree.on('export', function(type, idProject) {
this.accessexport(type, idProject);
}, this);
tree.on('getPermissions', function() {
grid.coverOnRow();
});
grid.on('refresh', function() {
tree.getStoreForCurrentNode();
});
grid.on('generateReport', function() {
var node = tree.getCurrentNodeId(),
nodeType = tree.getTypeOf(node);
if (typeof node !== 'undefined' && typeof nodeType !== 'undefined')
global.openLinkInTab(
'Do you want to open this report in new tab/window?',
String.format('/groups/report.pdf?permitted_id={0}&permitted_type={1}', node, nodeType)
);
else
Alert('Warning', 'Please select a node.');
});
function beforeSave (st) {
var node = tree.getCurrentNodeId(),
nodeType = tree.getTypeOf(node);
st.setBaseParam('permitted_id', node)
.setBaseParam('permitted_type', nodeType);
}
store.on('beforesave', beforeSave);
return this
},
replica: function() {
var replicaStack = this.getElem('tree').getReplicaStack();
ibem('w-access-manager').replica(replicaStack).show();
},
accessexport: function(type, idProject) {
var url, format;
format = type === 'html' ? 'csv' : type;
if (type === 'html') {
url = ibem('w-access-manager').getExportUrl(idProject, format);
$.get(url)
.done(function(data) {
// TODO: create window with table
// console.log('csv', data);
});
return;
}
ibem('w-access-manager').accessexport(idProject, format);
}
},
//static methods
{
// override static method init
init: function() {
return ibem('i-win').init.call(ibem('w-access-manager'));
},
initAndShow: function() {
return ibem('w-access-manager').init().show();
},
showHelp: function() {
ibem('w-help').showHelp('access_manager');
},
replica: function(replicaStack) {
var win = ibem('w-access-manager').init();
if (Ext.type(replicaStack) === 'array') {
win.on('show', function() {
this.getElem('tree').setReplicaStack(replicaStack);
}, win, { single: true });
}
return win;
},
getExportUrl: function(idProject, format) {
return String.format('/reports/permissions/project/{0}.{1}', idProject, format);
},
accessexport: function(idProject, format) {
// download file
global.injectFrame(ibem('w-access-manager').getExportUrl(idProject, format));
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment