Hier wird nun der Versions-Test in ein Script eingebaut, welches XPress-Dokumente öffnen soll. Dabei wird die Anzeige des Dialoges des Scripts im Teil 1 durch das Retournieren eines Wertes ersetzt. Dieses Script benutzt ebenfalls den 'choose file'-Befehl, um ein Dokument auszuwählen. In der Praxis würde man eher 'choose folder' benutzen (einen Ordner wählen) oder – anwenderfreundlicher – das Script in ein Droplet verwandeln.
In der ersten Zeile wird der Variablen 'versClue' die Zahl '4' (wie QuarkXPress 4) zugewiesen. Dann wird der Anwender aufgefordert, ein Dokument auszuwählen. Der Pfad zur Datei wird in der Variable 'filePath' gespeichert. In der dritten Zeile wird der Handler 'getVers' aufgerufen. Das Resultat des Tests wird als der Version entsprechende Ganzzahl zurückgegeben und in der Variablen 'docVers' gespeichert.
In der vierten Zeile wird der Wert von 'docVers' mit jenem von 'versClue' verglichen. Ist er "kleiner als oder gleich wie" (= 'less than or equal to'), dann kann das Dokument geöffnet werden. Sonst meldet ein Dialog, dass das Dokument nicht geöffnet werden kann. Dessen Version wird auch gezeigt. Mit 'set docVers to result' wird der vom Handler zurückgegebene Wert abgefangen und in den Dialog eingebaut.
---
set versClue to 4
set filePath to (choose file with prompt "Ein QuarkXPress-Dokument wählen." of type {"XDOC", "XPRT"}) as string
set docVers to getVers(filePath)
if docVers is less than or equal to versClue then
tell application "QuarkXPress 4.11"
activate
open filePath use doc prefs yes remap fonts no do auto picture import no
tell document 1
--weitere Aktionen mit dem offenen Dokument
end tell
end tell
else
set docVers to result
display dialog "Dieses Dokument (= v. " & docVers & ")
kann nicht mit dieser Version von
QuarkXPress geöffnet werden." buttons "OK" default button 1 with icon 0
end if
on getVers(filePath)
set versionClue to read file filePath for 12
if versionClue contains "MM" then
if versionClue ends with "?" then
return 3
else if versionClue ends with "A" then
return 4
else if versionClue ends with "B" then
return 5
else if versionClue ends with "C" then
return 6
else
return 9
end if
else if versionClue contains "II" then
set testChar to character 11 of versionClue
if testChar = "?" then
return 3
else if testChar = "A" then
return 4
else if testChar = "B" then
return 5
else if testChar = "C" then
return 6
else
return 9
end if
end if
end getVers
---
Ist das Script als Droplet konzipiert, dann sollte der Dialog nicht mehr angezeigt werden. Man kann mit einer Variablen die eventuellen Probleme zählen und am Schluss melden oder in einen Rapport schreiben.
Hans Haesler <hsa@ringier.ch>