PowerShell: ToolTips entfernen (Pages/Reports downgraden)

12. Januar 2018 11:50

ToolTips, die in aktuellen NAV-Versionen überall in Pages und Requestpages von Reports zu finden sind (wurden im aktuellen CU 01 für NAV 2018 auch an vielen Stellen wieder im Inhalt überarbeitet, nicht unbedingt zum besseren :roll: ) erzeugen beim Downgraden in ältere Versionen viele Differenzen, die den Blick auf andere Codeänderungen sehr erschweren.

Mit diesem Skript kann man diese komplett entfernen, damit man sich beim Mergen auf das wesentliche konzentieren kann :wink: .
ToolTipsRemoval.png


Für die Umarbeitung zur Stapelverarbeitung die Variable $inputfile durch $args austauschen und den Code für das Fenster entfernen und die Funktion zusammen mit dem Dateipfad aufrufen.

Code:
function RemoveToolTipsDlg
{
    $ErrorActionPreference = "Stop"
    $PSDefaultParameterValues['*:ErrorAction']='Stop'
    Function Get-FileName($initialDirectory)
    {
        [System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") | Out-Null
   
        $OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
        $OpenFileDialog.initialDirectory = $initialDirectory
        $OpenFileDialog.filter = "NAV Object Files (*.txt)|*.txt"
        $OpenFileDialog.ShowDialog() | Out-Null
        $OpenFileDialog.filename
    }
       
       
    $inputfile = Get-FileName "C:\TEMP"  # This is the default path in OpenFile window. Alternative: $env:TEMP
    if ($inputfile -eq "") {throw 'Please select a file'}
     
    $ToggleExportOn = $true
    $ToggleExportOff = $false
    $OldValueToggleExportOff = $false
    $inputfile = resolve-path $inputfile
    $WorkingFolder = Split-Path -Parent $inputfile
    $convertedFileName = [System.IO.Path]::GetFileNameWithoutExtension($inputfile) +"_NTT" + [System.IO.Path]::GetExtension($inputfile)
    $convertedfile = New-Item -path "$WorkingFolder\$convertedFileName" -type file -force
    IF (Test-Path $ConvertedFile) {Remove-Item $ConvertedFile}
    IF (Test-Path "$inputfile.tmp") {Remove-Item "$inputfile.tmp"}

    $sr = new-object System.IO.StreamReader($inputfile,[system.text.encoding]::GetEncoding(850))
    $sw = new-object System.IO.Streamwriter("$inputfile.tmp",$false,[system.text.encoding]::GetEncoding(850))

     
    while (-not $sr.EndOfStream)
    {

        $Currline = $Sr.ReadLine()
        $TrimmedCurrline = $Currline.TrimStart()
        if ($TrimmedCurrline.StartsWith('ToolTipML=['))
        {
            $ToolTipSection = $true
            $EndofToolTipSection = $false
            $OldValueToolTipSection = $true
        }
        if ($OldValueToolTipSection)
        {if ($Currline.endswith('];'))
            {
                $EndofToolTipSection = $true
                $OldValueToolTipSection = $false
            }
        }
        if ((-not $ToolTipSection) -and (-not $TrimmedCurrline.StartsWith('ToolTipML=')))
          {$sw.writeline($Currline)}
        if ($EndofToolTipSection)
        {           
            $OldValueToolTipSection = $False
            $ToolTipSection = $False
        }
       
    }
    $sr.Close()
    $sr.Dispose()
    $sw.close()
    $sw.Dispose()
    Rename-Item -path "$inputfile.tmp" -NewName $convertedFileName -force -verbose
         
}



remove tooltips tool tips
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: PowerShell: Tooltips entfernen (Pages/Reports downgraden

12. Januar 2018 11:58

Tooltips, die in aktuellen NAV-Versionen überall in Pages und Requestpages von Reports zu finden sind (wurden im aktuellen CU 01 für NAV 2018 auch an vielen Stellen wieder im Inhalt überarbeitet, nicht unbedingt zum besseren :roll: ) erzeugen beim Downgraden in ältere Version viele Differenzen, die den Blick auf andere Codeänderungen sehr erschweren.


Das hast du aber schön formuliert. :roll: :mrgreen: :mrgreen:

Danke Fiddi

Re: PowerShell: Tooltips entfernen (Pages/Reports downgraden

12. Januar 2018 12:52

Noch eine kleine Erweiterung oben eingebaut, falls auch die W1 versorgt werden muss:
Ein Kollege machte mich eben darauf aufmerksam, dass in der W1 in letzter Zeit auch zunehmend einzelne ToolTipML-Zeilen ohne Inhalte kommen, die werden jetzt auch entfernt.
Alt:
Code:
if (-not $ToolTipSection)

Neu:
Code:
if ((-not $ToolTipSection) -and (-not $TrimmedCurrline.StartsWith('ToolTipML=')))

ToolTipW1.png
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.