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)