Potenziamento Agenda
Le regioni selezionabili sono le solite per tutto il sito (Toscana, Italia, Internazionale). Mentre sarebbe utile, per l'agenda, sapere a prima vista la zona precisa dell'evento.
Sarebbe possibile creare un nuovo
modulo di pubblicazione da cui scegliere solo il Tipo Evento, e dove vi sono associate maggiori
Regioni; Eventi e queste regioni non saranno disponibili nel modulo di pubblicazione
di default. Questa strada comporta però del lavoro, e dell'incoerenza poi nei filtri ecc.
Si è preferito
far apparire un ulterionre menù a tendina (insieme a quello per la scelta della data) dove poter selezionare anche una città. Per ora questo menù appare solo se si sceglie come Regione la Toscana.
Nuova funzione getEventRegionSelect
Mettere questa nuova funzione nel file
objects/indyruntime/publishdisplay.
function getEventRegionSelect()
{
global $system_config, $editor_session, $pageType;
if(($this->story->type_id ==$system_config->event_type_id or (is_object($pageType) && $pageType->type_id == $system_config->event_type_id))&&($this->story->region_id==3))
{
$hide = false;
}
else
{
$hide = true;
}
$cittarray = array(
'Massa C.',
'Pisa',
'Livorno',
'Firenze',
'Pistoia',
'Grosseto',
'Siena',
'Arezzo',
'Lucca',
'Prato'
);
asort($cittarray);
$str = '<select name="event_region"';
if($hide) $str .= ' DISABLED style="display:none"';
$str .= ">\n";
$str .= '<option value="">Scegli la città</option>';
foreach ( $cittarray as $k ) {
$str .= '<option';
if ($_POST[event_region]==$k || $this->story->event_region==$k) $str .= " selected";
$str.= ' value="'.$k.'">'.$k.'</option>';
}
$str .= "</select>\n";
return $str;
}
Cambiamenti
Aggiunta alla funzione javascript checkForEventType
Sempre nel file
objects/indyruntime/publishdisplay.
Serve a far apparire il menù a tendina quando il Tipo di storia è un Evento e la Regione è la Toscana (id 3). Viene richiamato con
onchange="JavaScript:checkForEventType()" nelle funzioni
getRegionSelect e
getTypeSelect.
...
if(document.publishform.type_id.value==<?=$system_config->event_type_id?> && document.publishform.region_id.value==3)
{
document.publishform.event_region.disabled=false;
document.publishform.event_region.style.display="";
}
else
{
document.publishform.event_region.disabled=true;
document.publishform.event_region.style.display="none";
}
...
Funzione writeTLRSelects
Sempre nel file
objects/indyruntime/publishdisplay.
Aggiungere
.$this->getEventRegionSelect() alla variabile
$region_payload
Funzione writeItemAsHidden
Sempre nel file
objects/indyruntime/publishdisplay.
Aggiungere la riga
echo "<input type='hidden' name='event_region' value='".htmlspecialchars($this->story->event_region, ENT_QUOTES)."'>\n";
dentro
if($this->story->story_id!=null and $this->story->story_id!=0)
Funzione listValidityProblems
Questa invece sta dentro il file
objects/story.inc.
Bisogna aggiungere questo
controllo
if($this->type_id==$system_config->event_type_id && $this->event_region==NULL && $this->region_id==3) array_push($missing_required_field_list,"In quale città toscana si svolge");
Funzione loadFormValues
Sta ancora dentro il file
objects/story.inc.
Bisogna aggiungere il riferimento alla variabile
$this->event_region.
if(isset($_POST["event_region"]) && strlen(trim($_POST["event_region"]))>0 && $this->type_id==$system_config->event_type_id && $this->region_id==3)
{
$this->event_region = $_POST["event_region"];
}
Funzione displayPreview
Nel file
objects/indyruntime/articledisplay.inc
Modificare questa funzione mettendo un if:
if ($story->event_region == NULL) {
echo "<H1 class='article-title'>".$this->getItemHighlights($story).$story->story_title."</H1>\n";
} else {
echo "<H1 class='article-title'>".$this->getItemHighlights($story)."[".$story->event_region."] ".$story->story_title."</H1>\n";
}
Funzione writeContentSection
Nel file
objects/indyruntime/publishdisplay
Qui serve per non far apparire il titolo già modificato in caso di editing del post. E per impostare, sempre in caso di editing, la viariabile
$this->story->event_region da utilizzare nella funzione = getEventRegionSelect= per mettere il menù a tendina della città in
selected.
if(!$this->isNewStory() && $this->story->type_id==$system_config->event_type_id && $editor_session->isSessionOpen())
{
preg_match("(^\[(.*)\]\ (.*)$)", $this->story->story_title, $arrrr);
$this->story->story_title = $arrrr[2];
$this->story->event_region = $arrrr[1];
}

Va messo prima di:
$tp_payload = "<INPUT maxLength=100 size=50 name='story_title' value='";
$tp_payload .= htmlspecialchars($this->story->story_title, ENT_QUOTES)."'>\n";
$this->writeSectionEntry('title', $tp_payload, true);
Funzione save
Di nuovo dentro
objects/story.inc.
Ci va messo a finale la località in testa al titolo giusto prima di pomparlo nel database.
Per questo si aggiunge una condizione alla funzione save.
if ($this->event_region != NULL) {
$this->story_title = "[".$this->event_region."] ".$this->story_title;
}
Prima della query SQL
INSERT INTO
to top