From: <nel...@us...> - 2008-01-31 20:49:47
|
Author: nelius_weiss Date: Thu Jan 31 21:23:12 2008 New Revision: 720 URL: http://www.egroupware.org/viewvc?rev=3D3D720&root=3D3Dtine&view=3D3Drev Log: next step for a generalised permissions dialog flow: Egw.widgets.container.GrantsDialog extends Egw.widgets.AccountPickerA= =3D ctionDialog uses Egw.widgets.AccountPickerPanel This flow could also be used by other widhget, which want to make actions o= =3D n single/multiple accounts Modified: trunk/tine20/Egwbase/Json.php trunk/tine20/Egwbase/js/AccountpickerPanel.js trunk/tine20/Egwbase/js/container.js trunk/tine20/Egwbase/js/widgets/containerGrants.js trunk/tine20/Egwbase/js/widgets/containerTree.js Modified: trunk/tine20/Egwbase/Json.php URL: http://www.egroupware.org/viewvc/trunk/tine20/Egwbase/Json.php?rev=3D3= D7=3D 20&root=3D3Dtine&r1=3D3D719&r2=3D3D720&view=3D3Ddiff =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D= =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D= =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D= =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D =3D3D=3D3D=3D3D --- trunk/tine20/Egwbase/Json.php (original) +++ trunk/tine20/Egwbase/Json.php Thu Jan 31 21:23:12 2008 @@ -140,6 +140,33 @@ { $container =3D3D Egwbase_Container::getInstance()->renameContainer= ($=3D containerId, $newName); return $container->toArray(); + } + =3D + /** + * returns container grants + * =3D + * @param int $containerId + * @return array + * @throws Exception + */ + public function getContainerGrants($containerId) { + $result =3D3D array( + 'results' =3D3D> array(), + 'totalcount' =3D3D> 0 + ); + =3D + $result['results'] =3D3D Egwbase_Container::getInstance()->getAllG= ra=3D nts($containerId)->toArray(); + $result['totalcount'] =3D3D count($result['results']); + =3D + foreach($result['results'] as &$value) { + if($value['accountId'] =3D3D=3D3D=3D3D NULL) { + $value['accountName'] =3D3D array('accountDisplayName' =3D= 3D> =3D 'Anyone'); + } else { + $value["accountName"] =3D3D Egwbase_Account::getInstance()= ->=3D getAccountById($value['accountId'])->toArray(); + } + } + =3D + return $result; } =3D /** Modified: trunk/tine20/Egwbase/js/AccountpickerPanel.js URL: http://www.egroupware.org/viewvc/trunk/tine20/Egwbase/js/Accountpicker= =3D Panel.js?rev=3D3D720&root=3D3Dtine&r1=3D3D719&r2=3D3D720&view=3D3Ddiff =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D= =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D= =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D= =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D =3D3D=3D3D=3D3D --- trunk/tine20/Egwbase/js/AccountpickerPanel.js (original) +++ trunk/tine20/Egwbase/js/AccountpickerPanel.js Thu Jan 31 21:23:12 2008 @@ -192,7 +192,7 @@ */ 'accountselectionchange' ); - this.dataStore =3D3D new Ext.data.JsonStore({ + this.accountsStore =3D3D new Ext.data.JsonStore({ baseParams: { method: 'Egwbase.getAccounts' }, @@ -206,10 +206,10 @@ remoteSort: true }); =3D - this.dataStore.setDefaultSort('accountDisplayName', 'asc'); - - this.dataStore.on('beforeload', function(_dataStore) { - _dataStore.baseParams.filter =3D3D Ext.getCmp('Egwbase_Account= s_=3D SearchField').getRawValue(); + this.accountsStore.setDefaultSort('accountDisplayName', 'asc'); + + this.accountsStore.on('beforeload', function(_accountsStore) { + _accountsStore.baseParams.filter =3D3D Ext.getCmp('Egwbase_Acc= ou=3D nts_SearchField').getRawValue(); }); =3D =3D var columnModel =3D3D new Ext.grid.ColumnModel([ @@ -268,7 +268,7 @@ this.searchPanel =3D3D new Ext.grid.GridPanel({ title: 'Search', id: 'Egwbase_Accounts_Grid', - store: this.dataStore, + store: this.accountsStore, cm: columnModel, enableColumnHide:false, enableColumnMove:false, @@ -348,7 +348,7 @@ if (!this.buttons) { this.buttons =3D3D [{ text: 'Save', - id: 'ContainerGrantsSaveButton', + id: 'AccountsActionSaveButton', disabled: true, scope: this, handler: function(){ @@ -357,7 +357,7 @@ } }, { text: 'Apply', - id: 'ContainerGrantsApplyButton', + id: 'AccountsActionApplyButton', disabled: true, scope: this, handler: function(){ Modified: trunk/tine20/Egwbase/js/container.js URL: http://www.egroupware.org/viewvc/trunk/tine20/Egwbase/js/container.js?= =3D rev=3D3D720&root=3D3Dtine&r1=3D3D719&r2=3D3D720&view=3D3Ddiff =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D= =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D= =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D= =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D =3D3D=3D3D=3D3D --- trunk/tine20/Egwbase/js/container.js (original) +++ trunk/tine20/Egwbase/js/container.js Thu Jan 31 21:23:12 2008 @@ -57,5 +57,20 @@ /** * type for shared container */ - TYPE_SHARED: 'shared' + TYPE_SHARED: 'shared', + =3D + /** + * Models of Egwbase container + * @property {Object} + */ + models: { + containerGrant: Ext.data.Record.create([ + {name: 'accountId'}, + {name: 'accountName'}, + {name: 'readGrant'}, + {name: 'addGrant'}, + {name: 'editGrant'}, + {name: 'deleteGrant'} + ]) + } }; Modified: trunk/tine20/Egwbase/js/widgets/containerGrants.js URL: http://www.egroupware.org/viewvc/trunk/tine20/Egwbase/js/widgets/conta= =3D inerGrants.js?rev=3D3D720&root=3D3Dtine&r1=3D3D719&r2=3D3D720&view=3D3Ddiff =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D= =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D= =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D= =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D =3D3D=3D3D=3D3D --- trunk/tine20/Egwbase/js/widgets/containerGrants.js (original) +++ trunk/tine20/Egwbase/js/widgets/containerGrants.js Thu Jan 31 21:23:12 = =3D 2008 @@ -11,8 +11,22 @@ Ext.namespace('Egw.widgets', 'Egw.widgets.container'); =3D Egw.widgets.container.grantDialog =3D3D Ext.extend(Egw.widgets.Accountpick= er=3D Actiondialog, { - getPermsPanel: function() { - var _removeAccountHandler =3D3D function(_button, _event) { + /** + * @cfg {Egw.Egwbase.container.models.container} + * Container to manage grants for + */ + container: null, + =3D + /** + * @property {Object} + * Models =3D + */ + models: { + containerGrant : Egw.Egwbase.container.models.containerGrant + }, + // private + handlers: { + removeAccount: function(_button, _event) { var selectedRows =3D3D Ext.getCmp('Addressbook_Grants_Grid').g= et=3D SelectionModel().getSelections(); var grantsStore =3D3D Ext.getCmp('Addressbook_Grants_Grid').ge= tS=3D tore(); for (var i =3D3D 0; i < selectedRows.length; ++i) { @@ -21,9 +35,8 @@ =3D Ext.getCmp('Addressbook_Grants_SaveButton').enable(); Ext.getCmp('Addressbook_Grants_ApplyButton').enable(); - }; - =3D - var _addAccountHandler =3D3D function(_button, _event) { + }, + addAccount: function(_button, _event) { var grantsStore =3D3D Ext.getCmp('Addressbook_Grants_Grid').ge= tS=3D tore(); var grantsSelectionModel =3D3D Ext.getCmp('Addressbook_Grants_= Gr=3D id').getSelectionModel(); var accountsSelectionModel =3D3D Ext.getCmp('Egwbase_Accounts_= Gr=3D id').getSelectionModel(); @@ -37,16 +50,7 @@ currentRecordId =3D3D selectedRows[i].id; if(grantsStore.getById(selectedRows[i].id) =3D3D=3D3D=3D3D= undef=3D ined) { =3D - var grantsRecord =3D3D Ext.data.Record.create( - {name: 'accountId'}, - {name: 'accountName'}, - {name: 'readGrant'}, - {name: 'addGrant'}, - {name: 'editGrant'}, - {name: 'deleteGrant'} - ); - =3D - grantsStore.addSorted(new grantsRecord({ + grantsStore.addSorted(new this.models.containerGrants({ accountId: selectedRows[i].data.accountId, accountName: selectedRows[i].data.accountDisplayNa= =3D me, readGrant: true, @@ -65,52 +69,43 @@ Ext.getCmp('Addressbook_Grants_SaveButton').enable(); Ext.getCmp('Addressbook_Grants_ApplyButton').enable(); } - }; - =3D - =3D - var action_addAccount =3D3D new Ext.Action({ - text: 'add account', - disabled: true, - handler: _addAccountHandler, - iconCls: 'action_addContact' - }); - =3D - var action_removeAccount =3D3D new Ext.Action({ - text: 'remove account', - disabled: true, - handler: _removeAccountHandler, - iconCls: 'action_deleteContact' - }); - =3D - var dataStore =3D3D new Ext.data.JsonStore({ - url: 'index.php', + } + }, + //private + initComponent: function(){ + this.actions =3D3D { + addAccount: new Ext.Action({ + text: 'add account', + disabled: true, + handler: this.handlers.addAccount, + iconCls: 'action_addContact' + }), + removeAccount: new Ext.Action({ + text: 'remove account', + disabled: true, + handler: this.handlers.removeAccount, + iconCls: 'action_deleteContact' + }) + }; + this.dataStore =3D3D new Ext.data.JsonStore({ baseParams: { method: 'Egwbase.getContainerGrants', - containerId: '' + containerId: this.container.container_id }, root: 'results', totalProperty: 'totalcount', id: 'accountId', - fields: [ - {name: 'accountId'}, - {name: 'accountName'}, - {name: 'readGrant'}, - {name: 'addGrant'}, - {name: 'editGrant'}, - {name: 'deleteGrant'} - ] - // turn off remote sorting - //remoteSort: false + fields: this.models.containerGrant }); + =3D + this.dataStore.setDefaultSort('accountName', 'asc'); =3D - dataStore.setDefaultSort('accountName', 'asc'); + this.dataStore.load(); =3D - dataStore.load(); - =3D - dataStore.on('update', function(_store){ - Ext.getCmp('Addressbook_Grants_SaveButton').enable(); - Ext.getCmp('Addressbook_Grants_ApplyButton').enable(); - }); + this.dataStore.on('update', function(_store){ + Ext.getCmp('AccountsActionSaveButton').enable(); + Ext.getCmp('AccountsActionApplyButton').enable(); + }, this); =3D var readColumn =3D3D new Ext.grid.CheckColumn({ header: 'Read', @@ -148,12 +143,7 @@ readColumn, addColumn, editColumn, - deleteColumn/*, - new Ext.grid.CheckColumn({ - header: "Admin", - dataIndex: 'admin', - width: 55 - }) */ + deleteColumn ]); =3D columnModel.defaultSortable =3D3D true; // by default columns are = so=3D rtable @@ -162,28 +152,26 @@ =3D var permissionsBottomToolbar =3D3D new Ext.Toolbar({ items: [ - action_removeAccount + this.actions.removeAccount ] }); =3D - rowSelectionModel.on('selectionchange', function(_selectionModel) { var rowCount =3D3D _selectionModel.getCount(); =3D if(rowCount < 1) { // no row selected - action_removeAccount.setDisabled(true); + this.actions.removeAccount.setDisabled(true); } else { // only one row selected - action_removeAccount.setDisabled(false); + this.actions.removeAccount.setDisabled(false); } - }); + }, this); =3D - var gridPanel =3D3D new Ext.grid.EditorGridPanel({ + this.GrantsGridPanel =3D3D new Ext.grid.EditorGridPanel({ region: 'center', - id: 'Addressbook_Grants_Grid', title: 'Permissions', - store: dataStore, + store: this.dataStore, cm: columnModel, autoSizeColumns: false, selModel: rowSelectionModel, @@ -194,7 +182,10 @@ bbar: permissionsBottomToolbar, border: false }); - =3D - return gridPanel; + =3D + this.items =3D3D [ + this.GrantsGridPanel + ]; + Egw.widgets.container.grantDialog.superclass.initComponent.call(this); } }) Modified: trunk/tine20/Egwbase/js/widgets/containerTree.js URL: http://www.egroupware.org/viewvc/trunk/tine20/Egwbase/js/widgets/conta= =3D inerTree.js?rev=3D3D720&root=3D3Dtine&r1=3D3D719&r2=3D3D720&view=3D3Ddiff =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D= =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D= =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D= =3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D3D=3D =3D3D=3D3D=3D3D --- trunk/tine20/Egwbase/js/widgets/containerTree.js (original) +++ trunk/tine20/Egwbase/js/widgets/containerTree.js Thu Jan 31 21:23:12 20= =3D 08 @@ -264,11 +264,14 @@ } }, managePermissions: function() { - var win =3D3D new Egw.widgets.container.grantDialog({ - =3D - }); - win.show(); - //this.fireEvent('containerpermissionchange', ''); + if (this.ctxNode) { + var node =3D3D this.ctxNode; + var win =3D3D new Egw.widgets.container.grantDialog({ + container: node.attributes.container + }); + win.show(); + //this.fireEvent('containerpermissionchange', ''); + } }, }; =3D |