Adapt welcome wallpaper to SGU gender
This commit is contained in:
@@ -8,6 +8,8 @@ param(
|
||||
[string]$ComputerName = $env:COMPUTERNAME,
|
||||
[string]$Location,
|
||||
[string]$OrganizationalUnit,
|
||||
[ValidateSet('Male', 'Female')]
|
||||
[string]$Gender,
|
||||
[ValidateRange(640, 16384)]
|
||||
[int]$CanvasWidth,
|
||||
[ValidateRange(480, 16384)]
|
||||
@@ -67,6 +69,22 @@ function Get-ImmediateOrganizationalUnit {
|
||||
return $null
|
||||
}
|
||||
|
||||
function Get-SguGenderFromInfo {
|
||||
param([string]$Info)
|
||||
|
||||
if (-not $Info) {
|
||||
return $null
|
||||
}
|
||||
|
||||
foreach ($line in $Info -split '\r?\n') {
|
||||
if ($line -match '^\s*SGU-Gender:\s*(Male|Female)\s*$') {
|
||||
return [Globalization.CultureInfo]::InvariantCulture.TextInfo.ToTitleCase(
|
||||
$Matches[1].ToLowerInvariant())
|
||||
}
|
||||
}
|
||||
return $null
|
||||
}
|
||||
|
||||
function Get-DirectoryWelcomeMetadata {
|
||||
param(
|
||||
[Parameter(Mandatory)][string]$UserName,
|
||||
@@ -93,6 +111,7 @@ function Get-DirectoryWelcomeMetadata {
|
||||
$userSearcher.Filter = '(&(objectCategory=person)(objectClass=user)(sAMAccountName={0}))' -f `
|
||||
(ConvertTo-LdapFilterValue -Value $UserName)
|
||||
[void]$userSearcher.PropertiesToLoad.Add('displayName')
|
||||
[void]$userSearcher.PropertiesToLoad.Add('info')
|
||||
$userResult = $userSearcher.FindOne()
|
||||
$directoryDisplayName = if ($userResult -and $userResult.Properties['displayname'].Count) {
|
||||
[string]$userResult.Properties['displayname'][0]
|
||||
@@ -100,6 +119,12 @@ function Get-DirectoryWelcomeMetadata {
|
||||
else {
|
||||
$null
|
||||
}
|
||||
$directoryGender = if ($userResult -and $userResult.Properties['info'].Count) {
|
||||
Get-SguGenderFromInfo -Info ([string]$userResult.Properties['info'][0])
|
||||
}
|
||||
else {
|
||||
$null
|
||||
}
|
||||
}
|
||||
finally {
|
||||
$userSearcher.Dispose()
|
||||
@@ -136,6 +161,7 @@ function Get-DirectoryWelcomeMetadata {
|
||||
|
||||
[pscustomobject]@{
|
||||
DisplayName = $directoryDisplayName
|
||||
Gender = $directoryGender
|
||||
Location = $directoryLocation
|
||||
OrganizationalUnit = Get-ImmediateOrganizationalUnit -DistinguishedName $computerDn
|
||||
}
|
||||
@@ -156,11 +182,20 @@ function Get-SpanishArticle {
|
||||
function Get-WelcomeLocationText {
|
||||
param(
|
||||
[string]$Room,
|
||||
[string]$OuName
|
||||
[string]$OuName,
|
||||
[string]$Gender
|
||||
)
|
||||
|
||||
$located = 'Est{0}s ubicado en' -f [char]0x00E1
|
||||
$engineeringLab = 'Bienvenido al Laboratorio de C{0}mputo de Ingenier{1}a.' -f [char]0x00F3,[char]0x00ED
|
||||
$located = switch ($Gender) {
|
||||
'Male' { 'Est{0}s ubicado en' -f [char]0x00E1 }
|
||||
'Female' { 'Est{0}s ubicada en' -f [char]0x00E1 }
|
||||
default { 'Ubicaci{0}n:' -f [char]0x00F3 }
|
||||
}
|
||||
$engineeringLab = switch ($Gender) {
|
||||
'Male' { 'Bienvenido al Laboratorio de C{0}mputo de Ingenier{1}a.' -f [char]0x00F3,[char]0x00ED }
|
||||
'Female' { 'Bienvenida al Laboratorio de C{0}mputo de Ingenier{1}a.' -f [char]0x00F3,[char]0x00ED }
|
||||
default { 'Acceso al Laboratorio de C{0}mputo de Ingenier{1}a.' -f [char]0x00F3,[char]0x00ED }
|
||||
}
|
||||
$Room = if ($Room) { $Room.Trim() } else { $null }
|
||||
$OuName = if ($OuName) { $OuName.Trim() } else { $null }
|
||||
|
||||
@@ -184,6 +219,16 @@ function Get-WelcomeLocationText {
|
||||
return $engineeringLab
|
||||
}
|
||||
|
||||
function Get-WelcomeHeading {
|
||||
param([string]$Gender)
|
||||
|
||||
switch ($Gender) {
|
||||
'Male' { return 'Bienvenido,' }
|
||||
'Female' { return 'Bienvenida,' }
|
||||
default { return 'Te damos la bienvenida,' }
|
||||
}
|
||||
}
|
||||
|
||||
function Get-AvailableFontFamily {
|
||||
param(
|
||||
[Parameter(Mandatory)][string[]]$Candidates,
|
||||
@@ -270,10 +315,15 @@ if (-not $DisplayName) {
|
||||
if (-not $PSBoundParameters.ContainsKey('Location') -and $metadata) {
|
||||
$Location = $metadata.Location
|
||||
}
|
||||
$genderWasProvided = $PSBoundParameters.ContainsKey('Gender')
|
||||
if (-not $genderWasProvided -and $metadata) {
|
||||
$Gender = $metadata.Gender
|
||||
}
|
||||
$welcomeHeading = Get-WelcomeHeading -Gender $Gender
|
||||
if (-not $PSBoundParameters.ContainsKey('OrganizationalUnit') -and $metadata) {
|
||||
$OrganizationalUnit = $metadata.OrganizationalUnit
|
||||
}
|
||||
$locationText = Get-WelcomeLocationText -Room $Location -OuName $OrganizationalUnit
|
||||
$locationText = Get-WelcomeLocationText -Room $Location -OuName $OrganizationalUnit -Gender $Gender
|
||||
|
||||
if (-not $CanvasWidth -or -not $CanvasHeight) {
|
||||
try {
|
||||
@@ -366,7 +416,7 @@ try {
|
||||
$format.Trimming = [Drawing.StringTrimming]::EllipsisWord
|
||||
try {
|
||||
$graphics.FillRectangle($panelBrush, $panelX, $panelY, $panelWidth, $panelHeight)
|
||||
Draw-CenteredText -Graphics $graphics -Text 'Bienvenido,' -Font $welcomeFont `
|
||||
Draw-CenteredText -Graphics $graphics -Text $welcomeHeading -Font $welcomeFont `
|
||||
-Brush $accentBrush -Bounds ([Drawing.RectangleF]::new($panelX, $panelY + 24*$scale, $panelWidth, 50*$scale)) -Format $format
|
||||
Draw-CenteredText -Graphics $graphics -Text $DisplayName -Font $nameFont `
|
||||
-Brush $whiteBrush -Bounds ([Drawing.RectangleF]::new($panelX + 30*$scale, $panelY + 64*$scale, $panelWidth - 60*$scale, 105*$scale)) -Format $format
|
||||
@@ -433,12 +483,15 @@ namespace Sgu {
|
||||
}
|
||||
}
|
||||
|
||||
Write-WelcomeLog -Message ("OK computer={0}; location={1}; ou={2}; output={3}" -f $ComputerName,[bool]$Location,[bool]$OrganizationalUnit,$OutputPath)
|
||||
$genderLogValue = if ($Gender) { $Gender } else { 'Neutral' }
|
||||
Write-WelcomeLog -Message ("OK computer={0}; gender={1}; location={2}; ou={3}; output={4}" -f $ComputerName,$genderLogValue,[bool]$Location,[bool]$OrganizationalUnit,$OutputPath)
|
||||
[pscustomobject]@{
|
||||
DisplayName = $DisplayName
|
||||
ComputerName = $ComputerName
|
||||
Location = $Location
|
||||
OrganizationalUnit = $OrganizationalUnit
|
||||
Gender = $Gender
|
||||
WelcomeHeading = $welcomeHeading
|
||||
LocationText = $locationText
|
||||
OutputPath = $OutputPath
|
||||
Applied = -not $SkipApply
|
||||
|
||||
Reference in New Issue
Block a user