You are here: Local > ImcCalabria > ImcCalabria > ImcCalabriaTech > ImcCalabriaDocumentazioneTecnica
ImcCalabriaDocumentazioneTecnica
Indy Calabria - Tech Info
Questa pagina raccoglie alcuni appunti tecnici riguardanti l'installazione di Oscailt con lo scopo di:
- ricordarmi quali passi ho fatto esattamente, dato che dovrò ripetere la procedura sul server definitivo;
- fare in modo che chiunque, purché dotato di sufficienti conoscenze tecniche, possa saper mettere le mani sul software in caso di necessità.
Cos'è Oscailt
Oscailt (pronuncia approssimativa: askilt) è un software sviluppato per le esigenze di
Indymedia Ireland.
E' programmato in PHP e si appoggia a un database MySQL. Ulteriori informazioni sull'apposita pagina su
SourceForge.net.
Log dell'installazione di prova di Oscailt sul sito di prova
Requisiti
- Oscailt funziona con Apache, PHP e MySQL
- E' necessario assicurarsi che:
- Sia attivo
mod_rewrite
- Apache sia configurato per eseguire le direttive nel file
.htaccess e in particolare quelle riguardanti mod_rewrite
Download e set-up iniziale
- Scaricato il software da questa pagina su SourceForge.net
- Scompattato l'archivio
.zip e caricato sul server tutto l'albero di files nella directory html
- A questo punto NON ho installato direttamente il software come prevederebbe la procedura standard, ma ho seguito le istruzioni per la localizzazione che hanno scritto gli amici toscani a questa pagina
Localizzazione
- Mail di riferimento
- Una normale installazione prevederebbe di caricare i file sullo spazio web, configurare i parametri del database (in
config/dbconfig.php) e fare partire lo script install.php che si trova nella web root.
- PRIMA di far partire lo script
install.php è necessario installare i files della localizzazione in lingua italiana fatta parzialmente dai techies di Indymedia Toscana. Maggiori informazioni qui. Seguire tutte le istruzioni riportate a questa pagina fino alla sezione "Dopo", esclusa.
- Ho scaricato questo archivio .zip e me lo sono scompattato in locale. Contiene la traduzione di Oscailt, amministrazione esclusa. Contiene un file (
italiano_toscana.xml) e una directory, che vanno caricati via FTP in /xmldata/imports.
- Ho editato a dovere il file
config/dbconfig.php e l'ho caricato in FTP.
- Ho settato i permessi:
chmod 0777 attachments
chmod 0777 cache
chmod 0777 logs
chmod 0777 xmldata/templates
chmod 0777 xmldata/exports
- Ho fatto partire lo script
install.php
- Durante l'installazione ho importato la traduzione in italiano che avevo precedentemente caricato.
- Alla fine dell'installazione, per ovvi motivi di sicurezza:
- ho cancellato il file
install.php.
- ho immediatamente cambiato le mie credenziali di accesso.
- in amministrazione, ho modificato la configurazione generale del sito, e in particolare:
- URL corretto del sito
- ho disattivato temporaneamente qualsiasi roba riguardante il caching, per lavorare più velocemente
- modificato il formato standard della data da
%A %B %d, %Y %H:%M a %A %d %B %Y %H:%M
- cambiata la timezone
Patches e correzioni varie
- Il file
.htaccess sembra dover essere modificato per funzionare correttamente. Su suggerimento di case ho aggiunto questa linea subito dopo la direttiva RewriteEngine on (comunque, sembra che altre direttive di mod_rewrite possano essere necessarie in base alla configurazione del web server definitivo):
RewriteBase /
- Ho inserito delle linee all'inizio di
admin.php per forzare il login in https in amministrazione:
if(!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on") {
ob_start();
?>
<html>
<body>
<p>Questa connessione non è sicura.</p>
<p>Dovresti collegarti all'interfaccia di amministrazione usando il protocollo <strong>https<strong>.</p>
<p>Il server dovrebbe starti redirezionando automaticamente su un canale sicuro. Se questo non dovesse avvenire entro qualche secondo, <a href="https://indycalabria.indivia.net/admin.php">fai click qui</a>.</p>
</body>
</html>
<?
header("Location: https://" . $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"]);
exit();
}
- Ho modificato l'immagine dell'intestazione del sito, personalizzandola per IndyCalabria. Il file in questione è
graphics/banner.gif.
- Scaricati questi due file: uno e due. Si chiamano
editoroptions.xml e universal_config_options.xml e contengono una parziale traduzione dell'interfaccia di amministrazione. Vanno messi in xmldata/, sovrascrivendo i files esistenti.
- Sostituito il file
objects/indyruntime/publishdisplay.inc= con quello fornito qui da chekov.
- Sostituito il file
objects/storyquery.sql= con quello disponibile nel CVS.
- Sostituito il file
objects/indyruntime/feedexportdisplay.inc con quello disponibile nel CVS.
- Nel file
objects/indyruntime/articledisplay.inc, vicino alla linea 320, ho aggiunto alla fine della funzione writeStoryFooter una chiamata a $this->writeDisplayFooter();; questo risolve un problema con il footer degli articoli.
- Per non visualizzare il box in basso a destra per scegliere la lingua dell'articolo, dentro il file
config/systemconfig.php mettere $oscailt_basic_config['show_page_translations_box'] = false;
Personalizzazione grafica
- Il foglio di stile è
attachments/sites/default/style.css. Viene creato a run-time, quindi bisogna scaricarlo, modificarlo e poi ricaricarlo.
Altri lavori di traduzione
- Ho tradotto manualmente nei punti opportuni i file
objects/calendar.inc e objects/indyruntime/eventdisplay.inc.
Post nascosti
- Di default oscailt non permette di visualizzare i post nascosti. Per sistemare questo problema, ho seguito le istruzioni indicate nel workaround di Indy Toscana a questa pagina.
Anti spam per modulo contatti
- Ho implementato un semplice antispam javascript "trasparente" per l'utente. Vantaggi: nessun noioso captcha. Svantaggi: impossibile inviare informazioni attraverso il modulo contatti se il browser non ha javascript abilitato.
- Premetto che non sono sicuro di ricordare esattamente tutto quello che ho fatto, quindi in questa spiegazione potrebbe mancare qualcosa, però riassumendo:
- il file da modificare è
objects/indyruntime/contactdisplay.inc
- nella funzione
processRequest() sostituire questa linea:
$success = $this->sendContactMessage($_REQUEST['name'],$_REQUEST['email'],$subject,$_REQUEST['message']);
con queste linee:
if(isset($_REQUEST['antispam']) && $_REQUEST['antispam'] == "jf7bd8'") {
$success = $this->sendContactMessage($_REQUEST['name'],$_REQUEST['email'],$subject,$_REQUEST['message']);
} else {
$success = false;
}
- nella funzione
writeContactForm() modificare in questo modo l'apertura del tag :
<form action="<?=$OSCAILT_SCRIPT?>" method="post" onSubmit="this.antispam.value = 'jf7' + 'bd8' + '\''; return true;">
- inserire poi dentro il form un campo nascosto (hidden) con questo codice:
<input type="hidden" name="antispam" value="" id="antispam">
- Infine ho modificato il messaggio di errore che appare nel caso in cui l'invio del messaggio fallisca, per avvisare l'utente che se Javascript non è attivo sul suo browser, il modulo di contatto non funziona.
Argomenti e regioni ordinabili a piacere
Oscailt non da la possibilità di scegliere un ordine per le regioni e per gli argomenti e questo può creare confusione nell'utente al momento della pubblicazione.
Per implementare un ordinamento, ho fatto in questo modo:
- Da phpmyadmin ho creato un campo
cardinality alla fine della tabelle regions e topics di tipo SMALLINT. Ho valorizzato questi campi con dei numeri, in modo da riflettere l'ordine desiderato.
- Ho creato un indice di tipo
UNIQUE per ognuno dei due campi, in modo che nessun record possa avere lo stesso valore per il campo cardinality.
- In
objects/topic.inc, nella classe TopicList, metodo load() ho aggiunto ORDER BY cardinality alla fine della query che si trova all'inizio della funzione.
- In
objects/region.inc, nella classe RegionList, metodo load() ho aggiunto ORDER BY cardinality alla fine della query che si trova all'inizio della funzione.
to top