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\xF2 del lavoro, e dell'incoerenza poi nei filtri ecc.

Si \xE8 preferito far apparire un ulterionre men\xF9 a tendina (insieme a quello per la scelta della data) dove poter selezionare anche una citt\xE0. Per ora questo men\xF9 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\xF9 a tendina quando il Tipo di storia \xE8 un Evento e la Regione \xE8 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\xE0 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\xF9 a tendina della citt\xE0 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\xE0 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
Topic revision: r5 - 01 Aug 2007, CaSe
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback