Microsoft FrontPage, versione 2000 o 2002, hai il supporto di Visual Basic® for Applications che utilizzeremo per integrare HTML Tidy nel menu di sistema. Tramite l’attivazione di una voce di menu, quindi, verrà attivato il Tidy HTML che pulirà il codice del documento.

Per prima cosa scarica il file compresso contenente i documenti sorgente e decomprimilo in una cartella chiamandola ad esempio: C:ProgrammiValidatore.

Ho creato due documenti in Visual Basic che si occupano di collegare HTML Tidy tramite VBA. Il codice si basa sul codice originalmente scritto da Christoph Schneegans. Per maggiori informazioni visita http://www.schneegans.de/frontpage-vba/tidy.html.

  • ExecuteCmd.bas, che richiama la funzione CreateProcess nelle API di Windows e viene utilizzato per eseguire una riga di comando (nel nostro caso l’esecuzione di HTML Tidy).
  • Tidy.bas, che richiama HTML Tidy con i parametri appropriati e controlla che il documento di FrontPage attuale è aggiornato, ossia che sia stato salvato.
  • Form_output.frm, che contiene la definizione di un semplice modulo di dialogo utilizzato per visualizzare eventuali informazioni (di errore) durante l’esecuzione di HTML Tidy. Il codice di questo modulo è stato concesso in utilizzo da Thomas Price, Thomas.Price@computershare.com.au.

Per incorporare questi file all’interno di VBA di FrontPage VBA è necessario seguire le inicazioni riportate nella sezione 3.2 di seguito in questa pagina.

3.1 Personalizzazione del codice VBA

Il codice VBA non può essere utilizzato direttamente ma deve essere personalizzato con i riferimenti alla localizzazione di HTML Tidy. Sono definite quattro costanti:

TIDY_PROGRAM_FILE Specifica il percorso completo e il nome del file eseguibile di HTML Tidy. Nel nostro esempio C:ProgrammiValidatoreTidy.exe.
TIDY_CONFIG_FILE Specifica il percorso completo e il nome del file di configurazione di HTML Tidy.
TIDY_ERROR Specifica il percorso completo e il nome del file di log degli errori di HTML Tidy.
TIDY_TEMP_FILE Specifica il percorso completo e il nome del file temporaneo.
 
Attribute VB_Name = "Tidy"
'
' Tidy.bas - Integrazione di Tidy in FrontPage 2000/2002
'
' Basato sul codice di by Christoph Schneegans <mailto:Christoph@Schneegans.de>
' See <http://www.schneegans.de/frontpage-vba/tidy.html>
' Tradotto in italiano da webaccessibile.spadamar.com
'

Option Explicit

‘ Specifica il percorso del file eseguibile di Tidy…Const TIDY_PROGRAM_FILE = “C:ProgrammiValidatoreTidy.exe”

‘ Specifica il percorso del file di configurazioen di Tidy…Const TIDY_CONFIG_FILE = “C:ProgrammiValidatoretidy.cfg”

‘ Specifica il percorso del file di log di Tidy….Const TIDY_ERROR_FILE = “C:ProgrammiValidatoretidy_errors.txt”

‘ Specifica il percorso del file temporaneo di Tidy…Const TIDY_TEMP_FILE = “C:ProgrammiValidatoretidy.tmp”

‘************************************
‘ TIDY_FILE

Sub Tidy_File()

Dim bFlipToHTMLSource As Boolean
bFlipToHTMLSource = False

If ActivePageWindow Is Nothing Then
MsgBox “Devi aprire un file con Frontpage per continuare.”, vbOKOnly Or vbCritical
Exit Sub
End If

If Not ActivePageWindow.ViewMode = fpPageViewNormal Then
bFlipToHTMLSource = True
ActivePageWindow.ViewMode = fpPageViewNormal
End If

Dim doc As FPHTMLDocument
Set doc = ActivePageWindow.Document

Dim fs
Set fs = CreateObject(“Scripting.FileSystemObject”)
Dim ts
Set ts = fs.CreateTextFile(TIDY_TEMP_FILE)

‘ Scrive il documento corrente in Frontpage in un file temporaneo…ts.Write doc.DocumentHTML
ts.Close

Dim strCmd As String
strCmd = Chr(34) & TIDY_PROGRAM_FILE & Chr(34) & _
         ” -f ” & Chr(34) & TIDY_ERROR_FILE & Chr(34) & _
         ” -config ” & Chr(34) & TIDY_CONFIG_FILE & Chr(34) & _
         ” ” & Chr(34) & TIDY_TEMP_FILE & Chr(34)

‘ Esecuzione di riga di comandoIf ExecCmd(strCmd) > 1 Then
Err.Raise vbObjectError + 513 ‘ Errori definiti da configurazione utente
Exit Sub
End If

‘ Apri il file pulito (il file temporaneo)…
Set ts = fs.OpenTextFile(TIDY_TEMP_FILE, 1) ‘ 1=Lettura

‘ Carica il documento nella finestra attiva di Frontpage
On Error GoTo TidyError
doc.DocumentHTML = ts.ReadAll
On Error GoTo 0

If bFlipToHTMLSource Then
ActivePageWindow.ViewMode = fpPageViewHtml
End If

Dim es
‘ Leggi TIDY_ERROR_FILE
Set es = fs.OpenTextFile(TIDY_ERROR_FILE, 1) ‘ 1=Lettura

‘ Copia il contenuto nel modulo…
Form_output.TextBox_output.Text = es.ReadAll
Form_output.Caption = TIDY_ERROR_FILE
Form_output.Show

Exit Sub

TidyError:
MsgBox “Tidy non può essere eseguito in modo corretto. Non sono state apportate modifiche al documento.” & Chr(10) & _ “Error # ” & CStr(Err.Number) & ” ” & Err.Description, vbOKOnly Or vbCritical

End Sub

E’ possibile inserire ulteriori controlli di errore dopo l’esecuzione del comando ExecCmd. ExecCmd() restituisce il livello di essore dal file eseguito. Per Tidy, “0” significa “OK”, “1” significa “Ci sono dei messaggi di avviso”, “2” significa “Ci sono degli errori”. In presenza di errori, Tidy non viene eseguito.

3.2 Personalizzazione del menu di Frontpage

Questa sezione illustra come personalizzare un menu in FrontPage in modo da richiamare la funzione VBA contenente la procedura di attivazione di Tidy.

E’ necessario seguire i seguenti passi:

  1. Aprire FrontPage.
  2. Selezionare la voce di menu ‘Strumenti|Macro|Visual Basic Editor‘. Questo aprirà il VBA Editor di FrontPage.
  3. Selezionare con un click del tasto destro del mouse la cartella Moduli e selezionando ‘Importa File…‘ ed importare il file ExecuteCmd.bas. Utilizzando la stessa procedura, è necessario importare il file Tidy.bas. Come nell’immagine sotto riportata, ci dovrebbero essere due moduli nella cartella “Moduli” uno di nome ExecuteCmd e uno di nome Tidy.
  4. Se è presente un modulo vuoto (Modulo1) è possibile tranquillamente eliminarlo in quanto non necessario.
  5. Importare il form Form_output.frm che definisce la finestra di dialogo utilizzata per comunicare eventuali errori all’utente.
  6. Entrare nel modulo Tidy e definire le quattro costanti descritte in precedenza nella sezione 3.1.

    Immagine che illustra l'importazione dei files nel VBA.
    » Immagine che illustra l’importazione dei files nel VBA.

  7. Chiudere l’editor VBA selezionando ‘File|Chiudi‘ o tramite i tasti di scelta rapida Alt+Q. A questo punto si ritorna a FrontPage.
  8. Selezionare ‘Strumenti|Personalizza…” e tale opzione avvierà la finestra di dialogo di personalizzazione.
  9. Selezionare la tabella Comandi nella finestra di dialogo di personalizzazione (vedi immagine qui sotto).

    La finestra di dialogo Strumenti|Personalizza.
    » La finestra di dialogo Strumenti|Personalizza.

  10. Selezionare “Nuovo Menu” nella lista delle categorie a sinistra. Nella parte destra della finestra dovrebbe essere disponibile solamente un comando “Nuovo Menu”.
  11. Selezionare e trascinare il comando “Nuovo Menu” nella posizione preferita nella barra dei menu di FrontPage, ad esempio dopo il menu “Formato”. Durante il posizionamento del nuovo menu sarà evidenziata da una linea verticale: lasciando il tasto sinistro del mouse il nuovo menu verrà reso visibile
  12. Selezionare con il Tasto destro il nuovo menu per visualizzare una serie di voci di personalizzazione presenti nel menu contestuale.
  13. Il menu contestuale contiene una voce Nome: dove, selezionandola, è possibile specificare il nome del menu. Ho utilizzato il nome “E&xtras”, dove “&” indica che la lettera seguente è una selezione rapida tramite tastiera ed acquisisce visibilità con la sottolineatura.
  14. Nella finestra di dialogo di personalizzazione selezionare la voce Macro dall’elenco delle categorie della parte sinistra del modulo e verranno resi disponibili due nuovi voci. Selezionare la funzione “Voce di menu personalizzata” e trascinarla sul nuovo menu “Extras” appena creato.
  15. Come al punto 12, selezionare con il tasto destro il menu contestuale assegnandogli un nome, ad esempio “/documento &Tidy”.
  16. Sempre utilizzando il menu contestuale, utilizzare la voce “Assegna Macro” specificando quale macro deve essere eseguita quando l’utente seleziona la voce di menu. Selezionare quindi la voce di macro “Tidy_File” o “Tidy_Web” (Presente nella sub-procedura VBA Tidy, a seconda se si lavora con file locali oppure online).
  17. Confermare l’operazione e chiudere la finestra di personalizzazione
  18. Ora è tutto configurato a dovere: non resta che testarlo! E’ importante ricordare che Tidy funziona esclusivamente se il documento è stato salvato.