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.
 
 
 
 
 
 

624 lines
21 KiB

<%@ Language=VBScript %>
<% Option Explicit %>
<%
'-------------------------------------------------------------------------
' folder_new.asp : This page serves in creating a new folder
'
' Copyright (c) Microsoft Corporation. All rights reserved.
'
' Date Description
' 17-01-2001 Creation date
' 21-03-2001 Modified date
'-------------------------------------------------------------------------
%>
<!-- #include virtual="/admin/inc_framework.asp" -->
<!-- #include file="loc_folder.asp"-->
<%
'-------------------------------------------------------------------------
' Global Variables
'-------------------------------------------------------------------------
Dim rc 'Page variable
Dim page 'Page variable
Dim g_iTabGeneral 'Variable for General tab
Dim g_iTabCompress 'Variable for Compress tab
Dim SOURCE_FILE 'File name
SOURCE_FILE = SA_GetScriptFileName()
'-------------------------------------------------------------------------
' Form Variables
'-------------------------------------------------------------------------
Dim F_strCompressed 'Value of Compress Checkbox
Dim F_strParentFolderName 'Parent folder name
Dim F_strReadOnly 'Status of Readonly Checkbox
Dim F_strHidden 'Status of Hidden Checkbox
Dim F_strArchive 'Status of Archive Checkbox
Dim F_strChangeOption 'Status of radio button for compression of folder
Dim F_strFolderCompress 'Value of radio button to compress folder
Dim F_strFolderName 'Folder name
Dim F_strPathName 'Folder path
'------------------------------------------------------------------------
'Localization Variable and Constants
'------------------------------------------------------------------------
Dim L_PAGETITLE_NEW_TEXT 'Page title
Const CONST_ARR_APPLYALLFOLDERS = "ALL"
Const CONST_ARR_APPLYFOLDER = "ONE"
Const CONST_N_SIZEDATA_TEXT = "0"
Const CONST_UNCHECKED_TEXT = "UNCHECKED"
Const CONST_CHECKED_TEXT = "CHECKED"
'Page Title
L_PAGETITLE_NEW_TEXT = L_TABLEHEADING_TEXT 'Here the parent folder name must be appended
'Create a Tabbed Property Page
rc = SA_CreatePage(L_PAGETITLE_NEW_TEXT, "", PT_TABBED, page )
'Add two tabs
rc = SA_AddTabPage( page, L_GENERAL_TEXT, g_iTabGeneral)
rc = SA_AddTabPage( page, L_COMPRESS_TEXT, g_iTabCompress)
'Show the page
rc = SA_ShowPage( page )
'-------------------------------------------------------------------------
'Function name: OnInitPage
'Description: Called to signal first time processing for this page.
'Input Variables: PageIn,EventArg
'Output Variables: PageIn,EventArg
'Returns: TRUE to indicate initialization was successful. FALSE to indicate
' errors. Returning FALSE will cause the page to be abandoned.
'Global Variables: Out:None
' In: None
'--------------------------------------------------------------------------
Public Function OnInitPage(ByRef PageIn, ByRef EventArg)
Call SA_TraceOut(SOURCE_FILE, "OnInitPage")
F_strParentFolderName = replace(Request.QueryString("parent"),"/","\")
'Setting Folder Compress property to parent folder by default
F_strFolderCompress = CONST_ARR_APPLYFOLDER
Call SA_MungeURL(mstrReturnURL, "PKey", replace(F_strParentFolderName, "\", "/"))
OnInitPage = TRUE
End Function
'-------------------------------------------------------------------------
'Function name: OnPostBackPage
'Description: Called to signal that the page has been posted-back.
'Input Variables: PageIn,EventArg
'Output Variables: PageIn,EventArg
'Returns: TRUE to indicate initialization was successful. FALSE to indicate
' errors. Returning FALSE will cause the page to be abandoned.
'Global Variables: F_(*), L_(*)
'--------------------------------------------------------------------------
Public Function OnPostBackPage(ByRef PageIn, ByRef EventArg)
Call SA_TraceOut(SOURCE_FILE, "OnPostBackPage")
'Updating the form variables
F_strFolderName = Trim(Request.form("txtNewFolderName"))
F_strCompressed = Request.Form("chkCompress")
F_strFolderCompress = Request.Form("radFolders")
F_strHidden = Request.Form("chkHidden")
F_strReadOnly = Request.Form("chkReadOnly")
F_strArchive = Request.Form("chkArchive")
F_strParentFolderName = Request.Form("hdnParentFolder")
If F_strFolderCompress = CONST_ARR_APPLYALLFOLDERS Then
F_strChangeOption = Ucase(CONST_CHECKED_TEXT)
Else
F_strChangeOption = UCase(CONST_UNCHECKED_TEXT)
End if
OnPostBackPage = TRUE
End Function
'-------------------------------------------------------------------------
'Function name: OnServeTabbedPropertyPage
'Description: Called when the page needs to be served.
'Input Variables: PageIn,EventArg
'Output Variables: PageIn,EventArg
'Returns: TRUE to indicate initialization was successful. FALSE to indicate
' errors. Returning FALSE will cause the page to be abandoned.
'Global Variables: None
'--------------------------------------------------------------------------
Public Function OnServeTabbedPropertyPage(ByRef PageIn, _
ByVal iTab, _
ByVal bIsVisible, ByRef EventArg)
'Emit content for the requested tab
Select Case iTab
Case g_iTabGeneral
Call ServeTabGeneral(PageIn, bIsVisible)
Case g_iTabCompress
Call ServeTabCompress(PageIn, bIsVisible)
Case Else
Call SA_TraceOut(SOURCE_FILE, "OnServeTabbedPropertyPage")
End Select
OnServeTabbedPropertyPage = TRUE
End Function
'-------------------------------------------------------------------------
'Function name: OnSubmitPage
'Description: Called when the page has been submitted for processing.
'Input Variables: PageIn,EventArg
'Output Variables: PageIn,EventArg
'Returns: TRUE if the submit was successful, FALSE to indicate error(s).
' Returning FALSE will cause the page to be served again using
' a call to OnServePropertyPage.
'Global Variables: None
'--------------------------------------------------------------------------
Public Function OnSubmitPage(ByRef PageIn, ByRef EventArg)
'Call CreateNewFolder function to create new folder
OnSubmitPage = CreateNewFolder
End Function
'-------------------------------------------------------------------------
'Function name: OnClosePage
'Description: Called when the page is about to be closed.
'Input Variables: PageIn,EventArg
'Output Variables: PageIn,EventArg
'Returns: TRUE to allow close, FALSE to prevent close. Returning FALSE
' will result in a call to OnServePropertyPage.
'Global Variables: Out:None
' In: None
'--------------------------------------------------------------------------
Public Function OnClosePage(ByRef PageIn, ByRef EventArg)
OnClosePage = TRUE
End Function
'-------------------------------------------------------------------------
'Function name: ServeTabGeneral
'Description: Serves in selecting the tab1
'Input Variables: PageIn,bIsVisible
'Output Variables: PageIn
'Returns: None
'Global Variables: gc_ERR_SUCCESS,F_strFolderName,F_(*),L_(*)
'--------------------------------------------------------------------------
Function ServeTabGeneral(ByRef PageIn, ByVal bIsVisible)
If ( bIsVisible ) Then
'ServeCommonJavaScriptGeneral is called for General tab initialising,validating and set data
Call ServeCommonJavaScriptGeneral()
%>
<table border="0">
<tr>
<td nowrap class = "TasksBody">
<%=L_FOLDERNAME_TEXT%>
</td>
<td class = "TasksBody">
<input class = "FormField" type="text" name="txtNewFolderName" size="10" maxlength="242" value="<%=Server.HTMLEncode(F_strFolderName)%>">
</td>
</tr>
<tr>
<td nowrap class = "TasksBody" >
<%=L_FOLDERTYPE_TEXT %>
</td>
<td nowrap class = "TasksBody">
<%=L_TYPE_TEXT%>
</td>
</tr>
<tr>
<td nowrap class = "TasksBody">
<%=L_FOLDERLOCATION_TEXT %>
</td>
<td class = "TasksBody">
<%=server.HTMLEncode(F_strParentFolderName)%>
</td>
</tr>
<tr>
<td nowrap class = "TasksBody">
<%=L_FOLDERSIZE_TEXT %>
</td>
<td class = "TasksBody">
<%=CONST_N_SIZEDATA_TEXT%>
</td>
</tr>
<tr>
<td nowrap class = "TasksBody">
<%=L_FOLDERCONTAINS_TEXT%>
</td>
<td nowrap class = "TasksBody">
<%=L_CONTAINSDATA_TEXT%>
</td>
</tr>
<tr>
<td class = "TasksBody">
</td>
</tr>
<tr>
<td nowrap class = "TasksBody">
<%=L_FOLDERCEATED_TEXT%>
</td>
<td class = "TasksBody">
</td>
</tr>
<tr>
<td class = "TasksBody">
</td>
</tr>
<tr>
<td nowrap class = "TasksBody">
<%=L_FOLDERATTRIBUTE_TEXT%>
</td>
</tr>
<tr>
<td class = "TasksBody">
<input type="checkbox" class="FormCheckBox" name=chkReadOnly <%=F_strReadOnly%>><%=L_READONLY_TEXT%>
</td>
<td class = "TasksBody">
<input type="checkbox" class="FormCheckBox" name=chkHidden <%=F_strHidden%> ><%=L_HIDDEN_TEXT%>
</td>
</tr>
<tr>
<td class = "TasksBody">
<input type="checkbox" class="FormCheckBox" name="chkArchive" <%=F_strArchive%>><%=L_ARCHIVING_TEXT%>
</td>
</tr>
</table>
<input name="hdnParentFolder" type=Hidden value="<%=Server.HTMLEncode(F_strParentFolderName)%>">
<%
Else
%> <input name="chkReadOnly" type=Hidden value="<%=Server.HTMLEncode(F_strReadOnly)%>">
<input name="chkHidden" type=Hidden value="<%=Server.HTMLEncode(F_strHidden)%>">
<input name="chkArchive" type=Hidden value="<%=Server.HTMLEncode(F_strArchive)%>">
<input name="txtNewFolderName" type="hidden" value="<%=Server.HTMLEncode(F_strFolderName)%>">
<input name="hdnParentFolder" type=Hidden value="<%=Server.HTMLEncode(F_strParentFolderName)%>">
<%
End If
End Function
'-------------------------------------------------------------------------
'Function name: ServeTabCompress
'Description: Serves in selecting the tab2
'Input Variables: PageIn,bIsVisible
'Output Variables: PageIn
'Returns: None
'Global Variables: F_(*),L_(*),gc_ERR_SUCCESS,F_strFolderName
'--------------------------------------------------------------------------
Function ServeTabCompress(ByRef PageIn, ByVal bIsVisible)
If ( bIsVisible ) Then
'ServeCommonJavaScriptCompress is called for Compress tab initialising,validating and set data
Call ServeCommonJavaScriptCompress()
%>
<table width=100% border="0">
<tr>
<td class = "TasksBody">
<%=L_FOLDER_TEXT %> &nbsp;
<% if instr(F_strParentFolderName,"\")=len(F_strParentFolderName) then
Response.write Server.HTMLEncode(F_strParentFolderName) & Server.HTMLEncode(F_strFolderName)
else
Response.write Server.HTMLEncode(F_strParentFolderName) & chr(92) & Server.HTMLEncode(F_strFolderName)
end if%>
</td>
</tr>
<tr>
<td class = "TasksBody">
<input type="checkbox" class="FormCheckBox" name=chkCompress value="<%=Server.HTMLEncode(F_strCompressed)%>" <%=F_strCompressed%>>&nbsp;<%=L_COMPRESSCONTENTS_TEXT%>
</td>
</tr>
<tr>
<td class = "TasksBody">
<input type="radio" class = "FormRadioButton" name="radFolders" value= "<%=CONST_ARR_APPLYFOLDER%>" Checked>&nbsp;<%=L_APPLYCHANGES_TEXT%>
</td>
</tr>
<tr>
<td class = "TasksBody">
<input type="radio" class = "FormRadioButton" name="radFolders" value= "<%=CONST_ARR_APPLYALLFOLDERS%>" <%=F_strChangeOption%>>&nbsp;<%=L_APPLYCHANGES_EX_TEXT%>
</td>
</tr>
</table>
<%
Else
%>
<input name="chkCompress" type=Hidden value="<%=Server.HTMLEncode(F_strCompressed)%>">
<input name="radFolders" type=Hidden value="<%=Server.HTMLEncode(F_strFolderCompress)%>">
<%
End If
End Function
'-------------------------------------------------------------------------
'Function name: ServeCommonJavaScriptGeneral
'Description: Common javascript functions that are required by the General tab
'Input Variables: None
'Output Variables: None
'Returns: None
'Global Variables: None
'--------------------------------------------------------------------------
Function ServeCommonJavaScriptGeneral()
%>
<script language="JavaScript" SRC="<%=m_VirtualRoot%>inc_global.js">
</script>
<script language="JavaScript">
//Init funtion for General tab
function Init()
{
//Set the focus on folder field
document.frmTask.txtNewFolderName.focus();
// for clearing error message
document.frmTask.onkeypress = ClearErr
return true;
}
//Validate function for General tab
function ValidatePage()
{
var strFoldername
strFoldername = document.frmTask.txtNewFolderName.value;
//Set the readonly checkbox value depending on the status of checkbox
if(document.frmTask.chkReadOnly.checked)
{
document.frmTask.chkReadOnly.value="<%=CONST_CHECKED_TEXT%>";
}
else
{
document.frmTask.chkReadOnly.value="<%=CONST_UNCHECKED_TEXT%>";
}
//Set the hidden checkbox value depending on the status of checkbox
if(document.frmTask.chkHidden.checked)
{
document.frmTask.chkHidden.value="<%=CONST_CHECKED_TEXT%>";
}
else
{
document.frmTask.chkHidden.value="<%=CONST_UNCHECKED_TEXT%>";
}
//Set the archive checkbox value depending on the status of checkbox
if(document.frmTask.chkArchive.checked)
{
document.frmTask.chkArchive.value="<%=CONST_CHECKED_TEXT%>";
}
else
{
document.frmTask.chkArchive.value="<%=CONST_UNCHECKED_TEXT%>";
}
//Blank Foldername Validation
if (Trim(strFoldername) == "")
{
DisplayErr("<%=Server.HTMLEncode(SA_EscapeQuotes(L_ENTERFOLDERNAME_ERRORMESSAGE))%>");
document.frmTask.onkeypress = ClearErr
return false;
}
//Checks for invalid characters in the folder name
if( checkKeyforValidCharacters(strFoldername))
return true;
else
return false;
}
// SetData Function for general tab
function SetData()
{
}
//To check for Invalid Characters
function checkKeyforValidCharacters(strFoldername)
{
var nLength = strFoldername.length;
for(var i=0; i<nLength;i++)
{
charAtPos = strFoldername.charCodeAt(i);
if(charAtPos == 47 || charAtPos == 92 || charAtPos ==58 || charAtPos == 42 || charAtPos == 63 || charAtPos == 34 || charAtPos == 60 || charAtPos == 62 || charAtPos == 124 || charAtPos == 91 || charAtPos == 93 || charAtPos == 59 || charAtPos == 43 || charAtPos == 61 || charAtPos == 44 )
{
DisplayErr("<%=Server.HTMLEncode(SA_EscapeQuotes(L_INVALIDCHARACTERINFOLDERNAME_ERRORMESSAGE))%>");
document.frmTask.onkeypress = ClearErr;
return false;
}
}
return true;
}
</script>
<%
End Function
'-------------------------------------------------------------------------
'Function name: ServeCommonJavaScriptCompress
'Description: Common javascript functions that are required by the Compress tab
'Input Variables: None
'Output Variables: None
'Returns: None
'Global Variables: None
'--------------------------------------------------------------------------
Function ServeCommonJavaScriptCompress()
%>
<script language="JavaScript" src="<%=m_VirtualRoot%>inc_global.js">
</script>
<script language="JavaScript">
//Init function for Compress tab
function Init()
{
return true;
}
//Validate function for Compress tab
function ValidatePage()
{
//Set the Compress checkbox value depending on the status of checkbox
if(document.frmTask.chkCompress.checked)
{
document.frmTask.chkCompress.value="<%=CONST_CHECKED_TEXT%>";
}
else
{
document.frmTask.chkCompress.value="<%=CONST_UNCHECKED_TEXT%>";
}
return true;
}
// SetData Function for Compress tab
function SetData()
{
}
</script>
<%
End Function
'-------------------------------------------------------------------------
'Function name: CreateNewFolder
'Description: Creating the new folder and assigning the properties
'Input Variables: None
'Output Variables: None
'Returns: (True / Flase )
'Global Variables: F_strParentFolderName,F_strFolderName,L_(*)
'--------------------------------------------------------------------------
Function CreateNewFolder
On Error Resume Next
Err.Clear
Dim strFolderPath 'Folder path
Dim objFolder 'File system object
Dim strFolderExists 'To get the folder
Dim objConnection 'Object to get WMI connection
Dim objFolderProp 'To get the folders properties
Dim objDirInstances 'Collection to get Instances of Win32_Directory class
Dim objDirInstance 'Object to get Instance of Win32_Directory class
Dim strQuery
Const CONST_N_DEVICENOTREADY_ERRNO = 71 'Error number incase derive is not ready
Const CONST_N_FOLDER_READ_ATTRIBUTE = 1 'Constant for folder read attribute
Const CONST_N_FOLDER_HIDDEN_ATTRIBUTE = 2 'Constant for folder hidden attribute
Const CONST_N_FOLDER_ARCHIVE_ATTRIBUTE = 32 'Constant for folder archive attribute
Call SA_TraceOut(SOURCE_FILE, "CreateNewFolder")
CreateNewFolder= FALSE
'Folder path
If right(F_strParentFolderName,1) = chr(92) then
'If parent folder path is already having "\" donot append the "\"
strFolderPath= F_strParentFolderName & F_strFolderName
Else
'If parent folder path donot have "\" append the "\"
strFolderPath= F_strParentFolderName & chr(92) & F_strFolderName
End If
'Create File System Object
Set objFolder = createobject("scripting.FileSystemObject")
If Err.number <> 0 Then
Call SA_SetErrMsg (L_FILESYSTEMOBJECTNOTCREATED_ERRORMESSAGE & "(" & Hex(Err.Number) & ")" )
Exit Function
End If
'Checking if the folder already exists
If Not objFolder.FolderExists(strFolderPath) Then
CreateNewFolder = TRUE
'Creating the new folder
objFolder.CreateFolder(strFolderPath)
If Err.Number <> 0 Then
If Err.number= CONST_N_DEVICENOTREADY_ERRNO Then
Call SA_SetErrMsg (L_DEVICEISNOTREADY_ERRORMESSAGE & "(" & Err.Number & ")" )
CreateNewFolder = FALSE
Exit Function
Else
Call SA_SetErrMsg (L_DIRECTORYNOTCREATED_ERRORMESSAGE & "(" & Err.Number & ")" )
CreateNewFolder = FALSE
Exit Function
End If
End If
'Get the specified folder
Set objFolderProp = objFolder.GetFolder(strFolderPath)
'Set the Read Only attributes
If trim(F_strReadOnly)= trim(CONST_CHECKED_TEXT) Then
objFolderProp.attributes =objFolderProp.attributes + CONST_N_FOLDER_READ_ATTRIBUTE
End If
'Set the Hidden attribute
If trim(F_strHidden)= trim(CONST_CHECKED_TEXT) Then
objFolderProp.attributes =objFolderProp.attributes + CONST_N_FOLDER_HIDDEN_ATTRIBUTE
End If
'Set the Archives attribute
If trim(F_strArchive)= trim(CONST_CHECKED_TEXT) Then
objFolderProp.attributes = objFolderProp.attributes + CONST_N_FOLDER_ARCHIVE_ATTRIBUTE
End If
'Create connection to WMI
Set objConnection = GetWMIConnection(CONST_WMI_WIN32_NAMESPACE)
'Create instance of Win32_Directory
strQuery = "Select * from Win32_Directory where Name = " & chr(34) & replace(strFolderPath, "\", "\\") & chr(34)
Set objDirInstances = objConnection.ExecQuery(strQuery)
'Failed to connect to WMI
If Err.Number <> 0 Then
Call SA_ServeFailurepage (L_WMICONNECTIONFAILED_ERRORMESSAGE & " " & Hex(Err.Number))
CreateNewFolder = FALSE
Exit Function
End if
For each objDirInstance in objDirInstances
'Set the compress property of folder
If UCase(F_strCompressed) = trim(Ucase(CONST_CHECKED_TEXT)) then
if F_strFolderCompress = CONST_ARR_APPLYFOLDER then
objDirInstance.UnCompressEX null,null,True
objDirInstance.CompressEX null,null,False
elseif F_strFolderCompress = CONST_ARR_APPLYALLFOLDERS then
objDirInstance.UnCompressEX null,null,False
objDirInstance.CompressEX null,null,True
end if
End if
Exit for
Next
Set objDirInstance= Nothing
Set objConnection = Nothing
Else
Call SA_SetErrMsg (L_DIRECTORYALREADYEXISTS_ERRORMESSAGE & "(" & Hex(Err.Number) & ")" )
Exit Function
End If
'Release the objects
Set objFolderProp = Nothing
Set objFolder = Nothing
End Function
%>