From d5d06848c69520f82d6a5d40392c4ed7a3a8994b Mon Sep 17 00:00:00 2001
From: Robert Anderson <randerson@lbsd.net>
Date: Wed, 13 May 2009 13:21:21 +0000
Subject: [PATCH] Display group attributes window

---
 webgui/js/app/windows/AdminGroupAttributes.js | 263 ++++++++++++++++++
 1 file changed, 263 insertions(+)
 create mode 100644 webgui/js/app/windows/AdminGroupAttributes.js

diff --git a/webgui/js/app/windows/AdminGroupAttributes.js b/webgui/js/app/windows/AdminGroupAttributes.js
new file mode 100644
index 00000000..fcd41889
--- /dev/null
+++ b/webgui/js/app/windows/AdminGroupAttributes.js
@@ -0,0 +1,263 @@
+
+
+function showAdminGroupAttributesWindow(groupID) {
+
+	var AdminGroupAttributesWindow = new Ext.ux.GenericGridWindow(
+		// Window config
+		{
+			title: "Attributes",
+			
+			width: 600,
+			height: 335,
+		
+			minWidth: 600,
+			minHeight: 335,
+		},
+		// Grid config
+		{
+			// Inline toolbars
+			tbar: [
+				{
+					text:'Add',
+					tooltip:'Add attribute',
+					iconCls:'add',
+					handler: function() {
+						showAdminGroupAttributeAddEditWindow(groupID);
+					}
+				}, 
+				'-', 
+				{
+					text:'Edit',
+					tooltip:'Edit attribute',
+					iconCls:'edit',
+					handler: function() {
+						var selectedItem = AdminGroupAttributesWindow.getComponent('gridpanel').getSelectionModel().getSelected();
+						// Check if we have selected item
+						if (selectedItem) {
+							// If so display window
+							showAdminGroupAttributeAddEditWindow(groupID,selectedItem.data.ID);
+						} else {
+							AdminGroupAttributesWindow.getEl().mask();
+
+							// Display error
+							Ext.Msg.show({
+								title: "Nothing selected",
+								msg: "No attribute selected",
+								icon: Ext.MessageBox.ERROR,
+								buttons: Ext.Msg.CANCEL,
+								modal: false,
+								fn: function() {
+									AdminGroupAttributesWindow.getEl().unmask();
+								}
+							});
+						}
+					}
+				},
+				'-', 
+				{
+					text:'Remove',
+					tooltip:'Remove attribute',
+					iconCls:'remove',
+					handler: function() {
+						var selectedItem = AdminGroupAttributesWindow.getComponent('gridpanel').getSelectionModel().getSelected();
+						// Check if we have selected item
+						if (selectedItem) {
+							// If so display window
+							showAdminGroupAttributeRemoveWindow(AdminGroupAttributesWindow,selectedItem.data.ID);
+						} else {
+							AdminGroupAttributesWindow.getEl().mask();
+
+							// Display error
+							Ext.Msg.show({
+								title: "Nothing selected",
+								msg: "No attribute selected",
+								icon: Ext.MessageBox.ERROR,
+								buttons: Ext.Msg.CANCEL,
+								modal: false,
+								fn: function() {
+									AdminGroupAttributesWindow.getEl().unmask();
+								}
+							});
+						}
+					}
+				}
+			],
+			// Column model
+			colModel: new Ext.grid.ColumnModel([
+				{
+					id: 'ID',
+					header: "ID",
+					sortable: true,
+					dataIndex: 'ID'
+				},
+				{
+					header: "Name",
+					sortable: true,
+					dataIndex: 'Name'
+				},
+				{
+					header: "Operator",
+					sortable: true,
+					dataIndex: 'Operator'
+				},
+				{
+					header: "Value",
+					sortable: true,
+					dataIndex: 'Value'
+				},
+				{
+					header: "Disabled",
+					sortable: true,
+					dataIndex: 'Disabled'
+				}
+			]),
+			autoExpandColumn: 'Name'
+		},
+		// Store config
+		{
+			baseParams: {
+				ID: groupID,
+				SOAPUsername: globalConfig.soap.username,
+				SOAPPassword: globalConfig.soap.password,
+				SOAPAuthType: globalConfig.soap.authtype,
+				SOAPModule: 'AdminGroupAttributes',
+				SOAPFunction: 'getAdminGroupAttributes',
+				SOAPParams: 'ID,__search'
+			}
+		},
+		// Filter config
+		{
+			filters: [
+				{type: 'numeric',  dataIndex: 'ID'},
+				{type: 'string',  dataIndex: 'Name'},
+				{type: 'string',  dataIndex: 'Operator'},
+				{type: 'string',  dataIndex: 'Value'},
+				{type: 'boolean', dataIndex: 'Disabled'}
+			]
+		}
+	);
+
+	AdminGroupAttributesWindow.show();
+}
+
+
+// Display edit/add form
+function showAdminGroupAttributeAddEditWindow(groupID,attrID) {
+
+	var submitAjaxConfig;
+
+
+	// We doing an update
+	if (attrID) {
+		submitAjaxConfig = {
+			ID: attrID,
+			SOAPFunction: 'updateAdminGroupAttribute',
+			SOAPParams: 
+				'0:ID,'+
+				'0:Name'
+		};
+
+	// We doing an Add
+	} else {
+		submitAjaxConfig = {
+			GroupID: groupID,
+			SOAPFunction: 'addAdminGroupAttribute',
+			SOAPParams: 
+				'0:GroupID,'+
+				'0:Name'
+		};
+	}
+	
+	// Create window
+	var adminGroupAttributesFormWindow = new Ext.ux.GenericFormWindow(
+		// Window config
+		{
+			title: "Attribute Information",
+
+			width: 475,
+			height: 260,
+
+			minWidth: 475,
+			minHeight: 260
+		},
+		// Form panel config
+		{
+			labelWidth: 85,
+			baseParams: {
+				SOAPUsername: globalConfig.soap.username,
+				SOAPPassword: globalConfig.soap.password,
+				SOAPAuthType: globalConfig.soap.authtype,
+				SOAPModule: 'AdminGroupAttributes'
+			},
+			items: [
+				{
+					fieldLabel: 'Name',
+					name: 'Name',
+					vtype: 'usernamePart',
+					maskRe: usernamePartRe,
+					allowBlank: false
+				},
+			],
+		},
+		// Submit button config
+		submitAjaxConfig
+	);
+
+	adminGroupAttributesFormWindow.show();
+
+	if (attrID) {
+		adminGroupAttributesFormWindow.getComponent('formpanel').load({
+			params: {
+				ID: attrID,
+				SOAPUsername: globalConfig.soap.username,
+				SOAPPassword: globalConfig.soap.password,
+				SOAPAuthType: globalConfig.soap.authtype,
+				SOAPModule: 'AdminGroupAttributes',
+				SOAPFunction: 'getAdminGroupAttribute',
+				SOAPParams: 'ID'
+			}
+		});
+	}
+}
+
+
+
+
+// Display remove form
+function showAdminGroupAttributeRemoveWindow(parent,id) {
+	// Mask parent window
+	parent.getEl().mask();
+
+	// Display remove confirm window
+	Ext.Msg.show({
+		title: "Confirm removal",
+		msg: "Are you very sure you wish to remove this attribute?",
+		icon: Ext.MessageBox.ERROR,
+		buttons: Ext.Msg.YESNO,
+		modal: false,
+		fn: function(buttonId,text) {
+			// Check if user clicked on 'yes' button
+			if (buttonId == 'yes') {
+
+				// Do ajax request
+				uxAjaxRequest(parent,{
+					params: {
+						ID: id,
+						SOAPUsername: globalConfig.soap.username,
+						SOAPPassword: globalConfig.soap.password,
+						SOAPAuthType: globalConfig.soap.authtype,
+						SOAPModule: 'AdminGroupAttributes',
+						SOAPFunction: 'removeAdminGroupAttribute',
+						SOAPParams: 'ID'
+					}
+				});
+
+
+			// Unmask if user answered no
+			} else {
+				parent.getEl().unmask();
+			}
+		}
+	});
+}
+
-- 
GitLab