Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

501 lines
16 KiB

<%@ Language=VBScript %>
<% Option Explicit %>
<%
'-------------------------------------------------------------------------
' groups.asp: Group area page - lists all the Groups,and provides
' links for creating new groups,editing and deleting groups
'
' Copyright (c) Microsoft Corporation. All rights reserved.
'
' Date Description
' 15-Jan-2001 Creation date
'-------------------------------------------------------------------------
%>
<!-- #include virtual="/admin/inc_framework.asp" -->
<!-- #include virtual="/admin/ots_main.asp" -->
<%
'-------------------------------------------------------------------------
' Global Constants
'-------------------------------------------------------------------------
Const NAME_COLUMN = 0
Const DESCRIPTION_COLUMN = 1
Const GROUPS_PER_PAGE = 100
'
' Name of this source file
Const SOURCE_FILE = "Groups.asp"
'
' Flag to toggle optional tracing output
Const ENABLE_TRACING = TRUE
'-------------------------------------------------------------------------
' Global Variables
'-------------------------------------------------------------------------
Dim g_bSearchChanged
Dim g_iSearchCol
Dim g_sSearchColValue
Dim g_bPagingInitialized
Dim g_bPageChangeRequested
Dim g_sPageAction
Dim g_iPageMin
Dim g_iPageMax
Dim g_iPageCurrent
Dim g_bSortRequested
Dim g_iSortCol
Dim g_sSortSequence
'-------------------------------------------------------------------------
' Local Variables
'-------------------------------------------------------------------------
Dim page
DIM L_APPLIANCE_GROUPS
DIM L_DESCRIPTION_HEADING
DIM L_COLUMN_NAME
DIM L_COLUMN_FULLNAME
DIM L_TASKS_TEXT
DIM L_NEW_TEXT
DIM L_DELETE_TEXT
DIM L_PROPERTIES_TEXT
DIM L_NEW_ROLLOVERTEXT
DIM L_DELETE_ROLLOVERTEXT
DIM L_PROPERTIES_ROLLOVERTEXT
'error messages
Dim L_FAILEDTOGETGROUPS_ERRORMESSAGE
L_APPLIANCE_GROUPS = GetLocString("usermsg.dll", "&H4031001C", "")
L_DESCRIPTION_HEADING = GetLocString("usermsg.dll", "&H4031001D", "")
L_COLUMN_NAME = GetLocString("usermsg.dll", "&H4031001E", "")
L_COLUMN_FULLNAME = GetLocString("usermsg.dll", "&H4031001F", "")
L_TASKS_TEXT = GetLocString("usermsg.dll", "&H40310020", "")
L_NEW_TEXT = GetLocString("usermsg.dll", "&H40310021", "")
L_DELETE_TEXT = GetLocString("usermsg.dll", "&H40310022", "")
L_PROPERTIES_TEXT = GetLocString("usermsg.dll", "&H40310023", "")
L_NEW_ROLLOVERTEXT = GetLocString("usermsg.dll", "&H40310024", "")
L_DELETE_ROLLOVERTEXT = GetLocString("usermsg.dll", "&H40310025", "")
L_PROPERTIES_ROLLOVERTEXT = GetLocString("usermsg.dll", "&H40310026", "")
'error messages
L_FAILEDTOGETGROUPS_ERRORMESSAGE = GetLocString("usermsg.dll", "&HC031002E", "")
'
' Create Page
Call SA_CreatePage( L_APPLIANCE_GROUPS, "", PT_AREA, page )
'
' Show page
Call SA_ShowPage( page )
'---------------------------------------------------------------------
' Function name: OnInitPage
' Description: Called to signal first time processing for this page.
' Input Variables: PageIn and EventArg
' Output Variables: None
' Return Values: TRUE to indicate initialization was successful. FALSE to indicate
' errors. Returning FALSE will cause the page to be abandoned.
' Global Variables: None
' Called to signal first time processing for this page. Use this method
' to do first time initialization tasks.
'---------------------------------------------------------------------
Public Function OnInitPage(ByRef PageIn, ByRef EventArg)
OnInitPage = TRUE
If ( ENABLE_TRACING ) Then
Call SA_TraceOut(SOURCE_FILE, "OnInitPage")
End If
g_bPagingInitialized = FALSE
g_iPageCurrent = 1
g_iSortCol = 0
g_sSortSequence = "A"
End Function
'---------------------------------------------------------------------
' Function name: OnServeAreaPage
' Description: Called when the page needs to be served.
' Input Variables: PageIn, EventArg
' Output Variables: None
' Return Values: TRUE to indicate no problems occured. FALSE to indicate errors.
' Returning FALSE will cause the page to be abandoned.
' Global Variables: In:g_bPageChangeRequested,g_sPageAction,
' g_bSearchRequested,g_iSearchCol,g_sSearchColValue
' In:L_(*)-Localization Strings
' Called when the page needs to be served. Use this method to serve content.
'---------------------------------------------------------------------
Public Function OnServeAreaPage(ByRef PageIn, ByRef EventArg)
If ( ENABLE_TRACING ) Then
Call SA_TraceOut(SOURCE_FILE, "OnServeAreaPage")
End If
Dim tableGroup
Dim colFlags
Dim iGroupCount
Dim nReturnValue
Dim strFlag
Dim strUrlBase
strFlag="noval"
' Create the table
'
tableGroup = OTS_CreateTable("", L_DESCRIPTION_HEADING)
'
' If the search criteria changed then we need to recompute the paging range
If ( TRUE = g_bSearchChanged ) Then
'
' Need to recalculate the paging range
g_bPagingInitialized = FALSE
'
' Restarting on page #1
g_iPageCurrent = 1
End If
'
' Name column is searchable and is contains key to row
colFlags = (OTS_COL_SORT OR OTS_COL_SEARCH OR OTS_COL_KEY)
'
' Create the column and add it to the table
nReturnValue= OTS_AddTableColumn(tableGroup, OTS_CreateColumnEx( L_COLUMN_NAME, "left", colFlags, 25 ))
If nReturnValue <> gc_ERR_SUCCESS Then
SA_ServeFailurePage L_OTS_ADDCOLOUMNFAIL_ERRORMESSAGE
OnServeAreaPage = false
Exit Function
End IF
'
' Description is searchable
colFlags = OTS_COL_SORT OR OTS_COL_SEARCH
'
' Create the column and add it to the table
nReturnValue=OTS_AddTableColumn(tableGroup, OTS_CreateColumnEx( L_COLUMN_FULLNAME, "left", colFlags, 50))
If nReturnValue <> gc_ERR_SUCCESS Then
SA_ServeFailurePage L_OTS_ADDCOLOUMNFAIL_ERRORMESSAGE
OnServeAreaPage = false
Exit Function
End IF
'
' Fetch the list of groups and add them to the table
'
Dim objContainer
Dim objGroup
'
' ADSI call to get the local computer object
Set objContainer = GetObject("WinNT://" + GetComputerName() )
'
' ADSI call to get the collection of local groups
objContainer.Filter = Array("Group")
iGroupCount = 0
For Each objGroup in objContainer
If ( Len( g_sSearchColValue ) <= 0 ) Then
'
' Search criteria blank, select all rows
'
iGroupCount = iGroupCount + 1
'
' Verify that the current group is part of the current page
If ( IsItemOnPage( iGroupCount, g_iPageCurrent, GROUPS_PER_PAGE) ) Then
Call OTS_AddTableRow( tableGroup, Array(objGroup.Name, objGroup.Description))
strFlag="yesval"
End If
Else
'
' Check the Search criteria
'
Select Case (g_iSearchCol)
Case NAME_COLUMN
If ( InStr(1, objGroup.Name, g_sSearchColValue, 1) ) Then
iGroupCount = iGroupCount + 1
'
' Verify that the current group part of the current page
If ( IsItemOnPage( iGroupCount, g_iPageCurrent, GROUPS_PER_PAGE) ) Then
Call OTS_AddTableRow( tableGroup, Array(objGroup.Name, objGroup.Description))
strFlag="yesval"
End If
End If
Case DESCRIPTION_COLUMN
If ( InStr(1, objGroup.Description, g_sSearchColValue, 1) ) Then
iGroupCount = iGroupCount + 1
'
' Verify that the current group part of the current page
If ( IsItemOnPage( iGroupCount, g_iPageCurrent, GROUPS_PER_PAGE) ) Then
Call OTS_AddTableRow( tableGroup, Array(objGroup.Name, objGroup.Description))
strFlag="yesval"
End If
End If
Case Else
Call SA_TraceOut(SOURCE_FILE, "Unrecognized search column: " + CStr(g_iSearchCol))
iGroupCount = iGroupCount + 1
'
' Verify that the current group part of the current page
If ( IsItemOnPage( iGroupCount, g_iPageCurrent, GROUPS_PER_PAGE) ) Then
Call OTS_AddTableRow( tableGroup, Array(objGroup.Name, objGroup.Description))
strFlag="yesval"
End If
End Select
End If
Next
'
' Set Tasks section title
Call OTS_SetTableTasksTitle(tableGroup, L_TASKS_TEXT)
'
' Add the tasks associated with Group objects
strUrlBase = "users/group_new.asp"
call SA_MungeURL(strUrlBase,"Tab1",GetTab1())
call SA_MungeURL(strUrlBase,"Tab2",GetTab2())
Call OTS_AddTableTask( tableGroup, OTS_CreateTaskEx(L_NEW_TEXT, _
L_NEW_ROLLOVERTEXT, _
strUrlBase,_
OTS_PT_TABBED_PROPERTY, "OTS_TaskAlways") )
strUrlBase = "users/group_delete.asp"
call SA_MungeURL(strUrlBase,"Tab1",GetTab1())
call SA_MungeURL(strUrlBase,"Tab2",GetTab2())
Call OTS_AddTableTask( tableGroup, OTS_CreateTaskEx(L_DELETE_TEXT, _
L_DELETE_ROLLOVERTEXT, _
strUrlBase,_
OTS_PT_PROPERTY, "OTS_TaskAny") )
strUrlBase = "users/group_prop.asp"
call SA_MungeURL(strUrlBase,"Tab1",GetTab1())
call SA_MungeURL(strUrlBase,"Tab2",GetTab2())
Call OTS_AddTableTask( tableGroup, OTS_CreateTaskEx(L_PROPERTIES_TEXT, _
L_PROPERTIES_ROLLOVERTEXT, _
strUrlBase,_
OTS_PT_TABBED_PROPERTY, "OTS_TaskOne") )
Set objContainer = Nothing
'
' Enable paging feature
'
Call OTS_EnablePaging(tableGroup, TRUE)
'
' If paging range needs to be initialised then
' we need to figure out how many pages we are going to display
If ( FALSE = g_bPagingInitialized ) Then
g_iPageMin = 1
g_iPageMax = Int(iGroupCount / GROUPS_PER_PAGE )
If ( (iGroupCount MOD GROUPS_PER_PAGE) > 0 ) Then
g_iPageMax = g_iPageMax + 1
End If
g_iPageCurrent = 1
Call OTS_SetPagingRange(tableGroup, g_iPageMin, g_iPageMax, g_iPageCurrent)
End If
'
' Sort the table
'
Call OTS_SortTable(tableGroup, g_iSortCol, g_sSortSequence, SA_RESERVED)
'
' Set MultiSelection enabled
'
Call OTS_SetTableMultiSelection(tableGroup,TRUE)
'
' Send table to the response stream
'
Call OTS_ServeTable(tableGroup)
'
' All done...
OnServeAreaPage = TRUE
End Function
'---------------------------------------------------------------------
' Function name: OnSearchNotify()
' Description: Search notification event handler. When one or more columns are
' marked with the OTS_COL_SEARCH flag, the Web Framework fires
' this event
' Input Variables: PageIn,EventArg,sItem,sValue
' Output Variables: PageIn,EventArg,sItem,sValue
' Returns: Always returns TRUE
'---------------------------------------------------------------------
Public Function OnSearchNotify(ByRef PageIn, _
ByRef EventArg, _
ByRef sItem, _
ByRef sValue )
OnSearchNotify = TRUE
'
' User pressed the search GO button
'
If SA_IsChangeEvent(EventArg) Then
If ( ENABLE_TRACING ) Then
Call SA_TraceOut(SOURCE_FILE, "OnSearchNotify() Change Event Fired")
End If
g_bSearchChanged = TRUE
g_iSearchCol = Int(sItem)
g_sSearchColValue = CStr(sValue)
'
' User clicked a column sort, OR clicked either the page next or page prev button
ElseIf SA_IsPostBackEvent(EventArg) Then
If ( ENABLE_TRACING ) Then
Call SA_TraceOut(SOURCE_FILE, "OnSearchNotify() Postback Event Fired")
End If
g_bSearchChanged = FALSE
g_iSearchCol = Int(sItem)
g_sSearchColValue = CStr(sValue)
'
' Unknown event source
Else
If ( ENABLE_TRACING ) Then
Call SA_TraceOut(SOURCE_FILE, "Unrecognized Event in OnSearchNotify()")
End If
End IF
End Function
'---------------------------------------------------------------------
' Function: OnPagingNotify()
' Function name: OnPagingNotify()
' Description: Paging notification event handler.
' Input Variables: PageIn,EventArg,sPageAction,iPageMin,iPageMax,iPageCurrent
' Output Variables: PageIn,EventArg
' Return Values: Always returns TRUE
' Global Variables: G_*
'---------------------------------------------------------------------
Public Function OnPagingNotify(ByRef PageIn, _
ByRef EventArg, _
ByVal sPageAction, _
ByVal iPageMin, _
ByVal iPageMax, _
ByVal iPageCurrent )
OnPagingNotify = TRUE
g_bPagingInitialized = TRUE
'
' User pressed either page next or page previous
'
If SA_IsChangeEvent(EventArg) Then
If ( ENABLE_TRACING ) Then
Call SA_TraceOut(SOURCE_FILE, "OnPagingNotify() Change Event Fired")
End If
g_bPageChangeRequested = TRUE
g_sPageAction = CStr(sPageAction)
g_iPageMin = iPageMin
g_iPageMax = iPageMax
g_iPageCurrent = iPageCurrent
'
' User clicked a column sort OR the search GO button
ElseIf SA_IsPostBackEvent(EventArg) Then
If ( ENABLE_TRACING ) Then
Call SA_TraceOut(SOURCE_FILE, "OnPagingNotify() Postback Event Fired")
End If
g_bPageChangeRequested = FALSE
g_sPageAction = CStr(sPageAction)
g_iPageMin = iPageMin
g_iPageMax = iPageMax
g_iPageCurrent = iPageCurrent
'
' Unknown event source
Else
If ( ENABLE_TRACING ) Then
Call SA_TraceOut(SOURCE_FILE, "Unrecognized Event in OnPagingNotify()")
End If
End IF
End Function
'---------------------------------------------------------------------
' Function: OnSortNotify()
' Function name: GetServices
' Description: Sorting notification event handler.
' Input Variables: PageIn,EventArg,sortCol,sortSeq
' Output Variables: PageIn,EventArg
' Return Values: Always returns TRUE
' Global Variables: G_*
'---------------------------------------------------------------------
Public Function OnSortNotify(ByRef PageIn, _
ByRef EventArg, _
ByVal sortCol, _
ByVal sortSeq )
OnSortNotify = TRUE
'
' User pressed column sort
'
If SA_IsChangeEvent(EventArg) Then
If ( ENABLE_TRACING ) Then
Call SA_TraceOut(SOURCE_FILE, "OnSortNotify() Change Event Fired")
End If
g_iSortCol = sortCol
g_sSortSequence = sortSeq
g_bSortRequested = TRUE
'
' User presed the search GO button OR clicked either the page next or page prev button
ElseIf SA_IsPostBackEvent(EventArg) Then
If ( ENABLE_TRACING ) Then
Call SA_TraceOut(SOURCE_FILE, "OnSortNotify() Postback Event Fired")
End If
g_iSortCol = sortCol
g_sSortSequence = sortSeq
g_bSortRequested = TRUE
'
' Unknown event source
Else
If ( ENABLE_TRACING ) Then
Call SA_TraceOut(SOURCE_FILE, "Unrecognized Event in OnSearchNotify()")
End If
End IF
If ( ENABLE_TRACING ) Then
Call SA_TraceOut(SOURCE_FILE, "Sort col: " + CStr(sortCol) + " sequence: " + sortSeq)
End If
End Function
'---------------------------------------------------------------------
' Function: IsItemOnPage()
' Description: Verify that the current group part of the current page.
' Input Variables: iCurrentItem
' Output Variables: None
' Return Values: TRUE or FALSE
' Global Variables: None
'---------------------------------------------------------------------
Private Function IsItemOnPage(ByVal iCurrentItem, iCurrentPage, iItemsPerPage)
Dim iLowerLimit
Dim iUpperLimit
iLowerLimit = ((iCurrentPage - 1) * iItemsPerPage )
iUpperLimit = iLowerLimit + iItemsPerPage + 1
If ( iCurrentItem > iLowerLimit AND iCurrentItem < iUpperLimit ) Then
IsItemOnPage = TRUE
Else
IsItemOnPage = FALSE
End If
End Function
%>