Skip to topic | Skip to bottom
Home
Search:

Local
Local.ImcToscanaTecnicaOscailtAgendar1.5 - 01 Aug 2007 - 21:27 - CaSetopic end
You are here: Local > ImcToscana > ImcToscanaTecnica > ImcToscanaTecnicaOscailt > ImcToscanaTecnicaOscailtAgenda

Start of topic | Skip to actions

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&agrave;</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&agrave; 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];
      }

ALERT! 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


Local.ImcToscanaTecnicaOscailtAgenda moved from Local.ImcToscanaOscailtAgenda on 01 Aug 2007 - 21:31 by CaSe - put it back
You are here: Local > ImcToscana > ImcToscanaTecnica > ImcToscanaTecnicaOscailt > ImcToscanaTecnicaOscailtAgenda

to top

Copyright © 1999-2008 by the contributing authors.
All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding this tool? Send feedback (in English, Francais, Deutsch or Dutch).