Skip to content
Snippets Groups Projects
WiSPUsers.js 11.2 KiB
Newer Older


function showWiSPUserWindow() {

	var WiSPUserWindow = new Ext.ux.GenericGridWindow(
		// Window config
		{
			title: "Users",
			
			width: 600,
			height: 335,
		
			minWidth: 600,
			minHeight: 335,
		},
		// Grid config
		{
			// Inline toolbars
			tbar: [
				{
					text:'Add',
					tooltip:'Add user',
					iconCls:'add',
					handler: function() {
						showWiSPUserEditWindow();
					}
				}, 
				'-', 
				{
					text:'Edit',
					tooltip:'Edit user',
					iconCls:'option',
					handler: function() {
						var selectedItem = WiSPUserWindow.getComponent('gridpanel').getSelectionModel().getSelected();
						// Check if we have selected item
						if (selectedItem) {
							// If so display window
							showWiSPUserEditWindow(selectedItem.data.ID);
						} else {
							WiSPUserWindow.getEl().mask();

							// Display error
							Ext.Msg.show({
								title: "Nothing selected",
								msg: "No user selected",
								icon: Ext.MessageBox.ERROR,
								buttons: Ext.Msg.CANCEL,
								modal: false,
								fn: function() {
									WiSPUserWindow.getEl().unmask();
								}
							});
						}
					}
				},
				'-',
				{
					text:'Remove',
					tooltip:'Remove user',
					iconCls:'remove',
					handler: function() {
						var selectedItem = WiSPUserWindow.getComponent('gridpanel').getSelectionModel().getSelected();
						// Check if we have selected item
						if (selectedItem) {
							// If so display window
							showWiSPUserRemoveWindow(WiSPUserWindow,selectedItem.data.ID);
						} else {
							WiSPUserWindow.getEl().mask();

							// Display error
							Ext.Msg.show({
								title: "Nothing selected",
								msg: "No user selected",
								icon: Ext.MessageBox.ERROR,
								buttons: Ext.Msg.CANCEL,
								modal: false,
								fn: function() {
									WiSPUserWindow.getEl().unmask();
								}
							});
						}
					}
				},
				'-',
				{
					text:'Logs',
					tooltip:'User logs',
					iconCls:'logs',
					handler: function() {
						var selectedItem = WiSPUserWindow.getComponent('gridpanel').getSelectionModel().getSelected();
						// Check if we have selected item
						if (selectedItem) {
							// If so display window
							showWiSPUserLogsWindow(selectedItem.data.ID);
						} else {
							WiSPUserWindow.getEl().mask();

							// Display error
							Ext.Msg.show({
								title: "Nothing selected",
								msg: "No user selected",
								icon: Ext.MessageBox.ERROR,
								buttons: Ext.Msg.CANCEL,
								modal: false,
								fn: function() {
									WiSPUserWindow.getEl().unmask();
								}
							});
						}
					}
				}
			],
			// Column model
			colModel: new Ext.grid.ColumnModel([
				{
					id: 'ID',
					header: "UserID",
					sortable: true,
					dataIndex: 'ID'
				},
				{
					header: "Username",
					sortable: true,
					dataIndex: 'Username'
					header: "Disabled",
					sortable: true,
					dataIndex: 'Disabled'
					header: "First Name",
					sortable: true,
					dataIndex: 'Firstname'
					header: "Last Name",
					sortable: true,
					dataIndex: 'Lastname'
					header: "Email",
					sortable: true,
					dataIndex: 'Email'
					header: "Phone",
					sortable: true,
					dataIndex: 'Phone'
			autoExpandColumn: 'Username'
		},
		// Store config
		{
			baseParams: {
				SOAPUsername: globalConfig.soap.username,
				SOAPPassword: globalConfig.soap.password,
				SOAPAuthType: globalConfig.soap.authtype,
				SOAPModule: 'WiSPUsers',
				SOAPFunction: 'getWiSPUsers',
				SOAPParams: '__null,__search'
			}
		},
		// Filter config
		{
			filters: [
				{type: 'numeric',  dataIndex: 'ID'},
				{type: 'string',  dataIndex: 'Username'},
				{type: 'boolean',  dataIndex: 'Disabled'},
				{type: 'string',  dataIndex: 'Firstname'},
				{type: 'string',  dataIndex: 'Lastname'},
				{type: 'string',  dataIndex: 'Email'},
				{type: 'string',  dataIndex: 'Phone'}
			]
		}
	);

	WiSPUserWindow.show();
}


// Display edit/add form
function showWiSPUserEditWindow(id) {

	var submitAjaxConfig;
	var editMode;


	// We doing an update
	if (id) {
		submitAjaxConfig = {
			ID: id,
			SOAPFunction: 'updateWiSPUser',
			SOAPParams: 
				'0:ID,'+
				'0:Username,'+
				'0:Password,'+
				'0:Firstname,'+
				'0:Lastname,'+
				'0:Phone,'+
				'0:Email,'+
				'0:MACAddress,'+
				'0:IPAddress,'+
				'0:Datalimit,'+
				'0:Uptimelimit'
		};

	// We doing an Add
	} else {
		submitAjaxConfig = {
			SOAPFunction: 'createWiSPUser',
			SOAPParams: 
				'0:Username,'+
				'0:Password,'+
				'0:Firstname,'+
				'0:Lastname,'+
				'0:Phone,'+
				'0:Email,'+
				'0:MACAddress,'+
				'0:IPAddress,'+
				'0:Datalimit,'+
				'0:Uptimelimit'
		};
	}

	// Create window
	var wispUserFormWindow = new Ext.ux.GenericFormWindow(
		// Window config
		{
			title: "User Information",

			width: 475,
			height: 340,

			minWidth: 475,
			minHeight: 340
		},
		// Form panel config
		{
			labelWidth: 85,
			baseParams: {
				SOAPUsername: globalConfig.soap.username,
				SOAPPassword: globalConfig.soap.password,
				SOAPAuthType: globalConfig.soap.authtype,
				SOAPModule: 'WiSPUsers'
			},
			items: [
				{
					fieldLabel: 'Username',
					name: 'Username',
					vtype: 'usernamePart',
					maskRe: usernamePartRe,
					allowBlank: false,
				},
				{
					fieldLabel: 'Password',
					name: 'Password',
					vtype: 'usernamePart',
					maskRe: usernamePartRe,
					allowBlank: false,
				},
				{
					xtype: 'tabpanel',
					plain: 'true',
					deferredRender: false, // Load all panels!
					activeTab: 0,
					height: 200,
					defaults: {
						layout: 'form',
						bodyStyle: 'padding: 10px;'
					},
					
					items: [
						{
							title: 'Personal',
							layout: 'form',
							defaultType: 'textfield',
							items: [
								{
									fieldLabel: 'First Name',
									name: 'Firstname',
									vtype: 'usernamePart',
									allowBlank: true
								},
								{
									fieldLabel: 'Last Name',
									name: 'Lastname',
									vtype: 'usernamePart',
									allowBlank: true
								},
								{
									fieldLabel: 'Phone',
									name: 'Phone',
									vtype: 'number',
									allowBlank: true
								},
								{
									fieldLabel: 'Email',
									name: 'Email',
									allowBlank: true
								}
							]
						},
						{
							title: 'Attributes',
							layout: 'form',
							defaultType: 'textfield',
							items: [
								{
									xtype: 'combo',
									//id: 'combo',
									fieldLabel: 'Name',
									name: 'Name',
									allowBlank: false,
									width: 160,

									store: new Ext.ux.JsonStore({
										sortInfo: { field: "Name", direction: "ASC" },
										baseParams: {
											SOAPUsername: globalConfig.soap.username,
											SOAPPassword: globalConfig.soap.password,
											SOAPAuthType: globalConfig.soap.authtype,
											SOAPModule: 'WiSPUsers',
											SOAPFunction: 'getWiSPUserAttributeNames',
											SOAPParams: '__null,__search'
										}
									}),
									displayField: 'Name',
									valueField: 'Name',
									hiddenName: 'Name',
									forceSelection: true,
									triggerAction: 'all',
									editable: false
								},
								{
									xtype: 'combo',
									//id: 'combo',
									fieldLabel: 'Value',
									name: 'Value',
									allowBlank: false,
									width: 160,

									store: new Ext.ux.JsonStore({
										sortInfo: { field: "Value", direction: "ASC" },
										baseParams: {
											SOAPUsername: globalConfig.soap.username,
											SOAPPassword: globalConfig.soap.password,
											SOAPAuthType: globalConfig.soap.authtype,
											SOAPModule: 'WiSPUsers',
											SOAPFunction: 'getWiSPUserAttributeValues',
											SOAPParams: '__null,__search'
										}
									}),
									displayField: 'Value',
									valueField: 'Value',
									hiddenName: 'Value',
									forceSelection: true,
									triggerAction: 'all',
									editable: false
								},
								/*{
									xtype: 'combo',
									//id: 'combo',
									fieldLabel: 'Group',
									name: 'Group',
									allowBlank: true,
									width: 140,

									store: new Ext.ux.JsonStore({
										sortInfo: { field: "Name", direction: "ASC" },
										baseParams: {
											SOAPUsername: globalConfig.soap.username,
											SOAPPassword: globalConfig.soap.password,
											SOAPAuthType: globalConfig.soap.authtype,
											SOAPModule: 'AdminUserGroups',
											SOAPFunction: 'getAdminGroups',
											SOAPParams: '__null,__search'
										}
									}),
									displayField: 'Name',
									valueField: 'ID',
									hiddenName: 'GroupID',
									forceSelection: false,
									triggerAction: 'all',
									editable: false
								},*/
								/*{
									xtype: 'combo',
									//id: 'combo',
									fieldLabel: 'Location',
									name: 'Location',
									allowBlank: true,
									width: 160,

									store: new Ext.ux.JsonStore({
										sortInfo: { field: "Name", direction: "ASC" },
										baseParams: {
											SOAPUsername: globalConfig.soap.username,
											SOAPPassword: globalConfig.soap.password,
											SOAPAuthType: globalConfig.soap.authtype,
											SOAPModule: 'AdminUserGroups',
											SOAPFunction: 'getWiSPLocations',
											SOAPParams: '__null,__search'
										}
									}),
									displayField: 'Name',
									valueField: 'ID',
									hiddenName: 'LocationID',
									forceSelection: false,
									triggerAction: 'all',
									editable: false
								},*/
								/*{
									fieldLabel: 'MAC Address',
									name: 'MACAddress',
									allowBlank: true
								},
								{
									fieldLabel: 'IP Address',
									name: 'IPAddress',
									allowBlank: true
								},
								{
									fieldLabel: 'Data Limit',
									name: 'Datalimit',
									vtype: 'number',
									allowBlank: true
								},
								{
									fieldLabel: 'Uptime Limit',
									name: 'Uptimelimit',
									vtype: 'number',
									allowBlank: true
								}*/
							]
						},
					]
				},
			],
		},
		// Submit button config
		submitAjaxConfig
	);
	wispUserFormWindow.show();

	if (id) {
		wispUserFormWindow.getComponent('formpanel').load({
			params: {
				SOAPUsername: globalConfig.soap.username,
				SOAPPassword: globalConfig.soap.password,
				SOAPAuthType: globalConfig.soap.authtype,
				SOAPModule: 'WiSPUsers',
				SOAPFunction: 'getWiSPUser',
				SOAPParams: 'ID'
			}
		});
	}
}




// Display edit/add form
function showWiSPUserRemoveWindow(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 user?",
		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: {
						SOAPUsername: globalConfig.soap.username,
						SOAPPassword: globalConfig.soap.password,
						SOAPAuthType: globalConfig.soap.authtype,
						SOAPModule: 'WiSPUsers',
						SOAPFunction: 'removeWiSPUser',
						SOAPParams: 'ID'