== IGWiki - Uso avanzato == Abbiamo voluto dividere la documentazione inerente l'uso che normalmente si fa di [IGWiki] da questa che riguarda caratteristiche più avanzate. Le feature "avanzate" distinguono IGWiki da molti sistemi Wiki presenti sulla rete, e ne aumentano la flessibilità e il numero di risposte che offre a molteplici problemi di gestione documentale. === Pagine innestate - Come inserire elementi di altre pagine === Una delle caratteristiche particolari di IGWiki è la possibilità di inserire nella pagina che si sta creando, elementi di altre pagine preesistenti. A titolo d'esempio si potrebbe far riferimento ad un collegamento di una pagina, ed inserire allo stesso tempo la data di ultima modifica della pagina stessa attraverso la seguente sintassi: questa [pagina esistente] è stata modificata il [pagina esistente]{lastedit} Come si comprende dall'esempio, per ottenere tale risultato è sufficiente far seguire al link della pagina il nome del campo che si vuole inserire, racchiuso tra parentesi graffe. Si consideri che sono disponibili i seguenti campi: '''text, date, expire, lastedit, lasteditor, approvedby, revision''' Questo meccanismo offre molteplici possibilità, ma senza dubbio la più importante e notevole, è quella che permette di inserire nella propria pagina "il contenuto" di un'altra pagina. Immaginate una pagina che contenga una tabella, dove all'interno di ogni cella si riporta l'elemento {text} di altre pagine. In questo modo potrete impaginare contenuti diversi da pagine diverse distribuendo a più utenti l'onere di editarle. Immaginate per esempio una pagina così composta: {| | [articolo1]{text} || [articolo2]{text} |- | [articolo3]{text} || [articolo4]{text} |} Con questo esempio riusciremmo a visualizzare il contenuto di 4 articoli in una sola pagina, impaginato su 2 colonne e 2 righe! potremmo inoltre delegare l'editing di ognuno dei 4 articoli a 4 diversi utenti del sistema. === Il sistema dei Template === In IGWiki tra le altre cose è possibile per una singola pagina, definire quale è il suo 'involucro', quali cioè gli elementi da visualizzare insieme al contenuto della pagina richiesta. La particolarità di questa feature sta nel fatto che gli 'involucri' possono essere ulteriori pagine scritte in linguaggio wiki o pagine scritte in HTML. Le pagine wiki che fungono da template si differenziano dalle pagine normali per il fatto che hanno al loro interno il tag %%PAGE%% vale a dire il tag che indica in fase di parsing quale posizione deve assumere la pagina da visualizzare all'interno del template. In alternativa come si diceva si possono utilizzare template scritti in HTML e salvati o all'interno del sistema di IGWiki (e quindi nel suo database) oppure sul filesystem del server all'interno della directory '/cgi-bin/data/igwiki/templates'. Chiaramente anche all'interno del template in HTML sarà presente il tag %%PAGE%% che posizionerà il contenuto della pagina che vogliamo visualizzare. La possibilità di salvare i template anche sul filsystem permette a chi è abituato ad editare pagine HTML attraverso strumenti tipo dreamweaver o altri di continuare a farlo. L'uso dei template permette di definire dei modelli di pagine 'campione', che offrono agli utenti un ottimo sistema di fattorizzazione. Immaginate ad esempio un template che definisce l'involucro di tutte le pagine che fanno parte della categoria 'HOWTO' o delle 'FAQ'. Immaginate poi che un giorno occorra riscrivere tutti gli howto e si vuole sospenderne la visualizzazione. Basterà cambiare il contenuto del template sostituendo il tag %%PAGE%% con qualcosa tipo 'Stiamo lavorando per voi...' e il gioco è fatto. === Manipolare template in HTML === IGWiki puo' utilizzare come template intere pagine scritte in HTML (cioe' vale a dire anche con intestazione <html>). Infatti quando IGWiki in fase di visualizzazione intercetta una pagina HTML disabilita ogni sistema di rendering della pagina (fatta eccezione per poche cose) e sostituisce il tag %PAGE% con il contenuto della pagina da visualizzare. Le pagine o meglio i template in HTML possono essere modificati anche sfruttanfo l'editor FCKEditor un editor Html in javascript molto potente e versatile configurabile all'interno della suite. Tra le varie feature che si possono utilizzare all'interno di un template HTML è possibile inserire elementi di altre pagine Wiki attraverso tag del tipo [nestedpage]{text}. Si veda questa pagina d'esempio [perl.it]. ==== I TAG Speciali ==== Grazie ai tag "speciali" è possibile in fase di creazione dei template, inserire features o strumenti presenti all'interno di IGWiki definendone la posizione. ; %%WIKILOGO%% : Inserisce all'interno della pagina il logo aziendale ; %%SITEMAP%% : Inserisce il contenuto della pagina [sitemap] ; %%FINDER%% : Inserisce il piccolo form (motore di ricerca) per le ricerche all'interno del sito ; %%LOGIN%% : Inserisce il form per effettuare il login nel sistema ; %%RANDOMCONTENT()%% : Permette di inserire il contenuto di una pagina presa a caso tra una categoria di pagine selezionata. ; %%TOC%% : Elabora un indice degli argomenti ricavato dalla pagina che si vuole visualizzare ; %%FLOATTOC%% : Elabora un indice degli argomenti ricavato dalla pagina che si vuole visualizzare e lo mostra in un floating box ; %%FLOATBIOGRAFY%% : Crea un piccolo riquadro a destra della pagina con le informazioni e la foto dell'autore. Per le informazioni utilizza la 'signature' delle preferenze di IGWebMail e per la foto utilizza quella inserita nel profilo utente di IGSuite. ; %%RELATEDDOCS%% : Mostra un task con l'elenco di tutte le pagine che contengono un collegamento alla pagina attuale ; %%LASTDOCS%% : Mostra un task con l'elenco delle ultime pagine modificate ; %%MINICALENDAR%% : Mostra un minicalendario contenente gli 'eventi' definiti dagli utenti ; %%REPOSITORY%% : Genera un Repository di file collegato alla pagina. Per permettere di allegare file alla pagina. ; %%PAGETITLE%% : Inserisce il titolo della pagina visualizzata ; %%FORMHEAD%% %%FORMINPUT%% %%FORMFOOT%% : Si rimanda a [IGWikiForm|creare formmail con IGWiki] === Pagine codificate - Come aumentare la sicurezza dei contenuti === Una delle caratteristiche esclusive di IGWiki è la possibilità da parte degli utenti che hanno permessi di scrittura sulle pagine, di poter codificare con protocollo DES il testo delle pagine all'interno del database. Infatti selezionando la voce 'Codifica contenuto nel database' all'interno delle proprietà di una determinata pagina, si codifica il record all'interno del database, lasciando inalterato e trasparente l'uso della pagina agli utenti che ne hanno i privilegi. All'utente è anche possibile tornare sui propri passi e decodificare una pagina in modo che sul database torni ad essere scritta in plain text. Ovviamente tale features ha ragione di esistere nei casi in cui l'accesso in lettura della pagina, è ristretto ad un certo numero di utenti piuttosto che altri. === Esportare pagine in altri formati === Nella versione attuale di IGWiki è possibile esportare qualsiasi pagina in 4 formati: * '''Stampabile in HTML''' - semplicemente IGWiki libera la pagina dell'involucro (template) e modifica qualche parametro del CSS. Tale esportazione si ottiene cliccando sull'icona della stampante presente su ogni pagina. * '''Plain Text''' - Questa esportazione è degna di nota in quanto IGWiki riformatta tutta la pagina in formato testo a 80 colonne rispettando: pagine innestate, inserimento di elementi da pagine esterne; e creando in automatico un indice dei contenuti della pagina basandosi sulle varie intestazioni in essa contenute. Tale esportazione risulta molto utile quando si vuole creare file di documentazione portabili. * '''PDF''' - Grazie all'icona presente sulla barra di ogni pagina è possibile generare un documento Pdf della pagina visualizzata. E' in progetto la possibilità di esportare più contenuti in un unico documento PDF. * '''RAW''' - Questa esportazione restituisce il contenuto della pagina senza passarla al parser. Si ottiene cioè il testo con all'interno i tag di formattazione. Utile quando si vuole esportare una pagina da un sistema wiki ad un altro.