Integrazione con FrontPage

Transcript

Integrazione con FrontPage
Webaccessibile.org
La risorsa italiana di IWA dedicata all'accessibilita' del Web
http://www.webaccessibile.org
Integrazione con FrontPage
Pubblicato da Roberto Castaldo il giorno 7 settembre 2002
Microsoft FrontPage (versione 2000 o 2002) supporta Visual Basic for Applications (VBA) che
utilizzeremo per integrare la validazione nei menu di sistema così che la semplice attivazione di
una voce di menu possa avviare la validazione del nostro documento web.
Ho creato un file in Visual Basic (Validate.bas) che in pratica effettua la chiamata al validatore in
VBA. Puoi consultare la guida in section 3.2 che descrive come incorporarlo in FrontPage.
Non commenterò il codice dettagliatamente, se non per accennare il principio fondamentale di
funzionamento, per il quale nsgml.exe è richiamato dopo aver salvato in un file temporaneo il
documento attivo in FrontPage, e presenta l’output di nsgml in una finestra di dialogo.
' ' Validate.bas - Integrare James Clark's SP in Microsoft FrontPage
2000/2002 ' '
Option Explicit
'
Specifica il percorso
in cui hai installato NSGML
Const NSGML_
PATH = "C:Program FilesValid
ator"
' Non dimenticare il backslash
' Specifica il perc
orso dell'eseguibile SP NSGML...
Const NSGM
L_PROGRAM_FILE = NSGML_P
ATH & "nsgmls.exe"
' Specifica il percors
o di un file temporaneo...
Const TEMP_INPUT_FILE = NSGML_PATH & "input.tmp" Const TEMP_OUTPUT_
FILE = NSGML_PATH & "output.tmp"
' Specifica i file di inp
ut di SP (nsgml.exe)
Const XHTML1_SOC_FILE = NSGML_PATH & "PubtextXHTML.soc" Const HTML4
_SOC_FILE = NSGML_P
ATH & "PubtextHTML4.soc"' '
'************************************ ' VALIDA_FILE ' ' ' Basato s
ul codice di by Christoph Schneegans
' See
' Tradotto in italiano
da webaccessibile.org
Sub Validate_File()
Dim bFlipToHTMLSource As Boolean
bFlipTo
HTMLSource = False
If ActivePageWindow Is Nothing Then
MsgBo
1/6
Webaccessibile.org
La risorsa italiana di IWA dedicata all'accessibilita' del Web
http://www.webaccessibile.org
x "Apri un file nell'editor di FrontPage.", _
vbOKOnly Or vbCriti
cal
Exit Sub
End If
If Not ActivePageWindow.ViewMode = fp
PageViewNormal Then
bFlipToHTMLSource = True
ActivePageWindo
w.ViewMode = fpPageViewNormal
End If
Dim doc As FPHTMLDocument
Set doc = ActivePageWindow.Document
Dim fs
Set fs = Create
Object("Scripting.FileSystemObject")
Dim ts
Set ts = fs.Create
TextFile(TEMP_INPUT_FILE)
' Scr
ive il doc
umento corrente di F
rpntPage in un file temporaneo
ts.Write doc.DocumentHTML
ts.Close
Dim sSocFile ' As Strin
g
Dim sLin
e ' As String
Dim nLine
' As Integer
' Si assume che s
i intende validare un file XHTML 1
.0
sSocFile = XHTML1_SOC_FILE
' Il codice che segue prova (in prima battuta) a stabilire
' quale
DTD sia stato specificato nel file di input, così
' da poter scegl
iere quale file SOC accoppia
re a nsgml.exe
Set ts = fs.OpenTextFile(TEMP_INPUT_FILE)
nLine = 1
While nL
ine
0 Then
sSocFile = HTML4_SOC_FILE
End If
nLine = nLin
e + 1
Wend
ts.Close
Dim strC
md As String
' Costruisce la riga di comando
strCmd = NSGML_PROGRAM_FILE & " -s" & _
" -c """ & sSo
cFile & """" & _
" -f """ & TEMP_OUTPUT_FILE & """" & _
" """
& TEMP_INPUT_FILE &
""""
'MsgBox strCmd
' Esegue la riga di comando...
' Per maggiori informazioni, consult
a
ExecCmd strCmd
If bFlipToHTMLSource Then
ActivePageWindo
w.ViewMode = fpPag
eViewHtml
End If
Dim es
'Leg
ge il TE
MP_OUTPUT_FILE e
ne copia il contenuto nel Form_
output
2/6
Webaccessibile.org
La risorsa italiana di IWA dedicata all'accessibilita' del Web
http://www.webaccessibile.org
Set es = fs.OpenTextFile(TEMP_OUTPUT_FILE, 1) ' 1=ForReading
If
es.AtEndOfStream Then
Dim sOutput
sOutput = "/documento val
idato con successo"
If sSocFile = XHTML1_SOC_FILE Then
sOu
tput = sOutput & " come XHTML 1.0"
Else
sOutput = sOutput
& " come HTML 4.0"
End If
sOutput = sOutput & ". Nessun erro
re riscontrato."
Form_tidy_output.TextBox_tidy_output.Text = sOut
put
Else
Form_tidy_output.TextBox_tidy_output.Text = es.ReadAl
l
End If
Form_tidy_output.Caption = "Risultato della validazione
"
Form_tidy_output.Show
Exit Sub
ValidationError:
Ms
gBox "La validazione non è stata eseguita correttamente. " & _
"Non è stata apportata nessuna modifica." & Chr(10) & _
"Error # " & CStr(Err.Number) & " " & Err.Description, _
vbOKOnly Or vbCritical End Sub
3.1 Personalizzare il codice VBA
Il codice VBA non può essere usato direttamente, ma necessita di un minimo di
personalizzazione, rispetto a dove hai installato SP. Ci sono cinque stringhe da definire come
costanti. Se hai installato tutto in una singola cartella, e se questa contiene al suo interno la
cartella ‘pubtext’, dovrebbe essere sufficiente la modifica della sola costante NSGML_PATH.
' Specifica il perc
orso in cui hai installato NSGML
Const NSGML_PA
TH = "C:Program FilesValidator"
' Non dimenticare il backslash
' Specifica il perc
orso dell'eseguibile SP NSGML...
Const NSGM
L_PROGRAM_FILE = NSGML_P
ATH & "nsgmls.exe"
' Specifica il percors
o di un file temporaneo...
Const TEMP_INPUT_FILE = NSGML_PATH & "input.tmp"
FILE = NSGML_PATH & "output.tmp"
Const TEMP_OUTPUT_
' Specifica i file di inp
ut di SP (nsgml.exe)
Const XHTML1_SOC_FILE = NSGML_PATH & "PubtextXHTML.soc"
_SOC_FILE = NSGML_PATH & "PubtextHTML4.soc"'
Const HTML4
3/6
Webaccessibile.org
La risorsa italiana di IWA dedicata all'accessibilita' del Web
http://www.webaccessibile.org
Volendo, puoi aggiungere un ulteriore livello di controllo sugli errori dopo un’esecuzione di
ExecCmd. ExecCmd() restituisce il livello di errore riscontrato nel file eseguito. Nel caso di Tidy,
“0? significa “OK”, “1? significa “Ci sono degli avvertimenti”, “2? significa “Ci sono errori”. In
caso di errori, Tidy non può proseguire. Si potrebbe semplicemente aggiungere qualcosa del
tipo:
If ExecCmd(strCmd) > 1 Then
...
Exit Sub
End If
3.2 Personalizzare il menu di FrontPage
Questa sezione mostra come personalizzare il menu di FrontPage inserendo un nuovo menu
che preveda la chiamata della funzione VBA.
Segui i passi:
1. Apri FrontPage.
2. Attiva la voce di menu ‘Strumenti|Macro|Visual Basic Editor‘. Si dovrebbe attivare
così l’editor VBA di FrontPage.
3. Fai clic col tasto destro sulla cartella Moduli e seleziona ’Importa File…‘ ed importa il
file ExecuteCmd.bas. Attiva nuovamente l’importazione di file ed
importaValidate.bas. Guarda la figura di sotto. Dovresti avere almeno due moduli nella
cartella Moduli, uno chiamato ExecuteCmd, l’altro Validate. Se ci dovesse essere un
altro modulo vuoto (Modulo1), lo puoi tranquillamente cancellare.
4/6
Webaccessibile.org
La risorsa italiana di IWA dedicata all'accessibilita' del Web
http://www.webaccessibile.org
4.
5.
6.
7.
8.
» La figura illustra la funzionalità di importazione di VBA.
Importa il file Form_output.frm, che definisce la finestra in cui verrà evidenziato l’output,
una volta invocato il programma esterno.
Entra nel modulo Validate e definisci le 5 costanti, come abbiamo appena visto
nel paragrafo 3.1
Chiudi l’editor VBA col comando ‘File|Chiudi‘ o con la combinazione di tasti Alt + Q.
Ora sei nuovamente in FrontPage
Seleziona ‘Strumenti|Personalizza‘ per aprire la finestra corrispondente
Seleziona la cartella Comandi, come nella figura di sotto
5/6
Webaccessibile.org
La risorsa italiana di IWA dedicata all'accessibilita' del Web
http://www.webaccessibile.org
» Finestra di dialogo Strumenti|Personalizza.
9. Seleziona la voce Nuovo menu nella casella delle categorie. La casella sulla destra
dovrebbe contenere almeno un comando chiamato “Nuovo menu”
10. Trascina il comando “Nuovo menu” sul menu principale di FrontPage, nella posizione
che preferisci, per esempio dopo la voce di menu Format. Questa nuova posizione verrà
evidenziata da una barra verticale.
11. Fai clic col tasto destro sul menu appena inserito; si apre un particolare menu
contestuale.
12. Il menu di contesto contiene una voce chiamata Nuovo nome che ti permette di
specificare un nome per il nuovo menu. Io, per esempio l’ho chiamato “E&xtras”, dove
il carattere & precede la lettera che servirà da scorciatoia – e che quindi verrà
sottolineata.
13. Nella finestra di personalizzaizone, scegli l’elemento Macro dalla casella delle categorie.
Dovresti ora avere disponibili due nuovi comandi sulla destra; seleziona “Elemento di
menu” e trascinalo sul tuo nuovo menu Extras.
14. Usa di nuovo il tasto destro sul nuovo elemento appena inserito per attivare il menu di
contesto, col quale specificherai il nome da dargli, per esempio “&Valida
un Documento” .
15. Sempre a partire dal menu di contesto (che si attiva col tasto destro sull’elemento da
modificare) usa il comando “Assegna macro” e seleziona la macro Validate (quella che
deriva dal modulo VBA di prima).
16. Chiudi la finestra di personalizzazione
17. Tutto dovrebbe essere pronto. Prova a vedere come funziona!
6/6
Powered by TCPDF (www.tcpdf.org)