diff --git a/Winget-AutoUpdate/functions/Start-NotifTask.ps1 b/Winget-AutoUpdate/functions/Start-NotifTask.ps1 index 22c74df..eb6b476 100644 --- a/Winget-AutoUpdate/functions/Start-NotifTask.ps1 +++ b/Winget-AutoUpdate/functions/Start-NotifTask.ps1 @@ -1,27 +1,135 @@ #Function to send notifications to user -function Start-NotifTask ($Title, $Message, $MessageType, $Balise, $OnClickAction) { +function Start-NotifTask { + + param( + [String]$Title = "Winget-AutoUpdate", + [String]$Message, + [String]$MessageType, + [String]$Balise = "WAU", + [String]$OnClickAction, + [String]$Body, + [String]$Button1Text, + [String]$Button1Action, + [Switch]$ButtonDismiss = $false + ) if (($WAUConfig.WAU_NotificationLevel -eq "Full") -or ($WAUConfig.WAU_NotificationLevel -eq "SuccessOnly" -and $MessageType -eq "Success") -or ($UserRun)) { - #Prepare OnClickAction (if set) - if ($OnClickAction) { - $ToastOnClickAction = "activationType='protocol' launch='$OnClickAction'" + # XML Toast template creation + [xml]$ToastTemplate = New-Object system.Xml.XmlDocument + $ToastTemplate.LoadXml("") + + # Creation of visual node + $XMLvisual = $ToastTemplate.CreateElement("visual") + + # Creation of a binding node + $XMLbinding = $ToastTemplate.CreateElement("binding") + $XMLvisual.AppendChild($XMLbinding) | Out-Null + $XMLbindingAtt1 = ($ToastTemplate.CreateAttribute("template")) + $XMLbindingAtt1.Value = "ToastGeneric" + $XMLbinding.Attributes.Append($XMLbindingAtt1) | Out-Null + + $XMLimagepath = "$WorkingDir\icons\$MessageType.png" + if (Test-Path $XMLimagepath){ + # Creation of a image node + $XMLimage = $ToastTemplate.CreateElement("image") + $XMLbinding.AppendChild($XMLimage) | Out-Null + $XMLimageAtt1 = $ToastTemplate.CreateAttribute("placement") + $XMLimageAtt1.Value = "appLogoOverride" + $XMLimage.Attributes.Append($XMLimageAtt1) | Out-Null + $XMLimageAtt2 = $ToastTemplate.CreateAttribute("src") + $XMLimageAtt2.Value = "$WorkingDir\icons\$MessageType.png" + $XMLimage.Attributes.Append($XMLimageAtt2) | Out-Null } - #Add XML variables - [xml]$ToastTemplate = @" - - - - $Title - $Message - - - - $Balise - -"@ + if ($Title){ + # Creation of a text node + $XMLtitle = $ToastTemplate.CreateElement("text") + $XMLtitleText = $ToastTemplate.CreateTextNode($Title) + $XMLtitle.AppendChild($XMLtitleText) | Out-Null + $XMLbinding.AppendChild($XMLtitle) | Out-Null + } + + if ($Message){ + # Creation of a text node + $XMLtext = $ToastTemplate.CreateElement("text") + $XMLtextText = $ToastTemplate.CreateTextNode($Message) + $XMLtext.AppendChild($XMLtextText) | Out-Null + $XMLbinding.AppendChild($XMLtext) | Out-Null + } + + if ($Body){ + # Creation of a group node + $XMLgroup = $ToastTemplate.CreateElement("group") + $XMLbinding.AppendChild($XMLgroup) | Out-Null + + # Creation of a subgroup node + $XMLsubgroup = $ToastTemplate.CreateElement("subgroup") + $XMLgroup.AppendChild($XMLsubgroup) | Out-Null + + # Creation of a text node + $XMLcontent = $ToastTemplate.CreateElement("text") + $XMLcontentText = $ToastTemplate.CreateTextNode($Body) + $XMLcontent.AppendChild($XMLcontentText) | Out-Null + $XMLsubgroup.AppendChild($XMLcontent) | Out-Null + $XMLcontentAtt1 = $ToastTemplate.CreateAttribute("hint-style") + $XMLcontentAtt1.Value = "body" + $XMLcontent.Attributes.Append($XMLcontentAtt1) | Out-Null + $XMLcontentAtt2 = $ToastTemplate.CreateAttribute("hint-wrap") + $XMLcontentAtt2.Value = "true" + $XMLcontent.Attributes.Append($XMLcontentAtt2) | Out-Null + } + + # Creation of actions node + $XMLactions = $ToastTemplate.CreateElement("actions") + + if ($Button1Text) { + # Creation of action node + $XMLaction = $ToastTemplate.CreateElement("action") + $XMLactions.AppendChild($XMLaction) | Out-Null + $XMLactionAtt1 = $ToastTemplate.CreateAttribute("content") + $XMLactionAtt1.Value = $Button1Text + $XMLaction.Attributes.Append($XMLactionAtt1) | Out-Null + if ($Button1Action){ + $XMLactionAtt2 = $ToastTemplate.CreateAttribute("arguments") + $XMLactionAtt2.Value = $Button1Action + $XMLaction.Attributes.Append($XMLactionAtt2) | Out-Null + $XMLactionAtt3 = $ToastTemplate.CreateAttribute("activationType") + $XMLactionAtt3.Value = "Protocol" + $XMLaction.Attributes.Append($XMLactionAtt3) | Out-Null + } + } + + if ($ButtonDismiss) { + # Creation of action node + $XMLaction = $ToastTemplate.CreateElement("action") + $XMLactions.AppendChild($XMLaction) | Out-Null + $XMLactionAtt1 = $ToastTemplate.CreateAttribute("content") + $XMLactionAtt1.Value = "" + $XMLaction.Attributes.Append($XMLactionAtt1) | Out-Null + $XMLactionAtt2 = $ToastTemplate.CreateAttribute("arguments") + $XMLactionAtt2.Value = "dismiss" + $XMLaction.Attributes.Append($XMLactionAtt2) | Out-Null + $XMLactionAtt3 = $ToastTemplate.CreateAttribute("activationType") + $XMLactionAtt3.Value = "system" + $XMLaction.Attributes.Append($XMLactionAtt3) | Out-Null + } + + # Creation of tag node + $XMLtag = $ToastTemplate.CreateElement("tag") + $XMLtagText = $ToastTemplate.CreateTextNode($Balise) + $XMLtag.AppendChild($XMLtagText) | Out-Null + + # Add the visual node to the xml + $ToastTemplate.LastChild.AppendChild($XMLvisual) | Out-Null + $ToastTemplate.LastChild.AppendChild($XMLactions) | Out-Null + $ToastTemplate.LastChild.AppendChild($XMLtag) | Out-Null + + if ($OnClickAction){ + $ToastTemplate.toast.SetAttribute("activationType", "Protocol") | Out-Null + $ToastTemplate.toast.SetAttribute("launch", $OnClickAction) | Out-Null + } #if not "Interactive" user, run as system if ($IsSystem) {