});
}
callback(new Gilbert.lib.ui.DjangoForm(Ext.applyIf(Ext.applyIf(config||{},{
- title: 'Editing '+model.verbose_name+' ('+pk+')',
+ title: 'Editing '+model.verbose_name.capfirst()+' ('+pk+')',
header: false,
iconCls: 'icon-pencil',
baseCls: 'x-plain',
});
+Gilbert.lib.plugins.models.ui.ForeignKeyColumn = Ext.extend(Ext.grid.Column, {
+ renderer: function(v) {
+ return v.__unicode__
+ }
+})
+
+
+Ext.grid.Column.types['foreignkeycolumn'] = Gilbert.lib.plugins.models.ui.ForeignKeyColumn
+
+
Gilbert.lib.plugins.models.ui.ModelPanel = Ext.extend(Ext.Panel, {
constructor: function (model, plugin, config) {
var model = this.model = model;
return new_consequences;
};
+ var new_consequences = convert_consequences_array(consequences);
+ var nested_consequences = false;
+ for(var i=0;i<new_consequences.length;i++){
+ if (!new_consequences[i]['leaf']) {
+ nested_consequences = true;
+ break;
+ }
+ }
+
var tree = this.tree = new Ext.tree.TreePanel({
loader: new Ext.tree.TreeLoader(),
enableDD: false,
'text': 'To be deleted',
'iconCls': 'icon-minus',
'leaf': false,
- 'children': convert_consequences_array(consequences),
+ 'children': new_consequences,
},
useArrows: true,
rootVisible: false,
{
region: 'north',
xtype: 'panel',
- html: 'Are you sure you want to delete these ' + model.verbose_name_plural + '?',
+ html: 'Are you sure you want to delete these ' + model.verbose_name_plural + '?' + (nested_consequences ? ' Nested objects will also be deleted.' : ''),
bodyStyle: 'padding: 15px;',
},
tree,
contextmenu.showAt(e.xy);
});
+ grid.on('rowdblclick', function(grid, rowIndex, e) {
+ var record = grid.getStore().getAt(rowIndex)
+ plugin.create_instance_window(model, record.id, function (win) {
+ win.on('saved', function () {
+ store.reload();
+ });
+ win.show();
+ });
+ });
+
grid.getSelectionModel().on('selectionchange', function (selmodel) {
if (selmodel.hasSelection()) {
edit_action.setDisabled(false);
{ xtype: 'tbseparator' },
edit_action,
delete_action,
- '->',
- {
- text: 'Advanced',
- iconCls: 'icon-gear',
- disabled: true,
- menu: [],
- },
+ //'->',
+ //{
+ // text: 'Advanced',
+ // iconCls: 'icon-gear',
+ // disabled: true,
+ // menu: [],
+ //},
],
}),
items: [grid],
application.on('model_registered', function (model) {
this.handle_new_model(model);
}, this);
+
+ this.instance_windows = {}
},
handle_new_model: function (model) {
},
create_instance_window: function (model, pk, callback, config, cls) {
+ var win = this.instance_windows[[model.app_label, model.name, pk]];
+ if (win != undefined){
+ win.show()
+ return
+ }
var pk = pk;
var callback = callback;
var application = this.application;
var form_callback = function (form) {
var oldform = form;
- var win = application.create_window({
+ var win = outer.instance_windows[[model.app_label, model.name, pk]] = application.create_window({
layout: 'fit',
title: form.title,
iconCls: form.iconCls,
},
],
});
+ win.on('close', function(){
+ delete outer.instance_windows[[model.app_label, model.name, pk]];
+ });
win.addEvents({
'saved': true,
});
Gilbert.on('ready', function (application) {
- application.register_plugin('auth', new Gilbert.lib.plugins.models.Plugin());
+ application.register_plugin('models', new Gilbert.lib.plugins.models.Plugin());
});