| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 |
- collections.grid.TemplateColumn = function(config) {
- config = config || {};
- Ext.applyIf(config,{
- url: collections.config.connectorUrl
- ,autosave: true
- ,save_action: 'mgr/template/column/updatefromgrid'
- ,baseParams: {
- action: 'mgr/template/column/getList'
- ,template: MODx.request.id
- ,sort: 'position'
- ,dir: 'asc'
- }
- ,fields: ['id', 'template', 'name', 'label', 'hidden', 'sortable', 'width', 'position', 'editor', 'renderer', 'php_renderer', 'sort_type']
- ,paging: true
- ,ddGroup: 'collectionChildDDGroup'
- ,enableDragDrop: true
- ,remoteSort: true
- ,emptyText: _('collections.template.column.none')
- ,columns: this.getColumns(config)
- ,tbar: [{
- text: _('collections.template.column.add')
- ,handler: this.createColumn
- ,scope: this
- }]
- });
- collections.grid.TemplateColumn.superclass.constructor.call(this,config);
- this.on('render', this.registerGridDropTarget, this);
- this.on('beforedestroy', this.destroyScrollManager, this);
- };
- Ext.extend(collections.grid.TemplateColumn,MODx.grid.Grid,{
- getMenu: function() {
- var m = [];
- m.push({
- text: _('collections.template.column.update')
- ,handler: this.updateColumn
- });
- var selected = this.getSelectionModel().getSelected();
- if (selected.data.name != 'id') {
- m.push({
- text: _('collections.template.column.remove')
- ,handler: this.removeColumn
- });
- }
- return m;
- }
- ,createColumn: function(btn,e) {
- var createColumn = MODx.load({
- xtype: 'collections-window-template-column'
- ,title: _('collections.template.column.add')
- ,record: {template: MODx.request.id}
- ,listeners: {
- 'success': {fn:function() { this.refresh(); },scope:this}
- }
- });
- createColumn.show(e.target);
- }
- ,updateColumn: function(btn,e) {
- var updateColumn = MODx.load({
- xtype: 'collections-window-template-column'
- ,title: _('collections.template.column.update')
- ,action: 'mgr/template/column/update'
- ,isUpdate: true
- ,record: this.menu.record
- ,listeners: {
- 'success': {fn:function() { this.refresh(); },scope:this}
- }
- });
- updateColumn.fp.getForm().reset();
- updateColumn.fp.getForm().setValues(this.menu.record);
- updateColumn.show(e.target);
- }
- ,removeColumn: function(btn,e) {
- if (!this.menu.record) return false;
- MODx.msg.confirm({
- title: _('collections.template.column.remove')
- ,text: _('collections.template.column.remove_confirm')
- ,url: this.config.url
- ,params: {
- action: 'mgr/template/column/remove'
- ,id: this.menu.record.id
- }
- ,listeners: {
- 'success': {fn:function(r) { this.refresh(); },scope:this}
- }
- });
- return true;
- }
- ,getColumns: function(config) {
- return [{
- header: _('id')
- ,dataIndex: 'id'
- ,sortable: true
- ,hidden: true
- ,width: 40
- },{
- header: _('collections.template.column.label')
- ,dataIndex: 'label'
- ,sortable: true
- ,editor: {xtype: 'textfield'}
- ,width: 100
- },{
- header: _('collections.template.column.name')
- ,dataIndex: 'name'
- ,sortable: true
- ,editor: {xtype: 'textfield'}
- ,width: 100
- },{
- header: _('collections.template.column.hidden')
- ,dataIndex: 'hidden'
- ,sortable: true
- ,editor: {xtype: 'modx-combo-boolean', renderer: true}
- ,width: 50
- },{
- header: _('collections.template.column.sortable')
- ,dataIndex: 'sortable'
- ,sortable: true
- ,editor: {xtype: 'modx-combo-boolean', renderer: true}
- ,width: 50
- },{
- header: _('collections.template.column.width')
- ,dataIndex: 'width'
- ,sortable: true
- ,editor: {xtype: 'numberfield', allowNegative: false, allowDecimals: false}
- ,width: 40
- },{
- header: _('collections.template.column.editor')
- ,dataIndex: 'editor'
- ,sortable: true
- ,editor: {xtype: 'textarea'}
- ,width: 100
- },{
- header: _('collections.template.column.renderer')
- ,dataIndex: 'renderer'
- ,sortable: true
- ,editor: {xtype: 'textfield'}
- ,width: 100
- ,renderer: collections.renderer.qtip
- },{
- header: _('collections.template.column.php_renderer')
- ,dataIndex: 'php_renderer'
- ,sortable: true
- ,editor: {xtype: 'textfield'}
- ,hidden: true
- ,width: 100
- ,renderer: collections.renderer.qtip
- },{
- header: _('collections.template.column.position')
- ,dataIndex: 'position'
- ,sortable: true
- ,editor: {xtype: 'numberfield', allowNegative: false, allowDecimals: false}
- ,width: 50
- }];
- }
- ,registerGridDropTarget: function() {
- var ddrow = new Ext.ux.dd.GridReorderDropTarget(this, {
- copy: false
- ,sortCol: 'position'
- ,listeners: {
- 'beforerowmove': function(objThis, oldIndex, newIndex, records) {
- }
- ,'afterrowmove': function(objThis, oldIndex, newIndex, records) {
- MODx.Ajax.request({
- url: collections.config.connectorUrl
- ,params: {
- action: 'mgr/template/column/ddreorder'
- ,idItem: records.pop().id
- ,oldIndex: oldIndex
- ,newIndex: newIndex
- ,template: MODx.request.id
- }
- ,listeners: {
- 'success': {
- fn: function(r) {
- this.target.grid.refresh();
- },scope: this
- }
- }
- });
- }
- ,'beforerowcopy': function(objThis, oldIndex, newIndex, records) {
- }
- ,'afterrowcopy': function(objThis, oldIndex, newIndex, records) {
- }
- }
- });
- Ext.dd.ScrollManager.register(this.getView().getEditorParent());
- }
-
- ,destroyScrollManager: function() {
- Ext.dd.ScrollManager.unregister(this.getView().getEditorParent());
- }
- ,getDragDropText: function(){
- if (this.config.baseParams.sort != 'position') {
- if (this.store.sortInfo == undefined || this.store.sortInfo.field != 'position') {
- return _('collections.err.bad_sort_column', {column: 'position'});
- }
- }
- return _('collections.global.change_order', {child: this.selModel.selections.items[0].data.name});
- }
- });
- Ext.reg('collections-grid-template-column',collections.grid.TemplateColumn);
|