refactor: Replace Out-GridView with Form and ListBox in Get-FolderBrowser
This commit is contained in:
parent
37ec5d328e
commit
c30d7ccdc5
@ -195,7 +195,7 @@ function Get-FolderBrowser {
|
|||||||
if ($ParentFolderUrl) {
|
if ($ParentFolderUrl) {
|
||||||
# Get the folder ID first
|
# Get the folder ID first
|
||||||
# Construct the correct URI for the folder
|
# Construct the correct URI for the folder
|
||||||
# Remove the /sites/tax/Shared Documents part from the folder path
|
# Remove the /sites/tax/Shared Documents/ part from the folder path
|
||||||
$relativePath = $ParentFolderUrl.Replace("/sites/tax/Shared Documents/", "").TrimStart("/")
|
$relativePath = $ParentFolderUrl.Replace("/sites/tax/Shared Documents/", "").TrimStart("/")
|
||||||
|
|
||||||
# URL encode the relative path
|
# URL encode the relative path
|
||||||
@ -236,8 +236,49 @@ function Get-FolderBrowser {
|
|||||||
}) + $folderObjects
|
}) + $folderObjects
|
||||||
}
|
}
|
||||||
|
|
||||||
# Show the Out-GridView
|
# Create a form and listbox for folder selection
|
||||||
$selected = $folderObjects | Out-GridView -Title "Select Folder" -PassThru
|
$form = New-Object System.Windows.Forms.Form
|
||||||
|
$form.Text = "Select Folder"
|
||||||
|
$form.Size = New-Object System.Drawing.Size(400, 400)
|
||||||
|
$listBox = New-Object System.Windows.Forms.ListBox
|
||||||
|
$listBox.Size = New-Object System.Drawing.Size(360, 320)
|
||||||
|
$listBox.Location = New-Object System.Drawing.Point(10, 10)
|
||||||
|
$okButton = New-Object System.Windows.Forms.Button
|
||||||
|
$okButton.Location = New-Object System.Drawing.Point(150, 340)
|
||||||
|
$okButton.Size = New-Object System.Drawing.Size(75, 23)
|
||||||
|
$okButton.Text = "OK"
|
||||||
|
$cancelButton = New-Object System.Windows.Forms.Button
|
||||||
|
$cancelButton.Location = New-Object System.Drawing.Point(230, 340)
|
||||||
|
$cancelButton.Size = New-Object System.Drawing.Size(75, 23)
|
||||||
|
$cancelButton.Text = "Cancel"
|
||||||
|
$form.Controls.Add($listBox) | Out-Null
|
||||||
|
$form.Controls.Add($okButton) | Out-Null
|
||||||
|
$form.Controls.Add($cancelButton) | Out-Null
|
||||||
|
$form.FormBorderStyle = 'FixedDialog'
|
||||||
|
$form.StartPosition = 'CenterScreen'
|
||||||
|
$form.Add_Shown({$Form.Activate()})
|
||||||
|
# Populate listbox
|
||||||
|
foreach ($folder in $folderObjects) {
|
||||||
|
$listBox.Items.Add($folder.Name) | Out-Null
|
||||||
|
}
|
||||||
|
|
||||||
|
# Handle OK button click
|
||||||
|
$okButton.Add_Click({
|
||||||
|
$form.Tag = $listBox.SelectedItem
|
||||||
|
$form.Close()
|
||||||
|
})
|
||||||
|
|
||||||
|
# Handle Cancel button click
|
||||||
|
$cancelButton.Add_Click({
|
||||||
|
$form.Tag = $null
|
||||||
|
$form.Close()
|
||||||
|
})
|
||||||
|
|
||||||
|
# Show the Form as a Dialog
|
||||||
|
[void]$form.ShowDialog()
|
||||||
|
|
||||||
|
# Get the selected folder
|
||||||
|
$selected = $folderObjects | Where-Object {$_.Name -eq $form.Tag}
|
||||||
|
|
||||||
# If a folder is selected, browse into it
|
# If a folder is selected, browse into it
|
||||||
if ($selected -and $selected.IsFolder -eq $true -and $selected.Name -ne "..") {
|
if ($selected -and $selected.IsFolder -eq $true -and $selected.Name -ne "..") {
|
||||||
@ -246,9 +287,12 @@ function Get-FolderBrowser {
|
|||||||
elseif ($selected -and $selected.Name -eq "..") {
|
elseif ($selected -and $selected.Name -eq "..") {
|
||||||
return Get-FolderBrowser -ParentFolderUrl $selected.ServerRelativeUrl
|
return Get-FolderBrowser -ParentFolderUrl $selected.ServerRelativeUrl
|
||||||
}
|
}
|
||||||
else {
|
elseif ($selected) {
|
||||||
return $selected
|
return $selected
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
return $null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
$script:txtStatus.Text += "Folder Error: $($_.Exception.Message)`n"
|
$script:txtStatus.Text += "Folder Error: $($_.Exception.Message)`n"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user